@vizhub/runtime 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/cjs/buildHTML.js +71 -0
  2. package/dist/cjs/common/packageJson.js +81 -0
  3. package/dist/cjs/common/packageJson.test.js +148 -0
  4. package/dist/cjs/common/sucrasePlugin.js +27 -0
  5. package/dist/cjs/common/virtualFileSystem.js +79 -0
  6. package/dist/cjs/determineRuntimeVersion.js +26 -0
  7. package/dist/cjs/determineRuntimeVersion.test.js +103 -0
  8. package/dist/cjs/index.js +9 -0
  9. package/dist/cjs/package.json +1 -0
  10. package/dist/cjs/test/fixtures/v1/basicHTML.js +18 -0
  11. package/dist/cjs/test/fixtures/v1/fetchProxy.js +15 -0
  12. package/dist/cjs/test/fixtures/v1/index.js +15 -0
  13. package/dist/cjs/test/fixtures/v1/jsScriptTag.js +12 -0
  14. package/dist/cjs/test/fixtures/v1/protocolTest.js +18 -0
  15. package/dist/cjs/test/fixtures/v1/styleTest.js +18 -0
  16. package/dist/cjs/test/fixtures/v1/xmlTest.js +22 -0
  17. package/dist/cjs/test/fixtures/v2/basicBundle.js +8 -0
  18. package/dist/cjs/test/fixtures/v2/basicBundleNoExtension.js +8 -0
  19. package/dist/cjs/test/fixtures/v2/d3Import.js +10 -0
  20. package/dist/cjs/test/fixtures/v2/d3ImportPkg.js +22 -0
  21. package/dist/cjs/test/fixtures/v2/d3RosettaImportPkg.js +22 -0
  22. package/dist/cjs/test/fixtures/v2/es6Preserve.js +9 -0
  23. package/dist/cjs/test/fixtures/v2/generatorSupport.js +9 -0
  24. package/dist/cjs/test/fixtures/v2/index.js +45 -0
  25. package/dist/cjs/test/fixtures/v2/jsxTranspile.js +9 -0
  26. package/dist/cjs/test/fixtures/v2/reactDomImport.js +11 -0
  27. package/dist/cjs/test/fixtures/v2/reactDomImportPkg.js +27 -0
  28. package/dist/cjs/test/fixtures/v2/reactImport.js +10 -0
  29. package/dist/cjs/test/fixtures/v2/reactImportPkg.js +20 -0
  30. package/dist/cjs/test/fixtures/v2/sourceMapErrorFixture.js +22 -0
  31. package/dist/cjs/test/fixtures/v2/unicodeSupport.js +9 -0
  32. package/dist/cjs/test/fixtures/v3/basicIndexJS.js +10 -0
  33. package/dist/cjs/test/fixtures/v3/cssImport.js +12 -0
  34. package/dist/cjs/test/fixtures/v3/csvImport.js +14 -0
  35. package/dist/cjs/test/fixtures/v3/csvStrangeChars.js +15 -0
  36. package/dist/cjs/test/fixtures/v3/index.js +25 -0
  37. package/dist/cjs/test/fixtures/v3/jsExport.js +13 -0
  38. package/dist/cjs/test/fixtures/v3/sourcemap.js +13 -0
  39. package/dist/cjs/test/fixtures/v3/svelte.js +21 -0
  40. package/dist/cjs/test/fixtures/v3/vizContent.js +14 -0
  41. package/dist/cjs/test/fixtures/v3/vizImport.js +88 -0
  42. package/dist/cjs/test/fixtures/v4/d3Usage.js +34 -0
  43. package/dist/cjs/test/fixtures/v4/esmBuild.js +21 -0
  44. package/dist/cjs/test/fixtures/v4/fetchInterception.js +21 -0
  45. package/dist/cjs/test/fixtures/v4/index.js +21 -0
  46. package/dist/cjs/test/fixtures/v4/jsScriptTagTypeModule.js +21 -0
  47. package/dist/cjs/test/fixtures/v4/jsScriptTagTypeModules.js +15 -0
  48. package/dist/cjs/test/fixtures/v4/reactHooks.js +50 -0
  49. package/dist/cjs/test/fixtures/v4/reactJsx.js +37 -0
  50. package/dist/cjs/test/fixtures/v4/threeJsUsage.js +27 -0
  51. package/dist/cjs/test/fixtures/v4/typeScriptSupport.js +32 -0
  52. package/dist/cjs/test/testInBrowser.js +50 -0
  53. package/dist/cjs/test/testStackTrace.js +58 -0
  54. package/dist/cjs/test/v1.test.js +70 -0
  55. package/dist/cjs/test/v2.test.js +124 -0
  56. package/dist/cjs/test/v3.test.js +119 -0
  57. package/dist/cjs/test/v4.test.js +105 -0
  58. package/dist/cjs/types.js +2 -0
  59. package/dist/cjs/utils/vizContentToFileCollection.js +23 -0
  60. package/dist/cjs/utils/vizContentToFileCollection.test.js +77 -0
  61. package/dist/cjs/v2/computeBundleJSV2.js +33 -0
  62. package/dist/cjs/v2/getComputedIndexHtml.js +86 -0
  63. package/dist/cjs/v2/getComputedIndexHtml.test.js +136 -0
  64. package/dist/cjs/v2/index.js +5 -0
  65. package/dist/cjs/v2/v2Build.js +15 -0
  66. package/dist/cjs/v3/cleanRollupErrorMessage.js +13 -0
  67. package/dist/cjs/v3/computeBundleJSV3.js +52 -0
  68. package/dist/cjs/v3/createVizContent.js +27 -0
  69. package/dist/cjs/v3/extractVizImport.js +27 -0
  70. package/dist/cjs/v3/extractVizImport.test.js +32 -0
  71. package/dist/cjs/v3/htmlTemplate.js +93 -0
  72. package/dist/cjs/v3/index.js +5 -0
  73. package/dist/cjs/v3/parseId.js +9 -0
  74. package/dist/cjs/v3/parseId.test.js +27 -0
  75. package/dist/cjs/v3/setupV3Runtime.js +345 -0
  76. package/dist/cjs/v3/slugCache.js +39 -0
  77. package/dist/cjs/v3/slugCache.test.js +107 -0
  78. package/dist/cjs/v3/transformDSV/dsvParseSrc.js +124 -0
  79. package/dist/cjs/v3/transformDSV/index.js +44 -0
  80. package/dist/cjs/v3/transformSvelte.js +81 -0
  81. package/dist/cjs/v3/types.js +2 -0
  82. package/dist/cjs/v3/v3Build.js +34 -0
  83. package/dist/cjs/v3/vizCache.js +40 -0
  84. package/dist/cjs/v3/vizCache.test.js +100 -0
  85. package/dist/cjs/v3/vizLoad.js +50 -0
  86. package/dist/cjs/v3/vizResolve.js +73 -0
  87. package/dist/cjs/v4/index.js +138 -0
  88. package/dist/esm/buildHTML.js +67 -0
  89. package/dist/esm/common/packageJson.js +71 -0
  90. package/dist/esm/common/packageJson.test.js +146 -0
  91. package/dist/esm/common/sucrasePlugin.js +24 -0
  92. package/dist/esm/common/virtualFileSystem.js +75 -0
  93. package/dist/esm/determineRuntimeVersion.js +22 -0
  94. package/dist/esm/determineRuntimeVersion.test.js +101 -0
  95. package/dist/esm/index.js +3 -0
  96. package/dist/esm/test/fixtures/v1/basicHTML.js +15 -0
  97. package/dist/esm/test/fixtures/v1/fetchProxy.js +12 -0
  98. package/dist/esm/test/fixtures/v1/index.js +6 -0
  99. package/dist/esm/test/fixtures/v1/jsScriptTag.js +9 -0
  100. package/dist/esm/test/fixtures/v1/protocolTest.js +15 -0
  101. package/dist/esm/test/fixtures/v1/styleTest.js +15 -0
  102. package/dist/esm/test/fixtures/v1/xmlTest.js +19 -0
  103. package/dist/esm/test/fixtures/v2/basicBundle.js +5 -0
  104. package/dist/esm/test/fixtures/v2/basicBundleNoExtension.js +5 -0
  105. package/dist/esm/test/fixtures/v2/d3Import.js +7 -0
  106. package/dist/esm/test/fixtures/v2/d3ImportPkg.js +19 -0
  107. package/dist/esm/test/fixtures/v2/d3RosettaImportPkg.js +19 -0
  108. package/dist/esm/test/fixtures/v2/es6Preserve.js +6 -0
  109. package/dist/esm/test/fixtures/v2/generatorSupport.js +6 -0
  110. package/dist/esm/test/fixtures/v2/index.js +15 -0
  111. package/dist/esm/test/fixtures/v2/jsxTranspile.js +6 -0
  112. package/dist/esm/test/fixtures/v2/reactDomImport.js +8 -0
  113. package/dist/esm/test/fixtures/v2/reactDomImportPkg.js +24 -0
  114. package/dist/esm/test/fixtures/v2/reactImport.js +7 -0
  115. package/dist/esm/test/fixtures/v2/reactImportPkg.js +17 -0
  116. package/dist/esm/test/fixtures/v2/sourceMapErrorFixture.js +19 -0
  117. package/dist/esm/test/fixtures/v2/unicodeSupport.js +6 -0
  118. package/dist/esm/test/fixtures/v3/basicIndexJS.js +7 -0
  119. package/dist/esm/test/fixtures/v3/cssImport.js +9 -0
  120. package/dist/esm/test/fixtures/v3/csvImport.js +11 -0
  121. package/dist/esm/test/fixtures/v3/csvStrangeChars.js +12 -0
  122. package/dist/esm/test/fixtures/v3/index.js +9 -0
  123. package/dist/esm/test/fixtures/v3/jsExport.js +10 -0
  124. package/dist/esm/test/fixtures/v3/sourcemap.js +10 -0
  125. package/dist/esm/test/fixtures/v3/svelte.js +18 -0
  126. package/dist/esm/test/fixtures/v3/vizContent.js +11 -0
  127. package/dist/esm/test/fixtures/v3/vizImport.js +85 -0
  128. package/dist/esm/test/fixtures/v4/d3Usage.js +31 -0
  129. package/dist/esm/test/fixtures/v4/esmBuild.js +18 -0
  130. package/dist/esm/test/fixtures/v4/fetchInterception.js +18 -0
  131. package/dist/esm/test/fixtures/v4/index.js +9 -0
  132. package/dist/esm/test/fixtures/v4/jsScriptTagTypeModule.js +18 -0
  133. package/dist/esm/test/fixtures/v4/jsScriptTagTypeModules.js +12 -0
  134. package/dist/esm/test/fixtures/v4/reactHooks.js +47 -0
  135. package/dist/esm/test/fixtures/v4/reactJsx.js +34 -0
  136. package/dist/esm/test/fixtures/v4/threeJsUsage.js +24 -0
  137. package/dist/esm/test/fixtures/v4/typeScriptSupport.js +29 -0
  138. package/dist/esm/test/testInBrowser.js +47 -0
  139. package/dist/esm/test/testStackTrace.js +55 -0
  140. package/dist/esm/test/v1.test.js +65 -0
  141. package/dist/esm/test/v2.test.js +121 -0
  142. package/dist/esm/test/v3.test.js +114 -0
  143. package/dist/esm/test/v4.test.js +100 -0
  144. package/dist/esm/types.js +1 -0
  145. package/dist/esm/utils/vizContentToFileCollection.js +19 -0
  146. package/dist/esm/utils/vizContentToFileCollection.test.js +75 -0
  147. package/dist/esm/v2/computeBundleJSV2.js +29 -0
  148. package/dist/esm/v2/getComputedIndexHtml.js +81 -0
  149. package/dist/esm/v2/getComputedIndexHtml.test.js +134 -0
  150. package/dist/esm/v2/index.js +1 -0
  151. package/dist/esm/v2/v2Build.js +11 -0
  152. package/dist/esm/v3/cleanRollupErrorMessage.js +9 -0
  153. package/dist/esm/v3/computeBundleJSV3.js +48 -0
  154. package/dist/esm/v3/createVizContent.js +23 -0
  155. package/dist/esm/v3/extractVizImport.js +23 -0
  156. package/dist/esm/v3/extractVizImport.test.js +30 -0
  157. package/dist/esm/v3/htmlTemplate.js +89 -0
  158. package/dist/esm/v3/index.js +1 -0
  159. package/dist/esm/v3/parseId.js +5 -0
  160. package/dist/esm/v3/parseId.test.js +25 -0
  161. package/dist/esm/v3/setupV3Runtime.js +341 -0
  162. package/dist/esm/v3/slugCache.js +35 -0
  163. package/dist/esm/v3/slugCache.test.js +105 -0
  164. package/dist/esm/v3/transformDSV/dsvParseSrc.js +121 -0
  165. package/dist/esm/v3/transformDSV/index.js +40 -0
  166. package/dist/esm/v3/transformSvelte.js +77 -0
  167. package/dist/esm/v3/types.js +1 -0
  168. package/dist/esm/v3/v3Build.js +30 -0
  169. package/dist/esm/v3/vizCache.js +36 -0
  170. package/dist/esm/v3/vizCache.test.js +98 -0
  171. package/dist/esm/v3/vizLoad.js +46 -0
  172. package/dist/esm/v3/vizResolve.js +69 -0
  173. package/dist/esm/v4/index.js +134 -0
  174. package/dist/types/buildHTML.d.ts +14 -0
  175. package/dist/types/common/packageJson.d.ts +39 -0
  176. package/dist/types/common/packageJson.test.d.ts +1 -0
  177. package/dist/types/common/sucrasePlugin.d.ts +2 -0
  178. package/dist/types/common/virtualFileSystem.d.ts +3 -0
  179. package/dist/types/determineRuntimeVersion.d.ts +3 -0
  180. package/dist/types/determineRuntimeVersion.test.d.ts +1 -0
  181. package/dist/types/index.d.ts +3 -0
  182. package/dist/types/test/fixtures/v1/basicHTML.d.ts +3 -0
  183. package/dist/types/test/fixtures/v1/fetchProxy.d.ts +5 -0
  184. package/dist/types/test/fixtures/v1/index.d.ts +6 -0
  185. package/dist/types/test/fixtures/v1/jsScriptTag.d.ts +4 -0
  186. package/dist/types/test/fixtures/v1/protocolTest.d.ts +3 -0
  187. package/dist/types/test/fixtures/v1/styleTest.d.ts +4 -0
  188. package/dist/types/test/fixtures/v1/xmlTest.d.ts +4 -0
  189. package/dist/types/test/fixtures/v2/basicBundle.d.ts +5 -0
  190. package/dist/types/test/fixtures/v2/basicBundleNoExtension.d.ts +5 -0
  191. package/dist/types/test/fixtures/v2/d3Import.d.ts +4 -0
  192. package/dist/types/test/fixtures/v2/d3ImportPkg.d.ts +5 -0
  193. package/dist/types/test/fixtures/v2/d3RosettaImportPkg.d.ts +5 -0
  194. package/dist/types/test/fixtures/v2/es6Preserve.d.ts +4 -0
  195. package/dist/types/test/fixtures/v2/generatorSupport.d.ts +4 -0
  196. package/dist/types/test/fixtures/v2/index.d.ts +14 -0
  197. package/dist/types/test/fixtures/v2/jsxTranspile.d.ts +4 -0
  198. package/dist/types/test/fixtures/v2/reactDomImport.d.ts +4 -0
  199. package/dist/types/test/fixtures/v2/reactDomImportPkg.d.ts +5 -0
  200. package/dist/types/test/fixtures/v2/reactImport.d.ts +4 -0
  201. package/dist/types/test/fixtures/v2/reactImportPkg.d.ts +5 -0
  202. package/dist/types/test/fixtures/v2/sourceMapErrorFixture.d.ts +5 -0
  203. package/dist/types/test/fixtures/v2/unicodeSupport.d.ts +4 -0
  204. package/dist/types/test/fixtures/v3/basicIndexJS.d.ts +3 -0
  205. package/dist/types/test/fixtures/v3/cssImport.d.ts +4 -0
  206. package/dist/types/test/fixtures/v3/csvImport.d.ts +4 -0
  207. package/dist/types/test/fixtures/v3/csvStrangeChars.d.ts +4 -0
  208. package/dist/types/test/fixtures/v3/index.d.ts +9 -0
  209. package/dist/types/test/fixtures/v3/jsExport.d.ts +4 -0
  210. package/dist/types/test/fixtures/v3/sourcemap.d.ts +3 -0
  211. package/dist/types/test/fixtures/v3/svelte.d.ts +4 -0
  212. package/dist/types/test/fixtures/v3/vizContent.d.ts +2 -0
  213. package/dist/types/test/fixtures/v3/vizImport.d.ts +6 -0
  214. package/dist/types/test/fixtures/v4/d3Usage.d.ts +5 -0
  215. package/dist/types/test/fixtures/v4/esmBuild.d.ts +5 -0
  216. package/dist/types/test/fixtures/v4/fetchInterception.d.ts +5 -0
  217. package/dist/types/test/fixtures/v4/index.d.ts +9 -0
  218. package/dist/types/test/fixtures/v4/jsScriptTagTypeModule.d.ts +4 -0
  219. package/dist/types/test/fixtures/v4/jsScriptTagTypeModules.d.ts +5 -0
  220. package/dist/types/test/fixtures/v4/reactHooks.d.ts +6 -0
  221. package/dist/types/test/fixtures/v4/reactJsx.d.ts +6 -0
  222. package/dist/types/test/fixtures/v4/threeJsUsage.d.ts +4 -0
  223. package/dist/types/test/fixtures/v4/typeScriptSupport.d.ts +5 -0
  224. package/dist/types/test/testInBrowser.d.ts +15 -0
  225. package/dist/types/test/testStackTrace.d.ts +9 -0
  226. package/dist/types/test/v1.test.d.ts +1 -0
  227. package/dist/types/test/v2.test.d.ts +1 -0
  228. package/dist/types/test/v3.test.d.ts +1 -0
  229. package/dist/types/test/v4.test.d.ts +1 -0
  230. package/dist/types/types.d.ts +1 -0
  231. package/dist/types/utils/vizContentToFileCollection.d.ts +7 -0
  232. package/dist/types/utils/vizContentToFileCollection.test.d.ts +1 -0
  233. package/dist/types/v2/computeBundleJSV2.d.ts +7 -0
  234. package/dist/types/v2/getComputedIndexHtml.d.ts +4 -0
  235. package/dist/types/v2/getComputedIndexHtml.test.d.ts +1 -0
  236. package/dist/types/v2/index.d.ts +1 -0
  237. package/dist/types/v2/v2Build.d.ts +7 -0
  238. package/dist/types/v3/cleanRollupErrorMessage.d.ts +4 -0
  239. package/dist/types/v3/computeBundleJSV3.d.ts +17 -0
  240. package/dist/types/v3/createVizContent.d.ts +8 -0
  241. package/dist/types/v3/extractVizImport.d.ts +6 -0
  242. package/dist/types/v3/extractVizImport.test.d.ts +1 -0
  243. package/dist/types/v3/htmlTemplate.d.ts +5 -0
  244. package/dist/types/v3/index.d.ts +1 -0
  245. package/dist/types/v3/parseId.d.ts +6 -0
  246. package/dist/types/v3/parseId.test.d.ts +1 -0
  247. package/dist/types/v3/setupV3Runtime.d.ts +15 -0
  248. package/dist/types/v3/slugCache.d.ts +11 -0
  249. package/dist/types/v3/slugCache.test.d.ts +1 -0
  250. package/dist/types/v3/transformDSV/dsvParseSrc.d.ts +1 -0
  251. package/dist/types/v3/transformDSV/index.d.ts +2 -0
  252. package/dist/types/v3/transformSvelte.d.ts +8 -0
  253. package/dist/types/v3/types.d.ts +65 -0
  254. package/dist/types/v3/v3Build.d.ts +14 -0
  255. package/dist/types/v3/vizCache.d.ts +10 -0
  256. package/dist/types/v3/vizCache.test.d.ts +1 -0
  257. package/dist/types/v3/vizLoad.d.ts +7 -0
  258. package/dist/types/v3/vizResolve.d.ts +7 -0
  259. package/dist/types/v4/index.d.ts +10 -0
  260. package/package.json +14 -7
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dsvParseSrc = void 0;
4
+ exports.dsvParseSrc = `var EOL = {},
5
+ EOF = {},
6
+ QUOTE = 34,
7
+ NEWLINE = 10,
8
+ RETURN = 13;
9
+
10
+ function objectConverter(columns) {
11
+ return new Function(
12
+ 'd',
13
+ 'return {' +
14
+ columns
15
+ .map(function (name, i) {
16
+ return (
17
+ JSON.stringify(name) + ': d[' + i + '] || ""'
18
+ );
19
+ })
20
+ .join(',') +
21
+ '}',
22
+ );
23
+ }
24
+
25
+ function customConverter(columns, f) {
26
+ var object = objectConverter(columns);
27
+ return function (row, i) {
28
+ return f(object(row), i, columns);
29
+ };
30
+ }
31
+
32
+ function dsv(delimiter) {
33
+ var DELIMITER = delimiter.charCodeAt(0);
34
+
35
+ function parse(text, f) {
36
+ var convert,
37
+ columns,
38
+ rows = parseRows(text, function (row, i) {
39
+ if (convert) return convert(row, i - 1);
40
+ (columns = row),
41
+ (convert = f
42
+ ? customConverter(row, f)
43
+ : objectConverter(row));
44
+ });
45
+ rows.columns = columns || [];
46
+ return rows;
47
+ }
48
+
49
+ function parseRows(text, f) {
50
+ var rows = [], // output rows
51
+ N = text.length,
52
+ I = 0, // current character index
53
+ n = 0, // current line number
54
+ t, // current token
55
+ eof = N <= 0, // current token followed by EOF?
56
+ eol = false; // current token followed by EOL?
57
+
58
+ // Strip the trailing newline.
59
+ if (text.charCodeAt(N - 1) === NEWLINE) --N;
60
+ if (text.charCodeAt(N - 1) === RETURN) --N;
61
+
62
+ function token() {
63
+ if (eof) return EOF;
64
+ if (eol) return (eol = false), EOL;
65
+
66
+ // Unescape quotes.
67
+ var i,
68
+ j = I,
69
+ c;
70
+ if (text.charCodeAt(j) === QUOTE) {
71
+ while (
72
+ (I++ < N && text.charCodeAt(I) !== QUOTE) ||
73
+ text.charCodeAt(++I) === QUOTE
74
+ );
75
+ if ((i = I) >= N) eof = true;
76
+ else if ((c = text.charCodeAt(I++)) === NEWLINE)
77
+ eol = true;
78
+ else if (c === RETURN) {
79
+ eol = true;
80
+ if (text.charCodeAt(I) === NEWLINE) ++I;
81
+ }
82
+ return text.slice(j + 1, i - 1).replace(/""/g, '"');
83
+ }
84
+
85
+ // Find next delimiter or newline.
86
+ while (I < N) {
87
+ if ((c = text.charCodeAt((i = I++))) === NEWLINE)
88
+ eol = true;
89
+ else if (c === RETURN) {
90
+ eol = true;
91
+ if (text.charCodeAt(I) === NEWLINE) ++I;
92
+ } else if (c !== DELIMITER) continue;
93
+ return text.slice(j, i);
94
+ }
95
+
96
+ // Return last token before EOF.
97
+ return (eof = true), text.slice(j, N);
98
+ }
99
+
100
+ while ((t = token()) !== EOF) {
101
+ var row = [];
102
+ while (t !== EOL && t !== EOF)
103
+ row.push(t), (t = token());
104
+ if (f && (row = f(row, n++)) == null) continue;
105
+ rows.push(row);
106
+ }
107
+
108
+ return rows;
109
+ }
110
+
111
+ return {
112
+ parse: parse,
113
+ };
114
+ }
115
+
116
+ var csv = dsv(',');
117
+
118
+ var csvParse = csv.parse;
119
+
120
+ var tsv = dsv('\t');
121
+
122
+ var tsvParse = tsv.parse;
123
+
124
+ export { csvParse, tsvParse };`;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformDSV = void 0;
4
+ const parseId_1 = require("../parseId");
5
+ const dsvParseSrc_1 = require("./dsvParseSrc");
6
+ const DEBUG = false;
7
+ // Escape backticks in a string so that it can be
8
+ // used in a template literal. Also need to escape backslashes.
9
+ const escapeBackticks = (str) =>
10
+ // str.replace(/`/g, '\\`');
11
+ str.replace(/\\/g, "\\\\").replace(/`/g, "\\`");
12
+ // Responsible for loading CSV and TSV files, which are
13
+ // in general called Delimiter-Separated Values (DSV).
14
+ const transformDSV = () => ({
15
+ name: "transformDSV",
16
+ // `id` here is of the form
17
+ // `{vizId}/{fileName}`
18
+ transform: async (text, id) => {
19
+ DEBUG && console.log("[transformDSV]: load() " + id);
20
+ const { vizId, fileName } = (0, parseId_1.parseId)(id);
21
+ DEBUG &&
22
+ console.log(" [transformDSV] vizId: " + vizId);
23
+ DEBUG &&
24
+ console.log(" [transformDSV] fileName: " + fileName);
25
+ const isCSV = fileName.endsWith(".csv");
26
+ const isTSV = fileName.endsWith(".tsv");
27
+ if (isCSV || isTSV) {
28
+ DEBUG &&
29
+ console.log(" [transformDSV] tracking DSV import for " +
30
+ id);
31
+ const parseFunction = isCSV ? "csvParse" : "tsvParse";
32
+ return {
33
+ code: `
34
+ ${dsvParseSrc_1.dsvParseSrc}
35
+ const data = ${parseFunction}(\`${escapeBackticks(text)}\`);
36
+ export default data;
37
+ `,
38
+ map: { mappings: "" },
39
+ };
40
+ }
41
+ return undefined;
42
+ },
43
+ });
44
+ exports.transformDSV = transformDSV;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformSvelte = exports.svelteCompilerUrl = void 0;
4
+ const parseId_1 = require("./parseId");
5
+ const debug = false;
6
+ // The cache of fetched files.
7
+ const fetchedFileCache = new Map();
8
+ let compile;
9
+ const svelteURL = "https://cdn.jsdelivr.net/npm/svelte@4.2.9";
10
+ exports.svelteCompilerUrl = `${svelteURL}/compiler.cjs`;
11
+ // Responsible for transforming Svelte files.
12
+ // Inspired by:
13
+ // * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/compiler/index.js#L2
14
+ // * https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L358
15
+ // * https://github.com/sveltejs/rollup-plugin-svelte/blob/master/index.js#L146C4-L146C51
16
+ const transformSvelte = ({ getSvelteCompiler, }) => ({
17
+ name: "transformSvelte",
18
+ load: async (resolved) => {
19
+ if (!resolved.startsWith(svelteURL)) {
20
+ return;
21
+ }
22
+ if (debug) {
23
+ console.log("[transformSvelte]: load() " + resolved);
24
+ }
25
+ const cachedFile = fetchedFileCache.get(resolved);
26
+ if (cachedFile)
27
+ return cachedFile;
28
+ const fetchedFile = await fetch(resolved).then((res) => res.text());
29
+ fetchedFileCache.set(resolved, fetchedFile);
30
+ return fetchedFile;
31
+ },
32
+ // From https://github.com/sveltejs/sites/blob/master/packages/repl/src/lib/workers/bundler/index.js#L255C2-L271C5
33
+ resolveId: async (importee, importer) => {
34
+ if (debug) {
35
+ console.log("[transformSvelte] resolveId() " + importee);
36
+ console.log("importee: " + importee);
37
+ console.log("importer: " + importer);
38
+ }
39
+ // importing from Svelte
40
+ if (importee === `svelte`) {
41
+ return `${svelteURL}/src/runtime/index.js`;
42
+ }
43
+ if (importee.startsWith(`svelte/`)) {
44
+ const sub_path = importee.slice(7);
45
+ return `${svelteURL}/src/runtime/${sub_path}/index.js`;
46
+ }
47
+ // importing from a URL
48
+ if (/^https?:/.test(importee))
49
+ return importee;
50
+ // Relative imports
51
+ if (importee.startsWith(".")) {
52
+ if (importer && importer.startsWith(svelteURL)) {
53
+ const resolved = new URL(importee, importer).href;
54
+ const url = new URL(importee, importer).href;
55
+ if (debug) {
56
+ console.log("[transformSvelte] resolveId() " + resolved);
57
+ }
58
+ return resolved;
59
+ }
60
+ }
61
+ },
62
+ transform: async (code, id) => {
63
+ const { fileName } = (0, parseId_1.parseId)(id);
64
+ const isSvelte = fileName.endsWith(".svelte");
65
+ if (isSvelte) {
66
+ if (!compile) {
67
+ if (!getSvelteCompiler) {
68
+ throw new Error("Svelte compiler not available");
69
+ }
70
+ compile = await getSvelteCompiler();
71
+ }
72
+ const compiled = compile(code, {
73
+ filename: fileName,
74
+ hydratable: true,
75
+ });
76
+ return compiled.js;
77
+ }
78
+ return undefined;
79
+ },
80
+ });
81
+ exports.transformSvelte = transformSvelte;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.v3Build = void 0;
4
+ const computeBundleJSV3_1 = require("./computeBundleJSV3");
5
+ const htmlTemplate_1 = require("./htmlTemplate");
6
+ const parseId_1 = require("./parseId");
7
+ const viz_utils_1 = require("@vizhub/viz-utils");
8
+ const v3Build = async ({ files, rollup, enableSourcemap = true, vizCache, vizId, slugCache, getSvelteCompiler, }) => {
9
+ const { src, cssFiles } = await (0, computeBundleJSV3_1.computeBundleJSV3)({
10
+ files,
11
+ rollup,
12
+ enableSourcemap,
13
+ vizCache,
14
+ vizId,
15
+ slugCache,
16
+ getSvelteCompiler,
17
+ });
18
+ // Generate CSS styles from imported CSS files
19
+ let styles = "";
20
+ // Inject CSS files.
21
+ if (cssFiles.length > 0) {
22
+ for (let i = 0; i < cssFiles.length; i++) {
23
+ const id = cssFiles[i];
24
+ const indent = i > 0 ? " " : "\n ";
25
+ const styleElementId = "injected-style" + id;
26
+ const { vizId, fileName } = (0, parseId_1.parseId)(id);
27
+ const content = await vizCache.get(vizId);
28
+ const src = (0, viz_utils_1.getFileText)(content, fileName);
29
+ styles += `${indent}<style id="${styleElementId}">${src}</style>`;
30
+ }
31
+ }
32
+ return (0, htmlTemplate_1.htmlTemplate)({ cdn: "", src, styles });
33
+ };
34
+ exports.v3Build = v3Build;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createVizCache = void 0;
4
+ // A cache of viz content.
5
+ // For use in resolving imports from other vizzes.
6
+ // Runs both on the server and in the browser.
7
+ const createVizCache = ({ initialContents, handleCacheMiss, }) => {
8
+ // Track the content of cached vizzes.
9
+ const contentMap = new Map(initialContents.map((content) => [content.id, content]));
10
+ // Gets the content of a viz.
11
+ // Returns the cached content if it exists.
12
+ // Otherwise, calls handleCacheMiss to fetch the content.
13
+ const get = async (vizId) => {
14
+ const cachedContent = contentMap.get(vizId);
15
+ // Cache hit
16
+ if (cachedContent !== undefined) {
17
+ return cachedContent;
18
+ }
19
+ // Cache miss
20
+ if (!handleCacheMiss) {
21
+ throw new Error(`Unresolved import from vizId ${vizId}, cache miss handler not provided.`);
22
+ }
23
+ const freshContent = await handleCacheMiss(vizId);
24
+ if (freshContent) {
25
+ contentMap.set(vizId, freshContent);
26
+ return freshContent;
27
+ }
28
+ // TODO surface this error to the user
29
+ throw new Error(`Unresolved import from vizId ${vizId}`);
30
+ };
31
+ // Updates the content of a viz in the cache.
32
+ const set = (content) => {
33
+ contentMap.set(content.id, content);
34
+ };
35
+ const invalidate = (vizId) => {
36
+ contentMap.delete(vizId);
37
+ };
38
+ return { get, set, invalidate };
39
+ };
40
+ exports.createVizCache = createVizCache;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const vizCache_1 = require("./vizCache");
5
+ const v3_1 = require("../test/fixtures/v3");
6
+ (0, vitest_1.describe)("VizCache", () => {
7
+ (0, vitest_1.describe)("VizCache - get method", () => {
8
+ (0, vitest_1.it)("should return content from cache if available", async () => {
9
+ const vizCache = (0, vizCache_1.createVizCache)({
10
+ initialContents: [v3_1.sampleVizContent],
11
+ handleCacheMiss: vitest_1.vi.fn(),
12
+ });
13
+ const content = await vizCache.get(v3_1.sampleVizContent.id);
14
+ (0, vitest_1.expect)(content).toEqual(v3_1.sampleVizContent);
15
+ (0, vitest_1.expect)(vitest_1.vi.fn()).toHaveBeenCalledTimes(0); // handleCacheMiss should not be called
16
+ });
17
+ (0, vitest_1.it)("should fetch content on cache miss and store it", async () => {
18
+ const handleCacheMissMock = vitest_1.vi
19
+ .fn()
20
+ .mockResolvedValue(v3_1.sampleVizContent);
21
+ const vizCache = (0, vizCache_1.createVizCache)({
22
+ initialContents: [],
23
+ handleCacheMiss: handleCacheMissMock,
24
+ });
25
+ const content = await vizCache.get(v3_1.sampleVizContent.id);
26
+ (0, vitest_1.expect)(handleCacheMissMock).toHaveBeenCalledWith(v3_1.sampleVizContent.id);
27
+ (0, vitest_1.expect)(content).toEqual(v3_1.sampleVizContent);
28
+ // Verify that the cache now contains the fetched content
29
+ const cachedContent = await vizCache.get(v3_1.sampleVizContent.id);
30
+ (0, vitest_1.expect)(cachedContent).toEqual(v3_1.sampleVizContent);
31
+ });
32
+ (0, vitest_1.it)("should throw an error if handleCacheMiss does not return content", async () => {
33
+ const handleCacheMissMock = vitest_1.vi
34
+ .fn()
35
+ .mockResolvedValue(undefined);
36
+ const vizCache = (0, vizCache_1.createVizCache)({
37
+ initialContents: [],
38
+ handleCacheMiss: handleCacheMissMock,
39
+ });
40
+ await (0, vitest_1.expect)(vizCache.get("nonexistentId")).rejects.toThrow("Unresolved import from vizId nonexistentId");
41
+ });
42
+ // Add tests for set
43
+ });
44
+ (0, vitest_1.describe)("VizCache - set method", () => {
45
+ (0, vitest_1.it)("should add new content to the cache", async () => {
46
+ const vizCache = (0, vizCache_1.createVizCache)({
47
+ initialContents: [],
48
+ handleCacheMiss: vitest_1.vi.fn(),
49
+ });
50
+ const newContent = {
51
+ id: "newContent",
52
+ files: {},
53
+ title: "New Content",
54
+ };
55
+ vizCache.set(newContent);
56
+ // Verify new content is added
57
+ const content = await vizCache.get(newContent.id);
58
+ (0, vitest_1.expect)(content).toEqual(newContent);
59
+ });
60
+ (0, vitest_1.it)("should update existing content in the cache", async () => {
61
+ const updatedContent = {
62
+ ...v3_1.sampleVizContent,
63
+ title: "Updated Content Title",
64
+ };
65
+ const vizCache = (0, vizCache_1.createVizCache)({
66
+ initialContents: [v3_1.sampleVizContent],
67
+ handleCacheMiss: vitest_1.vi.fn(),
68
+ });
69
+ // Update existing content
70
+ vizCache.set(updatedContent);
71
+ // Verify content is updated
72
+ const content = await vizCache.get(updatedContent.id);
73
+ (0, vitest_1.expect)(content).toEqual(updatedContent);
74
+ });
75
+ (0, vitest_1.it)("should keep the cache consistent after multiple set operations", async () => {
76
+ const vizCache = (0, vizCache_1.createVizCache)({
77
+ initialContents: [],
78
+ handleCacheMiss: vitest_1.vi.fn(),
79
+ });
80
+ // Adding multiple contents
81
+ const contentA = {
82
+ id: "contentA",
83
+ files: {},
84
+ title: "Content A",
85
+ };
86
+ const contentB = {
87
+ id: "contentB",
88
+ files: {},
89
+ title: "Content B",
90
+ };
91
+ vizCache.set(contentA);
92
+ vizCache.set(contentB);
93
+ // Verify both contents are retrievable
94
+ const retrievedA = await vizCache.get(contentA.id);
95
+ const retrievedB = await vizCache.get(contentB.id);
96
+ (0, vitest_1.expect)(retrievedA).toEqual(contentA);
97
+ (0, vitest_1.expect)(retrievedB).toEqual(contentB);
98
+ });
99
+ });
100
+ });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vizLoad = void 0;
4
+ const parseId_1 = require("./parseId");
5
+ const viz_utils_1 = require("@vizhub/viz-utils");
6
+ const debug = false;
7
+ // Responsible for loading all imports and
8
+ // tracking which CSS files are imported.
9
+ // Throws an error if a file is imported but not found.
10
+ const vizLoad = ({ vizCache, trackCSSImport, }) => ({
11
+ name: "vizLoad",
12
+ // `id` here is of the form
13
+ // `{vizId}/{fileName}`
14
+ load: async (id) => {
15
+ if (debug) {
16
+ console.log("[vizLoadCSS]: load() " + id);
17
+ }
18
+ const { vizId, fileName } = (0, parseId_1.parseId)(id);
19
+ if (debug) {
20
+ console.log(" [vizLoadCSS] vizId: " + vizId);
21
+ console.log(" [vizLoadCSS] fileName: " + fileName);
22
+ }
23
+ // For CSS imports, all we need to do here is
24
+ // keep track of them so they can be injected
25
+ // into the IFrame later.
26
+ if (fileName.endsWith(".css")) {
27
+ if (debug) {
28
+ console.log(" [vizResolve] tracking CSS import for " + id);
29
+ }
30
+ // The import is tracked here so that it can be
31
+ // injected into the IFrame later, external to the
32
+ // Rollup build.
33
+ trackCSSImport(id);
34
+ // TODO consider using Rollup's `emitFile` to emit a CSS file.
35
+ return "";
36
+ }
37
+ const content = await vizCache.get(vizId);
38
+ const fileText = (0, viz_utils_1.getFileText)(content, fileName);
39
+ // If a file is imported but not found, throw an error.
40
+ if (fileText === null) {
41
+ throw new Error(`Imported file "${fileName}" not found.`);
42
+ // TODO ideally show username/slug instead of vizId
43
+ // `Imported file "${fileName}" not found in viz ${vizId}`,
44
+ // `Imported file "${fileName}" not found.`,
45
+ // );
46
+ }
47
+ return fileText;
48
+ },
49
+ });
50
+ exports.vizLoad = vizLoad;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vizResolve = void 0;
4
+ const extractVizImport_1 = require("./extractVizImport");
5
+ const parseId_1 = require("./parseId");
6
+ const viz_utils_1 = require("@vizhub/viz-utils");
7
+ const debug = false;
8
+ const vizResolve = ({ vizId, slugCache, }) => ({
9
+ name: "vizResolve",
10
+ resolveId: async (id, importer) => {
11
+ if (debug) {
12
+ console.log("[vizIdResolve] resolveId() " + id);
13
+ console.log(" importer: " + importer);
14
+ }
15
+ // Handle virtual file system resolution
16
+ // .e.g. `import { foo } from './foo.js'`
17
+ // .e.g. `import { foo } from './foo'`
18
+ if (id.startsWith("./") &&
19
+ !importer?.startsWith("https://")) {
20
+ let fileName = id.substring(2);
21
+ // Handle CSS files
22
+ // e.g. `import './styles.css'`
23
+ // Handle JS files
24
+ // e.g. `import { foo } from './foo.js'`
25
+ // e.g. `import { foo } from './foo'`
26
+ if (!fileName.endsWith(".js") &&
27
+ !fileName.endsWith(".css") &&
28
+ !fileName.endsWith(".csv") &&
29
+ !fileName.endsWith(".svelte")) {
30
+ fileName += ".js";
31
+ }
32
+ // const js = (name: string) =>
33
+ // name.endsWith('.js') ? name : name + '.js';
34
+ // If there is an importer, then the file is not part of
35
+ // the entry point, so it should be resolved relative
36
+ // to the importer's directory
37
+ if (importer) {
38
+ const { vizId: importerVizId, fileName: importerFileName, } = (0, parseId_1.parseId)(importer);
39
+ // Get the directory of the importing file
40
+ const importerDir = importerFileName
41
+ .split("/")
42
+ .slice(0, -1)
43
+ .join("/");
44
+ // Combine the directory with the imported file name
45
+ const resolvedFileName = importerDir
46
+ ? `${importerDir}/${fileName}`
47
+ : fileName;
48
+ return `${importerVizId}/${resolvedFileName}`;
49
+ }
50
+ return vizId + "/" + fileName;
51
+ }
52
+ // Handle viz import resolution
53
+ // e.g. `import { foo } from '@curran/98e6d6509a1e407897d4f238a330efec'`
54
+ // e.g. `import { foo } from '@curran/scatter-plot'`
55
+ const vizImport = (0, extractVizImport_1.extractVizImport)(id);
56
+ if (vizImport) {
57
+ let vizId;
58
+ if ((0, viz_utils_1.isVizId)(vizImport.idOrSlug)) {
59
+ vizId = vizImport.idOrSlug;
60
+ }
61
+ else {
62
+ if (!slugCache) {
63
+ throw new Error("slugCache is required to import by slug in v3 runtime");
64
+ }
65
+ vizId = await slugCache.get(`${vizImport.userName}/${vizImport.idOrSlug}`);
66
+ }
67
+ return vizId + "/index.js";
68
+ }
69
+ // If neither condition is met, return undefined.
70
+ return undefined;
71
+ },
72
+ });
73
+ exports.vizResolve = vizResolve;