@vizhub/runtime 0.4.0 → 0.6.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 +33 -21
- package/dist/{buildHTML.d.ts → build/build.d.ts} +5 -6
- package/dist/build/build.d.ts.map +1 -0
- package/dist/{determineRuntimeVersion.d.ts → build/determineRuntimeVersion.d.ts} +1 -1
- package/dist/build/determineRuntimeVersion.d.ts.map +1 -0
- package/dist/build/determineRuntimeVersion.test.d.ts.map +1 -0
- package/dist/build/index.d.ts +2 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/types.d.ts +7 -0
- package/dist/build/types.d.ts.map +1 -0
- package/dist/{slugCache-CxGQFqi6.js → build-DU4cyBtp.js} +351 -337
- package/dist/build-DU4cyBtp.js.map +1 -0
- package/dist/build-DkIslKFi.cjs +214 -0
- package/dist/build-DkIslKFi.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +167 -73
- package/dist/index.js.map +1 -1
- package/dist/{createRuntime.d.ts → orchestration/createRuntime.d.ts} +1 -2
- package/dist/orchestration/createRuntime.d.ts.map +1 -0
- package/dist/orchestration/generateRequestId.d.ts +2 -0
- package/dist/orchestration/generateRequestId.d.ts.map +1 -0
- package/dist/orchestration/setupBuild.d.ts +10 -0
- package/dist/orchestration/setupBuild.d.ts.map +1 -0
- package/dist/orchestration/setupInvalidateVizCache.d.ts +3 -0
- package/dist/orchestration/setupInvalidateVizCache.d.ts.map +1 -0
- package/dist/{types.d.ts → orchestration/types.d.ts} +26 -14
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/worker.d.ts.map +1 -0
- package/dist/test/end-to-end.test.d.ts +2 -0
- package/dist/test/end-to-end.test.d.ts.map +1 -0
- package/dist/test/orchestration.test.d.ts +2 -0
- package/dist/test/orchestration.test.d.ts.map +1 -0
- package/dist/test/testInBrowser.d.ts.map +1 -1
- package/dist/test/testMockedIframeWithWorker.d.ts +2 -1
- package/dist/test/testMockedIframeWithWorker.d.ts.map +1 -1
- package/dist/test/testRuntimeWithWorker.d.ts +4 -3
- package/dist/test/testRuntimeWithWorker.d.ts.map +1 -1
- package/dist/test/testStackTrace.d.ts.map +1 -1
- package/dist/v3/computeBundleJSV3.d.ts +2 -2
- package/dist/v3/computeBundleJSV3.d.ts.map +1 -1
- package/dist/v3/htmlTemplate.d.ts.map +1 -1
- package/dist/v3/index.d.ts +9 -0
- package/dist/v3/index.d.ts.map +1 -1
- package/dist/v3/v3Build.d.ts +2 -1
- package/dist/v3/v3Build.d.ts.map +1 -1
- package/dist/v4/bundleModule.d.ts.map +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.js +41 -37
- package/dist/worker.js.map +1 -1
- package/package.json +4 -2
- package/dist/buildHTML.d.ts.map +0 -1
- package/dist/createRuntime.d.ts.map +0 -1
- package/dist/determineRuntimeVersion.d.ts.map +0 -1
- package/dist/determineRuntimeVersion.test.d.ts.map +0 -1
- package/dist/slugCache-Bt1Sipcs.cjs +0 -214
- package/dist/slugCache-Bt1Sipcs.cjs.map +0 -1
- package/dist/slugCache-CxGQFqi6.js.map +0 -1
- package/dist/test/iframeWorkerManagement.test.d.ts +0 -2
- package/dist/test/iframeWorkerManagement.test.d.ts.map +0 -1
- package/dist/test/v3-hot-reloading.test.d.ts +0 -2
- package/dist/test/v3-hot-reloading.test.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/worker.d.ts.map +0 -1
- /package/dist/{determineRuntimeVersion.test.d.ts → build/determineRuntimeVersion.test.d.ts} +0 -0
- /package/dist/{worker.d.ts → orchestration/worker.d.ts} +0 -0
@@ -1,187 +1,68 @@
|
|
1
|
-
import { magicSandbox as
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
const
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
import { magicSandbox as j } from "magic-sandbox";
|
2
|
+
import { isVizId as z, getFileText as k, generateVizId as U, vizFilesToFileCollection as J } from "@vizhub/viz-utils";
|
3
|
+
import { transform as V } from "sucrase";
|
4
|
+
const jt = () => (Math.random() + "").slice(2);
|
5
|
+
function I() {
|
6
|
+
return {
|
7
|
+
name: "sucrase",
|
8
|
+
transform(e, t) {
|
9
|
+
if (!t.match(/\.(?:js|[jt]sx)$/))
|
10
|
+
return null;
|
11
|
+
const n = V(e, {
|
12
|
+
transforms: ["jsx", "typescript"],
|
13
|
+
filePath: t,
|
14
|
+
// For source maps
|
15
|
+
sourceMapOptions: {
|
16
|
+
compiledFilename: "bundle.js"
|
17
|
+
},
|
18
|
+
production: !0
|
19
|
+
});
|
20
|
+
return {
|
21
|
+
code: n.code,
|
22
|
+
map: n.sourceMap
|
23
|
+
};
|
24
|
+
}
|
25
|
+
};
|
26
|
+
}
|
27
|
+
const T = {
|
10
28
|
dependencies: {},
|
11
29
|
vizhub: {},
|
12
30
|
license: "MIT"
|
13
|
-
},
|
31
|
+
}, D = !1, x = (e) => {
|
14
32
|
const t = e["package.json"];
|
15
33
|
try {
|
16
|
-
const n = t ? JSON.parse(t) :
|
17
|
-
return
|
34
|
+
const n = t ? JSON.parse(t) : T;
|
35
|
+
return D && console.log(
|
18
36
|
"[packageJSON] pkg:",
|
19
37
|
JSON.stringify(n, null, 2)
|
20
38
|
), n;
|
21
39
|
} catch {
|
22
|
-
return
|
40
|
+
return T;
|
23
41
|
}
|
24
|
-
},
|
42
|
+
}, N = (e) => x(e).dependencies || {}, C = (e) => (x(e).vizhub || {}).libraries || {}, R = ({ name: e, version: t }, n, r = "jsdelivr") => {
|
25
43
|
const s = n[e] && n[e].path || "";
|
26
44
|
return r === "jsdelivr" ? `https://cdn.jsdelivr.net/npm/${e}@${t}${s}` : `https://unpkg.com/${e}@${t}${s}`;
|
27
|
-
},
|
45
|
+
}, B = (e) => {
|
28
46
|
var n;
|
29
47
|
const t = (n = e == null ? void 0 : e.vizhub) == null ? void 0 : n.libraries;
|
30
48
|
return t ? Object.entries(t).reduce(
|
31
49
|
(r, [s, o]) => (o.global && (r[s] = o.global), r),
|
32
50
|
{}
|
33
51
|
) : {};
|
34
|
-
},
|
52
|
+
}, A = {
|
35
53
|
d3: "d3",
|
36
54
|
react: "React",
|
37
55
|
"react-dom": "ReactDOM"
|
38
|
-
},
|
39
|
-
const t =
|
56
|
+
}, W = (e) => {
|
57
|
+
const t = B(e);
|
40
58
|
return {
|
41
|
-
...
|
59
|
+
...A,
|
42
60
|
...t
|
43
61
|
};
|
44
|
-
},
|
45
|
-
const t = e.trim();
|
46
|
-
return y(t, "html") && y(t, "head") && y(t, "body") ? t : `<html><head></head><body>${t}</body></html>`;
|
47
|
-
}, Y = (e, t) => e.replace(
|
48
|
-
new RegExp(
|
49
|
-
`<script[^>]*src=["'][^"']*${t.source}[^"']*["'][^>]*>\\s*<\/script>`,
|
50
|
-
"gi"
|
51
|
-
),
|
52
|
-
""
|
53
|
-
), R = (e, t, n) => e.replace(
|
54
|
-
new RegExp(t, "i"),
|
55
|
-
`${n}${t}`
|
56
|
-
), G = (e, t) => {
|
57
|
-
let n = _(e);
|
58
|
-
const r = Object.entries(S(t));
|
59
|
-
if (r.length) {
|
60
|
-
const o = $(t);
|
61
|
-
r.forEach(([c]) => {
|
62
|
-
n = Y(n, new RegExp(`${c}@`));
|
63
|
-
});
|
64
|
-
const i = r.map(
|
65
|
-
([c, a]) => I({ name: c, version: a }, o)
|
66
|
-
).map((c) => `<script src="${c}"><\/script>`).join(`
|
67
|
-
`);
|
68
|
-
n = R(
|
69
|
-
n,
|
70
|
-
"</head>",
|
71
|
-
i + `
|
72
|
-
`
|
73
|
-
);
|
74
|
-
}
|
75
|
-
if (t["bundle.js"] !== void 0 || t["index.js"] !== void 0) {
|
76
|
-
const o = '<script src="bundle.js"><\/script>', i = /<script\b[^>]*\bsrc=["']bundle\.js["'][^>]*>\s*<\/script>/gi, c = [...n.matchAll(i)];
|
77
|
-
c.length === 1 && (() => {
|
78
|
-
const l = c[0].index ?? -1;
|
79
|
-
if (l === -1) return !1;
|
80
|
-
const u = n.search(/<body\b[^>]*>/i), m = n.search(/<\/body>/i);
|
81
|
-
return u !== -1 && m !== -1 && l > u && l < m;
|
82
|
-
})() || (n = n.replace(i, ""), n = R(n, "</body>", o));
|
83
|
-
}
|
84
|
-
return /^\s*<!DOCTYPE/i.test(n) ? n : `<!DOCTYPE html>${n}`;
|
85
|
-
}, H = (e) => {
|
86
|
-
const t = e["index.html"];
|
87
|
-
return !t && !e["index.js"] && !e["bundle.js"] ? "" : G(t || "<!DOCTYPE html><html><head></head><body></body></html>", e);
|
88
|
-
}, M = (e) => {
|
89
|
-
let t = e.replace(/^\.\//, "");
|
90
|
-
return t = t.replace(/\/+/g, "/"), t = t.replace(/\/$/, ""), t;
|
91
|
-
}, Q = (e, t) => {
|
92
|
-
const n = e.includes("/") ? e.slice(0, e.lastIndexOf("/")) : "", r = t.split("/"), s = n ? n.split("/") : [];
|
93
|
-
for (const o of r)
|
94
|
-
o === ".." ? s.pop() : o !== "." && o !== "" && s.push(o);
|
95
|
-
return s.join("/");
|
96
|
-
}, k = (e) => ({
|
97
|
-
name: "virtual-file-system",
|
98
|
-
resolveId(t, n) {
|
99
|
-
if (t.startsWith("./") || t.startsWith("../")) {
|
100
|
-
const s = M(n ? Q(n, t) : t);
|
101
|
-
if (e[s])
|
102
|
-
return s;
|
103
|
-
const o = [".js", ".jsx", ".ts", ".tsx"];
|
104
|
-
for (const i of o) {
|
105
|
-
const c = s + i;
|
106
|
-
if (e[c])
|
107
|
-
return c;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
if (e[t])
|
111
|
-
return t;
|
112
|
-
const r = [".js", ".jsx", ".ts", ".tsx"];
|
113
|
-
for (const s of r) {
|
114
|
-
const o = t + s;
|
115
|
-
if (e[o])
|
116
|
-
return o;
|
117
|
-
}
|
118
|
-
return null;
|
119
|
-
},
|
120
|
-
load(t) {
|
121
|
-
return e[t] ? e[t] : null;
|
122
|
-
}
|
123
|
-
});
|
124
|
-
function O() {
|
125
|
-
return {
|
126
|
-
name: "sucrase",
|
127
|
-
transform(e, t) {
|
128
|
-
if (!t.match(/\.(?:js|[jt]sx)$/))
|
129
|
-
return null;
|
130
|
-
const n = U(e, {
|
131
|
-
transforms: ["jsx", "typescript"],
|
132
|
-
filePath: t,
|
133
|
-
// For source maps
|
134
|
-
sourceMapOptions: {
|
135
|
-
compiledFilename: "bundle.js"
|
136
|
-
},
|
137
|
-
production: !0
|
138
|
-
});
|
139
|
-
return {
|
140
|
-
code: n.code,
|
141
|
-
map: n.sourceMap
|
142
|
-
};
|
143
|
-
}
|
144
|
-
};
|
145
|
-
}
|
146
|
-
const Z = async ({
|
147
|
-
files: e,
|
148
|
-
rollup: t,
|
149
|
-
enableSourcemap: n = !0
|
150
|
-
}) => {
|
151
|
-
if (!e["index.js"])
|
152
|
-
throw new Error("Missing index.js");
|
153
|
-
const s = {
|
154
|
-
input: "./index.js",
|
155
|
-
plugins: [k(e), O()],
|
156
|
-
onwarn(l, u) {
|
157
|
-
l.code !== "UNRESOLVED_IMPORT" && u(l);
|
158
|
-
}
|
159
|
-
}, o = {
|
160
|
-
format: "iife",
|
161
|
-
sourcemap: n
|
162
|
-
}, i = x(e);
|
163
|
-
if (i) {
|
164
|
-
const l = F(i);
|
165
|
-
l && (s.external = Object.keys(l), o.globals = l);
|
166
|
-
}
|
167
|
-
const c = await t(s), { output: a } = await c.generate(o);
|
168
|
-
return a[0].code;
|
169
|
-
}, K = async ({
|
170
|
-
files: e,
|
171
|
-
rollup: t,
|
172
|
-
enableSourcemap: n
|
173
|
-
}) => ({
|
174
|
-
...e,
|
175
|
-
"bundle.js": await Z({
|
176
|
-
files: e,
|
177
|
-
rollup: t,
|
178
|
-
enableSourcemap: n
|
179
|
-
}),
|
180
|
-
"index.html": H(e)
|
181
|
-
}), g = (e) => {
|
62
|
+
}, v = (e) => {
|
182
63
|
const [t, ...n] = e.split("/"), r = n.join("/");
|
183
64
|
return { vizId: t, fileName: r };
|
184
|
-
},
|
65
|
+
}, q = `var EOL = {},
|
185
66
|
EOF = {},
|
186
67
|
QUOTE = 34,
|
187
68
|
NEWLINE = 10,
|
@@ -301,32 +182,32 @@ var tsv = dsv(' ');
|
|
301
182
|
|
302
183
|
var tsvParse = tsv.parse;
|
303
184
|
|
304
|
-
export { csvParse, tsvParse };`,
|
185
|
+
export { csvParse, tsvParse };`, Y = (e) => (
|
305
186
|
// str.replace(/`/g, '\\`');
|
306
187
|
e.replace(/\\/g, "\\\\").replace(/`/g, "\\`")
|
307
|
-
),
|
188
|
+
), _ = () => ({
|
308
189
|
name: "transformDSV",
|
309
190
|
// `id` here is of the form
|
310
191
|
// `{vizId}/{fileName}`
|
311
192
|
transform: async (e, t) => {
|
312
|
-
const { fileName: n } =
|
193
|
+
const { fileName: n } = v(t), r = n.endsWith(".csv"), s = n.endsWith(".tsv");
|
313
194
|
if (r || s)
|
314
195
|
return {
|
315
196
|
code: `
|
316
|
-
${
|
317
|
-
const data = ${r ? "csvParse" : "tsvParse"}(\`${
|
197
|
+
${q}
|
198
|
+
const data = ${r ? "csvParse" : "tsvParse"}(\`${Y(e)}\`);
|
318
199
|
export default data;
|
319
200
|
`,
|
320
201
|
map: { mappings: "" }
|
321
202
|
};
|
322
203
|
}
|
323
|
-
}),
|
204
|
+
}), G = (e) => {
|
324
205
|
const t = /^@([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)$/, n = e.match(t);
|
325
206
|
return n ? {
|
326
207
|
userName: n[1],
|
327
208
|
idOrSlug: n[2]
|
328
209
|
} : null;
|
329
|
-
},
|
210
|
+
}, H = ({
|
330
211
|
vizId: e,
|
331
212
|
slugCache: t
|
332
213
|
}) => ({
|
@@ -338,12 +219,12 @@ export { csvParse, tsvParse };`, tt = (e) => (
|
|
338
219
|
const {
|
339
220
|
vizId: i,
|
340
221
|
fileName: c
|
341
|
-
} =
|
222
|
+
} = v(r), a = c.split("/").slice(0, -1).join("/"), l = a ? `${a}/${o}` : o;
|
342
223
|
return `${i}/${l}`;
|
343
224
|
}
|
344
225
|
return e + "/" + o;
|
345
226
|
}
|
346
|
-
const s =
|
227
|
+
const s = G(n);
|
347
228
|
if (s) {
|
348
229
|
let o;
|
349
230
|
if (z(s.idOrSlug))
|
@@ -360,7 +241,7 @@ export { csvParse, tsvParse };`, tt = (e) => (
|
|
360
241
|
return o + "/index.js";
|
361
242
|
}
|
362
243
|
}
|
363
|
-
}),
|
244
|
+
}), Q = ({
|
364
245
|
vizCache: e,
|
365
246
|
trackCSSImport: t
|
366
247
|
}) => ({
|
@@ -368,61 +249,61 @@ export { csvParse, tsvParse };`, tt = (e) => (
|
|
368
249
|
// `id` here is of the form
|
369
250
|
// `{vizId}/{fileName}`
|
370
251
|
load: async (n) => {
|
371
|
-
const { vizId: r, fileName: s } =
|
252
|
+
const { vizId: r, fileName: s } = v(n);
|
372
253
|
if (s.endsWith(".css"))
|
373
254
|
return t(n), "";
|
374
|
-
const o = await e.get(r), i =
|
255
|
+
const o = await e.get(r), i = k(o, s);
|
375
256
|
if (i === null)
|
376
257
|
throw new Error(
|
377
258
|
`Imported file "${s}" not found.`
|
378
259
|
);
|
379
260
|
return i;
|
380
261
|
}
|
381
|
-
}),
|
382
|
-
let
|
383
|
-
const
|
262
|
+
}), M = /* @__PURE__ */ new Map();
|
263
|
+
let S;
|
264
|
+
const w = "https://cdn.jsdelivr.net/npm/svelte@4.2.9", St = `${w}/compiler.cjs`, Z = ({
|
384
265
|
getSvelteCompiler: e
|
385
266
|
}) => ({
|
386
267
|
name: "transformSvelte",
|
387
268
|
load: async (t) => {
|
388
|
-
if (!t.startsWith(
|
269
|
+
if (!t.startsWith(w))
|
389
270
|
return;
|
390
|
-
const n =
|
271
|
+
const n = M.get(t);
|
391
272
|
if (n) return n;
|
392
273
|
const r = await fetch(t).then(
|
393
274
|
(s) => s.text()
|
394
275
|
);
|
395
|
-
return
|
276
|
+
return M.set(t, r), r;
|
396
277
|
},
|
397
278
|
// From https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L255C2-L271C5
|
398
279
|
resolveId: async (t, n) => {
|
399
280
|
if (t === "svelte")
|
400
|
-
return `${
|
281
|
+
return `${w}/src/runtime/index.js`;
|
401
282
|
if (t.startsWith("svelte/")) {
|
402
283
|
const r = t.slice(7);
|
403
|
-
return `${
|
284
|
+
return `${w}/src/runtime/${r}/index.js`;
|
404
285
|
}
|
405
286
|
if (/^https?:/.test(t)) return t;
|
406
|
-
if (t.startsWith(".") && n && n.startsWith(
|
287
|
+
if (t.startsWith(".") && n && n.startsWith(w)) {
|
407
288
|
const r = new URL(t, n).href;
|
408
289
|
return new URL(t, n).href, r;
|
409
290
|
}
|
410
291
|
},
|
411
292
|
transform: async (t, n) => {
|
412
|
-
const { fileName: r } =
|
293
|
+
const { fileName: r } = v(n);
|
413
294
|
if (r.endsWith(".svelte")) {
|
414
|
-
if (!
|
295
|
+
if (!S) {
|
415
296
|
if (!e)
|
416
297
|
throw new Error("Svelte compiler not available");
|
417
|
-
|
298
|
+
S = await e();
|
418
299
|
}
|
419
|
-
return
|
300
|
+
return S(t, {
|
420
301
|
filename: r,
|
421
302
|
hydratable: !0
|
422
303
|
}).js;
|
423
304
|
}
|
424
305
|
}
|
425
|
-
}),
|
306
|
+
}), K = async ({
|
426
307
|
files: e,
|
427
308
|
rollup: t,
|
428
309
|
enableSourcemap: n = !0,
|
@@ -431,48 +312,48 @@ const v = "https://cdn.jsdelivr.net/npm/svelte@4.2.9", jt = `${v}/compiler.cjs`,
|
|
431
312
|
slugCache: o,
|
432
313
|
getSvelteCompiler: i
|
433
314
|
}) => {
|
434
|
-
const c = /* @__PURE__ */ new Set(), a = (
|
435
|
-
c.add(
|
315
|
+
const c = /* @__PURE__ */ new Set(), a = (u) => {
|
316
|
+
c.add(u);
|
436
317
|
};
|
437
318
|
if (!e["index.js"])
|
438
319
|
throw new Error("Missing index.js");
|
439
|
-
const
|
320
|
+
const d = {
|
440
321
|
input: "./index.js",
|
441
322
|
plugins: [
|
442
|
-
...s ? [
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
...r ? [
|
323
|
+
...s ? [H({ vizId: s, slugCache: o })] : [],
|
324
|
+
_(),
|
325
|
+
I(),
|
326
|
+
Z({ getSvelteCompiler: i }),
|
327
|
+
...r ? [Q({ vizCache: r, trackCSSImport: a })] : []
|
447
328
|
],
|
448
|
-
onwarn(
|
449
|
-
|
329
|
+
onwarn(u, h) {
|
330
|
+
u.code !== "UNRESOLVED_IMPORT" && h(u);
|
450
331
|
}
|
451
|
-
},
|
332
|
+
}, p = {
|
452
333
|
format: "umd",
|
453
334
|
name: "Viz",
|
454
335
|
sourcemap: !!n,
|
455
336
|
compact: !0
|
456
|
-
},
|
457
|
-
if (
|
458
|
-
const
|
459
|
-
|
337
|
+
}, f = x(e);
|
338
|
+
if (f) {
|
339
|
+
const u = W(f);
|
340
|
+
u && (d.external = Object.keys(u), p.globals = u);
|
460
341
|
}
|
461
|
-
const
|
342
|
+
const g = await t(d), { output: m } = await g.generate(p);
|
462
343
|
return {
|
463
|
-
src:
|
344
|
+
src: m[0].code,
|
464
345
|
cssFiles: Array.from(c)
|
465
346
|
};
|
466
347
|
};
|
467
|
-
function
|
348
|
+
function X() {
|
468
349
|
return Math.random().toString().slice(2, 7);
|
469
350
|
}
|
470
|
-
const
|
351
|
+
const tt = ({
|
471
352
|
cdn: e,
|
472
353
|
src: t,
|
473
354
|
styles: n
|
474
355
|
}) => {
|
475
|
-
const s = `viz-container-${
|
356
|
+
const s = `viz-container-${X()}`;
|
476
357
|
return `<!DOCTYPE html>
|
477
358
|
<html>
|
478
359
|
<head>
|
@@ -522,25 +403,24 @@ const at = ({
|
|
522
403
|
document.body.appendChild(script);
|
523
404
|
run();
|
524
405
|
};
|
525
|
-
const runCSS = (
|
526
|
-
|
527
|
-
let style = document.getElementById(styleElementId);
|
406
|
+
const runCSS = (css) => {
|
407
|
+
let style = document.getElementById('injected-style');
|
528
408
|
if (!style) {
|
529
409
|
style = document.createElement('style');
|
530
410
|
style.type = 'text/css';
|
531
|
-
style.id =
|
411
|
+
style.id = 'injected-style';
|
532
412
|
document.head.appendChild(style);
|
533
413
|
}
|
534
|
-
style.textContent =
|
414
|
+
style.textContent = css;
|
535
415
|
};
|
536
416
|
onmessage = (message) => {
|
537
417
|
switch (message.data.type) {
|
538
418
|
case 'runJS':
|
539
|
-
runJS(message.data.
|
419
|
+
runJS(message.data.js);
|
540
420
|
parent.postMessage({ type: 'runDone' }, "*");
|
541
421
|
break;
|
542
422
|
case 'runCSS':
|
543
|
-
runCSS(message.data.
|
423
|
+
runCSS(message.data.css);
|
544
424
|
break;
|
545
425
|
case 'ping':
|
546
426
|
parent.postMessage({ type: 'pong' }, "*");
|
@@ -553,7 +433,7 @@ const at = ({
|
|
553
433
|
<\/script>
|
554
434
|
</body>
|
555
435
|
</html>`;
|
556
|
-
},
|
436
|
+
}, et = async ({
|
557
437
|
files: e,
|
558
438
|
rollup: t,
|
559
439
|
enableSourcemap: n = !0,
|
@@ -562,7 +442,7 @@ const at = ({
|
|
562
442
|
slugCache: o,
|
563
443
|
getSvelteCompiler: i
|
564
444
|
}) => {
|
565
|
-
const { src: c, cssFiles: a } = await
|
445
|
+
const { src: c, cssFiles: a } = await K({
|
566
446
|
files: e,
|
567
447
|
rollup: t,
|
568
448
|
enableSourcemap: n,
|
@@ -571,30 +451,222 @@ const at = ({
|
|
571
451
|
slugCache: o,
|
572
452
|
getSvelteCompiler: i
|
573
453
|
});
|
574
|
-
let l =
|
454
|
+
let l = [];
|
575
455
|
if (a.length > 0)
|
576
|
-
for (let
|
577
|
-
const
|
578
|
-
|
579
|
-
l += `${h}<style id="${d}">${W}</style>`;
|
456
|
+
for (let m = 0; m < a.length; m++) {
|
457
|
+
const u = a[m], { vizId: h, fileName: y } = v(u), b = await r.get(h), E = k(b, y);
|
458
|
+
E && l.push(E);
|
580
459
|
}
|
581
|
-
|
582
|
-
|
583
|
-
|
460
|
+
const d = l.join(`
|
461
|
+
`), p = `
|
462
|
+
<style id="injected-style">${d}</style>`;
|
463
|
+
let f = "";
|
464
|
+
const g = Object.entries(
|
465
|
+
N(e)
|
584
466
|
);
|
585
|
-
if (
|
586
|
-
const
|
587
|
-
|
588
|
-
const
|
589
|
-
{ name:
|
590
|
-
|
467
|
+
if (g.length > 0) {
|
468
|
+
const m = C(e);
|
469
|
+
f = g.map(([u, h], y) => {
|
470
|
+
const b = R(
|
471
|
+
{ name: u, version: h },
|
472
|
+
m
|
591
473
|
);
|
592
|
-
return `${
|
593
|
-
`}<script src="${
|
474
|
+
return `${y > 0 ? " " : `
|
475
|
+
`}<script src="${b}"><\/script>`;
|
594
476
|
}).join("");
|
595
477
|
}
|
596
|
-
return
|
597
|
-
|
478
|
+
return {
|
479
|
+
html: tt({ cdn: f, src: c, styles: p }),
|
480
|
+
css: d,
|
481
|
+
js: c
|
482
|
+
};
|
483
|
+
}, nt = ({
|
484
|
+
initialContents: e,
|
485
|
+
handleCacheMiss: t
|
486
|
+
}) => {
|
487
|
+
const n = new Map(
|
488
|
+
e.map((i) => [i.id, i])
|
489
|
+
);
|
490
|
+
return { get: async (i) => {
|
491
|
+
const c = n.get(i);
|
492
|
+
if (c !== void 0)
|
493
|
+
return c;
|
494
|
+
if (!t)
|
495
|
+
throw new Error(
|
496
|
+
`Unresolved import from vizId ${i}, cache miss handler not provided.`
|
497
|
+
);
|
498
|
+
const a = await t(i);
|
499
|
+
if (a)
|
500
|
+
return n.set(i, a), a;
|
501
|
+
throw new Error(
|
502
|
+
`Unresolved import from vizId ${i}`
|
503
|
+
);
|
504
|
+
}, set: (i) => {
|
505
|
+
n.set(i.id, i);
|
506
|
+
}, invalidate: (i) => {
|
507
|
+
n.delete(i);
|
508
|
+
} };
|
509
|
+
}, $t = ({
|
510
|
+
initialMappings: e = {},
|
511
|
+
handleCacheMiss: t
|
512
|
+
}) => {
|
513
|
+
const n = new Map(
|
514
|
+
Object.entries(e)
|
515
|
+
);
|
516
|
+
return { get: async (i) => {
|
517
|
+
const c = n.get(i);
|
518
|
+
if (c !== void 0)
|
519
|
+
return c;
|
520
|
+
if (!t)
|
521
|
+
throw new Error(
|
522
|
+
`Unresolved slug ${i}, cache miss handler not provided.`
|
523
|
+
);
|
524
|
+
const a = await t(i);
|
525
|
+
if (a)
|
526
|
+
return n.set(i, a), a;
|
527
|
+
throw new Error(`Unresolved slug ${i}`);
|
528
|
+
}, set: (i, c) => {
|
529
|
+
n.set(i, c);
|
530
|
+
}, invalidate: (i) => {
|
531
|
+
n.delete(i);
|
532
|
+
} };
|
533
|
+
}, rt = (e, t = "Sample Content for Exporting") => {
|
534
|
+
const n = U(), r = {};
|
535
|
+
return Object.entries(e).forEach(
|
536
|
+
([s, o]) => {
|
537
|
+
const i = Math.floor(
|
538
|
+
Math.random() * 1e7
|
539
|
+
).toString();
|
540
|
+
r[i] = {
|
541
|
+
name: s,
|
542
|
+
text: o
|
543
|
+
};
|
544
|
+
}
|
545
|
+
), {
|
546
|
+
id: n,
|
547
|
+
files: r,
|
548
|
+
title: t
|
549
|
+
};
|
550
|
+
}, st = (e) => {
|
551
|
+
if (Object.keys(e).length === 0)
|
552
|
+
return null;
|
553
|
+
const t = "index.html" in e, n = "index.js" in e, r = "index.jsx" in e;
|
554
|
+
return t ? e["index.html"].includes('type="module"') ? "v4" : n || r ? "v2" : "v1" : !t && n ? "v3" : null;
|
555
|
+
}, $ = (e, t) => new RegExp(`<${t}\\b`, "i").test(e) && new RegExp(`</${t}>`, "i").test(e), ot = (e) => {
|
556
|
+
const t = e.trim();
|
557
|
+
return $(t, "html") && $(t, "head") && $(t, "body") ? t : `<html><head></head><body>${t}</body></html>`;
|
558
|
+
}, it = (e, t) => e.replace(
|
559
|
+
new RegExp(
|
560
|
+
`<script[^>]*src=["'][^"']*${t.source}[^"']*["'][^>]*>\\s*<\/script>`,
|
561
|
+
"gi"
|
562
|
+
),
|
563
|
+
""
|
564
|
+
), P = (e, t, n) => e.replace(
|
565
|
+
new RegExp(t, "i"),
|
566
|
+
`${n}${t}`
|
567
|
+
), ct = (e, t) => {
|
568
|
+
let n = ot(e);
|
569
|
+
const r = Object.entries(N(t));
|
570
|
+
if (r.length) {
|
571
|
+
const o = C(t);
|
572
|
+
r.forEach(([c]) => {
|
573
|
+
n = it(n, new RegExp(`${c}@`));
|
574
|
+
});
|
575
|
+
const i = r.map(
|
576
|
+
([c, a]) => R({ name: c, version: a }, o)
|
577
|
+
).map((c) => `<script src="${c}"><\/script>`).join(`
|
578
|
+
`);
|
579
|
+
n = P(
|
580
|
+
n,
|
581
|
+
"</head>",
|
582
|
+
i + `
|
583
|
+
`
|
584
|
+
);
|
585
|
+
}
|
586
|
+
if (t["bundle.js"] !== void 0 || t["index.js"] !== void 0) {
|
587
|
+
const o = '<script src="bundle.js"><\/script>', i = /<script\b[^>]*\bsrc=["']bundle\.js["'][^>]*>\s*<\/script>/gi, c = [...n.matchAll(i)];
|
588
|
+
c.length === 1 && (() => {
|
589
|
+
const l = c[0].index ?? -1;
|
590
|
+
if (l === -1) return !1;
|
591
|
+
const d = n.search(/<body\b[^>]*>/i), p = n.search(/<\/body>/i);
|
592
|
+
return d !== -1 && p !== -1 && l > d && l < p;
|
593
|
+
})() || (n = n.replace(i, ""), n = P(n, "</body>", o));
|
594
|
+
}
|
595
|
+
return /^\s*<!DOCTYPE/i.test(n) ? n : `<!DOCTYPE html>${n}`;
|
596
|
+
}, at = (e) => {
|
597
|
+
const t = e["index.html"];
|
598
|
+
return !t && !e["index.js"] && !e["bundle.js"] ? "" : ct(t || "<!DOCTYPE html><html><head></head><body></body></html>", e);
|
599
|
+
}, F = (e) => {
|
600
|
+
let t = e.replace(/^\.\//, "");
|
601
|
+
return t = t.replace(/\/+/g, "/"), t = t.replace(/\/$/, ""), t;
|
602
|
+
}, lt = (e, t) => {
|
603
|
+
const n = e.includes("/") ? e.slice(0, e.lastIndexOf("/")) : "", r = t.split("/"), s = n ? n.split("/") : [];
|
604
|
+
for (const o of r)
|
605
|
+
o === ".." ? s.pop() : o !== "." && o !== "" && s.push(o);
|
606
|
+
return s.join("/");
|
607
|
+
}, L = (e) => ({
|
608
|
+
name: "virtual-file-system",
|
609
|
+
resolveId(t, n) {
|
610
|
+
if (t.startsWith("./") || t.startsWith("../")) {
|
611
|
+
const s = F(n ? lt(n, t) : t);
|
612
|
+
if (e[s])
|
613
|
+
return s;
|
614
|
+
const o = [".js", ".jsx", ".ts", ".tsx"];
|
615
|
+
for (const i of o) {
|
616
|
+
const c = s + i;
|
617
|
+
if (e[c])
|
618
|
+
return c;
|
619
|
+
}
|
620
|
+
}
|
621
|
+
if (e[t])
|
622
|
+
return t;
|
623
|
+
const r = [".js", ".jsx", ".ts", ".tsx"];
|
624
|
+
for (const s of r) {
|
625
|
+
const o = t + s;
|
626
|
+
if (e[o])
|
627
|
+
return o;
|
628
|
+
}
|
629
|
+
return null;
|
630
|
+
},
|
631
|
+
load(t) {
|
632
|
+
return e[t] ? e[t] : null;
|
633
|
+
}
|
634
|
+
}), ut = async ({
|
635
|
+
files: e,
|
636
|
+
rollup: t,
|
637
|
+
enableSourcemap: n = !0
|
638
|
+
}) => {
|
639
|
+
if (!e["index.js"])
|
640
|
+
throw new Error("Missing index.js");
|
641
|
+
const s = {
|
642
|
+
input: "./index.js",
|
643
|
+
plugins: [L(e), I()],
|
644
|
+
onwarn(l, d) {
|
645
|
+
l.code !== "UNRESOLVED_IMPORT" && d(l);
|
646
|
+
}
|
647
|
+
}, o = {
|
648
|
+
format: "iife",
|
649
|
+
sourcemap: n
|
650
|
+
}, i = x(e);
|
651
|
+
if (i) {
|
652
|
+
const l = W(i);
|
653
|
+
l && (s.external = Object.keys(l), o.globals = l);
|
654
|
+
}
|
655
|
+
const c = await t(s), { output: a } = await c.generate(o);
|
656
|
+
return a[0].code;
|
657
|
+
}, dt = async ({
|
658
|
+
files: e,
|
659
|
+
rollup: t,
|
660
|
+
enableSourcemap: n
|
661
|
+
}) => ({
|
662
|
+
...e,
|
663
|
+
"bundle.js": await ut({
|
664
|
+
files: e,
|
665
|
+
rollup: t,
|
666
|
+
enableSourcemap: n
|
667
|
+
}),
|
668
|
+
"index.html": at(e)
|
669
|
+
}), pt = (e) => {
|
598
670
|
const t = [], n = /<script\b([^>]*)>[\s\S]*?<\/script>/gi;
|
599
671
|
let r;
|
600
672
|
for (; (r = n.exec(e)) !== null; ) {
|
@@ -607,7 +679,7 @@ const at = ({
|
|
607
679
|
o && t.push(o[1]);
|
608
680
|
}
|
609
681
|
return t;
|
610
|
-
},
|
682
|
+
}, mt = async ({
|
611
683
|
entryPoint: e,
|
612
684
|
files: t,
|
613
685
|
rollup: n,
|
@@ -615,38 +687,38 @@ const at = ({
|
|
615
687
|
}) => {
|
616
688
|
const s = {
|
617
689
|
input: `./${e}`,
|
618
|
-
plugins: [
|
619
|
-
external: (c) =>
|
690
|
+
plugins: [L(t), I()],
|
691
|
+
external: (c) => t[c] ? !1 : !c.startsWith("./"),
|
620
692
|
onwarn(c, a) {
|
621
|
-
|
693
|
+
a(c);
|
622
694
|
}
|
623
695
|
}, o = await n(s), { output: i } = await o.generate({
|
624
696
|
format: "es",
|
625
697
|
sourcemap: r
|
626
698
|
});
|
627
699
|
return i[0].code;
|
628
|
-
},
|
700
|
+
}, O = (e, t) => new RegExp(`<${t}\\b`, "i").test(e) && new RegExp(`</${t}>`, "i").test(e), ft = (e) => {
|
629
701
|
const t = e.trim();
|
630
|
-
return
|
631
|
-
},
|
702
|
+
return O(t, "html") && O(t, "head") && O(t, "body") ? t : `<html><head></head><body>${t}</body></html>`;
|
703
|
+
}, ht = (e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), wt = (e, t, n) => e.replace(
|
632
704
|
new RegExp(t, "i"),
|
633
705
|
`${n}${t}`
|
634
|
-
),
|
635
|
-
const t =
|
706
|
+
), vt = (e) => {
|
707
|
+
const t = N(e);
|
636
708
|
if (Object.keys(t).length === 0) return null;
|
637
|
-
const n =
|
709
|
+
const n = C(e), r = {};
|
638
710
|
for (const [s, o] of Object.entries(t))
|
639
|
-
r[s] =
|
711
|
+
r[s] = R(
|
640
712
|
{ name: s, version: o },
|
641
713
|
n
|
642
714
|
);
|
643
715
|
return JSON.stringify({ imports: r }, null, 2);
|
644
|
-
},
|
716
|
+
}, gt = (e, t) => {
|
645
717
|
if (!e["index.html"]) return "";
|
646
|
-
let n =
|
718
|
+
let n = ft(e["index.html"]);
|
647
719
|
t.forEach((s, o) => {
|
648
720
|
const i = new RegExp(
|
649
|
-
`<script\\b[^>]*\\bsrc=["']${
|
721
|
+
`<script\\b[^>]*\\bsrc=["']${ht(o)}["'][^>]*>[^<]*<\/script>`,
|
650
722
|
"gi"
|
651
723
|
);
|
652
724
|
n = n.replace(
|
@@ -656,7 +728,7 @@ ${s}
|
|
656
728
|
<\/script>`
|
657
729
|
);
|
658
730
|
});
|
659
|
-
const r =
|
731
|
+
const r = vt(e);
|
660
732
|
if (r && !/<script\b[^>]*type=["']importmap["'][^>]*>/i.test(
|
661
733
|
n
|
662
734
|
)) {
|
@@ -664,24 +736,24 @@ ${s}
|
|
664
736
|
${r}
|
665
737
|
<\/script>
|
666
738
|
`;
|
667
|
-
n =
|
739
|
+
n = wt(
|
668
740
|
n,
|
669
741
|
"</head>",
|
670
742
|
o
|
671
743
|
);
|
672
744
|
}
|
673
745
|
return /^\s*<!DOCTYPE/i.test(n) ? n : `<!DOCTYPE html>${n}`;
|
674
|
-
},
|
746
|
+
}, xt = async ({
|
675
747
|
files: e,
|
676
748
|
rollup: t,
|
677
749
|
enableSourcemap: n = !0
|
678
750
|
}) => {
|
679
|
-
const r = e["index.html"] || "", s =
|
751
|
+
const r = e["index.html"] || "", s = pt(r);
|
680
752
|
if (s.length === 0)
|
681
753
|
return e;
|
682
754
|
const o = /* @__PURE__ */ new Map();
|
683
755
|
for (const c of s) {
|
684
|
-
const a = await
|
756
|
+
const a = await mt({
|
685
757
|
entryPoint: c,
|
686
758
|
files: e,
|
687
759
|
rollup: t,
|
@@ -689,55 +761,12 @@ ${r}
|
|
689
761
|
});
|
690
762
|
o.set(c, a);
|
691
763
|
}
|
692
|
-
const i =
|
764
|
+
const i = gt(e, o);
|
693
765
|
return {
|
694
766
|
...e,
|
695
767
|
"index.html": i
|
696
768
|
};
|
697
|
-
},
|
698
|
-
initialContents: e,
|
699
|
-
handleCacheMiss: t
|
700
|
-
}) => {
|
701
|
-
const n = new Map(
|
702
|
-
e.map((i) => [i.id, i])
|
703
|
-
);
|
704
|
-
return { get: async (i) => {
|
705
|
-
const c = n.get(i);
|
706
|
-
if (c !== void 0)
|
707
|
-
return c;
|
708
|
-
if (!t)
|
709
|
-
throw new Error(
|
710
|
-
`Unresolved import from vizId ${i}, cache miss handler not provided.`
|
711
|
-
);
|
712
|
-
const a = await t(i);
|
713
|
-
if (a)
|
714
|
-
return n.set(i, a), a;
|
715
|
-
throw new Error(
|
716
|
-
`Unresolved import from vizId ${i}`
|
717
|
-
);
|
718
|
-
}, set: (i) => {
|
719
|
-
n.set(i.id, i);
|
720
|
-
}, invalidate: (i) => {
|
721
|
-
n.delete(i);
|
722
|
-
} };
|
723
|
-
}, xt = (e, t = "Sample Content for Exporting") => {
|
724
|
-
const n = J(), r = {};
|
725
|
-
return Object.entries(e).forEach(
|
726
|
-
([s, o]) => {
|
727
|
-
const i = Math.floor(
|
728
|
-
Math.random() * 1e7
|
729
|
-
).toString();
|
730
|
-
r[i] = {
|
731
|
-
name: s,
|
732
|
-
text: o
|
733
|
-
};
|
734
|
-
}
|
735
|
-
), {
|
736
|
-
id: n,
|
737
|
-
files: r,
|
738
|
-
title: t
|
739
|
-
};
|
740
|
-
}, St = async ({
|
769
|
+
}, Ot = async ({
|
741
770
|
files: e,
|
742
771
|
rollup: t,
|
743
772
|
enableSourcemap: n = !0,
|
@@ -753,26 +782,30 @@ ${r}
|
|
753
782
|
throw new Error(
|
754
783
|
"vizId is required when using vizCache"
|
755
784
|
);
|
756
|
-
if (!e && r && s && (e =
|
785
|
+
if (!e && r && s && (e = J(
|
757
786
|
(a = await r.get(s)) == null ? void 0 : a.files
|
758
787
|
)), !e)
|
759
788
|
throw new Error("Upable to extract viz files");
|
760
|
-
const c =
|
789
|
+
const c = st(e);
|
761
790
|
if (c === "v1")
|
762
|
-
return
|
791
|
+
return {
|
792
|
+
html: j(e)
|
793
|
+
};
|
763
794
|
if (c === "v2") {
|
764
795
|
if (!t)
|
765
796
|
throw new Error("Rollup is required for v2 runtime");
|
766
|
-
return
|
767
|
-
|
768
|
-
|
797
|
+
return {
|
798
|
+
html: j(
|
799
|
+
await dt({ files: e, rollup: t, enableSourcemap: n })
|
800
|
+
)
|
801
|
+
};
|
769
802
|
}
|
770
803
|
if (c === "v3") {
|
771
804
|
if (!t)
|
772
805
|
throw new Error("Rollup is required for v3 runtime");
|
773
806
|
if (!r && !s) {
|
774
|
-
const l =
|
775
|
-
s = l.id, r =
|
807
|
+
const l = rt(e);
|
808
|
+
s = l.id, r = nt({
|
776
809
|
initialContents: [l],
|
777
810
|
handleCacheMiss: async () => {
|
778
811
|
throw new Error(
|
@@ -787,7 +820,7 @@ ${r}
|
|
787
820
|
);
|
788
821
|
if (!s)
|
789
822
|
throw new Error("vizId is required for v3 runtime");
|
790
|
-
return await
|
823
|
+
return await et({
|
791
824
|
files: e,
|
792
825
|
rollup: t,
|
793
826
|
vizCache: r,
|
@@ -799,43 +832,24 @@ ${r}
|
|
799
832
|
if (c === "v4") {
|
800
833
|
if (!t)
|
801
834
|
throw new Error("Rollup is required for v4 runtime");
|
802
|
-
return
|
803
|
-
|
804
|
-
|
835
|
+
return {
|
836
|
+
html: j(
|
837
|
+
await xt({ files: e, rollup: t, enableSourcemap: n })
|
838
|
+
)
|
839
|
+
};
|
805
840
|
}
|
806
841
|
throw new Error(
|
807
842
|
`Unsupported runtime version: ${c}`
|
808
843
|
);
|
809
|
-
}, $t = ({
|
810
|
-
initialMappings: e = {},
|
811
|
-
handleCacheMiss: t
|
812
|
-
}) => {
|
813
|
-
const n = new Map(
|
814
|
-
Object.entries(e)
|
815
|
-
);
|
816
|
-
return { get: async (i) => {
|
817
|
-
const c = n.get(i);
|
818
|
-
if (c !== void 0)
|
819
|
-
return c;
|
820
|
-
if (!t)
|
821
|
-
throw new Error(
|
822
|
-
`Unresolved slug ${i}, cache miss handler not provided.`
|
823
|
-
);
|
824
|
-
const a = await t(i);
|
825
|
-
if (a)
|
826
|
-
return n.set(i, a), a;
|
827
|
-
throw new Error(`Unresolved slug ${i}`);
|
828
|
-
}, set: (i, c) => {
|
829
|
-
n.set(i, c);
|
830
|
-
}, invalidate: (i) => {
|
831
|
-
n.delete(i);
|
832
|
-
} };
|
833
844
|
};
|
834
845
|
export {
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
846
|
+
nt as a,
|
847
|
+
Ot as b,
|
848
|
+
K as c,
|
849
|
+
$t as d,
|
850
|
+
rt as e,
|
851
|
+
jt as g,
|
852
|
+
St as s,
|
853
|
+
et as v
|
840
854
|
};
|
841
|
-
//# sourceMappingURL=
|
855
|
+
//# sourceMappingURL=build-DU4cyBtp.js.map
|