@vizhub/runtime 0.2.0 → 0.3.1
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 +280 -128
- package/dist/buildHTML.d.ts +14 -0
- package/dist/buildHTML.js +67 -0
- package/dist/cjs/buildHTML.js +71 -0
- package/dist/cjs/common/packageJson.js +81 -0
- package/dist/cjs/common/packageJson.test.js +148 -0
- package/dist/cjs/common/sucrasePlugin.js +27 -0
- package/dist/cjs/common/virtualFileSystem.js +79 -0
- package/dist/cjs/determineRuntimeVersion.js +26 -0
- package/dist/cjs/determineRuntimeVersion.test.js +103 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/fixtures/v1/basicHTML.js +18 -0
- package/dist/cjs/test/fixtures/v1/fetchProxy.js +15 -0
- package/dist/cjs/test/fixtures/v1/index.js +15 -0
- package/dist/cjs/test/fixtures/v1/jsScriptTag.js +12 -0
- package/dist/cjs/test/fixtures/v1/protocolTest.js +18 -0
- package/dist/cjs/test/fixtures/v1/styleTest.js +18 -0
- package/dist/cjs/test/fixtures/v1/xmlTest.js +22 -0
- package/dist/cjs/test/fixtures/v2/basicBundle.js +8 -0
- package/dist/cjs/test/fixtures/v2/basicBundleNoExtension.js +8 -0
- package/dist/cjs/test/fixtures/v2/d3Import.js +10 -0
- package/dist/cjs/test/fixtures/v2/d3ImportPkg.js +22 -0
- package/dist/cjs/test/fixtures/v2/d3RosettaImportPkg.js +22 -0
- package/dist/cjs/test/fixtures/v2/es6Preserve.js +9 -0
- package/dist/cjs/test/fixtures/v2/generatorSupport.js +9 -0
- package/dist/cjs/test/fixtures/v2/index.js +45 -0
- package/dist/cjs/test/fixtures/v2/jsxTranspile.js +9 -0
- package/dist/cjs/test/fixtures/v2/reactDomImport.js +11 -0
- package/dist/cjs/test/fixtures/v2/reactDomImportPkg.js +27 -0
- package/dist/cjs/test/fixtures/v2/reactImport.js +10 -0
- package/dist/cjs/test/fixtures/v2/reactImportPkg.js +20 -0
- package/dist/cjs/test/fixtures/v2/sourceMapErrorFixture.js +22 -0
- package/dist/cjs/test/fixtures/v2/unicodeSupport.js +9 -0
- package/dist/cjs/test/fixtures/v3/basicIndexJS.js +10 -0
- package/dist/cjs/test/fixtures/v3/cssImport.js +12 -0
- package/dist/cjs/test/fixtures/v3/csvImport.js +14 -0
- package/dist/cjs/test/fixtures/v3/csvStrangeChars.js +15 -0
- package/dist/cjs/test/fixtures/v3/index.js +25 -0
- package/dist/cjs/test/fixtures/v3/jsExport.js +13 -0
- package/dist/cjs/test/fixtures/v3/sourcemap.js +13 -0
- package/dist/cjs/test/fixtures/v3/svelte.js +21 -0
- package/dist/cjs/test/fixtures/v3/vizContent.js +14 -0
- package/dist/cjs/test/fixtures/v3/vizImport.js +88 -0
- package/dist/cjs/test/fixtures/v4/d3Usage.js +34 -0
- package/dist/cjs/test/fixtures/v4/esmBuild.js +21 -0
- package/dist/cjs/test/fixtures/v4/fetchInterception.js +21 -0
- package/dist/cjs/test/fixtures/v4/index.js +21 -0
- package/dist/cjs/test/fixtures/v4/jsScriptTagTypeModule.js +21 -0
- package/dist/cjs/test/fixtures/v4/jsScriptTagTypeModules.js +15 -0
- package/dist/cjs/test/fixtures/v4/reactHooks.js +50 -0
- package/dist/cjs/test/fixtures/v4/reactJsx.js +37 -0
- package/dist/cjs/test/fixtures/v4/threeJsUsage.js +27 -0
- package/dist/cjs/test/fixtures/v4/typeScriptSupport.js +32 -0
- package/dist/cjs/test/testInBrowser.js +50 -0
- package/dist/cjs/test/testStackTrace.js +58 -0
- package/dist/cjs/test/v1.test.js +70 -0
- package/dist/cjs/test/v2.test.js +124 -0
- package/dist/cjs/test/v3.test.js +119 -0
- package/dist/cjs/test/v4.test.js +105 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/vizContentToFileCollection.js +23 -0
- package/dist/cjs/utils/vizContentToFileCollection.test.js +77 -0
- package/dist/cjs/v2/computeBundleJSV2.js +33 -0
- package/dist/cjs/v2/getComputedIndexHtml.js +86 -0
- package/dist/cjs/v2/getComputedIndexHtml.test.js +136 -0
- package/dist/cjs/v2/index.js +5 -0
- package/dist/cjs/v2/v2Build.js +15 -0
- package/dist/cjs/v3/cleanRollupErrorMessage.js +13 -0
- package/dist/cjs/v3/computeBundleJSV3.js +52 -0
- package/dist/cjs/v3/createVizContent.js +27 -0
- package/dist/cjs/v3/extractVizImport.js +27 -0
- package/dist/cjs/v3/extractVizImport.test.js +32 -0
- package/dist/cjs/v3/htmlTemplate.js +93 -0
- package/dist/cjs/v3/index.js +5 -0
- package/dist/cjs/v3/parseId.js +9 -0
- package/dist/cjs/v3/parseId.test.js +27 -0
- package/dist/cjs/v3/setupV3Runtime.js +345 -0
- package/dist/cjs/v3/slugCache.js +39 -0
- package/dist/cjs/v3/slugCache.test.js +107 -0
- package/dist/cjs/v3/transformDSV/dsvParseSrc.js +124 -0
- package/dist/cjs/v3/transformDSV/index.js +44 -0
- package/dist/cjs/v3/transformSvelte.js +81 -0
- package/dist/cjs/v3/types.js +2 -0
- package/dist/cjs/v3/v3Build.js +34 -0
- package/dist/cjs/v3/vizCache.js +40 -0
- package/dist/cjs/v3/vizCache.test.js +100 -0
- package/dist/cjs/v3/vizLoad.js +50 -0
- package/dist/cjs/v3/vizResolve.js +73 -0
- package/dist/cjs/v4/index.js +138 -0
- package/dist/common/packageJson.d.ts +1 -1
- package/dist/common/virtualFileSystem.d.ts +1 -1
- package/dist/determineRuntimeVersion.d.ts +2 -1
- package/dist/esm/buildHTML.js +67 -0
- package/dist/esm/common/packageJson.js +71 -0
- package/dist/esm/common/packageJson.test.js +146 -0
- package/dist/esm/common/sucrasePlugin.js +24 -0
- package/dist/esm/common/virtualFileSystem.js +75 -0
- package/dist/esm/determineRuntimeVersion.js +22 -0
- package/dist/esm/determineRuntimeVersion.test.js +101 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/test/fixtures/v1/basicHTML.js +15 -0
- package/dist/esm/test/fixtures/v1/fetchProxy.js +12 -0
- package/dist/esm/test/fixtures/v1/index.js +6 -0
- package/dist/esm/test/fixtures/v1/jsScriptTag.js +9 -0
- package/dist/esm/test/fixtures/v1/protocolTest.js +15 -0
- package/dist/esm/test/fixtures/v1/styleTest.js +15 -0
- package/dist/esm/test/fixtures/v1/xmlTest.js +19 -0
- package/dist/esm/test/fixtures/v2/basicBundle.js +5 -0
- package/dist/esm/test/fixtures/v2/basicBundleNoExtension.js +5 -0
- package/dist/esm/test/fixtures/v2/d3Import.js +7 -0
- package/dist/esm/test/fixtures/v2/d3ImportPkg.js +19 -0
- package/dist/esm/test/fixtures/v2/d3RosettaImportPkg.js +19 -0
- package/dist/esm/test/fixtures/v2/es6Preserve.js +6 -0
- package/dist/esm/test/fixtures/v2/generatorSupport.js +6 -0
- package/dist/esm/test/fixtures/v2/index.js +15 -0
- package/dist/esm/test/fixtures/v2/jsxTranspile.js +6 -0
- package/dist/esm/test/fixtures/v2/reactDomImport.js +8 -0
- package/dist/esm/test/fixtures/v2/reactDomImportPkg.js +24 -0
- package/dist/esm/test/fixtures/v2/reactImport.js +7 -0
- package/dist/esm/test/fixtures/v2/reactImportPkg.js +17 -0
- package/dist/esm/test/fixtures/v2/sourceMapErrorFixture.js +19 -0
- package/dist/esm/test/fixtures/v2/unicodeSupport.js +6 -0
- package/dist/esm/test/fixtures/v3/basicIndexJS.js +7 -0
- package/dist/esm/test/fixtures/v3/cssImport.js +9 -0
- package/dist/esm/test/fixtures/v3/csvImport.js +11 -0
- package/dist/esm/test/fixtures/v3/csvStrangeChars.js +12 -0
- package/dist/esm/test/fixtures/v3/index.js +9 -0
- package/dist/esm/test/fixtures/v3/jsExport.js +10 -0
- package/dist/esm/test/fixtures/v3/sourcemap.js +10 -0
- package/dist/esm/test/fixtures/v3/svelte.js +18 -0
- package/dist/esm/test/fixtures/v3/vizContent.js +11 -0
- package/dist/esm/test/fixtures/v3/vizImport.js +85 -0
- package/dist/esm/test/fixtures/v4/d3Usage.js +31 -0
- package/dist/esm/test/fixtures/v4/esmBuild.js +18 -0
- package/dist/esm/test/fixtures/v4/fetchInterception.js +18 -0
- package/dist/esm/test/fixtures/v4/index.js +9 -0
- package/dist/esm/test/fixtures/v4/jsScriptTagTypeModule.js +18 -0
- package/dist/esm/test/fixtures/v4/jsScriptTagTypeModules.js +12 -0
- package/dist/esm/test/fixtures/v4/reactHooks.js +47 -0
- package/dist/esm/test/fixtures/v4/reactJsx.js +34 -0
- package/dist/esm/test/fixtures/v4/threeJsUsage.js +24 -0
- package/dist/esm/test/fixtures/v4/typeScriptSupport.js +29 -0
- package/dist/esm/test/testInBrowser.js +47 -0
- package/dist/esm/test/testStackTrace.js +55 -0
- package/dist/esm/test/v1.test.js +65 -0
- package/dist/esm/test/v2.test.js +121 -0
- package/dist/esm/test/v3.test.js +114 -0
- package/dist/esm/test/v4.test.js +100 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/vizContentToFileCollection.js +19 -0
- package/dist/esm/utils/vizContentToFileCollection.test.js +75 -0
- package/dist/esm/v2/computeBundleJSV2.js +29 -0
- package/dist/esm/v2/getComputedIndexHtml.js +81 -0
- package/dist/esm/v2/getComputedIndexHtml.test.js +134 -0
- package/dist/esm/v2/index.js +1 -0
- package/dist/esm/v2/v2Build.js +11 -0
- package/dist/esm/v3/cleanRollupErrorMessage.js +9 -0
- package/dist/esm/v3/computeBundleJSV3.js +48 -0
- package/dist/esm/v3/createVizContent.js +23 -0
- package/dist/esm/v3/extractVizImport.js +23 -0
- package/dist/esm/v3/extractVizImport.test.js +30 -0
- package/dist/esm/v3/htmlTemplate.js +89 -0
- package/dist/esm/v3/index.js +1 -0
- package/dist/esm/v3/parseId.js +5 -0
- package/dist/esm/v3/parseId.test.js +25 -0
- package/dist/esm/v3/setupV3Runtime.js +341 -0
- package/dist/esm/v3/slugCache.js +35 -0
- package/dist/esm/v3/slugCache.test.js +105 -0
- package/dist/esm/v3/transformDSV/dsvParseSrc.js +121 -0
- package/dist/esm/v3/transformDSV/index.js +40 -0
- package/dist/esm/v3/transformSvelte.js +77 -0
- package/dist/esm/v3/types.js +1 -0
- package/dist/esm/v3/v3Build.js +30 -0
- package/dist/esm/v3/vizCache.js +36 -0
- package/dist/esm/v3/vizCache.test.js +98 -0
- package/dist/esm/v3/vizLoad.js +46 -0
- package/dist/esm/v3/vizResolve.js +69 -0
- package/dist/esm/v4/index.js +134 -0
- package/dist/index.d.ts +3 -14
- package/dist/index.js +3 -67
- package/dist/test/testInBrowser.d.ts +1 -2
- package/dist/test/testStackTrace.d.ts +1 -1
- package/dist/types/buildHTML.d.ts +14 -0
- package/dist/types/common/packageJson.d.ts +39 -0
- package/dist/types/common/packageJson.test.d.ts +1 -0
- package/dist/types/common/sucrasePlugin.d.ts +2 -0
- package/dist/types/common/virtualFileSystem.d.ts +3 -0
- package/dist/types/determineRuntimeVersion.d.ts +3 -0
- package/dist/types/determineRuntimeVersion.test.d.ts +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/test/fixtures/v1/basicHTML.d.ts +3 -0
- package/dist/types/test/fixtures/v1/fetchProxy.d.ts +5 -0
- package/dist/types/test/fixtures/v1/index.d.ts +6 -0
- package/dist/types/test/fixtures/v1/jsScriptTag.d.ts +4 -0
- package/dist/types/test/fixtures/v1/protocolTest.d.ts +3 -0
- package/dist/types/test/fixtures/v1/styleTest.d.ts +4 -0
- package/dist/types/test/fixtures/v1/xmlTest.d.ts +4 -0
- package/dist/types/test/fixtures/v2/basicBundle.d.ts +5 -0
- package/dist/types/test/fixtures/v2/basicBundleNoExtension.d.ts +5 -0
- package/dist/types/test/fixtures/v2/d3Import.d.ts +4 -0
- package/dist/types/test/fixtures/v2/d3ImportPkg.d.ts +5 -0
- package/dist/types/test/fixtures/v2/d3RosettaImportPkg.d.ts +5 -0
- package/dist/types/test/fixtures/v2/es6Preserve.d.ts +4 -0
- package/dist/types/test/fixtures/v2/generatorSupport.d.ts +4 -0
- package/dist/types/test/fixtures/v2/index.d.ts +14 -0
- package/dist/types/test/fixtures/v2/jsxTranspile.d.ts +4 -0
- package/dist/types/test/fixtures/v2/reactDomImport.d.ts +4 -0
- package/dist/types/test/fixtures/v2/reactDomImportPkg.d.ts +5 -0
- package/dist/types/test/fixtures/v2/reactImport.d.ts +4 -0
- package/dist/types/test/fixtures/v2/reactImportPkg.d.ts +5 -0
- package/dist/types/test/fixtures/v2/sourceMapErrorFixture.d.ts +5 -0
- package/dist/types/test/fixtures/v2/unicodeSupport.d.ts +4 -0
- package/dist/types/test/fixtures/v3/basicIndexJS.d.ts +3 -0
- package/dist/types/test/fixtures/v3/cssImport.d.ts +4 -0
- package/dist/types/test/fixtures/v3/csvImport.d.ts +4 -0
- package/dist/types/test/fixtures/v3/csvStrangeChars.d.ts +4 -0
- package/dist/types/test/fixtures/v3/index.d.ts +9 -0
- package/dist/types/test/fixtures/v3/jsExport.d.ts +4 -0
- package/dist/types/test/fixtures/v3/sourcemap.d.ts +3 -0
- package/dist/types/test/fixtures/v3/svelte.d.ts +4 -0
- package/dist/types/test/fixtures/v3/vizContent.d.ts +2 -0
- package/dist/types/test/fixtures/v3/vizImport.d.ts +6 -0
- package/dist/types/test/fixtures/v4/d3Usage.d.ts +5 -0
- package/dist/types/test/fixtures/v4/esmBuild.d.ts +5 -0
- package/dist/types/test/fixtures/v4/fetchInterception.d.ts +5 -0
- package/dist/types/test/fixtures/v4/index.d.ts +9 -0
- package/dist/types/test/fixtures/v4/jsScriptTagTypeModule.d.ts +4 -0
- package/dist/types/test/fixtures/v4/jsScriptTagTypeModules.d.ts +5 -0
- package/dist/types/test/fixtures/v4/reactHooks.d.ts +6 -0
- package/dist/types/test/fixtures/v4/reactJsx.d.ts +6 -0
- package/dist/types/test/fixtures/v4/threeJsUsage.d.ts +4 -0
- package/dist/types/test/fixtures/v4/typeScriptSupport.d.ts +5 -0
- package/dist/types/test/testInBrowser.d.ts +15 -0
- package/dist/types/test/testStackTrace.d.ts +9 -0
- package/dist/types/test/v1.test.d.ts +1 -0
- package/dist/types/test/v2.test.d.ts +1 -0
- package/dist/types/test/v3.test.d.ts +1 -0
- package/dist/types/test/v4.test.d.ts +1 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/utils/vizContentToFileCollection.d.ts +7 -0
- package/dist/types/utils/vizContentToFileCollection.test.d.ts +1 -0
- package/dist/types/v2/computeBundleJSV2.d.ts +7 -0
- package/dist/types/v2/getComputedIndexHtml.d.ts +4 -0
- package/dist/types/v2/getComputedIndexHtml.test.d.ts +1 -0
- package/dist/types/v2/index.d.ts +1 -0
- package/dist/types/v2/v2Build.d.ts +7 -0
- package/dist/types/v3/cleanRollupErrorMessage.d.ts +4 -0
- package/dist/types/v3/computeBundleJSV3.d.ts +17 -0
- package/dist/types/v3/createVizContent.d.ts +8 -0
- package/dist/types/v3/extractVizImport.d.ts +6 -0
- package/dist/types/v3/extractVizImport.test.d.ts +1 -0
- package/dist/types/v3/htmlTemplate.d.ts +5 -0
- package/dist/types/v3/index.d.ts +1 -0
- package/dist/types/v3/parseId.d.ts +6 -0
- package/dist/types/v3/parseId.test.d.ts +1 -0
- package/dist/types/v3/setupV3Runtime.d.ts +15 -0
- package/dist/types/v3/slugCache.d.ts +11 -0
- package/dist/types/v3/slugCache.test.d.ts +1 -0
- package/dist/types/v3/transformDSV/dsvParseSrc.d.ts +1 -0
- package/dist/types/v3/transformDSV/index.d.ts +2 -0
- package/dist/types/v3/transformSvelte.d.ts +8 -0
- package/dist/types/v3/types.d.ts +65 -0
- package/dist/types/v3/v3Build.d.ts +14 -0
- package/dist/types/v3/vizCache.d.ts +10 -0
- package/dist/types/v3/vizCache.test.d.ts +1 -0
- package/dist/types/v3/vizLoad.d.ts +7 -0
- package/dist/types/v3/vizResolve.d.ts +7 -0
- package/dist/types/v4/index.d.ts +10 -0
- package/dist/types.d.ts +0 -1
- package/dist/utils/vizContentToFileCollection.d.ts +1 -2
- package/dist/v2/computeBundleJSV2.d.ts +1 -1
- package/dist/v2/getComputedIndexHtml.d.ts +1 -1
- package/dist/v2/v2Build.d.ts +1 -1
- package/dist/v3/cleanRollupErrorMessage.d.ts +4 -0
- package/dist/v3/cleanRollupErrorMessage.js +9 -0
- package/dist/v3/computeBundleJSV3.d.ts +1 -2
- package/dist/v3/createVizContent.d.ts +1 -2
- package/dist/v3/setupV3Runtime.d.ts +15 -0
- package/dist/v3/setupV3Runtime.js +341 -0
- package/dist/v3/v3Build.d.ts +1 -2
- package/dist/v3/v3Build.js +1 -1
- package/dist/v3/vizLoad.js +1 -1
- package/dist/v4/index.d.ts +1 -1
- package/package.json +25 -16
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.transformSvelte = exports.svelteCompilerUrl = void 0;
|
4
|
+
const parseId_1 = require("./parseId");
|
5
|
+
const debug = false;
|
6
|
+
// The cache of fetched files.
|
7
|
+
const fetchedFileCache = new Map();
|
8
|
+
let compile;
|
9
|
+
const svelteURL = "https://cdn.jsdelivr.net/npm/svelte@4.2.9";
|
10
|
+
exports.svelteCompilerUrl = `${svelteURL}/compiler.cjs`;
|
11
|
+
// Responsible for transforming Svelte files.
|
12
|
+
// Inspired by:
|
13
|
+
// * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/compiler/index.js#L2
|
14
|
+
// * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L358
|
15
|
+
// * https://github.com/sveltejs/rollup-plugin-svelte/blob/master/index.js#L146C4-L146C51
|
16
|
+
const transformSvelte = ({ getSvelteCompiler, }) => ({
|
17
|
+
name: "transformSvelte",
|
18
|
+
load: async (resolved) => {
|
19
|
+
if (!resolved.startsWith(svelteURL)) {
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
if (debug) {
|
23
|
+
console.log("[transformSvelte]: load() " + resolved);
|
24
|
+
}
|
25
|
+
const cachedFile = fetchedFileCache.get(resolved);
|
26
|
+
if (cachedFile)
|
27
|
+
return cachedFile;
|
28
|
+
const fetchedFile = await fetch(resolved).then((res) => res.text());
|
29
|
+
fetchedFileCache.set(resolved, fetchedFile);
|
30
|
+
return fetchedFile;
|
31
|
+
},
|
32
|
+
// From https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L255C2-L271C5
|
33
|
+
resolveId: async (importee, importer) => {
|
34
|
+
if (debug) {
|
35
|
+
console.log("[transformSvelte] resolveId() " + importee);
|
36
|
+
console.log("importee: " + importee);
|
37
|
+
console.log("importer: " + importer);
|
38
|
+
}
|
39
|
+
// importing from Svelte
|
40
|
+
if (importee === `svelte`) {
|
41
|
+
return `${svelteURL}/src/runtime/index.js`;
|
42
|
+
}
|
43
|
+
if (importee.startsWith(`svelte/`)) {
|
44
|
+
const sub_path = importee.slice(7);
|
45
|
+
return `${svelteURL}/src/runtime/${sub_path}/index.js`;
|
46
|
+
}
|
47
|
+
// importing from a URL
|
48
|
+
if (/^https?:/.test(importee))
|
49
|
+
return importee;
|
50
|
+
// Relative imports
|
51
|
+
if (importee.startsWith(".")) {
|
52
|
+
if (importer && importer.startsWith(svelteURL)) {
|
53
|
+
const resolved = new URL(importee, importer).href;
|
54
|
+
const url = new URL(importee, importer).href;
|
55
|
+
if (debug) {
|
56
|
+
console.log("[transformSvelte] resolveId() " + resolved);
|
57
|
+
}
|
58
|
+
return resolved;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
},
|
62
|
+
transform: async (code, id) => {
|
63
|
+
const { fileName } = (0, parseId_1.parseId)(id);
|
64
|
+
const isSvelte = fileName.endsWith(".svelte");
|
65
|
+
if (isSvelte) {
|
66
|
+
if (!compile) {
|
67
|
+
if (!getSvelteCompiler) {
|
68
|
+
throw new Error("Svelte compiler not available");
|
69
|
+
}
|
70
|
+
compile = await getSvelteCompiler();
|
71
|
+
}
|
72
|
+
const compiled = compile(code, {
|
73
|
+
filename: fileName,
|
74
|
+
hydratable: true,
|
75
|
+
});
|
76
|
+
return compiled.js;
|
77
|
+
}
|
78
|
+
return undefined;
|
79
|
+
},
|
80
|
+
});
|
81
|
+
exports.transformSvelte = transformSvelte;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.v3Build = void 0;
|
4
|
+
const computeBundleJSV3_1 = require("./computeBundleJSV3");
|
5
|
+
const htmlTemplate_1 = require("./htmlTemplate");
|
6
|
+
const parseId_1 = require("./parseId");
|
7
|
+
const viz_utils_1 = require("@vizhub/viz-utils");
|
8
|
+
const v3Build = async ({ files, rollup, enableSourcemap = true, vizCache, vizId, slugCache, getSvelteCompiler, }) => {
|
9
|
+
const { src, cssFiles } = await (0, computeBundleJSV3_1.computeBundleJSV3)({
|
10
|
+
files,
|
11
|
+
rollup,
|
12
|
+
enableSourcemap,
|
13
|
+
vizCache,
|
14
|
+
vizId,
|
15
|
+
slugCache,
|
16
|
+
getSvelteCompiler,
|
17
|
+
});
|
18
|
+
// Generate CSS styles from imported CSS files
|
19
|
+
let styles = "";
|
20
|
+
// Inject CSS files.
|
21
|
+
if (cssFiles.length > 0) {
|
22
|
+
for (let i = 0; i < cssFiles.length; i++) {
|
23
|
+
const id = cssFiles[i];
|
24
|
+
const indent = i > 0 ? " " : "\n ";
|
25
|
+
const styleElementId = "injected-style" + id;
|
26
|
+
const { vizId, fileName } = (0, parseId_1.parseId)(id);
|
27
|
+
const content = await vizCache.get(vizId);
|
28
|
+
const src = (0, viz_utils_1.getFileText)(content, fileName);
|
29
|
+
styles += `${indent}<style id="${styleElementId}">${src}</style>`;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
return (0, htmlTemplate_1.htmlTemplate)({ cdn: "", src, styles });
|
33
|
+
};
|
34
|
+
exports.v3Build = v3Build;
|
@@ -0,0 +1,40 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createVizCache = void 0;
|
4
|
+
// A cache of viz content.
|
5
|
+
// For use in resolving imports from other vizzes.
|
6
|
+
// Runs both on the server and in the browser.
|
7
|
+
const createVizCache = ({ initialContents, handleCacheMiss, }) => {
|
8
|
+
// Track the content of cached vizzes.
|
9
|
+
const contentMap = new Map(initialContents.map((content) => [content.id, content]));
|
10
|
+
// Gets the content of a viz.
|
11
|
+
// Returns the cached content if it exists.
|
12
|
+
// Otherwise, calls handleCacheMiss to fetch the content.
|
13
|
+
const get = async (vizId) => {
|
14
|
+
const cachedContent = contentMap.get(vizId);
|
15
|
+
// Cache hit
|
16
|
+
if (cachedContent !== undefined) {
|
17
|
+
return cachedContent;
|
18
|
+
}
|
19
|
+
// Cache miss
|
20
|
+
if (!handleCacheMiss) {
|
21
|
+
throw new Error(`Unresolved import from vizId ${vizId}, cache miss handler not provided.`);
|
22
|
+
}
|
23
|
+
const freshContent = await handleCacheMiss(vizId);
|
24
|
+
if (freshContent) {
|
25
|
+
contentMap.set(vizId, freshContent);
|
26
|
+
return freshContent;
|
27
|
+
}
|
28
|
+
// TODO surface this error to the user
|
29
|
+
throw new Error(`Unresolved import from vizId ${vizId}`);
|
30
|
+
};
|
31
|
+
// Updates the content of a viz in the cache.
|
32
|
+
const set = (content) => {
|
33
|
+
contentMap.set(content.id, content);
|
34
|
+
};
|
35
|
+
const invalidate = (vizId) => {
|
36
|
+
contentMap.delete(vizId);
|
37
|
+
};
|
38
|
+
return { get, set, invalidate };
|
39
|
+
};
|
40
|
+
exports.createVizCache = createVizCache;
|
@@ -0,0 +1,100 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const vitest_1 = require("vitest");
|
4
|
+
const vizCache_1 = require("./vizCache");
|
5
|
+
const v3_1 = require("../test/fixtures/v3");
|
6
|
+
(0, vitest_1.describe)("VizCache", () => {
|
7
|
+
(0, vitest_1.describe)("VizCache - get method", () => {
|
8
|
+
(0, vitest_1.it)("should return content from cache if available", async () => {
|
9
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
10
|
+
initialContents: [v3_1.sampleVizContent],
|
11
|
+
handleCacheMiss: vitest_1.vi.fn(),
|
12
|
+
});
|
13
|
+
const content = await vizCache.get(v3_1.sampleVizContent.id);
|
14
|
+
(0, vitest_1.expect)(content).toEqual(v3_1.sampleVizContent);
|
15
|
+
(0, vitest_1.expect)(vitest_1.vi.fn()).toHaveBeenCalledTimes(0); // handleCacheMiss should not be called
|
16
|
+
});
|
17
|
+
(0, vitest_1.it)("should fetch content on cache miss and store it", async () => {
|
18
|
+
const handleCacheMissMock = vitest_1.vi
|
19
|
+
.fn()
|
20
|
+
.mockResolvedValue(v3_1.sampleVizContent);
|
21
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
22
|
+
initialContents: [],
|
23
|
+
handleCacheMiss: handleCacheMissMock,
|
24
|
+
});
|
25
|
+
const content = await vizCache.get(v3_1.sampleVizContent.id);
|
26
|
+
(0, vitest_1.expect)(handleCacheMissMock).toHaveBeenCalledWith(v3_1.sampleVizContent.id);
|
27
|
+
(0, vitest_1.expect)(content).toEqual(v3_1.sampleVizContent);
|
28
|
+
// Verify that the cache now contains the fetched content
|
29
|
+
const cachedContent = await vizCache.get(v3_1.sampleVizContent.id);
|
30
|
+
(0, vitest_1.expect)(cachedContent).toEqual(v3_1.sampleVizContent);
|
31
|
+
});
|
32
|
+
(0, vitest_1.it)("should throw an error if handleCacheMiss does not return content", async () => {
|
33
|
+
const handleCacheMissMock = vitest_1.vi
|
34
|
+
.fn()
|
35
|
+
.mockResolvedValue(undefined);
|
36
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
37
|
+
initialContents: [],
|
38
|
+
handleCacheMiss: handleCacheMissMock,
|
39
|
+
});
|
40
|
+
await (0, vitest_1.expect)(vizCache.get("nonexistentId")).rejects.toThrow("Unresolved import from vizId nonexistentId");
|
41
|
+
});
|
42
|
+
// Add tests for set
|
43
|
+
});
|
44
|
+
(0, vitest_1.describe)("VizCache - set method", () => {
|
45
|
+
(0, vitest_1.it)("should add new content to the cache", async () => {
|
46
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
47
|
+
initialContents: [],
|
48
|
+
handleCacheMiss: vitest_1.vi.fn(),
|
49
|
+
});
|
50
|
+
const newContent = {
|
51
|
+
id: "newContent",
|
52
|
+
files: {},
|
53
|
+
title: "New Content",
|
54
|
+
};
|
55
|
+
vizCache.set(newContent);
|
56
|
+
// Verify new content is added
|
57
|
+
const content = await vizCache.get(newContent.id);
|
58
|
+
(0, vitest_1.expect)(content).toEqual(newContent);
|
59
|
+
});
|
60
|
+
(0, vitest_1.it)("should update existing content in the cache", async () => {
|
61
|
+
const updatedContent = {
|
62
|
+
...v3_1.sampleVizContent,
|
63
|
+
title: "Updated Content Title",
|
64
|
+
};
|
65
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
66
|
+
initialContents: [v3_1.sampleVizContent],
|
67
|
+
handleCacheMiss: vitest_1.vi.fn(),
|
68
|
+
});
|
69
|
+
// Update existing content
|
70
|
+
vizCache.set(updatedContent);
|
71
|
+
// Verify content is updated
|
72
|
+
const content = await vizCache.get(updatedContent.id);
|
73
|
+
(0, vitest_1.expect)(content).toEqual(updatedContent);
|
74
|
+
});
|
75
|
+
(0, vitest_1.it)("should keep the cache consistent after multiple set operations", async () => {
|
76
|
+
const vizCache = (0, vizCache_1.createVizCache)({
|
77
|
+
initialContents: [],
|
78
|
+
handleCacheMiss: vitest_1.vi.fn(),
|
79
|
+
});
|
80
|
+
// Adding multiple contents
|
81
|
+
const contentA = {
|
82
|
+
id: "contentA",
|
83
|
+
files: {},
|
84
|
+
title: "Content A",
|
85
|
+
};
|
86
|
+
const contentB = {
|
87
|
+
id: "contentB",
|
88
|
+
files: {},
|
89
|
+
title: "Content B",
|
90
|
+
};
|
91
|
+
vizCache.set(contentA);
|
92
|
+
vizCache.set(contentB);
|
93
|
+
// Verify both contents are retrievable
|
94
|
+
const retrievedA = await vizCache.get(contentA.id);
|
95
|
+
const retrievedB = await vizCache.get(contentB.id);
|
96
|
+
(0, vitest_1.expect)(retrievedA).toEqual(contentA);
|
97
|
+
(0, vitest_1.expect)(retrievedB).toEqual(contentB);
|
98
|
+
});
|
99
|
+
});
|
100
|
+
});
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.vizLoad = void 0;
|
4
|
+
const parseId_1 = require("./parseId");
|
5
|
+
const viz_utils_1 = require("@vizhub/viz-utils");
|
6
|
+
const debug = false;
|
7
|
+
// Responsible for loading all imports and
|
8
|
+
// tracking which CSS files are imported.
|
9
|
+
// Throws an error if a file is imported but not found.
|
10
|
+
const vizLoad = ({ vizCache, trackCSSImport, }) => ({
|
11
|
+
name: "vizLoad",
|
12
|
+
// `id` here is of the form
|
13
|
+
// `{vizId}/{fileName}`
|
14
|
+
load: async (id) => {
|
15
|
+
if (debug) {
|
16
|
+
console.log("[vizLoadCSS]: load() " + id);
|
17
|
+
}
|
18
|
+
const { vizId, fileName } = (0, parseId_1.parseId)(id);
|
19
|
+
if (debug) {
|
20
|
+
console.log(" [vizLoadCSS] vizId: " + vizId);
|
21
|
+
console.log(" [vizLoadCSS] fileName: " + fileName);
|
22
|
+
}
|
23
|
+
// For CSS imports, all we need to do here is
|
24
|
+
// keep track of them so they can be injected
|
25
|
+
// into the IFrame later.
|
26
|
+
if (fileName.endsWith(".css")) {
|
27
|
+
if (debug) {
|
28
|
+
console.log(" [vizResolve] tracking CSS import for " + id);
|
29
|
+
}
|
30
|
+
// The import is tracked here so that it can be
|
31
|
+
// injected into the IFrame later, external to the
|
32
|
+
// Rollup build.
|
33
|
+
trackCSSImport(id);
|
34
|
+
// TODO consider using Rollup's `emitFile` to emit a CSS file.
|
35
|
+
return "";
|
36
|
+
}
|
37
|
+
const content = await vizCache.get(vizId);
|
38
|
+
const fileText = (0, viz_utils_1.getFileText)(content, fileName);
|
39
|
+
// If a file is imported but not found, throw an error.
|
40
|
+
if (fileText === null) {
|
41
|
+
throw new Error(`Imported file "${fileName}" not found.`);
|
42
|
+
// TODO ideally show username/slug instead of vizId
|
43
|
+
// `Imported file "${fileName}" not found in viz ${vizId}`,
|
44
|
+
// `Imported file "${fileName}" not found.`,
|
45
|
+
// );
|
46
|
+
}
|
47
|
+
return fileText;
|
48
|
+
},
|
49
|
+
});
|
50
|
+
exports.vizLoad = vizLoad;
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.vizResolve = void 0;
|
4
|
+
const extractVizImport_1 = require("./extractVizImport");
|
5
|
+
const parseId_1 = require("./parseId");
|
6
|
+
const viz_utils_1 = require("@vizhub/viz-utils");
|
7
|
+
const debug = false;
|
8
|
+
const vizResolve = ({ vizId, slugCache, }) => ({
|
9
|
+
name: "vizResolve",
|
10
|
+
resolveId: async (id, importer) => {
|
11
|
+
if (debug) {
|
12
|
+
console.log("[vizIdResolve] resolveId() " + id);
|
13
|
+
console.log(" importer: " + importer);
|
14
|
+
}
|
15
|
+
// Handle virtual file system resolution
|
16
|
+
// .e.g. `import { foo } from './foo.js'`
|
17
|
+
// .e.g. `import { foo } from './foo'`
|
18
|
+
if (id.startsWith("./") &&
|
19
|
+
!importer?.startsWith("https://")) {
|
20
|
+
let fileName = id.substring(2);
|
21
|
+
// Handle CSS files
|
22
|
+
// e.g. `import './styles.css'`
|
23
|
+
// Handle JS files
|
24
|
+
// e.g. `import { foo } from './foo.js'`
|
25
|
+
// e.g. `import { foo } from './foo'`
|
26
|
+
if (!fileName.endsWith(".js") &&
|
27
|
+
!fileName.endsWith(".css") &&
|
28
|
+
!fileName.endsWith(".csv") &&
|
29
|
+
!fileName.endsWith(".svelte")) {
|
30
|
+
fileName += ".js";
|
31
|
+
}
|
32
|
+
// const js = (name: string) =>
|
33
|
+
// name.endsWith('.js') ? name : name + '.js';
|
34
|
+
// If there is an importer, then the file is not part of
|
35
|
+
// the entry point, so it should be resolved relative
|
36
|
+
// to the importer's directory
|
37
|
+
if (importer) {
|
38
|
+
const { vizId: importerVizId, fileName: importerFileName, } = (0, parseId_1.parseId)(importer);
|
39
|
+
// Get the directory of the importing file
|
40
|
+
const importerDir = importerFileName
|
41
|
+
.split("/")
|
42
|
+
.slice(0, -1)
|
43
|
+
.join("/");
|
44
|
+
// Combine the directory with the imported file name
|
45
|
+
const resolvedFileName = importerDir
|
46
|
+
? `${importerDir}/${fileName}`
|
47
|
+
: fileName;
|
48
|
+
return `${importerVizId}/${resolvedFileName}`;
|
49
|
+
}
|
50
|
+
return vizId + "/" + fileName;
|
51
|
+
}
|
52
|
+
// Handle viz import resolution
|
53
|
+
// e.g. `import { foo } from '@curran/98e6d6509a1e407897d4f238a330efec'`
|
54
|
+
// e.g. `import { foo } from '@curran/scatter-plot'`
|
55
|
+
const vizImport = (0, extractVizImport_1.extractVizImport)(id);
|
56
|
+
if (vizImport) {
|
57
|
+
let vizId;
|
58
|
+
if ((0, viz_utils_1.isVizId)(vizImport.idOrSlug)) {
|
59
|
+
vizId = vizImport.idOrSlug;
|
60
|
+
}
|
61
|
+
else {
|
62
|
+
if (!slugCache) {
|
63
|
+
throw new Error("slugCache is required to import by slug in v3 runtime");
|
64
|
+
}
|
65
|
+
vizId = await slugCache.get(`${vizImport.userName}/${vizImport.idOrSlug}`);
|
66
|
+
}
|
67
|
+
return vizId + "/index.js";
|
68
|
+
}
|
69
|
+
// If neither condition is met, return undefined.
|
70
|
+
return undefined;
|
71
|
+
},
|
72
|
+
});
|
73
|
+
exports.vizResolve = vizResolve;
|
@@ -0,0 +1,138 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.v4Build = void 0;
|
4
|
+
const jsdom_1 = require("jsdom");
|
5
|
+
const virtualFileSystem_1 = require("../common/virtualFileSystem");
|
6
|
+
const sucrasePlugin_1 = require("../common/sucrasePlugin");
|
7
|
+
const packageJson_1 = require("../common/packageJson");
|
8
|
+
const DEBUG = false;
|
9
|
+
/**
|
10
|
+
* Extract module script entry points from index.html
|
11
|
+
*/
|
12
|
+
const extractModuleEntryPoints = (html) => {
|
13
|
+
const dom = new jsdom_1.JSDOM(html);
|
14
|
+
const document = dom.window.document;
|
15
|
+
const moduleScripts = document.querySelectorAll('script[type="module"]');
|
16
|
+
const entryPoints = [];
|
17
|
+
moduleScripts.forEach((script) => {
|
18
|
+
const src = script.getAttribute("src");
|
19
|
+
if (src) {
|
20
|
+
entryPoints.push(src);
|
21
|
+
}
|
22
|
+
});
|
23
|
+
return entryPoints;
|
24
|
+
};
|
25
|
+
/**
|
26
|
+
* Bundle an ES module entry point
|
27
|
+
*/
|
28
|
+
const bundleESModule = async ({ entryPoint, files, rollup, enableSourcemap = true, }) => {
|
29
|
+
const inputOptions = {
|
30
|
+
input: `./${entryPoint}`,
|
31
|
+
plugins: [(0, virtualFileSystem_1.virtualFileSystem)(files), (0, sucrasePlugin_1.sucrasePlugin)()],
|
32
|
+
onwarn(warning, warn) {
|
33
|
+
// Suppress "treating module as external dependency" warnings
|
34
|
+
if (warning.code === "UNRESOLVED_IMPORT")
|
35
|
+
return;
|
36
|
+
warn(warning);
|
37
|
+
},
|
38
|
+
};
|
39
|
+
const bundle = await rollup(inputOptions);
|
40
|
+
const outputOptions = {
|
41
|
+
format: "es",
|
42
|
+
sourcemap: enableSourcemap,
|
43
|
+
};
|
44
|
+
const { output } = await bundle.generate(outputOptions);
|
45
|
+
return output[0].code;
|
46
|
+
};
|
47
|
+
/**
|
48
|
+
* Generate an import map for all dependencies
|
49
|
+
*/
|
50
|
+
const generateImportMap = (files) => {
|
51
|
+
const deps = (0, packageJson_1.dependencies)(files);
|
52
|
+
if (Object.keys(deps).length === 0) {
|
53
|
+
return null;
|
54
|
+
}
|
55
|
+
const libraries = (0, packageJson_1.getConfiguredLibraries)(files);
|
56
|
+
const imports = {};
|
57
|
+
Object.entries(deps).forEach(([name, version]) => {
|
58
|
+
const url = (0, packageJson_1.dependencySource)({ name, version }, libraries);
|
59
|
+
imports[name] = url;
|
60
|
+
});
|
61
|
+
return JSON.stringify({ imports }, null, 2);
|
62
|
+
};
|
63
|
+
/**
|
64
|
+
* Update HTML to include import map and bundled modules
|
65
|
+
*/
|
66
|
+
const updateHTML = (files, bundledModules) => {
|
67
|
+
const html = files["index.html"] || "";
|
68
|
+
if (!html) {
|
69
|
+
return "";
|
70
|
+
}
|
71
|
+
const dom = new jsdom_1.JSDOM(html);
|
72
|
+
const document = dom.window.document;
|
73
|
+
// Replace script src with bundled content
|
74
|
+
bundledModules.forEach((code, src) => {
|
75
|
+
const scripts = document.querySelectorAll(`script[src="${src}"]`);
|
76
|
+
scripts.forEach((script) => {
|
77
|
+
const newScript = document.createElement("script");
|
78
|
+
newScript.setAttribute("type", "module");
|
79
|
+
newScript.textContent = code;
|
80
|
+
script.parentNode?.replaceChild(newScript, script);
|
81
|
+
});
|
82
|
+
});
|
83
|
+
// Add import map if needed
|
84
|
+
const importMap = generateImportMap(files);
|
85
|
+
if (importMap) {
|
86
|
+
// Check if import map already exists
|
87
|
+
const existingImportMap = document.querySelector('script[type="importmap"]');
|
88
|
+
if (!existingImportMap) {
|
89
|
+
const importMapScript = document.createElement("script");
|
90
|
+
importMapScript.setAttribute("type", "importmap");
|
91
|
+
importMapScript.textContent = importMap;
|
92
|
+
const head = document.head || document.querySelector("head");
|
93
|
+
if (head) {
|
94
|
+
head.prepend(importMapScript);
|
95
|
+
}
|
96
|
+
else {
|
97
|
+
const html = document.documentElement;
|
98
|
+
const newHead = document.createElement("head");
|
99
|
+
newHead.appendChild(importMapScript);
|
100
|
+
html.insertBefore(newHead, html.firstChild);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
return `<!DOCTYPE html>${document.documentElement.outerHTML}`;
|
105
|
+
};
|
106
|
+
/**
|
107
|
+
* Build for v4 runtime
|
108
|
+
*/
|
109
|
+
const v4Build = async ({ files, rollup, enableSourcemap = true, }) => {
|
110
|
+
// Extract entry points
|
111
|
+
const html = files["index.html"] || "";
|
112
|
+
const entryPoints = extractModuleEntryPoints(html);
|
113
|
+
if (entryPoints.length === 0) {
|
114
|
+
DEBUG &&
|
115
|
+
console.log("[v4Build] No module entry points found");
|
116
|
+
// Fall back to a default approach if no module entry points
|
117
|
+
// Just return the HTML as-is if there are no module scripts
|
118
|
+
return files;
|
119
|
+
}
|
120
|
+
// Bundle each entry point
|
121
|
+
const bundledModules = new Map();
|
122
|
+
for (const entryPoint of entryPoints) {
|
123
|
+
const code = await bundleESModule({
|
124
|
+
entryPoint,
|
125
|
+
files,
|
126
|
+
rollup,
|
127
|
+
enableSourcemap,
|
128
|
+
});
|
129
|
+
bundledModules.set(entryPoint, code);
|
130
|
+
}
|
131
|
+
// Update HTML with bundled modules and import map
|
132
|
+
const updatedHTML = updateHTML(files, bundledModules);
|
133
|
+
return {
|
134
|
+
...files,
|
135
|
+
"index.html": updatedHTML,
|
136
|
+
};
|
137
|
+
};
|
138
|
+
exports.v4Build = v4Build;
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { magicSandbox } from "magic-sandbox";
|
2
|
+
import { determineRuntimeVersion } from "./determineRuntimeVersion";
|
3
|
+
import { v2Build } from "./v2";
|
4
|
+
import { v3Build } from "./v3";
|
5
|
+
import { v4Build } from "./v4";
|
6
|
+
import { createVizCache } from "./v3/vizCache";
|
7
|
+
import { createVizContent } from "./v3/createVizContent";
|
8
|
+
import { vizContentToFileCollection } from "./utils/vizContentToFileCollection";
|
9
|
+
const DEBUG = false;
|
10
|
+
export const buildHTML = async ({ files, rollup, enableSourcemap = true, vizCache, vizId, slugCache, getSvelteCompiler, }) => {
|
11
|
+
if (!files && !vizCache) {
|
12
|
+
throw new Error("Either files or vizCache is required");
|
13
|
+
}
|
14
|
+
if (!files && vizCache && !vizId) {
|
15
|
+
throw new Error("vizId is required when using vizCache");
|
16
|
+
}
|
17
|
+
if (!files && vizCache && vizId) {
|
18
|
+
files = vizContentToFileCollection(await vizCache.get(vizId));
|
19
|
+
}
|
20
|
+
if (!files) {
|
21
|
+
throw new Error("Upable to extract viz files");
|
22
|
+
}
|
23
|
+
const version = determineRuntimeVersion(files);
|
24
|
+
DEBUG && console.log("[buildHTML] version:", version);
|
25
|
+
if (version === "v1") {
|
26
|
+
return magicSandbox(files);
|
27
|
+
}
|
28
|
+
if (version === "v2") {
|
29
|
+
if (!rollup) {
|
30
|
+
throw new Error("Rollup is required for v2 runtime");
|
31
|
+
}
|
32
|
+
return magicSandbox(await v2Build({ files, rollup, enableSourcemap }));
|
33
|
+
}
|
34
|
+
if (version === "v3") {
|
35
|
+
if (!rollup) {
|
36
|
+
throw new Error("Rollup is required for v3 runtime");
|
37
|
+
}
|
38
|
+
if (!vizCache && !vizId) {
|
39
|
+
const vizContent = createVizContent(files);
|
40
|
+
vizId = vizContent.id;
|
41
|
+
vizCache = createVizCache({
|
42
|
+
initialContents: [vizContent],
|
43
|
+
handleCacheMiss: async () => {
|
44
|
+
throw new Error("Cache miss handler not implemented");
|
45
|
+
},
|
46
|
+
});
|
47
|
+
}
|
48
|
+
if (!vizCache || !vizId) {
|
49
|
+
throw new Error("vizCache and vizId are required for v3 runtime");
|
50
|
+
}
|
51
|
+
return await v3Build({
|
52
|
+
files,
|
53
|
+
rollup,
|
54
|
+
vizCache,
|
55
|
+
vizId,
|
56
|
+
slugCache,
|
57
|
+
getSvelteCompiler,
|
58
|
+
});
|
59
|
+
}
|
60
|
+
if (version === "v4") {
|
61
|
+
if (!rollup) {
|
62
|
+
throw new Error("Rollup is required for v4 runtime");
|
63
|
+
}
|
64
|
+
return magicSandbox(await v4Build({ files, rollup, enableSourcemap }));
|
65
|
+
}
|
66
|
+
throw new Error(`Unsupported runtime version: ${version}`);
|
67
|
+
};
|