@wizzlethorpe/vaults 0.6.1 → 0.8.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 (102) hide show
  1. package/README.md +135 -17
  2. package/dist/build.js +433 -181
  3. package/dist/build.js.map +1 -1
  4. package/dist/commands/build.js +4 -4
  5. package/dist/commands/build.js.map +1 -1
  6. package/dist/commands/init.js +13 -10
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/password.js +3 -1
  9. package/dist/commands/password.js.map +1 -1
  10. package/dist/commands/patreon.js +30 -20
  11. package/dist/commands/patreon.js.map +1 -1
  12. package/dist/commands/preview.js +10 -8
  13. package/dist/commands/preview.js.map +1 -1
  14. package/dist/commands/push.js +11 -9
  15. package/dist/commands/push.js.map +1 -1
  16. package/dist/commands/role.js +5 -0
  17. package/dist/commands/role.js.map +1 -1
  18. package/dist/config.js +30 -15
  19. package/dist/config.js.map +1 -1
  20. package/dist/escape.js +29 -0
  21. package/dist/escape.js.map +1 -0
  22. package/dist/favicon.js +3 -36
  23. package/dist/favicon.js.map +1 -1
  24. package/dist/foundry-importer.js +61 -0
  25. package/dist/foundry-importer.js.map +1 -0
  26. package/dist/images.js +0 -30
  27. package/dist/images.js.map +1 -1
  28. package/dist/index.js +37 -4
  29. package/dist/index.js.map +1 -1
  30. package/dist/migrate/0.6-legacy-auth-settings.js +96 -0
  31. package/dist/migrate/0.6-legacy-auth-settings.js.map +1 -0
  32. package/dist/migrate/0.7-vaults-dir.js +70 -0
  33. package/dist/migrate/0.7-vaults-dir.js.map +1 -0
  34. package/dist/migrate/registry.js +6 -0
  35. package/dist/migrate/registry.js.map +1 -0
  36. package/dist/migrate/run.js +38 -0
  37. package/dist/migrate/run.js.map +1 -0
  38. package/dist/migrate/types.js +8 -0
  39. package/dist/migrate/types.js.map +1 -0
  40. package/dist/paths.js +66 -0
  41. package/dist/paths.js.map +1 -0
  42. package/dist/render/auth-template.js +23 -141
  43. package/dist/render/auth-template.js.map +1 -1
  44. package/dist/render/bases.js +56 -44
  45. package/dist/render/bases.js.map +1 -1
  46. package/dist/render/callouts.js +29 -10
  47. package/dist/render/callouts.js.map +1 -1
  48. package/dist/render/embed.js +124 -26
  49. package/dist/render/embed.js.map +1 -1
  50. package/dist/render/extensions.js +68 -0
  51. package/dist/render/extensions.js.map +1 -0
  52. package/dist/render/external-links.js +32 -0
  53. package/dist/render/external-links.js.map +1 -0
  54. package/dist/render/footer.js +37 -0
  55. package/dist/render/footer.js.map +1 -0
  56. package/dist/render/frontmatter.js +17 -0
  57. package/dist/render/frontmatter.js.map +1 -0
  58. package/dist/render/handlers/assets.js +123 -0
  59. package/dist/render/handlers/assets.js.map +1 -0
  60. package/dist/render/handlers/builtin/dice.js +78 -0
  61. package/dist/render/handlers/builtin/dice.js.map +1 -0
  62. package/dist/render/handlers/builtin/fm-code.js +50 -0
  63. package/dist/render/handlers/builtin/fm-code.js.map +1 -0
  64. package/dist/render/handlers/builtin/fm.js +83 -0
  65. package/dist/render/handlers/builtin/fm.js.map +1 -0
  66. package/dist/render/handlers/builtin/index.js +10 -0
  67. package/dist/render/handlers/builtin/index.js.map +1 -0
  68. package/dist/render/handlers/builtin/inline-format.js +26 -0
  69. package/dist/render/handlers/builtin/inline-format.js.map +1 -0
  70. package/dist/render/handlers/builtin/statblock.js +491 -0
  71. package/dist/render/handlers/builtin/statblock.js.map +1 -0
  72. package/dist/render/handlers/dispatch.js +182 -0
  73. package/dist/render/handlers/dispatch.js.map +1 -0
  74. package/dist/render/handlers/loader.js +90 -0
  75. package/dist/render/handlers/loader.js.map +1 -0
  76. package/dist/render/handlers/types.js +60 -0
  77. package/dist/render/handlers/types.js.map +1 -0
  78. package/dist/render/image-srcs.js +42 -0
  79. package/dist/render/image-srcs.js.map +1 -0
  80. package/dist/render/layout.js +62 -9
  81. package/dist/render/layout.js.map +1 -1
  82. package/dist/render/pipeline.js +37 -8
  83. package/dist/render/pipeline.js.map +1 -1
  84. package/dist/render/preview.js +10 -5
  85. package/dist/render/preview.js.map +1 -1
  86. package/dist/render/slug.js +5 -0
  87. package/dist/render/slug.js.map +1 -1
  88. package/dist/render/styles.js +118 -11
  89. package/dist/render/styles.js.map +1 -1
  90. package/dist/render/wikilink.js +15 -4
  91. package/dist/render/wikilink.js.map +1 -1
  92. package/dist/scan.js +1 -1
  93. package/dist/scan.js.map +1 -1
  94. package/dist/settings.js +25 -4
  95. package/dist/settings.js.map +1 -1
  96. package/dist/version.js +36 -0
  97. package/dist/version.js.map +1 -0
  98. package/package.json +12 -12
  99. package/dist/api.js +0 -42
  100. package/dist/api.js.map +0 -1
  101. package/dist/render/mcp-template.js +0 -239
  102. package/dist/render/mcp-template.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/render/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/render/embed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ // File-extension constants + helpers shared across the build pipeline.
2
+ //
3
+ // Three independent vocabularies live here:
4
+ //
5
+ // IMAGE_EXT_RE — anything that can be referenced as ![[name.ext]].
6
+ // Superset of COMPRESSIBLE_EXT_RE; covers SVGs and
7
+ // similar formats that ship as-is rather than being
8
+ // recoded to webp.
9
+ //
10
+ // COMPRESSIBLE_EXT_RE — image formats that the build re-encodes to webp
11
+ // via sharp. Re-exported from images.ts so the
12
+ // historical import path keeps working.
13
+ //
14
+ // PASSTHROUGH_EXT_RE — non-image media that ride alongside the wiki
15
+ // (audio, video, PDF, epub, JSON). Shipped
16
+ // per-variant so e.g. DM-only audio doesn't leak
17
+ // to the public deploy. JSON support is here
18
+ // specifically so a page can reference a
19
+ // foundry.data_json file in its frontmatter.
20
+ // Anything outside this list is "unknown" and
21
+ // skipped unless include_unknown_files is on.
22
+ //
23
+ // contentTypeForExt() — best-effort MIME lookup keyed off the extension.
24
+ // Used by manifests so the deploy and Foundry sync
25
+ // agree on each file's content-type.
26
+ export { COMPRESSIBLE_EXT_RE } from "../images.js";
27
+ export const IMAGE_EXT_RE = /\.(png|jpe?g|webp|gif|svg|avif|tiff?|bmp|heic|apng)$/i;
28
+ export const PASSTHROUGH_EXT_RE = /\.(ogg|mp3|m4a|wav|flac|opus|aac|mp4|webm|mov|ogv|pdf|epub|json)$/i;
29
+ // Audio / video subsets used by the renderer's `![[file.ogg]]` /
30
+ // `![[clip.mp4]]` embed handling. Both are subsets of PASSTHROUGH_EXT_RE,
31
+ // kept separate so the embed plugin can emit the right HTML tag without
32
+ // also accepting PDFs or JSON as media embeds.
33
+ export const AUDIO_EXT_RE = /\.(ogg|mp3|m4a|wav|flac|opus|aac)$/i;
34
+ export const VIDEO_EXT_RE = /\.(mp4|webm|mov|ogv)$/i;
35
+ const CONTENT_TYPES = {
36
+ // Text / markup
37
+ html: "text/html; charset=utf-8",
38
+ md: "text/markdown; charset=utf-8",
39
+ markdown: "text/markdown; charset=utf-8",
40
+ txt: "text/plain; charset=utf-8",
41
+ json: "application/json",
42
+ yaml: "application/yaml",
43
+ yml: "application/yaml",
44
+ css: "text/css; charset=utf-8",
45
+ js: "application/javascript; charset=utf-8",
46
+ // Images
47
+ png: "image/png",
48
+ jpg: "image/jpeg",
49
+ jpeg: "image/jpeg",
50
+ webp: "image/webp",
51
+ gif: "image/gif",
52
+ svg: "image/svg+xml",
53
+ avif: "image/avif",
54
+ // Audio / video
55
+ mp3: "audio/mpeg",
56
+ wav: "audio/wav",
57
+ ogg: "audio/ogg",
58
+ m4a: "audio/mp4",
59
+ mp4: "video/mp4",
60
+ // Documents
61
+ pdf: "application/pdf",
62
+ };
63
+ /** Best-effort content-type lookup by extension. Falls back to octet-stream. */
64
+ export function contentTypeForExt(filename) {
65
+ const ext = filename.split(".").pop()?.toLowerCase() ?? "";
66
+ return CONTENT_TYPES[ext] ?? "application/octet-stream";
67
+ }
68
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/render/extensions.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,4CAA4C;AAC5C,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,6CAA6C;AAC7C,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,kEAAkE;AAClE,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,2EAA2E;AAC3E,uEAAuE;AACvE,mEAAmE;AACnE,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,YAAY,GAAG,uDAAuD,CAAC;AAEpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,oEAAoE,CAAC;AAEvG,iEAAiE;AACjE,0EAA0E;AAC1E,wEAAwE;AACxE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAErD,MAAM,aAAa,GAA2B;IAC5C,gBAAgB;IAChB,IAAI,EAAE,0BAA0B;IAChC,EAAE,EAAE,8BAA8B;IAClC,QAAQ,EAAE,8BAA8B;IACxC,GAAG,EAAE,2BAA2B;IAChC,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,yBAAyB;IAC9B,EAAE,EAAE,uCAAuC;IAC3C,SAAS;IACT,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,YAAY;IAClB,gBAAgB;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,YAAY;IACZ,GAAG,EAAE,iBAAiB;CACvB,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3D,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,32 @@
1
+ // Tag every external `[label](https://…)` markdown link with
2
+ // `target="_blank"` + `rel="noopener noreferrer"` so a click opens in a
3
+ // new tab instead of dropping the reader off the wiki. Internal wikilinks
4
+ // (handled by wikilinkPlugin) and relative URLs stay in-tab.
5
+ //
6
+ // Convention: ANY absolute http(s) URL counts as external — even if it
7
+ // points at the same hostname. Authors who want an in-tab cross-link
8
+ // should use a vault-relative path / wikilink, not the absolute URL.
9
+ import { visit } from "unist-util-visit";
10
+ const EXTERNAL_RE = /^https?:\/\//i;
11
+ export function externalLinksPlugin() {
12
+ return () => (tree) => {
13
+ visit(tree, "link", (node) => {
14
+ const url = node.url;
15
+ if (!url || !EXTERNAL_RE.test(url))
16
+ return;
17
+ // remark/mdast preserves arbitrary HAST props via `data.hProperties`,
18
+ // which remark-rehype copies onto the resulting <a>. Merge so we
19
+ // don't clobber anything an upstream pass might have set.
20
+ const existing = node.data?.hProperties ?? {};
21
+ node.data = {
22
+ ...node.data,
23
+ hProperties: {
24
+ ...existing,
25
+ target: "_blank",
26
+ rel: "noopener noreferrer",
27
+ },
28
+ };
29
+ });
30
+ };
31
+ }
32
+ //# sourceMappingURL=external-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-links.js","sourceRoot":"","sources":["../../src/render/external-links.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,wEAAwE;AACxE,0EAA0E;AAC1E,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AAIrE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,WAAW,GAAG,eAAe,CAAC;AAEpC,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QACpB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAU,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC3C,sEAAsE;YACtE,iEAAiE;YACjE,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,GAAG;gBACV,GAAG,IAAI,CAAC,IAAI;gBACZ,WAAW,EAAE;oBACX,GAAG,QAAQ;oBACX,MAAM,EAAE,QAAQ;oBAChB,GAAG,EAAE,qBAAqB;iBAC3B;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ // One-shot markdown renderer for the page footer.
2
+ //
3
+ // The footer setting is rendered ONCE per build (not per page) into a
4
+ // short HTML string, which is then embedded verbatim in every page's
5
+ // layout. Supports inline markdown (links, bold, italic) via the same
6
+ // remark/rehype stack the page renderer uses, so the output looks like
7
+ // any other rendered markdown.
8
+ import { unified } from "unified";
9
+ import remarkParse from "remark-parse";
10
+ import remarkGfm from "remark-gfm";
11
+ import remarkRehype from "remark-rehype";
12
+ import rehypeSanitize from "rehype-sanitize";
13
+ import rehypeStringify from "rehype-stringify";
14
+ /**
15
+ * Render a one-line markdown string to inline HTML. The remark pipeline
16
+ * always wraps single-paragraph input in `<p>…</p>`; we strip that wrapper
17
+ * so the result drops cleanly into a `<footer>` element.
18
+ *
19
+ * Returns an empty string for empty input so callers can branch on truthy.
20
+ */
21
+ export async function renderFooterHtml(markdown) {
22
+ const trimmed = markdown.trim();
23
+ if (!trimmed)
24
+ return "";
25
+ const file = await unified()
26
+ .use(remarkParse)
27
+ .use(remarkGfm)
28
+ .use(remarkRehype)
29
+ .use(rehypeSanitize)
30
+ .use(rehypeStringify)
31
+ .process(trimmed);
32
+ const html = String(file).trim();
33
+ return html.startsWith("<p>") && html.endsWith("</p>")
34
+ ? html.slice(3, -4)
35
+ : html;
36
+ }
37
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../src/render/footer.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,uEAAuE;AACvE,+BAA+B;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE;SACzB,GAAG,CAAC,WAAW,CAAC;SAChB,GAAG,CAAC,SAAS,CAAC;SACd,GAAG,CAAC,YAAY,CAAC;SACjB,GAAG,CAAC,cAAc,CAAC;SACnB,GAAG,CAAC,eAAe,CAAC;SACpB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
@@ -0,0 +1,17 @@
1
+ // Small markdown helpers shared across the rendering pipeline. Anything
2
+ // richer (parsing, validation) belongs in build.ts where the gray-matter
3
+ // pipeline already lives.
4
+ const FRONTMATTER_RE = /^---\r?\n[\s\S]*?\r?\n---\r?\n?/;
5
+ /**
6
+ * Remove a leading `---\n…\n---\n` block from the given markdown source.
7
+ * Returns the input unchanged if the source has no frontmatter block.
8
+ */
9
+ export function stripFrontmatter(source) {
10
+ return source.replace(FRONTMATTER_RE, "");
11
+ }
12
+ /** Pull the text of the first level-1 heading out of a markdown source. */
13
+ export function extractH1(source) {
14
+ const m = /^#\s+(.+)$/m.exec(source);
15
+ return m?.[1] ? m[1].trim() : null;
16
+ }
17
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/render/frontmatter.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,yEAAyE;AACzE,0BAA0B;AAE1B,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC"}
@@ -0,0 +1,123 @@
1
+ // Read and concatenate browser-side assets declared by handlers.
2
+ //
3
+ // Built-in handler assets are delivered as { source, content } pairs (so
4
+ // vaults-cli's own bundle ships the runtime without filesystem lookups).
5
+ // User handler assets are file paths relative to the handler's module file
6
+ // — those get read here, validated to live under the vault's
7
+ // .vaults/handlers/ tree (no `../../etc/passwd`), and included verbatim.
8
+ //
9
+ // Output:
10
+ // - js, css `_handlers.{js,css}` for the wiki
11
+ // - foundry: { js, css } | null subset bundle for the Foundry-VTT module
12
+ // containing only assets whose handler
13
+ // opted in via `assets.foundry`.
14
+ // Each unique source is included exactly once across both bundles.
15
+ import { readFile } from "node:fs/promises";
16
+ import { dirname, resolve, sep } from "node:path";
17
+ /**
18
+ * Built-in handlers attach their static assets to a side-table keyed on
19
+ * the handler reference. The bundler looks them up here.
20
+ */
21
+ const BUILTIN_ASSETS = new WeakMap();
22
+ export function registerBuiltinAssets(handler, assets) {
23
+ BUILTIN_ASSETS.set(handler, assets);
24
+ }
25
+ /**
26
+ * Build the concatenated `_handlers.{js,css}` for a deploy, plus a parallel
27
+ * Foundry-import subset of assets whose handler opted in via
28
+ * `assets.foundry.{scripts,styles} = true`.
29
+ *
30
+ * @param userHandlers handlers loaded from `.vaults/handlers/`
31
+ * @param builtinHandlers handlers shipped by vaults-cli core
32
+ * @param vaultPath absolute path to the vault root, used for path-validation
33
+ */
34
+ export async function bundleHandlerAssets(userHandlers, builtinHandlers, vaultPath) {
35
+ const seenJs = new Set();
36
+ const seenCss = new Set();
37
+ const jsParts = [];
38
+ const cssParts = [];
39
+ const foundryJsParts = [];
40
+ const foundryCssParts = [];
41
+ const foundryJsSeen = new Set();
42
+ const foundryCssSeen = new Set();
43
+ const handlersRoot = resolve(vaultPath, ".vaults/handlers");
44
+ const addToFoundry = (foundry, kind, source, body) => {
45
+ if (!foundry?.[kind])
46
+ return;
47
+ const seen = kind === "scripts" ? foundryJsSeen : foundryCssSeen;
48
+ if (seen.has(source))
49
+ return;
50
+ seen.add(source);
51
+ (kind === "scripts" ? foundryJsParts : foundryCssParts).push(`/* ${source} */\n${body}`);
52
+ };
53
+ for (const h of builtinHandlers) {
54
+ const inline = BUILTIN_ASSETS.get(h);
55
+ if (!inline)
56
+ continue;
57
+ for (const a of inline.scripts ?? []) {
58
+ if (!seenJs.has(a.source)) {
59
+ seenJs.add(a.source);
60
+ jsParts.push(`/* ${a.source} */\n${a.content}`);
61
+ }
62
+ addToFoundry(inline.foundry, "scripts", a.source, a.content);
63
+ }
64
+ for (const a of inline.styles ?? []) {
65
+ if (!seenCss.has(a.source)) {
66
+ seenCss.add(a.source);
67
+ cssParts.push(`/* ${a.source} */\n${a.content}`);
68
+ }
69
+ addToFoundry(inline.foundry, "styles", a.source, a.content);
70
+ }
71
+ }
72
+ for (const { handler, sourcePath } of userHandlers) {
73
+ const baseDir = dirname(sourcePath);
74
+ for (const rel of handler.assets?.scripts ?? []) {
75
+ const abs = resolveAssetPath(handlersRoot, baseDir, rel);
76
+ if (seenJs.has(abs))
77
+ continue;
78
+ seenJs.add(abs);
79
+ const body = await readFile(abs, "utf8");
80
+ const labeled = `/* ${rel} (${abs}) */\n${body}`;
81
+ jsParts.push(labeled);
82
+ addToFoundry(handler.assets?.foundry, "scripts", abs, labeled);
83
+ }
84
+ for (const rel of handler.assets?.styles ?? []) {
85
+ const abs = resolveAssetPath(handlersRoot, baseDir, rel);
86
+ if (seenCss.has(abs))
87
+ continue;
88
+ seenCss.add(abs);
89
+ const body = await readFile(abs, "utf8");
90
+ const labeled = `/* ${rel} (${abs}) */\n${body}`;
91
+ cssParts.push(labeled);
92
+ addToFoundry(handler.assets?.foundry, "styles", abs, labeled);
93
+ }
94
+ }
95
+ const hasFoundry = foundryJsParts.length > 0 || foundryCssParts.length > 0;
96
+ return {
97
+ js: jsParts.join("\n\n"),
98
+ css: cssParts.join("\n\n"),
99
+ foundry: hasFoundry
100
+ ? { js: foundryJsParts.join("\n\n"), css: foundryCssParts.join("\n\n") }
101
+ : null,
102
+ };
103
+ }
104
+ /**
105
+ * Resolve a handler asset path and require it lives under .vaults/handlers/.
106
+ * Throws on escape attempts so a typo or malicious manifest fails the build
107
+ * instead of silently shipping nothing.
108
+ */
109
+ function resolveAssetPath(handlersRoot, baseDir, rel) {
110
+ const abs = resolve(baseDir, rel);
111
+ if (!isWithin(handlersRoot, abs)) {
112
+ throw new Error(`handler asset path escapes .vaults/handlers/: ${rel} (resolved to ${abs}). ` +
113
+ `Move the asset under .vaults/handlers/ and reference it relatively.`);
114
+ }
115
+ return abs;
116
+ }
117
+ function isWithin(root, candidate) {
118
+ // resolve() normalises both, so a prefix check is sound. Append the
119
+ // platform separator to avoid `/foo/bar-evil` matching `/foo/bar`.
120
+ const rootWithSep = root.endsWith(sep) ? root : root + sep;
121
+ return candidate === root || candidate.startsWith(rootWithSep);
122
+ }
123
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/render/handlers/assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ // Built-in inline `dice:` handler.
2
+ //
3
+ // Mirrors the syntax popularized by Obsidian's Dice Roller plugin:
4
+ //
5
+ // The goblin attacks: `dice: 1d20+5` to hit, `dice: 1d6+3` damage.
6
+ //
7
+ // At build time, the handler renders each formula as a clickable <button>
8
+ // with the formula stored in data-formula. The browser-side runtime
9
+ // (DICE_RUNTIME_SCRIPT below) ships as a built-in asset, gets concatenated
10
+ // into _handlers.js, and parses + rolls on click.
11
+ //
12
+ // Subset of Dice Roller's syntax: basic XdY +/- Z arithmetic, optional X.
13
+ // More complex modifiers (kh, kl, explode, etc.) are not supported.
14
+ import { htmlEscape } from "../../../escape.js";
15
+ import { registerBuiltinAssets } from "../assets.js";
16
+ // Formula validation: optional X, then 'd', then Y, then optional ± integer.
17
+ // Only used at build time to decide whether render() emits a clickable
18
+ // button or a strikethrough <code> fallback. The browser-side parser is
19
+ // the source of truth at runtime — see DICE_RUNTIME_SCRIPT.
20
+ const FORMULA_RE = /^(\d*)d(\d+)\s*([+-]\s*\d+)?$/i;
21
+ export const diceHandler = {
22
+ inline: "dice",
23
+ render(content) {
24
+ const formula = content.trim();
25
+ const escaped = htmlEscape(formula);
26
+ if (!FORMULA_RE.test(formula)) {
27
+ // Not a formula we recognize: fall back to monospace text so the
28
+ // user sees what they wrote and can fix the syntax.
29
+ return {
30
+ html: `<code class="dice-roll dice-roll-invalid" title="unrecognized dice formula">${escaped}</code>`,
31
+ };
32
+ }
33
+ return {
34
+ html: `<button type="button" class="dice-roll" data-formula="${escaped}" title="Click to roll">${escaped}</button>`,
35
+ };
36
+ },
37
+ };
38
+ // ── Browser runtime ───────────────────────────────────────────────────────
39
+ // Click-to-reroll for buttons emitted by render(). Event-delegated so a
40
+ // single listener handles every dice button on the page; pages without
41
+ // any dice pay only the cost of the listener attachment.
42
+ const DICE_RUNTIME_SCRIPT = `
43
+ (function () {
44
+ var FORMULA_RE = /^(\\d*)d(\\d+)\\s*([+-]\\s*\\d+)?$/i;
45
+ function roll(formula) {
46
+ var m = FORMULA_RE.exec(formula.trim());
47
+ if (!m) return null;
48
+ var count = m[1] ? parseInt(m[1], 10) : 1;
49
+ var faces = parseInt(m[2], 10);
50
+ var mod = m[3] ? parseInt(m[3].replace(/\\s+/g, ''), 10) : 0;
51
+ if (count < 1 || faces < 1) return null;
52
+ var total = 0;
53
+ var rolls = [];
54
+ for (var i = 0; i < count; i++) {
55
+ var r = 1 + Math.floor(Math.random() * faces);
56
+ rolls.push(r);
57
+ total += r;
58
+ }
59
+ return { total: total + mod, rolls: rolls, mod: mod };
60
+ }
61
+ document.addEventListener('click', function (e) {
62
+ var btn = e.target;
63
+ if (!(btn instanceof HTMLButtonElement)) return;
64
+ if (!btn.classList.contains('dice-roll')) return;
65
+ var formula = btn.dataset.formula;
66
+ if (!formula) return;
67
+ var r = roll(formula);
68
+ if (!r) return;
69
+ var sign = r.mod === 0 ? '' : (r.mod > 0 ? ' + ' + r.mod : ' - ' + Math.abs(r.mod));
70
+ btn.textContent = r.total + ' (' + formula + ')';
71
+ btn.title = '[' + r.rolls.join(', ') + ']' + sign + ' = ' + r.total + ' — click to re-roll';
72
+ });
73
+ })();
74
+ `;
75
+ registerBuiltinAssets(diceHandler, {
76
+ scripts: [{ source: "builtin/dice.runtime.js", content: DICE_RUNTIME_SCRIPT }],
77
+ });
78
+ //# sourceMappingURL=dice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dice.js","sourceRoot":"","sources":["../../../../src/render/handlers/builtin/dice.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,0EAA0E;AAC1E,oEAAoE;AACpE,2EAA2E;AAC3E,kDAAkD;AAClD,EAAE;AACF,0EAA0E;AAC1E,oEAAoE;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,6EAA6E;AAC7E,uEAAuE;AACvE,wEAAwE;AACxE,4DAA4D;AAC5D,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,MAAM,EAAE,MAAM;IACd,MAAM,CAAC,OAAe;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,iEAAiE;YACjE,oDAAoD;YACpD,OAAO;gBACL,IAAI,EAAE,+EAA+E,OAAO,SAAS;aACtG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,yDAAyD,OAAO,2BAA2B,OAAO,WAAW;SACpH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,6EAA6E;AAC7E,wEAAwE;AACxE,uEAAuE;AACvE,yDAAyD;AAEzD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC3B,CAAC;AAEF,qBAAqB,CAAC,WAAW,EAAE;IACjC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAC/E,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ // Built-in code-block `fm` handler — renders a frontmatter value as a fenced
2
+ // code block, with an optional language hint via the fence meta string.
3
+ //
4
+ // Usage:
5
+ //
6
+ // ```fm javascript
7
+ // foundry.data.command
8
+ // ```
9
+ //
10
+ // Renders as:
11
+ //
12
+ // <pre><code class="language-javascript">…value of frontmatter.foundry.data.command…</code></pre>
13
+ //
14
+ // Companion to the inline `fm:` handler. Inline form is used in prose to
15
+ // pull a frontmatter value into a sentence; this code-block form is used
16
+ // when the value IS code (or otherwise wants a `<pre>` wrapper) and you
17
+ // want a single source of truth for that code rather than duplicating it
18
+ // between the frontmatter and the page body.
19
+ //
20
+ // The body of the fence is the dot-path (single token, leading/trailing
21
+ // whitespace tolerated). Anything beyond the lang on the fence is the
22
+ // optional language hint — `lang className="language-…"` so client-side
23
+ // highlighters can pick it up. Missing path or non-string value renders
24
+ // as a visible warning marker rather than failing the build, same policy
25
+ // as the inline handler.
26
+ import { htmlEscape } from "../../../escape.js";
27
+ import { lookup } from "./fm.js";
28
+ export const fmCodeHandler = {
29
+ codeBlock: "fm",
30
+ render(content, ctx) {
31
+ const path = content.trim();
32
+ if (!path)
33
+ return missing("(empty)");
34
+ const value = lookup(ctx.frontmatter, path);
35
+ if (typeof value !== "string")
36
+ return missing(`${path}: not a string`);
37
+ const langClass = ctx.codeBlockMeta
38
+ ? ` class="language-${htmlEscape(ctx.codeBlockMeta)}"`
39
+ : "";
40
+ return {
41
+ html: `<pre><code${langClass}>${htmlEscape(value)}</code></pre>`,
42
+ };
43
+ },
44
+ };
45
+ function missing(key) {
46
+ return {
47
+ html: `<pre><code class="fm-missing" title="frontmatter key not found">{{${htmlEscape(key)}}}</code></pre>`,
48
+ };
49
+ }
50
+ //# sourceMappingURL=fm-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fm-code.js","sourceRoot":"","sources":["../../../../src/render/handlers/builtin/fm-code.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,SAAS;AACT,EAAE;AACF,qBAAqB;AACrB,yBAAyB;AACzB,QAAQ;AACR,EAAE;AACF,cAAc;AACd,EAAE;AACF,oGAAoG;AACpG,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AACxE,yEAAyE;AACzE,6CAA6C;AAC7C,EAAE;AACF,wEAAwE;AACxE,sEAAsE;AACtE,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,yBAAyB;AAGzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,SAAS,EAAE,IAAI;IACf,MAAM,CAAC,OAAO,EAAE,GAAG;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa;YACjC,CAAC,CAAC,oBAAoB,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,IAAI,EAAE,aAAa,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,eAAe;SACjE,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO;QACL,IAAI,EAAE,qEAAqE,UAAU,CAAC,GAAG,CAAC,iBAAiB;KAC5G,CAAC;AACJ,CAAC"}
@@ -0,0 +1,83 @@
1
+ // Built-in inline `fm:` handler — inserts a frontmatter value into prose.
2
+ //
3
+ // ---
4
+ // class: Wizard
5
+ // level: 7
6
+ // stats:
7
+ // hp: 22
8
+ // ---
9
+ // The `fm: class` is level `fm: level` with `fm: stats.hp` HP.
10
+ //
11
+ // Renders as: "The Wizard is level 7 with 22 HP."
12
+ //
13
+ // Dot-path lookups (`fm: a.b.c`) walk nested objects. Keys with literal
14
+ // dots in their names are unreachable, which we accept because such keys
15
+ // are vanishingly rare in vault frontmatter.
16
+ //
17
+ // String/number/boolean values render as HTML with a small inline-markup
18
+ // pass (**bold**, *italic*, `code`) so authors can put light formatting
19
+ // in frontmatter and have it survive. Returning HTML rather than markdown
20
+ // lets fm work when invoked recursively from another handler (e.g. inside
21
+ // a `statblock` field), since the dispatcher only re-pipelines top-level
22
+ // markdown returns. Wikilinks in frontmatter are NOT processed; cross-page
23
+ // reference belongs in prose.
24
+ //
25
+ // Dates (YAML auto-parses ISO 8601 strings to Date) format as YYYY-MM-DD.
26
+ // Arrays are joined with ", ". Missing keys and unsupported value shapes
27
+ // (plain objects, null) render a visible warning marker so the page
28
+ // surfaces the problem instead of silently emitting "undefined".
29
+ import { htmlEscape } from "../../../escape.js";
30
+ import { formatInline } from "./inline-format.js";
31
+ export const fmHandler = {
32
+ inline: "fm",
33
+ render(content, ctx) {
34
+ const path = content.trim();
35
+ if (!path)
36
+ return missing("(empty)");
37
+ const value = lookup(ctx.frontmatter, path);
38
+ const formatted = formatScalar(value);
39
+ if (formatted !== null)
40
+ return { html: wrap(formatInline(formatted)) };
41
+ if (Array.isArray(value)) {
42
+ return { html: wrap(formatInline(value.map((v) => formatScalar(v) ?? "").join(", "))) };
43
+ }
44
+ return missing(path);
45
+ },
46
+ };
47
+ // Bare-text HTML AST nodes get dropped by the markdown → HTML stage
48
+ // (rehype-raw needs an actual element to anchor onto in inline contexts);
49
+ // wrapping in a <span> keeps the value visible. The span is invisible in
50
+ // the final layout so it doesn't change typography.
51
+ function wrap(inner) { return `<span class="fm-value">${inner}</span>`; }
52
+ /** Walk a dot-path into the page's frontmatter; numeric segments index
53
+ * arrays. Exported so the sibling fm code-block handler reuses the same
54
+ * resolution semantics. */
55
+ export function lookup(root, path) {
56
+ const segments = path.split(".");
57
+ let cursor = root;
58
+ for (const seg of segments) {
59
+ if (cursor === null || cursor === undefined)
60
+ return undefined;
61
+ if (typeof cursor !== "object")
62
+ return undefined;
63
+ cursor = cursor[seg];
64
+ }
65
+ return cursor;
66
+ }
67
+ function formatScalar(v) {
68
+ if (v === null || v === undefined)
69
+ return null;
70
+ if (typeof v === "string")
71
+ return v;
72
+ if (typeof v === "number" || typeof v === "boolean")
73
+ return String(v);
74
+ if (v instanceof Date && !isNaN(v.getTime()))
75
+ return v.toISOString().slice(0, 10);
76
+ return null;
77
+ }
78
+ function missing(key) {
79
+ return {
80
+ html: `<code class="fm-missing" title="frontmatter key not found">{{${htmlEscape(key)}}}</code>`,
81
+ };
82
+ }
83
+ //# sourceMappingURL=fm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fm.js","sourceRoot":"","sources":["../../../../src/render/handlers/builtin/fm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ // Registry of built-in handlers shipped with vaults-cli.
2
+ //
3
+ // User-defined handlers (loaded from .vaults/handlers/) override built-ins
4
+ // of the same name; see buildRegistry() in handlers/types.ts.
5
+ import { diceHandler } from "./dice.js";
6
+ import { fmHandler } from "./fm.js";
7
+ import { fmCodeHandler } from "./fm-code.js";
8
+ import { statblockHandler } from "./statblock.js";
9
+ export const BUILTIN_HANDLERS = [diceHandler, fmHandler, fmCodeHandler, statblockHandler];
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/render/handlers/builtin/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,8DAA8D;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAc,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Tiny inline-markdown formatter shared by the built-in `fm` and `statblock`
2
+ // handlers. Both render frontmatter scalars or bespoke content directly to
3
+ // HTML rather than re-feeding it through the full markdown pipeline, but
4
+ // authors still expect basic ** ** / * * / `` markup to survive. This is
5
+ // the smallest formatter that supports that.
6
+ //
7
+ // Bold runs first (** **) so the italic regex can't gobble its asterisks.
8
+ // Italic uses a leading non-`*` guard so `**bold**` doesn't match. Code
9
+ // spans run last; their delimiter (`) is HTML-safe after htmlEscape.
10
+ //
11
+ // Wikilinks are intentionally NOT processed here — wikilink resolution
12
+ // requires the full RenderContext and lives in render/wikilink.ts. Authors
13
+ // who need wikilinks should put them in regular prose.
14
+ import { htmlEscape } from "../../../escape.js";
15
+ /**
16
+ * HTML-escape `s`, then apply a small inline-markdown subset
17
+ * (bold, italic, code spans). Returns ready-to-insert HTML.
18
+ */
19
+ export function formatInline(s) {
20
+ let out = htmlEscape(s);
21
+ out = out.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>");
22
+ out = out.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g, "$1<em>$2</em>");
23
+ out = out.replace(/`([^`]+)`/g, "<code>$1</code>");
24
+ return out;
25
+ }
26
+ //# sourceMappingURL=inline-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-format.js","sourceRoot":"","sources":["../../../../src/render/handlers/builtin/inline-format.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,yEAAyE;AACzE,6CAA6C;AAC7C,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,uDAAuD;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;IACnE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACb,CAAC"}