@wizzlethorpe/vaults 0.13.5 → 0.15.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 (89) hide show
  1. package/README.md +2 -2
  2. package/dist/asset-refs.js +282 -0
  3. package/dist/asset-refs.js.map +1 -0
  4. package/dist/auth.js.map +1 -1
  5. package/dist/build.js +393 -544
  6. package/dist/build.js.map +1 -1
  7. package/dist/commands/build.js +0 -4
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/preview.js +0 -4
  10. package/dist/commands/preview.js.map +1 -1
  11. package/dist/commands/push.js +4 -9
  12. package/dist/commands/push.js.map +1 -1
  13. package/dist/commands/role.js +55 -14
  14. package/dist/commands/role.js.map +1 -1
  15. package/dist/config.js +25 -5
  16. package/dist/config.js.map +1 -1
  17. package/dist/escape.js +20 -0
  18. package/dist/escape.js.map +1 -1
  19. package/dist/foundry-adventure.js +86 -0
  20. package/dist/foundry-adventure.js.map +1 -0
  21. package/dist/foundry-defaults.js +65 -0
  22. package/dist/foundry-defaults.js.map +1 -0
  23. package/dist/foundry-grafts.js +610 -0
  24. package/dist/foundry-grafts.js.map +1 -0
  25. package/dist/foundry-html.js +196 -0
  26. package/dist/foundry-html.js.map +1 -0
  27. package/dist/foundry-importer.bundle.js +1192 -322
  28. package/dist/foundry-importer.js +2 -7
  29. package/dist/foundry-importer.js.map +1 -1
  30. package/dist/foundry-meta.js +56 -0
  31. package/dist/foundry-meta.js.map +1 -0
  32. package/dist/foundry-module-journal.js +133 -0
  33. package/dist/foundry-module-journal.js.map +1 -0
  34. package/dist/foundry-module-render.js +75 -0
  35. package/dist/foundry-module-render.js.map +1 -0
  36. package/dist/foundry-module.js +1082 -0
  37. package/dist/foundry-module.js.map +1 -0
  38. package/dist/foundry-types.js +28 -0
  39. package/dist/foundry-types.js.map +1 -0
  40. package/dist/foundry-version.js +30 -0
  41. package/dist/foundry-version.js.map +1 -0
  42. package/dist/frontmatter-defaults.js +68 -0
  43. package/dist/frontmatter-defaults.js.map +1 -0
  44. package/dist/index.js +5 -9
  45. package/dist/index.js.map +1 -1
  46. package/dist/manifest.js +115 -0
  47. package/dist/manifest.js.map +1 -0
  48. package/dist/migrate/0.15-foundry-patch-keys.js +51 -0
  49. package/dist/migrate/0.15-foundry-patch-keys.js.map +1 -0
  50. package/dist/migrate/0.15-foundry-pinned-id.js +68 -0
  51. package/dist/migrate/0.15-foundry-pinned-id.js.map +1 -0
  52. package/dist/migrate/files.js +66 -0
  53. package/dist/migrate/files.js.map +1 -0
  54. package/dist/migrate/registry.js +4 -0
  55. package/dist/migrate/registry.js.map +1 -1
  56. package/dist/migrate/run.js +36 -2
  57. package/dist/migrate/run.js.map +1 -1
  58. package/dist/render/auth-template.js +331 -42
  59. package/dist/render/auth-template.js.map +1 -1
  60. package/dist/render/bases.js +22 -38
  61. package/dist/render/bases.js.map +1 -1
  62. package/dist/render/cover.js +23 -1
  63. package/dist/render/cover.js.map +1 -1
  64. package/dist/render/handlers/assets.js +5 -34
  65. package/dist/render/handlers/assets.js.map +1 -1
  66. package/dist/render/handlers/builtin/battlemap.js +4 -1
  67. package/dist/render/handlers/builtin/battlemap.js.map +1 -1
  68. package/dist/render/handlers/builtin/download.js +90 -0
  69. package/dist/render/handlers/builtin/download.js.map +1 -0
  70. package/dist/render/handlers/builtin/fm-code.js +2 -2
  71. package/dist/render/handlers/builtin/fm-code.js.map +1 -1
  72. package/dist/render/handlers/builtin/foundry-manifest.js +158 -0
  73. package/dist/render/handlers/builtin/foundry-manifest.js.map +1 -0
  74. package/dist/render/handlers/builtin/fvtt-link.js +39 -0
  75. package/dist/render/handlers/builtin/fvtt-link.js.map +1 -0
  76. package/dist/render/handlers/builtin/index.js +4 -1
  77. package/dist/render/handlers/builtin/index.js.map +1 -1
  78. package/dist/render/handlers/builtin/statblock.js +0 -4
  79. package/dist/render/handlers/builtin/statblock.js.map +1 -1
  80. package/dist/render/handlers/types.js.map +1 -1
  81. package/dist/render/pipeline.js +4 -1
  82. package/dist/render/pipeline.js.map +1 -1
  83. package/dist/render/slug.js +0 -5
  84. package/dist/render/slug.js.map +1 -1
  85. package/dist/settings.js +156 -21
  86. package/dist/settings.js.map +1 -1
  87. package/dist/zip.js +78 -0
  88. package/dist/zip.js.map +1 -0
  89. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/escape.js CHANGED
@@ -21,6 +21,26 @@ export function htmlEscape(s) {
21
21
  export function htmlAttr(s) {
22
22
  return s.replace(/[&<>"]/g, (c) => HTML_ESCAPE[c]);
23
23
  }
24
+ const HTML_NAMED = {
25
+ amp: "&", lt: "<", gt: ">", quot: '"', apos: "'", "#39": "'",
26
+ };
27
+ /**
28
+ * Undo attribute escaping, so an attribute value can be read as the string a
29
+ * browser would see. Anything reading an href out of serialized HTML needs
30
+ * this: the serializer escapes `'` to `&#x27;`, and percent-decoding alone
31
+ * leaves the entity sitting in the middle of the path.
32
+ */
33
+ export function htmlUnescape(s) {
34
+ return s.replace(/&(#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z]+);/g, (whole, body) => {
35
+ if (body[0] === "#") {
36
+ const code = body[1] === "x" || body[1] === "X"
37
+ ? Number.parseInt(body.slice(2), 16)
38
+ : Number.parseInt(body.slice(1), 10);
39
+ return Number.isFinite(code) && code > 0 ? String.fromCodePoint(code) : whole;
40
+ }
41
+ return HTML_NAMED[body.toLowerCase()] ?? whole;
42
+ });
43
+ }
24
44
  /** Escape every regex metacharacter so the result is safe to use as a
25
45
  * literal-match needle inside a RegExp constructor. */
26
46
  export function escapeRegex(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,sDAAsD;AAEtD,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACb,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;AACtD,CAAC;AAED;wDACwD;AACxD,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../src/escape.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,sDAAsD;AAEtD,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACb,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,GAA2B;IACzC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;CAC7D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,uCAAuC,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAChF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACpC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChF,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;wDACwD;AACxD,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,86 @@
1
+ // Packaging a vault as one Adventure instead of a shelf of packs.
2
+ //
3
+ // Foundry's import partitions by `_id`: what the world already has is updated,
4
+ // the rest created. Our ids are deterministic, so a second import updates in
5
+ // place rather than making a second everything.
6
+ import { DOC_TYPES } from "./foundry-types.js";
7
+ /** Adventure schema field per document type. */
8
+ const CONTENT_FIELD = Object.fromEntries(Object.entries(DOC_TYPES).map(([type, info]) => [type, info.adventureField]));
9
+ /**
10
+ * Folder documents for every path the entries name, and their parents.
11
+ *
12
+ * Foundry folders are typed, so `Places` holding Scenes and `Places` holding
13
+ * JournalEntries are two folders, and a nested document points at one by id
14
+ * rather than by the path graft resolves at the top level.
15
+ */
16
+ function folderDocs(entries, folderId) {
17
+ const docs = new Map();
18
+ for (const entry of entries) {
19
+ if (!entry.folder || !CONTENT_FIELD[entry.type])
20
+ continue;
21
+ const segments = entry.folder.split("/");
22
+ for (let i = 0; i < segments.length; i++) {
23
+ const path = segments.slice(0, i + 1).join("/");
24
+ const key = `${entry.type}/${path}`;
25
+ if (docs.has(key))
26
+ continue;
27
+ docs.set(key, {
28
+ _id: folderId(entry.type, path),
29
+ name: segments[i],
30
+ type: entry.type,
31
+ sorting: "a",
32
+ ...(i > 0 ? { folder: folderId(entry.type, segments.slice(0, i).join("/")) } : {}),
33
+ });
34
+ }
35
+ }
36
+ return [...docs.values()];
37
+ }
38
+ /**
39
+ * Fold typed entries into a single Adventure entry.
40
+ *
41
+ * A sourced entry stays `{ _id, source, patch }` — the shape graft resolves
42
+ * inside a keyed array — so an Actor keeps naming its statblock and is still
43
+ * resolved on the reader's machine, where the compendium is.
44
+ */
45
+ export function asAdventure(entries, opts) {
46
+ const warnings = [];
47
+ const content = {};
48
+ for (const entry of entries) {
49
+ const field = CONTENT_FIELD[entry.type];
50
+ if (!field) {
51
+ warnings.push(`${entry.id}: an Adventure has nowhere to put a ${entry.type}; it was left out`);
52
+ continue;
53
+ }
54
+ // graft resolves one source per nested entry, not a priority list: the
55
+ // list form exists so a reader who lacks the better content still gets
56
+ // something, and inside an Adventure that choice has already been made.
57
+ const source = Array.isArray(entry.source) ? entry.source[0] : entry.source;
58
+ if (Array.isArray(entry.source) && entry.source.length > 1) {
59
+ warnings.push(`${entry.id}: an Adventure takes one source, so the ${entry.source.length - 1}`
60
+ + ` fallback(s) after ${source} were dropped`);
61
+ }
62
+ // `expandSources` reads only `_id`, `source` and `patch`, so a sourced
63
+ // entry's folder has to travel inside the patch to survive resolution.
64
+ const folder = entry.folder ? { folder: opts.folderId(entry.type, entry.folder) } : {};
65
+ (content[field] ??= []).push(source
66
+ ? { _id: entry.id, source, patch: { ...entry.patch, ...folder } }
67
+ : { _id: entry.id, ...entry.patch, ...folder });
68
+ }
69
+ const folders = folderDocs(entries, opts.folderId);
70
+ return {
71
+ entries: [{
72
+ id: opts.id,
73
+ type: "Adventure",
74
+ pack: opts.pack,
75
+ patch: {
76
+ name: opts.name,
77
+ ...(opts.coreVersion ? { _stats: { coreVersion: opts.coreVersion } } : {}),
78
+ ...(opts.description ? { description: opts.description } : {}),
79
+ ...(folders.length ? { folders } : {}),
80
+ ...content,
81
+ },
82
+ }],
83
+ warnings,
84
+ };
85
+ }
86
+ //# sourceMappingURL=foundry-adventure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundry-adventure.js","sourceRoot":"","sources":["../src/foundry-adventure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ // Default patches: what a document gets before its page says anything.
2
+ //
3
+ // Layered least specific first — `Actor`, then `dnd5e/Actor`, then the page's
4
+ // own patch, which wins at every depth including with an explicit `null`.
5
+ // `@page/…` resolves during the build, and a reference that resolves to
6
+ // nothing takes its key with it.
7
+ const PAGE_REF = /^@page\/([a-z]+)$/;
8
+ export const DEFAULT_PATCHES = {
9
+ // A token is cut round and padded where a portrait is not, so this is a
10
+ // stand-in for a page with no token art of its own, never a replacement.
11
+ Actor: {
12
+ img: "@page/image",
13
+ prototypeToken: { texture: { src: "@page/image" } },
14
+ },
15
+ Item: { img: "@page/image" },
16
+ // The page's article becomes the document's description, so a statblock
17
+ // opened in Foundry carries the writing that explains it. As a reference, in
18
+ // the same role variant the journal page uses, so a player-visible document
19
+ // cannot end up holding the GM's version of its own page.
20
+ "dnd5e/Actor": { system: { details: { biography: { value: "@page/body" } } } },
21
+ "dnd5e/Item": { system: { description: { value: "@page/body" } } },
22
+ };
23
+ /** The default patches for a type, least specific first. */
24
+ export function defaultsFor(type, system) {
25
+ return [DEFAULT_PATCHES[type], DEFAULT_PATCHES[`${system}/${type}`]]
26
+ .filter((p) => !!p);
27
+ }
28
+ /**
29
+ * Replace `@page/…` with what the page supplies, dropping what it cannot.
30
+ *
31
+ * Returns a new value. A key whose reference resolves to nothing is removed,
32
+ * and an object emptied by that is removed in turn: a default that a page
33
+ * cannot satisfy should leave no trace, not a hollow `{ texture: {} }`.
34
+ */
35
+ export function resolvePageRefs(value, page) {
36
+ if (typeof value === "string") {
37
+ const name = PAGE_REF.exec(value)?.[1];
38
+ if (!name)
39
+ return value;
40
+ const resolved = name === "image"
41
+ ? imageRef(page.image)
42
+ : name === "body" ? page.body : undefined;
43
+ return (resolved ?? undefined);
44
+ }
45
+ if (Array.isArray(value)) {
46
+ return value.map((v) => resolvePageRefs(v, page)).filter((v) => v !== undefined);
47
+ }
48
+ if (value && typeof value === "object") {
49
+ const out = {};
50
+ for (const [k, v] of Object.entries(value)) {
51
+ const next = resolvePageRefs(v, page);
52
+ if (next !== undefined)
53
+ out[k] = next;
54
+ }
55
+ return (Object.keys(out).length > 0 ? out : undefined);
56
+ }
57
+ return value;
58
+ }
59
+ /** A page image as a vault reference, or an external URL left as it is. */
60
+ function imageRef(image) {
61
+ if (!image)
62
+ return undefined;
63
+ return /^https?:\/\//i.test(image) ? image : `@vault/${image.replace(/^\/+/, "")}`;
64
+ }
65
+ //# sourceMappingURL=foundry-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundry-defaults.js","sourceRoot":"","sources":["../src/foundry-defaults.ts"],"names":[],"mappings":"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"}