narrarium-astro-reader 0.1.3 → 0.1.4

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 (63) hide show
  1. package/README.md +51 -16
  2. package/cli-dist/lib/assets.d.ts +1 -0
  3. package/cli-dist/lib/assets.d.ts.map +1 -1
  4. package/cli-dist/lib/assets.js +2 -1
  5. package/cli-dist/lib/assets.js.map +1 -1
  6. package/cli-dist/lib/canon.d.ts +1 -0
  7. package/cli-dist/lib/canon.d.ts.map +1 -1
  8. package/cli-dist/lib/canon.js +39 -0
  9. package/cli-dist/lib/canon.js.map +1 -1
  10. package/cli-dist/lib/glossary.d.ts +3 -1
  11. package/cli-dist/lib/glossary.d.ts.map +1 -1
  12. package/cli-dist/lib/glossary.js +87 -30
  13. package/cli-dist/lib/glossary.js.map +1 -1
  14. package/cli-dist/lib/public-canon.d.ts +36 -0
  15. package/cli-dist/lib/public-canon.d.ts.map +1 -0
  16. package/cli-dist/lib/public-canon.js +324 -0
  17. package/cli-dist/lib/public-canon.js.map +1 -0
  18. package/cli-dist/lib/reader-mode.d.ts +2 -0
  19. package/cli-dist/lib/reader-mode.d.ts.map +1 -0
  20. package/cli-dist/lib/reader-mode.js +7 -0
  21. package/cli-dist/lib/reader-mode.js.map +1 -0
  22. package/cli-dist/lib/search.d.ts +5 -1
  23. package/cli-dist/lib/search.d.ts.map +1 -1
  24. package/cli-dist/lib/search.js +30 -6
  25. package/cli-dist/lib/search.js.map +1 -1
  26. package/cli-dist/lib/spoilers.d.ts +11 -0
  27. package/cli-dist/lib/spoilers.d.ts.map +1 -0
  28. package/cli-dist/lib/spoilers.js +49 -0
  29. package/cli-dist/lib/spoilers.js.map +1 -0
  30. package/cli-dist/scaffold.d.ts.map +1 -1
  31. package/cli-dist/scaffold.js +23 -1
  32. package/cli-dist/scaffold.js.map +1 -1
  33. package/package.json +3 -2
  34. package/scripts/book-dev-utils.mjs +45 -0
  35. package/scripts/dev.mjs +7 -1
  36. package/scripts/doctor.mjs +24 -0
  37. package/scripts/export-epub.mjs +10 -2
  38. package/src/components/AssetFigure.astro +1 -0
  39. package/src/components/ReaderRuntime.astro +280 -10
  40. package/src/components/SiteSearch.astro +55 -2
  41. package/src/layouts/BaseLayout.astro +136 -8
  42. package/src/lib/assets.ts +3 -1
  43. package/src/lib/canon.ts +45 -0
  44. package/src/lib/glossary.ts +122 -36
  45. package/src/lib/public-canon.ts +391 -0
  46. package/src/lib/reader-mode.ts +9 -0
  47. package/src/lib/search.ts +36 -6
  48. package/src/lib/spoilers.ts +70 -0
  49. package/src/pages/chapters/[chapter].astro +34 -3
  50. package/src/pages/characters/[slug].astro +32 -38
  51. package/src/pages/characters/index.astro +27 -27
  52. package/src/pages/factions/[slug].astro +32 -37
  53. package/src/pages/factions/index.astro +27 -27
  54. package/src/pages/index.astro +23 -13
  55. package/src/pages/items/[slug].astro +32 -36
  56. package/src/pages/items/index.astro +27 -27
  57. package/src/pages/locations/[slug].astro +32 -34
  58. package/src/pages/locations/index.astro +27 -27
  59. package/src/pages/secrets/[slug].astro +31 -39
  60. package/src/pages/secrets/index.astro +34 -29
  61. package/src/pages/timeline/[slug].astro +32 -31
  62. package/src/pages/timeline/index.astro +35 -26
  63. package/src/scaffold.ts +27 -1
package/README.md CHANGED
@@ -22,33 +22,68 @@ npx narrarium-astro-reader reader --book-root .. --package-name my-book-reader
22
22
 
23
23
  ## What the reader includes
24
24
 
25
- - book landing page
26
- - chapter index and chapter reading pages
25
+ - book landing page plus chapter-by-chapter reading
27
26
  - previous, next, and jump chapter navigation
27
+ - reading preferences, bookmark, and continue-reading state stored locally
28
28
  - live search across canon, chapters, and scenes
29
- - character index and detail pages
30
- - location index and detail pages
31
- - faction index and detail pages
32
- - item index and detail pages
33
- - secret index and detail pages
34
- - timeline index and event detail pages
35
- - automatic rendering of canonical book, entity, chapter, and scene images when matching assets exist
36
- - automatic EPUB export for `public/downloads/book.epub`
29
+ - character, location, faction, item, secret, and timeline indexes
30
+ - canon mention popups, backlinks, and asset rendering for book, entity, chapter, and scene art
31
+ - automatic EPUB export to `public/downloads/book.epub`
37
32
  - live watcher for book markdown, canon, and assets during `npm run dev`
38
- - web-only canon mention popups and light or dark theme toggle
39
- - popup tabs for overview, notes, metadata, and image previews
33
+ - `npm run doctor` for broken references, spoiler thresholds, asset metadata, and stale `plot.md` or `resumes/`
34
+ - optional EPUBCheck validation during export or build
40
35
  - starter GitHub Pages deployment workflow when scaffolded into a standalone app
41
36
 
37
+ ## Reader modes
38
+
39
+ The generated reader defaults to a spoiler-safe public mode.
40
+
41
+ In public mode:
42
+
43
+ - secrets stay hidden from the public atlas and nav
44
+ - direct canon pages fall back to teaser or locked views when `known_from` or `reveal_in` say a dossier is not safe yet
45
+ - search, canon popups, and backlinks follow the same thresholds
46
+
47
+ If you want an author-only or spoiler-friendly deployment, enable full canon mode:
48
+
49
+ ```bash
50
+ NARRARIUM_READER_CANON_MODE=full
51
+ # or
52
+ NARRARIUM_READER_ALLOW_FULL_CANON=true
53
+ ```
54
+
42
55
  ## Local development
43
56
 
57
+ Create `.env` from the example and point it at your book repo:
58
+
44
59
  ```bash
45
60
  cp .env.example .env
46
61
  npm install
47
62
  npm run dev
48
63
  ```
49
64
 
50
- The generated reader expects `NARRARIUM_BOOK_ROOT` to point at a Narrarium book repository.
51
- `npm run dev` now watches the linked book repo, regenerates the EPUB on changes, and triggers a full browser reload.
52
- `npm run build` also refreshes the EPUB automatically before Astro builds.
65
+ Typical `.env` values:
66
+
67
+ ```bash
68
+ NARRARIUM_BOOK_ROOT=..
69
+ # NARRARIUM_READER_CANON_MODE=full
70
+ # EPUBCHECK_CMD=epubcheck
71
+ # EPUBCHECK_JAR=/absolute/path/to/epubcheck.jar
72
+ ```
73
+
74
+ `npm run dev` watches the linked book repo, regenerates the EPUB on changes, and triggers a full browser reload.
75
+ `npm run build` refreshes the EPUB automatically before Astro builds the site.
76
+
77
+ ## Validation and export
78
+
79
+ ```bash
80
+ npm run doctor
81
+ npm run export:epub
82
+ npm run build
83
+ ```
84
+
85
+ If `EPUBCHECK_CMD` or `EPUBCHECK_JAR` is set, EPUB export and build also run EPUBCheck.
86
+
87
+ ## GitHub Pages
53
88
 
54
- You can also pass `--pages-domain example.com` when scaffolding to emit `public/CNAME` and a Pages workflow already pointed at that domain.
89
+ You can pass `--pages-domain example.com` when scaffolding to emit `public/CNAME` and a Pages workflow already pointed at that domain.
@@ -1,6 +1,7 @@
1
1
  export type ReaderFigure = {
2
2
  src: string;
3
3
  alt: string;
4
+ caption?: string;
4
5
  aspectRatio: string;
5
6
  orientation: "portrait" | "landscape" | "square";
6
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/lib/assets.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;CAClD,CAAC;AAEF,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAapH"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/lib/assets.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;CAClD,CAAC;AAEF,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAcpH"}
@@ -10,7 +10,8 @@ export async function loadAssetFigure(subject, alt, assetKind) {
10
10
  const buffer = await readFile(asset.imagePath);
11
11
  return {
12
12
  src: `data:${mimeTypeForExtension(path.extname(asset.imagePath))};base64,${buffer.toString("base64")}`,
13
- alt,
13
+ alt: typeof asset.metadata.alt_text === "string" && asset.metadata.alt_text.trim() ? asset.metadata.alt_text : alt,
14
+ caption: typeof asset.metadata.caption === "string" && asset.metadata.caption.trim() ? asset.metadata.caption : undefined,
14
15
  aspectRatio: asset.metadata.aspect_ratio,
15
16
  orientation: asset.metadata.orientation,
16
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/lib/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,GAAW,EAAE,SAAkB;IACpF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,QAAQ,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACtG,GAAG;QACH,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY;QACxC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,QAAQ,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/lib/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAUxC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,GAAW,EAAE,SAAkB;IACpF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,QAAQ,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACtG,GAAG,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAClH,OAAO,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACzH,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY;QACxC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,QAAQ,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -12,5 +12,6 @@ export type ValuePart = {
12
12
  };
13
13
  export declare function resolveValueParts(value: unknown): Promise<ValuePart[]>;
14
14
  export declare function loadRelatedCanonLinks(id: string, values: unknown): Promise<CanonLink[]>;
15
+ export declare function loadStoryMentionLinks(id: string, maxChapterNumber?: number): Promise<CanonLink[]>;
15
16
  export declare function resolveReference(value: string): Promise<CanonLink | null>;
16
17
  //# sourceMappingURL=canon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canon.d.ts","sourceRoot":"","sources":["../../src/lib/canon.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAQnC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoB5E;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAwB7F;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAS/E"}
1
+ {"version":3,"file":"canon.d.ts","sourceRoot":"","sources":["../../src/lib/canon.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAQnC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoB5E;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAwB7F;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAgBvG;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAS/E"}
@@ -1,6 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { listChapters, listEntities, listRelatedCanon, readChapter, toPosixPath } from "narrarium";
3
3
  import { getBookRoot } from "./book.js";
4
+ import { loadChapterOrder } from "./spoilers.js";
4
5
  const entityKinds = ["character", "location", "faction", "item", "secret", "timeline-event"];
5
6
  let referenceIndexPromise = null;
6
7
  export async function resolveValueParts(value) {
@@ -45,6 +46,23 @@ export async function loadRelatedCanonLinks(id, values) {
45
46
  }
46
47
  return links;
47
48
  }
49
+ export async function loadStoryMentionLinks(id, maxChapterNumber) {
50
+ const hits = await listRelatedCanon(getBookRoot(), id, { limit: 12 });
51
+ const chapterOrder = maxChapterNumber !== undefined ? await loadChapterOrder() : null;
52
+ const chapterLimit = maxChapterNumber ?? Number.MAX_SAFE_INTEGER;
53
+ const seen = new Set();
54
+ const links = [];
55
+ for (const hit of hits) {
56
+ const href = resolveStoryPathToHref(hit.path);
57
+ if (!href || seen.has(href))
58
+ continue;
59
+ if (chapterOrder && isStoryHitAfterChapter(hit.path, chapterOrder, chapterLimit))
60
+ continue;
61
+ seen.add(href);
62
+ links.push({ href, label: hit.title, kind: hit.type });
63
+ }
64
+ return links;
65
+ }
48
66
  export async function resolveReference(value) {
49
67
  const normalized = value.trim();
50
68
  if (!normalized)
@@ -126,6 +144,27 @@ function resolveContentPathToHref(filePath) {
126
144
  }
127
145
  return null;
128
146
  }
147
+ function resolveStoryPathToHref(filePath) {
148
+ const normalized = toPosixPath(filePath);
149
+ const chapterMatch = normalized.match(/^chapters\/([^/]+)\/chapter\.md$/);
150
+ if (chapterMatch) {
151
+ return `chapters/${chapterMatch[1]}/`;
152
+ }
153
+ const paragraphMatch = normalized.match(/^chapters\/([^/]+)\/([^/]+)\.md$/);
154
+ if (paragraphMatch) {
155
+ return `chapters/${paragraphMatch[1]}/#scene-${paragraphMatch[2]}`;
156
+ }
157
+ return null;
158
+ }
159
+ function isStoryHitAfterChapter(filePath, chapterOrder, maxChapterNumber) {
160
+ const normalized = toPosixPath(filePath);
161
+ const chapterMatch = normalized.match(/^chapters\/([^/]+)\//);
162
+ if (!chapterMatch?.[1]) {
163
+ return false;
164
+ }
165
+ const chapterNumber = chapterOrder.get(chapterMatch[1]);
166
+ return typeof chapterNumber === "number" && chapterNumber > maxChapterNumber;
167
+ }
129
168
  function buildFallbackReference(value) {
130
169
  if (value.startsWith("chapter:")) {
131
170
  const slug = value.slice("chapter:".length);
@@ -1 +1 @@
1
- {"version":3,"file":"canon.js","sourceRoot":"","sources":["../../src/lib/canon.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAsBxC,MAAM,WAAW,GAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAEjH,IAAI,qBAAqB,GAAmC,IAAI,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAc;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QACpE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,SAAS;YACX,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAU,EAAE,MAAe;IACrE,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;KAC7E,CAAC,CAAC;IAEH,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,qBAAqB,KAAK,mBAAmB,EAAE,CAAC;IAChD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAmB,IAAI,GAAG,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9F,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAEjC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,YAAY,OAAO,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1G,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,YAAY,CAAC,KAAK,EAAE,WAAW,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,YAAY,OAAO,CAAC,IAAI,WAAW,aAAa,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACvF,YAAY,CAAC,KAAK,EAAE,aAAa,OAAO,CAAC,IAAI,IAAI,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAqB,EAAE,GAAW,EAAE,IAAe;IACvE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,IAAsB,EAAE,IAAY;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,gBAAgB;YACnB,OAAO,YAAY,IAAI,GAAG,CAAC;QAC7B;YACE,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACvH,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC1E,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,YAAY,cAAc,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,YAAY,IAAI,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAChD,OAAO;YACL,IAAI,EAAE,YAAY,WAAW,WAAW,aAAa,EAAE;YACvD,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC;YAClC,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACpI,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"canon.js","sourceRoot":"","sources":["../../src/lib/canon.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,9 @@ export type GlossaryEntry = {
19
19
  bodyHtml?: string;
20
20
  imageSrc?: string;
21
21
  imageAlt?: string;
22
+ visibleFrom: number | null;
23
+ revealedFrom: number | null;
22
24
  };
23
- export declare function loadCanonGlossary(): Promise<GlossaryEntry[]>;
25
+ export declare function loadCanonGlossary(chapterNumber?: number): Promise<GlossaryEntry[]>;
24
26
  export {};
25
27
  //# sourceMappingURL=glossary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GACjB,WAAW,GACX,UAAU,GACV,SAAS,GACT,MAAM,GACN,QAAQ,GACR,gBAAgB,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAMF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAGlE"}
1
+ {"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"AAOA,KAAK,gBAAgB,GACjB,WAAW,GACX,UAAU,GACV,SAAS,GACT,MAAM,GACN,QAAQ,GACR,gBAAgB,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAKF,wBAAsB,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAUxF"}
@@ -2,52 +2,88 @@ import { listEntities, listRelatedCanon, readEntity, toPosixPath } from "narrari
2
2
  import { marked } from "marked";
3
3
  import { loadAssetFigure } from "./assets.js";
4
4
  import { getBookRoot } from "./book.js";
5
+ import { isFullCanonMode } from "./reader-mode.js";
6
+ import { formatChapterThreshold, getSpoilerAccess, loadChapterOrder } from "./spoilers.js";
5
7
  const entityKinds = ["character", "location", "faction", "item", "secret", "timeline-event"];
6
- let glossaryPromise = null;
7
- export async function loadCanonGlossary() {
8
- glossaryPromise ??= buildCanonGlossary();
8
+ const glossaryPromises = new Map();
9
+ export async function loadCanonGlossary(chapterNumber) {
10
+ const cacheKey = String(chapterNumber ?? "public");
11
+ let glossaryPromise = glossaryPromises.get(cacheKey);
12
+ if (!glossaryPromise) {
13
+ glossaryPromise = buildCanonGlossary(chapterNumber);
14
+ glossaryPromises.set(cacheKey, glossaryPromise);
15
+ }
9
16
  return glossaryPromise;
10
17
  }
11
- async function buildCanonGlossary() {
18
+ async function buildCanonGlossary(chapterNumber) {
12
19
  const root = getBookRoot();
20
+ const chapterOrder = await loadChapterOrder();
21
+ const fullMode = isFullCanonMode();
13
22
  const groups = await Promise.all(entityKinds.map((kind) => listEntities(root, kind)));
14
- const entries = await Promise.all(groups.flatMap((entities, offset) => entities.map(async (entity) => {
23
+ const entries = [];
24
+ for (const [offset, entities] of groups.entries()) {
15
25
  const kind = entityKinds[offset];
16
- const id = String(entity.metadata.id ?? `${kind}:${entity.slug}`);
17
- const label = String(entity.metadata.name ?? entity.metadata.title ?? entity.slug);
18
- const fullEntry = await readEntity(root, kind, entity.slug);
19
- const related = await listRelatedCanon(root, id, { limit: 8 });
20
- const figure = await loadAssetFigure(id, label);
21
- return {
22
- id,
23
- kind,
24
- kindLabel: kindLabel(kind),
25
- label,
26
- href: entityHref(kind, entity.slug),
27
- terms: uniqueStrings([label, ...readAliases(entity.metadata.aliases)]),
28
- summary: summaryFor(kind, entity.metadata),
29
- meta: metaFor(kind, entity.metadata),
30
- metadataEntries: metadataEntriesFor(kind, entity.metadata),
31
- mentions: mentionLinksFor(related),
32
- bodyHtml: fullEntry.body ? await marked.parse(fullEntry.body) : undefined,
33
- imageSrc: figure?.src,
34
- imageAlt: figure?.alt,
35
- };
36
- })));
26
+ for (const entity of entities) {
27
+ const fullEntry = await readEntity(root, kind, entity.slug);
28
+ const access = getSpoilerAccess(fullEntry.metadata, chapterOrder, chapterNumber);
29
+ if (!fullMode && !access.isVisible) {
30
+ continue;
31
+ }
32
+ if (!fullMode && kind === "secret" && (chapterNumber === undefined || !access.isRevealed)) {
33
+ continue;
34
+ }
35
+ const id = String(fullEntry.metadata.id ?? `${kind}:${entity.slug}`);
36
+ const label = String(fullEntry.metadata.name ?? fullEntry.metadata.title ?? entity.slug);
37
+ const related = await listRelatedCanon(root, id, { limit: 8 });
38
+ const figure = fullMode || access.isRevealed ? await loadAssetFigure(id, label) : null;
39
+ entries.push({
40
+ id,
41
+ kind,
42
+ kindLabel: kindLabel(kind),
43
+ label,
44
+ href: entityHref(kind, entity.slug),
45
+ terms: uniqueStrings(fullMode || access.isRevealed ? [label, ...readAliases(fullEntry.metadata.aliases)] : [label]),
46
+ summary: summaryFor(kind, fullEntry.metadata, access, fullMode),
47
+ meta: metaFor(kind, fullEntry.metadata, access, fullMode),
48
+ metadataEntries: metadataEntriesFor(kind, fullEntry.metadata, access, fullMode),
49
+ mentions: mentionLinksFor(related, chapterOrder, chapterNumber, fullMode),
50
+ bodyHtml: fullMode || access.isRevealed ? (fullEntry.body ? await marked.parse(fullEntry.body) : undefined) : undefined,
51
+ imageSrc: fullMode || access.isRevealed ? figure?.src : undefined,
52
+ imageAlt: fullMode || access.isRevealed ? figure?.alt : undefined,
53
+ visibleFrom: access.visibleFrom,
54
+ revealedFrom: access.revealedFrom,
55
+ });
56
+ }
57
+ }
37
58
  return entries.sort((left, right) => left.label.localeCompare(right.label));
38
59
  }
39
- function mentionLinksFor(hits) {
60
+ function mentionLinksFor(hits, chapterOrder, chapterNumber, allowFuture = false) {
40
61
  const seen = new Set();
41
62
  const links = [];
42
63
  for (const hit of hits) {
43
64
  const href = readerHrefFromPath(hit.path);
44
65
  if (!href || seen.has(href))
45
66
  continue;
67
+ const hitChapterNumber = chapterNumberForPath(hit.path, chapterOrder);
68
+ if (!allowFuture && typeof chapterNumber === "number" && hitChapterNumber !== null && hitChapterNumber > chapterNumber) {
69
+ continue;
70
+ }
71
+ if (!allowFuture && chapterNumber === undefined && hitChapterNumber !== null) {
72
+ continue;
73
+ }
46
74
  seen.add(href);
47
75
  links.push({ label: hit.title, href });
48
76
  }
49
77
  return links;
50
78
  }
79
+ function chapterNumberForPath(filePath, chapterOrder) {
80
+ const normalized = toPosixPath(filePath);
81
+ const chapterMatch = normalized.match(/^chapters\/([^/]+)\//);
82
+ if (!chapterMatch?.[1]) {
83
+ return null;
84
+ }
85
+ return chapterOrder.get(chapterMatch[1]) ?? null;
86
+ }
51
87
  function readerHrefFromPath(filePath) {
52
88
  const normalized = toPosixPath(filePath);
53
89
  const chapterMatch = normalized.match(/^chapters\/([^/]+)\/chapter\.md$/);
@@ -76,7 +112,16 @@ function kindLabel(kind) {
76
112
  return kind.charAt(0).toUpperCase() + kind.slice(1);
77
113
  }
78
114
  }
79
- function summaryFor(kind, metadata) {
115
+ function summaryFor(kind, metadata, access, fullMode) {
116
+ if (!fullMode && !access.isRevealed) {
117
+ if (kind === "secret") {
118
+ return `Hidden dossier. Full details unlock in ${formatChapterThreshold(access.revealedFrom)}.`;
119
+ }
120
+ if (access.revealedFrom !== null) {
121
+ return `Known in the story, but deeper canon notes stay locked until ${formatChapterThreshold(access.revealedFrom)}.`;
122
+ }
123
+ return `Canonical ${kindLabel(kind).toLowerCase()} entry.`;
124
+ }
80
125
  switch (kind) {
81
126
  case "character":
82
127
  return String(metadata.function_in_book ?? metadata.story_role ?? metadata.background_summary ?? "Canonical character entry.");
@@ -92,7 +137,13 @@ function summaryFor(kind, metadata) {
92
137
  return String(metadata.significance ?? metadata.function_in_book ?? "Canonical timeline event.");
93
138
  }
94
139
  }
95
- function metaFor(kind, metadata) {
140
+ function metaFor(kind, metadata, access, fullMode) {
141
+ if (!fullMode && !access.isRevealed) {
142
+ return compactStrings([
143
+ access.visibleFrom !== null ? `Known from ${formatChapterThreshold(access.visibleFrom)}` : undefined,
144
+ access.revealedFrom !== null ? `Revealed in ${formatChapterThreshold(access.revealedFrom)}` : undefined,
145
+ ]);
146
+ }
96
147
  switch (kind) {
97
148
  case "character":
98
149
  return compactStrings([metadata.role_tier, metadata.story_role, metadata.home_location]);
@@ -108,7 +159,13 @@ function metaFor(kind, metadata) {
108
159
  return compactStrings([metadata.date, metadata.function_in_book]);
109
160
  }
110
161
  }
111
- function metadataEntriesFor(kind, metadata) {
162
+ function metadataEntriesFor(kind, metadata, access, fullMode) {
163
+ if (!fullMode && !access.isRevealed) {
164
+ return compactEntries([
165
+ ["Known from", access.visibleFrom !== null ? formatChapterThreshold(access.visibleFrom) : undefined],
166
+ ["Revealed in", access.revealedFrom !== null ? formatChapterThreshold(access.revealedFrom) : undefined],
167
+ ]);
168
+ }
112
169
  switch (kind) {
113
170
  case "character":
114
171
  return compactEntries([
@@ -1 +1 @@
1
- {"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { EntityType } from "narrarium";
2
+ import { type ReaderFigure } from "./assets.js";
3
+ import { type CanonLink } from "./canon.js";
4
+ type CanonEntityDocument = {
5
+ slug: string;
6
+ metadata: Record<string, unknown>;
7
+ body: string;
8
+ };
9
+ export type CanonIndexCard = {
10
+ slug: string;
11
+ label: string;
12
+ eyebrow: string;
13
+ summary: string;
14
+ chips: string[];
15
+ figure: ReaderFigure | null;
16
+ locked: boolean;
17
+ unlockHint?: string;
18
+ };
19
+ export type CanonPageView = {
20
+ mode: "full" | "teaser" | "locked";
21
+ title: string;
22
+ eyebrow: string;
23
+ description: string;
24
+ metaEntries: Array<[string, unknown]>;
25
+ figure: ReaderFigure | null;
26
+ html?: string;
27
+ relatedLinks: CanonLink[];
28
+ storyLinks: CanonLink[];
29
+ notice?: string;
30
+ };
31
+ export declare function buildPublicCanonIndexCards(kind: EntityType, entities: CanonEntityDocument[]): Promise<CanonIndexCard[]>;
32
+ export declare function countPublicCanonEntries(kind: EntityType, entities: CanonEntityDocument[]): Promise<number>;
33
+ export declare function buildCanonPageView(kind: EntityType, entity: CanonEntityDocument): Promise<CanonPageView>;
34
+ export declare function publicTimelineNotice(): string | null;
35
+ export {};
36
+ //# sourceMappingURL=public-canon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-canon.d.ts","sourceRoot":"","sources":["../../src/lib/public-canon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAI1F,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhH;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAuD9G;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD"}