@vizhub/runtime 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +173 -0
  2. package/package.json +37 -0
  3. package/src/computeSrcDoc.ts +68 -0
  4. package/src/index.ts +7 -0
  5. package/src/useRuntime.ts +394 -0
  6. package/src/v2Runtime/bundle/bubleJSXOnly.ts +34 -0
  7. package/src/v2Runtime/bundle/getLibraries.js +31 -0
  8. package/src/v2Runtime/bundle/hypothetical.js +232 -0
  9. package/src/v2Runtime/bundle/index.js +88 -0
  10. package/src/v2Runtime/bundle/packageJson.ts +49 -0
  11. package/src/v2Runtime/bundle/rollup.browser.js +28414 -0
  12. package/src/v2Runtime/bundle.test.js +151 -0
  13. package/src/v2Runtime/computeSrcDocV2.test.ts +163 -0
  14. package/src/v2Runtime/computeSrcDocV2.ts +34 -0
  15. package/src/v2Runtime/getComputedIndexHtml.test.ts +33 -0
  16. package/src/v2Runtime/getComputedIndexHtml.ts +106 -0
  17. package/src/v2Runtime/getText.ts +19 -0
  18. package/src/v2Runtime/magicSandbox.js +291 -0
  19. package/src/v2Runtime/packageJson.js +42 -0
  20. package/src/v2Runtime/transformFiles.test.js +18 -0
  21. package/src/v2Runtime/transformFiles.ts +15 -0
  22. package/src/v2Runtime/v3FilesToV2Files.test.ts +20 -0
  23. package/src/v2Runtime/v3FilesToV2Files.ts +14 -0
  24. package/src/v3Runtime/build.test.ts +474 -0
  25. package/src/v3Runtime/build.ts +270 -0
  26. package/src/v3Runtime/cleanRollupErrorMessage.ts +15 -0
  27. package/src/v3Runtime/computeSrcDocV3.ts +151 -0
  28. package/src/v3Runtime/extractVizImport.test.ts +41 -0
  29. package/src/v3Runtime/extractVizImport.ts +34 -0
  30. package/src/v3Runtime/generateRollupErrorMessage.ts +84 -0
  31. package/src/v3Runtime/importFromViz.ts +36 -0
  32. package/src/v3Runtime/index.ts +1 -0
  33. package/src/v3Runtime/parseId.ts +14 -0
  34. package/src/v3Runtime/setupV3Runtime.ts +478 -0
  35. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/bundle-modified-src.js +121 -0
  36. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/bundle-modified.js +121 -0
  37. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/bundle.js +239 -0
  38. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/index.js +1 -0
  39. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/package-lock.json +475 -0
  40. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/package.json +19 -0
  41. package/src/v3Runtime/transformDSV/d3-dsv-custom-build/rollup.config.js +9 -0
  42. package/src/v3Runtime/transformDSV/index.ts +71 -0
  43. package/src/v3Runtime/transformSvelte.ts +111 -0
  44. package/src/v3Runtime/types.ts +158 -0
  45. package/src/v3Runtime/urlLoad.ts +33 -0
  46. package/src/v3Runtime/virtual.ts +27 -0
  47. package/src/v3Runtime/vizCache.test.ts +126 -0
  48. package/src/v3Runtime/vizCache.ts +60 -0
  49. package/src/v3Runtime/vizLoad.ts +68 -0
  50. package/src/v3Runtime/vizLoadSvelte.ts +46 -0
  51. package/src/v3Runtime/vizResolve.ts +100 -0
  52. package/src/v3Runtime/worker.ts +231 -0
@@ -0,0 +1,475 @@
1
+ {
2
+ "name": "d3-dsv-testing",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "d3-dsv-testing",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "d3-dsv": "^3.0.1"
13
+ },
14
+ "devDependencies": {
15
+ "@rollup/plugin-node-resolve": "^15.2.3",
16
+ "rollup": "^4.12.0"
17
+ }
18
+ },
19
+ "node_modules/@rollup/plugin-node-resolve": {
20
+ "version": "15.2.3",
21
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
22
+ "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
23
+ "dev": true,
24
+ "dependencies": {
25
+ "@rollup/pluginutils": "^5.0.1",
26
+ "@types/resolve": "1.20.2",
27
+ "deepmerge": "^4.2.2",
28
+ "is-builtin-module": "^3.2.1",
29
+ "is-module": "^1.0.0",
30
+ "resolve": "^1.22.1"
31
+ },
32
+ "engines": {
33
+ "node": ">=14.0.0"
34
+ },
35
+ "peerDependencies": {
36
+ "rollup": "^2.78.0||^3.0.0||^4.0.0"
37
+ },
38
+ "peerDependenciesMeta": {
39
+ "rollup": {
40
+ "optional": true
41
+ }
42
+ }
43
+ },
44
+ "node_modules/@rollup/pluginutils": {
45
+ "version": "5.1.0",
46
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
47
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
48
+ "dev": true,
49
+ "dependencies": {
50
+ "@types/estree": "^1.0.0",
51
+ "estree-walker": "^2.0.2",
52
+ "picomatch": "^2.3.1"
53
+ },
54
+ "engines": {
55
+ "node": ">=14.0.0"
56
+ },
57
+ "peerDependencies": {
58
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
59
+ },
60
+ "peerDependenciesMeta": {
61
+ "rollup": {
62
+ "optional": true
63
+ }
64
+ }
65
+ },
66
+ "node_modules/@rollup/rollup-android-arm-eabi": {
67
+ "version": "4.12.0",
68
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz",
69
+ "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==",
70
+ "cpu": [
71
+ "arm"
72
+ ],
73
+ "dev": true,
74
+ "optional": true,
75
+ "os": [
76
+ "android"
77
+ ]
78
+ },
79
+ "node_modules/@rollup/rollup-android-arm64": {
80
+ "version": "4.12.0",
81
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz",
82
+ "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==",
83
+ "cpu": [
84
+ "arm64"
85
+ ],
86
+ "dev": true,
87
+ "optional": true,
88
+ "os": [
89
+ "android"
90
+ ]
91
+ },
92
+ "node_modules/@rollup/rollup-darwin-arm64": {
93
+ "version": "4.12.0",
94
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz",
95
+ "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==",
96
+ "cpu": [
97
+ "arm64"
98
+ ],
99
+ "dev": true,
100
+ "optional": true,
101
+ "os": [
102
+ "darwin"
103
+ ]
104
+ },
105
+ "node_modules/@rollup/rollup-darwin-x64": {
106
+ "version": "4.12.0",
107
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz",
108
+ "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==",
109
+ "cpu": [
110
+ "x64"
111
+ ],
112
+ "dev": true,
113
+ "optional": true,
114
+ "os": [
115
+ "darwin"
116
+ ]
117
+ },
118
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
119
+ "version": "4.12.0",
120
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz",
121
+ "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==",
122
+ "cpu": [
123
+ "arm"
124
+ ],
125
+ "dev": true,
126
+ "optional": true,
127
+ "os": [
128
+ "linux"
129
+ ]
130
+ },
131
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
132
+ "version": "4.12.0",
133
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz",
134
+ "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==",
135
+ "cpu": [
136
+ "arm64"
137
+ ],
138
+ "dev": true,
139
+ "optional": true,
140
+ "os": [
141
+ "linux"
142
+ ]
143
+ },
144
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
145
+ "version": "4.12.0",
146
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz",
147
+ "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==",
148
+ "cpu": [
149
+ "arm64"
150
+ ],
151
+ "dev": true,
152
+ "optional": true,
153
+ "os": [
154
+ "linux"
155
+ ]
156
+ },
157
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
158
+ "version": "4.12.0",
159
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz",
160
+ "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==",
161
+ "cpu": [
162
+ "riscv64"
163
+ ],
164
+ "dev": true,
165
+ "optional": true,
166
+ "os": [
167
+ "linux"
168
+ ]
169
+ },
170
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
171
+ "version": "4.12.0",
172
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz",
173
+ "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==",
174
+ "cpu": [
175
+ "x64"
176
+ ],
177
+ "dev": true,
178
+ "optional": true,
179
+ "os": [
180
+ "linux"
181
+ ]
182
+ },
183
+ "node_modules/@rollup/rollup-linux-x64-musl": {
184
+ "version": "4.12.0",
185
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz",
186
+ "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==",
187
+ "cpu": [
188
+ "x64"
189
+ ],
190
+ "dev": true,
191
+ "optional": true,
192
+ "os": [
193
+ "linux"
194
+ ]
195
+ },
196
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
197
+ "version": "4.12.0",
198
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz",
199
+ "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==",
200
+ "cpu": [
201
+ "arm64"
202
+ ],
203
+ "dev": true,
204
+ "optional": true,
205
+ "os": [
206
+ "win32"
207
+ ]
208
+ },
209
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
210
+ "version": "4.12.0",
211
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz",
212
+ "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==",
213
+ "cpu": [
214
+ "ia32"
215
+ ],
216
+ "dev": true,
217
+ "optional": true,
218
+ "os": [
219
+ "win32"
220
+ ]
221
+ },
222
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
223
+ "version": "4.12.0",
224
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz",
225
+ "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==",
226
+ "cpu": [
227
+ "x64"
228
+ ],
229
+ "dev": true,
230
+ "optional": true,
231
+ "os": [
232
+ "win32"
233
+ ]
234
+ },
235
+ "node_modules/@types/estree": {
236
+ "version": "1.0.5",
237
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
238
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
239
+ "dev": true
240
+ },
241
+ "node_modules/@types/resolve": {
242
+ "version": "1.20.2",
243
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
244
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
245
+ "dev": true
246
+ },
247
+ "node_modules/builtin-modules": {
248
+ "version": "3.3.0",
249
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
250
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
251
+ "dev": true,
252
+ "engines": {
253
+ "node": ">=6"
254
+ },
255
+ "funding": {
256
+ "url": "https://github.com/sponsors/sindresorhus"
257
+ }
258
+ },
259
+ "node_modules/commander": {
260
+ "version": "7.2.0",
261
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
262
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
263
+ "engines": {
264
+ "node": ">= 10"
265
+ }
266
+ },
267
+ "node_modules/d3-dsv": {
268
+ "version": "3.0.1",
269
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
270
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
271
+ "dependencies": {
272
+ "commander": "7",
273
+ "iconv-lite": "0.6",
274
+ "rw": "1"
275
+ },
276
+ "bin": {
277
+ "csv2json": "bin/dsv2json.js",
278
+ "csv2tsv": "bin/dsv2dsv.js",
279
+ "dsv2dsv": "bin/dsv2dsv.js",
280
+ "dsv2json": "bin/dsv2json.js",
281
+ "json2csv": "bin/json2dsv.js",
282
+ "json2dsv": "bin/json2dsv.js",
283
+ "json2tsv": "bin/json2dsv.js",
284
+ "tsv2csv": "bin/dsv2dsv.js",
285
+ "tsv2json": "bin/dsv2json.js"
286
+ },
287
+ "engines": {
288
+ "node": ">=12"
289
+ }
290
+ },
291
+ "node_modules/deepmerge": {
292
+ "version": "4.3.1",
293
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
294
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
295
+ "dev": true,
296
+ "engines": {
297
+ "node": ">=0.10.0"
298
+ }
299
+ },
300
+ "node_modules/estree-walker": {
301
+ "version": "2.0.2",
302
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
303
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
304
+ "dev": true
305
+ },
306
+ "node_modules/fsevents": {
307
+ "version": "2.3.3",
308
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
309
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
310
+ "dev": true,
311
+ "hasInstallScript": true,
312
+ "optional": true,
313
+ "os": [
314
+ "darwin"
315
+ ],
316
+ "engines": {
317
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
318
+ }
319
+ },
320
+ "node_modules/function-bind": {
321
+ "version": "1.1.2",
322
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
323
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
324
+ "dev": true,
325
+ "funding": {
326
+ "url": "https://github.com/sponsors/ljharb"
327
+ }
328
+ },
329
+ "node_modules/hasown": {
330
+ "version": "2.0.1",
331
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
332
+ "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
333
+ "dev": true,
334
+ "dependencies": {
335
+ "function-bind": "^1.1.2"
336
+ },
337
+ "engines": {
338
+ "node": ">= 0.4"
339
+ }
340
+ },
341
+ "node_modules/iconv-lite": {
342
+ "version": "0.6.3",
343
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
344
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
345
+ "dependencies": {
346
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
347
+ },
348
+ "engines": {
349
+ "node": ">=0.10.0"
350
+ }
351
+ },
352
+ "node_modules/is-builtin-module": {
353
+ "version": "3.2.1",
354
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
355
+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
356
+ "dev": true,
357
+ "dependencies": {
358
+ "builtin-modules": "^3.3.0"
359
+ },
360
+ "engines": {
361
+ "node": ">=6"
362
+ },
363
+ "funding": {
364
+ "url": "https://github.com/sponsors/sindresorhus"
365
+ }
366
+ },
367
+ "node_modules/is-core-module": {
368
+ "version": "2.13.1",
369
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
370
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
371
+ "dev": true,
372
+ "dependencies": {
373
+ "hasown": "^2.0.0"
374
+ },
375
+ "funding": {
376
+ "url": "https://github.com/sponsors/ljharb"
377
+ }
378
+ },
379
+ "node_modules/is-module": {
380
+ "version": "1.0.0",
381
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
382
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
383
+ "dev": true
384
+ },
385
+ "node_modules/path-parse": {
386
+ "version": "1.0.7",
387
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
388
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
389
+ "dev": true
390
+ },
391
+ "node_modules/picomatch": {
392
+ "version": "2.3.1",
393
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
394
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
395
+ "dev": true,
396
+ "engines": {
397
+ "node": ">=8.6"
398
+ },
399
+ "funding": {
400
+ "url": "https://github.com/sponsors/jonschlinkert"
401
+ }
402
+ },
403
+ "node_modules/resolve": {
404
+ "version": "1.22.8",
405
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
406
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
407
+ "dev": true,
408
+ "dependencies": {
409
+ "is-core-module": "^2.13.0",
410
+ "path-parse": "^1.0.7",
411
+ "supports-preserve-symlinks-flag": "^1.0.0"
412
+ },
413
+ "bin": {
414
+ "resolve": "bin/resolve"
415
+ },
416
+ "funding": {
417
+ "url": "https://github.com/sponsors/ljharb"
418
+ }
419
+ },
420
+ "node_modules/rollup": {
421
+ "version": "4.12.0",
422
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz",
423
+ "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==",
424
+ "dev": true,
425
+ "dependencies": {
426
+ "@types/estree": "1.0.5"
427
+ },
428
+ "bin": {
429
+ "rollup": "dist/bin/rollup"
430
+ },
431
+ "engines": {
432
+ "node": ">=18.0.0",
433
+ "npm": ">=8.0.0"
434
+ },
435
+ "optionalDependencies": {
436
+ "@rollup/rollup-android-arm-eabi": "4.12.0",
437
+ "@rollup/rollup-android-arm64": "4.12.0",
438
+ "@rollup/rollup-darwin-arm64": "4.12.0",
439
+ "@rollup/rollup-darwin-x64": "4.12.0",
440
+ "@rollup/rollup-linux-arm-gnueabihf": "4.12.0",
441
+ "@rollup/rollup-linux-arm64-gnu": "4.12.0",
442
+ "@rollup/rollup-linux-arm64-musl": "4.12.0",
443
+ "@rollup/rollup-linux-riscv64-gnu": "4.12.0",
444
+ "@rollup/rollup-linux-x64-gnu": "4.12.0",
445
+ "@rollup/rollup-linux-x64-musl": "4.12.0",
446
+ "@rollup/rollup-win32-arm64-msvc": "4.12.0",
447
+ "@rollup/rollup-win32-ia32-msvc": "4.12.0",
448
+ "@rollup/rollup-win32-x64-msvc": "4.12.0",
449
+ "fsevents": "~2.3.2"
450
+ }
451
+ },
452
+ "node_modules/rw": {
453
+ "version": "1.3.3",
454
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
455
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
456
+ },
457
+ "node_modules/safer-buffer": {
458
+ "version": "2.1.2",
459
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
460
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
461
+ },
462
+ "node_modules/supports-preserve-symlinks-flag": {
463
+ "version": "1.0.0",
464
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
465
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
466
+ "dev": true,
467
+ "engines": {
468
+ "node": ">= 0.4"
469
+ },
470
+ "funding": {
471
+ "url": "https://github.com/sponsors/ljharb"
472
+ }
473
+ }
474
+ }
475
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "d3-dsv-testing",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "test": "rollup -c"
9
+ },
10
+ "author": "",
11
+ "license": "ISC",
12
+ "dependencies": {
13
+ "d3-dsv": "^3.0.1"
14
+ },
15
+ "devDependencies": {
16
+ "@rollup/plugin-node-resolve": "^15.2.3",
17
+ "rollup": "^4.12.0"
18
+ }
19
+ }
@@ -0,0 +1,9 @@
1
+ import { nodeResolve } from '@rollup/plugin-node-resolve';
2
+ export default {
3
+ input: 'index.js',
4
+ output: {
5
+ file: 'bundle.js',
6
+ format: 'es',
7
+ },
8
+ plugins: [nodeResolve()],
9
+ };
@@ -0,0 +1,71 @@
1
+ import { InputPluginOption } from 'rollup';
2
+ import { csvParse, tsvParse } from 'd3-dsv';
3
+ import { ResolvedVizFileId } from '../types';
4
+ import { parseId } from '../parseId';
5
+ import { dsvParseSrc } from './d3-dsv-custom-build/bundle-modified-src';
6
+
7
+ const debug = false;
8
+
9
+ const optimize = true;
10
+
11
+ // Escape backticks in a string so that it can be
12
+ // used in a template literal. Also need to escape backslashes.
13
+ const escapeBackticks = (str: string) =>
14
+ // str.replace(/`/g, '\\`');
15
+ str.replace(/\\/g, '\\\\').replace(/`/g, '\\`');
16
+
17
+ // Responsible for loading CSV and TSV files, which are
18
+ // in general called Delimiter-Separated Values (DSV).
19
+ export const transformDSV = (): InputPluginOption => ({
20
+ name: 'transformDSV',
21
+
22
+ // `id` here is of the form
23
+ // `{vizId}/{fileName}`
24
+ transform: async (
25
+ text: string,
26
+ id: ResolvedVizFileId,
27
+ ) => {
28
+ if (debug) {
29
+ console.log('[transformDSV]: load() ' + id);
30
+ }
31
+
32
+ const { vizId, fileName } = parseId(id);
33
+
34
+ if (debug) {
35
+ console.log(' [transformDSV] vizId: ' + vizId);
36
+ console.log(' [transformDSV] fileName: ' + fileName);
37
+ }
38
+ const isCSV = fileName.endsWith('.csv');
39
+ const isTSV = fileName.endsWith('.tsv');
40
+ if (isCSV || isTSV) {
41
+ if (debug) {
42
+ console.log(
43
+ ' [transformDSV] tracking DSV import for ' +
44
+ id,
45
+ );
46
+ }
47
+
48
+ const parseFunction = isCSV ? 'csvParse' : 'tsvParse';
49
+
50
+ if (optimize) {
51
+ return {
52
+ code: `
53
+ ${dsvParseSrc}
54
+ const data = ${parseFunction}(\`${escapeBackticks(text)}\`);
55
+ export default data;
56
+ `,
57
+ map: { mappings: '' },
58
+ };
59
+ } else {
60
+ const rows = isCSV
61
+ ? csvParse(text)
62
+ : tsvParse(text);
63
+ return {
64
+ code: `export default ${JSON.stringify(rows)};`,
65
+ map: { mappings: '' },
66
+ };
67
+ }
68
+ }
69
+ return undefined;
70
+ },
71
+ });
@@ -0,0 +1,111 @@
1
+ import { InputPluginOption } from 'rollup';
2
+ import { ResolvedVizFileId } from './types';
3
+ import { parseId } from './parseId';
4
+
5
+ const debug = false;
6
+
7
+ // The cache of fetched files.
8
+ const fetchedFileCache = new Map<string, string>();
9
+
10
+ // The Svelte compiler.
11
+ let compile;
12
+
13
+ const svelteURL =
14
+ 'https://cdn.jsdelivr.net/npm/svelte@4.2.9';
15
+
16
+ export const svelteCompilerUrl = `${svelteURL}/compiler.cjs`;
17
+
18
+ // Responsible for transforming Svelte files.
19
+ // Inspired by:
20
+ // * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/compiler/index.js#L2
21
+ // * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L358
22
+ // * https://github.com/sveltejs/rollup-plugin-svelte/blob/master/index.js#L146C4-L146C51
23
+ export const transformSvelte = ({
24
+ getSvelteCompiler,
25
+ }: {
26
+ getSvelteCompiler?: () => Promise<any>;
27
+ }): InputPluginOption => ({
28
+ name: 'transformSvelte',
29
+
30
+ load: async (resolved: string) => {
31
+ if (!resolved.startsWith(svelteURL)) {
32
+ return;
33
+ }
34
+ if (debug) {
35
+ console.log('[transformSvelte]: load() ' + resolved);
36
+ }
37
+
38
+ const cachedFile = fetchedFileCache.get(resolved);
39
+ if (cachedFile) return cachedFile;
40
+
41
+ const fetchedFile = await fetch(resolved).then((res) =>
42
+ res.text(),
43
+ );
44
+
45
+ fetchedFileCache.set(resolved, fetchedFile);
46
+
47
+ return fetchedFile;
48
+ },
49
+
50
+ // From https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L255C2-L271C5
51
+ resolveId: async (importee, importer) => {
52
+ if (debug) {
53
+ console.log(
54
+ '[transformSvelte] resolveId() ' + importee,
55
+ );
56
+ console.log('importee: ' + importee);
57
+ console.log('importer: ' + importer);
58
+ }
59
+ // importing from Svelte
60
+ if (importee === `svelte`) {
61
+ return `${svelteURL}/src/runtime/index.js`;
62
+ }
63
+ if (importee.startsWith(`svelte/`)) {
64
+ const sub_path = importee.slice(7);
65
+ return `${svelteURL}/src/runtime/${sub_path}/index.js`;
66
+ }
67
+
68
+ // importing from a URL
69
+ if (/^https?:/.test(importee)) return importee;
70
+
71
+ // Relative imports
72
+ if (importee.startsWith('.')) {
73
+ if (importer && importer.startsWith(svelteURL)) {
74
+ const resolved = new URL(importee, importer).href;
75
+ const url = new URL(importee, importer).href;
76
+ if (debug) {
77
+ console.log(
78
+ '[transformSvelte] resolveId() ' + resolved,
79
+ );
80
+ }
81
+ return resolved;
82
+ }
83
+ }
84
+ },
85
+
86
+ transform: async (
87
+ code: string,
88
+ id: ResolvedVizFileId,
89
+ ) => {
90
+ const { fileName } = parseId(id);
91
+
92
+ const isSvelte = fileName.endsWith('.svelte');
93
+
94
+ if (isSvelte) {
95
+ if (!compile) {
96
+ if (!getSvelteCompiler) {
97
+ throw new Error('Svelte compiler not available');
98
+ }
99
+ compile = await getSvelteCompiler();
100
+ }
101
+
102
+ const compiled = compile(code, {
103
+ filename: fileName,
104
+ hydratable: true,
105
+ });
106
+
107
+ return compiled.js;
108
+ }
109
+ return undefined;
110
+ },
111
+ });