@grimoire-rs/indexer 0.3.3 → 0.4.1
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.
- package/README.md +220 -9
- package/dist/ci.d.ts +6 -1
- package/dist/ci.d.ts.map +1 -1
- package/dist/ci.js +32 -1
- package/dist/ci.js.map +1 -1
- package/dist/cli/build.d.ts.map +1 -1
- package/dist/cli/build.js +3 -1
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/ci.d.ts.map +1 -1
- package/dist/cli/ci.js +5 -1
- package/dist/cli/ci.js.map +1 -1
- package/dist/cli/enrich.d.ts +1 -0
- package/dist/cli/enrich.d.ts.map +1 -1
- package/dist/cli/enrich.js +38 -0
- package/dist/cli/enrich.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +17 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +9 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/ratings.d.ts +3 -0
- package/dist/cli/ratings.d.ts.map +1 -0
- package/dist/cli/ratings.js +160 -0
- package/dist/cli/ratings.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +47 -1
- package/dist/config.js.map +1 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +13 -0
- package/dist/data/index.js.map +1 -1
- package/dist/enrich/checkpoint.d.ts +53 -0
- package/dist/enrich/checkpoint.d.ts.map +1 -0
- package/dist/enrich/checkpoint.js +296 -0
- package/dist/enrich/checkpoint.js.map +1 -0
- package/dist/enrich/index.d.ts +14 -0
- package/dist/enrich/index.d.ts.map +1 -1
- package/dist/enrich/index.js +77 -4
- package/dist/enrich/index.js.map +1 -1
- package/dist/ratings/budget.d.ts +16 -0
- package/dist/ratings/budget.d.ts.map +1 -0
- package/dist/ratings/budget.js +7 -0
- package/dist/ratings/budget.js.map +1 -0
- package/dist/ratings/config.d.ts +56 -0
- package/dist/ratings/config.d.ts.map +1 -0
- package/dist/ratings/config.js +86 -0
- package/dist/ratings/config.js.map +1 -0
- package/dist/ratings/marker.d.ts +105 -0
- package/dist/ratings/marker.d.ts.map +1 -0
- package/dist/ratings/marker.js +141 -0
- package/dist/ratings/marker.js.map +1 -0
- package/dist/ratings/paging.d.ts +16 -0
- package/dist/ratings/paging.d.ts.map +1 -0
- package/dist/ratings/paging.js +36 -0
- package/dist/ratings/paging.js.map +1 -0
- package/dist/ratings/provider.d.ts +100 -0
- package/dist/ratings/provider.d.ts.map +1 -0
- package/dist/ratings/provider.js +203 -0
- package/dist/ratings/provider.js.map +1 -0
- package/dist/ratings/provider_github.d.ts +3 -0
- package/dist/ratings/provider_github.d.ts.map +1 -0
- package/dist/ratings/provider_github.js +135 -0
- package/dist/ratings/provider_github.js.map +1 -0
- package/dist/ratings/provider_gitlab.d.ts +3 -0
- package/dist/ratings/provider_gitlab.d.ts.map +1 -0
- package/dist/ratings/provider_gitlab.js +153 -0
- package/dist/ratings/provider_gitlab.js.map +1 -0
- package/dist/ratings/provider_memory.d.ts +28 -0
- package/dist/ratings/provider_memory.d.ts.map +1 -0
- package/dist/ratings/provider_memory.js +49 -0
- package/dist/ratings/provider_memory.js.map +1 -0
- package/dist/ratings/reconcile.d.ts +47 -0
- package/dist/ratings/reconcile.d.ts.map +1 -0
- package/dist/ratings/reconcile.js +133 -0
- package/dist/ratings/reconcile.js.map +1 -0
- package/dist/ratings/seed.d.ts +60 -0
- package/dist/ratings/seed.d.ts.map +1 -0
- package/dist/ratings/seed.js +132 -0
- package/dist/ratings/seed.js.map +1 -0
- package/dist/renderer/astro/components/Catalog.d.ts +2 -0
- package/dist/renderer/astro/components/Catalog.js +65 -16
- package/dist/renderer/astro/components/Catalog.tsx +119 -26
- package/dist/renderer/astro/components/CommandField.astro +1 -0
- package/dist/renderer/astro/components/VersionMenu.astro +31 -23
- package/dist/renderer/astro/layouts/Base.astro +218 -263
- package/dist/renderer/astro/lib/catalog.d.ts +25 -0
- package/dist/renderer/astro/lib/catalog.js +46 -0
- package/dist/renderer/astro/lib/catalog.ts +49 -0
- package/dist/renderer/astro/pages/p/[...slug].astro +238 -85
- package/dist/renderer/astro/styles/tokens.css +157 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +101 -2
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/types.d.ts +41 -0
- package/dist/renderer/types.d.ts.map +1 -1
- package/dist/validate/adapters/http.d.ts +29 -1
- package/dist/validate/adapters/http.d.ts.map +1 -1
- package/dist/validate/adapters/http.js +17 -2
- package/dist/validate/adapters/http.js.map +1 -1
- package/package.json +1 -1
- package/templates/ci/github-enrich.yml +9 -1
- package/templates/ci/github-pages.yml +11 -5
- package/templates/ci/github-ratings-seed.yml +88 -0
- package/templates/ci/github-ratings.yml +51 -0
- package/templates/ci/gitlab-ci.yml +3 -3
- package/templates/ci/gitlab-enrich.sh +10 -1
- package/templates/ci/gitlab-ratings-seed.sh +83 -0
- package/templates/ci/gitlab-ratings.yml +37 -0
- package/templates/gitignore +8 -0
package/README.md
CHANGED
|
@@ -12,8 +12,12 @@ servers, and bundles available in one or more OCI registries.
|
|
|
12
12
|
- `grim-indexer dev` — serve the index locally, through the same renderer
|
|
13
13
|
`build` uses. The review loop for an entry or a branding change.
|
|
14
14
|
- `grim-indexer enrich` — refresh `enrich/**` from the registry: READMEs,
|
|
15
|
-
changelogs, logos, versions
|
|
16
|
-
|
|
15
|
+
changelogs, logos, versions, tag lists, and the curated annotations grim
|
|
16
|
+
reports (`revision`, `authors`, `vendor`, `url`, `documentation`,
|
|
17
|
+
`compatibility` and the repository's `support` channels). The only step
|
|
18
|
+
that goes online, and the only one that needs `grim` on `PATH`.
|
|
19
|
+
`--seed` restores the sidecars from `<site>/enrich.json` first, so a
|
|
20
|
+
pipeline that commits nothing still only downloads what moved.
|
|
17
21
|
- `grim-indexer build` — render `index/**` into a static site.
|
|
18
22
|
- `grim-indexer validate` — CI gate for contribution PRs/MRs against an
|
|
19
23
|
index repo.
|
|
@@ -75,6 +79,168 @@ export default defineConfig({
|
|
|
75
79
|
});
|
|
76
80
|
```
|
|
77
81
|
|
|
82
|
+
## The `stats.json` sidecar
|
|
83
|
+
|
|
84
|
+
An index may publish `stats.json` beside `all.json`. It carries per-artifact
|
|
85
|
+
signals that are not part of a package's own metadata — today two: `rating`,
|
|
86
|
+
the upvote count on the forge thread that owns that artifact, and `updated`,
|
|
87
|
+
when that artifact last moved. It is the read contract every client shares:
|
|
88
|
+
`grim`, this renderer, and the VS Code extension all read the same file, and
|
|
89
|
+
none of them writes it.
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"schema_version": 1,
|
|
94
|
+
"generated_at": "2026-08-18T09:30:00Z",
|
|
95
|
+
"providers": { "rating": "github", "updated": "indexer" },
|
|
96
|
+
"entries": {
|
|
97
|
+
"ghcr.io/acme/code-review": {
|
|
98
|
+
"rating": {
|
|
99
|
+
"up": 12,
|
|
100
|
+
"target": "DIC_kwDOAbc123",
|
|
101
|
+
"url": "https://github.com/acme/index/discussions/42"
|
|
102
|
+
},
|
|
103
|
+
"updated": { "at": "2026-07-01T10:00:00+00:00" }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
| Key | Type | Meaning |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| `schema_version` | int | Monotonic. Currently `1`. |
|
|
112
|
+
| `generated_at` | string | RFC 3339, UTC. |
|
|
113
|
+
| `providers` | object | Which backend produced each signal, keyed by stat name. `providers.rating` is `"github"` or `"gitlab"`. |
|
|
114
|
+
| `entries` | object | Keyed by artifact ref, **exactly as that ref appears in `all.json`**. |
|
|
115
|
+
| `entries[ref]` | object | One key per signal. |
|
|
116
|
+
| `entries[ref].rating.up` | int | Upvotes. A ref with zero is omitted, never written as `0`. |
|
|
117
|
+
| `entries[ref].rating.target` | string | The forge's own id for the thread. **Opaque.** |
|
|
118
|
+
| `entries[ref].rating.url` | string | Where a human goes to vote. **Opaque.** |
|
|
119
|
+
| `entries[ref].updated.at` | string | RFC 3339. When the artifact last moved. |
|
|
120
|
+
|
|
121
|
+
`target` and `url` are opaque: no client parses one and no client constructs
|
|
122
|
+
one. They differ per forge and may change shape without a `schema_version`
|
|
123
|
+
bump, which is exactly what "opaque" buys.
|
|
124
|
+
|
|
125
|
+
**`entries[ref]` is a bag of stats, not a record.** A ref may carry `updated`
|
|
126
|
+
and no `rating`, or the reverse. A further signal arrives as a sibling key
|
|
127
|
+
with a sibling entry in `providers`; that is additive and needs no version
|
|
128
|
+
bump.
|
|
129
|
+
|
|
130
|
+
Some fixtures under `test/ratings/fixtures/` carry a `downloads` key. It is
|
|
131
|
+
there as an *unknown* key — the thing a reader must carry forward without
|
|
132
|
+
understanding — and is **not a specification**. No producer writes it, its
|
|
133
|
+
shape is not fixed, and a client must not code against it.
|
|
134
|
+
|
|
135
|
+
### Absent is first-class
|
|
136
|
+
|
|
137
|
+
Five distinct levels of absence. None of them is an error, a warning above
|
|
138
|
+
`debug`, or a failed build:
|
|
139
|
+
|
|
140
|
+
| Absent | Means |
|
|
141
|
+
|---|---|
|
|
142
|
+
| The file (404) | This index publishes no stats |
|
|
143
|
+
| `entries` | Nothing is rated yet |
|
|
144
|
+
| A ref within `entries` | That artifact has no stats at all |
|
|
145
|
+
| `rating` on a ref that is present | Unrated — and any other stat on that ref is unaffected |
|
|
146
|
+
| `rating` on a rendered catalog entry | Unrated. No consumer may assume the field is there |
|
|
147
|
+
|
|
148
|
+
### Reading a document you do not fully understand
|
|
149
|
+
|
|
150
|
+
A client that understands version *N* accepts any document declaring `≤ N`,
|
|
151
|
+
ignoring fields it does not know. A document declaring `> N` may degrade to
|
|
152
|
+
"no rating", but must never be a parse error. So fields are added and never
|
|
153
|
+
repurposed, and `schema_version` rises only when an existing field changes
|
|
154
|
+
meaning.
|
|
155
|
+
|
|
156
|
+
`test/ratings/fixtures/` holds one document per rule above — the minimal valid
|
|
157
|
+
v1, unknown fields at two levels, an unrecognised `providers.rating` value, the
|
|
158
|
+
absence levels, and a document from the future. They are the reference
|
|
159
|
+
documents for every client's parser tests, in this repository and outside it.
|
|
160
|
+
|
|
161
|
+
### Producing it
|
|
162
|
+
|
|
163
|
+
`updated` needs no configuration and no forge. `enrich` already runs `describe`
|
|
164
|
+
per package, so it writes the date into the sidecar — the artifact's own
|
|
165
|
+
`created` (a commit date, so a re-publish of the same commit keeps the same
|
|
166
|
+
answer) or, for an artifact published outside a repository, the first build
|
|
167
|
+
that saw its current digest. `build` joins that onto the document it
|
|
168
|
+
publishes. An index that runs `enrich` gets it whether or not it wants
|
|
169
|
+
ratings.
|
|
170
|
+
|
|
171
|
+
`rating` is opt-in. Add a `ratings` block to `index.config.json` and re-render
|
|
172
|
+
CI (`npm run ci`). The block is optional; without it nothing is tallied.
|
|
173
|
+
|
|
174
|
+
```jsonc
|
|
175
|
+
"ratings": {
|
|
176
|
+
"provider": "github", // "github" | "gitlab"
|
|
177
|
+
"container": "Ratings", // GitHub: Discussions category. GitLab: work item type.
|
|
178
|
+
"createBudget": 400, // threads created per run; default 400
|
|
179
|
+
"lockThreads": true // default TRUE - votes count, replies are refused
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`provider` and `container` are required; the other two have the defaults shown.
|
|
184
|
+
Unknown keys are ignored. There is deliberately **no `botIds` key** — the
|
|
185
|
+
author allowlist is `index-policy.json`'s `trustedBots[].id`, and a second copy
|
|
186
|
+
of the same ids in a second file is a consistency hazard rather than a
|
|
187
|
+
convenience.
|
|
188
|
+
|
|
189
|
+
`lockThreads` defaults to `true` on purpose. It is the low-moderation default —
|
|
190
|
+
an operator gets a rating signal without also running a comment forum they have
|
|
191
|
+
to moderate — and it independently hardens the marker rule, because a locked
|
|
192
|
+
thread cannot receive the forged-marker reply that rule exists to reject.
|
|
193
|
+
|
|
194
|
+
Re-rendering with the block present adds one job to the generated pipeline
|
|
195
|
+
(`ratings` on GitHub, `grim-indexer:ratings` on GitLab), an hourly schedule, and
|
|
196
|
+
a seed step in the deploy. The seed step is what keeps a failed tally from
|
|
197
|
+
emptying a published rating set: it reads the currently published `stats.json`
|
|
198
|
+
and carries it forward per stat key, and it fails the job rather than treating
|
|
199
|
+
an unreadable seed as an empty one.
|
|
200
|
+
|
|
201
|
+
### Turning it off
|
|
202
|
+
|
|
203
|
+
Two steps, and the first alone is not enough:
|
|
204
|
+
|
|
205
|
+
1. Remove the `ratings` block and re-render CI. That stops the tally.
|
|
206
|
+
2. **Delete the published `stats.json` from the deploy.** Until it is gone the
|
|
207
|
+
last tally keeps being served, frozen, forever.
|
|
208
|
+
|
|
209
|
+
After both, clients read a 404 and every artifact shows as unrated on its next
|
|
210
|
+
refresh — unless the index still runs `enrich`, in which case the next build
|
|
211
|
+
republishes a `stats.json` carrying `updated` and nothing else. The sidecar is
|
|
212
|
+
never committed — it is a build input the deploy publishes — so there is no
|
|
213
|
+
history to unwind either way.
|
|
214
|
+
|
|
215
|
+
## The enrichment checkpoint
|
|
216
|
+
|
|
217
|
+
`enrich` skips work by digest, and every one of those comparisons reads
|
|
218
|
+
`enrich/<namespace>/<name>/data.json` off disk. The scaffolded CI never has
|
|
219
|
+
that file — the sidecars live only in the deploy job's workspace and are
|
|
220
|
+
committed nowhere — so without help every deploy re-downloads every README,
|
|
221
|
+
changelog, logo and payload, and re-dates every artifact that carries no
|
|
222
|
+
`created` of its own.
|
|
223
|
+
|
|
224
|
+
So `build` publishes `enrich.json` beside `all.json`, and
|
|
225
|
+
`grim-indexer enrich --seed` reads it back from `<site>/enrich.json` before
|
|
226
|
+
refreshing. The live site is the checkpoint, the same arrangement the ratings
|
|
227
|
+
sidecar already uses. The generated CI passes `--seed`; re-render with
|
|
228
|
+
`npm run ci` to pick it up.
|
|
229
|
+
|
|
230
|
+
Unlike `stats.json`, **this is not a read contract.** Nothing outside this
|
|
231
|
+
package reads it, its shape may change without notice, and no client should
|
|
232
|
+
code against it.
|
|
233
|
+
|
|
234
|
+
Failure is never fatal: an unreachable, oversized, unparseable or
|
|
235
|
+
unrecognised checkpoint warns and seeds nothing, and the run does the full
|
|
236
|
+
download it would have done anyway. A checkpoint that disagrees with itself —
|
|
237
|
+
claiming a README it does not carry — has the digest that guards that file
|
|
238
|
+
dropped, so the next run fetches it rather than trusting a stale flag.
|
|
239
|
+
|
|
240
|
+
`describe` still runs once per package and is never skipped, so CI still
|
|
241
|
+
installs `grim` and still makes one round trip each. The checkpoint saves the
|
|
242
|
+
downloads, not the probe.
|
|
243
|
+
|
|
78
244
|
## Status
|
|
79
245
|
|
|
80
246
|
Pre-1.0. The end-to-end loop was proven against live GitHub repositories
|
|
@@ -105,12 +271,57 @@ announce, which needs a credential beyond the CI token.
|
|
|
105
271
|
|
|
106
272
|
Two things are frozen and safe to build on: the published URL layout
|
|
107
273
|
(`/p/<namespace>/<name>/` and `/all.json`) and the per-record `schema`
|
|
108
|
-
field. Everything else may still move.
|
|
274
|
+
field. Everything else may still move — including `/enrich.json`, which is
|
|
275
|
+
this package's own checkpoint and not a read contract.
|
|
276
|
+
|
|
277
|
+
Theming is CSS custom properties, all named `--grim-<category>-<role>` and
|
|
278
|
+
all declared in one file — `src/renderer/astro/styles/tokens.css`, whose
|
|
279
|
+
contract comment is the only reference. There is no second table here to go
|
|
280
|
+
stale.
|
|
281
|
+
|
|
282
|
+
| Family | Tokens |
|
|
283
|
+
|---|---|
|
|
284
|
+
| Colour | `--grim-color-*` — surface, accent, package kind, state |
|
|
285
|
+
| Space | `--grim-space-1` … `-9`, a sparse scale whose steps grow apart |
|
|
286
|
+
| Type | `--grim-text-2xs` … `-2xl` |
|
|
287
|
+
| Radius | `--grim-radius-sm` … `-xl`, `-pill` |
|
|
288
|
+
| Border, motion, elevation | `--grim-border-width`, `--grim-duration-*`, `--grim-shadow-*` |
|
|
289
|
+
|
|
290
|
+
**Colour is the only family that differs per scheme**, so it is the only one
|
|
291
|
+
you override twice — under `:root` *and* `[data-theme="dark"]`. `:root` is
|
|
292
|
+
scheme-agnostic, so a `:root`-only colour override silently takes dark mode
|
|
293
|
+
with it. Everything else is a measurement: declare it once.
|
|
294
|
+
|
|
295
|
+
Everything the renderer ships sits in `@layer grimoire`, and your file is
|
|
296
|
+
emitted unlayered and last. Unlayered CSS beats a layered rule outright, at
|
|
297
|
+
any specificity, so an ordinary selector wins with no `!important` and no
|
|
298
|
+
knowledge of where Astro injected its bundle.
|
|
299
|
+
|
|
300
|
+
To target one element rather than retheme globally, use its `data-slot`:
|
|
301
|
+
|
|
302
|
+
```css
|
|
303
|
+
[data-slot="package-card"] { border-radius: 2px; }
|
|
304
|
+
```
|
|
109
305
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
306
|
+
The slots are `brand`, `catalog`, `catalog-search`, `catalog-toolbar`,
|
|
307
|
+
`deprecated-banner`, `detail-body`, `detail-header`, `detail-rail`,
|
|
308
|
+
`filter-chip`, `install-command`, `package-card`, `package-keywords`,
|
|
309
|
+
`package-kind`, `package-meta`, `package-name`, `site-footer`, `site-header`
|
|
310
|
+
and `version-pill`. Those names are stable; **class names are not** — they
|
|
311
|
+
are internal and unversioned, so `@layer` will make a rule targeting one
|
|
312
|
+
win, but nothing promises the class is still there next release.
|
|
313
|
+
|
|
314
|
+
There is deliberately no component-override API (`--grim-card-radius` and
|
|
315
|
+
friends). With the layer and the slots, it would reach nothing the CSS above
|
|
316
|
+
cannot already reach, and it would freeze a per-slot prop contract that is
|
|
317
|
+
not worth promising this early.
|
|
318
|
+
|
|
319
|
+
> **If you wrote a `theme.css` against `0.4.0` or earlier**, it no longer
|
|
320
|
+
> applies — silently, without an error. The tokens were unnamespaced
|
|
321
|
+
> (`--accent`, `--bg`, `--fg`), which collides with any other stylesheet on
|
|
322
|
+
> the page using those names. They are now `--grim-color-accent`,
|
|
323
|
+
> `--grim-color-bg`, `--grim-color-fg` and so on: the same role names behind
|
|
324
|
+
> a `--grim-color-` prefix.
|
|
114
325
|
|
|
115
326
|
> **Use `0.1.4` or later.** `0.1.0` installs without an executable - npm
|
|
116
327
|
> silently stripped its `bin` entry at publish time. `0.1.1` and `0.1.2`
|
|
@@ -161,8 +372,8 @@ every VS Code affordance on both pages.
|
|
|
161
372
|
|
|
162
373
|
It renders through the same `inlineConfig` as `grim-indexer build`, so the
|
|
163
374
|
preview is the release output, not an approximation. Edits under
|
|
164
|
-
`src/renderer/astro/` (templates, components, the
|
|
165
|
-
`
|
|
375
|
+
`src/renderer/astro/` (templates, components, the tokens in
|
|
376
|
+
`styles/tokens.css`) reload in place; changing the renderer's own
|
|
166
377
|
TypeScript needs a restart, because `npm run dev` builds `dist/` on start.
|
|
167
378
|
|
|
168
379
|
The scratch index root lives in the gitignored `.dev/`, rebuilt on every
|
package/dist/ci.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CliError } from "./cli/exit.js";
|
|
2
|
+
import type { RatingsConfig } from "./ratings/config.js";
|
|
2
3
|
/**
|
|
3
4
|
* Forges CI can be rendered for. One repository is hosted on one forge, so
|
|
4
5
|
* this is a choice rather than a set — rendering both left every index with a
|
|
@@ -97,8 +98,12 @@ export declare const GENERATED_HEADER = "# Generated by @grimoire-rs/indexer";
|
|
|
97
98
|
/**
|
|
98
99
|
* Render the complete CI file set. Nothing touches disk — the caller writes
|
|
99
100
|
* it or diffs it against what is committed.
|
|
101
|
+
*
|
|
102
|
+
* `ratings` absent means the `ratings` block is absent from
|
|
103
|
+
* `index.config.json`, and every file renders exactly as it did before the
|
|
104
|
+
* feature existed — no job, no schedule, no seed step.
|
|
100
105
|
*/
|
|
101
|
-
export declare function renderCi(ci: ResolvedCiConfig): Map<string, string>;
|
|
106
|
+
export declare function renderCi(ci: ResolvedCiConfig, ratings?: RatingsConfig): Map<string, string>;
|
|
102
107
|
/**
|
|
103
108
|
* Canonicalize a generated file for drift comparison.
|
|
104
109
|
*
|
package/dist/ci.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAQ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAQ,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,MAAM,EAAE,SAAS,KAAK,EAAyB,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,gBAAgB,CAAC;AAEhE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAuC,CAAC;AAU9F;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAElD,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAWpE;AAMD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CA+CjD;AAED,qFAAqF;AACrF,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBlE;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,wCAAwC,CAAC;AAmDtE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAwF3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBzF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;CAC5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAc5F;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAW5F;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAO1D"}
|
package/dist/ci.js
CHANGED
|
@@ -164,11 +164,21 @@ function grimReleaseBase(grimVersion) {
|
|
|
164
164
|
* because the lock is what decides which renderer produces them.
|
|
165
165
|
*/
|
|
166
166
|
const VERIFY_PATHS = [CONFIG_FILE, "package.json", "package-lock.json", ".github/workflows/**"];
|
|
167
|
+
/**
|
|
168
|
+
* How often a scheduled run re-tallies. Off the hour deliberately — GitHub
|
|
169
|
+
* asks for it, and every index that picked `0 * * * *` would queue against the
|
|
170
|
+
* same minute.
|
|
171
|
+
*/
|
|
172
|
+
const RATINGS_CRON = "23 * * * *";
|
|
167
173
|
/**
|
|
168
174
|
* Render the complete CI file set. Nothing touches disk — the caller writes
|
|
169
175
|
* it or diffs it against what is committed.
|
|
176
|
+
*
|
|
177
|
+
* `ratings` absent means the `ratings` block is absent from
|
|
178
|
+
* `index.config.json`, and every file renders exactly as it did before the
|
|
179
|
+
* feature existed — no job, no schedule, no seed step.
|
|
170
180
|
*/
|
|
171
|
-
export function renderCi(ci) {
|
|
181
|
+
export function renderCi(ci, ratings) {
|
|
172
182
|
const base = {
|
|
173
183
|
nodeVersion: ci.nodeVersion,
|
|
174
184
|
defaultBranch: ci.defaultBranch,
|
|
@@ -187,6 +197,27 @@ export function renderCi(ci) {
|
|
|
187
197
|
gitlabEnrichScript: ci.enrich ? block("ci/gitlab-enrich.sh") : "",
|
|
188
198
|
verifyPaths: VERIFY_PATHS.map((entry) => ` - ${entry}`).join("\n"),
|
|
189
199
|
gitlabVerifyJob: ci.allowManualEdits ? "" : block("ci/gitlab-verify.yml"),
|
|
200
|
+
// Ratings, on both forges: a tally job, a schedule to re-run it on, and
|
|
201
|
+
// the seed step that carries the published sidecar forward when the tally
|
|
202
|
+
// did not run or did not finish. Nothing here is rendered when the block
|
|
203
|
+
// is absent, so an index that never turns ratings on keeps the pipeline it
|
|
204
|
+
// already committed, byte for byte.
|
|
205
|
+
//
|
|
206
|
+
// The build/pages job must depend on the tally and run anyway: R-2 says a
|
|
207
|
+
// failed tally may never empty a published rating set, and the only way to
|
|
208
|
+
// keep the previous one is to deploy without a fresh one.
|
|
209
|
+
githubRatingsJob: ratings ? block("ci/github-ratings.yml") : "",
|
|
210
|
+
githubRatingsSeedSteps: ratings ? block("ci/github-ratings-seed.yml") : "",
|
|
211
|
+
githubRatingsSchedule: ratings ? `\n schedule:\n - cron: "${RATINGS_CRON}"` : "",
|
|
212
|
+
githubRatingsBuildKeys: ratings ? "\n needs: ratings\n if: always()" : "",
|
|
213
|
+
gitlabRatingsJob: ratings ? block("ci/gitlab-ratings.yml") : "",
|
|
214
|
+
gitlabRatingsSeedScript: ratings ? block("ci/gitlab-ratings-seed.sh") : "",
|
|
215
|
+
// One `rules:` entry, so a scheduled pipeline deploys the tally it just
|
|
216
|
+
// ran. Deliberately no `needs:` — the tally is in an earlier stage, so
|
|
217
|
+
// `pages` already receives its artifact, and adding `needs:` would move
|
|
218
|
+
// `pages` off stage ordering and let it deploy past a failed `verify-ci`.
|
|
219
|
+
// `allow_failure` on the tally job is what lets a failed one through.
|
|
220
|
+
gitlabRatingsPagesRule: ratings ? '\n - if: $CI_PIPELINE_SOURCE == "schedule"' : "",
|
|
190
221
|
// GitHub only — `validateCi` refuses the GitLab combination outright, so
|
|
191
222
|
// there is no silently-inert case to render around here.
|
|
192
223
|
githubAutoMergeJob: ci.autoMerge ? block("ci/github-automerge.yml") : "",
|
package/dist/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAUA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGhD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkB9E"}
|
package/dist/cli/build.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
// Copyright 2026 The Grimoire Authors
|
|
3
3
|
// `grim-indexer build` — compile `index/**` into `dist/`, then render the
|
|
4
4
|
// site over it. Order is load-bearing: `compileIndex` clears `outDir` and
|
|
5
|
-
// writes `all.json`, which the renderer then reads.
|
|
5
|
+
// writes `all.json`, which the renderer then reads. Anything else the deploy
|
|
6
|
+
// has to carry — the ratings sidecar `buildSite` publishes from the index
|
|
7
|
+
// root — therefore lands in `outDir` downstream of the clear, never before.
|
|
6
8
|
import path from "node:path";
|
|
7
9
|
import { EXIT } from "./exit.js";
|
|
8
10
|
import { resolveOutDir } from "./out_dir.js";
|
package/dist/cli/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC,0EAA0E;AAC1E,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,KAAiB;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1E,MAAM,CAAC,cAAc,CAAC;QACtB,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,sBAAsB,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,sBAAsB,UAAU,CAAC,MAAM,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CACpH,CAAC;IACF,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/cli/ci.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/cli/ci.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/cli/ci.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkCxE"}
|
package/dist/cli/ci.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { checkCi, driftError, loadCiConfig, renderCi, RE_RENDER_COMMAND, resolveCi, staleCi, writeCi, } from "../ci.js";
|
|
9
9
|
import { CONFIG_FILE } from "../config.js";
|
|
10
|
+
import { loadRatingsConfig } from "../ratings/config.js";
|
|
10
11
|
import { EXIT } from "./exit.js";
|
|
11
12
|
function report(outcome) {
|
|
12
13
|
console.log(` ${outcome.status.padEnd(12)}${outcome.path}`);
|
|
@@ -14,7 +15,10 @@ function report(outcome) {
|
|
|
14
15
|
export async function ci(root, flags) {
|
|
15
16
|
const rootDir = path.resolve(root);
|
|
16
17
|
const resolved = resolveCi(await loadCiConfig(rootDir));
|
|
17
|
-
|
|
18
|
+
// Read separately from the `ci` block, and by the block's own reader — the
|
|
19
|
+
// render and the `--check` re-render must see the same two answers, or an
|
|
20
|
+
// index that turned ratings on would fail its own drift guard on every push.
|
|
21
|
+
const files = renderCi(resolved, await loadRatingsConfig(rootDir));
|
|
18
22
|
if (flags.check) {
|
|
19
23
|
const outcomes = await checkCi(rootDir, files);
|
|
20
24
|
for (const outcome of outcomes) {
|
package/dist/cli/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/cli/ci.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,iCAAiC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,OAAO,GAER,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAMhD,SAAS,MAAM,CAAC,OAAkB;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAY,EAAE,KAAc;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/cli/ci.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,iCAAiC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,OAAO,GAER,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAMhD,SAAS,MAAM,CAAC,OAAkB;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAY,EAAE,KAAc;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,uEAAuE;YACvE,6DAA6D;YAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;YAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,+BAA+B,WAAW,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CACX,KAAK,KAAK,CAAC,MAAM,gDAAgD,WAAW,KAAK;YAC/E,qBAAqB,iBAAiB,wBAAwB,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/cli/enrich.d.ts
CHANGED
package/dist/cli/enrich.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../src/cli/enrich.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../src/cli/enrich.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwCD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8BhF"}
|
package/dist/cli/enrich.js
CHANGED
|
@@ -4,9 +4,47 @@
|
|
|
4
4
|
// reads the checkout and nothing else.
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { CliError, EXIT } from "./exit.js";
|
|
7
|
+
/**
|
|
8
|
+
* Restore `enrich/` from `<site>/enrich.json` before the refresh, so the digest
|
|
9
|
+
* probes have something to compare against.
|
|
10
|
+
*
|
|
11
|
+
* Warn-and-continue on every path, including a misconfigured `site`: this is a
|
|
12
|
+
* bandwidth optimisation, and a run that cannot find its checkpoint must still
|
|
13
|
+
* produce a complete site. Contrast `ratings`, which refuses to start without
|
|
14
|
+
* an https `site` because publishing without its seed empties every rating.
|
|
15
|
+
*/
|
|
16
|
+
async function seedSidecars(rootDir) {
|
|
17
|
+
const [{ loadConfig }, { seedFromCheckpoint, CHECKPOINT_FILE }] = await Promise.all([
|
|
18
|
+
import("../config.js"),
|
|
19
|
+
import("../enrich/checkpoint.js"),
|
|
20
|
+
]);
|
|
21
|
+
// `loadConfig`, never `resolveConfig`: the built-in default for `site` names
|
|
22
|
+
// the first-party index, and seeding from it would hydrate this index with
|
|
23
|
+
// somebody else's READMEs.
|
|
24
|
+
const site = (await loadConfig(rootDir)).site;
|
|
25
|
+
if (site === undefined) {
|
|
26
|
+
console.warn(`warn: no \`site\` in index.config.json — cannot read a published ${CHECKPOINT_FILE}`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// The bytes land in the repo tree and are rendered as markdown into the
|
|
30
|
+
// published site, so plaintext would let anyone on the path rewrite every
|
|
31
|
+
// README this index publishes. `init --quick` writes `http://localhost:4321`
|
|
32
|
+
// as its placeholder, and nothing is published there — so this is a skip,
|
|
33
|
+
// not an error.
|
|
34
|
+
if (!site.startsWith("https://")) {
|
|
35
|
+
console.warn(`warn: \`site\` is not https (${site}) — skipping the ${CHECKPOINT_FILE} seed`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const url = `${site.replace(/\/+$/, "")}/${CHECKPOINT_FILE}`;
|
|
39
|
+
const seeded = await seedFromCheckpoint({ root: rootDir, url });
|
|
40
|
+
if (seeded > 0)
|
|
41
|
+
console.log(`seeded ${seeded} sidecar(s) from ${url}`);
|
|
42
|
+
}
|
|
7
43
|
export async function enrich(root, flags) {
|
|
8
44
|
const rootDir = path.resolve(root);
|
|
9
45
|
const { enrichIndex, spawnGrim } = await import("../enrich/index.js");
|
|
46
|
+
if (flags.seed)
|
|
47
|
+
await seedSidecars(rootDir);
|
|
10
48
|
const bin = flags.grim ?? "grim";
|
|
11
49
|
let result;
|
|
12
50
|
try {
|
package/dist/cli/enrich.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich.js","sourceRoot":"","sources":["../../src/cli/enrich.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sCAAsC;AAEtC,2EAA2E;AAC3E,uCAAuC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"enrich.js","sourceRoot":"","sources":["../../src/cli/enrich.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAYA,OAAO,EAQL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAoE1D,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,gGAAgG;AAChG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE5F,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAYA,OAAO,EAQL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAoE1D,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,gGAAgG;AAChG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE5F,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IACrD,cAAc,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;CACpB;AA23BD,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+G5F"}
|
package/dist/cli/init.js
CHANGED
|
@@ -8,7 +8,7 @@ import fs from "node:fs";
|
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import * as prompts from "@clack/prompts";
|
|
10
10
|
import { FORGES, loadCiConfig, PUBLISH_TRIGGERS, renderCi, resolveCi, staleCi, } from "../ci.js";
|
|
11
|
-
import { CONFIG_FILE } from "../config.js";
|
|
11
|
+
import { CONFIG_FILE, validateSite } from "../config.js";
|
|
12
12
|
import { fromTemplate } from "../templates.js";
|
|
13
13
|
import { CliError, EXIT } from "./exit.js";
|
|
14
14
|
const NAME_RE = /^[a-z0-9][a-z0-9._-]*$/;
|
|
@@ -117,6 +117,20 @@ function badUrl(value) {
|
|
|
117
117
|
}
|
|
118
118
|
return null;
|
|
119
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* The base URL, which is written as `site`. Borrowed from `config.ts` rather
|
|
122
|
+
* than restated: a scaffolder that can write a value the very next command
|
|
123
|
+
* refuses to load is two acceptance policies for one key.
|
|
124
|
+
*/
|
|
125
|
+
function badSiteUrl(value) {
|
|
126
|
+
try {
|
|
127
|
+
validateSite(value);
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return err.message;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
120
134
|
function badName(value) {
|
|
121
135
|
if (!NAME_RE.test(value)) {
|
|
122
136
|
return "must be lowercase, start alphanumeric, and contain only a-z 0-9 . _ -";
|
|
@@ -354,7 +368,7 @@ async function resolveAnswers(dir, flags) {
|
|
|
354
368
|
for (const [flag, value, check] of [
|
|
355
369
|
["--name", flags.name, badName],
|
|
356
370
|
["--registry", flags.registry, badName],
|
|
357
|
-
["--base-url", flags.baseUrl,
|
|
371
|
+
["--base-url", flags.baseUrl, badSiteUrl],
|
|
358
372
|
["--repo-url", flags.repoUrl, badUrl],
|
|
359
373
|
["--logo", flags.logo, badLogo],
|
|
360
374
|
]) {
|
|
@@ -490,7 +504,7 @@ async function resolveAnswers(dir, flags) {
|
|
|
490
504
|
: "Base URL the index is served from",
|
|
491
505
|
placeholder: pagesUrl ?? "https://index.example.com",
|
|
492
506
|
defaultValue: pagesUrl ?? "",
|
|
493
|
-
validate: (value) =>
|
|
507
|
+
validate: (value) => badSiteUrl(value || (pagesUrl ?? "")) ?? undefined,
|
|
494
508
|
})));
|
|
495
509
|
const aliasDefault = prior.registryAlias ?? name;
|
|
496
510
|
const registryAlias = flags.registry ??
|