@vizhub/runtime 0.7.0 → 2.0.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 +71 -21
- package/dist/build/build.d.ts.map +1 -1
- package/dist/build/determineRuntimeVersion.d.ts.map +1 -1
- package/dist/build/index.d.ts +1 -0
- package/dist/build/index.d.ts.map +1 -1
- package/dist/common/sucrasePlugin.d.ts +1 -1
- package/dist/common/sucrasePlugin.d.ts.map +1 -1
- package/dist/common/virtualFileSystem.d.ts +2 -1
- package/dist/common/virtualFileSystem.d.ts.map +1 -1
- package/dist/index.cjs +206 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +540 -138
- package/dist/index.js.map +1 -1
- package/dist/orchestration/createRuntime.d.ts.map +1 -1
- package/dist/orchestration/types.d.ts.map +1 -1
- package/dist/slugCache-DqUp8B5A.js +350 -0
- package/dist/slugCache-DqUp8B5A.js.map +1 -0
- package/dist/slugCache-mB6V-shn.cjs +4 -0
- package/dist/slugCache-mB6V-shn.cjs.map +1 -0
- package/dist/test/fixtures/v4/index.d.ts +2 -0
- package/dist/test/fixtures/v4/index.d.ts.map +1 -1
- package/dist/test/fixtures/v4/jsScriptTagTypeModulesRelative.d.ts +6 -0
- package/dist/test/fixtures/v4/jsScriptTagTypeModulesRelative.d.ts.map +1 -0
- package/dist/test/fixtures/v4/reactJsx.d.ts +0 -1
- package/dist/test/fixtures/v4/reactJsx.d.ts.map +1 -1
- package/dist/test/fixtures/v4/reactJsxWithoutImport.d.ts +6 -0
- package/dist/test/fixtures/v4/reactJsxWithoutImport.d.ts.map +1 -0
- package/dist/test/testInBrowser.d.ts +1 -1
- package/dist/test/testInBrowser.d.ts.map +1 -1
- package/dist/v3/slugCache.d.ts.map +1 -1
- package/dist/v4/bundleModule.d.ts.map +1 -1
- package/dist/v4/catchAll.d.ts +8 -0
- package/dist/v4/catchAll.d.ts.map +1 -0
- package/dist/worker.cjs +1 -1
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.js +7 -7
- package/package.json +3 -3
- package/dist/build-BAZMN_vU.cjs +0 -214
- package/dist/build-BAZMN_vU.cjs.map +0 -1
- package/dist/build-NWFvyYnC.js +0 -866
- package/dist/build-NWFvyYnC.js.map +0 -1
@@ -0,0 +1,4 @@
|
|
1
|
+
"use strict";const v=require("magic-sandbox"),P=require("@vizhub/viz-utils"),U=require("sucrase"),J=()=>(Math.random()+"").slice(2),S=t=>{if(Object.keys(t).length===0)return null;const e="index.html"in t,n="index.js"in t,r="index.jsx"in t;return e?t["index.html"].includes('type="module"')?"v4":n||r?"v2":"v1":!e&&n?"v3":null},x={dependencies:{},vizhub:{},license:"MIT"},T=!1,f=t=>{const e=t["package.json"];try{const n=e?JSON.parse(e):x;return T&&console.log("[packageJSON] pkg:",JSON.stringify(n,null,2)),n}catch{return x}},E=t=>f(t).dependencies||{},$=t=>(f(t).vizhub||{}).libraries||{},O=({name:t,version:e},n,r="jsdelivr")=>{const c=n[t]&&n[t].path||"";return r==="jsdelivr"?`https://cdn.jsdelivr.net/npm/${t}@${e}${c}`:`https://unpkg.com/${t}@${e}${c}`},z=t=>{var n;const e=(n=t==null?void 0:t.vizhub)==null?void 0:n.libraries;return e?Object.entries(e).reduce((r,[c,s])=>(s.global&&(r[c]=s.global),r),{}):{}},N={d3:"d3",react:"React","react-dom":"ReactDOM"},C=t=>{const e=z(t);return{...N,...e}},m=(t,e)=>new RegExp(`<${e}\\b`,"i").test(t)&&new RegExp(`</${e}>`,"i").test(t),W=t=>{const e=t.trim();return m(e,"html")&&m(e,"head")&&m(e,"body")?e:`<html><head></head><body>${e}</body></html>`},M=(t,e)=>t.replace(new RegExp(`<script[^>]*src=["'][^"']*${e.source}[^"']*["'][^>]*>\\s*<\/script>`,"gi"),""),w=(t,e,n)=>t.replace(new RegExp(e,"i"),`${n}${e}`),k=(t,e)=>{let n=W(t);const r=Object.entries(E(e));if(r.length){const s=$(e);r.forEach(([i])=>{n=M(n,new RegExp(`${i}@`))});const o=r.map(([i,a])=>O({name:i,version:a},s)).map(i=>`<script src="${i}"><\/script>`).join(`
|
2
|
+
`);n=w(n,"</head>",o+`
|
3
|
+
`)}if(e["bundle.js"]!==void 0||e["index.js"]!==void 0){const s='<script src="bundle.js"><\/script>',o=/<script\b[^>]*\bsrc=["']bundle\.js["'][^>]*>\s*<\/script>/gi,i=[...n.matchAll(o)];i.length===1&&(()=>{const l=i[0].index??-1;if(l===-1)return!1;const h=n.search(/<body\b[^>]*>/i),g=n.search(/<\/body>/i);return h!==-1&&g!==-1&&l>h&&l<g})()||(n=n.replace(o,""),n=w(n,"</body>",s))}return/^\s*<!DOCTYPE/i.test(n)?n:`<!DOCTYPE html>${n}`},B=t=>{const e=t["index.html"];return!e&&!t["index.js"]&&!t["bundle.js"]?"":k(e||"<!DOCTYPE html><html><head></head><body></body></html>",t)},d="\0virtual:",j=t=>{let e=t.replace(/^\.\//,"");return e=e.replace(/\/+/g,"/"),e=e.replace(/\/$/,""),e},V=(t,e)=>{const n=t.includes("/")?t.slice(0,t.lastIndexOf("/")):"",r=e.split("/"),c=n?n.split("/"):[];for(const s of r)s===".."?c.pop():s!=="."&&s!==""&&c.push(s);return c.join("/")},q=t=>({name:"virtual-file-system",resolveId(e,n){const r=n!=null&&n.startsWith(d)?n.slice(d.length):n;if(e.startsWith("./")||e.startsWith("../")){const s=j(r?V(r,e):e);if(t[s])return d+s;const o=[".js",".jsx",".ts",".tsx"];for(const i of o){const a=s+i;if(t[a])return d+a}}if(t[e])return d+e;const c=[".js",".jsx",".ts",".tsx"];for(const s of c){const o=e+s;if(t[o])return d+o}return null},load(e){if(e.startsWith(d)){const n=e.slice(d.length);if(t[n])return t[n]}return null}});function R(t={}){return{name:"sucrase",transform(e,n){if(!n.match(/\.(?:js|[jt]sx)$/))return null;const r=U.transform(e,{transforms:["jsx","typescript"],filePath:n,sourceMapOptions:{compiledFilename:"bundle.js"},production:!0,...t});return{code:r.code,map:r.sourceMap}}}}const D=async({files:t,rollup:e,enableSourcemap:n=!0})=>{if(!t["index.js"])throw new Error("Missing index.js");const c={input:"./index.js",plugins:[q(t),R()],onwarn(l,h){l.code!=="UNRESOLVED_IMPORT"&&h(l)}},s={format:"iife",sourcemap:n},o=f(t);if(o){const l=C(o);l&&(c.external=Object.keys(l),s.globals=l)}const i=await e(c),{output:a}=await i.generate(s);return a[0].code},F=async({files:t,rollup:e,enableSourcemap:n})=>({...t,"bundle.js":await D({files:t,rollup:e,enableSourcemap:n}),"index.html":B(t)}),p=!1,G=async({files:t,rollup:e,enableSourcemap:n=!0,vizCache:r,vizId:c,slugCache:s,getSvelteCompiler:o})=>{var i;try{if(p&&console.log("[build] files:",t?JSON.stringify(t).substring(0,100):void 0),p&&console.log("[build] vizCache:",r),p&&console.log("[build] vizId:",c),!t&&!r)throw new Error("Either files or vizCache is required");if(!t&&r&&!c)throw new Error("vizId is required when using vizCache");if(!t&&r&&c&&(t=P.vizFilesToFileCollection((i=await r.get(c))==null?void 0:i.files)),!t)throw new Error("Upable to extract viz files");const a=S(t);if(p&&console.log("[build] version:",a),a==="v1")return{html:v.magicSandbox(t)};if(a==="v2"){if(!e)throw new Error("Rollup is required for v2 runtime");return{html:v.magicSandbox(await F({files:t,rollup:e,enableSourcemap:n}))}}throw new Error(`Unsupported runtime version: ${a}`)}catch(a){throw a instanceof Error&&a.message.indexOf(d)&&(a.message=a.message.replace(d,"")),a}},I=t=>{const[e,...n]=t.split("/"),r=n.join("/");return{vizId:e,fileName:r}},y=new Map;let b;const u="https://cdn.jsdelivr.net/npm/svelte@4.2.9",L=`${u}/compiler.cjs`,_=({getSvelteCompiler:t})=>({name:"transformSvelte",load:async e=>{if(!e.startsWith(u))return;const n=y.get(e);if(n)return n;const r=await fetch(e).then(c=>c.text());return y.set(e,r),r},resolveId:async(e,n)=>{if(e==="svelte")return`${u}/src/runtime/index.js`;if(e.startsWith("svelte/")){const r=e.slice(7);return`${u}/src/runtime/${r}/index.js`}if(/^https?:/.test(e))return e;if(e.startsWith(".")&&n&&n.startsWith(u)){const r=new URL(e,n).href;return new URL(e,n).href,r}},transform:async(e,n)=>{const{fileName:r}=I(n);if(r.endsWith(".svelte")){if(!b){if(!t)throw new Error("Svelte compiler not available");b=await t()}return b(e,{filename:r,hydratable:!0}).js}}}),Y=({initialContents:t,handleCacheMiss:e})=>{const n=new Map(t.map(o=>[o.id,o]));return{get:async o=>{const i=n.get(o);if(i!==void 0)return i;if(!e)throw new Error(`Unresolved import from vizId ${o}, cache miss handler not provided.`);const a=await e(o);if(a)return n.set(o,a),a;throw new Error(`Unresolved import from vizId ${o}`)},set:o=>{n.set(o.id,o)},invalidate:o=>{n.delete(o)}}},A=({initialMappings:t={},handleCacheMiss:e})=>({get:async s=>{const o=t[s];if(o!==void 0)return o;if(!e)throw new Error(`Unresolved slug ${s}, cache miss handler not provided.`);const i=await e(s);if(i)return t[s]=i,i;throw new Error(`Unresolved slug ${s}`)},set:(s,o)=>{t[s]=o},invalidate:s=>{delete t[s]}});exports.build=G;exports.createSlugCache=A;exports.createVizCache=Y;exports.dependencies=E;exports.dependencySource=O;exports.determineRuntimeVersion=S;exports.generateRequestId=J;exports.getConfiguredLibraries=$;exports.getGlobals=C;exports.packageJSON=f;exports.parseId=I;exports.sucrasePlugin=R;exports.svelteCompilerUrl=L;exports.transformSvelte=_;
|
4
|
+
//# sourceMappingURL=slugCache-mB6V-shn.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"slugCache-mB6V-shn.cjs","sources":["../src/orchestration/generateRequestId.ts","../src/build/determineRuntimeVersion.ts","../src/common/packageJson.ts","../src/v2/getComputedIndexHtml.ts","../src/common/virtualFileSystem.ts","../src/common/sucrasePlugin.ts","../src/v2/computeBundleJSV2.ts","../src/v2/v2Build.ts","../src/build/build.ts","../src/v3/parseId.ts","../src/v3/transformSvelte.ts","../src/v3/vizCache.ts","../src/v3/slugCache.ts"],"sourcesContent":["// Generate a unique request ID,\n// for uniquely identifying messages\n// sent to the worker or iframe from the\n// main thread.\nexport const generateRequestId = (): string =>\n (Math.random() + \"\").slice(2);\n","import { FileCollection } from \"@vizhub/viz-types\";\nimport { runtimeVersion } from \"./types\";\n\nexport const determineRuntimeVersion = (\n files: FileCollection,\n): runtimeVersion | null => {\n if (Object.keys(files).length === 0) {\n return null;\n }\n\n const hasIndexHTML = \"index.html\" in files;\n const hasIndexJS = \"index.js\" in files;\n const hasIndexJSX = \"index.jsx\" in files;\n\n if (hasIndexHTML) {\n const hasModuleScript =\n files[\"index.html\"].includes('type=\"module\"');\n if (hasModuleScript) {\n return \"v4\";\n }\n\n if (hasIndexJS || hasIndexJSX) {\n return \"v2\";\n }\n return \"v1\";\n }\n\n if (!hasIndexHTML && hasIndexJS) {\n return \"v3\";\n }\n\n return null;\n};\n","import { FileCollection } from \"@vizhub/viz-types\";\n\nexport type Licence = string;\n\nexport interface PackageJson {\n dependencies?: {\n [key: string]: string;\n };\n vizhub?: {\n libraries?: {\n [key: string]: VizHubLibraryConfig;\n };\n };\n license?: Licence | { type: string };\n}\n\nconst EMPTY_PKG_JSON: PackageJson = {\n dependencies: {},\n vizhub: {},\n license: \"MIT\",\n};\n\nexport interface Dependency {\n name: string;\n version: string;\n}\n\nexport interface VizHubLibraryConfig {\n path?: string;\n global?: string;\n}\n\nexport interface VizHubLibraryConfigs {\n [key: string]: VizHubLibraryConfig;\n}\n\nconst DEBUG = false;\n\nexport const packageJSON = (\n files: FileCollection,\n): PackageJson => {\n const packageJsonText = files[\"package.json\"];\n DEBUG &&\n console.log(\n \"[packageJSON] packageJsonText:\",\n packageJsonText,\n );\n try {\n const pkg = packageJsonText\n ? JSON.parse(packageJsonText)\n : EMPTY_PKG_JSON;\n DEBUG &&\n console.log(\n \"[packageJSON] pkg:\",\n JSON.stringify(pkg, null, 2),\n );\n return pkg;\n } catch {\n DEBUG &&\n console.log(\n \"[packageJSON] Error parsing package.json\",\n );\n return EMPTY_PKG_JSON;\n }\n};\n\nexport const dependencies = (files: FileCollection) =>\n packageJSON(files).dependencies || {};\n\nexport const getConfiguredLibraries = (\n files: FileCollection,\n) => {\n const vizhubConfig = packageJSON(files).vizhub || {};\n return vizhubConfig.libraries || {};\n};\n\nexport const dependencySource = (\n { name, version }: Dependency,\n libraries: VizHubLibraryConfigs,\n cdn = \"jsdelivr\",\n) => {\n const path = libraries[name]\n ? libraries[name].path || \"\"\n : \"\";\n const src =\n cdn === \"jsdelivr\"\n ? `https://cdn.jsdelivr.net/npm/${name}@${version}${path}`\n : `https://unpkg.com/${name}@${version}${path}`;\n return src;\n};\n\nexport const getLicense = (files: FileCollection) => {\n const license = packageJSON(files).license;\n if (\n typeof license === \"object\" &&\n license !== null &&\n \"type\" in license\n ) {\n return license.type;\n }\n return license || EMPTY_PKG_JSON.license;\n};\n\nexport const getConfiguredGlobals = (\n pkg: PackageJson,\n): Record<string, string> => {\n const libraries = pkg?.vizhub?.libraries;\n if (libraries) {\n return Object.entries(libraries).reduce(\n (accumulator, [packageName, config]) => {\n if (config.global) {\n accumulator[packageName] = config.global;\n }\n return accumulator;\n },\n {} as Record<string, string>,\n );\n }\n return {};\n};\n\nconst defaultGlobals = {\n d3: \"d3\",\n react: \"React\",\n \"react-dom\": \"ReactDOM\",\n};\n\nexport const getGlobals = (\n pkg: PackageJson,\n): Record<string, string> => {\n const configuredGlobals = getConfiguredGlobals(pkg);\n\n return {\n ...defaultGlobals,\n ...configuredGlobals,\n };\n};\n","import { FileCollection } from \"@vizhub/viz-types\";\nimport {\n dependencies,\n getConfiguredLibraries,\n dependencySource,\n} from \"../common/packageJson\";\n\nconst DEBUG = false;\n\n/* ------------------------------------------------------------------ */\n/* tiny helpers */\n/* ------------------------------------------------------------------ */\n\nconst hasTagPair = (html: string, tag: string) =>\n new RegExp(`<${tag}\\\\b`, \"i\").test(html) &&\n new RegExp(`</${tag}>`, \"i\").test(html);\n\n/** Make sure we have a complete <html><head></head><body></body> skeleton. */\nconst normaliseSkeleton = (raw: string): string => {\n const trimmed = raw.trim();\n\n // If it already contains a *complete* html‑head‑body trio we keep it.\n if (\n hasTagPair(trimmed, \"html\") &&\n hasTagPair(trimmed, \"head\") &&\n hasTagPair(trimmed, \"body\")\n )\n return trimmed;\n\n // Otherwise wrap whatever is there inside a fresh skeleton.\n return `<html><head></head><body>${trimmed}</body></html>`;\n};\n\n/** Remove every script whose src matches the supplied RegExp (global & i). */\nconst stripScripts = (\n html: string,\n srcPattern: RegExp,\n): string =>\n html.replace(\n new RegExp(\n `<script[^>]*src=[\"'][^\"']*${srcPattern.source}[^\"']*[\"'][^>]*>\\\\s*</script>`,\n \"gi\",\n ),\n \"\",\n );\n\n/** Inject markup just before a closing tag (</head> or </body>). */\nconst injectBeforeClose = (\n html: string,\n closing: \"</head>\" | \"</body>\",\n markup: string,\n) =>\n html.replace(\n new RegExp(closing, \"i\"),\n `${markup}${closing}`,\n );\n\n/* ------------------------------------------------------------------ */\n/* core logic */\n/* ------------------------------------------------------------------ */\n\nconst injectScripts = (\n template: string,\n files: FileCollection,\n): string => {\n let html = normaliseSkeleton(template);\n\n /* -------------------- dependencies from package.json ------------ */\n const deps = Object.entries(dependencies(files)) as [\n string,\n string,\n ][];\n\n if (deps.length) {\n const libraries = getConfiguredLibraries(files);\n\n // Remove any previous dependency scripts\n deps.forEach(([name]) => {\n html = stripScripts(html, new RegExp(`${name}@`));\n });\n\n // Build & inject new ones (order preserved)\n const depMarkup = deps\n .map(([name, version]) =>\n dependencySource({ name, version }, libraries),\n )\n .map((src) => `<script src=\"${src}\"></script>`)\n .join(\"\\n\");\n\n html = injectBeforeClose(\n html,\n \"</head>\",\n depMarkup + \"\\n\",\n );\n }\n\n /* -------------------- ensure exactly ONE bundle.js -------------- */\n const needBundle =\n files[\"bundle.js\"] !== undefined ||\n files[\"index.js\"] !== undefined;\n\n if (needBundle) {\n const bundleTag = `<script src=\"bundle.js\"></script>`; // **no newline – keeps test #3 exact**\n\n // How many bundle.js scripts are already there & where?\n const bundleRe =\n /<script\\b[^>]*\\bsrc=[\"']bundle\\.js[\"'][^>]*>\\s*<\\/script>/gi;\n const matches = [...html.matchAll(bundleRe)];\n\n const oneInBody =\n matches.length === 1 &&\n (() => {\n const idx = matches[0].index ?? -1;\n if (idx === -1) return false;\n const bodyOpen = html.search(/<body\\b[^>]*>/i);\n const bodyClose = html.search(/<\\/body>/i);\n return (\n bodyOpen !== -1 &&\n bodyClose !== -1 &&\n idx > bodyOpen &&\n idx < bodyClose\n );\n })();\n\n if (!oneInBody) {\n // wipe them all, then inject a clean one at the end of <body>\n html = html.replace(bundleRe, \"\");\n html = injectBeforeClose(html, \"</body>\", bundleTag);\n }\n }\n\n /* -------------------- make sure <!DOCTYPE html> ----------------- */\n return /^\\s*<!DOCTYPE/i.test(html)\n ? html\n : `<!DOCTYPE html>${html}`;\n};\n\n/* ------------------------------------------------------------------ */\n/* public API */\n/* ------------------------------------------------------------------ */\n\nexport const getComputedIndexHtml = (\n files: FileCollection,\n): string => {\n const htmlTemplate = files[\"index.html\"];\n\n // No html and no JS – nothing to do.\n if (\n !htmlTemplate &&\n !files[\"index.js\"] &&\n !files[\"bundle.js\"]\n ) {\n DEBUG &&\n console.log(\n \"[getComputedIndexHtml] No index.html file found\",\n );\n return \"\";\n }\n\n const template =\n htmlTemplate ||\n \"<!DOCTYPE html><html><head></head><body></body></html>\";\n\n const result = injectScripts(template, files);\n\n DEBUG &&\n console.log(\"[getComputedIndexHtml] indexHtml\", result);\n\n return result;\n};\n","import { FileCollection } from \"@vizhub/viz-types\";\nimport type { Plugin } from \"rollup\";\n\nexport const VIRTUAL_PREFIX = \"\\0virtual:\";\n\nconst normalizePath = (filepath: string): string => {\n // Remove leading ./\n let normalized = filepath.replace(/^\\.\\//, \"\");\n // Replace multiple slashes with single slash\n normalized = normalized.replace(/\\/+/g, \"/\");\n // Remove trailing slash\n normalized = normalized.replace(/\\/$/, \"\");\n return normalized;\n};\n\nconst joinPaths = (\n base: string,\n relative: string,\n): string => {\n // Get directory name of base path\n const baseDir = base.includes(\"/\")\n ? base.slice(0, base.lastIndexOf(\"/\"))\n : \"\";\n\n // Handle .. by removing one directory level\n const parts = relative.split(\"/\");\n const resultParts: string[] = baseDir\n ? baseDir.split(\"/\")\n : [];\n\n for (const part of parts) {\n if (part === \"..\") {\n resultParts.pop();\n } else if (part !== \".\" && part !== \"\") {\n resultParts.push(part);\n }\n }\n\n return resultParts.join(\"/\");\n};\n\nexport const virtualFileSystem = (\n files: FileCollection,\n): Plugin => {\n return {\n name: \"virtual-file-system\",\n\n resolveId(source: string, importer?: string) {\n // Strip prefix from importer if present\n const cleanImporter = importer?.startsWith(\n VIRTUAL_PREFIX,\n )\n ? importer.slice(VIRTUAL_PREFIX.length)\n : importer;\n\n // Handle relative paths\n if (\n source.startsWith(\"./\") ||\n source.startsWith(\"../\")\n ) {\n const resolvedPath = cleanImporter\n ? normalizePath(joinPaths(cleanImporter, source))\n : normalizePath(source);\n\n // Try exact match first\n if (files[resolvedPath]) {\n return VIRTUAL_PREFIX + resolvedPath;\n }\n\n // Try with extensions if no exact match is found\n const extensions = [\".js\", \".jsx\", \".ts\", \".tsx\"];\n for (const ext of extensions) {\n const pathWithExt = resolvedPath + ext;\n if (files[pathWithExt]) {\n return VIRTUAL_PREFIX + pathWithExt;\n }\n }\n }\n\n // Handle bare module imports\n if (files[source]) {\n return VIRTUAL_PREFIX + source;\n }\n\n // Try bare imports with extensions\n const extensions = [\".js\", \".jsx\", \".ts\", \".tsx\"];\n for (const ext of extensions) {\n const pathWithExt = source + ext;\n if (files[pathWithExt]) {\n return VIRTUAL_PREFIX + pathWithExt;\n }\n }\n\n return null;\n },\n\n load(id: string) {\n // Only handle our virtual-prefixed IDs\n if (id.startsWith(VIRTUAL_PREFIX)) {\n const actualId = id.slice(VIRTUAL_PREFIX.length);\n if (files[actualId]) {\n return files[actualId];\n }\n }\n return null;\n },\n };\n};\n","import { transform } from \"sucrase\";\nimport type { Plugin } from \"rollup\";\n\nexport function sucrasePlugin(\n additionalOptions = {},\n): Plugin {\n return {\n name: \"sucrase\",\n transform(code, id) {\n // Transform .js, .jsx, and .tsx files\n if (!id.match(/\\.(?:js|[jt]sx)$/)) {\n return null;\n }\n\n const result = transform(code, {\n transforms: [\"jsx\", \"typescript\"],\n\n // For source maps\n filePath: id,\n sourceMapOptions: {\n compiledFilename: \"bundle.js\",\n },\n production: true,\n ...additionalOptions,\n });\n\n return {\n code: result.code,\n map: result.sourceMap,\n };\n },\n };\n}\n","import type {\n RollupBuild,\n RollupOptions,\n OutputOptions,\n} from \"rollup\";\nimport { FileCollection } from \"@vizhub/viz-types\";\nimport { virtualFileSystem } from \"../common/virtualFileSystem.js\";\nimport { sucrasePlugin } from \"../common/sucrasePlugin.js\";\nimport {\n getGlobals,\n packageJSON,\n} from \"../common/packageJson.js\";\n\nexport const computeBundleJSV2 = async ({\n files,\n rollup,\n enableSourcemap = true,\n}: {\n files: FileCollection;\n rollup: (options: RollupOptions) => Promise<RollupBuild>;\n enableSourcemap?: boolean;\n}): Promise<string> => {\n const indexJSContent = files[\"index.js\"];\n if (!indexJSContent) {\n throw new Error(\"Missing index.js\");\n }\n\n const inputOptions: RollupOptions = {\n input: \"./index.js\",\n plugins: [virtualFileSystem(files), sucrasePlugin()],\n onwarn(warning, warn) {\n // Suppress \"treating module as external dependency\" warnings\n if (warning.code === \"UNRESOLVED_IMPORT\") return;\n warn(warning);\n },\n };\n\n const outputOptions: OutputOptions = {\n format: \"iife\",\n sourcemap: enableSourcemap,\n };\n\n const pkg = packageJSON(files);\n\n if (pkg) {\n const globals = getGlobals(pkg);\n if (globals) {\n inputOptions.external = Object.keys(globals);\n outputOptions.globals = globals;\n }\n }\n\n const bundle = await rollup(inputOptions);\n\n const { output } = await bundle.generate(outputOptions);\n return output[0].code;\n};\n","import type { RollupBuild, RollupOptions } from \"rollup\";\nimport { FileCollection } from \"@vizhub/viz-types\";\nimport { getComputedIndexHtml } from \"./getComputedIndexHtml\";\nimport { computeBundleJSV2 } from \"./computeBundleJSV2\";\n\nexport const v2Build = async ({\n files,\n rollup,\n enableSourcemap,\n}: {\n files: FileCollection;\n rollup: (options: RollupOptions) => Promise<RollupBuild>;\n enableSourcemap?: boolean;\n}): Promise<FileCollection> => ({\n ...files,\n \"bundle.js\": await computeBundleJSV2({\n files,\n rollup,\n enableSourcemap,\n }),\n \"index.html\": getComputedIndexHtml(files),\n});\n","import { magicSandbox } from \"magic-sandbox\";\nimport { FileCollection } from \"@vizhub/viz-types\";\nimport type { RollupBuild, RollupOptions } from \"rollup\";\nimport {\n createVizCache,\n createVizContent,\n SlugCache,\n SvelteCompiler,\n v3Build,\n VizCache,\n} from \"../v3\";\nimport { BuildResult } from \"./types\";\nimport { vizFilesToFileCollection } from \"@vizhub/viz-utils\";\nimport { determineRuntimeVersion } from \"./determineRuntimeVersion\";\nimport { v2Build } from \"../v2\";\nimport { v4Build } from \"../v4\";\nimport { VIRTUAL_PREFIX } from \"../common/virtualFileSystem\";\n\nconst DEBUG = false;\n\n// Builds the given files.\nexport const build = async ({\n files,\n rollup,\n enableSourcemap = true,\n vizCache,\n vizId,\n slugCache,\n getSvelteCompiler,\n}: {\n // Only required for v1 and v2 runtime\n // For v3, EITHER files OR vizCache is required\n files?: FileCollection;\n\n // Only required for v2 and v3 runtime\n rollup?: (options: RollupOptions) => Promise<RollupBuild>;\n\n // True to enable sourcemaps, which help with\n // tracing runtime errors back to source code,\n // including specific source files and line numbers.\n // When true, there is additional overhead\n // for generating the sourcemaps, and the generated bundle\n // is larger.\n enableSourcemap?: boolean;\n\n // Only required for v3 runtime\n // For v3, EITHER files OR vizCache is required\n vizCache?: VizCache;\n\n // Only required for v3 runtime\n vizId?: string;\n\n // Only required for v3 runtime\n slugCache?: SlugCache;\n\n // Only required for v3 runtime\n getSvelteCompiler?: () => Promise<SvelteCompiler>;\n}): Promise<BuildResult> => {\n try {\n DEBUG &&\n console.log(\n \"[build] files:\",\n files\n ? JSON.stringify(files).substring(0, 100)\n : undefined,\n );\n DEBUG && console.log(\"[build] vizCache:\", vizCache);\n DEBUG && console.log(\"[build] vizId:\", vizId);\n\n if (!files && !vizCache) {\n throw new Error(\n \"Either files or vizCache is required\",\n );\n }\n\n if (!files && vizCache && !vizId) {\n throw new Error(\n \"vizId is required when using vizCache\",\n );\n }\n\n if (!files && vizCache && vizId) {\n files = vizFilesToFileCollection(\n (await vizCache.get(vizId))?.files,\n );\n }\n\n if (!files) {\n throw new Error(\"Upable to extract viz files\");\n }\n\n const version = determineRuntimeVersion(files);\n DEBUG && console.log(\"[build] version:\", version);\n if (version === \"v1\") {\n return {\n html: magicSandbox(files),\n };\n }\n\n if (version === \"v2\") {\n if (!rollup) {\n throw new Error(\n \"Rollup is required for v2 runtime\",\n );\n }\n return {\n html: magicSandbox(\n await v2Build({ files, rollup, enableSourcemap }),\n ),\n };\n }\n // if (version === \"v3\") {\n // if (!rollup) {\n // throw new Error(\n // \"Rollup is required for v3 runtime\",\n // );\n // }\n\n // // We set up a \"fake\" viz cache.\n // // It's needed because of the way the CSS import resolution works.\n // if (!vizCache && !vizId) {\n // const vizContent = createVizContent(files);\n // vizId = vizContent.id;\n // vizCache = createVizCache({\n // initialContents: [vizContent],\n // handleCacheMiss: async () => {\n // throw new Error(\n // \"Cache miss handler not implemented\",\n // );\n // },\n // });\n // }\n\n // if (!vizCache) {\n // throw new Error(\n // \"vizCache is required for v3 runtime\",\n // );\n // }\n\n // if (!vizId) {\n // throw new Error(\n // \"vizId is required for v3 runtime if vizCache is provided\",\n // );\n // }\n\n // return await v3Build({\n // files,\n // rollup,\n // vizCache,\n // vizId,\n // slugCache,\n // getSvelteCompiler,\n // });\n // }\n\n // if (version === \"v4\") {\n // if (!rollup) {\n // throw new Error(\n // \"Rollup is required for v4 runtime\",\n // );\n // }\n // DEBUG &&\n // console.log(\"[build] v4Build\", {\n // files,\n // rollup,\n // enableSourcemap,\n // });\n // return {\n // html: magicSandbox(\n // await v4Build({ files, rollup, enableSourcemap }),\n // ),\n // };\n // }\n throw new Error(\n `Unsupported runtime version: ${version}`,\n );\n } catch (error) {\n if (error instanceof Error) {\n // Clean up the error message for user facing error messages.\n if (error.message.indexOf(VIRTUAL_PREFIX)) {\n error.message = error.message.replace(\n VIRTUAL_PREFIX,\n \"\",\n );\n }\n }\n throw error;\n }\n};\n","import type { VizId } from \"@vizhub/viz-types\";\nimport type { ResolvedVizFileId } from \"./types\";\n\nexport const parseId = (\n id: ResolvedVizFileId,\n): {\n vizId: VizId;\n fileName: string;\n} => {\n const [vizId, ...fileNameParts] = id.split(\"/\");\n const fileName = fileNameParts.join(\"/\");\n return { vizId, fileName };\n};\n","import type { InputPluginOption } from \"rollup\";\nimport { parseId } from \"./parseId\";\nimport type { ResolvedVizFileId } from \"./types\";\n\nconst debug = false;\n\n// The cache of fetched files.\nconst fetchedFileCache = new Map<string, string>();\n\n// The Svelte compiler.\nexport type SvelteCompiler = (\n code: string,\n options: any,\n) => { js: string };\nlet compile: SvelteCompiler;\n\nconst svelteURL =\n \"https://cdn.jsdelivr.net/npm/svelte@4.2.9\";\n\nexport const svelteCompilerUrl = `${svelteURL}/compiler.cjs`;\n\n// Responsible for transforming Svelte files.\n// Inspired by:\n// * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/compiler/index.js#L2\n// * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L358\n// * https://github.com/sveltejs/rollup-plugin-svelte/blob/master/index.js#L146C4-L146C51\nexport const transformSvelte = ({\n getSvelteCompiler,\n}: {\n getSvelteCompiler?: () => Promise<any>;\n}): InputPluginOption => ({\n name: \"transformSvelte\",\n\n load: async (resolved: string) => {\n if (!resolved.startsWith(svelteURL)) {\n return;\n }\n if (debug) {\n console.log(\"[transformSvelte]: load() \" + resolved);\n }\n\n const cachedFile = fetchedFileCache.get(resolved);\n if (cachedFile) return cachedFile;\n\n const fetchedFile = await fetch(resolved).then((res) =>\n res.text(),\n );\n\n fetchedFileCache.set(resolved, fetchedFile);\n\n return fetchedFile;\n },\n\n // From https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L255C2-L271C5\n resolveId: async (importee, importer) => {\n if (debug) {\n console.log(\n \"[transformSvelte] resolveId() \" + importee,\n );\n console.log(\"importee: \" + importee);\n console.log(\"importer: \" + importer);\n }\n // importing from Svelte\n if (importee === `svelte`) {\n return `${svelteURL}/src/runtime/index.js`;\n }\n if (importee.startsWith(`svelte/`)) {\n const sub_path = importee.slice(7);\n return `${svelteURL}/src/runtime/${sub_path}/index.js`;\n }\n\n // importing from a URL\n if (/^https?:/.test(importee)) return importee;\n\n // Relative imports\n if (importee.startsWith(\".\")) {\n if (importer && importer.startsWith(svelteURL)) {\n const resolved = new URL(importee, importer).href;\n const url = new URL(importee, importer).href;\n if (debug) {\n console.log(\n \"[transformSvelte] resolveId() \" + resolved,\n );\n }\n return resolved;\n }\n }\n },\n\n transform: async (\n code: string,\n id: ResolvedVizFileId,\n ) => {\n const { fileName } = parseId(id);\n\n const isSvelte = fileName.endsWith(\".svelte\");\n\n if (isSvelte) {\n if (!compile) {\n if (!getSvelteCompiler) {\n throw new Error(\"Svelte compiler not available\");\n }\n compile = await getSvelteCompiler();\n }\n\n const compiled = compile(code, {\n filename: fileName,\n hydratable: true,\n });\n\n return compiled.js;\n }\n return undefined;\n },\n});\n","import { VizContent, VizId } from \"@vizhub/viz-types\";\n\nexport type VizCache = {\n get: (vizId: string) => Promise<VizContent>;\n set: (content: VizContent) => void;\n invalidate: (vizId: string) => void;\n};\n\n// A cache of viz content.\n// For use in resolving imports from other vizzes.\n// Runs both on the server and in the browser.\nexport const createVizCache = ({\n initialContents,\n handleCacheMiss,\n}: {\n initialContents: Array<VizContent>;\n handleCacheMiss?: (vizId: VizId) => Promise<VizContent>;\n}): VizCache => {\n // Track the content of cached vizzes.\n const contentMap = new Map<VizId, VizContent>(\n initialContents.map((content) => [content.id, content]),\n );\n\n // Gets the content of a viz.\n // Returns the cached content if it exists.\n // Otherwise, calls handleCacheMiss to fetch the content.\n const get = async (\n vizId: string,\n ): Promise<VizContent> => {\n const cachedContent: VizContent | undefined =\n contentMap.get(vizId);\n\n // Cache hit\n if (cachedContent !== undefined) {\n return cachedContent;\n }\n\n // Cache miss\n if (!handleCacheMiss) {\n throw new Error(\n `Unresolved import from vizId ${vizId}, cache miss handler not provided.`,\n );\n }\n const freshContent = await handleCacheMiss(vizId);\n\n if (freshContent) {\n contentMap.set(vizId, freshContent);\n return freshContent;\n }\n\n // TODO surface this error to the user\n throw new Error(\n `Unresolved import from vizId ${vizId}`,\n );\n };\n\n // Updates the content of a viz in the cache.\n const set = (content: VizContent) => {\n contentMap.set(content.id, content);\n };\n\n const invalidate = (vizId: VizId) => {\n contentMap.delete(vizId);\n };\n\n return { get, set, invalidate };\n};\n","import { VizId } from \"@vizhub/viz-types\";\n\nexport type SlugIdentifier = `${string}/${string}`;\n\nexport type SlugCache = {\n get: (slug: SlugIdentifier) => Promise<VizId>;\n set: (slug: SlugIdentifier, vizId: VizId) => void;\n invalidate: (slug: SlugIdentifier) => void;\n};\n\n// A cache of viz IDs for slug resolution.\n// Maps slug strings (username/slug) to viz IDs.\n// Side effect: `initialMappings` is mutated to add new mappings.\n// This is used to resolve slugs to viz IDs.\nexport const createSlugCache = ({\n initialMappings = {},\n handleCacheMiss,\n}: {\n initialMappings?: Record<SlugIdentifier, VizId>;\n handleCacheMiss?: (\n slug: SlugIdentifier,\n ) => Promise<VizId>;\n}): SlugCache => {\n // Gets the viz ID for a slug.\n // Returns the cached ID if it exists.\n // Otherwise, calls handleCacheMiss to resolve the slug.\n const get = async (\n slug: SlugIdentifier,\n ): Promise<VizId> => {\n const cachedVizId: VizId | undefined =\n initialMappings[slug];\n\n // Cache hit\n if (cachedVizId !== undefined) {\n return cachedVizId;\n }\n\n // Cache miss\n if (!handleCacheMiss) {\n throw new Error(\n `Unresolved slug ${slug}, cache miss handler not provided.`,\n );\n }\n\n const resolvedVizId = await handleCacheMiss(slug);\n\n if (resolvedVizId) {\n initialMappings[slug] = resolvedVizId;\n return resolvedVizId;\n }\n\n throw new Error(`Unresolved slug ${slug}`);\n };\n\n // Updates the mapping of a slug to a viz ID in the cache.\n const set = (slug: SlugIdentifier, vizId: VizId) => {\n initialMappings[slug] = vizId;\n };\n\n // Removes a slug mapping from the cache.\n const invalidate = (slug: SlugIdentifier) => {\n delete initialMappings[slug];\n };\n\n return { get, set, invalidate };\n};\n"],"names":["generateRequestId","determineRuntimeVersion","files","hasIndexHTML","hasIndexJS","hasIndexJSX","EMPTY_PKG_JSON","DEBUG","packageJSON","packageJsonText","pkg","dependencies","getConfiguredLibraries","dependencySource","name","version","libraries","cdn","path","getConfiguredGlobals","_a","accumulator","packageName","config","defaultGlobals","getGlobals","configuredGlobals","hasTagPair","html","tag","normaliseSkeleton","raw","trimmed","stripScripts","srcPattern","injectBeforeClose","closing","markup","injectScripts","template","deps","depMarkup","src","bundleTag","bundleRe","matches","idx","bodyOpen","bodyClose","getComputedIndexHtml","htmlTemplate","VIRTUAL_PREFIX","normalizePath","filepath","normalized","joinPaths","base","relative","baseDir","parts","resultParts","part","virtualFileSystem","source","importer","cleanImporter","resolvedPath","extensions","ext","pathWithExt","id","actualId","sucrasePlugin","additionalOptions","code","result","transform","computeBundleJSV2","rollup","enableSourcemap","inputOptions","warning","warn","outputOptions","globals","bundle","output","v2Build","build","vizCache","vizId","slugCache","getSvelteCompiler","vizFilesToFileCollection","magicSandbox","error","parseId","fileNameParts","fileName","fetchedFileCache","compile","svelteURL","svelteCompilerUrl","transformSvelte","resolved","cachedFile","fetchedFile","res","importee","sub_path","createVizCache","initialContents","handleCacheMiss","contentMap","content","cachedContent","freshContent","createSlugCache","initialMappings","slug","cachedVizId","resolvedVizId"],"mappings":"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"}
|
@@ -1,8 +1,10 @@
|
|
1
1
|
export { jsScriptTagTypeModule } from "./jsScriptTagTypeModule";
|
2
2
|
export { jsScriptTagTypeModules } from "./jsScriptTagTypeModules";
|
3
|
+
export { jsScriptTagTypeModulesRelative } from "./jsScriptTagTypeModulesRelative";
|
3
4
|
export { fetchInterception } from "./fetchInterception";
|
4
5
|
export { esmBuild } from "./esmBuild";
|
5
6
|
export { reactJsx } from "./reactJsx";
|
7
|
+
export { reactJsxWithoutImport } from "./reactJsxWithoutImport";
|
6
8
|
export { d3Usage } from "./d3Usage";
|
7
9
|
export { threeJsUsage } from "./threeJsUsage";
|
8
10
|
export { reactHooks } from "./reactHooks";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"jsScriptTagTypeModulesRelative.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/jsScriptTagTypeModulesRelative.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B;;;;CAW1C,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"reactJsx.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/reactJsx.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ
|
1
|
+
{"version":3,"file":"reactJsx.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/reactJsx.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;CAuCpB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reactJsxWithoutImport.d.ts","sourceRoot":"","sources":["../../../../src/test/fixtures/v4/reactJsxWithoutImport.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;CAoCjC,CAAC"}
|
@@ -9,7 +9,7 @@ export declare function testInBrowser({ browser, files, vizCache, slugCache, viz
|
|
9
9
|
vizCache?: VizCache;
|
10
10
|
slugCache?: SlugCache;
|
11
11
|
vizId?: VizId;
|
12
|
-
expectedLog
|
12
|
+
expectedLog?: string | RegExp;
|
13
13
|
evaluateInBrowser?: (page: Page) => Promise<any>;
|
14
14
|
getSvelteCompiler?: () => Promise<SvelteCompiler>;
|
15
15
|
}): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"testInBrowser.d.ts","sourceRoot":"","sources":["../../src/test/testInBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"testInBrowser.d.ts","sourceRoot":"","sources":["../../src/test/testInBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACnD,iBAoDA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slugCache.d.ts","sourceRoot":"","sources":["../../src/v3/slugCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClD,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C,CAAC;
|
1
|
+
{"version":3,"file":"slugCache.d.ts","sourceRoot":"","sources":["../../src/v3/slugCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClD,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C,CAAC;AAMF,eAAO,MAAM,eAAe,GAAI,uCAG7B;IACD,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,cAAc,KACjB,OAAO,CAAC,KAAK,CAAC,CAAC;CACrB,KAAG,SA2CH,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bundleModule.d.ts","sourceRoot":"","sources":["../../src/v4/bundleModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAEd,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"bundleModule.d.ts","sourceRoot":"","sources":["../../src/v4/bundleModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAEd,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,iDAKlC;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,KAAG,OAAO,CAAC,MAAM,CAmDjB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"catchAll.d.ts","sourceRoot":"","sources":["../../src/v4/catchAll.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ;;sBAGD,MAAM,YAAY,MAAM,GAAG,SAAS;;;;CAStD,CAAC"}
|
package/dist/worker.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("@rollup/browser");require("@vizhub/viz-utils");require("sucrase");const
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("@rollup/browser");require("@vizhub/viz-utils");require("sucrase");const a=require("./slugCache-mB6V-shn.cjs"),h=()=>{const d=async()=>{const t=await fetch(a.svelteCompilerUrl).then(e=>e.text());return(0,eval)(t),self.svelte.compile},o=new Map,r=new Map,c=a.createVizCache({initialContents:[],handleCacheMiss:async t=>(postMessage({type:"contentRequest",vizId:t}),new Promise(s=>{o.set(t,s)}))}),p=a.createSlugCache({initialMappings:{},handleCacheMiss:async t=>{const e=a.generateRequestId();return postMessage({type:"resolveSlugRequest",slugKey:t,requestId:e}),new Promise(n=>{r.set(e,n)})}});addEventListener("message",async t=>{const e=t.data;switch(e.type){case"buildRequest":{const{files:s,enableSourcemap:n,requestId:l,vizId:g}=e;try{const i={type:"buildResponse",buildResult:await a.build({files:s,enableSourcemap:n,rollup:v.rollup,getSvelteCompiler:d,vizCache:c,vizId:g,slugCache:p}),requestId:l};postMessage(i)}catch(u){const i={type:"buildResponse",error:""+u,requestId:l};postMessage(i)}break}case"contentResponse":{const s=o.get(e.vizId);s&&(s(e.content),o.delete(e.vizId));break}case"invalidateVizCacheRequest":{const{changedVizIds:s}=e;for(const n of s)c.invalidate(n);postMessage({type:"invalidateVizCacheResponse"});break}case"resolveSlugResponse":{const s=r.get(e.requestId);s&&(s(e.vizId),r.delete(e.requestId));break}}})};exports.initWorker=h;
|
2
2
|
//# sourceMappingURL=worker.cjs.map
|
package/dist/worker.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"worker.cjs","sources":["../src/orchestration/worker.ts"],"sourcesContent":["import { rollup } from \"@rollup/browser\";\nimport { VizContent, VizId } from \"@vizhub/viz-types\";\nimport type { RollupBuild, RollupOptions } from \"rollup\";\nimport {\n svelteCompilerUrl,\n createVizCache,\n createSlugCache,\n} from \"../v3\";\nimport { generateRequestId } from \"./generateRequestId\";\nimport { BuildWorkerMessage } from \"./types\";\nimport { build } from \"../build\";\nimport { generateVizId } from \"@vizhub/viz-utils\";\n\n// Flag for debugging\nconst DEBUG = false;\n\nexport const initWorker = () => {\n DEBUG && console.log(\"[worker] initializing...\");\n // Inspired by\n // https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L44\n // unpkg doesn't set the correct MIME type for .cjs files\n // https://github.com/mjackson/unpkg/issues/355\n const getSvelteCompiler = async () => {\n const compiler = await fetch(svelteCompilerUrl).then(\n (r) => r.text(),\n );\n (0, eval)(compiler);\n\n // @ts-ignore\n return self.svelte.compile;\n };\n\n // Tracks pending promises for 'contentResponse' messages\n const pendingContentResponsePromises = new Map();\n\n // Tracks pending promises for 'resolveSlugResponse' messages\n const pendingResolveSlugResponsePromises = new Map();\n\n // Create a viz cache that's backed by the main thread\n const vizCache = createVizCache({\n initialContents: [],\n handleCacheMiss: async (\n vizId: VizId,\n ): Promise<VizContent> => {\n const message = {\n type: \"contentRequest\",\n vizId,\n };\n\n if (DEBUG) {\n console.log(\n \"[worker] sending content request message to main thread\",\n message,\n );\n }\n postMessage(message);\n\n return new Promise((resolve) => {\n pendingContentResponsePromises.set(vizId, resolve);\n });\n },\n });\n\n // Create a slug cache that's backed by the main thread\n const slugCache = createSlugCache({\n initialMappings: {},\n handleCacheMiss: async (slug) => {\n const requestId = generateRequestId();\n const message = {\n type: \"resolveSlugRequest\",\n slugKey: slug,\n requestId,\n };\n\n if (DEBUG) {\n console.log(\n \"[worker] sending resolve slug request message to main thread\",\n message,\n );\n }\n postMessage(message);\n\n return new Promise((resolve) => {\n pendingResolveSlugResponsePromises.set(\n requestId,\n resolve,\n );\n });\n },\n });\n\n // Handle messages from the main thread\n addEventListener(\"message\", async (event) => {\n const data: BuildWorkerMessage = event.data;\n\n DEBUG &&\n console.log(\n \"[worker] received message:\",\n JSON.stringify(data, null, 2).substring(0, 1000),\n );\n\n switch (data.type) {\n case \"buildRequest\": {\n const { files, enableSourcemap, requestId, vizId } =\n data;\n\n try {\n // Build HTML from the files\n const buildResult = await build({\n files,\n enableSourcemap,\n rollup: rollup as (\n options: RollupOptions,\n ) => Promise<RollupBuild>,\n getSvelteCompiler,\n vizCache,\n vizId,\n slugCache,\n });\n const message: BuildWorkerMessage = {\n type: \"buildResponse\",\n buildResult,\n requestId,\n };\n // Send the built HTML back to the main thread\n postMessage(message);\n } catch (error) {\n DEBUG &&\n console.log(\"[worker] build error:\", error);\n\n const message: BuildWorkerMessage = {\n type: \"buildResponse\",\n error: \"\" + error,\n requestId,\n };\n\n // Send the error back to the main thread\n postMessage(message);\n }\n break;\n }\n\n case \"contentResponse\": {\n // Resolve pending promises for content snapshots\n const resolver = pendingContentResponsePromises.get(\n data.vizId,\n );\n if (resolver) {\n resolver(data.content);\n pendingContentResponsePromises.delete(data.vizId);\n }\n break;\n }\n\n case \"invalidateVizCacheRequest\": {\n if (DEBUG) {\n console.log(\n \"[worker] received invalidateVizCacheRequest\",\n data,\n );\n }\n const { changedVizIds } = data;\n\n // Invalidate the viz cache for the changed vizzes\n for (const vizId of changedVizIds) {\n vizCache.invalidate(vizId);\n }\n\n postMessage({\n type: \"invalidateVizCacheResponse\",\n });\n break;\n }\n\n case \"resolveSlugResponse\": {\n // Resolve pending promises for slug resolution\n const resolver =\n pendingResolveSlugResponsePromises.get(\n data.requestId,\n );\n if (resolver) {\n resolver(data.vizId);\n pendingResolveSlugResponsePromises.delete(\n data.requestId,\n );\n }\n break;\n }\n }\n });\n};\n"],"names":["initWorker","getSvelteCompiler","compiler","svelteCompilerUrl","r","pendingContentResponsePromises","pendingResolveSlugResponsePromises","vizCache","createVizCache","vizId","resolve","slugCache","createSlugCache","slug","requestId","generateRequestId","event","data","files","enableSourcemap","message","build","rollup","error","resolver","changedVizIds"],"mappings":"
|
1
|
+
{"version":3,"file":"worker.cjs","sources":["../src/orchestration/worker.ts"],"sourcesContent":["import { rollup } from \"@rollup/browser\";\nimport { VizContent, VizId } from \"@vizhub/viz-types\";\nimport type { RollupBuild, RollupOptions } from \"rollup\";\nimport {\n svelteCompilerUrl,\n createVizCache,\n createSlugCache,\n} from \"../v3\";\nimport { generateRequestId } from \"./generateRequestId\";\nimport { BuildWorkerMessage } from \"./types\";\nimport { build } from \"../build\";\nimport { generateVizId } from \"@vizhub/viz-utils\";\n\n// Flag for debugging\nconst DEBUG = false;\n\nexport const initWorker = () => {\n DEBUG && console.log(\"[worker] initializing...\");\n // Inspired by\n // https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L44\n // unpkg doesn't set the correct MIME type for .cjs files\n // https://github.com/mjackson/unpkg/issues/355\n const getSvelteCompiler = async () => {\n const compiler = await fetch(svelteCompilerUrl).then(\n (r) => r.text(),\n );\n (0, eval)(compiler);\n\n // @ts-ignore\n return self.svelte.compile;\n };\n\n // Tracks pending promises for 'contentResponse' messages\n const pendingContentResponsePromises = new Map();\n\n // Tracks pending promises for 'resolveSlugResponse' messages\n const pendingResolveSlugResponsePromises = new Map();\n\n // Create a viz cache that's backed by the main thread\n const vizCache = createVizCache({\n initialContents: [],\n handleCacheMiss: async (\n vizId: VizId,\n ): Promise<VizContent> => {\n const message = {\n type: \"contentRequest\",\n vizId,\n };\n\n if (DEBUG) {\n console.log(\n \"[worker] sending content request message to main thread\",\n message,\n );\n }\n postMessage(message);\n\n return new Promise((resolve) => {\n pendingContentResponsePromises.set(vizId, resolve);\n });\n },\n });\n\n // Create a slug cache that's backed by the main thread\n const slugCache = createSlugCache({\n initialMappings: {},\n handleCacheMiss: async (slug) => {\n const requestId = generateRequestId();\n const message = {\n type: \"resolveSlugRequest\",\n slugKey: slug,\n requestId,\n };\n\n if (DEBUG) {\n console.log(\n \"[worker] sending resolve slug request message to main thread\",\n message,\n );\n }\n postMessage(message);\n\n return new Promise((resolve) => {\n pendingResolveSlugResponsePromises.set(\n requestId,\n resolve,\n );\n });\n },\n });\n\n // Handle messages from the main thread\n addEventListener(\"message\", async (event) => {\n const data: BuildWorkerMessage = event.data;\n\n DEBUG &&\n console.log(\n \"[worker] received message:\",\n JSON.stringify(data, null, 2).substring(0, 1000),\n );\n\n switch (data.type) {\n case \"buildRequest\": {\n const { files, enableSourcemap, requestId, vizId } =\n data;\n\n try {\n // Build HTML from the files\n const buildResult = await build({\n files,\n enableSourcemap,\n rollup: rollup as (\n options: RollupOptions,\n ) => Promise<RollupBuild>,\n getSvelteCompiler,\n vizCache,\n vizId,\n slugCache,\n });\n const message: BuildWorkerMessage = {\n type: \"buildResponse\",\n buildResult,\n requestId,\n };\n // Send the built HTML back to the main thread\n postMessage(message);\n } catch (error) {\n DEBUG &&\n console.log(\"[worker] build error:\", error);\n\n const message: BuildWorkerMessage = {\n type: \"buildResponse\",\n error: \"\" + error,\n requestId,\n };\n\n // Send the error back to the main thread\n postMessage(message);\n }\n break;\n }\n\n case \"contentResponse\": {\n // Resolve pending promises for content snapshots\n const resolver = pendingContentResponsePromises.get(\n data.vizId,\n );\n if (resolver) {\n resolver(data.content);\n pendingContentResponsePromises.delete(data.vizId);\n }\n break;\n }\n\n case \"invalidateVizCacheRequest\": {\n if (DEBUG) {\n console.log(\n \"[worker] received invalidateVizCacheRequest\",\n data,\n );\n }\n const { changedVizIds } = data;\n\n // Invalidate the viz cache for the changed vizzes\n for (const vizId of changedVizIds) {\n vizCache.invalidate(vizId);\n }\n\n postMessage({\n type: \"invalidateVizCacheResponse\",\n });\n break;\n }\n\n case \"resolveSlugResponse\": {\n // Resolve pending promises for slug resolution\n const resolver =\n pendingResolveSlugResponsePromises.get(\n data.requestId,\n );\n if (resolver) {\n resolver(data.vizId);\n pendingResolveSlugResponsePromises.delete(\n data.requestId,\n );\n }\n break;\n }\n }\n });\n};\n"],"names":["initWorker","getSvelteCompiler","compiler","svelteCompilerUrl","r","pendingContentResponsePromises","pendingResolveSlugResponsePromises","vizCache","createVizCache","vizId","resolve","slugCache","createSlugCache","slug","requestId","generateRequestId","event","data","files","enableSourcemap","message","build","rollup","error","resolver","changedVizIds"],"mappings":"+MAgBaA,EAAa,IAAM,CAM9B,MAAMC,EAAoB,SAAY,CACpC,MAAMC,EAAW,MAAM,MAAMC,EAAAA,iBAAiB,EAAE,KAC7CC,GAAMA,EAAE,KAAK,CAChB,EACC,SAAG,MAAMF,CAAQ,EAGX,KAAK,OAAO,OACrB,EAGMG,MAAqC,IAGrCC,MAAyC,IAGzCC,EAAWC,EAAAA,eAAe,CAC9B,gBAAiB,CAAC,EAClB,gBAAiB,MACfC,IAaA,YAXgB,CACd,KAAM,iBACN,MAAAA,CACF,CAQmB,EAEZ,IAAI,QAASC,GAAY,CACCL,EAAA,IAAII,EAAOC,CAAO,CAAA,CAClD,EACH,CACD,EAGKC,EAAYC,EAAAA,gBAAgB,CAChC,gBAAiB,CAAC,EAClB,gBAAiB,MAAOC,GAAS,CAC/B,MAAMC,EAAYC,EAAAA,kBAAkB,EAapC,mBAZgB,CACd,KAAM,qBACN,QAASF,EACT,UAAAC,CACF,CAQmB,EAEZ,IAAI,QAASJ,GAAY,CACKJ,EAAA,IACjCQ,EACAJ,CACF,CAAA,CACD,CAAA,CACH,CACD,EAGgB,iBAAA,UAAW,MAAOM,GAAU,CAC3C,MAAMC,EAA2BD,EAAM,KAQvC,OAAQC,EAAK,KAAM,CACjB,IAAK,eAAgB,CACnB,KAAM,CAAE,MAAAC,EAAO,gBAAAC,EAAiB,UAAAL,EAAW,MAAAL,CACzC,EAAAQ,EAEE,GAAA,CAaF,MAAMG,EAA8B,CAClC,KAAM,gBACN,YAbkB,MAAMC,QAAM,CAC9B,MAAAH,EACA,gBAAAC,EAAA,OACAG,EAAA,OAGA,kBAAArB,EACA,SAAAM,EACA,MAAAE,EACAE,UAAAA,CAAA,CACD,EAIC,UAAAG,CACF,EAEA,YAAYM,CAAO,QACZG,EAAO,CAId,MAAMH,EAA8B,CAClC,KAAM,gBACN,MAAO,GAAKG,EACZ,UAAAT,CACF,EAGA,YAAYM,CAAO,CAAA,CAErB,KAAA,CAGF,IAAK,kBAAmB,CAEtB,MAAMI,EAAWnB,EAA+B,IAC9CY,EAAK,KACP,EACIO,IACFA,EAASP,EAAK,OAAO,EACUZ,EAAA,OAAOY,EAAK,KAAK,GAElD,KAAA,CAGF,IAAK,4BAA6B,CAO1B,KAAA,CAAE,cAAAQ,GAAkBR,EAG1B,UAAWR,KAASgB,EAClBlB,EAAS,WAAWE,CAAK,EAGf,YAAA,CACV,KAAM,4BAAA,CACP,EACD,KAAA,CAGF,IAAK,sBAAuB,CAE1B,MAAMe,EACJlB,EAAmC,IACjCW,EAAK,SACP,EACEO,IACFA,EAASP,EAAK,KAAK,EACgBX,EAAA,OACjCW,EAAK,SACP,GAEF,KAAA,CACF,CACF,CACD,CACH"}
|
package/dist/worker.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
import { rollup as g } from "@rollup/browser";
|
2
2
|
import "@vizhub/viz-utils";
|
3
3
|
import "sucrase";
|
4
|
-
import {
|
5
|
-
const
|
4
|
+
import { i as m, f as v, j as h, g as R, k as y } from "./slugCache-DqUp8B5A.js";
|
5
|
+
const M = () => {
|
6
6
|
const p = async () => {
|
7
|
-
const t = await fetch(
|
7
|
+
const t = await fetch(y).then(
|
8
8
|
(e) => e.text()
|
9
9
|
);
|
10
10
|
return (0, eval)(t), self.svelte.compile;
|
@@ -16,10 +16,10 @@ const f = () => {
|
|
16
16
|
}), new Promise((s) => {
|
17
17
|
n.set(t, s);
|
18
18
|
}))
|
19
|
-
}), d =
|
19
|
+
}), d = h({
|
20
20
|
initialMappings: {},
|
21
21
|
handleCacheMiss: async (t) => {
|
22
|
-
const e =
|
22
|
+
const e = R();
|
23
23
|
return postMessage({
|
24
24
|
type: "resolveSlugRequest",
|
25
25
|
slugKey: t,
|
@@ -40,7 +40,7 @@ const f = () => {
|
|
40
40
|
try {
|
41
41
|
const i = {
|
42
42
|
type: "buildResponse",
|
43
|
-
buildResult: await
|
43
|
+
buildResult: await v({
|
44
44
|
files: s,
|
45
45
|
enableSourcemap: a,
|
46
46
|
rollup: g,
|
@@ -91,6 +91,6 @@ const f = () => {
|
|
91
91
|
});
|
92
92
|
};
|
93
93
|
export {
|
94
|
-
|
94
|
+
M as initWorker
|
95
95
|
};
|
96
96
|
//# sourceMappingURL=worker.js.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vizhub/runtime",
|
3
|
-
"version": "0.
|
3
|
+
"version": "2.0.0",
|
4
4
|
"description": "Flexible runtime environment for data visualization sandboxes",
|
5
5
|
"type": "module",
|
6
6
|
"main": "./dist/index.cjs",
|
@@ -41,14 +41,14 @@
|
|
41
41
|
"@types/node": "^22.14.1",
|
42
42
|
"@types/uuid": "^10.0.0",
|
43
43
|
"jsdom": "^26.1.0",
|
44
|
-
"npm-check-updates": "^
|
44
|
+
"npm-check-updates": "^18.0.0",
|
45
45
|
"prettier": "^3.5.3",
|
46
46
|
"puppeteer": "^24.6.1",
|
47
47
|
"rollup": "^4.40.0",
|
48
48
|
"svelte": "4.2.9",
|
49
49
|
"typescript": "^5.8.3",
|
50
50
|
"vite": "^6.3.2",
|
51
|
-
"vitest": "^3.1.
|
51
|
+
"vitest": "^3.1.2"
|
52
52
|
},
|
53
53
|
"dependencies": {
|
54
54
|
"@rollup/browser": "^4.40.0",
|
package/dist/build-BAZMN_vU.cjs
DELETED
@@ -1,214 +0,0 @@
|
|
1
|
-
"use strict";const S=require("magic-sandbox"),f=require("@vizhub/viz-utils"),D=require("sucrase"),A=()=>(Math.random()+"").slice(2);function O(){return{name:"sucrase",transform(e,t){if(!t.match(/\.(?:js|[jt]sx)$/))return null;const n=D.transform(e,{transforms:["jsx","typescript"],filePath:t,sourceMapOptions:{compiledFilename:"bundle.js"},production:!0});return{code:n.code,map:n.sourceMap}}}}const M={dependencies:{},vizhub:{},license:"MIT"},q=!1,j=e=>{const t=e["package.json"];try{const n=t?JSON.parse(t):M;return q&&console.log("[packageJSON] pkg:",JSON.stringify(n,null,2)),n}catch{return M}},N=e=>j(e).dependencies||{},R=e=>(j(e).vizhub||{}).libraries||{},T=({name:e,version:t},n,r="jsdelivr")=>{const s=n[e]&&n[e].path||"";return r==="jsdelivr"?`https://cdn.jsdelivr.net/npm/${e}@${t}${s}`:`https://unpkg.com/${e}@${t}${s}`},Y=e=>{var n;const t=(n=e==null?void 0:e.vizhub)==null?void 0:n.libraries;return t?Object.entries(t).reduce((r,[s,o])=>(o.global&&(r[s]=o.global),r),{}):{}},_={d3:"d3",react:"React","react-dom":"ReactDOM"},z=e=>{const t=Y(e);return{..._,...t}},x=e=>{const[t,...n]=e.split("/"),r=n.join("/");return{vizId:t,fileName:r}},G=`var EOL = {},
|
2
|
-
EOF = {},
|
3
|
-
QUOTE = 34,
|
4
|
-
NEWLINE = 10,
|
5
|
-
RETURN = 13;
|
6
|
-
|
7
|
-
function objectConverter(columns) {
|
8
|
-
return new Function(
|
9
|
-
'd',
|
10
|
-
'return {' +
|
11
|
-
columns
|
12
|
-
.map(function (name, i) {
|
13
|
-
return (
|
14
|
-
JSON.stringify(name) + ': d[' + i + '] || ""'
|
15
|
-
);
|
16
|
-
})
|
17
|
-
.join(',') +
|
18
|
-
'}',
|
19
|
-
);
|
20
|
-
}
|
21
|
-
|
22
|
-
function customConverter(columns, f) {
|
23
|
-
var object = objectConverter(columns);
|
24
|
-
return function (row, i) {
|
25
|
-
return f(object(row), i, columns);
|
26
|
-
};
|
27
|
-
}
|
28
|
-
|
29
|
-
function dsv(delimiter) {
|
30
|
-
var DELIMITER = delimiter.charCodeAt(0);
|
31
|
-
|
32
|
-
function parse(text, f) {
|
33
|
-
var convert,
|
34
|
-
columns,
|
35
|
-
rows = parseRows(text, function (row, i) {
|
36
|
-
if (convert) return convert(row, i - 1);
|
37
|
-
(columns = row),
|
38
|
-
(convert = f
|
39
|
-
? customConverter(row, f)
|
40
|
-
: objectConverter(row));
|
41
|
-
});
|
42
|
-
rows.columns = columns || [];
|
43
|
-
return rows;
|
44
|
-
}
|
45
|
-
|
46
|
-
function parseRows(text, f) {
|
47
|
-
var rows = [], // output rows
|
48
|
-
N = text.length,
|
49
|
-
I = 0, // current character index
|
50
|
-
n = 0, // current line number
|
51
|
-
t, // current token
|
52
|
-
eof = N <= 0, // current token followed by EOF?
|
53
|
-
eol = false; // current token followed by EOL?
|
54
|
-
|
55
|
-
// Strip the trailing newline.
|
56
|
-
if (text.charCodeAt(N - 1) === NEWLINE) --N;
|
57
|
-
if (text.charCodeAt(N - 1) === RETURN) --N;
|
58
|
-
|
59
|
-
function token() {
|
60
|
-
if (eof) return EOF;
|
61
|
-
if (eol) return (eol = false), EOL;
|
62
|
-
|
63
|
-
// Unescape quotes.
|
64
|
-
var i,
|
65
|
-
j = I,
|
66
|
-
c;
|
67
|
-
if (text.charCodeAt(j) === QUOTE) {
|
68
|
-
while (
|
69
|
-
(I++ < N && text.charCodeAt(I) !== QUOTE) ||
|
70
|
-
text.charCodeAt(++I) === QUOTE
|
71
|
-
);
|
72
|
-
if ((i = I) >= N) eof = true;
|
73
|
-
else if ((c = text.charCodeAt(I++)) === NEWLINE)
|
74
|
-
eol = true;
|
75
|
-
else if (c === RETURN) {
|
76
|
-
eol = true;
|
77
|
-
if (text.charCodeAt(I) === NEWLINE) ++I;
|
78
|
-
}
|
79
|
-
return text.slice(j + 1, i - 1).replace(/""/g, '"');
|
80
|
-
}
|
81
|
-
|
82
|
-
// Find next delimiter or newline.
|
83
|
-
while (I < N) {
|
84
|
-
if ((c = text.charCodeAt((i = I++))) === NEWLINE)
|
85
|
-
eol = true;
|
86
|
-
else if (c === RETURN) {
|
87
|
-
eol = true;
|
88
|
-
if (text.charCodeAt(I) === NEWLINE) ++I;
|
89
|
-
} else if (c !== DELIMITER) continue;
|
90
|
-
return text.slice(j, i);
|
91
|
-
}
|
92
|
-
|
93
|
-
// Return last token before EOF.
|
94
|
-
return (eof = true), text.slice(j, N);
|
95
|
-
}
|
96
|
-
|
97
|
-
while ((t = token()) !== EOF) {
|
98
|
-
var row = [];
|
99
|
-
while (t !== EOL && t !== EOF)
|
100
|
-
row.push(t), (t = token());
|
101
|
-
if (f && (row = f(row, n++)) == null) continue;
|
102
|
-
rows.push(row);
|
103
|
-
}
|
104
|
-
|
105
|
-
return rows;
|
106
|
-
}
|
107
|
-
|
108
|
-
return {
|
109
|
-
parse: parse,
|
110
|
-
};
|
111
|
-
}
|
112
|
-
|
113
|
-
var csv = dsv(',');
|
114
|
-
|
115
|
-
var csvParse = csv.parse;
|
116
|
-
|
117
|
-
var tsv = dsv(' ');
|
118
|
-
|
119
|
-
var tsvParse = tsv.parse;
|
120
|
-
|
121
|
-
export { csvParse, tsvParse };`,H=e=>e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),Q=()=>({name:"transformDSV",transform:async(e,t)=>{const{fileName:n}=x(t),r=n.endsWith(".csv"),s=n.endsWith(".tsv");if(r||s)return{code:`
|
122
|
-
${G}
|
123
|
-
const data = ${r?"csvParse":"tsvParse"}(\`${H(e)}\`);
|
124
|
-
export default data;
|
125
|
-
`,map:{mappings:""}}}}),Z=e=>{const t=/^@([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)$/,n=e.match(t);return n?{userName:n[1],idOrSlug:n[2]}:null},K=({vizId:e,slugCache:t})=>({name:"vizResolve",resolveId:async(n,r)=>{if(n.startsWith("./")&&!(r!=null&&r.startsWith("https://"))){let o=n.substring(2);if(!o.endsWith(".js")&&!o.endsWith(".css")&&!o.endsWith(".csv")&&!o.endsWith(".svelte")&&(o+=".js"),r){const{vizId:i,fileName:c}=x(r),a=c.split("/").slice(0,-1).join("/"),l=a?`${a}/${o}`:o;return`${i}/${l}`}return e+"/"+o}const s=Z(n);if(s){let o;if(f.isVizId(s.idOrSlug))o=s.idOrSlug;else{if(!t)throw new Error("slugCache is required to import by slug in v3 runtime");o=await t.get(`${s.userName}/${s.idOrSlug}`)}return o+"/index.js"}}}),X=({vizCache:e,trackCSSImport:t,vizId:n,files:r})=>({name:"vizLoad",load:async s=>{const o=x(s),i=o.vizId,c=o.fileName;if(c.endsWith(".css"))return t(s),"";let a=null;if(i===n&&r)a=r[c]||null;else{const l=await e.get(i);a=f.getFileText(l,c)}if(a===null)throw new Error(`Imported file "${c}" not found.`);return a}}),F=new Map;let $;const g="https://cdn.jsdelivr.net/npm/svelte@4.2.9",tt=`${g}/compiler.cjs`,et=({getSvelteCompiler:e})=>({name:"transformSvelte",load:async t=>{if(!t.startsWith(g))return;const n=F.get(t);if(n)return n;const r=await fetch(t).then(s=>s.text());return F.set(t,r),r},resolveId:async(t,n)=>{if(t==="svelte")return`${g}/src/runtime/index.js`;if(t.startsWith("svelte/")){const r=t.slice(7);return`${g}/src/runtime/${r}/index.js`}if(/^https?:/.test(t))return t;if(t.startsWith(".")&&n&&n.startsWith(g)){const r=new URL(t,n).href;return new URL(t,n).href,r}},transform:async(t,n)=>{const{fileName:r}=x(n);if(r.endsWith(".svelte")){if(!$){if(!e)throw new Error("Svelte compiler not available");$=await e()}return $(t,{filename:r,hydratable:!0}).js}}}),V=async({files:e,rollup:t,enableSourcemap:n=!0,vizCache:r,vizId:s,slugCache:o,getSvelteCompiler:i})=>{const c=new Set,a=u=>{c.add(u)};if(!e["index.js"])throw new Error("Missing index.js");const d={input:"./index.js",plugins:[...s?[K({vizId:s,slugCache:o})]:[],Q(),O(),et({getSvelteCompiler:i}),...r?[X({vizCache:r,trackCSSImport:a,vizId:s,files:e})]:[]],onwarn(u,h){u.code!=="UNRESOLVED_IMPORT"&&h(u)}},p={format:"umd",name:"Viz",sourcemap:!!n,compact:!0},w=j(e);if(w){const u=z(w);u&&(d.external=Object.keys(u),p.globals=u)}const b=await t(d),{output:m}=await b.generate(p);return{src:m[0].code,cssFiles:Array.from(c)}};function nt(){return Math.random().toString().slice(2,7)}const rt=({cdn:e,src:t,styles:n})=>{const s=`viz-container-${nt()}`;return`<!DOCTYPE html>
|
126
|
-
<html>
|
127
|
-
<head>
|
128
|
-
<meta charset="utf-8">${e}${n}
|
129
|
-
<style>
|
130
|
-
body {
|
131
|
-
margin: 0;
|
132
|
-
overflow: hidden;
|
133
|
-
}
|
134
|
-
#${s} {
|
135
|
-
height: 100vh;
|
136
|
-
}
|
137
|
-
</style>
|
138
|
-
</head>
|
139
|
-
<body>
|
140
|
-
<div id="${s}"></div>
|
141
|
-
<script id="injected-script">${t}<\/script>
|
142
|
-
<script>
|
143
|
-
(() => {
|
144
|
-
let cleanup;
|
145
|
-
const render = () => {
|
146
|
-
const container = document.getElementById('${s}');
|
147
|
-
typeof cleanup === 'function' && cleanup();
|
148
|
-
cleanup = Viz.main(container, { state: window.state, setState, writeFile });
|
149
|
-
};
|
150
|
-
const setState = (next) => {
|
151
|
-
window.state = next(window.state);
|
152
|
-
render();
|
153
|
-
};
|
154
|
-
const writeFile = (fileName, content) => {
|
155
|
-
parent.postMessage({ type: 'writeFile', fileName, content }, "*");
|
156
|
-
};
|
157
|
-
const run = () => {
|
158
|
-
try {
|
159
|
-
setState((state) => state || {});
|
160
|
-
} catch (error) {
|
161
|
-
console.error(error);
|
162
|
-
parent.postMessage({ type: 'runError', error }, "*");
|
163
|
-
}
|
164
|
-
}
|
165
|
-
run();
|
166
|
-
const runJS = (src) => {
|
167
|
-
document.getElementById('injected-script')?.remove();
|
168
|
-
const script = document.createElement('script');
|
169
|
-
script.textContent = src;
|
170
|
-
script.id = 'injected-script';
|
171
|
-
document.body.appendChild(script);
|
172
|
-
run();
|
173
|
-
};
|
174
|
-
const runCSS = (css) => {
|
175
|
-
let style = document.getElementById('injected-style');
|
176
|
-
if (!style) {
|
177
|
-
style = document.createElement('style');
|
178
|
-
style.type = 'text/css';
|
179
|
-
style.id = 'injected-style';
|
180
|
-
document.head.appendChild(style);
|
181
|
-
}
|
182
|
-
style.textContent = css;
|
183
|
-
};
|
184
|
-
onmessage = (message) => {
|
185
|
-
switch (message.data.type) {
|
186
|
-
case 'runJS':
|
187
|
-
runJS(message.data.js);
|
188
|
-
parent.postMessage({ type: 'runDone' }, "*");
|
189
|
-
break;
|
190
|
-
case 'runCSS':
|
191
|
-
runCSS(message.data.css);
|
192
|
-
break;
|
193
|
-
case 'ping':
|
194
|
-
parent.postMessage({ type: 'pong' }, "*");
|
195
|
-
break;
|
196
|
-
default:
|
197
|
-
break;
|
198
|
-
}
|
199
|
-
}
|
200
|
-
})();
|
201
|
-
<\/script>
|
202
|
-
</body>
|
203
|
-
</html>`},W=async({files:e,rollup:t,enableSourcemap:n=!0,vizCache:r,vizId:s,slugCache:o,getSvelteCompiler:i})=>{const{src:c,cssFiles:a}=await V({files:e,rollup:t,enableSourcemap:n,vizCache:r,vizId:s,slugCache:o,getSvelteCompiler:i});let l=[];if(a.length>0)for(let m=0;m<a.length;m++){const u=a[m],h=x(u),y=h.vizId,E=h.fileName;let v=null;if(y===s&&e)v=e[E]||null;else{const B=await r.get(y);v=f.getFileText(B,E)}v&&l.push(v)}const d=l.join(`
|
204
|
-
`),p=`
|
205
|
-
<style id="injected-style">${d}</style>`;let w="";const b=Object.entries(N(e));if(b.length>0){const m=R(e);w=b.map(([u,h],y)=>{const E=T({name:u,version:h},m);return`${y>0?" ":`
|
206
|
-
`}<script src="${E}"><\/script>`}).join("")}return{html:rt({cdn:w,src:c,styles:p}),css:d,js:c}},U=({initialContents:e,handleCacheMiss:t})=>{const n=new Map(e.map(i=>[i.id,i]));return{get:async i=>{const c=n.get(i);if(c!==void 0)return c;if(!t)throw new Error(`Unresolved import from vizId ${i}, cache miss handler not provided.`);const a=await t(i);if(a)return n.set(i,a),a;throw new Error(`Unresolved import from vizId ${i}`)},set:i=>{n.set(i.id,i)},invalidate:i=>{n.delete(i)}}},st=({initialMappings:e={},handleCacheMiss:t})=>{const n=new Map(Object.entries(e));return{get:async i=>{const c=n.get(i);if(c!==void 0)return c;if(!t)throw new Error(`Unresolved slug ${i}, cache miss handler not provided.`);const a=await t(i);if(a)return n.set(i,a),a;throw new Error(`Unresolved slug ${i}`)},set:(i,c)=>{n.set(i,c)},invalidate:i=>{n.delete(i)}}},L=(e,t="Sample Content for Exporting",n=f.generateVizId())=>({id:n,files:f.fileCollectionToVizFiles(e),title:t}),ot=e=>{if(Object.keys(e).length===0)return null;const t="index.html"in e,n="index.js"in e,r="index.jsx"in e;return t?e["index.html"].includes('type="module"')?"v4":n||r?"v2":"v1":!t&&n?"v3":null},C=(e,t)=>new RegExp(`<${t}\\b`,"i").test(e)&&new RegExp(`</${t}>`,"i").test(e),it=e=>{const t=e.trim();return C(t,"html")&&C(t,"head")&&C(t,"body")?t:`<html><head></head><body>${t}</body></html>`},ct=(e,t)=>e.replace(new RegExp(`<script[^>]*src=["'][^"']*${t.source}[^"']*["'][^>]*>\\s*<\/script>`,"gi"),""),P=(e,t,n)=>e.replace(new RegExp(t,"i"),`${n}${t}`),at=(e,t)=>{let n=it(e);const r=Object.entries(N(t));if(r.length){const o=R(t);r.forEach(([c])=>{n=ct(n,new RegExp(`${c}@`))});const i=r.map(([c,a])=>T({name:c,version:a},o)).map(c=>`<script src="${c}"><\/script>`).join(`
|
207
|
-
`);n=P(n,"</head>",i+`
|
208
|
-
`)}if(t["bundle.js"]!==void 0||t["index.js"]!==void 0){const o='<script src="bundle.js"><\/script>',i=/<script\b[^>]*\bsrc=["']bundle\.js["'][^>]*>\s*<\/script>/gi,c=[...n.matchAll(i)];c.length===1&&(()=>{const l=c[0].index??-1;if(l===-1)return!1;const d=n.search(/<body\b[^>]*>/i),p=n.search(/<\/body>/i);return d!==-1&&p!==-1&&l>d&&l<p})()||(n=n.replace(i,""),n=P(n,"</body>",o))}return/^\s*<!DOCTYPE/i.test(n)?n:`<!DOCTYPE html>${n}`},lt=e=>{const t=e["index.html"];return!t&&!e["index.js"]&&!e["bundle.js"]?"":at(t||"<!DOCTYPE html><html><head></head><body></body></html>",e)},k=e=>{let t=e.replace(/^\.\//,"");return t=t.replace(/\/+/g,"/"),t=t.replace(/\/$/,""),t},ut=(e,t)=>{const n=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",r=t.split("/"),s=n?n.split("/"):[];for(const o of r)o===".."?s.pop():o!=="."&&o!==""&&s.push(o);return s.join("/")},J=e=>({name:"virtual-file-system",resolveId(t,n){if(t.startsWith("./")||t.startsWith("../")){const s=k(n?ut(n,t):t);if(e[s])return s;const o=[".js",".jsx",".ts",".tsx"];for(const i of o){const c=s+i;if(e[c])return c}}if(e[t])return t;const r=[".js",".jsx",".ts",".tsx"];for(const s of r){const o=t+s;if(e[o])return o}return null},load(t){return e[t]?e[t]:null}}),dt=async({files:e,rollup:t,enableSourcemap:n=!0})=>{if(!e["index.js"])throw new Error("Missing index.js");const s={input:"./index.js",plugins:[J(e),O()],onwarn(l,d){l.code!=="UNRESOLVED_IMPORT"&&d(l)}},o={format:"iife",sourcemap:n},i=j(e);if(i){const l=z(i);l&&(s.external=Object.keys(l),o.globals=l)}const c=await t(s),{output:a}=await c.generate(o);return a[0].code},pt=async({files:e,rollup:t,enableSourcemap:n})=>({...e,"bundle.js":await dt({files:e,rollup:t,enableSourcemap:n}),"index.html":lt(e)}),mt=e=>{const t=[],n=/<script\b([^>]*)>[\s\S]*?<\/script>/gi;let r;for(;(r=n.exec(e))!==null;){const s=r[1];if(!/\btype\s*=\s*["']module["']/i.test(s))continue;const o=s.match(/\bsrc\s*=\s*["']([^"']+)["']/i);o&&t.push(o[1])}return t},ht=async({entryPoint:e,files:t,rollup:n,enableSourcemap:r=!0})=>{const s={input:`./${e}`,plugins:[J(t),O()],external:c=>t[c]?!1:!c.startsWith("./"),onwarn(c,a){a(c)}},o=await n(s),{output:i}=await o.generate({format:"es",sourcemap:r});return i[0].code},I=(e,t)=>new RegExp(`<${t}\\b`,"i").test(e)&&new RegExp(`</${t}>`,"i").test(e),ft=e=>{const t=e.trim();return I(t,"html")&&I(t,"head")&&I(t,"body")?t:`<html><head></head><body>${t}</body></html>`},wt=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),vt=(e,t,n)=>e.replace(new RegExp(t,"i"),`${n}${t}`),gt=e=>{const t=N(e);if(Object.keys(t).length===0)return null;const n=R(e),r={};for(const[s,o]of Object.entries(t))r[s]=T({name:s,version:o},n);return JSON.stringify({imports:r},null,2)},xt=(e,t)=>{if(!e["index.html"])return"";let n=ft(e["index.html"]);t.forEach((s,o)=>{const i=new RegExp(`<script\\b[^>]*\\bsrc=["']${wt(o)}["'][^>]*>[^<]*<\/script>`,"gi");n=n.replace(i,`<script type="module">
|
209
|
-
${s}
|
210
|
-
<\/script>`)});const r=gt(e);if(r&&!/<script\b[^>]*type=["']importmap["'][^>]*>/i.test(n)){const o=`<script type="importmap">
|
211
|
-
${r}
|
212
|
-
<\/script>
|
213
|
-
`;n=vt(n,"</head>",o)}return/^\s*<!DOCTYPE/i.test(n)?n:`<!DOCTYPE html>${n}`},bt=async({files:e,rollup:t,enableSourcemap:n=!0})=>{const r=e["index.html"]||"",s=mt(r);if(s.length===0)return e;const o=new Map;for(const c of s){const a=await ht({entryPoint:c,files:e,rollup:t,enableSourcemap:n});o.set(c,a)}const i=xt(e,o);return{...e,"index.html":i}},yt=async({files:e,rollup:t,enableSourcemap:n=!0,vizCache:r,vizId:s,slugCache:o,getSvelteCompiler:i})=>{var a;if(!e&&!r)throw new Error("Either files or vizCache is required");if(!e&&r&&!s)throw new Error("vizId is required when using vizCache");if(!e&&r&&s&&(e=f.vizFilesToFileCollection((a=await r.get(s))==null?void 0:a.files)),!e)throw new Error("Upable to extract viz files");const c=ot(e);if(c==="v1")return{html:S.magicSandbox(e)};if(c==="v2"){if(!t)throw new Error("Rollup is required for v2 runtime");return{html:S.magicSandbox(await pt({files:e,rollup:t,enableSourcemap:n}))}}if(c==="v3"){if(!t)throw new Error("Rollup is required for v3 runtime");if(!r&&!s){const l=L(e);s=l.id,r=U({initialContents:[l],handleCacheMiss:async()=>{throw new Error("Cache miss handler not implemented")}})}if(!r)throw new Error("vizCache is required for v3 runtime");if(!s)throw new Error("vizId is required for v3 runtime if vizCache is provided");return await W({files:e,rollup:t,vizCache:r,vizId:s,slugCache:o,getSvelteCompiler:i})}if(c==="v4"){if(!t)throw new Error("Rollup is required for v4 runtime");return{html:S.magicSandbox(await bt({files:e,rollup:t,enableSourcemap:n}))}}throw new Error(`Unsupported runtime version: ${c}`)};exports.build=yt;exports.computeBundleJSV3=V;exports.createSlugCache=st;exports.createVizCache=U;exports.createVizContent=L;exports.generateRequestId=A;exports.svelteCompilerUrl=tt;exports.v3Build=W;
|
214
|
-
//# sourceMappingURL=build-BAZMN_vU.cjs.map
|