@grimoire-rs/indexer 0.1.8 → 0.2.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 (42) hide show
  1. package/README.md +38 -0
  2. package/dist/cli/init.js +1 -1
  3. package/dist/cli/init.js.map +1 -1
  4. package/dist/config.d.ts +21 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +19 -2
  7. package/dist/config.js.map +1 -1
  8. package/dist/enrich/index.d.ts.map +1 -1
  9. package/dist/enrich/index.js +62 -0
  10. package/dist/enrich/index.js.map +1 -1
  11. package/dist/renderer/astro/components/BrandMark.d.ts +14 -0
  12. package/dist/renderer/astro/components/BrandMark.d.ts.map +1 -0
  13. package/dist/renderer/astro/components/BrandMark.js +16 -0
  14. package/dist/renderer/astro/components/BrandMark.js.map +1 -0
  15. package/dist/renderer/astro/components/BrandMark.tsx +19 -0
  16. package/dist/renderer/astro/components/Catalog.d.ts.map +1 -1
  17. package/dist/renderer/astro/components/Catalog.js +310 -18
  18. package/dist/renderer/astro/components/Catalog.js.map +1 -1
  19. package/dist/renderer/astro/components/Catalog.tsx +445 -63
  20. package/dist/renderer/astro/components/CommandField.astro +43 -0
  21. package/dist/renderer/astro/components/PickerMenu.astro +68 -0
  22. package/dist/renderer/astro/components/VersionMenu.astro +6 -2
  23. package/dist/renderer/astro/content.config.ts +23 -5
  24. package/dist/renderer/astro/layouts/Base.astro +794 -66
  25. package/dist/renderer/astro/lib/catalog.d.ts +24 -0
  26. package/dist/renderer/astro/lib/catalog.d.ts.map +1 -1
  27. package/dist/renderer/astro/lib/catalog.js +62 -0
  28. package/dist/renderer/astro/lib/catalog.js.map +1 -1
  29. package/dist/renderer/astro/lib/catalog.ts +62 -0
  30. package/dist/renderer/astro/lib/code.d.ts +22 -0
  31. package/dist/renderer/astro/lib/code.d.ts.map +1 -0
  32. package/dist/renderer/astro/lib/code.js +21 -0
  33. package/dist/renderer/astro/lib/code.js.map +1 -0
  34. package/dist/renderer/astro/lib/code.ts +21 -0
  35. package/dist/renderer/astro/pages/index.astro +144 -36
  36. package/dist/renderer/astro/pages/p/[...slug].astro +403 -55
  37. package/dist/renderer/index.d.ts +23 -0
  38. package/dist/renderer/index.d.ts.map +1 -1
  39. package/dist/renderer/index.js +117 -30
  40. package/dist/renderer/index.js.map +1 -1
  41. package/package.json +5 -1
  42. package/dist/renderer/astro/components/CopyButton.astro +0 -24
@@ -6,9 +6,10 @@
6
6
  import fs from "node:fs/promises";
7
7
  import path from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
- import { build } from "astro";
9
+ import { build, dev } from "astro";
10
10
  import preact from "@astrojs/preact";
11
11
  import { resolveConfig } from "../config.js";
12
+ import { SHIKI_THEMES } from "./astro/lib/code.js";
12
13
  /** Thrown when `<outDir>/all.json` is missing or malformed. */
13
14
  export class RenderInputError extends Error {
14
15
  constructor(message) {
@@ -101,10 +102,30 @@ async function readCustomCss(root, customCss) {
101
102
  * the staged root gets a `node_modules/` of symlinks to wherever *this*
102
103
  * package's copies actually live.
103
104
  */
104
- const RUNTIME_DEPS = ["astro", "@astrojs/preact", "preact"];
105
+ const RUNTIME_DEPS = ["astro", "@astrojs/preact", "preact", "lucide-preact", "@mdi/js"];
105
106
  // Node refuses to create a directory symlink on Windows without elevation;
106
107
  // a junction needs no privilege and behaves the same for resolution.
107
108
  const LINK_TYPE = process.platform === "win32" ? "junction" : "dir";
109
+ /**
110
+ * Locate a dependency's installed directory, to symlink into the staged root.
111
+ *
112
+ * Resolving `<dep>/package.json` would be the obvious probe, and it is what
113
+ * this used to do — but a package with an `exports` map is entitled to keep
114
+ * its manifest private, and `lucide-preact` does. Resolving the package's
115
+ * own entry point always works, so walk up from there to the directory the
116
+ * specifier names.
117
+ */
118
+ function packageRoot(dep) {
119
+ const suffix = path.sep + dep.split("/").join(path.sep);
120
+ let dir = path.dirname(fileURLToPath(import.meta.resolve(dep)));
121
+ while (!dir.endsWith(suffix)) {
122
+ const parent = path.dirname(dir);
123
+ if (parent === dir)
124
+ throw new Error(`cannot locate the installed root of ${dep}`);
125
+ dir = parent;
126
+ }
127
+ return dir;
128
+ }
108
129
  /**
109
130
  * Build the directory Astro treats as its project root, for one build.
110
131
  *
@@ -128,15 +149,18 @@ const LINK_TYPE = process.platform === "win32" ? "junction" : "dir";
128
149
  * `outDir`. That last layer is the point — Astro empties `outDir` before it
129
150
  * builds, and `/all.json` is a frozen public URL that must survive.
130
151
  */
131
- async function stage(root, outDir) {
152
+ async function stage(root, outDir, srcDir) {
132
153
  const dir = await fs.mkdtemp(path.join(root, ".index-"));
133
- const src = path.join(dir, "src");
134
- await fs.cp(ASTRO_SRC_DIR, src, { recursive: true });
154
+ // A caller-supplied `srcDir` is used in place of the staged copy: Vite
155
+ // watches `srcDir` directly, so dev edits in the working tree hot-reload.
156
+ // A copy would freeze the templates at server start.
157
+ const src = srcDir ?? path.join(dir, "src");
158
+ if (!srcDir)
159
+ await fs.cp(ASTRO_SRC_DIR, src, { recursive: true });
135
160
  for (const dep of RUNTIME_DEPS) {
136
- const real = path.dirname(fileURLToPath(import.meta.resolve(`${dep}/package.json`)));
137
161
  const link = path.join(dir, "node_modules", dep);
138
162
  await fs.mkdir(path.dirname(link), { recursive: true }); // `@scope/` needs its dir
139
- await fs.symlink(real, link, LINK_TYPE);
163
+ await fs.symlink(packageRoot(dep), link, LINK_TYPE);
140
164
  }
141
165
  // `content.config.ts` globs `./enrich` relative to the Astro root, so the
142
166
  // index repo's tree has to appear there. Absent is fine: the glob loader
@@ -153,8 +177,14 @@ async function stage(root, outDir) {
153
177
  }
154
178
  return { dir, src };
155
179
  }
156
- /** Render the catalog site from `<outDir>/all.json` into `outDir`. */
157
- export async function buildSite(opts) {
180
+ /**
181
+ * Read and validate every input Astro will be handed.
182
+ *
183
+ * Runs **before** `stage`, and must keep doing so: a bad `all.json` or an
184
+ * escaping `customCss` has to fail with its own error and leave no scratch
185
+ * directory behind.
186
+ */
187
+ async function resolveInputs(opts) {
158
188
  const config = resolveConfig(opts.config);
159
189
  const packages = await readPackages(opts.outDir);
160
190
  const css = await readCustomCss(opts.root, config.customCss);
@@ -163,8 +193,47 @@ export async function buildSite(opts) {
163
193
  // `base` — which covers everything Astro emits itself — and the same value
164
194
  // reaches the hand-written URLs through `astro/lib/base.ts`. Domain-rooted
165
195
  // sites yield "/", Astro's own default, so nothing about them moves.
166
- const base = new URL(config.site).pathname;
196
+ return { config, packages, css, base: new URL(config.site).pathname };
197
+ }
198
+ /**
199
+ * Everything Astro is told, for one run. Build and dev share it verbatim —
200
+ * a preview rendered from a different config would be a preview of nothing.
201
+ */
202
+ function inlineConfig(opts, staged, { config, packages, css, base }) {
203
+ return {
204
+ // The staged dir, never the index repo — see `stage`.
205
+ root: staged.dir,
206
+ // The index repo owns no Astro config; picking one up would let a
207
+ // stray file silently change the frozen routes.
208
+ configFile: false,
209
+ srcDir: staged.src,
210
+ publicDir: path.join(staged.dir, "public"),
211
+ outDir: opts.outDir,
212
+ site: config.site,
213
+ base,
214
+ integrations: [preact()],
215
+ // Shiki is what Astro already ships (and what VS Code renders with), so
216
+ // this configures it rather than adding a highlighter. Dual themes make
217
+ // it follow the page: Shiki emits both colours per token, one as an
218
+ // inline style and one as `--shiki-dark`, and Base.astro's stylesheet
219
+ // picks between them. A single theme was dark on a light page.
220
+ markdown: {
221
+ shikiConfig: { themes: SHIKI_THEMES, wrap: false },
222
+ },
223
+ vite: {
224
+ define: {
225
+ __GRIMOIRE_DATA__: JSON.stringify({ config, packages, css }),
226
+ __GRIMOIRE_BASE__: JSON.stringify(base),
227
+ },
228
+ plugins: [bundlePreactRenderer],
229
+ },
230
+ };
231
+ }
232
+ /** Render the catalog site from `<outDir>/all.json` into `outDir`. */
233
+ export async function buildSite(opts) {
234
+ const inputs = await resolveInputs(opts);
167
235
  const staged = await stage(opts.root, opts.outDir);
236
+ const astro = inlineConfig(opts, staged, inputs);
168
237
  // Astro routes its server build through `<cwd>/.astro/` whenever `outDir`
169
238
  // is not under `process.cwd()` (`getOutDirWithinCwd`). That fallback is
170
239
  // wanted here: the built prerender entry is imported by plain Node, so it
@@ -173,30 +242,48 @@ export async function buildSite(opts) {
173
242
  const cwd = process.cwd();
174
243
  process.chdir(staged.dir);
175
244
  try {
176
- await build({
177
- // The staged dir, never the index repo — see `stage`.
178
- root: staged.dir,
179
- // The index repo owns no Astro config; picking one up would let a
180
- // stray file silently change the frozen routes.
181
- configFile: false,
182
- srcDir: staged.src,
183
- publicDir: path.join(staged.dir, "public"),
184
- outDir: opts.outDir,
185
- site: config.site,
186
- base,
187
- integrations: [preact()],
188
- vite: {
189
- define: {
190
- __GRIMOIRE_DATA__: JSON.stringify({ config, packages, css }),
191
- __GRIMOIRE_BASE__: JSON.stringify(base),
192
- },
193
- plugins: [bundlePreactRenderer],
194
- },
195
- });
245
+ await build(astro);
196
246
  }
197
247
  finally {
198
248
  process.chdir(cwd);
199
249
  await fs.rm(staged.dir, { recursive: true, force: true });
200
250
  }
201
251
  }
252
+ /**
253
+ * Serve the same site `buildSite` would emit, with HMR — the review loop for
254
+ * a rendering change, so the look can be judged without cutting a release.
255
+ *
256
+ * The staged dir and the chdir both outlive the call, because the server
257
+ * does: Vite resolves the staged `node_modules` on every request. `stop()`
258
+ * undoes both.
259
+ */
260
+ export async function devSite(opts) {
261
+ const inputs = await resolveInputs(opts);
262
+ const staged = await stage(opts.root, opts.outDir, opts.srcDir);
263
+ const astro = inlineConfig(opts, staged, inputs);
264
+ const cwd = process.cwd();
265
+ process.chdir(staged.dir);
266
+ try {
267
+ const server = await dev({ ...astro, server: { port: opts.port } });
268
+ const { address, port } = server.address;
269
+ const host = address === "::" || address === "0.0.0.0" ? "localhost" : address;
270
+ // No trailing slash on a subpath base: Astro's dev router registers the
271
+ // base itself as the landing route, and `/index-repo/` 404s where
272
+ // `/index-repo` renders. (`base` is already "/" for a domain-rooted
273
+ // site, which is why it is interpolated rather than joined.)
274
+ return {
275
+ url: `http://${host}:${port}${astro.base}`,
276
+ async stop() {
277
+ await server.stop();
278
+ process.chdir(cwd);
279
+ await fs.rm(staged.dir, { recursive: true, force: true });
280
+ },
281
+ };
282
+ }
283
+ catch (err) {
284
+ process.chdir(cwd);
285
+ await fs.rm(staged.dir, { recursive: true, force: true });
286
+ throw err;
287
+ }
288
+ }
202
289
  //# sourceMappingURL=index.js.map
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoire-rs/indexer",
3
- "version": "0.1.8",
3
+ "version": "0.2.0",
4
4
  "description": "CLI + Astro integration for running your own grim package index",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -26,6 +26,8 @@
26
26
  },
27
27
  "scripts": {
28
28
  "build": "tsc -p tsconfig.json && mkdir -p dist/renderer/astro dist/renderer/public && cp -r src/renderer/astro/. dist/renderer/astro/ && cp -r src/renderer/public/. dist/renderer/public/",
29
+ "dev": "npm run build && node scripts/dev.mjs",
30
+ "dev:smoke": "npm run build && node scripts/dev.mjs --smoke",
29
31
  "test": "vitest run",
30
32
  "lint": "eslint .",
31
33
  "typecheck": "tsc --noEmit"
@@ -43,8 +45,10 @@
43
45
  "dependencies": {
44
46
  "@astrojs/preact": "^6.0.1",
45
47
  "@clack/prompts": "^1.7.0",
48
+ "@mdi/js": "^7.4.47",
46
49
  "astro": "^7.1.4",
47
50
  "commander": "^15.0.0",
51
+ "lucide-preact": "^1.27.0",
48
52
  "preact": "^10.29.7"
49
53
  },
50
54
  "repository": {
@@ -1,24 +0,0 @@
1
- ---
2
- // Labelled copy button. The click handler is the shared `[data-copy]`
3
- // listener in Base.astro — this component only renders the markup that
4
- // listener expects (a `<span>` label it can swap to "copied").
5
- interface Props {
6
- value: string;
7
- label: string;
8
- }
9
- const { value, label } = Astro.props;
10
- ---
11
-
12
- <button type="button" class="copy" data-copy={value} aria-label={label}>
13
- <svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true">
14
- <path
15
- fill="currentColor"
16
- d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"
17
- ></path>
18
- <path
19
- fill="currentColor"
20
- d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"
21
- ></path>
22
- </svg>
23
- <span>copy</span>
24
- </button>