@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.
- package/README.md +2 -2
- package/dist/asset-refs.js +282 -0
- package/dist/asset-refs.js.map +1 -0
- package/dist/auth.js.map +1 -1
- package/dist/build.js +393 -544
- package/dist/build.js.map +1 -1
- package/dist/commands/build.js +0 -4
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/preview.js +0 -4
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/push.js +4 -9
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/role.js +55 -14
- package/dist/commands/role.js.map +1 -1
- package/dist/config.js +25 -5
- package/dist/config.js.map +1 -1
- package/dist/escape.js +20 -0
- package/dist/escape.js.map +1 -1
- package/dist/foundry-adventure.js +86 -0
- package/dist/foundry-adventure.js.map +1 -0
- package/dist/foundry-defaults.js +65 -0
- package/dist/foundry-defaults.js.map +1 -0
- package/dist/foundry-grafts.js +610 -0
- package/dist/foundry-grafts.js.map +1 -0
- package/dist/foundry-html.js +196 -0
- package/dist/foundry-html.js.map +1 -0
- package/dist/foundry-importer.bundle.js +1192 -322
- package/dist/foundry-importer.js +2 -7
- package/dist/foundry-importer.js.map +1 -1
- package/dist/foundry-meta.js +56 -0
- package/dist/foundry-meta.js.map +1 -0
- package/dist/foundry-module-journal.js +133 -0
- package/dist/foundry-module-journal.js.map +1 -0
- package/dist/foundry-module-render.js +75 -0
- package/dist/foundry-module-render.js.map +1 -0
- package/dist/foundry-module.js +1082 -0
- package/dist/foundry-module.js.map +1 -0
- package/dist/foundry-types.js +28 -0
- package/dist/foundry-types.js.map +1 -0
- package/dist/foundry-version.js +30 -0
- package/dist/foundry-version.js.map +1 -0
- package/dist/frontmatter-defaults.js +68 -0
- package/dist/frontmatter-defaults.js.map +1 -0
- package/dist/index.js +5 -9
- package/dist/index.js.map +1 -1
- package/dist/manifest.js +115 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrate/0.15-foundry-patch-keys.js +51 -0
- package/dist/migrate/0.15-foundry-patch-keys.js.map +1 -0
- package/dist/migrate/0.15-foundry-pinned-id.js +68 -0
- package/dist/migrate/0.15-foundry-pinned-id.js.map +1 -0
- package/dist/migrate/files.js +66 -0
- package/dist/migrate/files.js.map +1 -0
- package/dist/migrate/registry.js +4 -0
- package/dist/migrate/registry.js.map +1 -1
- package/dist/migrate/run.js +36 -2
- package/dist/migrate/run.js.map +1 -1
- package/dist/render/auth-template.js +331 -42
- package/dist/render/auth-template.js.map +1 -1
- package/dist/render/bases.js +22 -38
- package/dist/render/bases.js.map +1 -1
- package/dist/render/cover.js +23 -1
- package/dist/render/cover.js.map +1 -1
- package/dist/render/handlers/assets.js +5 -34
- package/dist/render/handlers/assets.js.map +1 -1
- package/dist/render/handlers/builtin/battlemap.js +4 -1
- package/dist/render/handlers/builtin/battlemap.js.map +1 -1
- package/dist/render/handlers/builtin/download.js +90 -0
- package/dist/render/handlers/builtin/download.js.map +1 -0
- package/dist/render/handlers/builtin/fm-code.js +2 -2
- package/dist/render/handlers/builtin/fm-code.js.map +1 -1
- package/dist/render/handlers/builtin/foundry-manifest.js +158 -0
- package/dist/render/handlers/builtin/foundry-manifest.js.map +1 -0
- package/dist/render/handlers/builtin/fvtt-link.js +39 -0
- package/dist/render/handlers/builtin/fvtt-link.js.map +1 -0
- package/dist/render/handlers/builtin/index.js +4 -1
- package/dist/render/handlers/builtin/index.js.map +1 -1
- package/dist/render/handlers/builtin/statblock.js +0 -4
- package/dist/render/handlers/builtin/statblock.js.map +1 -1
- package/dist/render/handlers/types.js.map +1 -1
- package/dist/render/pipeline.js +4 -1
- package/dist/render/pipeline.js.map +1 -1
- package/dist/render/slug.js +0 -5
- package/dist/render/slug.js.map +1 -1
- package/dist/settings.js +156 -21
- package/dist/settings.js.map +1 -1
- package/dist/zip.js +78 -0
- package/dist/zip.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ Cloudflare Pages ← per-user, your account
|
|
|
45
45
|
- **Per-tier deploys.** A page tagged `role: dm` in its frontmatter only includes to the dm variant. Public visitors *cannot* fetch it; the file structurally doesn't exist in their variant.
|
|
46
46
|
- **Inline gating with callouts.** Drop a `> [!dm]` callout in an otherwise public page; the entire block is stripped from the public deploy. Same for any other configured role.
|
|
47
47
|
- **Images and media are gated too.** Only images, audio, video, PDFs, and EPUBs embedded by visible pages are copied into a given variant. Unknown extensions are skipped by default (toggle `include_unknown_files`).
|
|
48
|
-
- **
|
|
48
|
+
- **Foundry integration.** The build compiles each role's pages into `_foundry/grafts.json`, an entry list the [Foundry module](https://github.com/wizzlethorpe/vaults) hands to [graft](https://github.com/wizzlethorpe/graft) to build on the reader's own machine. Bodies and art travel as references and are pulled through `/_batch` (text) and `/_batch-images` (binary) in the reader's own role variant, so a player never receives the GM's rendering of a page.
|
|
49
49
|
- **Bases support.** `.base` files render as cards / table / list inside the wiki, just like inside Obsidian.
|
|
50
50
|
- **LaTeX math.** `$inline$` and `$$display$$` math render server-side via KaTeX, matching Obsidian's syntax. The stylesheet and fonts are self-hosted and only ship for vaults that contain math.
|
|
51
51
|
- **Social meta.** OG / Twitter card tags are auto-generated. Pages without an explicit `image:` frontmatter use the first body embed (toggle with `auto_image`).
|
|
@@ -217,7 +217,7 @@ Multi-role deploys include with a small Cloudflare Pages Function (`_middleware.
|
|
|
217
217
|
- **Issues bearer tokens** through an OAuth-style `/connect` flow used by the [Foundry module](https://github.com/wizzlethorpe/vaults).
|
|
218
218
|
- **Handles Patreon login** at `/auth/patreon/start` and `/auth/patreon/callback`, and **OIDC login** at `/auth/oidc/start` and `/auth/oidc/callback`, when configured.
|
|
219
219
|
- **Exposes** `/_batch` (text) and `/_batch-images` (binary) for bulk content sync.
|
|
220
|
-
- **Publishes**
|
|
220
|
+
- **Publishes** `_foundry/module.json`, `module.zip` and `version.json` ungated, so Foundry can install the vault's module without a credential, while the entry list behind them stays role-gated.
|
|
221
221
|
|
|
222
222
|
Tokens are stateless HMAC-signed JWTs; revocation = rotate `SESSION_SECRET` via `vaults push --rotate-secret`.
|
|
223
223
|
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
// Which assets ship to which variant.
|
|
2
|
+
//
|
|
3
|
+
// This is a **role-gating boundary**, not a copy helper: an image or audio
|
|
4
|
+
// file lands in a variant only when a page visible at that tier references it.
|
|
5
|
+
// A DM-only map referenced only from a DM-only page must not reach the public
|
|
6
|
+
// deploy, where the middleware would serve it happily — the gate is that the
|
|
7
|
+
// bytes were never copied there.
|
|
8
|
+
//
|
|
9
|
+
// References are found four ways, because authors write them four ways:
|
|
10
|
+
// Obsidian embeds and wikilinks, CommonMark links, `gallery` and `battlemap`
|
|
11
|
+
// block bodies, and `@vault/PATH` strings inside foundry frontmatter (a
|
|
12
|
+
// Scene background, a Playlist's sounds) that no prose scanner would see.
|
|
13
|
+
import { copyFile, mkdir } from "node:fs/promises";
|
|
14
|
+
import { dirname, join } from "node:path";
|
|
15
|
+
import { battlemapLayerPaths } from "./render/handlers/builtin/battlemap.js";
|
|
16
|
+
import { downloadFilePaths } from "./render/handlers/builtin/download.js";
|
|
17
|
+
import { foundryManifestPaths } from "./render/handlers/builtin/foundry-manifest.js";
|
|
18
|
+
import { IMAGE_EXT_RE } from "./render/extensions.js";
|
|
19
|
+
import { slugify } from "./render/slug.js";
|
|
20
|
+
import { loadDataJson } from "./foundry-meta.js";
|
|
21
|
+
// The optional backslash matters: a table cell has to escape the size hint's
|
|
22
|
+
// pipe, and keeping that backslash in the name misses the index silently.
|
|
23
|
+
const EMBED_RE = /!\[\[([^\[\]|#\n]+?)\\?(?:\|[^\[\]#\n]*)?\]\]/g;
|
|
24
|
+
// A ```gallery code block. Its body lists images by name (one per line,
|
|
25
|
+
// optional `| caption`), which the gallery handler renders but the source
|
|
26
|
+
// scanners would otherwise never see — so we read the block here to stage
|
|
27
|
+
// the referenced images per variant, the same way `![[ ]]` embeds are staged.
|
|
28
|
+
const GALLERY_BLOCK_RE = /^```gallery[^\n]*\n([\s\S]*?)^```/gm;
|
|
29
|
+
// `[label](path/to/file.ext)` style markdown link. Captures the URL part.
|
|
30
|
+
// `\.[a-z0-9]+` requires an extension; we don't want to scoop up plain
|
|
31
|
+
// internal page links (e.g. `(href)` without an extension).
|
|
32
|
+
const MD_LINK_RE = /\[[^\]]*\]\(([^)\s]+\.[a-z0-9]+)(?:\s+["'][^"']*["'])?\)/gi;
|
|
33
|
+
// `[[file.ext]]` and `![[file.ext]]` — Obsidian-flavoured wikilinks/embeds.
|
|
34
|
+
const WIKI_LINK_RE = /!?\[\[([^\[\]|#\n]+\.[a-z0-9]+)\\?(?:\|[^\[\]#\n]*)?(?:#[^\[\]\n]*)?\]\]/gi;
|
|
35
|
+
/** Image basenames referenced inside a page's ```gallery blocks. */
|
|
36
|
+
function galleryImageNames(source) {
|
|
37
|
+
const names = [];
|
|
38
|
+
for (const block of source.matchAll(GALLERY_BLOCK_RE)) {
|
|
39
|
+
for (const line of block[1].split("\n")) {
|
|
40
|
+
const trimmed = line.trim();
|
|
41
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
42
|
+
continue;
|
|
43
|
+
const name = (trimmed.split("|")[0] ?? "").trim();
|
|
44
|
+
if (name)
|
|
45
|
+
names.push(name);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return names;
|
|
49
|
+
}
|
|
50
|
+
export async function copyReferencedImages(visibleSources, visibleMetas, imageIndex, stagingDir, variantDir) {
|
|
51
|
+
const refs = new Set();
|
|
52
|
+
for (const source of visibleSources.values()) {
|
|
53
|
+
for (const m of source.matchAll(EMBED_RE)) {
|
|
54
|
+
const name = m[1].trim();
|
|
55
|
+
if (!IMAGE_EXT_RE.test(name))
|
|
56
|
+
continue;
|
|
57
|
+
const image = imageIndex.get(slugify(name));
|
|
58
|
+
if (image)
|
|
59
|
+
refs.add(image.outputPath);
|
|
60
|
+
}
|
|
61
|
+
for (const name of galleryImageNames(source)) {
|
|
62
|
+
const image = imageIndex.get(slugify(name.split("/").pop()));
|
|
63
|
+
if (image)
|
|
64
|
+
refs.add(image.outputPath);
|
|
65
|
+
}
|
|
66
|
+
// Standard-Markdown image refs, ``. Without this
|
|
67
|
+
// only Obsidian `![[embed]]` syntax staged images, so CommonMark-syntax
|
|
68
|
+
// images rendered into HTML but 404'd on deploy. Mirrors the same MD_LINK_RE
|
|
69
|
+
// pass copyReferencedPassthroughs runs for `[label](file.pdf)` links.
|
|
70
|
+
for (const m of source.matchAll(MD_LINK_RE)) {
|
|
71
|
+
const name = m[1].trim();
|
|
72
|
+
if (/^(https?:|mailto:|#)/i.test(name))
|
|
73
|
+
continue;
|
|
74
|
+
if (!IMAGE_EXT_RE.test(name))
|
|
75
|
+
continue;
|
|
76
|
+
const image = imageIndex.get(slugify(name.split("/").pop()));
|
|
77
|
+
if (image)
|
|
78
|
+
refs.add(image.outputPath);
|
|
79
|
+
}
|
|
80
|
+
// Layers named inside ```battlemap blocks. A web-only layer (e.g. a
|
|
81
|
+
// composited tile overlay) has no other reference to stage it, so look
|
|
82
|
+
// it up by its full vault-relative path.
|
|
83
|
+
for (const path of battlemapLayerPaths(source)) {
|
|
84
|
+
const image = imageIndex.get(path);
|
|
85
|
+
if (image)
|
|
86
|
+
refs.add(image.outputPath);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Pages can name their cover via `image:` frontmatter alone (no body embed);
|
|
90
|
+
// pull those in too. coverImage was resolved to the served URL upstream, so
|
|
91
|
+
// strip the leading slash + decode to get back to the staging-relative path.
|
|
92
|
+
// `@vault/PATH` references inside any frontmatter string field also gate
|
|
93
|
+
// an asset into this variant — common for Scene background.src / Playlist
|
|
94
|
+
// sound.path that point at vault-shipped media. Page-role gating still
|
|
95
|
+
// applies because we only walk visibleMetas (= pages this variant can see).
|
|
96
|
+
for (const p of visibleMetas) {
|
|
97
|
+
if (p.coverImage && !/^https?:\/\//i.test(p.coverImage)) {
|
|
98
|
+
try {
|
|
99
|
+
refs.add(decodeURIComponent(p.coverImage.replace(/^\//, "")));
|
|
100
|
+
}
|
|
101
|
+
catch { /* malformed coverImage URL — ignore */ }
|
|
102
|
+
}
|
|
103
|
+
if (p.frontmatter) {
|
|
104
|
+
forEachString(p.frontmatter, (s) => {
|
|
105
|
+
const path = vaultRefPath(s);
|
|
106
|
+
if (path && IMAGE_EXT_RE.test(path)) {
|
|
107
|
+
const image = imageIndex.get(path);
|
|
108
|
+
if (image)
|
|
109
|
+
refs.add(image.outputPath);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Image refs inside the page's foundry.patch_json (Scene backgrounds, tiles).
|
|
114
|
+
for (const path of p.foundryAssets ?? []) {
|
|
115
|
+
if (!IMAGE_EXT_RE.test(path))
|
|
116
|
+
continue;
|
|
117
|
+
const image = imageIndex.get(path);
|
|
118
|
+
if (image)
|
|
119
|
+
refs.add(image.outputPath);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const copied = [];
|
|
123
|
+
for (const outputPath of refs) {
|
|
124
|
+
const src = join(stagingDir, outputPath);
|
|
125
|
+
const dst = join(variantDir, outputPath);
|
|
126
|
+
await mkdir(dirname(dst), { recursive: true });
|
|
127
|
+
try {
|
|
128
|
+
await copyFile(src, dst);
|
|
129
|
+
copied.push(outputPath);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
// Source may legitimately be missing if the file is in the index but
|
|
133
|
+
// wasn't compressed (e.g. quality=0 path). Surface but don't crash.
|
|
134
|
+
console.warn(` warning: could not copy image ${outputPath}: ${err.message}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return copied;
|
|
138
|
+
}
|
|
139
|
+
/** Collect the `@vault/...` paths a page's foundry block references, from both
|
|
140
|
+
* `foundry.patch_json` and `foundry.patch`. A Scene's bulk asset refs
|
|
141
|
+
* (backgrounds, ambient sounds, tiles) live in that JSON content, and a token's
|
|
142
|
+
* ring subject lives in the inline `data` overlay; neither appears anywhere the
|
|
143
|
+
* per-variant asset scanners look, so without this they never ship and Foundry
|
|
144
|
+
* 404s them. Returns vault-relative paths. */
|
|
145
|
+
export async function collectDataJsonVaultRefs(vaultPath, fm, pagePath) {
|
|
146
|
+
const fo = fm["foundry"];
|
|
147
|
+
if (!fo || typeof fo !== "object" || Array.isArray(fo))
|
|
148
|
+
return [];
|
|
149
|
+
const block = fo;
|
|
150
|
+
const out = [];
|
|
151
|
+
const collect = (from) => forEachString(from, (s) => {
|
|
152
|
+
const path = vaultRefPath(s);
|
|
153
|
+
if (path)
|
|
154
|
+
out.push(path);
|
|
155
|
+
});
|
|
156
|
+
const rel = block["patch_json"];
|
|
157
|
+
if (typeof rel === "string" && rel.trim()) {
|
|
158
|
+
const parsed = await loadDataJson(vaultPath, rel.trim(), pagePath);
|
|
159
|
+
if (parsed !== null)
|
|
160
|
+
collect(parsed);
|
|
161
|
+
}
|
|
162
|
+
collect(block["patch"]);
|
|
163
|
+
return out;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Visit every string value reachable from `value` (object / array / scalar)
|
|
167
|
+
* and call `fn` once per string. Used to surface `@vault/PATH` references
|
|
168
|
+
* inside parsed frontmatter (e.g., a Scene's `foundry.patch.background.src`
|
|
169
|
+
* or a Playlist's `foundry.patch.sounds[N].path`) so the per-variant asset
|
|
170
|
+
* scanner can include those files alongside body-referenced ones.
|
|
171
|
+
*/
|
|
172
|
+
export function forEachString(value, fn) {
|
|
173
|
+
if (typeof value === "string")
|
|
174
|
+
return fn(value);
|
|
175
|
+
if (Array.isArray(value)) {
|
|
176
|
+
for (const v of value)
|
|
177
|
+
forEachString(v, fn);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (value && typeof value === "object") {
|
|
181
|
+
for (const v of Object.values(value))
|
|
182
|
+
forEachString(v, fn);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Extract a vault path from a `@vault/PATH` string, or null when the
|
|
186
|
+
* string isn't a vault reference. Trailing fragment / query stripped. */
|
|
187
|
+
export function vaultRefPath(s) {
|
|
188
|
+
if (!s.startsWith("@vault/"))
|
|
189
|
+
return null;
|
|
190
|
+
const rest = s.slice("@vault/".length).split("#")[0].split("?")[0];
|
|
191
|
+
return rest.length > 0 ? rest : null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Per-variant reference scan for passthrough files. A file lands in this
|
|
195
|
+
* variant's deploy only if a visible page mentions it — same gating story
|
|
196
|
+
* as images. Match patterns cover Obsidian embeds (`![[file.pdf]]`),
|
|
197
|
+
* Obsidian wikilinks (`[[file.pdf]]`), and standard markdown links
|
|
198
|
+
* (`[label](path/file.pdf)`). Anything not matched is dropped — that's
|
|
199
|
+
* the whole point of the change; a stray DM-only audio cue stays in the
|
|
200
|
+
* dm variant only.
|
|
201
|
+
*/
|
|
202
|
+
export async function copyReferencedPassthroughs(visibleSources, visibleMetas, passthroughIndex, stagingDir, variantDir,
|
|
203
|
+
/**
|
|
204
|
+
* Manifest path -> the file its own `download` field names. A
|
|
205
|
+
* foundry-manifest block names only the manifest, so the zip has no other
|
|
206
|
+
* reference to gate it into this variant; without this it would be staged
|
|
207
|
+
* and then shipped nowhere. Keyed by manifest so the zip inherits the
|
|
208
|
+
* manifest's role: a DM-only install link does not leak its module.
|
|
209
|
+
*/
|
|
210
|
+
manifestDownloads = new Map()) {
|
|
211
|
+
if (passthroughIndex.size === 0)
|
|
212
|
+
return [];
|
|
213
|
+
const refs = new Set();
|
|
214
|
+
for (const source of visibleSources.values()) {
|
|
215
|
+
for (const m of source.matchAll(WIKI_LINK_RE)) {
|
|
216
|
+
const name = m[1].trim();
|
|
217
|
+
const entry = passthroughIndex.get(slugify(name.split("/").pop()));
|
|
218
|
+
if (entry)
|
|
219
|
+
refs.add(entry.outputPath);
|
|
220
|
+
}
|
|
221
|
+
for (const m of source.matchAll(MD_LINK_RE)) {
|
|
222
|
+
const name = m[1].trim();
|
|
223
|
+
// Skip http(s) links and anchor-only refs.
|
|
224
|
+
if (/^(https?:|mailto:|#)/i.test(name))
|
|
225
|
+
continue;
|
|
226
|
+
const entry = passthroughIndex.get(slugify(name.split("/").pop()));
|
|
227
|
+
if (entry)
|
|
228
|
+
refs.add(entry.outputPath);
|
|
229
|
+
}
|
|
230
|
+
// Files named by ```download blocks, looked up by full vault-relative
|
|
231
|
+
// path rather than basename: a download names an exact file, and two
|
|
232
|
+
// releases called module.json in different folders must not collide.
|
|
233
|
+
for (const path of [...downloadFilePaths(source), ...foundryManifestPaths(source)]) {
|
|
234
|
+
const entry = passthroughIndex.get(path);
|
|
235
|
+
if (entry)
|
|
236
|
+
refs.add(entry.outputPath);
|
|
237
|
+
const derived = manifestDownloads.get(path);
|
|
238
|
+
if (derived) {
|
|
239
|
+
const zip = passthroughIndex.get(derived);
|
|
240
|
+
if (zip)
|
|
241
|
+
refs.add(zip.outputPath);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// `@vault/PATH` references inside any frontmatter string also gate a
|
|
246
|
+
// passthrough into this variant. Same per-page-role visibility rules
|
|
247
|
+
// (only walking visibleMetas) — a dm-tier page's @vault/Audio/secret.ogg
|
|
248
|
+
// ships only to the dm variant.
|
|
249
|
+
for (const p of visibleMetas) {
|
|
250
|
+
if (!p.frontmatter)
|
|
251
|
+
continue;
|
|
252
|
+
forEachString(p.frontmatter, (s) => {
|
|
253
|
+
const path = vaultRefPath(s);
|
|
254
|
+
if (path) {
|
|
255
|
+
const entry = passthroughIndex.get(path);
|
|
256
|
+
if (entry)
|
|
257
|
+
refs.add(entry.outputPath);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
// Audio/video/pdf refs inside the page's foundry.patch_json (ambient sounds).
|
|
261
|
+
for (const path of p.foundryAssets ?? []) {
|
|
262
|
+
const entry = passthroughIndex.get(path);
|
|
263
|
+
if (entry)
|
|
264
|
+
refs.add(entry.outputPath);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const copied = [];
|
|
268
|
+
for (const outputPath of refs) {
|
|
269
|
+
const src = join(stagingDir, outputPath);
|
|
270
|
+
const dst = join(variantDir, outputPath);
|
|
271
|
+
await mkdir(dirname(dst), { recursive: true });
|
|
272
|
+
try {
|
|
273
|
+
await copyFile(src, dst);
|
|
274
|
+
copied.push(outputPath);
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
console.warn(` warning: could not copy ${outputPath}: ${err.message}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return copied;
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=asset-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-refs.js","sourceRoot":"","sources":["../src/asset-refs.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,uEAAuE;AACvE,0EAA0E;AAC1E,2EAA2E;AAC3E,+BAA+B;AAE/B,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|