@vizhub/runtime 0.6.0 → 0.7.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/dist/index.js CHANGED
@@ -1,194 +1,212 @@
1
- import { g as D } from "./build-DU4cyBtp.js";
2
- import { b as W, c as x, d as G, a as _, e as A, s as F, v as J } from "./build-DU4cyBtp.js";
3
- const q = (t) => async (n) => {
1
+ import { g as D } from "./build-NWFvyYnC.js";
2
+ import { b as x, c as G, d as _, a as A, e as F, s as J, v as T } from "./build-NWFvyYnC.js";
3
+ const S = (n) => async (t) => {
4
4
  const i = D();
5
- return new Promise((d) => {
6
- const l = (u) => {
7
- u.data.type === "invalidateVizCacheResponse" && u.data.requestId === i && (t.removeEventListener(
5
+ return new Promise((r) => {
6
+ const u = (l) => {
7
+ l.data.type === "invalidateVizCacheResponse" && l.data.requestId === i && (n.removeEventListener(
8
8
  "message",
9
- l
10
- ), d());
9
+ u
10
+ ), r());
11
11
  };
12
- t.addEventListener(
12
+ n.addEventListener(
13
13
  "message",
14
- l
15
- ), t.postMessage({
14
+ u
15
+ ), n.postMessage({
16
16
  type: "invalidateVizCacheRequest",
17
- changedVizIds: n,
17
+ changedVizIds: t,
18
18
  requestId: i
19
19
  });
20
20
  });
21
- }, S = ({
22
- worker: t,
23
- setBuildErrorMessage: n
21
+ }, b = ({
22
+ worker: n,
23
+ setBuildErrorMessage: t
24
24
  }) => ({
25
25
  files: i,
26
- enableSourcemap: d
26
+ enableSourcemap: r,
27
+ vizId: u
27
28
  }) => {
28
29
  const l = D();
29
30
  return new Promise(
30
- (u) => {
31
- const s = (m) => {
32
- const p = m.data;
33
- if (p.type === "buildResponse") {
34
- t.removeEventListener(
31
+ (s) => {
32
+ const c = (v) => {
33
+ const d = v.data;
34
+ if (d.type === "buildResponse" && d.requestId === l) {
35
+ n.removeEventListener(
35
36
  "message",
36
- s
37
+ c
37
38
  );
38
- const r = p.buildResult, f = p.error;
39
- f ? n == null || n(f) : n == null || n(null), u(r);
39
+ const E = d.buildResult, f = d.error;
40
+ f ? t == null || t(f) : t == null || t(null), s(E);
40
41
  }
41
42
  };
42
- t.addEventListener("message", s);
43
- const c = {
43
+ n.addEventListener("message", c);
44
+ const h = {
44
45
  type: "buildRequest",
45
46
  files: i,
46
- enableSourcemap: d,
47
- requestId: l
47
+ enableSourcemap: r,
48
+ requestId: l,
49
+ vizId: u
48
50
  };
49
- t.postMessage(c);
51
+ n.postMessage(h);
50
52
  }
51
53
  );
52
- }, E = "IDLE", I = "ENQUEUED", L = "PENDING_CLEAN", R = "PENDING_DIRTY", z = ({
53
- iframe: t,
54
- worker: n,
54
+ }, R = "IDLE", y = "ENQUEUED", L = "PENDING_CLEAN", g = "PENDING_DIRTY", P = ({
55
+ iframe: n,
56
+ worker: t,
55
57
  setBuildErrorMessage: i,
56
- getLatestContent: d,
57
- resolveSlugKey: l,
58
- writeFile: u
58
+ getLatestContent: r,
59
+ resolveSlugKey: u,
60
+ writeFile: l
59
61
  }) => {
60
- let s = E, c = null;
61
- const m = S({
62
- worker: n,
62
+ let s = R, c = null;
63
+ const h = b({
64
+ worker: t,
63
65
  setBuildErrorMessage: i
64
- }), p = ({
66
+ }), v = ({
65
67
  data: o
66
68
  }) => {
67
- if (o.type === "contentRequest" && d) {
69
+ if (o.type === "contentRequest" && r) {
68
70
  const { vizId: e } = o;
69
- d(e).then((a) => {
70
- n.postMessage({
71
+ r(e).then((a) => {
72
+ t.postMessage({
71
73
  type: "contentResponse",
72
74
  vizId: e,
73
75
  content: a
74
76
  });
75
77
  });
76
- } else if (o.type === "resolveSlugRequest" && l) {
78
+ } else if (o.type === "resolveSlugRequest") {
77
79
  const { slugKey: e, requestId: a } = o;
78
- l(e).then((v) => {
79
- n.postMessage({
80
+ if (u)
81
+ u(e).then(
82
+ (p) => {
83
+ const m = {
84
+ type: "resolveSlugResponse",
85
+ vizId: p,
86
+ requestId: a
87
+ };
88
+ t.postMessage(m);
89
+ }
90
+ );
91
+ else {
92
+ const p = {
80
93
  type: "resolveSlugResponse",
81
- slugKey: e,
82
- vizId: v,
94
+ vizId: null,
83
95
  requestId: a
84
- });
85
- });
96
+ };
97
+ t.postMessage(p);
98
+ }
86
99
  }
87
100
  };
88
- n.addEventListener("message", p);
89
- const r = (o) => {
101
+ t.addEventListener("message", v);
102
+ const d = (o) => {
90
103
  const e = o.data;
91
- (e.type === "runDone" || e.type === "runError") && e.type === "runError" && i && i(e.error.message), e.type === "writeFile" && u && e.fileName && e.content && u(e.fileName, e.content);
104
+ (e.type === "runDone" || e.type === "runError") && e.type === "runError" && i && i(e.error.message), e.type === "writeFile" && l && e.fileName && e.content && l(e.fileName, e.content);
92
105
  };
93
- window.addEventListener("message", r);
94
- const f = () => {
95
- n.removeEventListener("message", p), window.removeEventListener("message", r);
96
- }, w = async ({
106
+ window.addEventListener("message", d);
107
+ const E = () => {
108
+ t.removeEventListener("message", v), window.removeEventListener("message", d);
109
+ }, f = async ({
97
110
  files: o,
98
111
  enableHotReloading: e = !1,
99
- enableSourcemap: a = !1
112
+ enableSourcemap: a = !1,
113
+ vizId: p
100
114
  }) => {
101
115
  s = L;
102
- const v = await m({
116
+ const m = await h({
103
117
  files: o,
104
- enableSourcemap: a
118
+ enableSourcemap: a,
119
+ vizId: p
105
120
  });
106
- if (!v)
107
- return;
108
- const { html: C, js: y, css: N } = v;
109
- if (console.clear(), e) {
110
- if (N) {
111
- const h = {
112
- type: "runCSS",
113
- css: N
114
- };
115
- if (!t.contentWindow)
116
- throw new Error(
117
- "iframe.contentWindow is null - this should never happen"
121
+ if (m) {
122
+ const { html: C, js: N, css: w } = m;
123
+ if (console.clear(), e) {
124
+ if (w) {
125
+ const I = {
126
+ type: "runCSS",
127
+ css: w
128
+ };
129
+ if (!n.contentWindow)
130
+ throw new Error(
131
+ "iframe.contentWindow is null - this should never happen"
132
+ );
133
+ n.contentWindow.postMessage(
134
+ I,
135
+ window.location.origin
118
136
  );
119
- t.contentWindow.postMessage(
120
- h,
121
- window.location.origin
122
- );
123
- }
124
- if (y) {
125
- const h = {
126
- type: "runJS",
127
- js: y
128
- };
129
- if (!t.contentWindow)
130
- throw new Error(
131
- "iframe.contentWindow is null - this should never happen"
137
+ }
138
+ if (N) {
139
+ const I = {
140
+ type: "runJS",
141
+ js: N
142
+ };
143
+ if (!n.contentWindow)
144
+ throw new Error(
145
+ "iframe.contentWindow is null - this should never happen"
146
+ );
147
+ n.contentWindow.postMessage(
148
+ I,
149
+ window.location.origin
132
150
  );
133
- t.contentWindow.postMessage(
134
- h,
135
- window.location.origin
136
- );
137
- }
138
- } else
139
- t.srcdoc = C || "";
140
- s === R ? (requestAnimationFrame(() => {
151
+ }
152
+ } else
153
+ n.srcdoc = C || "";
154
+ }
155
+ s === g ? (requestAnimationFrame(() => {
141
156
  if (!c)
142
157
  throw new Error(
143
158
  "latestFiles is not defined and state is PENDING_DIRTY - this should never happen"
144
159
  );
145
- w({
160
+ f({
146
161
  files: c,
147
162
  enableHotReloading: e,
148
- enableSourcemap: a
163
+ enableSourcemap: a,
164
+ vizId: p
149
165
  });
150
- }), s = I) : s = E;
151
- }, g = ({
166
+ }), s = y) : s = R;
167
+ }, q = ({
152
168
  files: o,
153
169
  enableHotReloading: e = !1,
154
- enableSourcemap: a = !1
170
+ enableSourcemap: a = !1,
171
+ vizId: p = void 0
155
172
  }) => {
156
- if (c = null, s === E)
157
- s = I, w({
173
+ if (c = null, s === R)
174
+ s = y, f({
158
175
  files: o,
159
176
  enableHotReloading: e,
160
- enableSourcemap: a
177
+ enableSourcemap: a,
178
+ vizId: p
161
179
  });
162
180
  else if (s === L)
163
- c = o, s = R;
164
- else if (s === R)
181
+ c = o, s = g;
182
+ else if (s === g)
165
183
  c = o;
166
- else if (s === I)
184
+ else if (s === y)
167
185
  c = o;
168
186
  else
169
187
  throw new Error(`Unexpected state: ${s}`);
170
188
  };
171
189
  return {
172
- invalidateVizCache: q(n),
173
- run: g,
174
- cleanup: f
190
+ invalidateVizCache: S(t),
191
+ run: q,
192
+ cleanup: E
175
193
  };
176
- }, P = ({
177
- rawMessage: t,
178
- vizId: n
194
+ }, V = ({
195
+ rawMessage: n,
196
+ vizId: t
179
197
  }) => {
180
- const i = new RegExp(n, "g");
181
- return t == null ? void 0 : t.replace(i, ".");
198
+ const i = new RegExp(t, "g");
199
+ return n == null ? void 0 : n.replace(i, ".");
182
200
  };
183
201
  export {
184
- W as build,
185
- P as cleanRollupErrorMessage,
186
- x as computeBundleJSV3,
187
- z as createRuntime,
188
- G as createSlugCache,
189
- _ as createVizCache,
190
- A as createVizContent,
191
- F as svelteCompilerUrl,
192
- J as v3Build
202
+ x as build,
203
+ V as cleanRollupErrorMessage,
204
+ G as computeBundleJSV3,
205
+ P as createRuntime,
206
+ _ as createSlugCache,
207
+ A as createVizCache,
208
+ F as createVizContent,
209
+ J as svelteCompilerUrl,
210
+ T as v3Build
193
211
  };
194
212
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/orchestration/setupInvalidateVizCache.ts","../src/orchestration/setupBuild.ts","../src/orchestration/createRuntime.ts","../src/v3/cleanRollupErrorMessage.ts"],"sourcesContent":["import { VizId } from \"@vizhub/viz-types\";\nimport { generateRequestId } from \"./generateRequestId\";\n\nexport const setupInvalidateVizCache =\n (worker: Worker) =>\n async (changedVizIds: Array<VizId>): Promise<void> => {\n const requestId = generateRequestId();\n return new Promise<void>((resolve) => {\n const invalidateListener = (e: MessageEvent) => {\n if (\n e.data.type === \"invalidateVizCacheResponse\" &&\n e.data.requestId === requestId\n ) {\n worker.removeEventListener(\n \"message\",\n invalidateListener,\n );\n resolve();\n }\n };\n worker.addEventListener(\n \"message\",\n invalidateListener,\n );\n\n worker.postMessage({\n type: \"invalidateVizCacheRequest\",\n changedVizIds,\n requestId,\n });\n });\n };\n","import { FileCollection } from \"@vizhub/viz-types\";\nimport { generateRequestId } from \"./generateRequestId\";\nimport { BuildWorkerMessage } from \"./types\";\nimport { BuildResult } from \"../build/types\";\n\nexport const setupBuild =\n ({\n worker,\n setBuildErrorMessage,\n }: {\n worker: Worker;\n setBuildErrorMessage?: (error: string | null) => void;\n }) =>\n ({\n files,\n enableSourcemap,\n }: {\n files: FileCollection;\n enableSourcemap: boolean;\n }): Promise<BuildResult | undefined> => {\n const requestId = generateRequestId();\n return new Promise<BuildResult | undefined>(\n (resolve) => {\n const buildListener = (e: MessageEvent) => {\n const data: BuildWorkerMessage = e.data;\n if (data.type === \"buildResponse\") {\n worker.removeEventListener(\n \"message\",\n buildListener,\n );\n\n const buildResult: BuildResult | undefined =\n data.buildResult;\n const error: string | undefined = data.error;\n\n if (error) {\n setBuildErrorMessage?.(error);\n } else {\n setBuildErrorMessage?.(null);\n }\n\n resolve(buildResult);\n }\n };\n\n worker.addEventListener(\"message\", buildListener);\n\n const message: BuildWorkerMessage = {\n type: \"buildRequest\",\n files,\n enableSourcemap,\n requestId,\n };\n worker.postMessage(message);\n },\n );\n };\n","import {\n FileCollection,\n VizContent,\n VizId,\n} from \"@vizhub/viz-types\";\n\nimport { setupInvalidateVizCache } from \"./setupInvalidateVizCache\";\nimport { setupBuild } from \"./setupBuild\";\nimport {\n BuildWorkerMessage,\n VizHubRuntime,\n WindowMessage,\n} from \"./types\";\n\n// Flag for debugging.\nconst DEBUG = false;\n\n// State constants:\n\n// Nothing happening.\nconst IDLE = \"IDLE\";\n\n// An update has been enqueued\n// via requestAnimationFrame.\nconst ENQUEUED = \"ENQUEUED\";\n\n// An update (build and run) is pending,\n// and the files have not changed.\nconst PENDING_CLEAN = \"PENDING_CLEAN\";\n\n// An update (build and run) is pending,\n// and the files have changed\n// while this run is taking place.\nconst PENDING_DIRTY = \"PENDING_DIRTY\";\n\n// Valid State Transitions:\n//\n// * IDLE --> ENQUEUED\n// When the system is idle and files are changed.\n//\n// * ENQUEUED --> PENDING_CLEAN\n// When the pending changes run.\n//\n// * PENDING_CLEAN --> IDLE\n// When the pending update finishes running\n// and files were not changed in the mean time.\n//\n// * PENDING_CLEAN --> PENDING_DIRTY\n// When files are changed while an update is pending.\n//\n// * PENDING_DIRTY --> ENQUEUED\n// When the pending update finishes running\n// and files were changed in the mean time.\n//\n// When a build error happens, the state is set to IDLE.\n// This is to prevent a build error from causing\n// the whole system to stop working.\n\n// Creates an instance of the VizHub Runtime Environment.\n// This is the main entry point for the runtime, for use\n// by front end applications.\n// It sets up the iframe and worker, and handles messages\n// between them.\n// For server-side rendering where only a build is required,\n// just use the build function directly.\nexport const createRuntime = ({\n iframe,\n worker,\n setBuildErrorMessage,\n getLatestContent,\n resolveSlugKey,\n writeFile,\n}: {\n iframe: HTMLIFrameElement;\n worker: Worker;\n setBuildErrorMessage?: (error: string | null) => void;\n getLatestContent?: (vizId: VizId) => Promise<VizContent>;\n resolveSlugKey?: (slugKey: string) => Promise<VizId>;\n writeFile?: (fileName: string, content: string) => void;\n}): VizHubRuntime => {\n // Track the current state of the runtime\n let state:\n | typeof IDLE\n | typeof ENQUEUED\n | typeof PENDING_CLEAN\n | typeof PENDING_DIRTY = IDLE;\n\n // When a run is requested while the state is PENDING_CLEAN\n // or PENDING_DIRTY, we need to wait for the pending build to finish,\n // so until the build finishes, we use `latestFiles` to stash the latest files.\n let latestFiles: FileCollection | null = null;\n\n const build = setupBuild({\n worker,\n setBuildErrorMessage,\n });\n\n // Pending promise resolvers\n let pendingRunPromise: (() => void) | null = null;\n\n // This runs when the build worker sends a message.\n const workerListener: (e: MessageEvent) => void = ({\n data,\n }: {\n data: BuildWorkerMessage;\n }) => {\n if (\n data.type === \"contentRequest\" &&\n getLatestContent\n ) {\n const { vizId } = data;\n\n getLatestContent(vizId).then((content) => {\n worker.postMessage({\n type: \"contentResponse\",\n vizId,\n content,\n });\n });\n } else if (\n data.type === \"resolveSlugRequest\" &&\n resolveSlugKey\n ) {\n const { slugKey, requestId } = data;\n\n resolveSlugKey(slugKey).then((vizId) => {\n worker.postMessage({\n type: \"resolveSlugResponse\",\n slugKey,\n vizId,\n requestId,\n });\n });\n }\n };\n\n worker.addEventListener(\"message\", workerListener);\n\n // Handle messages from the iframe\n const windowListener = (event: MessageEvent) => {\n const data = event.data;\n\n if (\n data.type === \"runDone\" ||\n data.type === \"runError\"\n ) {\n if (pendingRunPromise) {\n pendingRunPromise();\n pendingRunPromise = null;\n }\n\n if (data.type === \"runError\") {\n setBuildErrorMessage &&\n setBuildErrorMessage(data.error.message);\n }\n }\n\n if (data.type === \"writeFile\" && writeFile) {\n if (data.fileName && data.content) {\n writeFile(data.fileName, data.content);\n }\n }\n };\n\n // This runs when the IFrame sends a message.\n window.addEventListener(\"message\", windowListener);\n\n const cleanup = () => {\n worker.removeEventListener(\"message\", workerListener);\n window.removeEventListener(\"message\", windowListener);\n };\n\n const update = async ({\n files,\n enableHotReloading = false,\n enableSourcemap = false,\n }: {\n files: FileCollection;\n enableHotReloading?: boolean;\n enableSourcemap?: boolean;\n }) => {\n state = PENDING_CLEAN;\n\n DEBUG && console.log(\"[runtime] update: before build\");\n\n // Build the code\n const buildResult = await build({\n files,\n enableSourcemap,\n });\n\n // In this case, the build failed\n // and in the meantime the callback `setBuildErrorMessage`\n // was called.\n if (!buildResult) {\n DEBUG &&\n console.log(\"[runtime] update: build failed\");\n return;\n }\n\n DEBUG && console.log(\"[runtime] update: after build\");\n\n const { html, js, css } = buildResult;\n\n DEBUG &&\n console.log(\n \"[runtime] enableHotReloading\",\n enableHotReloading,\n );\n\n DEBUG &&\n console.log(\n \"[runtime] html: \",\n html?.substring(0, 200),\n );\n\n DEBUG &&\n console.log(\"[runtime] js: \", js?.substring(0, 200));\n\n DEBUG &&\n console.log(\n \"[runtime] css: \",\n css?.substring(0, 200),\n );\n\n // Clear the console before each run.\n console.clear();\n\n // If `enableHotReloading` is true, we also need to\n // check that `js` is defined, since the desired behavior\n // is that only if we are using the v3 runtime, then\n // the hot reloading actually happens, and _only_ the v3 build\n // outputs `js`, so the guard for `js` is really just\n // checking that we are on v3.\n if (enableHotReloading) {\n if (css) {\n const runCSSMessage: WindowMessage = {\n type: \"runCSS\",\n css,\n };\n if (!iframe.contentWindow) {\n throw new Error(\n \"iframe.contentWindow is null - this should never happen\",\n );\n }\n iframe.contentWindow.postMessage(\n runCSSMessage,\n window.location.origin,\n );\n }\n if (js) {\n const runJSMessage: WindowMessage = {\n type: \"runJS\",\n js,\n };\n if (!iframe.contentWindow) {\n throw new Error(\n \"iframe.contentWindow is null - this should never happen\",\n );\n }\n iframe.contentWindow.postMessage(\n runJSMessage,\n window.location.origin,\n );\n }\n } else {\n iframe.srcdoc = html || \"\";\n }\n\n // TypeScript can't comprehend that `state`\n // may change during the await calls above.\n // @ts-ignore\n if (state === PENDING_DIRTY) {\n requestAnimationFrame(() => {\n if (!latestFiles) {\n throw new Error(\n \"latestFiles is not defined and state is PENDING_DIRTY - this should never happen\",\n );\n }\n update({\n files: latestFiles,\n enableHotReloading,\n enableSourcemap,\n });\n });\n state = ENQUEUED;\n } else {\n state = IDLE;\n }\n };\n\n // Handle code changes\n\n const run = ({\n files,\n enableHotReloading = false,\n enableSourcemap = false,\n }: {\n files: FileCollection;\n enableHotReloading?: boolean;\n enableSourcemap?: boolean;\n }) => {\n DEBUG && console.log(\"[runtime] run\");\n latestFiles = null;\n if (state === IDLE) {\n DEBUG && console.log(\"[runtime] run: IDLE\");\n state = ENQUEUED;\n update({\n files,\n enableHotReloading,\n enableSourcemap,\n });\n } else if (state === PENDING_CLEAN) {\n DEBUG && console.log(\"[runtime] run: PENDING_CLEAN\");\n latestFiles = files;\n state = PENDING_DIRTY;\n } else if (state === PENDING_DIRTY) {\n DEBUG && console.log(\"[runtime] run: PENDING_DIRTY\");\n latestFiles = files;\n } else if (state === ENQUEUED) {\n DEBUG && console.log(\"[runtime] run: ENQUEUED\");\n latestFiles = files;\n } else {\n throw new Error(`Unexpected state: ${state}`);\n }\n };\n\n return {\n invalidateVizCache: setupInvalidateVizCache(worker),\n run,\n cleanup,\n };\n};\n","// We want to remove the vizId from the error message\n// to make it more user-friendly.\n// Example error message before and after:\n// Before: \"7f0b69fcb754479699172d1887817027/index.js (14:8): Expected ';', '}' or <eof>\"\n// After: \"./index.js (14:8): Expected ';', '}' or <eof>\"\nexport const cleanRollupErrorMessage = ({\n rawMessage,\n vizId,\n}: {\n rawMessage: string;\n vizId: string;\n}) => {\n const regex = new RegExp(vizId, \"g\");\n return rawMessage?.replace(regex, \".\");\n};\n"],"names":["setupInvalidateVizCache","worker","changedVizIds","requestId","generateRequestId","resolve","invalidateListener","e","setupBuild","setBuildErrorMessage","files","enableSourcemap","buildListener","data","buildResult","error","message","IDLE","ENQUEUED","PENDING_CLEAN","PENDING_DIRTY","createRuntime","iframe","getLatestContent","resolveSlugKey","writeFile","state","latestFiles","build","workerListener","vizId","content","slugKey","windowListener","event","cleanup","update","enableHotReloading","html","js","css","runCSSMessage","runJSMessage","run","cleanRollupErrorMessage","rawMessage","regex"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/orchestration/setupInvalidateVizCache.ts","../src/orchestration/setupBuild.ts","../src/orchestration/createRuntime.ts","../src/v3/cleanRollupErrorMessage.ts"],"sourcesContent":["import { VizId } from \"@vizhub/viz-types\";\nimport { generateRequestId } from \"./generateRequestId\";\n\nexport const setupInvalidateVizCache =\n (worker: Worker) =>\n async (changedVizIds: Array<VizId>): Promise<void> => {\n const requestId = generateRequestId();\n return new Promise<void>((resolve) => {\n const invalidateListener = (e: MessageEvent) => {\n if (\n e.data.type === \"invalidateVizCacheResponse\" &&\n e.data.requestId === requestId\n ) {\n worker.removeEventListener(\n \"message\",\n invalidateListener,\n );\n resolve();\n }\n };\n worker.addEventListener(\n \"message\",\n invalidateListener,\n );\n\n worker.postMessage({\n type: \"invalidateVizCacheRequest\",\n changedVizIds,\n requestId,\n });\n });\n };\n","import { FileCollection, VizId } from \"@vizhub/viz-types\";\nimport { generateRequestId } from \"./generateRequestId\";\nimport { BuildWorkerMessage } from \"./types\";\nimport { BuildResult } from \"../build/types\";\n\nexport const setupBuild =\n ({\n worker,\n setBuildErrorMessage,\n }: {\n worker: Worker;\n setBuildErrorMessage?: (error: string | null) => void;\n }) =>\n ({\n files,\n enableSourcemap,\n vizId,\n }: {\n files: FileCollection;\n enableSourcemap: boolean;\n vizId?: VizId;\n }): Promise<BuildResult | undefined> => {\n const requestId = generateRequestId();\n return new Promise<BuildResult | undefined>(\n (resolve) => {\n const buildListener = (e: MessageEvent) => {\n const data: BuildWorkerMessage = e.data;\n if (\n data.type === \"buildResponse\" &&\n data.requestId === requestId\n ) {\n worker.removeEventListener(\n \"message\",\n buildListener,\n );\n\n const buildResult: BuildResult | undefined =\n data.buildResult;\n const error: string | undefined = data.error;\n\n if (error) {\n setBuildErrorMessage?.(error);\n } else {\n setBuildErrorMessage?.(null);\n }\n\n resolve(buildResult);\n }\n };\n\n worker.addEventListener(\"message\", buildListener);\n\n const message: BuildWorkerMessage = {\n type: \"buildRequest\",\n files,\n enableSourcemap,\n requestId,\n vizId,\n };\n worker.postMessage(message);\n },\n );\n };\n","import {\n FileCollection,\n VizContent,\n VizId,\n} from \"@vizhub/viz-types\";\n\nimport { setupInvalidateVizCache } from \"./setupInvalidateVizCache\";\nimport { setupBuild } from \"./setupBuild\";\nimport {\n BuildWorkerMessage,\n VizHubRuntime,\n WindowMessage,\n} from \"./types\";\n\n// Flag for debugging.\nconst DEBUG = false;\n\n// State constants:\n\n// Nothing happening.\nconst IDLE = \"IDLE\";\n\n// An update has been enqueued\n// via requestAnimationFrame.\nconst ENQUEUED = \"ENQUEUED\";\n\n// An update (build and run) is pending,\n// and the files have not changed.\nconst PENDING_CLEAN = \"PENDING_CLEAN\";\n\n// An update (build and run) is pending,\n// and the files have changed\n// while this run is taking place.\nconst PENDING_DIRTY = \"PENDING_DIRTY\";\n\n// Valid State Transitions:\n//\n// * IDLE --> ENQUEUED\n// When the system is idle and files are changed.\n//\n// * ENQUEUED --> PENDING_CLEAN\n// When the pending changes run.\n//\n// * PENDING_CLEAN --> IDLE\n// When the pending update finishes running\n// and files were not changed in the mean time.\n//\n// * PENDING_CLEAN --> PENDING_DIRTY\n// When files are changed while an update is pending.\n//\n// * PENDING_DIRTY --> ENQUEUED\n// When the pending update finishes running\n// and files were changed in the mean time.\n//\n// When a build error happens, the state is set to IDLE.\n// This is to prevent a build error from causing\n// the whole system to stop working.\n\n// Creates an instance of the VizHub Runtime Environment.\n// This is the main entry point for the runtime, for use\n// by front end applications.\n// It sets up the iframe and worker, and handles messages\n// between them.\n// For server-side rendering where only a build is required,\n// just use the build function directly.\nexport const createRuntime = ({\n iframe,\n worker,\n setBuildErrorMessage,\n getLatestContent,\n resolveSlugKey,\n writeFile,\n}: {\n iframe: HTMLIFrameElement;\n worker: Worker;\n setBuildErrorMessage?: (error: string | null) => void;\n getLatestContent?: (\n vizId: VizId,\n ) => Promise<VizContent | null>;\n resolveSlugKey?: (\n slugKey: string,\n ) => Promise<VizId | null>;\n writeFile?: (fileName: string, content: string) => void;\n}): VizHubRuntime => {\n // Track the current state of the runtime\n let state:\n | typeof IDLE\n | typeof ENQUEUED\n | typeof PENDING_CLEAN\n | typeof PENDING_DIRTY = IDLE;\n\n // When a run is requested while the state is PENDING_CLEAN\n // or PENDING_DIRTY, we need to wait for the pending build to finish,\n // so until the build finishes, we use `latestFiles` to stash the latest files.\n let latestFiles: FileCollection | null = null;\n\n const build = setupBuild({\n worker,\n setBuildErrorMessage,\n });\n\n // Pending promise resolvers\n let pendingRunPromise: (() => void) | null = null;\n\n // This runs when the build worker sends a message.\n const workerListener: (e: MessageEvent) => void = ({\n data,\n }: {\n data: BuildWorkerMessage;\n }) => {\n if (\n data.type === \"contentRequest\" &&\n getLatestContent\n ) {\n const { vizId } = data;\n\n getLatestContent(vizId).then((content) => {\n worker.postMessage({\n type: \"contentResponse\",\n vizId,\n content,\n });\n });\n } else if (data.type === \"resolveSlugRequest\") {\n DEBUG &&\n console.log(\n \"[worker] resolveSlugRequest\",\n JSON.stringify(data, null, 2),\n );\n const { slugKey, requestId } = data;\n\n if (resolveSlugKey) {\n DEBUG &&\n console.log(\n \"[worker] resolveSlugRequest: resolving slug key\",\n slugKey,\n );\n resolveSlugKey(slugKey).then(\n (vizId: VizId | null) => {\n DEBUG &&\n console.log(\n \"[worker] resolveSlugRequest: resolved slug key\",\n slugKey,\n \"to vizId\",\n vizId,\n );\n const message: BuildWorkerMessage = {\n type: \"resolveSlugResponse\",\n vizId,\n requestId,\n };\n worker.postMessage(message);\n },\n );\n } else {\n DEBUG &&\n console.log(\n \"[worker] resolveSlugRequest: no slug resolver, returning null\",\n JSON.stringify(data, null, 2),\n );\n // If we don't have a slug resolver, we just\n // send back the slug key as the vizId.\n const message: BuildWorkerMessage = {\n type: \"resolveSlugResponse\",\n vizId: null,\n requestId,\n };\n worker.postMessage(message);\n }\n }\n };\n\n worker.addEventListener(\"message\", workerListener);\n\n // Handle messages from the iframe\n const windowListener = (event: MessageEvent) => {\n const data = event.data;\n\n if (\n data.type === \"runDone\" ||\n data.type === \"runError\"\n ) {\n if (pendingRunPromise) {\n pendingRunPromise();\n pendingRunPromise = null;\n }\n\n if (data.type === \"runError\") {\n setBuildErrorMessage &&\n setBuildErrorMessage(data.error.message);\n }\n }\n\n if (data.type === \"writeFile\" && writeFile) {\n if (data.fileName && data.content) {\n writeFile(data.fileName, data.content);\n }\n }\n };\n\n // This runs when the IFrame sends a message.\n window.addEventListener(\"message\", windowListener);\n\n const cleanup = () => {\n worker.removeEventListener(\"message\", workerListener);\n window.removeEventListener(\"message\", windowListener);\n };\n\n const update = async ({\n files,\n enableHotReloading = false,\n enableSourcemap = false,\n vizId,\n }: {\n files: FileCollection;\n enableHotReloading?: boolean;\n enableSourcemap?: boolean;\n vizId?: VizId;\n }) => {\n state = PENDING_CLEAN;\n\n DEBUG && console.log(\"[runtime] update: before build\");\n\n // Build the code\n const buildResult = await build({\n files,\n enableSourcemap,\n vizId,\n });\n\n // In this case, the build failed\n // and in the meantime the callback `setBuildErrorMessage`\n // was called.\n if (!buildResult) {\n DEBUG &&\n console.log(\"[runtime] update: build failed\");\n }\n\n DEBUG && console.log(\"[runtime] update: after build\");\n\n if (buildResult) {\n const { html, js, css } = buildResult;\n\n DEBUG &&\n console.log(\n \"[runtime] enableHotReloading\",\n enableHotReloading,\n );\n\n DEBUG &&\n console.log(\n \"[runtime] html: \",\n html?.substring(0, 200),\n );\n\n DEBUG &&\n console.log(\n \"[runtime] js: \",\n js?.substring(0, 200),\n );\n\n DEBUG &&\n console.log(\n \"[runtime] css: \",\n css?.substring(0, 200),\n );\n\n // Clear the console before each run.\n !DEBUG && console.clear();\n\n // If `enableHotReloading` is true, we also need to\n // check that `js` is defined, since the desired behavior\n // is that only if we are using the v3 runtime, then\n // the hot reloading actually happens, and _only_ the v3 build\n // outputs `js`, so the guard for `js` is really just\n // checking that we are on v3.\n if (enableHotReloading) {\n if (css) {\n const runCSSMessage: WindowMessage = {\n type: \"runCSS\",\n css,\n };\n if (!iframe.contentWindow) {\n throw new Error(\n \"iframe.contentWindow is null - this should never happen\",\n );\n }\n iframe.contentWindow.postMessage(\n runCSSMessage,\n window.location.origin,\n );\n }\n if (js) {\n const runJSMessage: WindowMessage = {\n type: \"runJS\",\n js,\n };\n if (!iframe.contentWindow) {\n throw new Error(\n \"iframe.contentWindow is null - this should never happen\",\n );\n }\n iframe.contentWindow.postMessage(\n runJSMessage,\n window.location.origin,\n );\n }\n } else {\n iframe.srcdoc = html || \"\";\n }\n }\n\n // TypeScript can't comprehend that `state`\n // may change during the await calls above.\n // @ts-ignore\n if (state === PENDING_DIRTY) {\n requestAnimationFrame(() => {\n if (!latestFiles) {\n throw new Error(\n \"latestFiles is not defined and state is PENDING_DIRTY - this should never happen\",\n );\n }\n update({\n files: latestFiles,\n enableHotReloading,\n enableSourcemap,\n vizId,\n });\n });\n state = ENQUEUED;\n } else {\n state = IDLE;\n }\n };\n\n // Handle code changes\n\n const run = ({\n files,\n enableHotReloading = false,\n enableSourcemap = false,\n vizId = undefined,\n }: {\n files: FileCollection;\n enableHotReloading?: boolean;\n enableSourcemap?: boolean;\n vizId?: VizId;\n }) => {\n DEBUG && console.log(\"[runtime] run\");\n latestFiles = null;\n if (state === IDLE) {\n DEBUG && console.log(\"[runtime] run: IDLE\");\n state = ENQUEUED;\n update({\n files,\n enableHotReloading,\n enableSourcemap,\n vizId,\n });\n } else if (state === PENDING_CLEAN) {\n DEBUG && console.log(\"[runtime] run: PENDING_CLEAN\");\n latestFiles = files;\n state = PENDING_DIRTY;\n } else if (state === PENDING_DIRTY) {\n DEBUG && console.log(\"[runtime] run: PENDING_DIRTY\");\n latestFiles = files;\n } else if (state === ENQUEUED) {\n DEBUG && console.log(\"[runtime] run: ENQUEUED\");\n latestFiles = files;\n } else {\n throw new Error(`Unexpected state: ${state}`);\n }\n };\n\n return {\n invalidateVizCache: setupInvalidateVizCache(worker),\n run,\n cleanup,\n };\n};\n","// We want to remove the vizId from the error message\n// to make it more user-friendly.\n// Example error message before and after:\n// Before: \"7f0b69fcb754479699172d1887817027/index.js (14:8): Expected ';', '}' or <eof>\"\n// After: \"./index.js (14:8): Expected ';', '}' or <eof>\"\nexport const cleanRollupErrorMessage = ({\n rawMessage,\n vizId,\n}: {\n rawMessage: string;\n vizId: string;\n}) => {\n const regex = new RegExp(vizId, \"g\");\n return rawMessage?.replace(regex, \".\");\n};\n"],"names":["setupInvalidateVizCache","worker","changedVizIds","requestId","generateRequestId","resolve","invalidateListener","e","setupBuild","setBuildErrorMessage","files","enableSourcemap","vizId","buildListener","data","buildResult","error","message","IDLE","ENQUEUED","PENDING_CLEAN","PENDING_DIRTY","createRuntime","iframe","getLatestContent","resolveSlugKey","writeFile","state","latestFiles","build","workerListener","content","slugKey","windowListener","event","cleanup","update","enableHotReloading","html","js","css","runCSSMessage","runJSMessage","run","cleanRollupErrorMessage","rawMessage","regex"],"mappings":"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"}
@@ -4,8 +4,8 @@ export declare const createRuntime: ({ iframe, worker, setBuildErrorMessage, get
4
4
  iframe: HTMLIFrameElement;
5
5
  worker: Worker;
6
6
  setBuildErrorMessage?: (error: string | null) => void;
7
- getLatestContent?: (vizId: VizId) => Promise<VizContent>;
8
- resolveSlugKey?: (slugKey: string) => Promise<VizId>;
7
+ getLatestContent?: (vizId: VizId) => Promise<VizContent | null>;
8
+ resolveSlugKey?: (slugKey: string) => Promise<VizId | null>;
9
9
  writeFile?: (fileName: string, content: string) => void;
10
10
  }) => VizHubRuntime;
11
11
  //# sourceMappingURL=createRuntime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRuntime.d.ts","sourceRoot":"","sources":["../../src/orchestration/createRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,EACN,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAEL,aAAa,EAEd,MAAM,SAAS,CAAC;AAqDjB,eAAO,MAAM,aAAa,GAAI,wFAO3B;IACD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD,KAAG,aA6PH,CAAC"}
1
+ {"version":3,"file":"createRuntime.d.ts","sourceRoot":"","sources":["../../src/orchestration/createRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,EACN,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAEL,aAAa,EAEd,MAAM,SAAS,CAAC;AAqDjB,eAAO,MAAM,aAAa,GAAI,wFAO3B;IACD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAChC,cAAc,CAAC,EAAE,CACf,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD,KAAG,aAwSH,CAAC"}
@@ -1,10 +1,11 @@
1
- import { FileCollection } from "@vizhub/viz-types";
1
+ import { FileCollection, VizId } from "@vizhub/viz-types";
2
2
  import { BuildResult } from "../build/types";
3
3
  export declare const setupBuild: ({ worker, setBuildErrorMessage, }: {
4
4
  worker: Worker;
5
5
  setBuildErrorMessage?: (error: string | null) => void;
6
- }) => ({ files, enableSourcemap, }: {
6
+ }) => ({ files, enableSourcemap, vizId, }: {
7
7
  files: FileCollection;
8
8
  enableSourcemap: boolean;
9
+ vizId?: VizId;
9
10
  }) => Promise<BuildResult | undefined>;
10
11
  //# sourceMappingURL=setupBuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupBuild.d.ts","sourceRoot":"","sources":["../../src/orchestration/setupBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,UAAU,GACpB,mCAGE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD,MACA,6BAGE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAqClC,CAAC"}
1
+ {"version":3,"file":"setupBuild.d.ts","sourceRoot":"","sources":["../../src/orchestration/setupBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,UAAU,GACpB,mCAGE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACvD,MACA,oCAIE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAyClC,CAAC"}
@@ -1,10 +1,11 @@
1
- import { FileCollection } from "@vizhub/viz-types";
1
+ import { FileCollection, VizId } from "@vizhub/viz-types";
2
2
  import { BuildResult } from "../build/types";
3
3
  export type VizHubRuntime = {
4
4
  run: (options: {
5
5
  files: FileCollection;
6
6
  enableHotReloading?: boolean;
7
7
  enableSourcemap?: boolean;
8
+ vizId?: VizId;
8
9
  }) => void;
9
10
  cleanup: () => void;
10
11
  invalidateVizCache: (changedVizIds: Array<string>) => Promise<void>;
@@ -14,6 +15,7 @@ export type BuildWorkerMessage = {
14
15
  files: FileCollection;
15
16
  enableSourcemap: boolean;
16
17
  requestId: string;
18
+ vizId?: VizId;
17
19
  } | {
18
20
  type: "buildResponse";
19
21
  requestId: string;
@@ -34,8 +36,7 @@ export type BuildWorkerMessage = {
34
36
  requestId: string;
35
37
  } | {
36
38
  type: "resolveSlugResponse";
37
- slugKey: string;
38
- vizId: string;
39
+ vizId: VizId | null;
39
40
  requestId: string;
40
41
  } | {
41
42
  type: "invalidateVizCacheRequest";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAE1B,GAAG,EAAE,CAAC,OAAO,EAAE;QAEb,KAAK,EAAE,cAAc,CAAC;QAKtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAG7B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,KAAK,IAAI,CAAC;IAGX,OAAO,EAAE,MAAM,IAAI,CAAC;IAKpB,kBAAkB,EAAE,CAClB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAI1B;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,GAQD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAKD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,4BAA4B,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGN,MAAM,MAAM,aAAa,GAIrB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ,GAKD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,GAKD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG;IAE1B,GAAG,EAAE,CAAC,OAAO,EAAE;QAEb,KAAK,EAAE,cAAc,CAAC;QAKtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAG7B,eAAe,CAAC,EAAE,OAAO,CAAC;QAI1B,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,KAAK,IAAI,CAAC;IAGX,OAAO,EAAE,MAAM,IAAI,CAAC;IAKpB,kBAAkB,EAAE,CAClB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAI1B;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GAQD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAKD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAOD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,2BAA2B,CAAC;IAClC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,4BAA4B,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGN,MAAM,MAAM,aAAa,GAIrB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ,GAKD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,GAKD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GAKD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/orchestration/worker.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,UAAU,YA4KtB,CAAC"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/orchestration/worker.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,UAAU,YA8KtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"testRuntimeWithWorker.d.ts","sourceRoot":"","sources":["../../src/test/testRuntimeWithWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,aAAa,CAAC;KACxB;CACF;AAID,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,cAAc,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,cAAc,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ,iBA6EA"}
1
+ {"version":3,"file":"testRuntimeWithWorker.d.ts","sourceRoot":"","sources":["../../src/test/testRuntimeWithWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,aAAa,CAAC;KACxB;CACF;AAID,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,cAAc,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,cAAc,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ,iBAuFA"}
@@ -1 +1 @@
1
- {"version":3,"file":"computeBundleJSV3.d.ts","sourceRoot":"","sources":["../../src/v3/computeBundleJSV3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAEd,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,iBAAiB,GAAU,oFAQrC;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACnD,KAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAoD9C,CAAC"}
1
+ {"version":3,"file":"computeBundleJSV3.d.ts","sourceRoot":"","sources":["../../src/v3/computeBundleJSV3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAEd,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,iBAAiB,GAAU,oFAQrC;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACnD,KAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA2D9C,CAAC"}
@@ -5,5 +5,5 @@ import { FileCollection, VizContent } from "@vizhub/viz-types";
5
5
  * @param title Optional title for the content
6
6
  * @returns A VizContent object with randomly generated IDs
7
7
  */
8
- export declare const createVizContent: (files: FileCollection, title?: string) => VizContent;
8
+ export declare const createVizContent: (files: FileCollection, title?: string, id?: string) => VizContent;
9
9
  //# sourceMappingURL=createVizContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createVizContent.d.ts","sourceRoot":"","sources":["../../src/v3/createVizContent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,cAAc,EACrB,cAAsC,KACrC,UAyBF,CAAC"}
1
+ {"version":3,"file":"createVizContent.d.ts","sourceRoot":"","sources":["../../src/v3/createVizContent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,UAAU,EACX,MAAM,mBAAmB,CAAC;AAM3B;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,cAAc,EACrB,cAAsC,EACtC,WAAoB,KACnB,UAMF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"v3Build.d.ts","sourceRoot":"","sources":["../../src/v3/v3Build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,OAAO,GAAU,oFAQ3B;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACnD,KAAG,OAAO,CAAC,WAAW,CAuDtB,CAAC"}
1
+ {"version":3,"file":"v3Build.d.ts","sourceRoot":"","sources":["../../src/v3/v3Build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,cAAc,EAEd,KAAK,EACN,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,OAAO,GAAU,oFAQ3B;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACnD,KAAG,OAAO,CAAC,WAAW,CAqEtB,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { InputPluginOption } from "rollup";
2
+ import { FileCollection, VizId } from "@vizhub/viz-types";
2
3
  import type { ResolvedVizFileId } from "./types";
3
4
  import { VizCache } from "./vizCache.js";
4
- export declare const vizLoad: ({ vizCache, trackCSSImport, }: {
5
+ export declare const vizLoad: ({ vizCache, trackCSSImport, vizId, files, }: {
5
6
  vizCache: VizCache;
6
7
  trackCSSImport: (cssFile: ResolvedVizFileId) => void;
8
+ vizId?: VizId;
9
+ files?: FileCollection;
7
10
  }) => InputPluginOption;
8
11
  //# sourceMappingURL=vizLoad.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vizLoad.d.ts","sourceRoot":"","sources":["../../src/v3/vizLoad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,eAAO,MAAM,OAAO,GAAI,+BAGrB;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACtD,KAAG,iBAkDF,CAAC"}
1
+ {"version":3,"file":"vizLoad.d.ts","sourceRoot":"","sources":["../../src/v3/vizLoad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EACL,cAAc,EAEd,KAAK,EACN,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,eAAO,MAAM,OAAO,GAAI,6CAKrB;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,KAAG,iBAgEF,CAAC"}
package/dist/worker.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@rollup/browser");require("@vizhub/viz-utils");require("sucrase");const o=require("./build-DkIslKFi.cjs"),v=()=>{const u=async()=>{const t=await fetch(o.svelteCompilerUrl).then(e=>e.text());return(0,eval)(t),self.svelte.compile},a=new Map,r=new Map,d=o.createVizCache({initialContents:[],handleCacheMiss:async t=>(postMessage({type:"contentRequest",vizId:t}),new Promise(s=>{a.set(t,s)}))}),p=o.createSlugCache({initialMappings:{},handleCacheMiss:async t=>{const e=o.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:c}=e;try{const i={type:"buildResponse",buildResult:await o.build({files:s,enableSourcemap:n,rollup:g.rollup,getSvelteCompiler:u,slugCache:p}),requestId:c};postMessage(i)}catch(l){const i={type:"buildResponse",error:""+l,requestId:c};postMessage(i)}break}case"contentResponse":{const s=a.get(e.vizId);s&&(s(e.content),a.delete(e.vizId));break}case"invalidateVizCacheRequest":{const{changedVizIds:s}=e;for(const n of s)d.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=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("@rollup/browser");require("@vizhub/viz-utils");require("sucrase");const o=require("./build-BAZMN_vU.cjs"),m=()=>{const d=async()=>{const t=await fetch(o.svelteCompilerUrl).then(e=>e.text());return(0,eval)(t),self.svelte.compile},a=new Map,r=new Map,c=o.createVizCache({initialContents:[],handleCacheMiss:async t=>(postMessage({type:"contentRequest",vizId:t}),new Promise(s=>{a.set(t,s)}))}),p=o.createSlugCache({initialMappings:{},handleCacheMiss:async t=>{const e=o.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 o.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=a.get(e.vizId);s&&(s(e.content),a.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=m;
2
2
  //# sourceMappingURL=worker.cjs.map
@@ -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\";\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 } = 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 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":"2MAeaA,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,CAAc,EAAAG,EAE1C,GAAA,CAYF,MAAMG,EAA8B,CAClC,KAAM,gBACN,YAZkB,MAAMC,QAAM,CAC9B,MAAAH,EACA,gBAAAC,EAAA,OACAG,EAAA,OAGA,kBAAArB,EAEA,UAAAU,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"}
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":"2MAgBaA,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,EACA,UAAAE,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"}