From 12aab0355432460ee5dd17a2893950ad1d2c0189 Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 07:13:47 -0500 Subject: [PATCH 01/21] wip --- README.md | 21 +++++++++++++++++++-- gitops.config.ts | 6 +++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ac99c4b4..d0cee86c 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,25 @@ npm i -D @ryanatkn/fuz_gitops in either `process.env`, a project-local `.env`, or the parent directory at `../.env` (currently optional to read public repos, but it's recommended regardless, and you'll need to select options to support private repos) -- re-export the `gro gitops_sync` task by creating `$lib/gitops_sync.task.ts` with - the contents `export * from '@ryanatkn/fuz_gitops/gitops_sync.task.js';` +- re-export the gitops tasks by creating files in `$lib/`: + + ```ts + // gitops_sync.task.ts + export * from '@ryanatkn/fuz_gitops/gitops_sync.task.js'; + + // gitops_analyze.task.ts + export * from '@ryanatkn/fuz_gitops/gitops_analyze.task.js'; + + // gitops_plan.task.ts + export * from '@ryanatkn/fuz_gitops/gitops_plan.task.js'; + + // gitops_publish.task.ts + export * from '@ryanatkn/fuz_gitops/gitops_publish.task.js'; + + // gitops_validate.task.ts + export * from '@ryanatkn/fuz_gitops/gitops_validate.task.js'; + ``` + - run `gro gitops_sync` to sync repos and update the local data ## Architecture diff --git a/gitops.config.ts b/gitops.config.ts index 813b92fb..efe95879 100644 --- a/gitops.config.ts +++ b/gitops.config.ts @@ -3,7 +3,7 @@ import type {CreateGitopsConfig} from './src/lib/gitops_config.js'; const config: CreateGitopsConfig = () => { return { repos: [ - // 'https://github.com/ryanatkn/zzz', + 'https://github.com/ryanatkn/zzz', 'https://github.com/ryanatkn/moss', 'https://github.com/ryanatkn/fuz', 'https://github.com/ryanatkn/gro', @@ -14,10 +14,10 @@ const config: CreateGitopsConfig = () => { 'https://github.com/ryanatkn/fuz_code', { repo_url: 'https://github.com/ryanatkn/fuz_gitops', - branch: 'migration-scripts', + branch: 'main', }, 'https://github.com/ryanatkn/webdevladder.net', - // 'https://github.com/ryanatkn/ryanatkn.com', + 'https://github.com/ryanatkn/ryanatkn.com', ], }; }; From 9c2ef72e5a90a89ebdeab056b56083f39d29c136 Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 07:25:03 -0500 Subject: [PATCH 02/21] wip --- package-lock.json | 8 ++++---- package.json | 2 +- src/routes/package.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02f30200..6bf47411 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@changesets/changelog-git": "^0.2.1", "@ryanatkn/belt": "^0.39.0", "@ryanatkn/eslint-config": "^0.9.0", - "@ryanatkn/fuz": "^0.162.0", + "@ryanatkn/fuz": "^0.162.1", "@ryanatkn/fuz_code": "^0.36.0", "@ryanatkn/gro": "^0.177.1", "@ryanatkn/moss": "^0.39.0", @@ -1470,9 +1470,9 @@ } }, "node_modules/@ryanatkn/fuz": { - "version": "0.162.0", - "resolved": "https://registry.npmjs.org/@ryanatkn/fuz/-/fuz-0.162.0.tgz", - "integrity": "sha512-BlN9Qz/e2tMnF5iA6kG6oSA3BRIZwcCpjYUWJc7OAox1vNm52ZXD1xObfYkGcF+opvZicmQggSVfTmVak6fECQ==", + "version": "0.162.1", + "resolved": "https://registry.npmjs.org/@ryanatkn/fuz/-/fuz-0.162.1.tgz", + "integrity": "sha512-d9E3LMFNCAQ13EMdXM3sQttbkbQ8WrteSdNC+R/eohztUv67tDwWH3GZWNDv0lX733yTFezKVfek+iKgLDYrJA==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 35b78628..c6d3509a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@changesets/changelog-git": "^0.2.1", "@ryanatkn/belt": "^0.39.0", "@ryanatkn/eslint-config": "^0.9.0", - "@ryanatkn/fuz": "^0.162.0", + "@ryanatkn/fuz": "^0.162.1", "@ryanatkn/fuz_code": "^0.36.0", "@ryanatkn/gro": "^0.177.1", "@ryanatkn/moss": "^0.39.0", diff --git a/src/routes/package.ts b/src/routes/package.ts index b213d4cc..b17979d0 100644 --- a/src/routes/package.ts +++ b/src/routes/package.ts @@ -48,7 +48,7 @@ export const package_json: PackageJson = { '@changesets/changelog-git': '^0.2.1', '@ryanatkn/belt': '^0.39.0', '@ryanatkn/eslint-config': '^0.9.0', - '@ryanatkn/fuz': '^0.162.0', + '@ryanatkn/fuz': '^0.162.1', '@ryanatkn/fuz_code': '^0.36.0', '@ryanatkn/gro': '^0.177.1', '@ryanatkn/moss': '^0.39.0', From 853b4be02d6c5b67a7093c607721a43c0fcdc7ba Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 07:58:00 -0500 Subject: [PATCH 03/21] wip --- src/lib/local_repo.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/local_repo.ts b/src/lib/local_repo.ts index 36d978d1..0f6cd3f8 100644 --- a/src/lib/local_repo.ts +++ b/src/lib/local_repo.ts @@ -120,7 +120,9 @@ export const load_local_repo = async ({ } if (!clean_after_result.value) { - throw new TaskError(`Workspace is unclean after pulling branch "${repo_config.branch}"`); + throw new TaskError( + `Workspace ${repo_dir} is unclean after pulling branch "${repo_config.branch}"`, + ); } // Record commit hash after pull From ed2ac2fb85cbc996671ade1d68d32c7aa8ea5b80 Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 07:59:48 -0500 Subject: [PATCH 04/21] wip --- src/lib/local_repo.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lib/local_repo.ts b/src/lib/local_repo.ts index 0f6cd3f8..c78775f2 100644 --- a/src/lib/local_repo.ts +++ b/src/lib/local_repo.ts @@ -71,21 +71,21 @@ export const load_local_repo = async ({ // Record commit hash before any changes const commit_before_result = await git_ops.current_commit_hash({cwd: repo_dir}); if (!commit_before_result.ok) { - throw new TaskError(`Failed to get commit hash: ${commit_before_result.message}`); + throw new TaskError(`Failed to get commit hash in ${repo_dir}: ${commit_before_result.message}`); } const commit_before = commit_before_result.value; // Switch to target branch if needed const branch_result = await git_ops.current_branch_name({cwd: repo_dir}); if (!branch_result.ok) { - throw new TaskError(`Failed to get current branch: ${branch_result.message}`); + throw new TaskError(`Failed to get current branch in ${repo_dir}: ${branch_result.message}`); } const switched_branches = branch_result.value !== repo_config.branch; if (switched_branches) { const clean_result = await git_ops.check_clean_workspace({cwd: repo_dir}); if (!clean_result.ok) { - throw new TaskError(`Failed to check workspace: ${clean_result.message}`); + throw new TaskError(`Failed to check workspace in ${repo_dir}: ${clean_result.message}`); } if (!clean_result.value) { @@ -96,27 +96,29 @@ export const load_local_repo = async ({ const checkout_result = await git_ops.checkout({branch: repo_config.branch, cwd: repo_dir}); if (!checkout_result.ok) { - throw new TaskError(`Failed to checkout branch: ${checkout_result.message}`); + throw new TaskError( + `Failed to checkout branch "${repo_config.branch}" in ${repo_dir}: ${checkout_result.message}`, + ); } } // Only pull if remote exists (skip for local-only repos, test fixtures) const origin_result = await git_ops.has_remote({remote: 'origin', cwd: repo_dir}); if (!origin_result.ok) { - throw new TaskError(`Failed to check for remote: ${origin_result.message}`); + throw new TaskError(`Failed to check for remote in ${repo_dir}: ${origin_result.message}`); } if (origin_result.value) { const pull_result = await git_ops.pull({cwd: repo_dir}); if (!pull_result.ok) { - throw new TaskError(`Failed to pull: ${pull_result.message}`); + throw new TaskError(`Failed to pull in ${repo_dir}: ${pull_result.message}`); } } // Check clean workspace after pull to ensure we're in a good state const clean_after_result = await git_ops.check_clean_workspace({cwd: repo_dir}); if (!clean_after_result.ok) { - throw new TaskError(`Failed to check workspace: ${clean_after_result.message}`); + throw new TaskError(`Failed to check workspace in ${repo_dir}: ${clean_after_result.message}`); } if (!clean_after_result.value) { @@ -128,7 +130,7 @@ export const load_local_repo = async ({ // Record commit hash after pull const commit_after_result = await git_ops.current_commit_hash({cwd: repo_dir}); if (!commit_after_result.ok) { - throw new TaskError(`Failed to get commit hash: ${commit_after_result.message}`); + throw new TaskError(`Failed to get commit hash in ${repo_dir}: ${commit_after_result.message}`); } const commit_after = commit_after_result.value; @@ -145,7 +147,9 @@ export const load_local_repo = async ({ }); if (!changed_result.ok) { - throw new TaskError(`Failed to check if package.json changed: ${changed_result.message}`); + throw new TaskError( + `Failed to check if package.json changed in ${repo_dir}: ${changed_result.message}`, + ); } if (changed_result.value) { From e1b6957b15ee697c512c9903baa6139a5d6845be Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 08:02:26 -0500 Subject: [PATCH 05/21] wip --- src/fixtures/repos/basic_publishing/repo_a | 1 - src/fixtures/repos/basic_publishing/repo_b | 1 - src/fixtures/repos/basic_publishing/repo_c | 1 - src/fixtures/repos/basic_publishing/repo_d | 1 - src/fixtures/repos/basic_publishing/repo_e | 1 - src/fixtures/repos/circular_dev_deps/consumer | 1 - src/fixtures/repos/circular_dev_deps/tool_a | 1 - src/fixtures/repos/circular_dev_deps/tool_b | 1 - src/fixtures/repos/circular_prod_deps_error/pkg_a | 1 - src/fixtures/repos/circular_prod_deps_error/pkg_b | 1 - src/fixtures/repos/deep_cascade/branch | 1 - src/fixtures/repos/deep_cascade/leaf | 1 - src/fixtures/repos/deep_cascade/root | 1 - src/fixtures/repos/deep_cascade/trunk | 1 - src/fixtures/repos/isolated_packages/util_a | 1 - src/fixtures/repos/isolated_packages/util_b | 1 - src/fixtures/repos/isolated_packages/util_c | 1 - src/fixtures/repos/isolated_packages/util_d | 1 - src/fixtures/repos/major_bumps/app_using_stable | 1 - src/fixtures/repos/major_bumps/app_using_unstable | 1 - src/fixtures/repos/major_bumps/complex_app | 1 - src/fixtures/repos/major_bumps/stable | 1 - src/fixtures/repos/major_bumps/unstable | 1 - src/fixtures/repos/multiple_dep_types/adapter | 1 - src/fixtures/repos/multiple_dep_types/core | 1 - src/fixtures/repos/multiple_dep_types/plugin | 1 - src/fixtures/repos/peer_deps_only/adapter | 1 - src/fixtures/repos/peer_deps_only/core | 1 - src/fixtures/repos/peer_deps_only/plugin_a | 1 - src/fixtures/repos/peer_deps_only/plugin_b | 1 - src/fixtures/repos/peer_deps_only/utils | 1 - src/fixtures/repos/private_packages/consumer | 1 - src/fixtures/repos/private_packages/private_tool | 1 - src/fixtures/repos/private_packages/public_lib | 1 - src/fixtures/repos/three_way_dev_cycle/app | 1 - src/fixtures/repos/three_way_dev_cycle/tool_x | 1 - src/fixtures/repos/three_way_dev_cycle/tool_y | 1 - src/fixtures/repos/three_way_dev_cycle/tool_z | 1 - 38 files changed, 38 deletions(-) delete mode 160000 src/fixtures/repos/basic_publishing/repo_a delete mode 160000 src/fixtures/repos/basic_publishing/repo_b delete mode 160000 src/fixtures/repos/basic_publishing/repo_c delete mode 160000 src/fixtures/repos/basic_publishing/repo_d delete mode 160000 src/fixtures/repos/basic_publishing/repo_e delete mode 160000 src/fixtures/repos/circular_dev_deps/consumer delete mode 160000 src/fixtures/repos/circular_dev_deps/tool_a delete mode 160000 src/fixtures/repos/circular_dev_deps/tool_b delete mode 160000 src/fixtures/repos/circular_prod_deps_error/pkg_a delete mode 160000 src/fixtures/repos/circular_prod_deps_error/pkg_b delete mode 160000 src/fixtures/repos/deep_cascade/branch delete mode 160000 src/fixtures/repos/deep_cascade/leaf delete mode 160000 src/fixtures/repos/deep_cascade/root delete mode 160000 src/fixtures/repos/deep_cascade/trunk delete mode 160000 src/fixtures/repos/isolated_packages/util_a delete mode 160000 src/fixtures/repos/isolated_packages/util_b delete mode 160000 src/fixtures/repos/isolated_packages/util_c delete mode 160000 src/fixtures/repos/isolated_packages/util_d delete mode 160000 src/fixtures/repos/major_bumps/app_using_stable delete mode 160000 src/fixtures/repos/major_bumps/app_using_unstable delete mode 160000 src/fixtures/repos/major_bumps/complex_app delete mode 160000 src/fixtures/repos/major_bumps/stable delete mode 160000 src/fixtures/repos/major_bumps/unstable delete mode 160000 src/fixtures/repos/multiple_dep_types/adapter delete mode 160000 src/fixtures/repos/multiple_dep_types/core delete mode 160000 src/fixtures/repos/multiple_dep_types/plugin delete mode 160000 src/fixtures/repos/peer_deps_only/adapter delete mode 160000 src/fixtures/repos/peer_deps_only/core delete mode 160000 src/fixtures/repos/peer_deps_only/plugin_a delete mode 160000 src/fixtures/repos/peer_deps_only/plugin_b delete mode 160000 src/fixtures/repos/peer_deps_only/utils delete mode 160000 src/fixtures/repos/private_packages/consumer delete mode 160000 src/fixtures/repos/private_packages/private_tool delete mode 160000 src/fixtures/repos/private_packages/public_lib delete mode 160000 src/fixtures/repos/three_way_dev_cycle/app delete mode 160000 src/fixtures/repos/three_way_dev_cycle/tool_x delete mode 160000 src/fixtures/repos/three_way_dev_cycle/tool_y delete mode 160000 src/fixtures/repos/three_way_dev_cycle/tool_z diff --git a/src/fixtures/repos/basic_publishing/repo_a b/src/fixtures/repos/basic_publishing/repo_a deleted file mode 160000 index 8f164320..00000000 --- a/src/fixtures/repos/basic_publishing/repo_a +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f1643204ce13d3a1d48b1a9e3662c856d710fe6 diff --git a/src/fixtures/repos/basic_publishing/repo_b b/src/fixtures/repos/basic_publishing/repo_b deleted file mode 160000 index 9d73044d..00000000 --- a/src/fixtures/repos/basic_publishing/repo_b +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9d73044d8b3f24f313d0199641a66a4f2aae1050 diff --git a/src/fixtures/repos/basic_publishing/repo_c b/src/fixtures/repos/basic_publishing/repo_c deleted file mode 160000 index c9c7475d..00000000 --- a/src/fixtures/repos/basic_publishing/repo_c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9c7475d56644735791285261ba1cb71d024322e diff --git a/src/fixtures/repos/basic_publishing/repo_d b/src/fixtures/repos/basic_publishing/repo_d deleted file mode 160000 index e3b9e051..00000000 --- a/src/fixtures/repos/basic_publishing/repo_d +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e3b9e0512147226ac5a09b50280b8883cbc001ee diff --git a/src/fixtures/repos/basic_publishing/repo_e b/src/fixtures/repos/basic_publishing/repo_e deleted file mode 160000 index 41bced63..00000000 --- a/src/fixtures/repos/basic_publishing/repo_e +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 41bced6382abeaa2f2b233dc6cb2ccc080c6c724 diff --git a/src/fixtures/repos/circular_dev_deps/consumer b/src/fixtures/repos/circular_dev_deps/consumer deleted file mode 160000 index fa482d78..00000000 --- a/src/fixtures/repos/circular_dev_deps/consumer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fa482d78948938913e16b1fea12b482800f6564f diff --git a/src/fixtures/repos/circular_dev_deps/tool_a b/src/fixtures/repos/circular_dev_deps/tool_a deleted file mode 160000 index 8dff8a26..00000000 --- a/src/fixtures/repos/circular_dev_deps/tool_a +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8dff8a2635423426e7c0fb492538a7cb5b1be288 diff --git a/src/fixtures/repos/circular_dev_deps/tool_b b/src/fixtures/repos/circular_dev_deps/tool_b deleted file mode 160000 index 3bafcb88..00000000 --- a/src/fixtures/repos/circular_dev_deps/tool_b +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3bafcb881f0dabbd58b5d5b79beeed8c47117d41 diff --git a/src/fixtures/repos/circular_prod_deps_error/pkg_a b/src/fixtures/repos/circular_prod_deps_error/pkg_a deleted file mode 160000 index 62197880..00000000 --- a/src/fixtures/repos/circular_prod_deps_error/pkg_a +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 62197880d5c273c2fbb3ddeef8fcc206f0069e24 diff --git a/src/fixtures/repos/circular_prod_deps_error/pkg_b b/src/fixtures/repos/circular_prod_deps_error/pkg_b deleted file mode 160000 index 6f65a80d..00000000 --- a/src/fixtures/repos/circular_prod_deps_error/pkg_b +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6f65a80d9d10dccd37b6aa6ef049ddcb0d05406b diff --git a/src/fixtures/repos/deep_cascade/branch b/src/fixtures/repos/deep_cascade/branch deleted file mode 160000 index 6d94c2e2..00000000 --- a/src/fixtures/repos/deep_cascade/branch +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6d94c2e2d967e6cf3b7ea0c3bafbd7fb7975b499 diff --git a/src/fixtures/repos/deep_cascade/leaf b/src/fixtures/repos/deep_cascade/leaf deleted file mode 160000 index 84fb63c6..00000000 --- a/src/fixtures/repos/deep_cascade/leaf +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 84fb63c663bc205a95afce8b5481bc3c058a0f86 diff --git a/src/fixtures/repos/deep_cascade/root b/src/fixtures/repos/deep_cascade/root deleted file mode 160000 index d9f45304..00000000 --- a/src/fixtures/repos/deep_cascade/root +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d9f45304b043fae1597a359a272020983c829459 diff --git a/src/fixtures/repos/deep_cascade/trunk b/src/fixtures/repos/deep_cascade/trunk deleted file mode 160000 index 132c128d..00000000 --- a/src/fixtures/repos/deep_cascade/trunk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 132c128d958d08a98a8780859e9bb9f32686b15a diff --git a/src/fixtures/repos/isolated_packages/util_a b/src/fixtures/repos/isolated_packages/util_a deleted file mode 160000 index 42f3cde0..00000000 --- a/src/fixtures/repos/isolated_packages/util_a +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 42f3cde061bf0b70e37e4b70d2c81596ea93f3d5 diff --git a/src/fixtures/repos/isolated_packages/util_b b/src/fixtures/repos/isolated_packages/util_b deleted file mode 160000 index 77079e39..00000000 --- a/src/fixtures/repos/isolated_packages/util_b +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 77079e392dc7ebaf7398ec1dccc98cfaecf56a01 diff --git a/src/fixtures/repos/isolated_packages/util_c b/src/fixtures/repos/isolated_packages/util_c deleted file mode 160000 index 4bf5333c..00000000 --- a/src/fixtures/repos/isolated_packages/util_c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4bf5333c1000d62ebdce9292ccaaea02ebceffb2 diff --git a/src/fixtures/repos/isolated_packages/util_d b/src/fixtures/repos/isolated_packages/util_d deleted file mode 160000 index 0c3bb145..00000000 --- a/src/fixtures/repos/isolated_packages/util_d +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0c3bb1453cee60b2d53551936e9eafc5ef3bba00 diff --git a/src/fixtures/repos/major_bumps/app_using_stable b/src/fixtures/repos/major_bumps/app_using_stable deleted file mode 160000 index 92e97790..00000000 --- a/src/fixtures/repos/major_bumps/app_using_stable +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 92e977901aa284f3d9400513a2e0b1c6e29d3481 diff --git a/src/fixtures/repos/major_bumps/app_using_unstable b/src/fixtures/repos/major_bumps/app_using_unstable deleted file mode 160000 index 4fdf11b1..00000000 --- a/src/fixtures/repos/major_bumps/app_using_unstable +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4fdf11b15b1291cbcc9759ec49db7cd35127e83c diff --git a/src/fixtures/repos/major_bumps/complex_app b/src/fixtures/repos/major_bumps/complex_app deleted file mode 160000 index 9218e217..00000000 --- a/src/fixtures/repos/major_bumps/complex_app +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9218e217af01391ae8878354fdc8be77cf65efbb diff --git a/src/fixtures/repos/major_bumps/stable b/src/fixtures/repos/major_bumps/stable deleted file mode 160000 index e2e6eff9..00000000 --- a/src/fixtures/repos/major_bumps/stable +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e2e6eff910f22c734df3cd0f6b48e2a9b70e61ff diff --git a/src/fixtures/repos/major_bumps/unstable b/src/fixtures/repos/major_bumps/unstable deleted file mode 160000 index a5380412..00000000 --- a/src/fixtures/repos/major_bumps/unstable +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a5380412e32e1f644c5e19cb5bb10606edf80b3b diff --git a/src/fixtures/repos/multiple_dep_types/adapter b/src/fixtures/repos/multiple_dep_types/adapter deleted file mode 160000 index 533d2932..00000000 --- a/src/fixtures/repos/multiple_dep_types/adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 533d2932f5a603b145f260635ad52e54bb024e36 diff --git a/src/fixtures/repos/multiple_dep_types/core b/src/fixtures/repos/multiple_dep_types/core deleted file mode 160000 index c836238e..00000000 --- a/src/fixtures/repos/multiple_dep_types/core +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c836238e929c06a06f885d04acb82bb3d82b6de1 diff --git a/src/fixtures/repos/multiple_dep_types/plugin b/src/fixtures/repos/multiple_dep_types/plugin deleted file mode 160000 index 408f2df3..00000000 --- a/src/fixtures/repos/multiple_dep_types/plugin +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 408f2df3548087d2d8a466d0c27bf13f44468436 diff --git a/src/fixtures/repos/peer_deps_only/adapter b/src/fixtures/repos/peer_deps_only/adapter deleted file mode 160000 index 5f779b83..00000000 --- a/src/fixtures/repos/peer_deps_only/adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5f779b8308560694e714b18a4f5a5a1fb4477264 diff --git a/src/fixtures/repos/peer_deps_only/core b/src/fixtures/repos/peer_deps_only/core deleted file mode 160000 index f74d7c1c..00000000 --- a/src/fixtures/repos/peer_deps_only/core +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f74d7c1c074a266dab4e39a0560b3f880f5bab52 diff --git a/src/fixtures/repos/peer_deps_only/plugin_a b/src/fixtures/repos/peer_deps_only/plugin_a deleted file mode 160000 index 7eeb06a3..00000000 --- a/src/fixtures/repos/peer_deps_only/plugin_a +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7eeb06a3bfdb13eab881dd239496e4e018716afe diff --git a/src/fixtures/repos/peer_deps_only/plugin_b b/src/fixtures/repos/peer_deps_only/plugin_b deleted file mode 160000 index 5e6716a9..00000000 --- a/src/fixtures/repos/peer_deps_only/plugin_b +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5e6716a96a5b626c000b07f1f69fd57d4b15885e diff --git a/src/fixtures/repos/peer_deps_only/utils b/src/fixtures/repos/peer_deps_only/utils deleted file mode 160000 index bc9e652a..00000000 --- a/src/fixtures/repos/peer_deps_only/utils +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bc9e652a7fc15ea3600c238cf740d9ebfdeaa5a8 diff --git a/src/fixtures/repos/private_packages/consumer b/src/fixtures/repos/private_packages/consumer deleted file mode 160000 index 2e9e31a9..00000000 --- a/src/fixtures/repos/private_packages/consumer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2e9e31a93fb5614f7e4baf0f7536aca0e93efed2 diff --git a/src/fixtures/repos/private_packages/private_tool b/src/fixtures/repos/private_packages/private_tool deleted file mode 160000 index a698e5e9..00000000 --- a/src/fixtures/repos/private_packages/private_tool +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a698e5e9d5c9b6cf90fd4b4cb1c47cac4e9dd6e4 diff --git a/src/fixtures/repos/private_packages/public_lib b/src/fixtures/repos/private_packages/public_lib deleted file mode 160000 index da8048c6..00000000 --- a/src/fixtures/repos/private_packages/public_lib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit da8048c6fe2c445fb8ce160855a14c42fecf0dfd diff --git a/src/fixtures/repos/three_way_dev_cycle/app b/src/fixtures/repos/three_way_dev_cycle/app deleted file mode 160000 index 107e38ec..00000000 --- a/src/fixtures/repos/three_way_dev_cycle/app +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 107e38ecbeaeb866ccc5d1a077e9d4e50e3a0cea diff --git a/src/fixtures/repos/three_way_dev_cycle/tool_x b/src/fixtures/repos/three_way_dev_cycle/tool_x deleted file mode 160000 index d7da3d11..00000000 --- a/src/fixtures/repos/three_way_dev_cycle/tool_x +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d7da3d1185b65597b49feed4dc29209ce5022572 diff --git a/src/fixtures/repos/three_way_dev_cycle/tool_y b/src/fixtures/repos/three_way_dev_cycle/tool_y deleted file mode 160000 index 90bd8336..00000000 --- a/src/fixtures/repos/three_way_dev_cycle/tool_y +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 90bd833693d4b5b7e20565611b388ea6787e62f1 diff --git a/src/fixtures/repos/three_way_dev_cycle/tool_z b/src/fixtures/repos/three_way_dev_cycle/tool_z deleted file mode 160000 index 3070ff2e..00000000 --- a/src/fixtures/repos/three_way_dev_cycle/tool_z +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3070ff2e8dafe965171ffe842067b3eb1cf140dc From bf3b4eac1940e0310e842b8a64194a697220823e Mon Sep 17 00:00:00 2001 From: Ryan Atkinson Date: Tue, 25 Nov 2025 09:22:16 -0500 Subject: [PATCH 06/21] wip --- src/lib/ModulesDetail.svelte | 24 ++---- src/lib/ModulesNav.svelte | 6 +- src/lib/ModulesPage.svelte | 6 +- src/lib/PageFooter.svelte | 9 +- src/lib/PageHeader.svelte | 8 +- src/lib/PullRequestsDetail.svelte | 10 +-- src/lib/PullRequestsPage.svelte | 4 +- src/lib/ReposTable.svelte | 44 +++++----- src/lib/ReposTree.svelte | 12 +-- src/lib/ReposTreeNav.svelte | 8 +- src/lib/TablePage.svelte | 4 +- src/lib/TreeItemPage.svelte | 8 +- src/lib/TreePage.svelte | 6 +- src/lib/fetch_repo_data.ts | 1 - src/lib/github.ts | 21 +++-- src/lib/github_helpers.ts | 2 +- src/lib/repo.svelte.ts | 67 +++++++++++++-- src/routes/about/+page.svelte | 2 +- src/routes/package.ts | 133 +++++++++++++++++++++++------- src/routes/tree/[slug]/+page.ts | 2 +- 20 files changed, 249 insertions(+), 128 deletions(-) diff --git a/src/lib/ModulesDetail.svelte b/src/lib/ModulesDetail.svelte index a4a43cb7..93e5ba5d 100644 --- a/src/lib/ModulesDetail.svelte +++ b/src/lib/ModulesDetail.svelte @@ -19,22 +19,14 @@ // TODO show other data (bytes and lines of code per module?) // TODO hacky, needs helpers or rethinking + // NOTE: src_json/modules data is no longer available on Repo (it was removed to simplify the API). + // This component will show an empty list until module metadata is added back or fetched separately. const repos_modules: Array<{ repo: Repo; modules: Array; }> = $derived( - repos.reduce}>>((acc, repo) => { - const {package_json, src_json} = repo.pkg; - if ( - !src_json.modules?.length || - !( - !!package_json.devDependencies?.['@sveltejs/package'] || - !!package_json.dependencies?.['@sveltejs/package'] - ) - ) { - return acc; - } - acc.push({repo, modules: src_json.modules}); + repos.reduce}>>((acc, _repo) => { + // No src_json on Repo anymore - modules feature requires separate implementation return acc; }, []), ); @@ -54,8 +46,8 @@ {@const {repo, modules} = repo_modules}
  • - 🔗 - {repo.pkg.name} + 🔗 + {repo.name}
      {#each modules as repo_module (repo_module)} @@ -68,11 +60,11 @@ class:json={path.endsWith('.json')} >
      - {#if repo.pkg.repo_url} + {#if repo.repo_url}
      {path} diff --git a/src/lib/ModulesNav.svelte b/src/lib/ModulesNav.svelte index 066cd265..e7afb053 100644 --- a/src/lib/ModulesNav.svelte +++ b/src/lib/ModulesNav.svelte @@ -24,9 +24,9 @@ {#each repos_modules as pkg_modules (pkg_modules)}
    • {pkg_modules.repo.pkg.name}{pkg_modules.repo.name}
    • {/each} diff --git a/src/lib/ModulesPage.svelte b/src/lib/ModulesPage.svelte index 2e2566b5..9a0349cd 100644 --- a/src/lib/ModulesPage.svelte +++ b/src/lib/ModulesPage.svelte @@ -15,18 +15,18 @@ - modules {repo.pkg.package_json.glyph} {repo.pkg.package_json.name} + modules {repo.package_json.glyph} {repo.package_json.name}
      - +
      {#snippet nav_footer()} {/snippet} diff --git a/src/lib/PageFooter.svelte b/src/lib/PageFooter.svelte index 198f196d..45d36357 100644 --- a/src/lib/PageFooter.svelte +++ b/src/lib/PageFooter.svelte @@ -1,16 +1,15 @@
      - +
      diff --git a/src/lib/PageHeader.svelte b/src/lib/PageHeader.svelte index a8417c04..df8f03f6 100644 --- a/src/lib/PageHeader.svelte +++ b/src/lib/PageHeader.svelte @@ -1,18 +1,18 @@
      @@ -20,7 +20,7 @@ {#if nav} {@render nav()} {:else} - + {/if}
      diff --git a/src/lib/PullRequestsDetail.svelte b/src/lib/PullRequestsDetail.svelte index 7d8fd22b..d934e32b 100644 --- a/src/lib/PullRequestsDetail.svelte +++ b/src/lib/PullRequestsDetail.svelte @@ -22,15 +22,15 @@ {#each pull_requests as pull_request (pull_request.pull_request.number)} {pull_request.repo.pkg - .repo_name}{#if pull_request.repo.pkg.package_json.glyph} {pull_request.repo - .pkg.package_json.glyph}{/if}{pull_request.repo + .repo_name}{#if pull_request.repo.package_json.glyph} {pull_request.repo + .package_json.glyph}{/if} #{pull_request.pull_request.number} diff --git a/src/lib/PullRequestsPage.svelte b/src/lib/PullRequestsPage.svelte index 9a07e092..b093e485 100644 --- a/src/lib/PullRequestsPage.svelte +++ b/src/lib/PullRequestsPage.svelte @@ -18,12 +18,12 @@ - pull requests {repo.pkg.package_json.glyph} {repo.pkg.package_json.name} + pull requests {repo.package_json.glyph} {repo.package_json.name}
      - +
      diff --git a/src/lib/ReposTable.svelte b/src/lib/ReposTable.svelte index a8fe383f..c990645b 100644 --- a/src/lib/ReposTable.svelte +++ b/src/lib/ReposTable.svelte @@ -19,14 +19,14 @@ // TODO hacky, handle regular deps too const lookup_dep_version = (repo: Repo, dep: string): string | undefined => { - for (const key in repo.pkg.package_json.dependencies) { + for (const key in repo.package_json.dependencies) { if (key === dep) { - return repo.pkg.package_json.dependencies[key]; + return repo.package_json.dependencies[key]; } } - for (const key in repo.pkg.package_json.devDependencies) { + for (const key in repo.package_json.devDependencies) { if (key === dep) { - return repo.pkg.package_json.devDependencies[key]; + return repo.package_json.devDependencies[key]; } } return undefined; @@ -35,9 +35,9 @@ const latest_version_by_dep = $derived( new Map( deps.map((dep) => { - const repo = repos.find((repo) => repo.pkg.package_json.name === dep); - if (!repo?.pkg.package_json) return [dep, null]; - return [dep, repo.pkg.package_json.version]; + const repo = repos.find((repo) => repo.package_json.name === dep); + if (!repo?.package_json) return [dep, null]; + return [dep, repo.package_json.version]; }), ), ); @@ -46,8 +46,8 @@ version == null ? '' : version.replace(/^(\^|>=)\s*/, ''); const lookup_pull_requests = (repos: Array | null, repo: Repo) => { - const found = repos?.find((p) => p.pkg.repo_url === repo.pkg.repo_url); - if (!found?.pkg.package_json) return null; + const found = repos?.find((p) => p.repo_url === repo.repo_url); + if (!found?.package_json) return null; const {pull_requests} = found; return pull_requests; }; @@ -68,13 +68,13 @@ - {#each repos as repo (repo.pkg.name)} - {@const {package_json, homepage_url} = repo.pkg} + {#each repos as repo (repo.name)} + {@const {package_json, homepage_url} = repo} @@ -84,8 +84,8 @@ {repo.pkg.logo_alt} {#if package_json} - {repo.pkg.repo_name} + {repo.repo_name} {@const check_runs = repo.check_runs} {@const check_runs_completed = check_runs?.status === 'completed'} {@const check_runs_success = check_runs?.conclusion === 'success'} {#if check_runs && (!check_runs_completed || !check_runs_success)} {format_url(repo.pkg.repo_url)}{format_url(repo.repo_url)} {/if}
      - {#if repo.pkg.npm_url} + {#if repo.npm_url}
      {repo.pkg.name}{repo.name}
      {/if} @@ -131,7 +131,7 @@ {#if package_json.version !== '0.0.1'} {format_version(package_json.version)}{format_version(package_json.version)} {/if} @@ -148,14 +148,14 @@ {/each} - {#if repo.pkg.repo_url} + {#if repo.repo_url} {@const pull_requests = lookup_pull_requests(repos, repo)}
      {#if pull_requests} {#each pull_requests as pull (pull)} #{pull.number} diff --git a/src/lib/ReposTree.svelte b/src/lib/ReposTree.svelte index fbf50473..eb211b0a 100644 --- a/src/lib/ReposTree.svelte +++ b/src/lib/ReposTree.svelte @@ -24,15 +24,17 @@ {#if selected_repo}
      - + +
      {:else} - {#each repos as repo (repo.pkg.name)} + {#each repos as repo (repo.name)}
    • - {#if repo.pkg.package_json} - + {#if repo.package_json} + + {#snippet repo_name(repo_name)} {repo_name} {/snippet} @@ -42,7 +44,7 @@

      failed to fetch .well-known/package.json from {format_url(repo.pkg.repo_url)}{format_url(repo.repo_url)}

    • diff --git a/src/lib/ReposTreeNav.svelte b/src/lib/ReposTreeNav.svelte index 75e41d17..4f4a483c 100644 --- a/src/lib/ReposTreeNav.svelte +++ b/src/lib/ReposTreeNav.svelte @@ -15,15 +15,15 @@