tranfi 0.0.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +177 -21
  2. package/NOTICE +8 -0
  3. package/README.md +627 -0
  4. package/app/assets/index-6quYZ5Ap.css +5 -0
  5. package/app/assets/index-BIAIKnrp.js +160 -0
  6. package/app/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
  7. package/app/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
  8. package/app/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
  9. package/app/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
  10. package/app/index.html +13 -0
  11. package/binding.gyp +121 -0
  12. package/csrc/arena.c +93 -0
  13. package/csrc/batch.c +976 -0
  14. package/csrc/buffer.c +154 -0
  15. package/csrc/cJSON.c +3386 -0
  16. package/csrc/cJSON.h +316 -0
  17. package/csrc/codec_csv.c +1951 -0
  18. package/csrc/codec_jsonl.c +1086 -0
  19. package/csrc/codec_table.c +248 -0
  20. package/csrc/codec_text.c +447 -0
  21. package/csrc/compiler.c +130 -0
  22. package/csrc/config.h +21 -0
  23. package/csrc/date_utils.h +94 -0
  24. package/csrc/dsl.c +5417 -0
  25. package/csrc/dsl.h +22 -0
  26. package/csrc/expr.c +1553 -0
  27. package/csrc/expr.h +58 -0
  28. package/csrc/internal.h +539 -0
  29. package/csrc/ir.c +166 -0
  30. package/csrc/ir.h +208 -0
  31. package/csrc/ir_schema.c +75 -0
  32. package/csrc/ir_serialize.c +166 -0
  33. package/csrc/ir_sql.c +1822 -0
  34. package/csrc/ir_validate.c +576 -0
  35. package/csrc/json_path.c +210 -0
  36. package/csrc/main.c +1241 -0
  37. package/csrc/memory_estimate.c +477 -0
  38. package/csrc/op_acf.c +283 -0
  39. package/csrc/op_across.c +477 -0
  40. package/csrc/op_anomaly.c +255 -0
  41. package/csrc/op_assert.c +761 -0
  42. package/csrc/op_bin.c +248 -0
  43. package/csrc/op_cast.c +523 -0
  44. package/csrc/op_clip.c +99 -0
  45. package/csrc/op_date_trunc.c +355 -0
  46. package/csrc/op_datetime.c +394 -0
  47. package/csrc/op_derive.c +216 -0
  48. package/csrc/op_diff.c +250 -0
  49. package/csrc/op_ewma.c +222 -0
  50. package/csrc/op_explode.c +206 -0
  51. package/csrc/op_fill_down.c +235 -0
  52. package/csrc/op_fill_null.c +268 -0
  53. package/csrc/op_filter.c +181 -0
  54. package/csrc/op_frequency.c +721 -0
  55. package/csrc/op_grep.c +181 -0
  56. package/csrc/op_group_agg.c +1956 -0
  57. package/csrc/op_hash.c +159 -0
  58. package/csrc/op_head.c +84 -0
  59. package/csrc/op_interpolate.c +445 -0
  60. package/csrc/op_join.c +2902 -0
  61. package/csrc/op_json_extract.c +227 -0
  62. package/csrc/op_json_filter.c +384 -0
  63. package/csrc/op_json_flatten.c +293 -0
  64. package/csrc/op_json_schema.c +503 -0
  65. package/csrc/op_label_encode.c +419 -0
  66. package/csrc/op_lag.c +181 -0
  67. package/csrc/op_lead.c +242 -0
  68. package/csrc/op_normalize.c +510 -0
  69. package/csrc/op_onehot.c +457 -0
  70. package/csrc/op_pivot.c +1754 -0
  71. package/csrc/op_quarantine.c +189 -0
  72. package/csrc/op_registry.c +3044 -0
  73. package/csrc/op_rename.c +129 -0
  74. package/csrc/op_replace.c +354 -0
  75. package/csrc/op_rleid.c +297 -0
  76. package/csrc/op_rowid.c +559 -0
  77. package/csrc/op_sample.c +158 -0
  78. package/csrc/op_schema.c +1341 -0
  79. package/csrc/op_schema_infer.c +252 -0
  80. package/csrc/op_select.c +340 -0
  81. package/csrc/op_set.c +3449 -0
  82. package/csrc/op_skip.c +95 -0
  83. package/csrc/op_sort.c +819 -0
  84. package/csrc/op_source_name.c +120 -0
  85. package/csrc/op_split.c +151 -0
  86. package/csrc/op_split_data.c +119 -0
  87. package/csrc/op_stack.c +271 -0
  88. package/csrc/op_stats.c +875 -0
  89. package/csrc/op_step.c +333 -0
  90. package/csrc/op_tail.c +105 -0
  91. package/csrc/op_tee.c +338 -0
  92. package/csrc/op_top.c +357 -0
  93. package/csrc/op_trim.c +138 -0
  94. package/csrc/op_unique.c +1343 -0
  95. package/csrc/op_unpivot.c +193 -0
  96. package/csrc/op_validate.c +648 -0
  97. package/csrc/op_window.c +591 -0
  98. package/csrc/path_policy.c +85 -0
  99. package/csrc/pipeline.c +1088 -0
  100. package/csrc/recipes.c +104 -0
  101. package/csrc/recipes.h +27 -0
  102. package/csrc/report.c +506 -0
  103. package/csrc/report.h +22 -0
  104. package/csrc/selector.c +1097 -0
  105. package/csrc/size_utils.c +348 -0
  106. package/csrc/spill.c +317 -0
  107. package/csrc/spill.h +21 -0
  108. package/csrc/tranfi.h +291 -0
  109. package/csrc/transform.h +209 -0
  110. package/csrc/transform_api.c +2237 -0
  111. package/csrc/transform_categorical.c +923 -0
  112. package/csrc/transform_internal.h +472 -0
  113. package/csrc/transform_json.c +3812 -0
  114. package/csrc/transform_numeric.c +1966 -0
  115. package/csrc/transform_sha256.c +154 -0
  116. package/csrc/transform_wasm.h +162 -0
  117. package/csrc/transform_wasm_api.c +1373 -0
  118. package/csrc/wasm_api.c +218 -0
  119. package/napi_api.c +534 -0
  120. package/napi_transform.c +1648 -0
  121. package/napi_transform.h +8 -0
  122. package/package.json +64 -59
  123. package/scripts/install-native.js +76 -0
  124. package/scripts/prepack.js +64 -0
  125. package/scripts/sync-csrc.js +23 -0
  126. package/src/cli.js +190 -0
  127. package/src/engines/duckdb.js +142 -0
  128. package/src/index.js +925 -0
  129. package/src/memory_policy.js +411 -0
  130. package/src/native.js +18 -0
  131. package/src/pipeline.js +709 -0
  132. package/src/recipe_json.js +80 -0
  133. package/src/server.js +279 -0
  134. package/src/transform.js +403 -0
  135. package/src/transform_error.js +10 -0
  136. package/src/wasm.js +21 -0
  137. package/wasm/index.js +732 -0
  138. package/wasm/package.json +1 -0
  139. package/wasm/tranfi_core.js +0 -0
  140. package/wasm/transform.js +1156 -0
  141. package/wasm/worker.js +786 -0
  142. package/dist/bundle.js +0 -1
  143. package/index.html +0 -18
  144. package/src/app.css +0 -169
  145. package/src/app.js +0 -203
  146. package/src/app.vue +0 -250
  147. package/src/bulma-input.vue +0 -110
  148. package/src/common-inputs.js +0 -28
  149. package/src/main.js +0 -20
  150. package/src/transforms.js +0 -166
  151. package/webpack.config.js +0 -108
package/app/index.html ADDED
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Tranfi</title>
7
+ <script type="module" crossorigin src="/assets/index-BIAIKnrp.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-6quYZ5Ap.css">
9
+ </head>
10
+ <body>
11
+ <div id="app"></div>
12
+ </body>
13
+ </html>
package/binding.gyp ADDED
@@ -0,0 +1,121 @@
1
+ {
2
+ "targets": [
3
+ {
4
+ "target_name": "tranfi_napi",
5
+ "sources": [
6
+ "napi_api.c",
7
+ "napi_transform.c",
8
+ "csrc/cJSON.c",
9
+ "csrc/transform_api.c",
10
+ "csrc/transform_categorical.c",
11
+ "csrc/transform_json.c",
12
+ "csrc/transform_numeric.c",
13
+ "csrc/transform_sha256.c",
14
+ "csrc/arena.c",
15
+ "csrc/buffer.c",
16
+ "csrc/size_utils.c",
17
+ "csrc/path_policy.c",
18
+ "csrc/spill.c",
19
+ "csrc/batch.c",
20
+ "csrc/pipeline.c",
21
+ "csrc/expr.c",
22
+ "csrc/selector.c",
23
+ "csrc/memory_estimate.c",
24
+ "csrc/json_path.c",
25
+ "csrc/codec_csv.c",
26
+ "csrc/codec_jsonl.c",
27
+ "csrc/codec_text.c",
28
+ "csrc/codec_table.c",
29
+ "csrc/op_filter.c",
30
+ "csrc/op_select.c",
31
+ "csrc/op_rename.c",
32
+ "csrc/op_head.c",
33
+ "csrc/op_skip.c",
34
+ "csrc/op_derive.c",
35
+ "csrc/op_source_name.c",
36
+ "csrc/op_across.c",
37
+ "csrc/op_stats.c",
38
+ "csrc/op_unique.c",
39
+ "csrc/op_sort.c",
40
+ "csrc/op_validate.c",
41
+ "csrc/op_quarantine.c",
42
+ "csrc/op_assert.c",
43
+ "csrc/op_schema.c",
44
+ "csrc/op_schema_infer.c",
45
+ "csrc/op_tee.c",
46
+ "csrc/op_trim.c",
47
+ "csrc/op_fill_null.c",
48
+ "csrc/op_cast.c",
49
+ "csrc/op_clip.c",
50
+ "csrc/op_replace.c",
51
+ "csrc/op_hash.c",
52
+ "csrc/op_bin.c",
53
+ "csrc/op_fill_down.c",
54
+ "csrc/op_step.c",
55
+ "csrc/op_window.c",
56
+ "csrc/op_explode.c",
57
+ "csrc/op_split.c",
58
+ "csrc/op_unpivot.c",
59
+ "csrc/op_tail.c",
60
+ "csrc/op_top.c",
61
+ "csrc/op_sample.c",
62
+ "csrc/op_group_agg.c",
63
+ "csrc/op_frequency.c",
64
+ "csrc/op_datetime.c",
65
+ "csrc/op_grep.c",
66
+ "csrc/op_json_extract.c",
67
+ "csrc/op_json_filter.c",
68
+ "csrc/op_json_schema.c",
69
+ "csrc/op_json_flatten.c",
70
+ "csrc/op_pivot.c",
71
+ "csrc/op_join.c",
72
+ "csrc/op_set.c",
73
+ "csrc/op_stack.c",
74
+ "csrc/op_lead.c",
75
+ "csrc/op_lag.c",
76
+ "csrc/op_rowid.c",
77
+ "csrc/op_rleid.c",
78
+ "csrc/op_date_trunc.c",
79
+ "csrc/op_onehot.c",
80
+ "csrc/op_label_encode.c",
81
+ "csrc/op_ewma.c",
82
+ "csrc/op_diff.c",
83
+ "csrc/op_anomaly.c",
84
+ "csrc/op_split_data.c",
85
+ "csrc/op_interpolate.c",
86
+ "csrc/op_normalize.c",
87
+ "csrc/op_acf.c",
88
+ "csrc/ir.c",
89
+ "csrc/ir_serialize.c",
90
+ "csrc/ir_sql.c",
91
+ "csrc/ir_validate.c",
92
+ "csrc/ir_schema.c",
93
+ "csrc/op_registry.c",
94
+ "csrc/compiler.c",
95
+ "csrc/dsl.c",
96
+ "csrc/recipes.c",
97
+ "csrc/report.c"
98
+ ],
99
+ "include_dirs": [
100
+ "csrc"
101
+ ],
102
+ "cflags": [
103
+ "-std=c11",
104
+ "-Wall",
105
+ "-DNAPI_VERSION=8",
106
+ "-D_POSIX_C_SOURCE=200809L",
107
+ "-D_XOPEN_SOURCE=700",
108
+ "-D_FORTIFY_SOURCE=3",
109
+ "-Werror=implicit-function-declaration",
110
+ "-Werror=incompatible-pointer-types",
111
+ "-Wformat",
112
+ "-Werror=format-security",
113
+ "-Werror=unused-result",
114
+ "-fno-common",
115
+ "-fstack-protector-strong",
116
+ "-fno-fast-math",
117
+ "-ffp-contract=off"
118
+ ]
119
+ }
120
+ ]
121
+ }
package/csrc/arena.c ADDED
@@ -0,0 +1,93 @@
1
+ /*
2
+ * arena.c — Simple arena (bump) allocator.
3
+ * Allocates from fixed-size blocks, grows by adding new blocks.
4
+ */
5
+
6
+ #include "internal.h"
7
+ #include <stdlib.h>
8
+ #include <string.h>
9
+
10
+ #define DEFAULT_BLOCK_SIZE (64 * 1024) /* 64 KB */
11
+
12
+ static tf_arena_block *block_create(size_t cap) {
13
+ tf_arena_block *blk = malloc(sizeof(tf_arena_block));
14
+ if (!blk) return NULL;
15
+ blk->data = malloc(cap);
16
+ if (!blk->data) { free(blk); return NULL; }
17
+ blk->used = 0;
18
+ blk->cap = cap;
19
+ blk->next = NULL;
20
+ return blk;
21
+ }
22
+
23
+ static void block_free(tf_arena_block *blk) {
24
+ while (blk) {
25
+ tf_arena_block *next = blk->next;
26
+ free(blk->data);
27
+ free(blk);
28
+ blk = next;
29
+ }
30
+ }
31
+
32
+ tf_arena *tf_arena_create(size_t block_size) {
33
+ if (block_size == 0) block_size = DEFAULT_BLOCK_SIZE;
34
+ if (tf_size_align(block_size, 8, &block_size) != TF_OK) return NULL;
35
+ tf_arena *a = malloc(sizeof(tf_arena));
36
+ if (!a) return NULL;
37
+ a->block_size = block_size;
38
+ a->head = block_create(block_size);
39
+ if (!a->head) { free(a); return NULL; }
40
+ a->current = a->head;
41
+ return a;
42
+ }
43
+
44
+ void *tf_arena_alloc(tf_arena *a, size_t size) {
45
+ if (!a || size == 0) return NULL;
46
+ if (tf_size_align(size, 8, &size) != TF_OK) return NULL;
47
+
48
+ /* Try current block */
49
+ size_t used_after = 0;
50
+ if (tf_size_add(a->current->used, size, &used_after) == TF_OK && used_after <= a->current->cap) {
51
+ void *ptr = a->current->data + a->current->used;
52
+ a->current->used = used_after;
53
+ return ptr;
54
+ }
55
+
56
+ /* Need a new block — at least big enough for this allocation */
57
+ size_t new_cap = a->block_size;
58
+ if (new_cap < size) new_cap = size;
59
+ tf_arena_block *blk = block_create(new_cap);
60
+ if (!blk) return NULL;
61
+
62
+ a->current->next = blk;
63
+ a->current = blk;
64
+ void *ptr = blk->data;
65
+ blk->used = size;
66
+ return ptr;
67
+ }
68
+
69
+ char *tf_arena_strdup(tf_arena *a, const char *s) {
70
+ if (!s) return NULL;
71
+ size_t len = 0;
72
+ if (tf_size_add(strlen(s), 1, &len) != TF_OK) return NULL;
73
+ char *copy = tf_arena_alloc(a, len);
74
+ if (copy) memcpy(copy, s, len);
75
+ return copy;
76
+ }
77
+
78
+ void tf_arena_reset(tf_arena *a) {
79
+ if (!a) return;
80
+ /* Free all blocks except the first, reset the first */
81
+ if (a->head->next) {
82
+ block_free(a->head->next);
83
+ a->head->next = NULL;
84
+ }
85
+ a->head->used = 0;
86
+ a->current = a->head;
87
+ }
88
+
89
+ void tf_arena_free(tf_arena *a) {
90
+ if (!a) return;
91
+ block_free(a->head);
92
+ free(a);
93
+ }