flatsql 2.0.2 → 3.0.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 (84) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -64
  3. package/dist/artifacts/index.d.ts +1 -3
  4. package/dist/artifacts/index.d.ts.map +1 -1
  5. package/dist/artifacts/index.js +1 -3
  6. package/dist/artifacts/index.js.map +1 -1
  7. package/dist/response/artifact.d.ts +1 -2
  8. package/dist/response/artifact.d.ts.map +1 -1
  9. package/dist/response/artifact.js.map +1 -1
  10. package/dist/response/types.d.ts +6 -0
  11. package/dist/response/types.d.ts.map +1 -1
  12. package/dist/stress/index.d.ts +0 -1
  13. package/dist/stress/index.d.ts.map +1 -1
  14. package/dist/stress/index.js +0 -1
  15. package/dist/stress/index.js.map +1 -1
  16. package/dist/stress/native-publish-event-workload.d.ts.map +1 -1
  17. package/dist/stress/native-publish-event-workload.js +14 -4
  18. package/dist/stress/native-publish-event-workload.js.map +1 -1
  19. package/dist/stress/smoke-runner.d.ts.map +1 -1
  20. package/dist/stress/smoke-runner.js +6 -5
  21. package/dist/stress/smoke-runner.js.map +1 -1
  22. package/docs/PARTITION-STORE-WASM.md +241 -0
  23. package/docs/PARTITION-STORE.md +635 -0
  24. package/package.json +61 -22
  25. package/wasm/flatsql-io.js +4 -1
  26. package/wasm/flatsql-ps-threads.wasm +0 -0
  27. package/wasm/flatsql-wasi-noeh.wasm +0 -0
  28. package/wasm/flatsql-wasi.wasm +0 -0
  29. package/wasm/flatsql.js +1 -1
  30. package/wasm/flatsql.wasm +0 -0
  31. package/wasm/index.d.ts +2 -0
  32. package/wasm/index.js +16 -1
  33. package/wasm/integrity.json +28 -0
  34. package/wasm/ps-node-fault.d.mts +23 -0
  35. package/wasm/ps-node-fault.mjs +381 -0
  36. package/wasm/ps-node-guest.mjs +156 -0
  37. package/wasm/ps-node-host.d.mts +86 -0
  38. package/wasm/ps-node-host.mjs +431 -0
  39. package/wasm/ps-node-imports.mjs +847 -0
  40. package/wasm/ps.d.ts +21 -0
  41. package/wasm/ps.js +75 -0
  42. package/dist/artifacts/builder.d.ts +0 -31
  43. package/dist/artifacts/builder.d.ts.map +0 -1
  44. package/dist/artifacts/builder.js +0 -514
  45. package/dist/artifacts/builder.js.map +0 -1
  46. package/dist/artifacts/demo-extractors.d.ts +0 -15
  47. package/dist/artifacts/demo-extractors.d.ts.map +0 -1
  48. package/dist/artifacts/demo-extractors.js +0 -238
  49. package/dist/artifacts/demo-extractors.js.map +0 -1
  50. package/dist/artifacts/standalone-builder.d.ts +0 -62
  51. package/dist/artifacts/standalone-builder.d.ts.map +0 -1
  52. package/dist/artifacts/standalone-builder.js +0 -144
  53. package/dist/artifacts/standalone-builder.js.map +0 -1
  54. package/dist/artifacts/worker-client.d.ts +0 -32
  55. package/dist/artifacts/worker-client.d.ts.map +0 -1
  56. package/dist/artifacts/worker-client.js +0 -415
  57. package/dist/artifacts/worker-client.js.map +0 -1
  58. package/dist/core/database.d.ts +0 -86
  59. package/dist/core/database.d.ts.map +0 -1
  60. package/dist/core/database.js +0 -900
  61. package/dist/core/database.js.map +0 -1
  62. package/dist/core/index.d.ts +0 -3
  63. package/dist/core/index.d.ts.map +0 -1
  64. package/dist/core/index.js +0 -3
  65. package/dist/core/index.js.map +0 -1
  66. package/dist/core/table-store.d.ts +0 -30
  67. package/dist/core/table-store.d.ts.map +0 -1
  68. package/dist/core/table-store.js +0 -187
  69. package/dist/core/table-store.js.map +0 -1
  70. package/dist/flatbuffer-accessor.d.ts +0 -35
  71. package/dist/flatbuffer-accessor.d.ts.map +0 -1
  72. package/dist/flatbuffer-accessor.js +0 -114
  73. package/dist/flatbuffer-accessor.js.map +0 -1
  74. package/dist/index.d.ts +0 -15
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/index.js +0 -22
  77. package/dist/index.js.map +0 -1
  78. package/dist/stress/publish-event-workload.d.ts +0 -3
  79. package/dist/stress/publish-event-workload.d.ts.map +0 -1
  80. package/dist/stress/publish-event-workload.js +0 -467
  81. package/dist/stress/publish-event-workload.js.map +0 -1
  82. package/wasm/flatsql-artifact.worker.js +0 -847
  83. package/wasm/standalone.d.ts +0 -122
  84. package/wasm/standalone.js +0 -914
@@ -1,415 +0,0 @@
1
- import { Worker } from 'node:worker_threads';
2
- import { parseSchema } from '../schema/index.js';
3
- import { sizePrefixedByteLength, writeSizePrefixedStream, } from './transport.js';
4
- const schemaCache = new Map();
5
- const MAX_PENDING_CALLS = 1024;
6
- const MAX_QUERY_RESULT_CACHE_ENTRIES = 1024;
7
- const MAX_QUERY_RESULT_CACHE_ROWS = 1000;
8
- const VOLATILE_QUERY_PATTERNS = [
9
- /\bRANDOM\s*\(/i,
10
- /\bCHANGES\s*\(/i,
11
- /\bTOTAL_CHANGES\s*\(/i,
12
- /\bLAST_INSERT_ROWID\s*\(/i,
13
- /\bCURRENT_(TIME|DATE|TIMESTAMP)\b/i,
14
- /\bDATE\s*\(/i,
15
- /\bTIME\s*\(/i,
16
- /\bDATETIME\s*\(/i,
17
- /\bJULIANDAY\s*\(/i,
18
- /\bUNIXEPOCH\s*\(/i,
19
- /\bSTRFTIME\s*\(/i,
20
- ];
21
- function createDeferred() {
22
- let resolve;
23
- let reject;
24
- const promise = new Promise((promiseResolve, promiseReject) => {
25
- resolve = promiseResolve;
26
- reject = promiseReject;
27
- });
28
- return { resolve, reject, promise };
29
- }
30
- function supportsSharedArrayBuffer() {
31
- return typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined';
32
- }
33
- function isCacheableQuerySql(sql) {
34
- const trimmed = sql.trimStart();
35
- if (trimmed.length === 0) {
36
- return false;
37
- }
38
- const upper = trimmed.toUpperCase();
39
- if (upper.startsWith('SELECT') || upper.startsWith('WITH')) {
40
- return true;
41
- }
42
- return upper.startsWith('PRAGMA') && !trimmed.includes('=');
43
- }
44
- function isResultCacheableQuerySql(sql) {
45
- return isCacheableQuerySql(sql) && !VOLATILE_QUERY_PATTERNS.some((pattern) => pattern.test(sql));
46
- }
47
- function cloneQueryResult(result) {
48
- return {
49
- columns: [...result.columns],
50
- rows: result.rows.map((row) => [...row]),
51
- rowCount: result.rowCount,
52
- };
53
- }
54
- function encodeCacheValue(value) {
55
- if (value === null) {
56
- return { type: 'null' };
57
- }
58
- switch (typeof value) {
59
- case 'string':
60
- return { type: 'string', value };
61
- case 'number':
62
- return { type: 'number', value: Object.is(value, -0) ? '-0' : String(value) };
63
- case 'bigint':
64
- return { type: 'bigint', value: value.toString() };
65
- case 'boolean':
66
- return { type: 'boolean', value };
67
- case 'undefined':
68
- return { type: 'undefined' };
69
- default:
70
- return null;
71
- }
72
- }
73
- function buildResultCacheKey(sql, params) {
74
- if (!isResultCacheableQuerySql(sql)) {
75
- return null;
76
- }
77
- if (params === undefined) {
78
- return sql;
79
- }
80
- if (Array.isArray(params)) {
81
- const encoded = params.map(encodeCacheValue);
82
- if (encoded.some((value) => value === null)) {
83
- return null;
84
- }
85
- return JSON.stringify({ sql, params: { type: 'array', values: encoded } });
86
- }
87
- const prototype = Object.getPrototypeOf(params);
88
- if (prototype !== Object.prototype && prototype !== null) {
89
- return null;
90
- }
91
- const namedParams = params;
92
- const encodedEntries = [];
93
- const keys = Object.keys(namedParams).sort();
94
- for (const key of keys) {
95
- const encodedValue = encodeCacheValue(namedParams[key]);
96
- if (encodedValue === null) {
97
- return null;
98
- }
99
- encodedEntries.push({ key, value: encodedValue });
100
- }
101
- return JSON.stringify({ sql, params: { type: 'object', entries: encodedEntries } });
102
- }
103
- function getCachedResult(cache, key) {
104
- const cached = cache.get(key);
105
- if (!cached) {
106
- return undefined;
107
- }
108
- cache.delete(key);
109
- cache.set(key, cached);
110
- return cached;
111
- }
112
- function setCachedResult(cache, key, result) {
113
- if (result.rowCount > MAX_QUERY_RESULT_CACHE_ROWS) {
114
- cache.delete(key);
115
- return;
116
- }
117
- cache.set(key, cloneQueryResult(result));
118
- while (cache.size > MAX_QUERY_RESULT_CACHE_ENTRIES) {
119
- const oldest = cache.keys().next().value;
120
- if (oldest === undefined) {
121
- break;
122
- }
123
- cache.delete(oldest);
124
- }
125
- }
126
- export class FlatSQLArtifactWorkerClient {
127
- workerPath;
128
- worker = null;
129
- nextId = 1;
130
- pending = new Map();
131
- closed = false;
132
- constructor(workerPath = new URL('../../wasm/flatsql-artifact.worker.js', import.meta.url)) {
133
- this.workerPath = workerPath;
134
- }
135
- async init() {
136
- if (this.worker) {
137
- return;
138
- }
139
- this.closed = false;
140
- const worker = new Worker(this.workerPath);
141
- this.worker = worker;
142
- await new Promise((resolve, reject) => {
143
- let ready = false;
144
- let settled = false;
145
- const rejectInit = (error) => {
146
- if (!settled) {
147
- settled = true;
148
- reject(error);
149
- }
150
- };
151
- const handleMessage = (message) => {
152
- if (message.type === 'ready') {
153
- ready = true;
154
- settled = true;
155
- resolve();
156
- return;
157
- }
158
- if (typeof message.id !== 'number') {
159
- return;
160
- }
161
- const pending = this.pending.get(message.id);
162
- if (!pending) {
163
- return;
164
- }
165
- this.pending.delete(message.id);
166
- if (message.success) {
167
- pending.resolve(message.result);
168
- }
169
- else {
170
- pending.reject(new Error(message.error ?? 'Artifact worker failed'));
171
- }
172
- };
173
- const handleFailure = (error) => {
174
- if (this.worker === worker) {
175
- this.worker = null;
176
- this.closed = true;
177
- }
178
- this.rejectAllPending(error);
179
- if (!ready) {
180
- rejectInit(error);
181
- }
182
- };
183
- worker.on('message', handleMessage);
184
- worker.on('error', handleFailure);
185
- worker.on('exit', (code) => {
186
- if (this.worker !== worker) {
187
- return;
188
- }
189
- this.worker = null;
190
- this.closed = true;
191
- if (code !== 0) {
192
- handleFailure(new Error(`Artifact worker exited with code ${code}`));
193
- }
194
- else {
195
- this.rejectAllPending(new Error('Artifact worker exited'));
196
- }
197
- });
198
- });
199
- }
200
- async createBuilder(schemaSource, options) {
201
- const schemaName = options.name ?? 'artifact';
202
- const cacheKey = `${schemaName}\u0000${schemaSource}`;
203
- let schema = schemaCache.get(cacheKey);
204
- if (!schema) {
205
- schema = parseSchema(schemaSource, schemaName);
206
- schemaCache.set(cacheKey, schema);
207
- }
208
- const builderId = `artifact_${this.nextId++}`;
209
- await this.call('createBuilder', {
210
- builderId,
211
- schema,
212
- performanceProfile: options.performanceProfile ?? 'fast',
213
- sqlitePath: options.sqlitePath,
214
- });
215
- return new FlatSQLArtifactWorkerBuilder(this, builderId, schema, options);
216
- }
217
- async close() {
218
- if (!this.worker) {
219
- return;
220
- }
221
- const worker = this.worker;
222
- this.worker = null;
223
- this.closed = true;
224
- this.rejectAllPending(new Error('Artifact worker client closed'));
225
- await worker.terminate();
226
- }
227
- rejectAllPending(error) {
228
- for (const pending of this.pending.values()) {
229
- pending.reject(error);
230
- }
231
- this.pending.clear();
232
- }
233
- async call(method, params) {
234
- if (!this.worker || this.closed) {
235
- throw new Error('Artifact worker client is not initialized');
236
- }
237
- if (this.pending.size >= MAX_PENDING_CALLS) {
238
- throw new Error(`Artifact worker has too many pending calls (${MAX_PENDING_CALLS})`);
239
- }
240
- const id = this.nextId++;
241
- return await new Promise((resolve, reject) => {
242
- this.pending.set(id, { resolve, reject });
243
- try {
244
- this.worker.postMessage({ id, method, params });
245
- }
246
- catch (error) {
247
- this.pending.delete(id);
248
- reject(error);
249
- }
250
- });
251
- }
252
- }
253
- export class FlatSQLArtifactWorkerBuilder {
254
- client;
255
- builderId;
256
- schema;
257
- preferSharedArrayBuffer;
258
- queryResultCache = new Map();
259
- inFlightQueries = new Map();
260
- queryGeneration = 0;
261
- constructor(client, builderId, schema, options) {
262
- this.client = client;
263
- this.builderId = builderId;
264
- this.schema = schema;
265
- this.preferSharedArrayBuffer = options.preferSharedArrayBuffer ?? true;
266
- }
267
- async registerFileId(fileId, tableName) {
268
- await this.client.call('registerFileId', { builderId: this.builderId, fileId, tableName });
269
- }
270
- async enableDemoExtractors() {
271
- await this.client.call('enableDemoExtractors', { builderId: this.builderId });
272
- }
273
- async ingestBuffers(buffers, options = {}) {
274
- this.queryGeneration += 1;
275
- this.queryResultCache.clear();
276
- this.inFlightQueries.clear();
277
- const canUseShared = this.preferSharedArrayBuffer && supportsSharedArrayBuffer();
278
- if (canUseShared) {
279
- const byteLength = sizePrefixedByteLength(buffers);
280
- const sharedBuffer = new SharedArrayBuffer(byteLength);
281
- writeSizePrefixedStream(new Uint8Array(sharedBuffer), buffers);
282
- return await this.client.call('ingestShared', {
283
- builderId: this.builderId,
284
- sharedBuffer,
285
- byteLength,
286
- options,
287
- });
288
- }
289
- return await this.client.call('ingestClone', {
290
- builderId: this.builderId,
291
- buffers,
292
- options,
293
- });
294
- }
295
- async query(sql, params) {
296
- const resultCacheKey = buildResultCacheKey(sql, params);
297
- const cached = resultCacheKey ? getCachedResult(this.queryResultCache, resultCacheKey) : undefined;
298
- if (cached) {
299
- return cloneQueryResult(cached);
300
- }
301
- if (!resultCacheKey) {
302
- return await this.client.call('query', { builderId: this.builderId, sql, params });
303
- }
304
- const existing = this.inFlightQueries.get(resultCacheKey);
305
- if (existing) {
306
- return cloneQueryResult(await existing);
307
- }
308
- const generation = this.queryGeneration;
309
- const promise = (async () => {
310
- const result = await this.client.call('query', { builderId: this.builderId, sql, params });
311
- if (generation === this.queryGeneration) {
312
- setCachedResult(this.queryResultCache, resultCacheKey, result);
313
- }
314
- return result;
315
- })();
316
- this.inFlightQueries.set(resultCacheKey, promise);
317
- try {
318
- return cloneQueryResult(await promise);
319
- }
320
- finally {
321
- if (this.inFlightQueries.get(resultCacheKey) === promise) {
322
- this.inFlightQueries.delete(resultCacheKey);
323
- }
324
- }
325
- }
326
- async queryMany(queries) {
327
- if (queries.length === 0) {
328
- return [];
329
- }
330
- const results = new Array(queries.length);
331
- const uncachedEntries = [];
332
- const uncachedByKey = new Map();
333
- const pendingExisting = [];
334
- for (let index = 0; index < queries.length; index += 1) {
335
- const query = queries[index];
336
- const resultCacheKey = buildResultCacheKey(query.sql, query.params);
337
- const cached = resultCacheKey ? getCachedResult(this.queryResultCache, resultCacheKey) : undefined;
338
- if (cached) {
339
- results[index] = cloneQueryResult(cached);
340
- continue;
341
- }
342
- if (resultCacheKey) {
343
- const existing = this.inFlightQueries.get(resultCacheKey);
344
- if (existing) {
345
- pendingExisting.push({ index, promise: existing });
346
- continue;
347
- }
348
- const duplicate = uncachedByKey.get(resultCacheKey);
349
- if (duplicate) {
350
- duplicate.indices.push(index);
351
- continue;
352
- }
353
- }
354
- const entry = { query, indices: [index], cacheKey: resultCacheKey };
355
- uncachedEntries.push(entry);
356
- if (resultCacheKey) {
357
- uncachedByKey.set(resultCacheKey, entry);
358
- }
359
- }
360
- if (uncachedEntries.length === 0 && pendingExisting.length === 0) {
361
- return results;
362
- }
363
- const generation = this.queryGeneration;
364
- for (const entry of uncachedEntries) {
365
- if (!entry.cacheKey) {
366
- continue;
367
- }
368
- const deferred = createDeferred();
369
- entry.deferred = deferred;
370
- this.inFlightQueries.set(entry.cacheKey, deferred.promise);
371
- }
372
- try {
373
- if (uncachedEntries.length > 0) {
374
- const freshResults = await this.client.call('queryMany', {
375
- builderId: this.builderId,
376
- queries: uncachedEntries.map((entry) => entry.query),
377
- });
378
- for (let index = 0; index < freshResults.length; index += 1) {
379
- const result = freshResults[index];
380
- const entry = uncachedEntries[index];
381
- if (entry.cacheKey && generation === this.queryGeneration) {
382
- setCachedResult(this.queryResultCache, entry.cacheKey, result);
383
- }
384
- entry.deferred?.resolve(result);
385
- for (const resultIndex of entry.indices) {
386
- results[resultIndex] = entry.cacheKey ? cloneQueryResult(result) : result;
387
- }
388
- }
389
- }
390
- await Promise.all(pendingExisting.map(async ({ index, promise }) => {
391
- results[index] = cloneQueryResult(await promise);
392
- }));
393
- }
394
- catch (error) {
395
- for (const entry of uncachedEntries) {
396
- entry.deferred?.reject(error instanceof Error ? error : new Error(String(error)));
397
- }
398
- throw error;
399
- }
400
- finally {
401
- for (const entry of uncachedEntries) {
402
- if (entry.cacheKey && this.inFlightQueries.get(entry.cacheKey) === entry.deferred?.promise) {
403
- this.inFlightQueries.delete(entry.cacheKey);
404
- }
405
- }
406
- }
407
- return results;
408
- }
409
- async close() {
410
- this.queryResultCache.clear();
411
- this.inFlightQueries.clear();
412
- await this.client.call('closeBuilder', { builderId: this.builderId });
413
- }
414
- }
415
- //# sourceMappingURL=worker-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/artifacts/worker-client.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- import { DatabaseSchema, TableDef } from '../schema/index.js';
2
- export interface QueryResult {
3
- columns: string[];
4
- rows: any[][];
5
- rowCount: number;
6
- }
7
- export interface FlatBufferAccessor {
8
- getField(data: Uint8Array, path: string[]): any;
9
- buildBuffer(tableName: string, fields: Record<string, any>): Uint8Array;
10
- }
11
- export interface DatabaseOptions {
12
- /** Maximum SQL query length (default: 10000) */
13
- maxSqlLength?: number;
14
- /** Maximum queries per second, 0 for unlimited (default: 0) */
15
- rateLimit?: number;
16
- }
17
- export declare class FlatSQLDatabase {
18
- private schema;
19
- private storage;
20
- private tables;
21
- private accessor;
22
- private maxSqlLength;
23
- private rateLimit;
24
- private queryTimestamps;
25
- constructor(schema: DatabaseSchema, accessor: FlatBufferAccessor, options?: DatabaseOptions);
26
- static fromSchema(source: string, accessor: FlatBufferAccessor, name?: string, options?: DatabaseOptions): FlatSQLDatabase;
27
- insert(tableName: string, data: Record<string, any>): bigint;
28
- insertRaw(tableName: string, flatbufferData: Uint8Array): bigint;
29
- stream(tableName: string, flatbuffers: Iterable<Uint8Array>): bigint[];
30
- createIndex(tableName: string, columnName: string): void;
31
- getStorageBytes(): number;
32
- query(sql: string): QueryResult;
33
- private parseSQL;
34
- private enforceRateLimit;
35
- getTableDef(tableName: string): TableDef | undefined;
36
- listTables(): string[];
37
- exportData(): Uint8Array;
38
- getSchema(): DatabaseSchema;
39
- getStats(): {
40
- tableName: string;
41
- recordCount: bigint;
42
- indexes: string[];
43
- }[];
44
- }
45
- export interface OrderByTerm {
46
- column: string;
47
- descending: boolean;
48
- }
49
- type ComparisonOperator = '=' | '!=' | '<>' | '<' | '>' | '<=' | '>=';
50
- export type WhereNode = {
51
- kind: 'and';
52
- children: WhereNode[];
53
- } | {
54
- kind: 'or';
55
- children: WhereNode[];
56
- } | {
57
- kind: 'not';
58
- child: WhereNode;
59
- } | {
60
- kind: 'cmp';
61
- column: string;
62
- operator: ComparisonOperator;
63
- value: any;
64
- } | {
65
- kind: 'between';
66
- column: string;
67
- minValue: any;
68
- maxValue: any;
69
- negated: boolean;
70
- } | {
71
- kind: 'in';
72
- column: string;
73
- values: any[];
74
- negated: boolean;
75
- } | {
76
- kind: 'like';
77
- column: string;
78
- matcher: RegExp;
79
- negated: boolean;
80
- } | {
81
- kind: 'isNull';
82
- column: string;
83
- negated: boolean;
84
- };
85
- export {};
86
- //# sourceMappingURL=database.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}