@fuzdev/fuz_gitops 0.78.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +91 -17
  2. package/dist/ModulesDetail.svelte +22 -27
  3. package/dist/ModulesDetail.svelte.d.ts.map +1 -1
  4. package/dist/ModulesNav.svelte +8 -5
  5. package/dist/ModulesNav.svelte.d.ts.map +1 -1
  6. package/dist/ModulesPage.svelte +3 -5
  7. package/dist/ModulesPage.svelte.d.ts.map +1 -1
  8. package/dist/PageFooter.svelte +2 -2
  9. package/dist/PageHeader.svelte +6 -6
  10. package/dist/PageHeader.svelte.d.ts +0 -3
  11. package/dist/PageHeader.svelte.d.ts.map +1 -1
  12. package/dist/PullRequestsDetail.svelte +29 -20
  13. package/dist/PullRequestsDetail.svelte.d.ts.map +1 -1
  14. package/dist/PullRequestsPage.svelte +4 -6
  15. package/dist/PullRequestsPage.svelte.d.ts.map +1 -1
  16. package/dist/ReposTable.svelte +43 -55
  17. package/dist/ReposTable.svelte.d.ts.map +1 -1
  18. package/dist/ReposTree.svelte +9 -21
  19. package/dist/ReposTree.svelte.d.ts.map +1 -1
  20. package/dist/ReposTreeNav.svelte +9 -12
  21. package/dist/ReposTreeNav.svelte.d.ts.map +1 -1
  22. package/dist/TablePage.svelte +3 -5
  23. package/dist/TablePage.svelte.d.ts.map +1 -1
  24. package/dist/TreeItemPage.svelte +3 -5
  25. package/dist/TreeItemPage.svelte.d.ts.map +1 -1
  26. package/dist/TreePage.svelte +3 -5
  27. package/dist/TreePage.svelte.d.ts.map +1 -1
  28. package/dist/changeset_generator.d.ts.map +1 -1
  29. package/dist/changeset_generator.js +2 -2
  30. package/dist/changeset_reader.d.ts.map +1 -1
  31. package/dist/changeset_reader.js +3 -3
  32. package/dist/ci_reconcile.d.ts +6 -10
  33. package/dist/ci_reconcile.d.ts.map +1 -1
  34. package/dist/ci_reconcile.js +6 -8
  35. package/dist/dependency_graph.d.ts +26 -49
  36. package/dist/dependency_graph.d.ts.map +1 -1
  37. package/dist/dependency_graph.js +40 -83
  38. package/dist/dependency_updater.d.ts +1 -1
  39. package/dist/dependency_updater.d.ts.map +1 -1
  40. package/dist/dependency_updater.js +14 -9
  41. package/dist/fetch_repo_data.d.ts +34 -8
  42. package/dist/fetch_repo_data.d.ts.map +1 -1
  43. package/dist/fetch_repo_data.js +44 -22
  44. package/dist/fs_fetch_value_cache.d.ts +1 -1
  45. package/dist/fs_fetch_value_cache.d.ts.map +1 -1
  46. package/dist/fs_fetch_value_cache.js +3 -3
  47. package/dist/git_operations.d.ts +6 -49
  48. package/dist/git_operations.d.ts.map +1 -1
  49. package/dist/git_operations.js +13 -126
  50. package/dist/github.d.ts +17 -2
  51. package/dist/github.d.ts.map +1 -1
  52. package/dist/github.js +17 -8
  53. package/dist/github_helpers.d.ts.map +1 -1
  54. package/dist/github_helpers.js +3 -11
  55. package/dist/gitops_analyze.task.d.ts +24 -2
  56. package/dist/gitops_analyze.task.d.ts.map +1 -1
  57. package/dist/gitops_analyze.task.js +47 -34
  58. package/dist/gitops_config.d.ts +34 -79
  59. package/dist/gitops_config.d.ts.map +1 -1
  60. package/dist/gitops_config.js +76 -53
  61. package/dist/gitops_constants.d.ts +6 -4
  62. package/dist/gitops_constants.d.ts.map +1 -1
  63. package/dist/gitops_constants.js +6 -4
  64. package/dist/gitops_plan.task.d.ts +29 -3
  65. package/dist/gitops_plan.task.d.ts.map +1 -1
  66. package/dist/gitops_plan.task.js +83 -61
  67. package/dist/gitops_publish.task.d.ts +62 -2
  68. package/dist/gitops_publish.task.d.ts.map +1 -1
  69. package/dist/gitops_publish.task.js +193 -105
  70. package/dist/gitops_run.task.d.ts +74 -0
  71. package/dist/gitops_run.task.d.ts.map +1 -1
  72. package/dist/gitops_run.task.js +176 -162
  73. package/dist/gitops_sync.task.d.ts +65 -3
  74. package/dist/gitops_sync.task.d.ts.map +1 -1
  75. package/dist/gitops_sync.task.js +163 -37
  76. package/dist/gitops_task_helpers.d.ts +86 -59
  77. package/dist/gitops_task_helpers.d.ts.map +1 -1
  78. package/dist/gitops_task_helpers.js +120 -79
  79. package/dist/gitops_validate.task.d.ts +1 -2
  80. package/dist/gitops_validate.task.d.ts.map +1 -1
  81. package/dist/gitops_validate.task.js +25 -32
  82. package/dist/graph_validation.d.ts +16 -27
  83. package/dist/graph_validation.d.ts.map +1 -1
  84. package/dist/graph_validation.js +24 -65
  85. package/dist/local_repo.d.ts +50 -62
  86. package/dist/local_repo.d.ts.map +1 -1
  87. package/dist/local_repo.js +83 -196
  88. package/dist/log_helpers.d.ts +8 -8
  89. package/dist/log_helpers.d.ts.map +1 -1
  90. package/dist/multi_repo_publisher.d.ts +10 -0
  91. package/dist/multi_repo_publisher.d.ts.map +1 -1
  92. package/dist/multi_repo_publisher.js +125 -61
  93. package/dist/npm_registry.d.ts +23 -19
  94. package/dist/npm_registry.d.ts.map +1 -1
  95. package/dist/npm_registry.js +21 -48
  96. package/dist/operations.d.ts +75 -180
  97. package/dist/operations.d.ts.map +1 -1
  98. package/dist/operations.js +15 -7
  99. package/dist/operations_defaults.d.ts +17 -2
  100. package/dist/operations_defaults.d.ts.map +1 -1
  101. package/dist/operations_defaults.js +111 -128
  102. package/dist/output_helpers.d.ts +36 -0
  103. package/dist/output_helpers.d.ts.map +1 -1
  104. package/dist/output_helpers.js +37 -3
  105. package/dist/preflight_checks.d.ts +20 -27
  106. package/dist/preflight_checks.d.ts.map +1 -1
  107. package/dist/preflight_checks.js +37 -126
  108. package/dist/publish_gate.d.ts.map +1 -1
  109. package/dist/publish_steps.d.ts +2 -4
  110. package/dist/publish_steps.d.ts.map +1 -1
  111. package/dist/publish_steps.js +4 -8
  112. package/dist/publishing_event.d.ts +2 -8
  113. package/dist/publishing_event.d.ts.map +1 -1
  114. package/dist/publishing_event.js +20 -17
  115. package/dist/publishing_event_handler.d.ts +10 -8
  116. package/dist/publishing_event_handler.d.ts.map +1 -1
  117. package/dist/publishing_event_handler.js +19 -17
  118. package/dist/publishing_plan.d.ts +16 -1
  119. package/dist/publishing_plan.d.ts.map +1 -1
  120. package/dist/publishing_plan.js +332 -254
  121. package/dist/publishing_plan_helpers.d.ts.map +1 -1
  122. package/dist/publishing_plan_helpers.js +3 -3
  123. package/dist/publishing_plan_logging.d.ts +1 -1
  124. package/dist/publishing_plan_logging.d.ts.map +1 -1
  125. package/dist/publishing_plan_logging.js +22 -15
  126. package/dist/repo.svelte.d.ts +7 -0
  127. package/dist/repo.svelte.d.ts.map +1 -1
  128. package/dist/repo.svelte.js +3 -0
  129. package/dist/repo_readiness.d.ts +210 -0
  130. package/dist/repo_readiness.d.ts.map +1 -0
  131. package/dist/repo_readiness.js +516 -0
  132. package/dist/repos_status.d.ts +3340 -0
  133. package/dist/repos_status.d.ts.map +1 -0
  134. package/dist/repos_status.js +555 -0
  135. package/dist/repos_status_load.d.ts +65 -0
  136. package/dist/repos_status_load.d.ts.map +1 -0
  137. package/dist/repos_status_load.js +131 -0
  138. package/dist/version_utils.js +1 -1
  139. package/package.json +15 -34
  140. package/src/lib/cargo_toml.ts +3 -3
  141. package/src/lib/changeset_generator.ts +19 -19
  142. package/src/lib/changeset_reader.ts +18 -18
  143. package/src/lib/ci_reconcile.ts +12 -16
  144. package/src/lib/dependency_graph.ts +61 -113
  145. package/src/lib/dependency_updater.ts +36 -30
  146. package/src/lib/fetch_repo_data.ts +71 -34
  147. package/src/lib/fs_fetch_value_cache.ts +15 -11
  148. package/src/lib/git_operations.ts +22 -194
  149. package/src/lib/github.ts +33 -21
  150. package/src/lib/github_helpers.ts +9 -16
  151. package/src/lib/gitops_analyze.task.ts +104 -66
  152. package/src/lib/gitops_config.ts +90 -139
  153. package/src/lib/gitops_constants.ts +6 -4
  154. package/src/lib/gitops_plan.task.ts +128 -76
  155. package/src/lib/gitops_publish.task.ts +280 -144
  156. package/src/lib/gitops_run.task.ts +265 -193
  157. package/src/lib/gitops_sync.task.ts +236 -52
  158. package/src/lib/gitops_task_helpers.ts +170 -114
  159. package/src/lib/gitops_validate.task.ts +44 -54
  160. package/src/lib/graph_validation.ts +28 -89
  161. package/src/lib/local_repo.ts +128 -335
  162. package/src/lib/log_helpers.ts +18 -28
  163. package/src/lib/multi_repo_publisher.ts +192 -110
  164. package/src/lib/npm_registry.ts +42 -67
  165. package/src/lib/operations.ts +99 -160
  166. package/src/lib/operations_defaults.ts +157 -201
  167. package/src/lib/output_helpers.ts +58 -6
  168. package/src/lib/preflight_checks.ts +52 -188
  169. package/src/lib/publish_gate.ts +7 -9
  170. package/src/lib/publish_steps.ts +27 -25
  171. package/src/lib/publishing_event.ts +26 -23
  172. package/src/lib/publishing_event_handler.ts +24 -22
  173. package/src/lib/publishing_plan.ts +474 -310
  174. package/src/lib/publishing_plan_helpers.ts +16 -12
  175. package/src/lib/publishing_plan_logging.ts +53 -44
  176. package/src/lib/repo.svelte.ts +16 -8
  177. package/src/lib/repo_readiness.ts +647 -0
  178. package/src/lib/repos_status.ts +671 -0
  179. package/src/lib/repos_status_load.ts +173 -0
  180. package/src/lib/version_utils.ts +3 -3
  181. package/dist/config_reconcile.d.ts +0 -46
  182. package/dist/config_reconcile.d.ts.map +0 -1
  183. package/dist/config_reconcile.js +0 -60
  184. package/dist/paths.d.ts +0 -7
  185. package/dist/paths.d.ts.map +0 -1
  186. package/dist/paths.js +0 -6
  187. package/dist/repo_ops.d.ts +0 -59
  188. package/dist/repo_ops.d.ts.map +0 -1
  189. package/dist/repo_ops.js +0 -170
  190. package/dist/resolved_gitops_config.d.ts +0 -9
  191. package/dist/resolved_gitops_config.d.ts.map +0 -1
  192. package/dist/resolved_gitops_config.js +0 -12
  193. package/src/lib/config_reconcile.ts +0 -94
  194. package/src/lib/paths.ts +0 -6
  195. package/src/lib/repo_ops.ts +0 -216
  196. package/src/lib/resolved_gitops_config.ts +0 -27
@@ -1,14 +1,14 @@
1
1
  <script lang="ts">
2
- import {page} from '$app/state';
3
- import {resolve} from '$app/paths';
4
- import {format_url} from '@fuzdev/fuz_util/url.ts';
2
+ import { page } from '$app/state';
3
+ import { resolve } from '$app/paths';
4
+ import { format_url } from '@fuzdev/fuz_util/url.ts';
5
5
 
6
- import type {Repo} from './repo.svelte.js';
7
- import {to_pull_url} from './github_helpers.js';
6
+ import type { Repo } from './repo.svelte.js';
7
+ import { to_pull_url } from './github_helpers.js';
8
8
 
9
9
  const {
10
10
  repos,
11
- deps = ['@fuzdev/fuz_ui', '@fuzdev/gro'],
11
+ deps = ['@fuzdev/fuz_ui', '@fuzdev/gro']
12
12
  }: {
13
13
  repos: Array<Repo>;
14
14
  deps?: Array<string>;
@@ -37,21 +37,13 @@
37
37
  new Map<string, string | null>(
38
38
  deps.map((dep) => {
39
39
  const repo = repos.find((repo) => repo.package_json.name === dep);
40
- if (!repo?.package_json) return [dep, null];
41
- return [dep, repo.package_json.version ?? null];
42
- }),
43
- ),
40
+ return [dep, repo?.package_json.version ?? null];
41
+ })
42
+ )
44
43
  );
45
44
 
46
45
  const format_version = (version: string | null | undefined): string =>
47
46
  version == null ? '' : version.replace(/^(\^|>=)\s*/, '');
48
-
49
- const lookup_pull_requests = (repos: Array<Repo> | null, repo: Repo) => {
50
- const found = repos?.find((p) => p.repo_url === repo.repo_url);
51
- if (!found?.package_json) return null;
52
- const {pull_requests} = found;
53
- return pull_requests;
54
- };
55
47
  </script>
56
48
 
57
49
  <table>
@@ -70,13 +62,14 @@
70
62
  </thead>
71
63
  <tbody>
72
64
  {#each repos as repo (repo.name)}
73
- {@const {package_json, homepage_url} = repo}
65
+ {@const { package_json, homepage_url } = repo}
66
+ {@const check_runs = repo.check_runs}
67
+ {@const check_runs_completed = check_runs?.status === 'completed'}
68
+ {@const check_runs_success = check_runs?.conclusion === 'success'}
74
69
  <tr>
75
70
  <td>
76
71
  <div class="row">
77
- {#if package_json}
78
- <a href={resolve(`/tree/${repo.repo_name}`)}>{package_json.glyph ?? '🌳'}</a>
79
- {/if}
72
+ <a href={resolve(`/tree/${repo.repo_name}`)}>{package_json.glyph ?? '🌳'}</a>
80
73
  </div>
81
74
  </td>
82
75
  <td>
@@ -98,25 +91,17 @@
98
91
  </td>
99
92
  <td>
100
93
  <div class="row">
101
- {#if package_json}
102
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
103
- <a href={repo.repo_url}>{repo.repo_name}</a>
104
- {@const check_runs = repo.check_runs}
105
- {@const check_runs_completed = check_runs?.status === 'completed'}
106
- {@const check_runs_success = check_runs?.conclusion === 'success'}
107
- {#if check_runs && (!check_runs_completed || !check_runs_success)}
108
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
109
- href="{repo.repo_url}/commits/main"
110
- title={!check_runs_completed
111
- ? `status: ${check_runs.status}`
112
- : `CI failed: ${check_runs.conclusion}`}
113
- >{#if !check_runs_completed}🟡{:else}⚠️{/if}</a
114
- >
115
- {/if}
116
- {:else}
94
+ <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
95
+ <a href={repo.repo_url}>{repo.repo_name}</a>
96
+ {#if check_runs && (!check_runs_completed || !check_runs_success)}
117
97
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
118
- href={repo.repo_url}>{format_url(repo.repo_url)}</a
98
+ href="{repo.repo_url}/commits/{repo.branch}"
99
+ title={!check_runs_completed
100
+ ? `status: ${check_runs.status}`
101
+ : `CI failed: ${check_runs.conclusion}`}
119
102
  >
103
+ {#if !check_runs_completed}🟡{:else}⚠️{/if}
104
+ </a>
120
105
  {/if}
121
106
  </div>
122
107
  </td>
@@ -124,16 +109,20 @@
124
109
  {#if repo.npm_url}
125
110
  <div class="row">
126
111
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
127
- href={repo.npm_url}><code>{repo.name}</code></a
112
+ href={repo.npm_url}
128
113
  >
114
+ <code>{repo.name}</code>
115
+ </a>
129
116
  </div>
130
117
  {/if}
131
118
  </td>
132
119
  <td>
133
120
  {#if package_json.version !== '0.0.1'}
134
121
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
135
- href={repo.changelog_url}>{format_version(package_json.version)}</a
122
+ href={repo.changelog_url}
136
123
  >
124
+ {format_version(package_json.version)}
125
+ </a>
137
126
  {/if}
138
127
  </td>
139
128
  {#each deps as dep (dep)}
@@ -149,21 +138,20 @@
149
138
  </td>
150
139
  {/each}
151
140
  <td>
152
- {#if repo.repo_url}
153
- {@const pull_requests = lookup_pull_requests(repos, repo)}
154
- <!-- TODO show something like `and N more` with a link to a dialog list -->
155
- <div class="row">
156
- {#if pull_requests}
157
- {#each pull_requests as pull (pull)}
158
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
159
- href={to_pull_url(repo.repo_url, pull)}
160
- class="chip"
161
- title={pull.title}>#{pull.number}</a
162
- >
163
- {/each}
164
- {/if}
165
- </div>
166
- {/if}
141
+ <!-- TODO show something like `and N more` with a link to a dialog list -->
142
+ <div class="row">
143
+ {#if repo.pull_requests}
144
+ {#each repo.pull_requests as pull (pull.number)}
145
+ <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
146
+ href={to_pull_url(repo.repo_url, pull)}
147
+ class="chip"
148
+ title={pull.title}
149
+ >
150
+ #{pull.number}
151
+ </a>
152
+ {/each}
153
+ {/if}
154
+ </div>
167
155
  </td>
168
156
  </tr>
169
157
  {/each}
@@ -1 +1 @@
1
- {"version":3,"file":"ReposTable.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTable.svelte"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAG1C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB,CAAC;AAwJH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ReposTable.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTable.svelte"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB,CAAC;AA+IH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -1,17 +1,16 @@
1
1
  <script lang="ts">
2
2
  import LibrarySummary from '@fuzdev/fuz_ui/LibrarySummary.svelte';
3
- import {resolve} from '$app/paths';
4
- import {format_url} from '@fuzdev/fuz_util/url.ts';
5
- import type {Snippet} from 'svelte';
3
+ import { resolve } from '$app/paths';
4
+ import type { Snippet } from 'svelte';
6
5
 
7
- import type {Repo} from './repo.svelte.js';
6
+ import type { Repo } from './repo.svelte.js';
8
7
  import ReposTreeNav from './ReposTreeNav.svelte';
9
8
  import LibraryDetail from '@fuzdev/fuz_ui/LibraryDetail.svelte';
10
9
 
11
10
  const {
12
11
  repos,
13
12
  selected_repo,
14
- nav,
13
+ nav
15
14
  }: {
16
15
  repos: Array<Repo>;
17
16
  selected_repo?: Repo | undefined;
@@ -39,22 +38,11 @@
39
38
  <menu class="summaries">
40
39
  {#each repos as repo (repo.name)}
41
40
  <li class="panel p_md box">
42
- {#if repo.package_json}
43
- <LibrarySummary library={repo.library}>
44
- {#snippet repo_name(repo_name)}
45
- <a href={resolve(`/tree/${repo_name}`)} class="repo-name">{repo_name}</a>
46
- {/snippet}
47
- </LibrarySummary>
48
- {:else}
49
- <div class="width_atmost_sm">
50
- <p>
51
- failed to load library metadata for
52
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
53
- href={repo.repo_url}>{format_url(repo.repo_url)}</a
54
- >
55
- </p>
56
- </div>
57
- {/if}
41
+ <LibrarySummary library={repo.library}>
42
+ {#snippet repo_name(repo_name)}
43
+ <a href={resolve(`/tree/${repo_name}`)} class="repo-name">{repo_name}</a>
44
+ {/snippet}
45
+ </LibrarySummary>
58
46
  </li>
59
47
  {/each}
60
48
  </menu>
@@ -1 +1 @@
1
- {"version":3,"file":"ReposTree.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTree.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAI1C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,OAAO,CAAC;CACb,CAAC;AAyDH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ReposTree.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTree.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,OAAO,CAAC;CACb,CAAC;AA+CH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
- import {resolve} from '$app/paths';
3
- import type {Snippet} from 'svelte';
2
+ import { resolve } from '$app/paths';
3
+ import type { Snippet } from 'svelte';
4
4
 
5
- import type {Repo} from './repo.svelte.js';
5
+ import type { Repo } from './repo.svelte.js';
6
6
 
7
7
  const {
8
8
  repos,
9
9
  selected_repo,
10
- children,
10
+ children
11
11
  }: {
12
12
  repos: Array<Repo>;
13
13
  selected_repo?: Repo;
@@ -20,14 +20,11 @@
20
20
  {#each repos as repo (repo.name)}
21
21
  {@const selected = repo === selected_repo}
22
22
  <li style:display="contents">
23
- {#if repo.package_json}<a
24
- class="menuitem"
25
- class:selected
26
- href={resolve(`/tree/${repo.repo_name}`)}
27
- ><div class="ellipsis">
28
- {repo.repo_name}{#if repo.package_json.glyph}&nbsp;{repo.package_json.glyph}{/if}
29
- </div></a
30
- >{/if}
23
+ <a class="menuitem" class:selected href={resolve(`/tree/${repo.repo_name}`)}>
24
+ <div class="ellipsis">
25
+ {repo.repo_name}{#if repo.package_json.glyph}&nbsp;{repo.package_json.glyph}{/if}
26
+ </div>
27
+ </a>
31
28
  </li>
32
29
  {/each}
33
30
  </menu>
@@ -1 +1 @@
1
- {"version":3,"file":"ReposTreeNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTreeNav.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE1C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAgCH,QAAA,MAAM,YAAY,sDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ReposTreeNav.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ReposTreeNav.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AAkCH,QAAA,MAAM,YAAY,sDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -2,11 +2,11 @@
2
2
  import PageFooter from './PageFooter.svelte';
3
3
  import PageHeader from './PageHeader.svelte';
4
4
  import ReposTable from './ReposTable.svelte';
5
- import type {Repo} from './repo.svelte.js';
5
+ import type { Repo } from './repo.svelte.js';
6
6
 
7
7
  const {
8
8
  repo,
9
- repos,
9
+ repos
10
10
  }: {
11
11
  repo: Repo;
12
12
  repos: Array<Repo>;
@@ -26,9 +26,7 @@
26
26
  <ReposTable {repos} />
27
27
  </div>
28
28
  </section>
29
- <section class="box mb_xl7">
30
- <PageFooter />
31
- </section>
29
+ <PageFooter />
32
30
  </main>
33
31
 
34
32
  <style>
@@ -1 +1 @@
1
- {"version":3,"file":"TablePage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TablePage.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE1C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACnB,CAAC;AAmCH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"TablePage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TablePage.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACnB,CAAC;AAiCH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -5,12 +5,12 @@
5
5
  import PageFooter from './PageFooter.svelte';
6
6
  import PageHeader from './PageHeader.svelte';
7
7
  import ReposTree from './ReposTree.svelte';
8
- import type {Repo} from './repo.svelte.js';
8
+ import type { Repo } from './repo.svelte.js';
9
9
 
10
10
  const {
11
11
  repo,
12
12
  repos,
13
- slug,
13
+ slug
14
14
  }: {
15
15
  repo: Repo;
16
16
  repos: Array<Repo>;
@@ -44,9 +44,7 @@
44
44
  {/snippet}
45
45
  </ReposTree>
46
46
  </section>
47
- <section class="box mb_xl7">
48
- <PageFooter />
49
- </section>
47
+ <PageFooter />
50
48
  </main>
51
49
 
52
50
  <style>
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TreeItemPage.svelte"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE1C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAoDH,QAAA,MAAM,YAAY,sDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"TreeItemPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TreeItemPage.svelte"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAkDH,QAAA,MAAM,YAAY,sDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -4,11 +4,11 @@
4
4
  import PageFooter from './PageFooter.svelte';
5
5
  import PageHeader from './PageHeader.svelte';
6
6
  import ReposTree from './ReposTree.svelte';
7
- import type {Repo} from './repo.svelte.js';
7
+ import type { Repo } from './repo.svelte.js';
8
8
 
9
9
  const {
10
10
  repo,
11
- repos,
11
+ repos
12
12
  }: {
13
13
  repo: Repo;
14
14
  repos: Array<Repo>;
@@ -34,9 +34,7 @@
34
34
  {/snippet}
35
35
  </ReposTree>
36
36
  </section>
37
- <section class="box mb_xl7">
38
- <PageFooter />
39
- </section>
37
+ <PageFooter />
40
38
  </main>
41
39
 
42
40
  <style>
@@ -1 +1 @@
1
- {"version":3,"file":"TreePage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TreePage.svelte"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE1C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACnB,CAAC;AA2CH,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"TreePage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/TreePage.svelte"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACnB,CAAC;AAyCH,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"changeset_generator.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/changeset_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAMhE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,uCAAuC,GACnD,MAAM,SAAS,EACf,SAAS,KAAK,CAAC,uBAAuB,CAAC,EACvC,UAAS;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAM,KACjD,OAAO,CAAC,MAAM,CAiChB,CAAC;AAWF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GACtC,cAAc,MAAM,EACpB,SAAS,KAAK,CAAC,uBAAuB,CAAC,EACvC,WAAW,OAAO,GAAG,OAAO,GAAG,OAAO,KACpC,MAsCF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACrC,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,oBAAoB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAC/C,KAAK,CAAC,uBAAuB,CAoB/B,CAAC"}
1
+ {"version":3,"file":"changeset_generator.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/changeset_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,uBAAuB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,uCAAuC,GACnD,MAAM,SAAS,EACf,SAAS,KAAK,CAAC,uBAAuB,CAAC,EACvC,UAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAO,KACnD,OAAO,CAAC,MAAM,CAiChB,CAAC;AAWF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GACtC,cAAc,MAAM,EACpB,SAAS,KAAK,CAAC,uBAAuB,CAAC,EACvC,WAAW,OAAO,GAAG,OAAO,GAAG,OAAO,KACpC,MAsCF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACrC,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,oBAAoB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAC/C,KAAK,CAAC,uBAAuB,CAoB/B,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * @module
8
8
  */
9
9
  import { join } from 'node:path';
10
- import { strip_version_prefix, required_bump_for_dependency_update, } from './version_utils.js';
10
+ import { strip_version_prefix, required_bump_for_dependency_update } from './version_utils.js';
11
11
  import { default_fs_operations } from './operations_defaults.js';
12
12
  /**
13
13
  * Creates a changeset file for dependency updates.
@@ -95,7 +95,7 @@ export const create_dependency_updates = (dependencies, published_versions) => {
95
95
  from_version: clean_current,
96
96
  to_version: published.new_version,
97
97
  bump_type: published.bump_type,
98
- breaking: published.breaking,
98
+ breaking: published.breaking
99
99
  });
100
100
  }
101
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"changeset_reader.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/changeset_reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAKpD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA6C,KAAK,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE7F,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,QAAQ,CAAA;KAAC,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,GACnC,SAAS,MAAM,EACf,iBAAyB,KACvB,aAAa,GAAG,IAmClB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,UAAU,MAAM,EAChB,MAAM,MAAM,KACV,OAAO,CAAC,aAAa,GAAG,IAAI,CAgB9B,CAAC;AAEF,eAAO,MAAM,eAAe,GAC3B,MAAM,SAAS,EACf,MAAM,MAAM,KACV,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAsB9B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GAC1C,YAAY,KAAK,CAAC,aAAa,CAAC,EAChC,cAAc,MAAM,KAClB,QAAQ,GAAG,IAcb,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM,SAAS,KAAG,OAAO,CAAC,OAAO,CAarE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,SAAS,EACf,MAAM,MAAM,KACV,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAC,GAAG,IAAI,CAsBvD,CAAC"}
1
+ {"version":3,"file":"changeset_reader.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/changeset_reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAKtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAA8C,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE/F,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,GACnC,SAAS,MAAM,EACf,iBAAyB,KACvB,aAAa,GAAG,IAmClB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,UAAU,MAAM,EAChB,MAAM,MAAM,KACV,OAAO,CAAC,aAAa,GAAG,IAAI,CAgB9B,CAAC;AAEF,eAAO,MAAM,eAAe,GAC3B,MAAM,SAAS,EACf,MAAM,MAAM,KACV,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAsB9B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GAC1C,YAAY,KAAK,CAAC,aAAa,CAAC,EAChC,cAAc,MAAM,KAClB,QAAQ,GAAG,IAcb,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM,SAAS,KAAG,OAAO,CAAC,OAAO,CAarE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,SAAS,EACf,MAAM,MAAM,KACV,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAsBzD,CAAC"}
@@ -49,7 +49,7 @@ export const parse_changeset_content = (content, filename = 'changeset.md') => {
49
49
  while ((match = package_regex.exec(frontmatter)) !== null) {
50
50
  packages.push({
51
51
  name: match[1],
52
- bump_type: match[2],
52
+ bump_type: match[2]
53
53
  });
54
54
  }
55
55
  if (packages.length === 0) {
@@ -58,7 +58,7 @@ export const parse_changeset_content = (content, filename = 'changeset.md') => {
58
58
  return {
59
59
  filename,
60
60
  packages,
61
- summary,
61
+ summary
62
62
  };
63
63
  };
64
64
  export const parse_changeset_file = async (filepath, log) => {
@@ -166,6 +166,6 @@ export const predict_next_version = async (repo, log) => {
166
166
  log?.debug(` Predicted ${repo.library.name}: ${current_version} → ${next_version} (${bump_type})`);
167
167
  return {
168
168
  version: next_version,
169
- bump_type,
169
+ bump_type
170
170
  };
171
171
  };
@@ -2,14 +2,12 @@
2
2
  * Reconciles each repo's declared `ci` flag against whether it actually has
3
3
  * GitHub Actions workflow files on disk.
4
4
  *
5
- * The gitops config derives `ci` from visibility (on for public repos, off for
6
- * private) with per-repo overrides; this check catches drift between that
7
- * declaration and reality —
5
+ * The registry (`repos.toml`) derives `ci` from visibility (on for public repos,
6
+ * off for private) with per-repo overrides; this check catches drift between
7
+ * that declaration and reality —
8
8
  * a repo that claims CI but ships no workflow, or one that disclaims CI yet
9
- * still carries one. Repos that aren't checked out locally can't be judged, so
10
- * the caller marks them uncheckable and they're skipped. Archived repos are
11
- * frozen on their host, so their CI state is intentionally left alone and they're
12
- * skipped too.
9
+ * still carries one. Archived repos are frozen on their host, so their CI state
10
+ * is intentionally left alone and they're skipped.
13
11
  *
14
12
  * @module
15
13
  */
@@ -28,12 +26,10 @@ export interface CiDrift {
28
26
  }
29
27
  export interface CiReconcileInput {
30
28
  repo_url: string;
31
- /** The declared/derived `ci` value from the gitops config. */
29
+ /** The declared/derived `ci` value from the registry. */
32
30
  ci: boolean;
33
31
  /** Whether the repo has at least one workflow file on disk. */
34
32
  has_workflows: boolean;
35
- /** Whether the repo is checked out locally; uncheckable repos are skipped. */
36
- checkable: boolean;
37
33
  /** Whether the repo is archived (frozen) on its host; archived repos are skipped. */
38
34
  archived: boolean;
39
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ci_reconcile.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ci_reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,2EAA2E;AAC3E,MAAM,MAAM,WAAW;AACtB,yDAAyD;AACvD,YAAY;AACd,uDAAuD;GACrD,UAAU,CAAC;AAEd,MAAM,WAAW,OAAO;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,EAAE,EAAE,OAAO,CAAC;IACZ,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,qFAAqF;IACrF,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAG,KAAK,CAAC,OAAO,CAY1E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OAIrD,CAAC"}
1
+ {"version":3,"file":"ci_reconcile.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ci_reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,2EAA2E;AAC3E,MAAM,MAAM,WAAW;AACtB,yDAAyD;AACvD,YAAY;AACd,uDAAuD;GACrD,UAAU,CAAC;AAEd,MAAM,WAAW,OAAO;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,EAAE,EAAE,OAAO,CAAC;IACZ,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAC;IACvB,qFAAqF;IACrF,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAG,KAAK,CAAC,OAAO,CAY1E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OAIrD,CAAC"}
@@ -2,14 +2,12 @@
2
2
  * Reconciles each repo's declared `ci` flag against whether it actually has
3
3
  * GitHub Actions workflow files on disk.
4
4
  *
5
- * The gitops config derives `ci` from visibility (on for public repos, off for
6
- * private) with per-repo overrides; this check catches drift between that
7
- * declaration and reality —
5
+ * The registry (`repos.toml`) derives `ci` from visibility (on for public repos,
6
+ * off for private) with per-repo overrides; this check catches drift between
7
+ * that declaration and reality —
8
8
  * a repo that claims CI but ships no workflow, or one that disclaims CI yet
9
- * still carries one. Repos that aren't checked out locally can't be judged, so
10
- * the caller marks them uncheckable and they're skipped. Archived repos are
11
- * frozen on their host, so their CI state is intentionally left alone and they're
12
- * skipped too.
9
+ * still carries one. Archived repos are frozen on their host, so their CI state
10
+ * is intentionally left alone and they're skipped.
13
11
  *
14
12
  * @module
15
13
  */
@@ -22,7 +20,7 @@ import { join } from 'node:path';
22
20
  export const reconcile_ci = (repos) => {
23
21
  const drift = [];
24
22
  for (const repo of repos) {
25
- if (!repo.checkable || repo.archived)
23
+ if (repo.archived)
26
24
  continue;
27
25
  const { repo_url, ci, has_workflows } = repo;
28
26
  if (ci && !has_workflows) {
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Dependency graph data structure and algorithms for multi-repo publishing.
3
3
  *
4
- * Provides `DependencyGraph` class with topological sort (via `@fuzdev/fuz_util/sort.ts`)
5
- * and cycle detection by dependency type.
6
- * For validation workflow and publishing order computation, see `graph_validation.ts`.
4
+ * Provides the `DependencyGraph` class, built from local repos, with topological sort
5
+ * (via `@fuzdev/fuz_util/sort.ts`), cycle detection by dependency type, and
6
+ * wildcard-range analysis.
7
+ * For the publishing order and the analysis workflow, see `graph_validation.ts`.
7
8
  *
8
9
  * @module
9
10
  */
@@ -17,7 +18,6 @@ export type DependencyType = (typeof DEPENDENCY_TYPE)[keyof typeof DEPENDENCY_TY
17
18
  export interface DependencySpec {
18
19
  type: DependencyType;
19
20
  version: string;
20
- resolved?: string;
21
21
  }
22
22
  export interface DependencyGraphJson {
23
23
  nodes: Array<{
@@ -28,7 +28,6 @@ export interface DependencyGraphJson {
28
28
  spec: DependencySpec;
29
29
  }>;
30
30
  dependents: Array<string>;
31
- publishable: boolean;
32
31
  }>;
33
32
  edges: Array<{
34
33
  from: string;
@@ -38,20 +37,32 @@ export interface DependencyGraphJson {
38
37
  export interface DependencyNode {
39
38
  name: string;
40
39
  version: string;
41
- repo?: LocalRepo;
42
40
  dependencies: Map<string, DependencySpec>;
43
41
  dependents: Set<string>;
44
- publishable: boolean;
42
+ }
43
+ /** Cycles and wildcard dependencies found by `DependencyGraph.analyze`. */
44
+ export interface DependencyAnalysis {
45
+ production_cycles: Array<Array<string>>;
46
+ dev_cycles: Array<Array<string>>;
47
+ wildcard_deps: Array<{
48
+ pkg: string;
49
+ dep: string;
50
+ version: string;
51
+ }>;
45
52
  }
46
53
  export declare class DependencyGraph {
47
54
  #private;
48
55
  nodes: Map<string, DependencyNode>;
49
56
  edges: Map<string, Set<string>>;
50
- constructor();
51
- init_from_repos(repos: Array<LocalRepo>): void;
57
+ /**
58
+ * Builds the graph from local repos.
59
+ *
60
+ * Two passes: first creates nodes, then builds edges (dependents).
61
+ * Prioritizes prod/peer deps over dev deps when the same package appears in
62
+ * multiple dependency types (the stronger constraint wins).
63
+ */
64
+ constructor(repos: Array<LocalRepo>);
52
65
  get_node(name: string): DependencyNode | undefined;
53
- get_dependents(name: string): Set<string>;
54
- get_dependencies(name: string): Map<string, DependencySpec>;
55
66
  /**
56
67
  * Computes topological sort order for dependency graph.
57
68
  *
@@ -79,45 +90,11 @@ export declare class DependencyGraph {
79
90
  production_cycles: Array<Array<string>>;
80
91
  dev_cycles: Array<Array<string>>;
81
92
  };
82
- toJSON(): DependencyGraphJson;
83
- }
84
- /**
85
- * Builder for creating and analyzing dependency graphs.
86
- */
87
- export declare class DependencyGraphBuilder {
88
- /**
89
- * Constructs dependency graph from local repos.
90
- *
91
- * Two-pass algorithm: first creates nodes, then builds edges (dependents).
92
- * Prioritizes prod/peer deps over dev deps when same package appears in
93
- * multiple dependency types (stronger constraint wins).
94
- *
95
- * @returns fully initialized dependency graph with all nodes and edges
96
- */
97
- build_from_repos(repos: Array<LocalRepo>): DependencyGraph;
98
93
  /**
99
- * Computes publishing order using topological sort with dev deps excluded.
100
- *
101
- * Excludes dev dependencies to break circular dev dependency cycles while
102
- * preserving production/peer dependency ordering. This allows patterns like
103
- * shared test utilities that depend on each other for development.
104
- *
105
- * @returns package names in safe publishing order (dependencies before dependents)
106
- * @throws {Error} if production/peer cycles detected (cannot be resolved by exclusion)
94
+ * Reports cycles by type and wildcard (`*`) dependency ranges.
95
+ * Tolerates cycles: it reports them rather than throwing.
107
96
  */
108
- compute_publishing_order(graph: DependencyGraph): Array<string>;
109
- analyze(graph: DependencyGraph): {
110
- production_cycles: Array<Array<string>>;
111
- dev_cycles: Array<Array<string>>;
112
- wildcard_deps: Array<{
113
- pkg: string;
114
- dep: string;
115
- version: string;
116
- }>;
117
- missing_peers: Array<{
118
- pkg: string;
119
- dep: string;
120
- }>;
121
- };
97
+ analyze(): DependencyAnalysis;
98
+ toJSON(): DependencyGraphJson;
122
99
  }
123
100
  //# sourceMappingURL=dependency_graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependency_graph.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/dependency_graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency_graph.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/dependency_graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,cAAc,CAAA;SAAE,CAAC,CAAC;QAC5D,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KAC1B,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IAClC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,aAAa,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,qBAAa,eAAe;;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAa;IAE5C;;;;;;OAMG;gBACS,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IA4CnC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIlD;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,WAAW,UAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IAiBpD;;;;;;;;;;OAUG;IACH,qBAAqB,IAAI;QACxB,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;KACjC;IAMD;;;OAGG;IACH,OAAO,IAAI,kBAAkB;IAyD7B,MAAM,IAAI,mBAAmB;CAoB7B"}