rowpipe 2.1.0 → 2.2.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 (207) hide show
  1. package/README.md +183 -5
  2. package/dist/analytics/profiler.d.ts +56 -0
  3. package/dist/analytics/profiler.d.ts.map +1 -0
  4. package/dist/analytics/profiler.js +277 -0
  5. package/dist/analytics/profiler.js.map +1 -0
  6. package/dist/analytics/schema-inference.d.ts.map +1 -1
  7. package/dist/analytics/schema-inference.js +14 -0
  8. package/dist/analytics/schema-inference.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +15 -0
  10. package/dist/cli/commands/clean.d.ts.map +1 -0
  11. package/dist/cli/commands/clean.js +108 -0
  12. package/dist/cli/commands/clean.js.map +1 -0
  13. package/dist/cli/commands/convert.d.ts +6 -0
  14. package/dist/cli/commands/convert.d.ts.map +1 -1
  15. package/dist/cli/commands/convert.js +6 -6
  16. package/dist/cli/commands/convert.js.map +1 -1
  17. package/dist/cli/commands/db.d.ts +35 -0
  18. package/dist/cli/commands/db.d.ts.map +1 -0
  19. package/dist/cli/commands/db.js +173 -0
  20. package/dist/cli/commands/db.js.map +1 -0
  21. package/dist/cli/commands/explain.d.ts +8 -1
  22. package/dist/cli/commands/explain.d.ts.map +1 -1
  23. package/dist/cli/commands/explain.js +89 -2
  24. package/dist/cli/commands/explain.js.map +1 -1
  25. package/dist/cli/commands/join.d.ts +23 -0
  26. package/dist/cli/commands/join.d.ts.map +1 -0
  27. package/dist/cli/commands/join.js +97 -0
  28. package/dist/cli/commands/join.js.map +1 -0
  29. package/dist/cli/commands/pipeline.d.ts +20 -0
  30. package/dist/cli/commands/pipeline.d.ts.map +1 -1
  31. package/dist/cli/commands/pipeline.js +53 -12
  32. package/dist/cli/commands/pipeline.js.map +1 -1
  33. package/dist/cli/commands/profile.d.ts +22 -0
  34. package/dist/cli/commands/profile.d.ts.map +1 -0
  35. package/dist/cli/commands/profile.js +53 -0
  36. package/dist/cli/commands/profile.js.map +1 -0
  37. package/dist/cli/commands/view.d.ts +12 -0
  38. package/dist/cli/commands/view.d.ts.map +1 -0
  39. package/dist/cli/commands/view.js +52 -0
  40. package/dist/cli/commands/view.js.map +1 -0
  41. package/dist/cli/commands/window.d.ts +10 -0
  42. package/dist/cli/commands/window.d.ts.map +1 -0
  43. package/dist/cli/commands/window.js +87 -0
  44. package/dist/cli/commands/window.js.map +1 -0
  45. package/dist/cli/index.js +201 -5
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/batch.d.ts +1 -1
  48. package/dist/core/batch.d.ts.map +1 -1
  49. package/dist/core/batch.js.map +1 -1
  50. package/dist/core/pipeline.d.ts +2 -2
  51. package/dist/core/pipeline.d.ts.map +1 -1
  52. package/dist/core/pipeline.js +5 -2
  53. package/dist/core/pipeline.js.map +1 -1
  54. package/dist/core/types.d.ts +21 -1
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/db/adapters/index.d.ts +6 -0
  57. package/dist/db/adapters/index.d.ts.map +1 -0
  58. package/dist/db/adapters/index.js +21 -0
  59. package/dist/db/adapters/index.js.map +1 -0
  60. package/dist/db/adapters/mysql.d.ts +16 -0
  61. package/dist/db/adapters/mysql.d.ts.map +1 -0
  62. package/dist/db/adapters/mysql.js +230 -0
  63. package/dist/db/adapters/mysql.js.map +1 -0
  64. package/dist/db/adapters/postgres.d.ts +17 -0
  65. package/dist/db/adapters/postgres.d.ts.map +1 -0
  66. package/dist/db/adapters/postgres.js +239 -0
  67. package/dist/db/adapters/postgres.js.map +1 -0
  68. package/dist/db/adapters/sqlite.d.ts +19 -0
  69. package/dist/db/adapters/sqlite.d.ts.map +1 -0
  70. package/dist/db/adapters/sqlite.js +241 -0
  71. package/dist/db/adapters/sqlite.js.map +1 -0
  72. package/dist/db/index.d.ts +11 -0
  73. package/dist/db/index.d.ts.map +1 -0
  74. package/dist/db/index.js +11 -0
  75. package/dist/db/index.js.map +1 -0
  76. package/dist/db/mapping.d.ts +45 -0
  77. package/dist/db/mapping.d.ts.map +1 -0
  78. package/dist/db/mapping.js +222 -0
  79. package/dist/db/mapping.js.map +1 -0
  80. package/dist/db/pushdown.d.ts +25 -0
  81. package/dist/db/pushdown.d.ts.map +1 -0
  82. package/dist/db/pushdown.js +165 -0
  83. package/dist/db/pushdown.js.map +1 -0
  84. package/dist/db/sink.d.ts +15 -0
  85. package/dist/db/sink.d.ts.map +1 -0
  86. package/dist/db/sink.js +47 -0
  87. package/dist/db/sink.js.map +1 -0
  88. package/dist/db/source.d.ts +14 -0
  89. package/dist/db/source.d.ts.map +1 -0
  90. package/dist/db/source.js +69 -0
  91. package/dist/db/source.js.map +1 -0
  92. package/dist/db/types.d.ts +80 -0
  93. package/dist/db/types.d.ts.map +1 -0
  94. package/dist/db/types.js +2 -0
  95. package/dist/db/types.js.map +1 -0
  96. package/dist/db/url.d.ts +15 -0
  97. package/dist/db/url.d.ts.map +1 -0
  98. package/dist/db/url.js +145 -0
  99. package/dist/db/url.js.map +1 -0
  100. package/dist/diff/hash.d.ts.map +1 -1
  101. package/dist/diff/hash.js +4 -3
  102. package/dist/diff/hash.js.map +1 -1
  103. package/dist/diff/key.d.ts.map +1 -1
  104. package/dist/diff/key.js +8 -1
  105. package/dist/diff/key.js.map +1 -1
  106. package/dist/diff/reporter.d.ts.map +1 -1
  107. package/dist/diff/reporter.js +5 -3
  108. package/dist/diff/reporter.js.map +1 -1
  109. package/dist/diff/storage/disk-index.d.ts.map +1 -1
  110. package/dist/diff/storage/disk-index.js +2 -1
  111. package/dist/diff/storage/disk-index.js.map +1 -1
  112. package/dist/diff/storage/memory-index.d.ts.map +1 -1
  113. package/dist/diff/storage/memory-index.js +3 -2
  114. package/dist/diff/storage/memory-index.js.map +1 -1
  115. package/dist/index.d.ts +8 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +9 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/planner/executor.d.ts.map +1 -1
  120. package/dist/planner/executor.js +7 -0
  121. package/dist/planner/executor.js.map +1 -1
  122. package/dist/planner/types.d.ts +4 -0
  123. package/dist/planner/types.d.ts.map +1 -1
  124. package/dist/readers/csv.d.ts.map +1 -1
  125. package/dist/readers/csv.js +1 -2
  126. package/dist/readers/csv.js.map +1 -1
  127. package/dist/readers/index.d.ts +5 -1
  128. package/dist/readers/index.d.ts.map +1 -1
  129. package/dist/readers/index.js +43 -0
  130. package/dist/readers/index.js.map +1 -1
  131. package/dist/readers/json.d.ts.map +1 -1
  132. package/dist/readers/json.js +1 -2
  133. package/dist/readers/json.js.map +1 -1
  134. package/dist/readers/jsonl.d.ts.map +1 -1
  135. package/dist/readers/jsonl.js +1 -2
  136. package/dist/readers/jsonl.js.map +1 -1
  137. package/dist/readers/multi-file.d.ts +29 -0
  138. package/dist/readers/multi-file.d.ts.map +1 -0
  139. package/dist/readers/multi-file.js +169 -0
  140. package/dist/readers/multi-file.js.map +1 -0
  141. package/dist/transforms/clean.d.ts +18 -0
  142. package/dist/transforms/clean.d.ts.map +1 -0
  143. package/dist/transforms/clean.js +118 -0
  144. package/dist/transforms/clean.js.map +1 -0
  145. package/dist/transforms/expression.d.ts.map +1 -1
  146. package/dist/transforms/expression.js +12 -0
  147. package/dist/transforms/expression.js.map +1 -1
  148. package/dist/transforms/jit-compiler.d.ts +50 -0
  149. package/dist/transforms/jit-compiler.d.ts.map +1 -0
  150. package/dist/transforms/jit-compiler.js +275 -0
  151. package/dist/transforms/jit-compiler.js.map +1 -0
  152. package/dist/transforms/join/index-storage.d.ts +36 -0
  153. package/dist/transforms/join/index-storage.d.ts.map +1 -0
  154. package/dist/transforms/join/index-storage.js +176 -0
  155. package/dist/transforms/join/index-storage.js.map +1 -0
  156. package/dist/transforms/join/index.d.ts +4 -0
  157. package/dist/transforms/join/index.d.ts.map +1 -0
  158. package/dist/transforms/join/index.js +4 -0
  159. package/dist/transforms/join/index.js.map +1 -0
  160. package/dist/transforms/join/join.d.ts +15 -0
  161. package/dist/transforms/join/join.d.ts.map +1 -0
  162. package/dist/transforms/join/join.js +216 -0
  163. package/dist/transforms/join/join.js.map +1 -0
  164. package/dist/transforms/join/types.d.ts +29 -0
  165. package/dist/transforms/join/types.d.ts.map +1 -0
  166. package/dist/transforms/join/types.js +2 -0
  167. package/dist/transforms/join/types.js.map +1 -0
  168. package/dist/transforms/window.d.ts +24 -0
  169. package/dist/transforms/window.d.ts.map +1 -0
  170. package/dist/transforms/window.js +317 -0
  171. package/dist/transforms/window.js.map +1 -0
  172. package/dist/ui/colors.d.ts +57 -0
  173. package/dist/ui/colors.d.ts.map +1 -0
  174. package/dist/ui/colors.js +94 -0
  175. package/dist/ui/colors.js.map +1 -0
  176. package/dist/ui/viewer.d.ts +67 -0
  177. package/dist/ui/viewer.d.ts.map +1 -0
  178. package/dist/ui/viewer.js +673 -0
  179. package/dist/ui/viewer.js.map +1 -0
  180. package/dist/utils/compression.d.ts +68 -19
  181. package/dist/utils/compression.d.ts.map +1 -1
  182. package/dist/utils/compression.js +222 -34
  183. package/dist/utils/compression.js.map +1 -1
  184. package/dist/utils/formatting.d.ts +5 -0
  185. package/dist/utils/formatting.d.ts.map +1 -1
  186. package/dist/utils/formatting.js +15 -0
  187. package/dist/utils/formatting.js.map +1 -1
  188. package/dist/writers/csv.d.ts.map +1 -1
  189. package/dist/writers/csv.js +13 -14
  190. package/dist/writers/csv.js.map +1 -1
  191. package/dist/writers/index.d.ts +1 -0
  192. package/dist/writers/index.d.ts.map +1 -1
  193. package/dist/writers/index.js +35 -0
  194. package/dist/writers/index.js.map +1 -1
  195. package/dist/writers/json.d.ts.map +1 -1
  196. package/dist/writers/json.js +6 -5
  197. package/dist/writers/json.js.map +1 -1
  198. package/dist/writers/jsonl.d.ts.map +1 -1
  199. package/dist/writers/jsonl.js +6 -5
  200. package/dist/writers/jsonl.js.map +1 -1
  201. package/dist/writers/markdown.d.ts.map +1 -1
  202. package/dist/writers/markdown.js +5 -4
  203. package/dist/writers/markdown.js.map +1 -1
  204. package/dist/writers/parquet.d.ts +1 -1
  205. package/dist/writers/parquet.d.ts.map +1 -1
  206. package/package.json +10 -2
  207. package/skills/rowpipe/SKILL.md +8 -4
@@ -0,0 +1,241 @@
1
+ import { escapeIdentifier, escapeQualifiedTable, generateCreateTableSql, sqliteTypeToRowpipe } from "../mapping.js";
2
+ let cachedDatabaseSync = null;
3
+ async function getDatabaseSyncClass() {
4
+ if (cachedDatabaseSync)
5
+ return cachedDatabaseSync;
6
+ try {
7
+ // Dynamic import to prevent startup module resolution failure on Node < 22.5.0
8
+ const mod = await import("node:sqlite");
9
+ cachedDatabaseSync = mod.DatabaseSync;
10
+ return cachedDatabaseSync;
11
+ }
12
+ catch {
13
+ throw new Error(`SQLite adapter requires Node.js >= 22.5.0 with built-in 'node:sqlite' support (current Node version: ${process.version}). ` +
14
+ `Please run on Node.js 22.5+ to use SQLite databases with rowpipe, or connect to PostgreSQL / MySQL.`);
15
+ }
16
+ }
17
+ function toSqliteParam(val) {
18
+ if (val === null || val === undefined)
19
+ return null;
20
+ if (typeof val === "number" || typeof val === "bigint" || typeof val === "string")
21
+ return val;
22
+ if (typeof val === "boolean")
23
+ return val ? 1 : 0;
24
+ if (val instanceof Date)
25
+ return val.toISOString();
26
+ if (Buffer.isBuffer(val) || val instanceof Uint8Array)
27
+ return val;
28
+ if (typeof val === "object")
29
+ return JSON.stringify(val);
30
+ return String(val);
31
+ }
32
+ export class SqliteDatabaseAdapter {
33
+ dialect = "sqlite";
34
+ config;
35
+ sanitizedUrl;
36
+ db;
37
+ isClosed = false;
38
+ constructor(config) {
39
+ this.config = config;
40
+ this.sanitizedUrl = config.sanitizedUrl;
41
+ }
42
+ async getDb() {
43
+ if (this.isClosed) {
44
+ throw new Error("SQLite database connection is closed");
45
+ }
46
+ if (!this.db) {
47
+ const DatabaseSync = await getDatabaseSyncClass();
48
+ const dbPath = this.config.filePath || ":memory:";
49
+ this.db = new DatabaseSync(dbPath);
50
+ }
51
+ return this.db;
52
+ }
53
+ async *stream(options) {
54
+ const db = await this.getDb();
55
+ const batchSize = Math.max(1, options.batchSize || 1000);
56
+ const sql = options.query || (options.table ? `SELECT * FROM ${escapeQualifiedTable(options.table, "sqlite")}` : "");
57
+ if (!sql) {
58
+ throw new Error("Either table or query must be specified for SQLite stream");
59
+ }
60
+ const params = (options.params || []).map(toSqliteParam);
61
+ const stmt = db.prepare(sql);
62
+ if (typeof stmt.setReadBigInts === "function") {
63
+ stmt.setReadBigInts(true);
64
+ }
65
+ let currentBatch = [];
66
+ let offset = 0;
67
+ try {
68
+ for (const rawRow of stmt.iterate(...params)) {
69
+ if (options.signal?.aborted) {
70
+ break;
71
+ }
72
+ currentBatch.push(rawRow);
73
+ if (currentBatch.length >= batchSize) {
74
+ yield {
75
+ rows: currentBatch,
76
+ offset,
77
+ };
78
+ offset += currentBatch.length;
79
+ currentBatch = [];
80
+ }
81
+ }
82
+ if (currentBatch.length > 0 && !options.signal?.aborted) {
83
+ yield {
84
+ rows: currentBatch,
85
+ offset,
86
+ };
87
+ }
88
+ }
89
+ finally {
90
+ // Statement iteration cleanup is automatic in node:sqlite
91
+ }
92
+ }
93
+ async write(input, options) {
94
+ const db = await this.getDb();
95
+ const startTime = Date.now();
96
+ let rowsWritten = 0;
97
+ let batchesWritten = 0;
98
+ let tableCreated = false;
99
+ const table = options.table;
100
+ if (!table) {
101
+ throw new Error("Target table name is required for database write");
102
+ }
103
+ const escapedTable = escapeQualifiedTable(table, "sqlite");
104
+ if (options.truncate) {
105
+ db.exec(`DELETE FROM ${escapedTable};`);
106
+ }
107
+ const useTx = options.transaction !== false;
108
+ let insertStmt = null;
109
+ let insertColumns = [];
110
+ for await (const batch of input) {
111
+ if (batch.rows.length === 0)
112
+ continue;
113
+ // Auto create table from first batch if requested
114
+ if (options.createTable && !tableCreated) {
115
+ const firstRow = batch.rows[0];
116
+ const inferredSchema = {};
117
+ for (const [key, val] of Object.entries(firstRow)) {
118
+ if (typeof val === "number") {
119
+ inferredSchema[key] = Number.isInteger(val) ? "integer" : "number";
120
+ }
121
+ else if (typeof val === "bigint") {
122
+ inferredSchema[key] = "bigint";
123
+ }
124
+ else if (typeof val === "boolean") {
125
+ inferredSchema[key] = "boolean";
126
+ }
127
+ else {
128
+ inferredSchema[key] = "string";
129
+ }
130
+ }
131
+ const ddl = generateCreateTableSql(table, inferredSchema, "sqlite", options.conflictColumns);
132
+ if (options.dryRun) {
133
+ process.stdout.write(`\n-- Dry-run DDL:\n${ddl}\n`);
134
+ return { rowsWritten: 0, batchesWritten: 0, durationMs: Date.now() - startTime, tableCreated: true };
135
+ }
136
+ db.exec(ddl);
137
+ tableCreated = true;
138
+ }
139
+ if (!insertStmt) {
140
+ insertColumns = Object.keys(batch.rows[0]);
141
+ const escapedCols = insertColumns.map((c) => escapeIdentifier(c, "sqlite")).join(", ");
142
+ const placeholders = insertColumns.map(() => "?").join(", ");
143
+ let sql = `INSERT INTO ${escapedTable} (${escapedCols}) VALUES (${placeholders})`;
144
+ if (options.upsert && options.conflictColumns && options.conflictColumns.length > 0) {
145
+ const conflictCols = options.conflictColumns.map((c) => escapeIdentifier(c, "sqlite")).join(", ");
146
+ const updateCols = insertColumns
147
+ .filter((c) => !options.conflictColumns.includes(c))
148
+ .map((c) => `${escapeIdentifier(c, "sqlite")} = excluded.${escapeIdentifier(c, "sqlite")}`)
149
+ .join(", ");
150
+ if (updateCols.length > 0) {
151
+ sql += ` ON CONFLICT (${conflictCols}) DO UPDATE SET ${updateCols}`;
152
+ }
153
+ else {
154
+ sql += ` ON CONFLICT (${conflictCols}) DO NOTHING`;
155
+ }
156
+ }
157
+ insertStmt = db.prepare(sql);
158
+ }
159
+ if (useTx) {
160
+ db.exec("BEGIN TRANSACTION;");
161
+ }
162
+ try {
163
+ for (const row of batch.rows) {
164
+ const vals = insertColumns.map((c) => toSqliteParam(row[c]));
165
+ insertStmt.run(...vals);
166
+ rowsWritten++;
167
+ }
168
+ if (useTx) {
169
+ db.exec("COMMIT;");
170
+ }
171
+ }
172
+ catch (err) {
173
+ if (useTx) {
174
+ db.exec("ROLLBACK;");
175
+ }
176
+ throw err;
177
+ }
178
+ batchesWritten++;
179
+ }
180
+ return {
181
+ rowsWritten,
182
+ batchesWritten,
183
+ durationMs: Date.now() - startTime,
184
+ tableCreated,
185
+ };
186
+ }
187
+ async insertBatch(table, rows, options) {
188
+ async function* singleBatch() {
189
+ yield { rows, offset: 0 };
190
+ }
191
+ return this.write(singleBatch(), { table, ...options });
192
+ }
193
+ async getTables() {
194
+ const db = await this.getDb();
195
+ const stmt = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name ASC");
196
+ const rows = stmt.all();
197
+ return rows.map((r) => r.name);
198
+ }
199
+ async getTableSchema(table) {
200
+ const db = await this.getDb();
201
+ const stmt = db.prepare(`PRAGMA table_info(${escapeIdentifier(table, "sqlite")})`);
202
+ const rows = stmt.all();
203
+ const columns = rows.map((r) => ({
204
+ name: r.name,
205
+ dbType: r.type || "TEXT",
206
+ rowpipeType: sqliteTypeToRowpipe(r.type),
207
+ nullable: r.notnull === 0,
208
+ isPrimaryKey: r.pk > 0,
209
+ defaultValue: r.dflt_value,
210
+ }));
211
+ const primaryKeys = rows.filter((r) => r.pk > 0).map((r) => r.name);
212
+ return {
213
+ table,
214
+ columns,
215
+ primaryKeys,
216
+ };
217
+ }
218
+ async executeRaw(sql, params) {
219
+ const db = await this.getDb();
220
+ if (params && params.length > 0) {
221
+ const stmt = db.prepare(sql);
222
+ return stmt.all(...params.map(toSqliteParam));
223
+ }
224
+ return db.exec(sql);
225
+ }
226
+ async close() {
227
+ if (this.isClosed)
228
+ return;
229
+ this.isClosed = true;
230
+ if (this.db) {
231
+ try {
232
+ this.db.close();
233
+ }
234
+ catch {
235
+ // Ignore if already closed
236
+ }
237
+ this.db = undefined;
238
+ }
239
+ }
240
+ }
241
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/db/adapters/sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export * from "./types.js";
2
+ export * from "./url.js";
3
+ export * from "./mapping.js";
4
+ export * from "./pushdown.js";
5
+ export * from "./adapters/index.js";
6
+ export * from "./adapters/sqlite.js";
7
+ export * from "./adapters/postgres.js";
8
+ export * from "./adapters/mysql.js";
9
+ export * from "./source.js";
10
+ export * from "./sink.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from "./types.js";
2
+ export * from "./url.js";
3
+ export * from "./mapping.js";
4
+ export * from "./pushdown.js";
5
+ export * from "./adapters/index.js";
6
+ export * from "./adapters/sqlite.js";
7
+ export * from "./adapters/postgres.js";
8
+ export * from "./adapters/mysql.js";
9
+ export * from "./source.js";
10
+ export * from "./sink.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { ColumnType } from "../core/types.js";
2
+ import type { DatabaseDialect } from "./types.js";
3
+ /**
4
+ * Escapes a single SQL identifier (table/column name) safely according to dialect.
5
+ */
6
+ export declare function escapeIdentifier(name: string, dialect: DatabaseDialect): string;
7
+ /**
8
+ * Escapes a qualified table name (e.g. "public.users" -> `"public"."users"`).
9
+ */
10
+ export declare function escapeQualifiedTable(table: string, dialect: DatabaseDialect): string;
11
+ /**
12
+ * Maps PostgreSQL column types to Rowpipe logical ColumnType.
13
+ */
14
+ export declare function postgresTypeToRowpipe(dbType: string): ColumnType;
15
+ /**
16
+ * Maps MySQL column types to Rowpipe logical ColumnType.
17
+ */
18
+ export declare function mysqlTypeToRowpipe(dbType: string): ColumnType;
19
+ /**
20
+ * Maps SQLite column types to Rowpipe logical ColumnType.
21
+ */
22
+ export declare function sqliteTypeToRowpipe(dbType: string): ColumnType;
23
+ /**
24
+ * Maps Rowpipe logical ColumnType to PostgreSQL DDL data type.
25
+ */
26
+ export declare function rowpipeTypeToPostgres(type: ColumnType): string;
27
+ /**
28
+ * Maps Rowpipe logical ColumnType to MySQL DDL data type.
29
+ */
30
+ export declare function rowpipeTypeToMysql(type: ColumnType): string;
31
+ /**
32
+ * Maps Rowpipe logical ColumnType to SQLite DDL data type.
33
+ */
34
+ export declare function rowpipeTypeToSqlite(type: ColumnType): string;
35
+ /**
36
+ * Generates dialect-specific CREATE TABLE SQL DDL.
37
+ */
38
+ export declare function generateCreateTableSql(table: string, schema: Record<string, ColumnType> | {
39
+ columns: Array<{
40
+ name: string;
41
+ type: ColumnType;
42
+ nullable?: boolean;
43
+ }>;
44
+ }, dialect: DatabaseDialect, primaryKeys?: string[]): string;
45
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/db/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAO/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAGpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CA8BhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CA8B7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAyB9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAuB3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAe5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAE,EAC/G,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,MAAM,CAgCR"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Escapes a single SQL identifier (table/column name) safely according to dialect.
3
+ */
4
+ export function escapeIdentifier(name, dialect) {
5
+ const clean = name.trim();
6
+ if (dialect === "mysql") {
7
+ return `\`${clean.replace(/`/g, "``")}\``;
8
+ }
9
+ // Postgres and SQLite use double quotes
10
+ return `"${clean.replace(/"/g, '""')}"`;
11
+ }
12
+ /**
13
+ * Escapes a qualified table name (e.g. "public.users" -> `"public"."users"`).
14
+ */
15
+ export function escapeQualifiedTable(table, dialect) {
16
+ const parts = table.split(".");
17
+ return parts.map((p) => escapeIdentifier(p, dialect)).join(".");
18
+ }
19
+ /**
20
+ * Maps PostgreSQL column types to Rowpipe logical ColumnType.
21
+ */
22
+ export function postgresTypeToRowpipe(dbType) {
23
+ const lower = dbType.toLowerCase().trim();
24
+ if (lower.includes("int2") || lower.includes("int4") || lower.includes("smallint") || lower.includes("integer") || lower.includes("serial")) {
25
+ return "integer";
26
+ }
27
+ if (lower.includes("int8") || lower.includes("bigint") || lower.includes("bigserial")) {
28
+ return "bigint";
29
+ }
30
+ if (lower.includes("numeric") || lower.includes("decimal") || lower.includes("money")) {
31
+ return "decimal";
32
+ }
33
+ if (lower.includes("float") || lower.includes("double") || lower.includes("real")) {
34
+ return "number";
35
+ }
36
+ if (lower.includes("bool")) {
37
+ return "boolean";
38
+ }
39
+ if (lower === "date") {
40
+ return "date";
41
+ }
42
+ if (lower.includes("timestamp") || lower.includes("time")) {
43
+ return "datetime";
44
+ }
45
+ if (lower.includes("json")) {
46
+ return "json";
47
+ }
48
+ if (lower.includes("bytea") || lower.includes("blob")) {
49
+ return "binary";
50
+ }
51
+ return "string";
52
+ }
53
+ /**
54
+ * Maps MySQL column types to Rowpipe logical ColumnType.
55
+ */
56
+ export function mysqlTypeToRowpipe(dbType) {
57
+ const lower = dbType.toLowerCase().trim();
58
+ if (lower.includes("tinyint(1)") || lower === "boolean" || lower === "bool") {
59
+ return "boolean";
60
+ }
61
+ if (lower.includes("smallint") || lower.includes("mediumint") || lower.includes("int") && !lower.includes("bigint")) {
62
+ return "integer";
63
+ }
64
+ if (lower.includes("bigint")) {
65
+ return "bigint";
66
+ }
67
+ if (lower.includes("decimal") || lower.includes("numeric")) {
68
+ return "decimal";
69
+ }
70
+ if (lower.includes("float") || lower.includes("double")) {
71
+ return "number";
72
+ }
73
+ if (lower === "date") {
74
+ return "date";
75
+ }
76
+ if (lower.includes("datetime") || lower.includes("timestamp") || lower.includes("time")) {
77
+ return "datetime";
78
+ }
79
+ if (lower.includes("json")) {
80
+ return "json";
81
+ }
82
+ if (lower.includes("blob") || lower.includes("binary")) {
83
+ return "binary";
84
+ }
85
+ return "string";
86
+ }
87
+ /**
88
+ * Maps SQLite column types to Rowpipe logical ColumnType.
89
+ */
90
+ export function sqliteTypeToRowpipe(dbType) {
91
+ const lower = (dbType || "text").toLowerCase().trim();
92
+ if (lower.includes("int")) {
93
+ if (lower.includes("bigint") || lower.includes("int8"))
94
+ return "bigint";
95
+ return "integer";
96
+ }
97
+ if (lower.includes("real") || lower.includes("floa") || lower.includes("doub")) {
98
+ return "number";
99
+ }
100
+ if (lower.includes("dec") || lower.includes("num")) {
101
+ return "decimal";
102
+ }
103
+ if (lower.includes("bool")) {
104
+ return "boolean";
105
+ }
106
+ if (lower.includes("date") || lower.includes("time")) {
107
+ return "datetime";
108
+ }
109
+ if (lower.includes("blob")) {
110
+ return "binary";
111
+ }
112
+ if (lower.includes("json")) {
113
+ return "json";
114
+ }
115
+ return "string";
116
+ }
117
+ /**
118
+ * Maps Rowpipe logical ColumnType to PostgreSQL DDL data type.
119
+ */
120
+ export function rowpipeTypeToPostgres(type) {
121
+ switch (type) {
122
+ case "integer":
123
+ return "INTEGER";
124
+ case "bigint":
125
+ return "BIGINT";
126
+ case "number":
127
+ return "DOUBLE PRECISION";
128
+ case "decimal":
129
+ return "NUMERIC";
130
+ case "boolean":
131
+ return "BOOLEAN";
132
+ case "date":
133
+ return "DATE";
134
+ case "datetime":
135
+ return "TIMESTAMPTZ";
136
+ case "json":
137
+ return "JSONB";
138
+ case "binary":
139
+ return "BYTEA";
140
+ default:
141
+ return "TEXT";
142
+ }
143
+ }
144
+ /**
145
+ * Maps Rowpipe logical ColumnType to MySQL DDL data type.
146
+ */
147
+ export function rowpipeTypeToMysql(type) {
148
+ switch (type) {
149
+ case "integer":
150
+ return "INT";
151
+ case "bigint":
152
+ return "BIGINT";
153
+ case "number":
154
+ return "DOUBLE";
155
+ case "decimal":
156
+ return "DECIMAL(65,30)";
157
+ case "boolean":
158
+ return "BOOLEAN";
159
+ case "date":
160
+ return "DATE";
161
+ case "datetime":
162
+ return "DATETIME(3)";
163
+ case "json":
164
+ return "JSON";
165
+ case "binary":
166
+ return "LONGBLOB";
167
+ default:
168
+ return "LONGTEXT";
169
+ }
170
+ }
171
+ /**
172
+ * Maps Rowpipe logical ColumnType to SQLite DDL data type.
173
+ */
174
+ export function rowpipeTypeToSqlite(type) {
175
+ switch (type) {
176
+ case "integer":
177
+ case "bigint":
178
+ case "boolean":
179
+ return "INTEGER";
180
+ case "number":
181
+ return "REAL";
182
+ case "decimal":
183
+ return "TEXT";
184
+ case "binary":
185
+ return "BLOB";
186
+ default:
187
+ return "TEXT";
188
+ }
189
+ }
190
+ /**
191
+ * Generates dialect-specific CREATE TABLE SQL DDL.
192
+ */
193
+ export function generateCreateTableSql(table, schema, dialect, primaryKeys) {
194
+ const escapedTable = escapeQualifiedTable(table, dialect);
195
+ const columnDefs = [];
196
+ const typeMapper = dialect === "postgres"
197
+ ? rowpipeTypeToPostgres
198
+ : dialect === "mysql"
199
+ ? rowpipeTypeToMysql
200
+ : rowpipeTypeToSqlite;
201
+ if ("columns" in schema && Array.isArray(schema.columns)) {
202
+ for (const col of schema.columns) {
203
+ const escapedCol = escapeIdentifier(col.name, dialect);
204
+ const sqlType = typeMapper(col.type);
205
+ const notNull = col.nullable === false ? " NOT NULL" : "";
206
+ columnDefs.push(` ${escapedCol} ${sqlType}${notNull}`);
207
+ }
208
+ }
209
+ else {
210
+ for (const [colName, colType] of Object.entries(schema)) {
211
+ const escapedCol = escapeIdentifier(colName, dialect);
212
+ const sqlType = typeMapper(colType);
213
+ columnDefs.push(` ${escapedCol} ${sqlType}`);
214
+ }
215
+ }
216
+ if (primaryKeys && primaryKeys.length > 0) {
217
+ const escapedPks = primaryKeys.map((pk) => escapeIdentifier(pk, dialect)).join(", ");
218
+ columnDefs.push(` PRIMARY KEY (${escapedPks})`);
219
+ }
220
+ return `CREATE TABLE IF NOT EXISTS ${escapedTable} (\n${columnDefs.join(",\n")}\n);`;
221
+ }
222
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/db/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { PipelineOperation } from "../planner/types.js";
2
+ import type { DatabaseDialect } from "./types.js";
3
+ export interface PushdownAnalysis {
4
+ generatedQuery: string;
5
+ remainingOperations: PipelineOperation[];
6
+ pushedClauses: {
7
+ select?: string[];
8
+ where?: string;
9
+ orderBy?: string[];
10
+ limit?: number;
11
+ offset?: number;
12
+ count?: boolean;
13
+ };
14
+ pushedSummary: string[];
15
+ }
16
+ /**
17
+ * Attempts to safely translate a simple Rowpipe filter expression to SQL WHERE clause.
18
+ * Returns undefined if expression contains unsupported operators, pipes, or dialect divergences.
19
+ */
20
+ export declare function tryTranslateFilterToSql(expression: string, dialect: DatabaseDialect): string | undefined;
21
+ /**
22
+ * Analyzes pipeline operations for a table query and extracts safe pushdown clauses.
23
+ */
24
+ export declare function analyzeDatabasePushdown(table: string, dialect: DatabaseDialect, operations: PipelineOperation[], explicitWhere?: string): PushdownAnalysis;
25
+ //# sourceMappingURL=pushdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pushdown.d.ts","sourceRoot":"","sources":["../../src/db/pushdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;IACzC,aAAa,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,MAAM,GAAG,SAAS,CAgFpB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,aAAa,CAAC,EAAE,MAAM,GACrB,gBAAgB,CAqGlB"}