rowpipe 2.2.0 → 2.10.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 (345) hide show
  1. package/README.md +35 -4
  2. package/dist/analytics/abtest.d.ts +39 -0
  3. package/dist/analytics/abtest.d.ts.map +1 -0
  4. package/dist/analytics/abtest.js +266 -0
  5. package/dist/analytics/abtest.js.map +1 -0
  6. package/dist/analytics/cluster.d.ts +25 -0
  7. package/dist/analytics/cluster.d.ts.map +1 -0
  8. package/dist/analytics/cluster.js +212 -0
  9. package/dist/analytics/cluster.js.map +1 -0
  10. package/dist/analytics/cohort.d.ts +22 -0
  11. package/dist/analytics/cohort.d.ts.map +1 -0
  12. package/dist/analytics/cohort.js +170 -0
  13. package/dist/analytics/cohort.js.map +1 -0
  14. package/dist/analytics/correlation.d.ts +15 -0
  15. package/dist/analytics/correlation.d.ts.map +1 -0
  16. package/dist/analytics/correlation.js +116 -0
  17. package/dist/analytics/correlation.js.map +1 -0
  18. package/dist/analytics/crosstab.d.ts +27 -0
  19. package/dist/analytics/crosstab.d.ts.map +1 -0
  20. package/dist/analytics/crosstab.js +90 -0
  21. package/dist/analytics/crosstab.js.map +1 -0
  22. package/dist/analytics/entropy.d.ts +23 -0
  23. package/dist/analytics/entropy.d.ts.map +1 -0
  24. package/dist/analytics/entropy.js +180 -0
  25. package/dist/analytics/entropy.js.map +1 -0
  26. package/dist/analytics/funnel.d.ts +29 -0
  27. package/dist/analytics/funnel.d.ts.map +1 -0
  28. package/dist/analytics/funnel.js +170 -0
  29. package/dist/analytics/funnel.js.map +1 -0
  30. package/dist/analytics/ngrams.d.ts +25 -0
  31. package/dist/analytics/ngrams.d.ts.map +1 -0
  32. package/dist/analytics/ngrams.js +110 -0
  33. package/dist/analytics/ngrams.js.map +1 -0
  34. package/dist/analytics/outliers.d.ts +25 -0
  35. package/dist/analytics/outliers.d.ts.map +1 -0
  36. package/dist/analytics/outliers.js +114 -0
  37. package/dist/analytics/outliers.js.map +1 -0
  38. package/dist/analytics/pareto.d.ts +36 -0
  39. package/dist/analytics/pareto.d.ts.map +1 -0
  40. package/dist/analytics/pareto.js +140 -0
  41. package/dist/analytics/pareto.js.map +1 -0
  42. package/dist/analytics/quantiles.d.ts +18 -0
  43. package/dist/analytics/quantiles.d.ts.map +1 -0
  44. package/dist/analytics/quantiles.js +62 -0
  45. package/dist/analytics/quantiles.js.map +1 -0
  46. package/dist/analytics/regression.d.ts +18 -0
  47. package/dist/analytics/regression.d.ts.map +1 -0
  48. package/dist/analytics/regression.js +79 -0
  49. package/dist/analytics/regression.js.map +1 -0
  50. package/dist/analytics/rfm.d.ts +41 -0
  51. package/dist/analytics/rfm.d.ts.map +1 -0
  52. package/dist/analytics/rfm.js +221 -0
  53. package/dist/analytics/rfm.js.map +1 -0
  54. package/dist/analytics/stats.d.ts.map +1 -1
  55. package/dist/analytics/stats.js +65 -15
  56. package/dist/analytics/stats.js.map +1 -1
  57. package/dist/analytics/technical.d.ts +19 -0
  58. package/dist/analytics/technical.d.ts.map +1 -0
  59. package/dist/analytics/technical.js +365 -0
  60. package/dist/analytics/technical.js.map +1 -0
  61. package/dist/cli/commands/abtest.d.ts +10 -0
  62. package/dist/cli/commands/abtest.d.ts.map +1 -0
  63. package/dist/cli/commands/abtest.js +68 -0
  64. package/dist/cli/commands/abtest.js.map +1 -0
  65. package/dist/cli/commands/cluster.d.ts +9 -0
  66. package/dist/cli/commands/cluster.d.ts.map +1 -0
  67. package/dist/cli/commands/cluster.js +77 -0
  68. package/dist/cli/commands/cluster.js.map +1 -0
  69. package/dist/cli/commands/cohort.d.ts +10 -0
  70. package/dist/cli/commands/cohort.d.ts.map +1 -0
  71. package/dist/cli/commands/cohort.js +66 -0
  72. package/dist/cli/commands/cohort.js.map +1 -0
  73. package/dist/cli/commands/completion.d.ts +5 -0
  74. package/dist/cli/commands/completion.d.ts.map +1 -0
  75. package/dist/cli/commands/completion.js +7 -0
  76. package/dist/cli/commands/completion.js.map +1 -0
  77. package/dist/cli/commands/concat.d.ts +9 -0
  78. package/dist/cli/commands/concat.d.ts.map +1 -0
  79. package/dist/cli/commands/concat.js +62 -0
  80. package/dist/cli/commands/concat.js.map +1 -0
  81. package/dist/cli/commands/convert.d.ts +2 -0
  82. package/dist/cli/commands/convert.d.ts.map +1 -1
  83. package/dist/cli/commands/convert.js.map +1 -1
  84. package/dist/cli/commands/corr.d.ts +7 -0
  85. package/dist/cli/commands/corr.d.ts.map +1 -0
  86. package/dist/cli/commands/corr.js +70 -0
  87. package/dist/cli/commands/corr.js.map +1 -0
  88. package/dist/cli/commands/crosstab.d.ts +11 -0
  89. package/dist/cli/commands/crosstab.d.ts.map +1 -0
  90. package/dist/cli/commands/crosstab.js +71 -0
  91. package/dist/cli/commands/crosstab.js.map +1 -0
  92. package/dist/cli/commands/entropy.d.ts +9 -0
  93. package/dist/cli/commands/entropy.d.ts.map +1 -0
  94. package/dist/cli/commands/entropy.js +71 -0
  95. package/dist/cli/commands/entropy.js.map +1 -0
  96. package/dist/cli/commands/explode.d.ts +8 -0
  97. package/dist/cli/commands/explode.d.ts.map +1 -0
  98. package/dist/cli/commands/explode.js +61 -0
  99. package/dist/cli/commands/explode.js.map +1 -0
  100. package/dist/cli/commands/fetch.d.ts +8 -0
  101. package/dist/cli/commands/fetch.d.ts.map +1 -0
  102. package/dist/cli/commands/fetch.js +41 -0
  103. package/dist/cli/commands/fetch.js.map +1 -0
  104. package/dist/cli/commands/files.d.ts +1 -1
  105. package/dist/cli/commands/files.d.ts.map +1 -1
  106. package/dist/cli/commands/flatten.d.ts +8 -0
  107. package/dist/cli/commands/flatten.d.ts.map +1 -0
  108. package/dist/cli/commands/flatten.js +57 -0
  109. package/dist/cli/commands/flatten.js.map +1 -0
  110. package/dist/cli/commands/freq.d.ts +10 -0
  111. package/dist/cli/commands/freq.d.ts.map +1 -0
  112. package/dist/cli/commands/freq.js +122 -0
  113. package/dist/cli/commands/freq.js.map +1 -0
  114. package/dist/cli/commands/funnel.d.ts +11 -0
  115. package/dist/cli/commands/funnel.d.ts.map +1 -0
  116. package/dist/cli/commands/funnel.js +69 -0
  117. package/dist/cli/commands/funnel.js.map +1 -0
  118. package/dist/cli/commands/fuzzy-join.d.ts +25 -0
  119. package/dist/cli/commands/fuzzy-join.d.ts.map +1 -0
  120. package/dist/cli/commands/fuzzy-join.js +85 -0
  121. package/dist/cli/commands/fuzzy-join.js.map +1 -0
  122. package/dist/cli/commands/generate.d.ts +8 -0
  123. package/dist/cli/commands/generate.d.ts.map +1 -0
  124. package/dist/cli/commands/generate.js +34 -0
  125. package/dist/cli/commands/generate.js.map +1 -0
  126. package/dist/cli/commands/mask.d.ts +6 -0
  127. package/dist/cli/commands/mask.d.ts.map +1 -0
  128. package/dist/cli/commands/mask.js +58 -0
  129. package/dist/cli/commands/mask.js.map +1 -0
  130. package/dist/cli/commands/ngrams.d.ts +11 -0
  131. package/dist/cli/commands/ngrams.d.ts.map +1 -0
  132. package/dist/cli/commands/ngrams.js +70 -0
  133. package/dist/cli/commands/ngrams.js.map +1 -0
  134. package/dist/cli/commands/outliers.d.ts +13 -0
  135. package/dist/cli/commands/outliers.d.ts.map +1 -0
  136. package/dist/cli/commands/outliers.js +58 -0
  137. package/dist/cli/commands/outliers.js.map +1 -0
  138. package/dist/cli/commands/pareto.d.ts +8 -0
  139. package/dist/cli/commands/pareto.d.ts.map +1 -0
  140. package/dist/cli/commands/pareto.js +80 -0
  141. package/dist/cli/commands/pareto.js.map +1 -0
  142. package/dist/cli/commands/partition.d.ts +8 -0
  143. package/dist/cli/commands/partition.d.ts.map +1 -0
  144. package/dist/cli/commands/partition.js +44 -0
  145. package/dist/cli/commands/partition.js.map +1 -0
  146. package/dist/cli/commands/pipeline.d.ts +6 -0
  147. package/dist/cli/commands/pipeline.d.ts.map +1 -1
  148. package/dist/cli/commands/pipeline.js +22 -0
  149. package/dist/cli/commands/pipeline.js.map +1 -1
  150. package/dist/cli/commands/pivot.d.ts +11 -0
  151. package/dist/cli/commands/pivot.d.ts.map +1 -0
  152. package/dist/cli/commands/pivot.js +58 -0
  153. package/dist/cli/commands/pivot.js.map +1 -0
  154. package/dist/cli/commands/plot.d.ts +12 -0
  155. package/dist/cli/commands/plot.d.ts.map +1 -0
  156. package/dist/cli/commands/plot.js +123 -0
  157. package/dist/cli/commands/plot.js.map +1 -0
  158. package/dist/cli/commands/quantiles.d.ts +7 -0
  159. package/dist/cli/commands/quantiles.d.ts.map +1 -0
  160. package/dist/cli/commands/quantiles.js +94 -0
  161. package/dist/cli/commands/quantiles.js.map +1 -0
  162. package/dist/cli/commands/regression.d.ts +7 -0
  163. package/dist/cli/commands/regression.d.ts.map +1 -0
  164. package/dist/cli/commands/regression.js +86 -0
  165. package/dist/cli/commands/regression.js.map +1 -0
  166. package/dist/cli/commands/report.d.ts +8 -0
  167. package/dist/cli/commands/report.d.ts.map +1 -0
  168. package/dist/cli/commands/report.js +36 -0
  169. package/dist/cli/commands/report.js.map +1 -0
  170. package/dist/cli/commands/rfm.d.ts +11 -0
  171. package/dist/cli/commands/rfm.d.ts.map +1 -0
  172. package/dist/cli/commands/rfm.js +78 -0
  173. package/dist/cli/commands/rfm.js.map +1 -0
  174. package/dist/cli/commands/serve.d.ts +7 -0
  175. package/dist/cli/commands/serve.d.ts.map +1 -0
  176. package/dist/cli/commands/serve.js +43 -0
  177. package/dist/cli/commands/serve.js.map +1 -0
  178. package/dist/cli/commands/split.d.ts +8 -0
  179. package/dist/cli/commands/split.d.ts.map +1 -0
  180. package/dist/cli/commands/split.js +43 -0
  181. package/dist/cli/commands/split.js.map +1 -0
  182. package/dist/cli/commands/table.d.ts +9 -0
  183. package/dist/cli/commands/table.d.ts.map +1 -0
  184. package/dist/cli/commands/table.js +9 -0
  185. package/dist/cli/commands/table.js.map +1 -0
  186. package/dist/cli/commands/technical.d.ts +8 -0
  187. package/dist/cli/commands/technical.d.ts.map +1 -0
  188. package/dist/cli/commands/technical.js +54 -0
  189. package/dist/cli/commands/technical.js.map +1 -0
  190. package/dist/cli/commands/test.d.ts +7 -0
  191. package/dist/cli/commands/test.d.ts.map +1 -0
  192. package/dist/cli/commands/test.js +53 -0
  193. package/dist/cli/commands/test.js.map +1 -0
  194. package/dist/cli/commands/timeseries.d.ts +11 -0
  195. package/dist/cli/commands/timeseries.d.ts.map +1 -0
  196. package/dist/cli/commands/timeseries.js +82 -0
  197. package/dist/cli/commands/timeseries.js.map +1 -0
  198. package/dist/cli/commands/unpivot.d.ts +12 -0
  199. package/dist/cli/commands/unpivot.d.ts.map +1 -0
  200. package/dist/cli/commands/unpivot.js +59 -0
  201. package/dist/cli/commands/unpivot.js.map +1 -0
  202. package/dist/cli/completion.d.ts +5 -0
  203. package/dist/cli/completion.d.ts.map +1 -0
  204. package/dist/cli/completion.js +194 -0
  205. package/dist/cli/completion.js.map +1 -0
  206. package/dist/cli/index.js +816 -15
  207. package/dist/cli/index.js.map +1 -1
  208. package/dist/core/error-handler.d.ts +38 -0
  209. package/dist/core/error-handler.d.ts.map +1 -0
  210. package/dist/core/error-handler.js +81 -0
  211. package/dist/core/error-handler.js.map +1 -0
  212. package/dist/core/pipeline.d.ts +10 -0
  213. package/dist/core/pipeline.d.ts.map +1 -1
  214. package/dist/core/pipeline.js +14 -0
  215. package/dist/core/pipeline.js.map +1 -1
  216. package/dist/core/types.d.ts +4 -0
  217. package/dist/core/types.d.ts.map +1 -1
  218. package/dist/dataops/fetch.d.ts +27 -0
  219. package/dist/dataops/fetch.d.ts.map +1 -0
  220. package/dist/dataops/fetch.js +150 -0
  221. package/dist/dataops/fetch.js.map +1 -0
  222. package/dist/dataops/generate.d.ts +16 -0
  223. package/dist/dataops/generate.d.ts.map +1 -0
  224. package/dist/dataops/generate.js +201 -0
  225. package/dist/dataops/generate.js.map +1 -0
  226. package/dist/dataops/mask.d.ts +25 -0
  227. package/dist/dataops/mask.d.ts.map +1 -0
  228. package/dist/dataops/mask.js +133 -0
  229. package/dist/dataops/mask.js.map +1 -0
  230. package/dist/dataops/report.d.ts +7 -0
  231. package/dist/dataops/report.d.ts.map +1 -0
  232. package/dist/dataops/report.js +139 -0
  233. package/dist/dataops/report.js.map +1 -0
  234. package/dist/dataops/server.d.ts +10 -0
  235. package/dist/dataops/server.d.ts.map +1 -0
  236. package/dist/dataops/server.js +137 -0
  237. package/dist/dataops/server.js.map +1 -0
  238. package/dist/dataops/test-runner.d.ts +34 -0
  239. package/dist/dataops/test-runner.d.ts.map +1 -0
  240. package/dist/dataops/test-runner.js +128 -0
  241. package/dist/dataops/test-runner.js.map +1 -0
  242. package/dist/db/adapters/sqlite.d.ts +2 -1
  243. package/dist/db/adapters/sqlite.d.ts.map +1 -1
  244. package/dist/db/adapters/sqlite.js +54 -20
  245. package/dist/db/adapters/sqlite.js.map +1 -1
  246. package/dist/diff/engine.d.ts.map +1 -1
  247. package/dist/diff/engine.js +73 -16
  248. package/dist/diff/engine.js.map +1 -1
  249. package/dist/diff/storage/disk-index.d.ts +10 -1
  250. package/dist/diff/storage/disk-index.d.ts.map +1 -1
  251. package/dist/diff/storage/disk-index.js +95 -13
  252. package/dist/diff/storage/disk-index.js.map +1 -1
  253. package/dist/files/hash.d.ts +9 -2
  254. package/dist/files/hash.d.ts.map +1 -1
  255. package/dist/files/hash.js +9 -10
  256. package/dist/files/hash.js.map +1 -1
  257. package/dist/files/reader.d.ts.map +1 -1
  258. package/dist/files/reader.js +17 -10
  259. package/dist/files/reader.js.map +1 -1
  260. package/dist/files/types.d.ts +2 -1
  261. package/dist/files/types.d.ts.map +1 -1
  262. package/dist/index.d.ts +65 -1
  263. package/dist/index.d.ts.map +1 -1
  264. package/dist/index.js +66 -1
  265. package/dist/index.js.map +1 -1
  266. package/dist/planner/executor.d.ts.map +1 -1
  267. package/dist/planner/executor.js +17 -0
  268. package/dist/planner/executor.js.map +1 -1
  269. package/dist/planner/types.d.ts +11 -0
  270. package/dist/planner/types.d.ts.map +1 -1
  271. package/dist/readers/csv.d.ts.map +1 -1
  272. package/dist/readers/csv.js +206 -164
  273. package/dist/readers/csv.js.map +1 -1
  274. package/dist/readers/json.d.ts.map +1 -1
  275. package/dist/readers/json.js +145 -121
  276. package/dist/readers/json.js.map +1 -1
  277. package/dist/readers/jsonl.d.ts.map +1 -1
  278. package/dist/readers/jsonl.js +51 -31
  279. package/dist/readers/jsonl.js.map +1 -1
  280. package/dist/rowpipe +4 -0
  281. package/dist/transforms/concat.d.ts +26 -0
  282. package/dist/transforms/concat.d.ts.map +1 -0
  283. package/dist/transforms/concat.js +57 -0
  284. package/dist/transforms/concat.js.map +1 -0
  285. package/dist/transforms/explode.d.ts +14 -0
  286. package/dist/transforms/explode.d.ts.map +1 -0
  287. package/dist/transforms/explode.js +81 -0
  288. package/dist/transforms/explode.js.map +1 -0
  289. package/dist/transforms/flatten.d.ts +12 -0
  290. package/dist/transforms/flatten.d.ts.map +1 -0
  291. package/dist/transforms/flatten.js +65 -0
  292. package/dist/transforms/flatten.js.map +1 -0
  293. package/dist/transforms/fuzzy-join.d.ts +53 -0
  294. package/dist/transforms/fuzzy-join.d.ts.map +1 -0
  295. package/dist/transforms/fuzzy-join.js +347 -0
  296. package/dist/transforms/fuzzy-join.js.map +1 -0
  297. package/dist/transforms/jit-compiler.d.ts.map +1 -1
  298. package/dist/transforms/jit-compiler.js +103 -14
  299. package/dist/transforms/jit-compiler.js.map +1 -1
  300. package/dist/transforms/join/index-storage.d.ts +8 -5
  301. package/dist/transforms/join/index-storage.d.ts.map +1 -1
  302. package/dist/transforms/join/index-storage.js +91 -54
  303. package/dist/transforms/join/index-storage.js.map +1 -1
  304. package/dist/transforms/map.d.ts +6 -2
  305. package/dist/transforms/map.d.ts.map +1 -1
  306. package/dist/transforms/map.js +64 -26
  307. package/dist/transforms/map.js.map +1 -1
  308. package/dist/transforms/partition.d.ts +35 -0
  309. package/dist/transforms/partition.d.ts.map +1 -0
  310. package/dist/transforms/partition.js +150 -0
  311. package/dist/transforms/partition.js.map +1 -0
  312. package/dist/transforms/pivot.d.ts +16 -0
  313. package/dist/transforms/pivot.d.ts.map +1 -0
  314. package/dist/transforms/pivot.js +194 -0
  315. package/dist/transforms/pivot.js.map +1 -0
  316. package/dist/transforms/sort/comparator.d.ts.map +1 -1
  317. package/dist/transforms/sort/comparator.js +153 -24
  318. package/dist/transforms/sort/comparator.js.map +1 -1
  319. package/dist/transforms/sort/external-sort.js +1 -1
  320. package/dist/transforms/sort/external-sort.js.map +1 -1
  321. package/dist/transforms/split.d.ts +17 -0
  322. package/dist/transforms/split.d.ts.map +1 -0
  323. package/dist/transforms/split.js +88 -0
  324. package/dist/transforms/split.js.map +1 -0
  325. package/dist/transforms/timeseries.d.ts +42 -0
  326. package/dist/transforms/timeseries.d.ts.map +1 -0
  327. package/dist/transforms/timeseries.js +276 -0
  328. package/dist/transforms/timeseries.js.map +1 -0
  329. package/dist/transforms/unpivot.d.ts +14 -0
  330. package/dist/transforms/unpivot.d.ts.map +1 -0
  331. package/dist/transforms/unpivot.js +56 -0
  332. package/dist/transforms/unpivot.js.map +1 -0
  333. package/dist/ui/chart.d.ts +30 -0
  334. package/dist/ui/chart.d.ts.map +1 -0
  335. package/dist/ui/chart.js +91 -0
  336. package/dist/ui/chart.js.map +1 -0
  337. package/dist/writers/index.d.ts +1 -0
  338. package/dist/writers/index.d.ts.map +1 -1
  339. package/dist/writers/index.js +10 -0
  340. package/dist/writers/index.js.map +1 -1
  341. package/dist/writers/table.d.ts +23 -0
  342. package/dist/writers/table.d.ts.map +1 -0
  343. package/dist/writers/table.js +156 -0
  344. package/dist/writers/table.js.map +1 -0
  345. package/package.json +6 -3
@@ -0,0 +1,81 @@
1
+ /**
2
+ * High-performance streaming Explode transform.
3
+ * Expands arrays or delimited string values into multiple rows (1 -> N).
4
+ */
5
+ export function explodeRows(columnOrOptions, options) {
6
+ const opts = typeof columnOrOptions === "string"
7
+ ? { column: columnOrOptions, ...options }
8
+ : columnOrOptions;
9
+ const column = opts.column;
10
+ const delimiter = opts.delimiter ?? ",";
11
+ const trim = opts.trim !== false;
12
+ const dropEmpty = opts.dropEmpty !== false;
13
+ const preserveNull = opts.preserveNullAndEmpty === true;
14
+ return (input) => {
15
+ return (async function* () {
16
+ let offset = 0;
17
+ for await (const batch of input) {
18
+ const explodedRows = [];
19
+ for (const row of batch.rows) {
20
+ const val = row[column];
21
+ if (val === null || val === undefined) {
22
+ if (preserveNull) {
23
+ explodedRows.push(row);
24
+ }
25
+ continue;
26
+ }
27
+ let items = [];
28
+ if (Array.isArray(val)) {
29
+ items = val;
30
+ }
31
+ else if (typeof val === "string") {
32
+ const trimmed = val.trim();
33
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
34
+ try {
35
+ const parsed = JSON.parse(trimmed);
36
+ if (Array.isArray(parsed)) {
37
+ items = parsed;
38
+ }
39
+ }
40
+ catch {
41
+ // Not valid JSON array, proceed to delimiter split
42
+ }
43
+ }
44
+ if (items.length === 0) {
45
+ items = val.split(delimiter);
46
+ }
47
+ }
48
+ else {
49
+ items = [val];
50
+ }
51
+ let produced = 0;
52
+ for (let item of items) {
53
+ if (typeof item === "string") {
54
+ if (trim)
55
+ item = item.trim();
56
+ if (dropEmpty && item === "")
57
+ continue;
58
+ }
59
+ else if (item === null || item === undefined) {
60
+ if (dropEmpty)
61
+ continue;
62
+ }
63
+ explodedRows.push({ ...row, [column]: item });
64
+ produced++;
65
+ }
66
+ if (produced === 0 && preserveNull) {
67
+ explodedRows.push({ ...row, [column]: null });
68
+ }
69
+ }
70
+ if (explodedRows.length > 0) {
71
+ yield {
72
+ rows: explodedRows,
73
+ offset,
74
+ };
75
+ offset += explodedRows.length;
76
+ }
77
+ }
78
+ })();
79
+ };
80
+ }
81
+ //# sourceMappingURL=explode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explode.js","sourceRoot":"","sources":["../../src/transforms/explode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { TransformFunction } from "../core/types.js";
2
+ export interface FlattenOptions {
3
+ separator?: string;
4
+ maxDepth?: number;
5
+ arrays?: boolean;
6
+ }
7
+ /**
8
+ * High-performance streaming Flatten transform.
9
+ * Flattens nested JSON objects into flat dot-notated columns.
10
+ */
11
+ export declare function flattenRows(options?: FlattenOptions): TransformFunction;
12
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/transforms/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmDD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,iBAAiB,CAwBvE"}
@@ -0,0 +1,65 @@
1
+ function isPlainObject(val) {
2
+ return (val !== null &&
3
+ typeof val === "object" &&
4
+ !Array.isArray(val) &&
5
+ !(val instanceof Date) &&
6
+ !Buffer.isBuffer(val) &&
7
+ !(val instanceof Uint8Array));
8
+ }
9
+ function flattenObject(obj, separator, maxDepth, flattenArrays, currentDepth = 1, prefix = "") {
10
+ const result = {};
11
+ for (const [key, val] of Object.entries(obj)) {
12
+ const fullKey = prefix ? `${prefix}${separator}${key}` : key;
13
+ if (currentDepth < maxDepth && isPlainObject(val)) {
14
+ const nested = flattenObject(val, separator, maxDepth, flattenArrays, currentDepth + 1, fullKey);
15
+ Object.assign(result, nested);
16
+ }
17
+ else if (currentDepth < maxDepth && flattenArrays && Array.isArray(val)) {
18
+ if (val.length === 0) {
19
+ result[fullKey] = val;
20
+ }
21
+ else {
22
+ val.forEach((item, index) => {
23
+ const arrayKey = `${fullKey}${separator}${index}`;
24
+ if (isPlainObject(item)) {
25
+ const nested = flattenObject(item, separator, maxDepth, flattenArrays, currentDepth + 1, arrayKey);
26
+ Object.assign(result, nested);
27
+ }
28
+ else {
29
+ result[arrayKey] = item;
30
+ }
31
+ });
32
+ }
33
+ }
34
+ else {
35
+ result[fullKey] = val;
36
+ }
37
+ }
38
+ return result;
39
+ }
40
+ /**
41
+ * High-performance streaming Flatten transform.
42
+ * Flattens nested JSON objects into flat dot-notated columns.
43
+ */
44
+ export function flattenRows(options) {
45
+ const separator = options?.separator ?? ".";
46
+ const maxDepth = options?.maxDepth ?? 10;
47
+ const flattenArrays = options?.arrays === true;
48
+ return (input) => {
49
+ return (async function* () {
50
+ let offset = 0;
51
+ for await (const batch of input) {
52
+ const flattenedRows = new Array(batch.rows.length);
53
+ for (let i = 0; i < batch.rows.length; i++) {
54
+ flattenedRows[i] = flattenObject(batch.rows[i], separator, maxDepth, flattenArrays);
55
+ }
56
+ yield {
57
+ rows: flattenedRows,
58
+ offset,
59
+ };
60
+ offset += flattenedRows.length;
61
+ }
62
+ })();
63
+ };
64
+ }
65
+ //# sourceMappingURL=flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/transforms/flatten.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { TabularReader, TransformFunction } from "../core/types.js";
2
+ export type FuzzyMethod = "levenshtein" | "jaro-winkler" | "jaccard" | "soundex";
3
+ export type FuzzyJoinType = "inner" | "left" | "right" | "full";
4
+ export interface FuzzyJoinOptions {
5
+ rightReader: TabularReader;
6
+ leftKey: string;
7
+ rightKey?: string;
8
+ type?: FuzzyJoinType;
9
+ method?: FuzzyMethod;
10
+ threshold?: number;
11
+ bestMatch?: boolean;
12
+ scoreCol?: string;
13
+ prefixRight?: string;
14
+ suffixRight?: string;
15
+ prefixLeft?: string;
16
+ suffixLeft?: string;
17
+ caseInsensitive?: boolean;
18
+ trim?: boolean;
19
+ batchSize?: number;
20
+ }
21
+ /**
22
+ * Levenshtein distance between two strings using single-row dynamic programming buffer.
23
+ */
24
+ export declare function levenshteinDistance(a: string, b: string): number;
25
+ /**
26
+ * Normalized Levenshtein similarity score in [0.0, 1.0].
27
+ */
28
+ export declare function levenshteinSimilarity(a: string, b: string): number;
29
+ /**
30
+ * Jaro similarity score between two strings.
31
+ */
32
+ export declare function jaroSimilarity(s1: string, s2: string): number;
33
+ /**
34
+ * Jaro-Winkler similarity score with standard scaling factor (p = 0.1).
35
+ */
36
+ export declare function jaroWinklerSimilarity(s1: string, s2: string, p?: number): number;
37
+ /**
38
+ * Character N-gram Jaccard similarity score in [0.0, 1.0].
39
+ */
40
+ export declare function jaccardSimilarity(s1: string, s2: string, n?: number): number;
41
+ /**
42
+ * Soundex phonetic representation (Letter + 3 digits).
43
+ */
44
+ export declare function soundex(s: string): string;
45
+ /**
46
+ * Computes similarity between two string values based on chosen fuzzy method.
47
+ */
48
+ export declare function computeSimilarity(a: string, b: string, method: FuzzyMethod): number;
49
+ /**
50
+ * Creates a stream transform that performs streaming fuzzy approximate string joins.
51
+ */
52
+ export declare function fuzzyJoinTransform(options: FuzzyJoinOptions): TransformFunction;
53
+ //# sourceMappingURL=fuzzy-join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-join.d.ts","sourceRoot":"","sources":["../../src/transforms/fuzzy-join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AACjF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,aAAa,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiChE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAsC7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAY,GAAG,MAAM,CAYrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,MAAM,CAuB/E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAanF;AAkFD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,CAiH/E"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Levenshtein distance between two strings using single-row dynamic programming buffer.
3
+ */
4
+ export function levenshteinDistance(a, b) {
5
+ if (a === b)
6
+ return 0;
7
+ if (a.length === 0)
8
+ return b.length;
9
+ if (b.length === 0)
10
+ return a.length;
11
+ const lenA = a.length;
12
+ const lenB = b.length;
13
+ let prevRow = new Int32Array(lenB + 1);
14
+ let currRow = new Int32Array(lenB + 1);
15
+ for (let j = 0; j <= lenB; j++) {
16
+ prevRow[j] = j;
17
+ }
18
+ for (let i = 1; i <= lenA; i++) {
19
+ currRow[0] = i;
20
+ const charA = a.charCodeAt(i - 1);
21
+ for (let j = 1; j <= lenB; j++) {
22
+ const cost = charA === b.charCodeAt(j - 1) ? 0 : 1;
23
+ currRow[j] = Math.min(prevRow[j] + 1, // deletion
24
+ currRow[j - 1] + 1, // insertion
25
+ prevRow[j - 1] + cost // substitution
26
+ );
27
+ }
28
+ const tmp = prevRow;
29
+ prevRow = currRow;
30
+ currRow = tmp;
31
+ }
32
+ return prevRow[lenB];
33
+ }
34
+ /**
35
+ * Normalized Levenshtein similarity score in [0.0, 1.0].
36
+ */
37
+ export function levenshteinSimilarity(a, b) {
38
+ if (a === b)
39
+ return 1.0;
40
+ const maxLen = Math.max(a.length, b.length);
41
+ if (maxLen === 0)
42
+ return 1.0;
43
+ const dist = levenshteinDistance(a, b);
44
+ return Math.max(0, 1 - dist / maxLen);
45
+ }
46
+ /**
47
+ * Jaro similarity score between two strings.
48
+ */
49
+ export function jaroSimilarity(s1, s2) {
50
+ if (s1 === s2)
51
+ return 1.0;
52
+ const len1 = s1.length;
53
+ const len2 = s2.length;
54
+ if (len1 === 0 || len2 === 0)
55
+ return 0.0;
56
+ const matchWindow = Math.floor(Math.max(len1, len2) / 2) - 1;
57
+ const s1Matches = new Uint8Array(len1);
58
+ const s2Matches = new Uint8Array(len2);
59
+ let matches = 0;
60
+ for (let i = 0; i < len1; i++) {
61
+ const start = Math.max(0, i - matchWindow);
62
+ const end = Math.min(i + matchWindow + 1, len2);
63
+ for (let j = start; j < end; j++) {
64
+ if (s2Matches[j])
65
+ continue;
66
+ if (s1[i] !== s2[j])
67
+ continue;
68
+ s1Matches[i] = 1;
69
+ s2Matches[j] = 1;
70
+ matches++;
71
+ break;
72
+ }
73
+ }
74
+ if (matches === 0)
75
+ return 0.0;
76
+ let transpositions = 0;
77
+ let k = 0;
78
+ for (let i = 0; i < len1; i++) {
79
+ if (!s1Matches[i])
80
+ continue;
81
+ while (!s2Matches[k])
82
+ k++;
83
+ if (s1[i] !== s2[k])
84
+ transpositions++;
85
+ k++;
86
+ }
87
+ const m = matches;
88
+ const t = transpositions / 2;
89
+ return (m / len1 + m / len2 + (m - t) / m) / 3;
90
+ }
91
+ /**
92
+ * Jaro-Winkler similarity score with standard scaling factor (p = 0.1).
93
+ */
94
+ export function jaroWinklerSimilarity(s1, s2, p = 0.1) {
95
+ const jaro = jaroSimilarity(s1, s2);
96
+ if (jaro < 0.7)
97
+ return jaro;
98
+ let prefix = 0;
99
+ const maxPrefix = Math.min(4, Math.min(s1.length, s2.length));
100
+ for (let i = 0; i < maxPrefix; i++) {
101
+ if (s1[i] === s2[i])
102
+ prefix++;
103
+ else
104
+ break;
105
+ }
106
+ return jaro + prefix * p * (1 - jaro);
107
+ }
108
+ /**
109
+ * Character N-gram Jaccard similarity score in [0.0, 1.0].
110
+ */
111
+ export function jaccardSimilarity(s1, s2, n = 2) {
112
+ if (s1 === s2)
113
+ return 1.0;
114
+ if (s1.length < n || s2.length < n) {
115
+ return s1 === s2 ? 1.0 : 0.0;
116
+ }
117
+ const ngrams1 = new Set();
118
+ for (let i = 0; i <= s1.length - n; i++) {
119
+ ngrams1.add(s1.slice(i, i + n));
120
+ }
121
+ const ngrams2 = new Set();
122
+ for (let i = 0; i <= s2.length - n; i++) {
123
+ ngrams2.add(s2.slice(i, i + n));
124
+ }
125
+ let intersection = 0;
126
+ for (const gram of ngrams1) {
127
+ if (ngrams2.has(gram))
128
+ intersection++;
129
+ }
130
+ const union = ngrams1.size + ngrams2.size - intersection;
131
+ return union === 0 ? 1.0 : intersection / union;
132
+ }
133
+ /**
134
+ * Soundex phonetic representation (Letter + 3 digits).
135
+ */
136
+ export function soundex(s) {
137
+ const clean = s.toUpperCase().replace(/[^A-Z]/g, "");
138
+ if (!clean)
139
+ return "0000";
140
+ const map = {
141
+ B: "1", F: "1", P: "1", V: "1",
142
+ C: "2", G: "2", J: "2", K: "2", Q: "2", S: "2", X: "2", Z: "2",
143
+ D: "3", T: "3",
144
+ L: "4",
145
+ M: "5", N: "5",
146
+ R: "6",
147
+ };
148
+ const firstChar = clean[0];
149
+ let result = firstChar;
150
+ let lastCode = map[firstChar] || "0";
151
+ for (let i = 1; i < clean.length && result.length < 4; i++) {
152
+ const char = clean[i];
153
+ const code = map[char] || "0";
154
+ if (code !== "0" && code !== lastCode) {
155
+ result += code;
156
+ }
157
+ lastCode = code;
158
+ }
159
+ return (result + "0000").slice(0, 4);
160
+ }
161
+ /**
162
+ * Computes similarity between two string values based on chosen fuzzy method.
163
+ */
164
+ export function computeSimilarity(a, b, method) {
165
+ switch (method) {
166
+ case "levenshtein":
167
+ return levenshteinSimilarity(a, b);
168
+ case "jaro-winkler":
169
+ return jaroWinklerSimilarity(a, b);
170
+ case "jaccard":
171
+ return jaccardSimilarity(a, b, 2);
172
+ case "soundex":
173
+ return soundex(a) === soundex(b) ? 1.0 : 0.0;
174
+ default:
175
+ return levenshteinSimilarity(a, b);
176
+ }
177
+ }
178
+ /**
179
+ * Helper to normalize string for comparison.
180
+ */
181
+ function normalizeKey(val, caseInsensitive, trim) {
182
+ if (val === null || val === undefined)
183
+ return "";
184
+ let str = String(val);
185
+ if (trim)
186
+ str = str.trim();
187
+ if (caseInsensitive)
188
+ str = str.toLowerCase();
189
+ return str;
190
+ }
191
+ /**
192
+ * Merges a left row and right row, handling key/value formatting and score column.
193
+ */
194
+ function mergeFuzzyRows(leftRow, rightRow, leftKey, rightKey, score, options, sampleLeftCols, sampleRightCols) {
195
+ const result = {};
196
+ const prefixRight = options.prefixRight || "";
197
+ const suffixRight = options.suffixRight !== undefined ? options.suffixRight : (prefixRight ? "" : "_right");
198
+ const prefixLeft = options.prefixLeft || "";
199
+ const suffixLeft = options.suffixLeft || "";
200
+ if (leftRow) {
201
+ for (const [k, v] of Object.entries(leftRow)) {
202
+ const isKey = k === leftKey;
203
+ const outKey = isKey ? k : `${prefixLeft}${k}${suffixLeft}`;
204
+ result[outKey] = v;
205
+ }
206
+ }
207
+ else if (sampleLeftCols) {
208
+ for (const col of sampleLeftCols) {
209
+ const isKey = col === leftKey;
210
+ const outKey = isKey ? col : `${prefixLeft}${col}${suffixLeft}`;
211
+ result[outKey] = null;
212
+ }
213
+ }
214
+ if (rightRow) {
215
+ for (const [k, v] of Object.entries(rightRow)) {
216
+ if (k === rightKey) {
217
+ if (!leftRow) {
218
+ result[leftKey] = v;
219
+ }
220
+ continue;
221
+ }
222
+ let targetKey = k;
223
+ if (leftRow && k in leftRow) {
224
+ targetKey = `${prefixRight}${k}${suffixRight}`;
225
+ }
226
+ else if (prefixRight || (suffixRight && suffixRight !== "_right")) {
227
+ targetKey = `${prefixRight}${k}${suffixRight}`;
228
+ }
229
+ result[targetKey] = v;
230
+ }
231
+ }
232
+ else if (sampleRightCols) {
233
+ for (const col of sampleRightCols) {
234
+ if (col === rightKey)
235
+ continue;
236
+ let targetKey = col;
237
+ if (leftRow && col in leftRow) {
238
+ targetKey = `${prefixRight}${col}${suffixRight}`;
239
+ }
240
+ else if (prefixRight || (suffixRight && suffixRight !== "_right")) {
241
+ targetKey = `${prefixRight}${col}${suffixRight}`;
242
+ }
243
+ result[targetKey] = null;
244
+ }
245
+ }
246
+ if (options.scoreCol) {
247
+ result[options.scoreCol] = score !== null ? Math.round(score * 1e4) / 1e4 : null;
248
+ }
249
+ return result;
250
+ }
251
+ /**
252
+ * Creates a stream transform that performs streaming fuzzy approximate string joins.
253
+ */
254
+ export function fuzzyJoinTransform(options) {
255
+ const leftKey = options.leftKey;
256
+ const rightKey = options.rightKey || leftKey;
257
+ const joinType = options.type || "left";
258
+ const method = options.method || "levenshtein";
259
+ const threshold = options.threshold !== undefined ? options.threshold : 0.75;
260
+ const bestMatch = options.bestMatch !== false;
261
+ const caseInsensitive = options.caseInsensitive !== false;
262
+ const trim = options.trim !== false;
263
+ const batchSize = options.batchSize || 1000;
264
+ return async function* (leftStream) {
265
+ const rightEntries = [];
266
+ let sampleRightCols;
267
+ for await (const batch of options.rightReader.read()) {
268
+ for (const row of batch.rows) {
269
+ if (!sampleRightCols) {
270
+ sampleRightCols = Object.keys(row);
271
+ }
272
+ const normKey = normalizeKey(row[rightKey], caseInsensitive, trim);
273
+ rightEntries.push({ normKey, row, matched: false });
274
+ }
275
+ }
276
+ let sampleLeftCols;
277
+ let outRows = [];
278
+ let offset = 0;
279
+ // 2. Stream through left table and fuzzy match
280
+ for await (const batch of leftStream) {
281
+ for (const leftRow of batch.rows) {
282
+ if (!sampleLeftCols) {
283
+ sampleLeftCols = Object.keys(leftRow);
284
+ }
285
+ const leftNormKey = normalizeKey(leftRow[leftKey], caseInsensitive, trim);
286
+ if (!leftNormKey) {
287
+ // Left row has null / empty key
288
+ if (joinType === "left" || joinType === "full") {
289
+ outRows.push(mergeFuzzyRows(leftRow, null, leftKey, rightKey, null, options, sampleLeftCols, sampleRightCols));
290
+ }
291
+ continue;
292
+ }
293
+ let candidates = [];
294
+ for (const entry of rightEntries) {
295
+ if (!entry.normKey)
296
+ continue;
297
+ const score = computeSimilarity(leftNormKey, entry.normKey, method);
298
+ if (score >= threshold) {
299
+ candidates.push({ entry, score });
300
+ }
301
+ }
302
+ if (candidates.length > 0) {
303
+ if (bestMatch) {
304
+ candidates.sort((a, b) => b.score - a.score);
305
+ const best = candidates[0];
306
+ best.entry.matched = true;
307
+ outRows.push(mergeFuzzyRows(leftRow, best.entry.row, leftKey, rightKey, best.score, options, sampleLeftCols, sampleRightCols));
308
+ }
309
+ else {
310
+ for (const cand of candidates) {
311
+ cand.entry.matched = true;
312
+ outRows.push(mergeFuzzyRows(leftRow, cand.entry.row, leftKey, rightKey, cand.score, options, sampleLeftCols, sampleRightCols));
313
+ }
314
+ }
315
+ }
316
+ else {
317
+ // No match found
318
+ if (joinType === "left" || joinType === "full") {
319
+ outRows.push(mergeFuzzyRows(leftRow, null, leftKey, rightKey, null, options, sampleLeftCols, sampleRightCols));
320
+ }
321
+ }
322
+ if (outRows.length >= batchSize) {
323
+ yield { rows: outRows, offset };
324
+ offset += outRows.length;
325
+ outRows = [];
326
+ }
327
+ }
328
+ }
329
+ // 3. Emit unmatched right rows for right/full joins
330
+ if (joinType === "right" || joinType === "full") {
331
+ for (const entry of rightEntries) {
332
+ if (!entry.matched) {
333
+ outRows.push(mergeFuzzyRows(null, entry.row, leftKey, rightKey, null, options, sampleLeftCols, sampleRightCols));
334
+ if (outRows.length >= batchSize) {
335
+ yield { rows: outRows, offset };
336
+ offset += outRows.length;
337
+ outRows = [];
338
+ }
339
+ }
340
+ }
341
+ }
342
+ if (outRows.length > 0) {
343
+ yield { rows: outRows, offset };
344
+ }
345
+ };
346
+ }
347
+ //# sourceMappingURL=fuzzy-join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-join.js","sourceRoot":"","sources":["../../src/transforms/fuzzy-join.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"jit-compiler.d.ts","sourceRoot":"","sources":["../../src/transforms/jit-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA8D/C;;GAEG;AACH,eAAO,MAAM,WAAW;eACX,GAAG,QAAQ,MAAM,KAAG,OAAO;YAC9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAQ5B,OAAO,KAAK,OAAO,KAAG,OAAO;YAQ9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI5B,OAAO,KAAK,OAAO,KAAG,OAAO;YAI9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI5B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI7B,OAAO,KAAK,OAAO,KAAG,OAAO;kBAMxB,OAAO,KAAK,OAAO,KAAG,OAAO;oBAG3B,OAAO,KAAK,OAAO,KAAG,OAAO;kBAG/B,OAAO,KAAK,OAAO,KAAG,OAAO;eAGhC,OAAO,KAAG,MAAM;eAChB,OAAO,KAAG,MAAM;cACjB,OAAO,KAAG,MAAM;gBACd,OAAO,KAAG,MAAM;sBACV,OAAO,EAAE,KAAG,MAAM;gBACxB,OAAO,wBAAmB,MAAM,KAAG,MAAM;mBAItC,OAAO,wBAAmB,MAAM,KAAG,MAAM;iBAI3C,OAAO,UAAU,OAAO,eAAe,OAAO,KAAG,MAAM;eAGzD,OAAO,wBAAiB,MAAM;aAMhC,OAAO,KAAG,MAAM;cACf,OAAO,KAAG,MAAM;eACf,OAAO,KAAG,MAAM;cACjB,OAAO,KAAG,MAAM;mBACX,OAAO,EAAE,KAAG,MAAM;mBAClB,OAAO,EAAE,KAAG,MAAM;wBACb,OAAO,EAAE,KAAG,OAAO;eAM5B,OAAO,WAAW,OAAO,WAAW,OAAO,KAAG,OAAO;gBACpD,OAAO,WAAW,OAAO,WAAW,OAAO,KAAG,OAAO;gBACrD,OAAO,KAAG,OAAO;mBACd,OAAO,KAAG,OAAO;mBACjB,OAAO,QAAQ,OAAO,KAAG,OAAO;CAChD,CAAC;AAuFF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAYnF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAW/E"}
1
+ {"version":3,"file":"jit-compiler.d.ts","sourceRoot":"","sources":["../../src/transforms/jit-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA8D/C;;GAEG;AACH,eAAO,MAAM,WAAW;eACX,GAAG,QAAQ,MAAM,KAAG,OAAO;YAC9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAQ5B,OAAO,KAAK,OAAO,KAAG,OAAO;YAQ9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI5B,OAAO,KAAK,OAAO,KAAG,OAAO;YAI9B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI5B,OAAO,KAAK,OAAO,KAAG,OAAO;aAI7B,OAAO,KAAK,OAAO,KAAG,OAAO;kBAMxB,OAAO,KAAK,OAAO,KAAG,OAAO;oBAG3B,OAAO,KAAK,OAAO,KAAG,OAAO;kBAG/B,OAAO,KAAK,OAAO,KAAG,OAAO;eAGhC,OAAO,KAAG,MAAM;eAChB,OAAO,KAAG,MAAM;cACjB,OAAO,KAAG,MAAM;gBACd,OAAO,KAAG,MAAM;sBACV,OAAO,EAAE,KAAG,MAAM;gBACxB,OAAO,wBAAmB,MAAM,KAAG,MAAM;mBAItC,OAAO,wBAAmB,MAAM,KAAG,MAAM;iBAI3C,OAAO,UAAU,OAAO,eAAe,OAAO,KAAG,MAAM;eAGzD,OAAO,wBAAiB,MAAM;aAMhC,OAAO,KAAG,MAAM;cACf,OAAO,KAAG,MAAM;eACf,OAAO,KAAG,MAAM;cACjB,OAAO,KAAG,MAAM;mBACX,OAAO,EAAE,KAAG,MAAM;mBAClB,OAAO,EAAE,KAAG,MAAM;wBACb,OAAO,EAAE,KAAG,OAAO;eAM5B,OAAO,WAAW,OAAO,WAAW,OAAO,KAAG,OAAO;gBACpD,OAAO,WAAW,OAAO,WAAW,OAAO,KAAG,OAAO;gBACrD,OAAO,KAAG,OAAO;mBACd,OAAO,KAAG,OAAO;mBACjB,OAAO,QAAQ,OAAO,KAAG,OAAO;CAChD,CAAC;AAuLF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAYnF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAW/E"}