@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.
Files changed (110) hide show
  1. package/README.md +220 -9
  2. package/dist/ci.d.ts +6 -1
  3. package/dist/ci.d.ts.map +1 -1
  4. package/dist/ci.js +32 -1
  5. package/dist/ci.js.map +1 -1
  6. package/dist/cli/build.d.ts.map +1 -1
  7. package/dist/cli/build.js +3 -1
  8. package/dist/cli/build.js.map +1 -1
  9. package/dist/cli/ci.d.ts.map +1 -1
  10. package/dist/cli/ci.js +5 -1
  11. package/dist/cli/ci.js.map +1 -1
  12. package/dist/cli/enrich.d.ts +1 -0
  13. package/dist/cli/enrich.d.ts.map +1 -1
  14. package/dist/cli/enrich.js +38 -0
  15. package/dist/cli/enrich.js.map +1 -1
  16. package/dist/cli/init.d.ts.map +1 -1
  17. package/dist/cli/init.js +17 -3
  18. package/dist/cli/init.js.map +1 -1
  19. package/dist/cli/main.d.ts.map +1 -1
  20. package/dist/cli/main.js +9 -0
  21. package/dist/cli/main.js.map +1 -1
  22. package/dist/cli/ratings.d.ts +3 -0
  23. package/dist/cli/ratings.d.ts.map +1 -0
  24. package/dist/cli/ratings.js +160 -0
  25. package/dist/cli/ratings.js.map +1 -0
  26. package/dist/config.d.ts +19 -0
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +47 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/data/index.d.ts.map +1 -1
  31. package/dist/data/index.js +13 -0
  32. package/dist/data/index.js.map +1 -1
  33. package/dist/enrich/checkpoint.d.ts +53 -0
  34. package/dist/enrich/checkpoint.d.ts.map +1 -0
  35. package/dist/enrich/checkpoint.js +296 -0
  36. package/dist/enrich/checkpoint.js.map +1 -0
  37. package/dist/enrich/index.d.ts +14 -0
  38. package/dist/enrich/index.d.ts.map +1 -1
  39. package/dist/enrich/index.js +77 -4
  40. package/dist/enrich/index.js.map +1 -1
  41. package/dist/ratings/budget.d.ts +16 -0
  42. package/dist/ratings/budget.d.ts.map +1 -0
  43. package/dist/ratings/budget.js +7 -0
  44. package/dist/ratings/budget.js.map +1 -0
  45. package/dist/ratings/config.d.ts +56 -0
  46. package/dist/ratings/config.d.ts.map +1 -0
  47. package/dist/ratings/config.js +86 -0
  48. package/dist/ratings/config.js.map +1 -0
  49. package/dist/ratings/marker.d.ts +105 -0
  50. package/dist/ratings/marker.d.ts.map +1 -0
  51. package/dist/ratings/marker.js +141 -0
  52. package/dist/ratings/marker.js.map +1 -0
  53. package/dist/ratings/paging.d.ts +16 -0
  54. package/dist/ratings/paging.d.ts.map +1 -0
  55. package/dist/ratings/paging.js +36 -0
  56. package/dist/ratings/paging.js.map +1 -0
  57. package/dist/ratings/provider.d.ts +100 -0
  58. package/dist/ratings/provider.d.ts.map +1 -0
  59. package/dist/ratings/provider.js +203 -0
  60. package/dist/ratings/provider.js.map +1 -0
  61. package/dist/ratings/provider_github.d.ts +3 -0
  62. package/dist/ratings/provider_github.d.ts.map +1 -0
  63. package/dist/ratings/provider_github.js +135 -0
  64. package/dist/ratings/provider_github.js.map +1 -0
  65. package/dist/ratings/provider_gitlab.d.ts +3 -0
  66. package/dist/ratings/provider_gitlab.d.ts.map +1 -0
  67. package/dist/ratings/provider_gitlab.js +153 -0
  68. package/dist/ratings/provider_gitlab.js.map +1 -0
  69. package/dist/ratings/provider_memory.d.ts +28 -0
  70. package/dist/ratings/provider_memory.d.ts.map +1 -0
  71. package/dist/ratings/provider_memory.js +49 -0
  72. package/dist/ratings/provider_memory.js.map +1 -0
  73. package/dist/ratings/reconcile.d.ts +47 -0
  74. package/dist/ratings/reconcile.d.ts.map +1 -0
  75. package/dist/ratings/reconcile.js +133 -0
  76. package/dist/ratings/reconcile.js.map +1 -0
  77. package/dist/ratings/seed.d.ts +60 -0
  78. package/dist/ratings/seed.d.ts.map +1 -0
  79. package/dist/ratings/seed.js +132 -0
  80. package/dist/ratings/seed.js.map +1 -0
  81. package/dist/renderer/astro/components/Catalog.d.ts +2 -0
  82. package/dist/renderer/astro/components/Catalog.js +65 -16
  83. package/dist/renderer/astro/components/Catalog.tsx +119 -26
  84. package/dist/renderer/astro/components/CommandField.astro +1 -0
  85. package/dist/renderer/astro/components/VersionMenu.astro +31 -23
  86. package/dist/renderer/astro/layouts/Base.astro +218 -263
  87. package/dist/renderer/astro/lib/catalog.d.ts +25 -0
  88. package/dist/renderer/astro/lib/catalog.js +46 -0
  89. package/dist/renderer/astro/lib/catalog.ts +49 -0
  90. package/dist/renderer/astro/pages/p/[...slug].astro +238 -85
  91. package/dist/renderer/astro/styles/tokens.css +157 -0
  92. package/dist/renderer/index.d.ts.map +1 -1
  93. package/dist/renderer/index.js +101 -2
  94. package/dist/renderer/index.js.map +1 -1
  95. package/dist/renderer/types.d.ts +41 -0
  96. package/dist/renderer/types.d.ts.map +1 -1
  97. package/dist/validate/adapters/http.d.ts +29 -1
  98. package/dist/validate/adapters/http.d.ts.map +1 -1
  99. package/dist/validate/adapters/http.js +17 -2
  100. package/dist/validate/adapters/http.js.map +1 -1
  101. package/package.json +1 -1
  102. package/templates/ci/github-enrich.yml +9 -1
  103. package/templates/ci/github-pages.yml +11 -5
  104. package/templates/ci/github-ratings-seed.yml +88 -0
  105. package/templates/ci/github-ratings.yml +51 -0
  106. package/templates/ci/gitlab-ci.yml +3 -3
  107. package/templates/ci/gitlab-enrich.sh +10 -1
  108. package/templates/ci/gitlab-ratings-seed.sh +83 -0
  109. package/templates/ci/gitlab-ratings.yml +37 -0
  110. package/templates/gitignore +8 -0
@@ -0,0 +1,157 @@
1
+ /* SPDX-License-Identifier: Apache-2.0
2
+ Copyright 2026 The Grimoire Authors
3
+
4
+ THE THEMING CONTRACT — these custom properties are the whole customization
5
+ surface. There is no component-override API; see `data-slot` below for the
6
+ other half of the contract.
7
+
8
+ Everything the renderer ships is layered. Unlayered CSS — i.e. any user
9
+ override file — beats a layered declaration outright, at any specificity,
10
+ so a single `:root { --grim-color-accent: … }` wins in light AND dark
11
+ without !important and without knowing where Astro injects its bundle.
12
+
13
+ Names are `--grim-<category>-<role>`. The category segment is not
14
+ decoration: it is what stops a colour named `--grim-text` from colliding
15
+ with the type-scale tokens below.
16
+
17
+ COLOUR is the one family that differs per scheme, so it is the one family
18
+ declared twice — `:root` and `[data-theme="dark"]`. Redeclare BOTH when you
19
+ override one: `:root` is scheme-agnostic, so a `:root`-only override
20
+ silently takes dark mode with it. Every other family is a measurement, not
21
+ an appearance, and is declared once.
22
+
23
+ Adding a token is additive. Removing or renaming one is a breaking change.
24
+
25
+ `test/renderer/style_contract.test.ts` holds this file to it, and
26
+ `test/renderer/build.test.ts` proves the layer survives a real build. */
27
+
28
+ @layer grimoire {
29
+ :root {
30
+ /* ---- Colour: surface ------------------------------------------- */
31
+ --grim-color-bg: #f7f6f3;
32
+ --grim-color-fg: #1d1c1a;
33
+ --grim-color-muted: #6d6a63;
34
+ --grim-color-card: #ffffff;
35
+ --grim-color-border: #dedbd3;
36
+ --grim-color-chip-bg: #edebe5;
37
+
38
+ /* ---- Colour: accent -------------------------------------------- */
39
+ --grim-color-accent: #6d4fc4;
40
+ --grim-color-accent-soft: #efeafd;
41
+ --grim-color-on-accent: #ffffff;
42
+
43
+ /* ---- Colour: package kind --------------------------------------
44
+ Read through a name composed at runtime — `Catalog.tsx` and the detail
45
+ page build `var(--grim-color-kind-${pkg.kind})`. Grepping for one of
46
+ these finds the declaration and no use site; all five are used. */
47
+ --grim-color-kind-skill: #6d4fc4;
48
+ --grim-color-kind-rule: #1a7f6b;
49
+ --grim-color-kind-agent: #b0641a;
50
+ --grim-color-kind-mcp: #2565c7;
51
+ --grim-color-kind-bundle: #a63d68;
52
+
53
+ /* ---- Colour: state --------------------------------------------- */
54
+ /* ~5.7:1 on --grim-color-card (white) */
55
+ --grim-color-deprecated: #9c5400;
56
+ --grim-color-banner-bg: #fff3cd;
57
+ --grim-color-banner-fg: #6b4c00;
58
+ --grim-color-banner-border: #e0b84c;
59
+
60
+ color-scheme: light;
61
+
62
+ /* ---- Space -----------------------------------------------------
63
+ Numbered, not role-named, because a spacing step is pure ordinal
64
+ magnitude: bigger number, more room. The steps are sparse and the
65
+ distance between them GROWS — 2, 2, 2, 4, 4, 8, 8, 16px — so the
66
+ scale stays usable at the top without minting a step per pixel.
67
+ A bare number is only honest with a published role, so here it is:
68
+
69
+ 1 hairline inset — badge and pill padding
70
+ 2 tight — an icon and its label
71
+ 3 chip padding, keyword gaps
72
+ 4 default gap inside one control
73
+ 5 between related controls
74
+ 6 card padding, row gap
75
+ 7 between sections
76
+ 8 page block separation
77
+ 9 page bottom */
78
+ --grim-space-1: 0.125rem;
79
+ --grim-space-2: 0.25rem;
80
+ --grim-space-3: 0.375rem;
81
+ --grim-space-4: 0.5rem;
82
+ --grim-space-5: 0.75rem;
83
+ --grim-space-6: 1rem;
84
+ --grim-space-7: 1.5rem;
85
+ --grim-space-8: 2rem;
86
+ --grim-space-9: 3rem;
87
+
88
+ /* ---- Type ------------------------------------------------------
89
+ Role-named, unlike space: a type step is "metadata vs body vs
90
+ heading", which is a job, not a magnitude. `xl` is a detail-page
91
+ heading and `2xl` the landing hero — two sizes because those are two
92
+ deliberately different headings, not drift. */
93
+ --grim-text-2xs: 0.72rem;
94
+ --grim-text-xs: 0.78rem;
95
+ --grim-text-sm: 0.85rem;
96
+ --grim-text-md: 0.95rem;
97
+ --grim-text-lg: 1.05rem;
98
+ --grim-text-xl: 1.5rem;
99
+ --grim-text-2xl: 1.6rem;
100
+
101
+ /* ---- Radius ---------------------------------------------------- */
102
+ --grim-radius-sm: 4px;
103
+ --grim-radius-md: 6px;
104
+ --grim-radius-lg: 8px;
105
+ --grim-radius-xl: 10px;
106
+ --grim-radius-pill: 999px;
107
+
108
+ /* ---- Border ----------------------------------------------------
109
+ One width carries every rule in the UI. It is a token so a consumer
110
+ can thicken every seam at once, and so the two places that pull a
111
+ border into its neighbour can say `calc(-1 * …)` instead of
112
+ hardcoding the negation of a number declared elsewhere. */
113
+ --grim-border-width: 1px;
114
+
115
+ /* ---- Motion ---------------------------------------------------- */
116
+ --grim-duration-fast: 120ms;
117
+ --grim-duration-base: 160ms;
118
+ --grim-duration-slow: 200ms;
119
+
120
+ /* ---- Elevation -------------------------------------------------
121
+ A drop shadow is a black scrim rather than a palette colour: it reads
122
+ correctly over either scheme, which is why these are not declared
123
+ twice. Overriding one is how a consumer changes elevation. */
124
+ --grim-shadow-raised: 0 6px 20px rgb(0 0 0 / 18%);
125
+ --grim-shadow-overlay: 0 8px 24px rgb(0 0 0 / 18%);
126
+ }
127
+
128
+ /* Colour only. Every other family above is a measurement that does not
129
+ change with the scheme, and redeclaring one here would be a second
130
+ source of truth for the same value. */
131
+ [data-theme="dark"] {
132
+ --grim-color-bg: #16151a;
133
+ --grim-color-fg: #e8e6e1;
134
+ --grim-color-muted: #98948b;
135
+ --grim-color-card: #201f26;
136
+ --grim-color-border: #35333d;
137
+ --grim-color-chip-bg: #2a2931;
138
+
139
+ --grim-color-accent: #a58cf0;
140
+ --grim-color-accent-soft: #2c2540;
141
+ --grim-color-on-accent: #ffffff;
142
+
143
+ --grim-color-kind-skill: #a58cf0;
144
+ --grim-color-kind-rule: #4cc2a9;
145
+ --grim-color-kind-agent: #e0a35c;
146
+ --grim-color-kind-mcp: #6fa8f5;
147
+ --grim-color-kind-bundle: #e07ba6;
148
+
149
+ /* ~7.6:1 on --grim-color-card (#201f26) */
150
+ --grim-color-deprecated: #e3a640;
151
+ --grim-color-banner-bg: #4a3b0a;
152
+ --grim-color-banner-fg: #f0d78c;
153
+ --grim-color-banner-border: #8a6d1a;
154
+
155
+ color-scheme: dark;
156
+ }
157
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,+DAA+D;AAC/D,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AA4BD,mEAAmE;AACnE,eAAO,MAAM,aAAa,QAA2B,CAAC;AACtD,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,QAA4B,CAAC;AA0N5D,sEAAsE;AACtE,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrE;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BtE;AAED,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAa9D,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,+DAA+D;AAC/D,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AA4BD,mEAAmE;AACnE,eAAO,MAAM,aAAa,QAA2B,CAAC;AACtD,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,QAA4B,CAAC;AAuU5D,sEAAsE;AACtE,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrE;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BtE;AAED,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -9,6 +9,9 @@ import { fileURLToPath } from "node:url";
9
9
  import { build, dev } from "astro";
10
10
  import preact from "@astrojs/preact";
11
11
  import { resolveConfig } from "../config.js";
12
+ // The per-key merge, shared with the ratings producer rather than restated:
13
+ // both write the same file and both have to leave the other's key alone.
14
+ import { mergeStats, SCHEMA_VERSION, } from "../ratings/seed.js";
12
15
  import { SHIKI_THEMES } from "./astro/lib/code.js";
13
16
  /** Thrown when `<outDir>/all.json` is missing or malformed. */
14
17
  export class RenderInputError extends Error {
@@ -70,6 +73,90 @@ async function readPackages(outDir) {
70
73
  throw new RenderInputError(`${file}: expected a JSON array`);
71
74
  return parsed.sort((a, b) => a.name.localeCompare(b.name));
72
75
  }
76
+ /**
77
+ * The ratings job leaves its output here, in the index root; the render
78
+ * publishes it as `stats.json` beside `all.json`. Two names on purpose: the
79
+ * scratch copy is gitignored (it is regenerated, never committed) and the
80
+ * published one is the frozen URL every client reads.
81
+ */
82
+ const STATS_SCRATCH = ".stats.json";
83
+ const STATS_PUBLISHED = "stats.json";
84
+ /** The stat key this build produces, and the name it publishes it under. */
85
+ const UPDATED_KEY = "updated";
86
+ const UPDATED_PROVIDER = "indexer";
87
+ /**
88
+ * Read `<root>/.stats.json`. Absent is the normal case — most indexes run no
89
+ * ratings job — and so is unreadable or malformed: the sidecar is a signal,
90
+ * never an input the site depends on, so nothing here may fail a build over
91
+ * it. A document that does not parse is also not republished.
92
+ */
93
+ async function readStats(root) {
94
+ let parsed;
95
+ try {
96
+ parsed = JSON.parse(await fs.readFile(path.join(root, STATS_SCRATCH), "utf8"));
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ return typeof parsed === "object" && parsed !== null ? parsed : null;
102
+ }
103
+ /** Join ratings onto packages by ref. A ref the sidecar omits stays unrated. */
104
+ function withRatings(packages, stats) {
105
+ const entries = stats?.entries;
106
+ if (!entries)
107
+ return packages;
108
+ return packages.map((p) => {
109
+ // A ref present but carrying only other stats, and a `rating` whose `up`
110
+ // is not a number, are both unrated — same as not being listed at all.
111
+ const up = entries[p.ref]?.rating?.up;
112
+ return typeof up === "number" ? { ...p, rating: { up } } : p;
113
+ });
114
+ }
115
+ /**
116
+ * The document to publish: whatever the ratings job left, plus this build's
117
+ * own `updated` key.
118
+ *
119
+ * Recency is the one stat the index derives from itself. `enrich` already
120
+ * calls `describe` per package and writes the answer into the sidecar, so
121
+ * every ref carries it by the time `all.json` is compiled — which makes this
122
+ * a local join with no network and no seed to fetch. It runs on every build,
123
+ * including one that never ran a ratings job at all.
124
+ *
125
+ * `mergeStats` is the same per-key merge the ratings producer uses, and for
126
+ * the same reason: a run owns its own key and carries every other one
127
+ * forward untouched, so a build cannot empty a published rating and a
128
+ * ratings run cannot empty a published date.
129
+ *
130
+ * `schema_version` and `generated_at` are carried over rather than
131
+ * re-stamped. The ratings job stamped this document, and re-stamping it here
132
+ * would make the published bytes differ on every rebuild of an unchanged
133
+ * index — a fresh stamp is taken only when there was no document to carry.
134
+ */
135
+ function publishedStats(packages, stats) {
136
+ const fresh = {};
137
+ for (const p of packages) {
138
+ if (typeof p.updated === "string" && p.updated !== "")
139
+ fresh[p.ref] = { at: p.updated };
140
+ }
141
+ // Nothing published and nothing to publish. An index whose packages all
142
+ // predate the `updated` field keeps behaving exactly as it did.
143
+ if (!stats && Object.keys(fresh).length === 0)
144
+ return null;
145
+ const seed = {
146
+ providers: (stats?.providers ?? {}),
147
+ entries: (stats?.entries ?? {}),
148
+ };
149
+ const merged = mergeStats(seed, UPDATED_KEY, UPDATED_PROVIDER, fresh);
150
+ return {
151
+ schema_version: typeof stats?.schema_version === "number" ? stats.schema_version : SCHEMA_VERSION,
152
+ // RFC 3339 UTC to the second — the shape `statsDocument` writes and every
153
+ // fixture pins.
154
+ generated_at: typeof stats?.generated_at === "string"
155
+ ? stats.generated_at
156
+ : new Date().toISOString().replace(/\.\d+Z$/, "Z"),
157
+ ...merged,
158
+ };
159
+ }
73
160
  async function exists(target) {
74
161
  return fs.access(target).then(() => true, () => false);
75
162
  }
@@ -202,14 +289,18 @@ async function stage(root, outDir, srcDir) {
202
289
  */
203
290
  async function resolveInputs(opts) {
204
291
  const config = resolveConfig(opts.config);
205
- const packages = await readPackages(opts.outDir);
292
+ const sidecar = await readStats(opts.root);
293
+ const packages = withRatings(await readPackages(opts.outDir), sidecar);
294
+ // Downstream of the join, because the `updated` it publishes is read off
295
+ // the packages themselves.
296
+ const stats = publishedStats(packages, sidecar);
206
297
  const css = await readCustomCss(opts.root, config.customCss);
207
298
  // A site on GitHub/GitLab *project* Pages lives under a path segment, and
208
299
  // `site` is the only place that fact is recorded. Its path becomes Astro's
209
300
  // `base` — which covers everything Astro emits itself — and the same value
210
301
  // reaches the hand-written URLs through `astro/lib/base.ts`. Domain-rooted
211
302
  // sites yield "/", Astro's own default, so nothing about them moves.
212
- return { config, packages, css, base: new URL(config.site).pathname };
303
+ return { config, packages, css, stats, base: new URL(config.site).pathname };
213
304
  }
214
305
  /**
215
306
  * Everything Astro is told, for one run. Build and dev share it verbatim —
@@ -248,6 +339,14 @@ function inlineConfig(opts, staged, { config, packages, css, base }) {
248
339
  /** Render the catalog site from `<outDir>/all.json` into `outDir`. */
249
340
  export async function buildSite(opts) {
250
341
  const inputs = await resolveInputs(opts);
342
+ // Before `stage`, and that is the whole trick: `outDir` is its last
343
+ // `public/` layer, which is the only reason a file sitting there survives
344
+ // Astro emptying `outDir` — the same route `all.json` already takes.
345
+ // Upstream of here, `compileIndex` has already `rmSync`'d `outDir`, so
346
+ // publishing any earlier writes into a directory about to be deleted.
347
+ if (inputs.stats) {
348
+ await fs.writeFile(path.join(opts.outDir, STATS_PUBLISHED), `${JSON.stringify(inputs.stats)}\n`);
349
+ }
251
350
  const staged = await stage(opts.root, opts.outDir);
252
351
  const astro = inlineConfig(opts, staged, inputs);
253
352
  // Astro routes its server build through `<cwd>/.astro/` whenever `outDir`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,47 @@ export interface CatalogPackage extends IndexRecord {
18
18
  replacedBy?: string;
19
19
  tags?: string[];
20
20
  logo?: string;
21
+ /** Publishing commit SHA, `-dirty` suffixed from a dirty tree. Never shown raw. */
22
+ revision?: string;
23
+ /** Maintainer. Only present when the artifact was authored or published with git. */
24
+ authors?: string;
25
+ /** Distributing organization; grim derives it from the repo namespace when unset. */
26
+ vendor?: string;
27
+ /** Project home page. */
28
+ url?: string;
29
+ /** Documentation URL. */
30
+ documentation?: string;
31
+ /** A skill's editor/runtime hint. Absent for every other kind. */
32
+ compatibility?: string;
33
+ /**
34
+ * Where to get help, from the description companion's manifest. Every
35
+ * channel is optional and the object itself is absent for a repository
36
+ * publishing no companion — the "Get help" block renders only when at
37
+ * least one channel is set, which for most repositories is never.
38
+ */
39
+ support?: {
40
+ issues?: string;
41
+ chat?: string;
42
+ contact?: string;
43
+ security?: string;
44
+ };
45
+ /**
46
+ * When this artifact last moved, as an RFC 3339 timestamp — its own
47
+ * `created` (a commit date, stable per digest) when it has one, and
48
+ * otherwise the first build that saw the current digest. Written by
49
+ * `enrich`, joined into the published `stats.json` at build time.
50
+ */
51
+ updated?: string;
52
+ /**
53
+ * Upvotes joined from the `stats.json` sidecar at build time. Absent means
54
+ * **unrated**, and never zero: an index that publishes no sidecar, a ref the
55
+ * sidecar omits, and a ref carrying other stats but no `rating` are the same
56
+ * absence, and none of them is an error. The site is anonymous — it is built
57
+ * once for everyone — so this is a count and never a "you voted" state.
58
+ */
59
+ rating?: {
60
+ up: number;
61
+ };
21
62
  }
22
63
  /**
23
64
  * The build-time payload `buildSite` injects through Vite `define`. Read it
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderer/types.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderer/types.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -9,13 +9,41 @@
9
9
  export declare const USER_AGENT = "grim-indexer-bot";
10
10
  export declare const TIMEOUT_MS = 30000;
11
11
  export declare const MAX_RESPONSE_BYTES: number;
12
+ /**
13
+ * The cap for the two calls that legitimately read more than a small JSON
14
+ * document: the enrichment checkpoint, which is the whole sidecar tree, and a
15
+ * ratings page, which carries every thread's full body — including bodies this
16
+ * bot did not write.
17
+ *
18
+ * The same ceiling `enrich` already accepts from one `grim` subprocess
19
+ * (`MAX_OUTPUT_BYTES`), so the largest thing this toolchain holds in memory is
20
+ * one number rather than three.
21
+ */
22
+ export declare const LARGE_RESPONSE_BYTES: number;
12
23
  export interface HttpResponse {
13
24
  /** HTTP status, or 0 when the request never completed. */
14
25
  status: number;
15
26
  body: string;
16
27
  header(name: string): string;
17
28
  }
18
- export declare function request(url: string, headers?: Record<string, string>): Promise<HttpResponse>;
29
+ /** Everything past a plain GET. Omitted leaves `fetch`'s own defaults. */
30
+ export interface RequestOptions {
31
+ method?: string;
32
+ body?: string;
33
+ /**
34
+ * Response-size cap for this call, in bytes. Defaults to
35
+ * [`MAX_RESPONSE_BYTES`], so every call site that does not ask keeps the
36
+ * reply it already got, byte for byte.
37
+ *
38
+ * Per-call because the default is sized for a small JSON document, and two
39
+ * callers legitimately read more: the enrichment checkpoint is the whole
40
+ * sidecar tree, and a ratings page carries every thread's full body. Both
41
+ * used to surface as `{status: 0}` — indistinguishable from a transport
42
+ * failure, which is how an oversized page got reported as one.
43
+ */
44
+ maxBytes?: number;
45
+ }
46
+ export declare function request(url: string, headers?: Record<string, string>, options?: RequestOptions): Promise<HttpResponse>;
19
47
  /** `request` plus a `JSON.parse` that yields `null` instead of throwing. */
20
48
  export declare function requestJson(url: string, headers?: Record<string, string>): Promise<{
21
49
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/validate/adapters/http.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AA4BD,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,OAAO,CAAC,YAAY,CAAC,CAoBvB;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAQ5C"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/validate/adapters/http.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AA4BD,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAQ5C"}
@@ -11,6 +11,17 @@
11
11
  export const USER_AGENT = "grim-indexer-bot";
12
12
  export const TIMEOUT_MS = 30_000;
13
13
  export const MAX_RESPONSE_BYTES = 1024 * 1024;
14
+ /**
15
+ * The cap for the two calls that legitimately read more than a small JSON
16
+ * document: the enrichment checkpoint, which is the whole sidecar tree, and a
17
+ * ratings page, which carries every thread's full body — including bodies this
18
+ * bot did not write.
19
+ *
20
+ * The same ceiling `enrich` already accepts from one `grim` subprocess
21
+ * (`MAX_OUTPUT_BYTES`), so the largest thing this toolchain holds in memory is
22
+ * one number rather than three.
23
+ */
24
+ export const LARGE_RESPONSE_BYTES = 16 * 1024 * 1024;
14
25
  async function readCapped(response, cap) {
15
26
  if (!response.body)
16
27
  return "";
@@ -37,17 +48,21 @@ async function readCapped(response, cap) {
37
48
  }
38
49
  return Buffer.concat(chunks).toString("utf8");
39
50
  }
40
- export async function request(url, headers = {}) {
51
+ export async function request(url, headers = {}, options = {}) {
41
52
  const none = { status: 0, body: "", header: () => "" };
42
53
  try {
43
54
  const response = await fetch(url, {
44
55
  headers: { "User-Agent": USER_AGENT, ...headers },
56
+ // Both `undefined` for a two-argument call, which is what `fetch` sees
57
+ // when neither is passed — the existing GET call sites are untouched.
58
+ method: options.method,
59
+ body: options.body,
45
60
  // ponytail: redirects are refused, not followed. If a real registry ever
46
61
  // needs one, re-run the host policy on the Location and follow one hop.
47
62
  redirect: "manual",
48
63
  signal: AbortSignal.timeout(TIMEOUT_MS),
49
64
  });
50
- const body = await readCapped(response, MAX_RESPONSE_BYTES);
65
+ const body = await readCapped(response, options.maxBytes ?? MAX_RESPONSE_BYTES);
51
66
  if (body === null)
52
67
  return none;
53
68
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/validate/adapters/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/validate/adapters/http.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoire-rs/indexer",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
4
4
  "description": "CLI + Astro integration for running your own grim package index",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -21,7 +21,15 @@
21
21
  # the site to pointers-only, never block a deploy that is otherwise
22
22
  # ready. `enrich` itself keeps any sidecar it fails to refresh. Set
23
23
  # `"enrich": false` in the `ci` block to drop these two steps entirely.
24
+ #
25
+ # `--seed` restores enrich/ from `<site>/enrich.json` - the checkpoint the
26
+ # last deploy published - before refreshing. Nothing is committed here, so
27
+ # without it this job starts from an empty tree every run: every digest
28
+ # probe compares against nothing, every README and payload is downloaded
29
+ # again, and every artifact without a `created` of its own is re-dated to
30
+ # this build. A checkpoint that cannot be read is a warning, not a
31
+ # failure; the run just does the full download it used to do.
24
32
  - name: Refresh package metadata
25
33
  run: |
26
- npm run enrich ||
34
+ npm run enrich -- --seed ||
27
35
  echo "::warning::enrich failed - building without READMEs, logos and version lists"
@@ -7,7 +7,7 @@ name: pages
7
7
 
8
8
  on:
9
9
  push:
10
- branches: [{{defaultBranch}}]
10
+ branches: [{{defaultBranch}}]{{githubRatingsSchedule}}
11
11
  workflow_dispatch:
12
12
 
13
13
  # Default-deny at the top; every job pays for exactly what it needs.
@@ -19,7 +19,7 @@ concurrency:
19
19
 
20
20
  jobs:
21
21
  build:
22
- runs-on: ubuntu-latest
22
+ runs-on: ubuntu-latest{{githubRatingsBuildKeys}}
23
23
  permissions:
24
24
  contents: read
25
25
  steps:
@@ -40,12 +40,17 @@ jobs:
40
40
  # here, in the job that publishes the site.
41
41
  - name: Install
42
42
  run: npm ci --ignore-scripts
43
- {{githubEnrichSteps}}
43
+
44
+ # Ahead of the build, not after it: it only resolves this repository's
45
+ # Pages URL and sets outputs, and a step that runs before the build - the
46
+ # ratings seed - cross-checks `site` against that URL before it reads the
47
+ # published sidecar.
48
+ - id: pages
49
+ uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
50
+ {{githubEnrichSteps}}{{githubRatingsSeedSteps}}
44
51
  - name: Build index
45
52
  run: npm run build
46
53
 
47
- - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
48
-
49
54
  - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
50
55
  with:
51
56
  path: dist
@@ -62,3 +67,4 @@ jobs:
62
67
  steps:
63
68
  - id: deployment
64
69
  uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
70
+ {{githubRatingsJob}}