@flowblade/sqlduck 0.7.0 → 0.8.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.
- package/dist/index.cjs +29 -29
- package/dist/index.mjs +29 -29
- package/package.json +26 -18
package/dist/index.cjs
CHANGED
|
@@ -111,35 +111,6 @@ var DuckMemory = class {
|
|
|
111
111
|
return `${query} ORDER BY ${orderByClause}`;
|
|
112
112
|
};
|
|
113
113
|
};
|
|
114
|
-
const toDuckValue = (value) => {
|
|
115
|
-
if (value instanceof Date) return new _duckdb_node_api.DuckDBTimestampValue(BigInt(value.getTime() * 1e3));
|
|
116
|
-
return value === void 0 ? null : value;
|
|
117
|
-
};
|
|
118
|
-
async function* rowsToColumnsChunks(rows, chunkSize) {
|
|
119
|
-
if (!Number.isSafeInteger(chunkSize) || chunkSize <= 0) throw new Error(`chunkSize must be a positive integer, got ${chunkSize}`);
|
|
120
|
-
const first = await rows.next();
|
|
121
|
-
if (first.done) return;
|
|
122
|
-
const keys = Object.keys(first.value);
|
|
123
|
-
let columns = keys.map(() => []);
|
|
124
|
-
let rowsInChunk = 0;
|
|
125
|
-
keys.forEach((k, i) => columns[i].push(toDuckValue(first.value[k])));
|
|
126
|
-
rowsInChunk++;
|
|
127
|
-
if (rowsInChunk >= chunkSize) {
|
|
128
|
-
yield columns;
|
|
129
|
-
columns = keys.map(() => []);
|
|
130
|
-
rowsInChunk = 0;
|
|
131
|
-
}
|
|
132
|
-
for await (const row of rows) {
|
|
133
|
-
keys.forEach((k, i) => columns[i].push(toDuckValue(row[k])));
|
|
134
|
-
rowsInChunk++;
|
|
135
|
-
if (rowsInChunk >= chunkSize) {
|
|
136
|
-
yield columns;
|
|
137
|
-
columns = keys.map(() => []);
|
|
138
|
-
rowsInChunk = 0;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
if (rowsInChunk > 0) yield columns;
|
|
142
|
-
}
|
|
143
114
|
const isOnDataAppendedAsyncCb = (v) => {
|
|
144
115
|
return v.constructor.name === "AsyncFunction";
|
|
145
116
|
};
|
|
@@ -225,6 +196,35 @@ const createTableFromZod = async (params) => {
|
|
|
225
196
|
columnTypes
|
|
226
197
|
};
|
|
227
198
|
};
|
|
199
|
+
const toDuckValue = (value) => {
|
|
200
|
+
if (value instanceof Date) return new _duckdb_node_api.DuckDBTimestampValue(BigInt(value.getTime() * 1e3));
|
|
201
|
+
return value === void 0 ? null : value;
|
|
202
|
+
};
|
|
203
|
+
async function* rowsToColumnsChunks(rows, chunkSize) {
|
|
204
|
+
if (!Number.isSafeInteger(chunkSize) || chunkSize <= 0) throw new Error(`chunkSize must be a positive integer, got ${chunkSize}`);
|
|
205
|
+
const first = await rows.next();
|
|
206
|
+
if (first.done) return;
|
|
207
|
+
const keys = Object.keys(first.value);
|
|
208
|
+
let columns = keys.map(() => []);
|
|
209
|
+
let rowsInChunk = 0;
|
|
210
|
+
keys.forEach((k, i) => columns[i].push(toDuckValue(first.value[k])));
|
|
211
|
+
rowsInChunk++;
|
|
212
|
+
if (rowsInChunk >= chunkSize) {
|
|
213
|
+
yield columns;
|
|
214
|
+
columns = keys.map(() => []);
|
|
215
|
+
rowsInChunk = 0;
|
|
216
|
+
}
|
|
217
|
+
for await (const row of rows) {
|
|
218
|
+
keys.forEach((k, i) => columns[i].push(toDuckValue(row[k])));
|
|
219
|
+
rowsInChunk++;
|
|
220
|
+
if (rowsInChunk >= chunkSize) {
|
|
221
|
+
yield columns;
|
|
222
|
+
columns = keys.map(() => []);
|
|
223
|
+
rowsInChunk = 0;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (rowsInChunk > 0) yield columns;
|
|
227
|
+
}
|
|
228
228
|
var SqlDuck = class {
|
|
229
229
|
#duck;
|
|
230
230
|
#logger;
|
package/dist/index.mjs
CHANGED
|
@@ -90,35 +90,6 @@ var DuckMemory = class {
|
|
|
90
90
|
return `${query} ORDER BY ${orderByClause}`;
|
|
91
91
|
};
|
|
92
92
|
};
|
|
93
|
-
const toDuckValue = (value) => {
|
|
94
|
-
if (value instanceof Date) return new DuckDBTimestampValue(BigInt(value.getTime() * 1e3));
|
|
95
|
-
return value === void 0 ? null : value;
|
|
96
|
-
};
|
|
97
|
-
async function* rowsToColumnsChunks(rows, chunkSize) {
|
|
98
|
-
if (!Number.isSafeInteger(chunkSize) || chunkSize <= 0) throw new Error(`chunkSize must be a positive integer, got ${chunkSize}`);
|
|
99
|
-
const first = await rows.next();
|
|
100
|
-
if (first.done) return;
|
|
101
|
-
const keys = Object.keys(first.value);
|
|
102
|
-
let columns = keys.map(() => []);
|
|
103
|
-
let rowsInChunk = 0;
|
|
104
|
-
keys.forEach((k, i) => columns[i].push(toDuckValue(first.value[k])));
|
|
105
|
-
rowsInChunk++;
|
|
106
|
-
if (rowsInChunk >= chunkSize) {
|
|
107
|
-
yield columns;
|
|
108
|
-
columns = keys.map(() => []);
|
|
109
|
-
rowsInChunk = 0;
|
|
110
|
-
}
|
|
111
|
-
for await (const row of rows) {
|
|
112
|
-
keys.forEach((k, i) => columns[i].push(toDuckValue(row[k])));
|
|
113
|
-
rowsInChunk++;
|
|
114
|
-
if (rowsInChunk >= chunkSize) {
|
|
115
|
-
yield columns;
|
|
116
|
-
columns = keys.map(() => []);
|
|
117
|
-
rowsInChunk = 0;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (rowsInChunk > 0) yield columns;
|
|
121
|
-
}
|
|
122
93
|
const isOnDataAppendedAsyncCb = (v) => {
|
|
123
94
|
return v.constructor.name === "AsyncFunction";
|
|
124
95
|
};
|
|
@@ -204,6 +175,35 @@ const createTableFromZod = async (params) => {
|
|
|
204
175
|
columnTypes
|
|
205
176
|
};
|
|
206
177
|
};
|
|
178
|
+
const toDuckValue = (value) => {
|
|
179
|
+
if (value instanceof Date) return new DuckDBTimestampValue(BigInt(value.getTime() * 1e3));
|
|
180
|
+
return value === void 0 ? null : value;
|
|
181
|
+
};
|
|
182
|
+
async function* rowsToColumnsChunks(rows, chunkSize) {
|
|
183
|
+
if (!Number.isSafeInteger(chunkSize) || chunkSize <= 0) throw new Error(`chunkSize must be a positive integer, got ${chunkSize}`);
|
|
184
|
+
const first = await rows.next();
|
|
185
|
+
if (first.done) return;
|
|
186
|
+
const keys = Object.keys(first.value);
|
|
187
|
+
let columns = keys.map(() => []);
|
|
188
|
+
let rowsInChunk = 0;
|
|
189
|
+
keys.forEach((k, i) => columns[i].push(toDuckValue(first.value[k])));
|
|
190
|
+
rowsInChunk++;
|
|
191
|
+
if (rowsInChunk >= chunkSize) {
|
|
192
|
+
yield columns;
|
|
193
|
+
columns = keys.map(() => []);
|
|
194
|
+
rowsInChunk = 0;
|
|
195
|
+
}
|
|
196
|
+
for await (const row of rows) {
|
|
197
|
+
keys.forEach((k, i) => columns[i].push(toDuckValue(row[k])));
|
|
198
|
+
rowsInChunk++;
|
|
199
|
+
if (rowsInChunk >= chunkSize) {
|
|
200
|
+
yield columns;
|
|
201
|
+
columns = keys.map(() => []);
|
|
202
|
+
rowsInChunk = 0;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (rowsInChunk > 0) yield columns;
|
|
206
|
+
}
|
|
207
207
|
var SqlDuck = class {
|
|
208
208
|
#duck;
|
|
209
209
|
#logger;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowblade/sqlduck",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -33,6 +33,12 @@
|
|
|
33
33
|
"build-release": "yarn build && rimraf ./_release && yarn pack && mkdir ./_release && tar zxvf ./package.tgz --directory ./_release && rm ./package.tgz",
|
|
34
34
|
"docgen": "run-s docgen-typedoc",
|
|
35
35
|
"docgen-typedoc": "rimraf ./docs/api && typedoc --plugin typedoc-plugin-markdown --out ./docs/api",
|
|
36
|
+
"bench": "vitest bench --run",
|
|
37
|
+
"bench-bun": "bun --bun run vitest bench --run",
|
|
38
|
+
"bench-mitata": "node --experimental-strip-types --expose-gc ./bench/stream.mitata.ts ",
|
|
39
|
+
"bench-mitata-bun": "bun --expose-gc ./bench/stream.mitata.ts ",
|
|
40
|
+
"bench-codspeed": "cross-env CODSPEED=1 vitest bench --run",
|
|
41
|
+
"bench-watch": "vitest bench",
|
|
36
42
|
"test": "vitest run",
|
|
37
43
|
"test-unit": "vitest run",
|
|
38
44
|
"test-unit-bun": "bun --bun run vitest run",
|
|
@@ -49,36 +55,37 @@
|
|
|
49
55
|
},
|
|
50
56
|
"dependencies": {
|
|
51
57
|
"@flowblade/core": "^0.2.25",
|
|
52
|
-
"@flowblade/source-duckdb": "^0.
|
|
53
|
-
"@flowblade/sql-tag": "^0.3.
|
|
58
|
+
"@flowblade/source-duckdb": "^0.18.0",
|
|
59
|
+
"@flowblade/sql-tag": "^0.3.1",
|
|
54
60
|
"@standard-schema/spec": "^1.1.0",
|
|
55
61
|
"p-mutex": "^1.0.0",
|
|
56
62
|
"valibot": "^1.2.0",
|
|
57
|
-
"zod": "^4.3.
|
|
63
|
+
"zod": "^4.3.6"
|
|
58
64
|
},
|
|
59
65
|
"peerDependencies": {
|
|
60
|
-
"@duckdb/node-api": "^1.4.
|
|
66
|
+
"@duckdb/node-api": "^1.4.4-r.1"
|
|
61
67
|
},
|
|
62
68
|
"devDependencies": {
|
|
63
69
|
"@belgattitude/eslint-config-bases": "8.9.0",
|
|
64
|
-
"@dotenvx/dotenvx": "1.
|
|
65
|
-
"@duckdb/node-api": "1.4.
|
|
70
|
+
"@dotenvx/dotenvx": "1.52.0",
|
|
71
|
+
"@duckdb/node-api": "1.4.4-r.1",
|
|
66
72
|
"@faker-js/faker": "10.2.0",
|
|
67
73
|
"@flowblade/source-kysely": "^1.2.2",
|
|
68
74
|
"@httpx/assert": "0.16.7",
|
|
75
|
+
"@mitata/counters": "0.0.8",
|
|
69
76
|
"@size-limit/esbuild": "12.0.0",
|
|
70
77
|
"@size-limit/file": "12.0.0",
|
|
71
78
|
"@testcontainers/mssqlserver": "11.11.0",
|
|
72
79
|
"@total-typescript/ts-reset": "0.6.1",
|
|
73
80
|
"@traversable/zod": "0.0.57",
|
|
74
|
-
"@types/node": "25.0.
|
|
75
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
76
|
-
"@typescript-eslint/parser": "8.
|
|
77
|
-
"@vitest/coverage-v8": "4.0.
|
|
78
|
-
"@vitest/ui": "4.0.
|
|
81
|
+
"@types/node": "25.0.10",
|
|
82
|
+
"@typescript-eslint/eslint-plugin": "8.54.0",
|
|
83
|
+
"@typescript-eslint/parser": "8.54.0",
|
|
84
|
+
"@vitest/coverage-v8": "4.0.18",
|
|
85
|
+
"@vitest/ui": "4.0.18",
|
|
79
86
|
"ansis": "4.2.0",
|
|
80
87
|
"browserslist-to-esbuild": "2.1.1",
|
|
81
|
-
"core-js": "3.
|
|
88
|
+
"core-js": "3.48.0",
|
|
82
89
|
"cross-env": "10.1.0",
|
|
83
90
|
"es-check": "9.5.4",
|
|
84
91
|
"esbuild": "0.27.2",
|
|
@@ -86,9 +93,10 @@
|
|
|
86
93
|
"execa": "9.6.1",
|
|
87
94
|
"is-in-ci": "2.0.0",
|
|
88
95
|
"kysely": "0.28.10",
|
|
96
|
+
"mitata": "1.0.34",
|
|
89
97
|
"npm-run-all2": "8.0.4",
|
|
90
|
-
"prettier": "3.8.
|
|
91
|
-
"publint": "0.3.
|
|
98
|
+
"prettier": "3.8.1",
|
|
99
|
+
"publint": "0.3.17",
|
|
92
100
|
"regexp.escape": "2.0.1",
|
|
93
101
|
"rimraf": "6.1.2",
|
|
94
102
|
"size-limit": "12.0.0",
|
|
@@ -96,13 +104,13 @@
|
|
|
96
104
|
"tarn": "3.0.2",
|
|
97
105
|
"tedious": "19.2.0",
|
|
98
106
|
"testcontainers": "11.11.0",
|
|
99
|
-
"tsdown": "0.
|
|
107
|
+
"tsdown": "0.20.1",
|
|
100
108
|
"tsx": "4.21.0",
|
|
101
109
|
"typedoc": "0.28.16",
|
|
102
110
|
"typedoc-plugin-markdown": "4.9.0",
|
|
103
111
|
"typescript": "5.9.3",
|
|
104
|
-
"vite-tsconfig-paths": "6.0.
|
|
105
|
-
"vitest": "4.0.
|
|
112
|
+
"vite-tsconfig-paths": "6.0.5",
|
|
113
|
+
"vitest": "4.0.18"
|
|
106
114
|
},
|
|
107
115
|
"files": [
|
|
108
116
|
"dist"
|