@fuzdev/fuz_gitops 0.78.1 → 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 (179) hide show
  1. package/README.md +78 -24
  2. package/dist/ModulesDetail.svelte +15 -22
  3. package/dist/ModulesDetail.svelte.d.ts.map +1 -1
  4. package/dist/ModulesNav.svelte +4 -1
  5. package/dist/ModulesPage.svelte +1 -3
  6. package/dist/ModulesPage.svelte.d.ts.map +1 -1
  7. package/dist/PageHeader.svelte +2 -2
  8. package/dist/PageHeader.svelte.d.ts +0 -3
  9. package/dist/PageHeader.svelte.d.ts.map +1 -1
  10. package/dist/PullRequestsDetail.svelte +10 -9
  11. package/dist/PullRequestsDetail.svelte.d.ts.map +1 -1
  12. package/dist/PullRequestsPage.svelte +1 -3
  13. package/dist/PullRequestsPage.svelte.d.ts.map +1 -1
  14. package/dist/ReposTable.svelte +27 -48
  15. package/dist/ReposTable.svelte.d.ts.map +1 -1
  16. package/dist/ReposTree.svelte +5 -19
  17. package/dist/ReposTree.svelte.d.ts.map +1 -1
  18. package/dist/ReposTreeNav.svelte +5 -7
  19. package/dist/ReposTreeNav.svelte.d.ts.map +1 -1
  20. package/dist/TablePage.svelte +1 -3
  21. package/dist/TablePage.svelte.d.ts.map +1 -1
  22. package/dist/TreeItemPage.svelte +1 -3
  23. package/dist/TreeItemPage.svelte.d.ts.map +1 -1
  24. package/dist/TreePage.svelte +1 -3
  25. package/dist/TreePage.svelte.d.ts.map +1 -1
  26. package/dist/ci_reconcile.d.ts +6 -10
  27. package/dist/ci_reconcile.d.ts.map +1 -1
  28. package/dist/ci_reconcile.js +6 -8
  29. package/dist/dependency_graph.d.ts +26 -49
  30. package/dist/dependency_graph.d.ts.map +1 -1
  31. package/dist/dependency_graph.js +37 -80
  32. package/dist/dependency_updater.d.ts +1 -1
  33. package/dist/dependency_updater.d.ts.map +1 -1
  34. package/dist/dependency_updater.js +6 -1
  35. package/dist/fetch_repo_data.d.ts +34 -8
  36. package/dist/fetch_repo_data.d.ts.map +1 -1
  37. package/dist/fetch_repo_data.js +44 -22
  38. package/dist/fs_fetch_value_cache.d.ts +1 -1
  39. package/dist/fs_fetch_value_cache.js +1 -1
  40. package/dist/git_operations.d.ts +6 -49
  41. package/dist/git_operations.d.ts.map +1 -1
  42. package/dist/git_operations.js +13 -126
  43. package/dist/github.d.ts +17 -2
  44. package/dist/github.d.ts.map +1 -1
  45. package/dist/github.js +15 -6
  46. package/dist/github_helpers.d.ts.map +1 -1
  47. package/dist/github_helpers.js +3 -11
  48. package/dist/gitops_analyze.task.d.ts +24 -2
  49. package/dist/gitops_analyze.task.d.ts.map +1 -1
  50. package/dist/gitops_analyze.task.js +43 -30
  51. package/dist/gitops_config.d.ts +34 -79
  52. package/dist/gitops_config.d.ts.map +1 -1
  53. package/dist/gitops_config.js +76 -53
  54. package/dist/gitops_constants.d.ts +6 -4
  55. package/dist/gitops_constants.d.ts.map +1 -1
  56. package/dist/gitops_constants.js +6 -4
  57. package/dist/gitops_plan.task.d.ts +29 -3
  58. package/dist/gitops_plan.task.d.ts.map +1 -1
  59. package/dist/gitops_plan.task.js +80 -58
  60. package/dist/gitops_publish.task.d.ts +62 -2
  61. package/dist/gitops_publish.task.d.ts.map +1 -1
  62. package/dist/gitops_publish.task.js +187 -102
  63. package/dist/gitops_run.task.d.ts +74 -0
  64. package/dist/gitops_run.task.d.ts.map +1 -1
  65. package/dist/gitops_run.task.js +174 -160
  66. package/dist/gitops_sync.task.d.ts +65 -3
  67. package/dist/gitops_sync.task.d.ts.map +1 -1
  68. package/dist/gitops_sync.task.js +154 -30
  69. package/dist/gitops_task_helpers.d.ts +86 -59
  70. package/dist/gitops_task_helpers.d.ts.map +1 -1
  71. package/dist/gitops_task_helpers.js +120 -79
  72. package/dist/gitops_validate.task.d.ts +1 -2
  73. package/dist/gitops_validate.task.d.ts.map +1 -1
  74. package/dist/gitops_validate.task.js +15 -22
  75. package/dist/graph_validation.d.ts +16 -27
  76. package/dist/graph_validation.d.ts.map +1 -1
  77. package/dist/graph_validation.js +23 -64
  78. package/dist/local_repo.d.ts +50 -62
  79. package/dist/local_repo.d.ts.map +1 -1
  80. package/dist/local_repo.js +80 -193
  81. package/dist/log_helpers.d.ts +8 -8
  82. package/dist/log_helpers.d.ts.map +1 -1
  83. package/dist/multi_repo_publisher.d.ts +10 -0
  84. package/dist/multi_repo_publisher.d.ts.map +1 -1
  85. package/dist/multi_repo_publisher.js +115 -51
  86. package/dist/npm_registry.d.ts +23 -19
  87. package/dist/npm_registry.d.ts.map +1 -1
  88. package/dist/npm_registry.js +20 -47
  89. package/dist/operations.d.ts +75 -180
  90. package/dist/operations.d.ts.map +1 -1
  91. package/dist/operations.js +15 -7
  92. package/dist/operations_defaults.d.ts +17 -2
  93. package/dist/operations_defaults.d.ts.map +1 -1
  94. package/dist/operations_defaults.js +104 -121
  95. package/dist/output_helpers.d.ts +36 -0
  96. package/dist/output_helpers.d.ts.map +1 -1
  97. package/dist/output_helpers.js +37 -3
  98. package/dist/preflight_checks.d.ts +20 -27
  99. package/dist/preflight_checks.d.ts.map +1 -1
  100. package/dist/preflight_checks.js +37 -126
  101. package/dist/publish_steps.d.ts +2 -4
  102. package/dist/publish_steps.d.ts.map +1 -1
  103. package/dist/publish_steps.js +2 -6
  104. package/dist/publishing_event.d.ts +2 -8
  105. package/dist/publishing_event.d.ts.map +1 -1
  106. package/dist/publishing_event.js +5 -4
  107. package/dist/publishing_event_handler.d.ts +10 -8
  108. package/dist/publishing_event_handler.d.ts.map +1 -1
  109. package/dist/publishing_event_handler.js +14 -12
  110. package/dist/publishing_plan.d.ts +16 -1
  111. package/dist/publishing_plan.d.ts.map +1 -1
  112. package/dist/publishing_plan.js +328 -250
  113. package/dist/publishing_plan_logging.d.ts +1 -1
  114. package/dist/publishing_plan_logging.d.ts.map +1 -1
  115. package/dist/publishing_plan_logging.js +21 -14
  116. package/dist/repo.svelte.d.ts +7 -0
  117. package/dist/repo.svelte.d.ts.map +1 -1
  118. package/dist/repo.svelte.js +3 -0
  119. package/dist/repo_readiness.d.ts +210 -0
  120. package/dist/repo_readiness.d.ts.map +1 -0
  121. package/dist/repo_readiness.js +516 -0
  122. package/dist/repos_status.d.ts +3340 -0
  123. package/dist/repos_status.d.ts.map +1 -0
  124. package/dist/repos_status.js +555 -0
  125. package/dist/repos_status_load.d.ts +65 -0
  126. package/dist/repos_status_load.d.ts.map +1 -0
  127. package/dist/repos_status_load.js +131 -0
  128. package/package.json +7 -27
  129. package/src/lib/ci_reconcile.ts +7 -11
  130. package/src/lib/dependency_graph.ts +45 -97
  131. package/src/lib/dependency_updater.ts +7 -1
  132. package/src/lib/fetch_repo_data.ts +66 -29
  133. package/src/lib/fs_fetch_value_cache.ts +1 -1
  134. package/src/lib/git_operations.ts +15 -187
  135. package/src/lib/github.ts +20 -8
  136. package/src/lib/github_helpers.ts +5 -12
  137. package/src/lib/gitops_analyze.task.ts +79 -41
  138. package/src/lib/gitops_config.ts +88 -137
  139. package/src/lib/gitops_constants.ts +6 -4
  140. package/src/lib/gitops_plan.task.ts +113 -61
  141. package/src/lib/gitops_publish.task.ts +255 -122
  142. package/src/lib/gitops_run.task.ts +250 -178
  143. package/src/lib/gitops_sync.task.ts +208 -33
  144. package/src/lib/gitops_task_helpers.ts +166 -110
  145. package/src/lib/gitops_validate.task.ts +17 -27
  146. package/src/lib/graph_validation.ts +25 -86
  147. package/src/lib/local_repo.ts +109 -316
  148. package/src/lib/log_helpers.ts +8 -18
  149. package/src/lib/multi_repo_publisher.ts +138 -53
  150. package/src/lib/npm_registry.ts +37 -62
  151. package/src/lib/operations.ts +78 -150
  152. package/src/lib/operations_defaults.ts +108 -154
  153. package/src/lib/output_helpers.ts +55 -3
  154. package/src/lib/preflight_checks.ts +47 -183
  155. package/src/lib/publish_steps.ts +15 -13
  156. package/src/lib/publishing_event.ts +5 -4
  157. package/src/lib/publishing_event_handler.ts +18 -16
  158. package/src/lib/publishing_plan.ts +451 -287
  159. package/src/lib/publishing_plan_logging.ts +32 -23
  160. package/src/lib/repo.svelte.ts +8 -0
  161. package/src/lib/repo_readiness.ts +647 -0
  162. package/src/lib/repos_status.ts +671 -0
  163. package/src/lib/repos_status_load.ts +173 -0
  164. package/dist/config_reconcile.d.ts +0 -46
  165. package/dist/config_reconcile.d.ts.map +0 -1
  166. package/dist/config_reconcile.js +0 -64
  167. package/dist/paths.d.ts +0 -7
  168. package/dist/paths.d.ts.map +0 -1
  169. package/dist/paths.js +0 -6
  170. package/dist/repo_ops.d.ts +0 -59
  171. package/dist/repo_ops.d.ts.map +0 -1
  172. package/dist/repo_ops.js +0 -170
  173. package/dist/resolved_gitops_config.d.ts +0 -9
  174. package/dist/resolved_gitops_config.d.ts.map +0 -1
  175. package/dist/resolved_gitops_config.js +0 -12
  176. package/src/lib/config_reconcile.ts +0 -98
  177. package/src/lib/paths.ts +0 -6
  178. package/src/lib/repo_ops.ts +0 -216
  179. package/src/lib/resolved_gitops_config.ts +0 -27
package/README.md CHANGED
@@ -24,18 +24,21 @@ With fuz_gitops you can:
24
24
  ## Scope
25
25
 
26
26
  fuz_gitops runs **deterministic, config-driven operations over a declared set
27
- of repos** — no LLM in the loop, the repo set comes from `gitops.config.ts`,
28
- and the unit of work is the collection rather than any one repo. Publishing is
29
- its flagship capability, not its whole identity.
30
-
31
- Deliberately out of scope: single-repo work (that's [gro](https://github.com/fuzdev/gro)),
27
+ of repos** — no LLM in the loop, and the repo set comes from a declared list
28
+ (a `repos.toml` registry, and a `gitops.config.ts` naming a subset of its keys). Publishing is its flagship capability, not its whole
29
+ identity. The Rust `repos` tool in this repo (`crates/fuz_repos`) reports
30
+ every declared repo's git state (`repos status`), syncs them (`repos sync`),
31
+ and is the gateway agents push through (`repos push`); the package is
32
+ renaming to `fuz_repos`.
33
+
34
+ Deliberately out of scope: single-repo build work (that's [gro](https://github.com/fuzdev/gro)),
32
35
  work whose resolution differs per repo and needs judgment, machine and server
33
36
  state, and **secrets** — fuz_gitops never stores, transports, or reads secret
34
37
  material as data, including env-file contents. Its own GitHub API token
35
38
  (noted below) is the one credential it uses, to authenticate itself.
36
39
 
37
- See [CLAUDE.md](CLAUDE.md#scope-and-boundaries) for the capability tiers, the
38
- known gaps, and the CLI direction.
40
+ See [CLAUDE.md](CLAUDE.md#scope-and-boundaries) for the capability tiers, what
41
+ `repos` never does, and the TS/Rust split.
39
42
 
40
43
  ## Usage
41
44
 
@@ -43,11 +46,25 @@ known gaps, and the CLI direction.
43
46
  npm i -D @fuzdev/fuz_gitops
44
47
  ```
45
48
 
46
- - configure [`gitops.config.ts`](/gitops.config.ts)
49
+ - install the `repos` binary, which the tasks read repo state from — it isn't in the npm
50
+ package: in a checkout of this repo, `cargo install --path crates/fuz_repos --locked`
51
+ - configure [`gitops.config.ts`](/gitops.config.ts) as a list of `repos.toml` registry keys —
52
+ each repo's dir, URL, branch, visibility, and CI come from the registry:
53
+
54
+ ```ts
55
+ import type { GitopsConfig } from '@fuzdev/fuz_gitops/gitops_config.ts';
56
+
57
+ const config: GitopsConfig = { repos: ['fuz_util', 'gro', 'fuz_ui'] };
58
+
59
+ export default config;
60
+ ```
61
+
62
+ The tasks find the registry the way `repos` does, walking up from the cwd, or take
63
+ `--registry <path>`; a repo the registry has but the disk lacks is cloned by `repos sync <key>`.
47
64
  - fuz_gitops calls the GitHub API using the environment variable `SECRET_GITHUB_API_TOKEN` for authorization,
48
65
  which is a [classic GitHub token](https://github.com/settings/tokens)
49
66
  (with "public access" for public repos, no options selected)
50
- or a [fine-grainted GitHub token (beta)](https://github.com/settings/tokens?type=beta)
67
+ or a [fine-grained GitHub token (beta)](https://github.com/settings/tokens?type=beta)
51
68
  (with `"Public Repositories (read-only)"` selected)
52
69
  in either `process.env`, a project-local `.env`, or the parent directory at `../.env`
53
70
  (currently optional to read public repos, but it's recommended regardless,
@@ -69,18 +86,21 @@ npm i -D @fuzdev/fuz_gitops
69
86
 
70
87
  // gitops_validate.task.ts
71
88
  export * from '@fuzdev/fuz_gitops/gitops_validate.task.ts';
89
+
90
+ // gitops_run.task.ts
91
+ export * from '@fuzdev/fuz_gitops/gitops_run.task.ts';
72
92
  ```
73
93
 
74
- - run `gro gitops_sync` to sync repos and update the local data
94
+ - run `gro gitops_sync` to generate the dashboard's data from the repos
75
95
 
76
96
  ## Architecture
77
97
 
78
98
  ```
79
- gitops.config.ts → local repos → GitHub API → repos.ts → UI components
99
+ gitops.config.ts (registry keys) → repos status --json → local repos → GitHub API → repos.ts → UI components
80
100
  ```
81
101
 
82
- - **Operations pattern**: Dependency injection for all side effects (git, npm, fs)
83
- - **Fixture testing**: Generated git repos for isolated tests
102
+ - **Operations pattern**: Dependency injection for all side effects (git, npm, fs, `repos`)
103
+ - **Fixture testing**: In-memory fixture repos with expected publishing outcomes
84
104
  - **Changeset-driven**: Automatic version bumps and dependency updates
85
105
 
86
106
  See [CLAUDE.md](CLAUDE.md#architecture) for detailed documentation.
@@ -100,39 +120,72 @@ gro gitops_run "git status" --format json # JSON output for scripting
100
120
  - Parallel execution with configurable concurrency (default: 5)
101
121
  - Continue-on-error behavior (shows all results)
102
122
  - Structured output formats (text or JSON)
103
- - Uses lightweight repo path resolution (no full sync needed)
123
+ - Uses lightweight repo path resolution through `repos status`; a
124
+ configured repo that's missing fails the run, naming it
104
125
 
105
- ### Syncing repo metadata
126
+ ### Generating the dashboard's data
106
127
 
107
128
  ```bash
108
- gro gitops_sync # sync repos and generate UI data
109
- gro gitops_sync --download # clone missing repos first
129
+ gro gitops_sync # fetch, check each repo, then write repos.json + repos.ts
130
+ gro gitops_sync --check # the readiness report alone: no fetch, no token, nothing written
131
+ gro gitops_sync --allow_dirty # read repos off their branch, dirty, or mid-operation as they sit, warning instead
110
132
  ```
111
133
 
134
+ It reads each repo as it sits and never moves one (`repos sync` does), so it
135
+ refuses a repo off its registry branch, dirty, or mid-operation — the site
136
+ would show that tree's modules beside origin's CI — and warns on one behind
137
+ origin or missing its `node_modules`.
138
+
112
139
  ### Diagnostic commands (read-only)
113
140
 
114
141
  ```bash
115
- gro gitops_validate # run all validation checks (analyze + plan + dry run)
142
+ gro gitops_validate # run all validation checks (analyze + plan + dry run + CI reconcile)
116
143
  gro gitops_analyze # analyze dependency graph and detect cycles
117
144
  gro gitops_plan # generate publishing plan showing version changes and cascades
118
- gro gitops_publish # simulate publishing without side effects (dry run default)
145
+ gro gitops_publish # simulate publishing, writing nothing in git (dry run default)
119
146
  gro gitops_publish --preview # show the ordered side-effects a --wetrun would perform
120
147
  ```
121
148
 
122
149
  These read each repo's working tree exactly as it sits on disk — no branch
123
150
  switching, pulling, or installing — so they're safe to run with feature
124
- branches checked out and uncommitted changes. Pass `--sync` to refresh repos
125
- (switch to the configured branch, pull, install) before running, or run
126
- `gro gitops_sync` first.
151
+ branches checked out and uncommitted changes. Each prints the repos that
152
+ aren't at rest (off their registry branch, dirty, mid-rebase, or not in sync
153
+ with origin as of the last fetch); run `repos sync` first to read them at
154
+ rest.
127
155
 
128
156
  ### Publishing packages
129
157
 
130
158
  ```bash
131
- gro gitops_publish --wetrun # actually publish all repos with changesets
159
+ gro gitops_publish --wetrun # publish every package the plan publishes, in dependency order
132
160
  gro gitops_publish --wetrun --no-plan # skip plan confirmation
133
161
  ```
134
162
 
135
- **Note:** If publishing fails, simply re-run the same command. Already-published packages are automatically skipped (changesets consumed), failed packages retried naturally.
163
+ Before it shows the plan for confirmation, a real publish fetches every npm repo
164
+ (`repos status --fetch`) and refuses unless each is on its registry branch,
165
+ clean, idle, and in sync with origin or ahead of it, with no other live
166
+ session in its checkout — naming each problem and its fix. It moves nothing to
167
+ get there, and re-checks each repo the same way right before publishing it.
168
+
169
+ **Note:** If publishing fails, simply re-run the same command.
170
+ Already-published packages are automatically skipped (changesets consumed),
171
+ failed packages retried naturally (see
172
+ [docs/publishing.md](docs/publishing.md#readiness) for what the run leaves
173
+ unpushed).
174
+
175
+ ### The `repos` tool
176
+
177
+ A Rust CLI over the repos a `repos.toml` registry declares. It moves refs it
178
+ didn't author — fetch, fast-forward, clone, push — and never commits, rebases,
179
+ merges anything but a fast-forward, force-pushes, or pushes tags. It needs git
180
+ 2.44 or newer, and Linux for its detection of live Claude Code sessions.
181
+
182
+ ```bash
183
+ cargo install --path crates/fuz_repos --locked # install the `repos` binary
184
+ repos status # git state of every entry, from local refs
185
+ repos status --fetch # fetch from origin first (remote-tracking refs only)
186
+ repos sync # fetch, then fast-forward, push, and clone what's safe
187
+ repos push # push the branch checked out here, as a fast-forward
188
+ ```
136
189
 
137
190
  **Documentation:**
138
191
 
@@ -141,6 +194,7 @@ gro gitops_publish --wetrun --no-plan # skip plan confirmation
141
194
  semantics, examples
142
195
  - ./docs/troubleshooting.md - Common errors and
143
196
  debugging tips
197
+ - ./docs/repos.md - The `repos` command reference
144
198
 
145
199
  Getting started as a dev? Start with [Gro](https://github.com/fuzdev/gro)
146
200
  and the [Fuz template](https://github.com/fuzdev/fuz_template).
@@ -20,16 +20,16 @@
20
20
 
21
21
  // Get modules from each repo's source_json
22
22
  const repos_modules = $derived(
23
- repos
24
- .filter((repo): repo is Repo & { source_json: { modules: Array<unknown> } } =>
25
- Boolean(repo.source_json.modules?.length)
26
- )
27
- .map((repo) => ({
28
- repo,
29
- modules: repo.source_json.modules
30
- }))
23
+ repos.flatMap((repo) => {
24
+ const { modules } = repo.source_json;
25
+ return modules?.length ? [{ repo, modules }] : [];
26
+ })
31
27
  );
32
28
 
29
+ // TODO this is a hack that could be fixed by adding an optional `base: './'` that defaults to './src/lib/'
30
+ const to_module_url = (repo: Repo, path: string): string =>
31
+ `${ensure_end(repo.repo_url, '/')}blob/${repo.branch}/${path === 'package.json' ? '' : 'src/lib/'}${path}`;
32
+
33
33
  // TODO add favicon (from library? gro?)
34
34
  </script>
35
35
 
@@ -59,20 +59,13 @@
59
59
  class:json={path.endsWith('.json')}
60
60
  >
61
61
  <div class="module-file">
62
- {#if repo.repo_url}
63
- <div class="chip row">
64
- <!-- TODO this is a hack that could be fixed by adding an optional `base: './'` that defaults to './src/lib/' -->
65
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
66
- href="{ensure_end(repo.repo_url, '/')}blob/main/{path === 'package.json'
67
- ? ''
68
- : 'src/lib/'}{path}"
69
- >
70
- {path}
71
- </a>
72
- </div>
73
- {:else}
74
- <span class="chip">{path}</span>
75
- {/if}
62
+ <div class="chip row">
63
+ <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
64
+ href={to_module_url(repo, path)}
65
+ >
66
+ {path}
67
+ </a>
68
+ </div>
76
69
  </div>
77
70
  {#if declarations?.length}
78
71
  <ul class="declarations unstyled">
@@ -1 +1 @@
1
- {"version":3,"file":"ModulesDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ModulesDetail.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AA2FH,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ModulesDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ModulesDetail.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAoFH,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -22,7 +22,10 @@
22
22
  <ul class="unstyled">
23
23
  {#each repos_modules as pkg_modules (pkg_modules)}
24
24
  <li role="none">
25
- <a href="#{pkg_modules.repo.name}" class:selected={pkg_modules.repo.name === page.url.hash}>
25
+ <a
26
+ href="#{pkg_modules.repo.name}"
27
+ class:selected={`#${pkg_modules.repo.name}` === page.url.hash}
28
+ >
26
29
  {pkg_modules.repo.name}
27
30
  </a>
28
31
  </li>
@@ -32,9 +32,7 @@
32
32
  {/snippet}
33
33
  </ModulesDetail>
34
34
  </section>
35
- <section class="box mb_xl7">
36
- <PageFooter />
37
- </section>
35
+ <PageFooter />
38
36
  </main>
39
37
 
40
38
  <style>
@@ -1 +1 @@
1
- {"version":3,"file":"ModulesPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ModulesPage.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,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ModulesPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ModulesPage.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;AAuCH,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -11,7 +11,7 @@
11
11
  nav,
12
12
  children
13
13
  }: {
14
- repo: { pkg_json: PkgJson } | { url: string; pkg_json: null };
14
+ repo: { pkg_json: PkgJson };
15
15
  nav_attrs?: SvelteHTMLElements['nav'];
16
16
  attrs?: SvelteHTMLElements['header'];
17
17
  nav?: Snippet;
@@ -24,7 +24,7 @@
24
24
  {#if nav}
25
25
  {@render nav()}
26
26
  {:else}
27
- <nav {...nav_attrs}><Breadcrumb>{repo.pkg_json?.glyph}</Breadcrumb></nav>
27
+ <nav {...nav_attrs}><Breadcrumb>{repo.pkg_json.glyph}</Breadcrumb></nav>
28
28
  {/if}
29
29
  </header>
30
30
 
@@ -4,9 +4,6 @@ import type { SvelteHTMLElements } from 'svelte/elements';
4
4
  type $$ComponentProps = {
5
5
  repo: {
6
6
  pkg_json: PkgJson;
7
- } | {
8
- url: string;
9
- pkg_json: null;
10
7
  };
11
8
  nav_attrs?: SvelteHTMLElements['nav'];
12
9
  attrs?: SvelteHTMLElements['header'];
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PageHeader.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAC9D,SAAS,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA6BH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"PageHeader.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PageHeader.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,gBAAgB,GAAI;IACxB,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA6BH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { resolve } from '$app/paths';
3
3
 
4
- import { to_pull_requests, type FilterPullRequest } from './github_helpers.js';
4
+ import { to_pull_requests, to_pull_url, type FilterPullRequest } from './github_helpers.js';
5
5
  import type { Repo } from './repo.svelte.js';
6
6
 
7
7
  const {
@@ -26,24 +26,25 @@
26
26
  </tr>
27
27
  </thead>
28
28
  <tbody>
29
- {#each pull_requests as pull_request (pull_request.pull_request.number)}
29
+ <!-- PR numbers repeat across repos, so the key pairs them with the repo -->
30
+ {#each pull_requests as { repo, pull_request } (`${repo.name}#${pull_request.number}`)}
30
31
  <tr>
31
32
  <td>
32
- <a href={resolve(`/tree/${pull_request.repo.repo_name}`)}>
33
- {pull_request.repo.repo_name}{#if pull_request.repo.package_json.glyph}
34
- &nbsp;{pull_request.repo.package_json.glyph}
33
+ <a href={resolve(`/tree/${repo.repo_name}`)}>
34
+ {repo.repo_name}{#if repo.package_json.glyph}
35
+ &nbsp;{repo.package_json.glyph}
35
36
  {/if}
36
37
  </a>
37
38
  </td>
38
39
  <td>
39
40
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
40
- href="{pull_request.repo.repo_url}/pull/{pull_request.pull_request.number}"
41
- title={pull_request.pull_request.title}
41
+ href={to_pull_url(repo.repo_url, pull_request)}
42
+ title={pull_request.title}
42
43
  >
43
- #{pull_request.pull_request.number}
44
+ #{pull_request.number}
44
45
  </a>
45
46
  </td>
46
- <td><div>{pull_request.pull_request.title}</div></td>
47
+ <td><div>{pull_request.title}</div></td>
47
48
  </tr>
48
49
  {/each}
49
50
  </tbody>
@@ -1 +1 @@
1
- {"version":3,"file":"PullRequestsDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PullRequestsDetail.svelte"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD,CAAC;AAmDH,QAAA,MAAM,kBAAkB,sDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PullRequestsDetail.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PullRequestsDetail.svelte"],"names":[],"mappings":"AAKA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,gBAAgB,GAAI;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD,CAAC;AAoDH,QAAA,MAAM,kBAAkB,sDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -27,9 +27,7 @@
27
27
  <section>
28
28
  <PullRequestsDetail {repos} {filter_pull_request} />
29
29
  </section>
30
- <section class="box mb_xl7">
31
- <PageFooter />
32
- </section>
30
+ <PageFooter />
33
31
  </main>
34
32
 
35
33
  <style>
@@ -1 +1 @@
1
- {"version":3,"file":"PullRequestsPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PullRequestsPage.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,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,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD,CAAC;AAmCH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"PullRequestsPage.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/PullRequestsPage.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,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,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD,CAAC;AAiCH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -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];
40
+ return [dep, repo?.package_json.version ?? null];
42
41
  })
43
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>
@@ -71,12 +63,13 @@
71
63
  <tbody>
72
64
  {#each repos as repo (repo.name)}
73
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,27 +91,16 @@
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
- >
114
- {#if !check_runs_completed}🟡{:else}⚠️{/if}
115
- </a>
116
- {/if}
117
- {: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)}
118
97
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
119
- href={repo.repo_url}
98
+ href="{repo.repo_url}/commits/{repo.branch}"
99
+ title={!check_runs_completed
100
+ ? `status: ${check_runs.status}`
101
+ : `CI failed: ${check_runs.conclusion}`}
120
102
  >
121
- {format_url(repo.repo_url)}
103
+ {#if !check_runs_completed}🟡{:else}⚠️{/if}
122
104
  </a>
123
105
  {/if}
124
106
  </div>
@@ -156,23 +138,20 @@
156
138
  </td>
157
139
  {/each}
158
140
  <td>
159
- {#if repo.repo_url}
160
- {@const pull_requests = lookup_pull_requests(repos, repo)}
161
- <!-- TODO show something like `and N more` with a link to a dialog list -->
162
- <div class="row">
163
- {#if pull_requests}
164
- {#each pull_requests as pull (pull)}
165
- <!-- eslint-disable-next-line svelte/no-navigation-without-resolve --><a
166
- href={to_pull_url(repo.repo_url, pull)}
167
- class="chip"
168
- title={pull.title}
169
- >
170
- #{pull.number}
171
- </a>
172
- {/each}
173
- {/if}
174
- </div>
175
- {/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>
176
155
  </td>
177
156
  </tr>
178
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,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;AAkKH,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,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import LibrarySummary from '@fuzdev/fuz_ui/LibrarySummary.svelte';
3
3
  import { resolve } from '$app/paths';
4
- import { format_url } from '@fuzdev/fuz_util/url.ts';
5
4
  import type { Snippet } from 'svelte';
6
5
 
7
6
  import type { Repo } from './repo.svelte.js';
@@ -39,24 +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}
54
- >
55
- {format_url(repo.repo_url)}
56
- </a>
57
- </p>
58
- </div>
59
- {/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>
60
46
  </li>
61
47
  {/each}
62
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,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;AA2DH,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"}
@@ -20,13 +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}
24
- <a class="menuitem" class:selected href={resolve(`/tree/${repo.repo_name}`)}>
25
- <div class="ellipsis">
26
- {repo.repo_name}{#if repo.package_json.glyph}&nbsp;{repo.package_json.glyph}{/if}
27
- </div>
28
- </a>
29
- {/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>
30
28
  </li>
31
29
  {/each}
32
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,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;AAoCH,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"}
@@ -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,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;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"}
@@ -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,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;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"}
@@ -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,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;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"}