flatsql 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 (65) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +489 -0
  3. package/dist/btree/btree.d.ts +34 -0
  4. package/dist/btree/btree.d.ts.map +1 -0
  5. package/dist/btree/btree.js +235 -0
  6. package/dist/btree/btree.js.map +1 -0
  7. package/dist/btree/index.d.ts +3 -0
  8. package/dist/btree/index.d.ts.map +1 -0
  9. package/dist/btree/index.js +3 -0
  10. package/dist/btree/index.js.map +1 -0
  11. package/dist/btree/types.d.ts +36 -0
  12. package/dist/btree/types.d.ts.map +1 -0
  13. package/dist/btree/types.js +55 -0
  14. package/dist/btree/types.js.map +1 -0
  15. package/dist/core/database.d.ts +45 -0
  16. package/dist/core/database.d.ts.map +1 -0
  17. package/dist/core/database.js +248 -0
  18. package/dist/core/database.js.map +1 -0
  19. package/dist/core/index.d.ts +3 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +3 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/core/table-store.d.ts +28 -0
  24. package/dist/core/table-store.d.ts.map +1 -0
  25. package/dist/core/table-store.js +153 -0
  26. package/dist/core/table-store.js.map +1 -0
  27. package/dist/flatbuffer-accessor.d.ts +35 -0
  28. package/dist/flatbuffer-accessor.d.ts.map +1 -0
  29. package/dist/flatbuffer-accessor.js +114 -0
  30. package/dist/flatbuffer-accessor.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +15 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/schema/index.d.ts +3 -0
  36. package/dist/schema/index.d.ts.map +1 -0
  37. package/dist/schema/index.js +3 -0
  38. package/dist/schema/index.js.map +1 -0
  39. package/dist/schema/parser.d.ts +25 -0
  40. package/dist/schema/parser.d.ts.map +1 -0
  41. package/dist/schema/parser.js +394 -0
  42. package/dist/schema/parser.js.map +1 -0
  43. package/dist/schema/types.d.ts +33 -0
  44. package/dist/schema/types.d.ts.map +1 -0
  45. package/dist/schema/types.js +29 -0
  46. package/dist/schema/types.js.map +1 -0
  47. package/dist/storage/index.d.ts +3 -0
  48. package/dist/storage/index.d.ts.map +1 -0
  49. package/dist/storage/index.js +3 -0
  50. package/dist/storage/index.js.map +1 -0
  51. package/dist/storage/stacked-flatbuffers.d.ts +38 -0
  52. package/dist/storage/stacked-flatbuffers.d.ts.map +1 -0
  53. package/dist/storage/stacked-flatbuffers.js +253 -0
  54. package/dist/storage/stacked-flatbuffers.js.map +1 -0
  55. package/dist/storage/types.d.ts +23 -0
  56. package/dist/storage/types.d.ts.map +1 -0
  57. package/dist/storage/types.js +27 -0
  58. package/dist/storage/types.js.map +1 -0
  59. package/package.json +79 -0
  60. package/wasm/flatsql-client.js +280 -0
  61. package/wasm/flatsql.js +2 -0
  62. package/wasm/flatsql.wasm +0 -0
  63. package/wasm/flatsql.worker.js +209 -0
  64. package/wasm/index.d.ts +234 -0
  65. package/wasm/index.js +463 -0
@@ -0,0 +1,34 @@
1
+ import { BTreeConfig, BTreeNode, BTreeStats, IndexEntry } from './types.js';
2
+ export declare class BTree {
3
+ private config;
4
+ private nodes;
5
+ private rootId;
6
+ private nextNodeId;
7
+ private entryCount;
8
+ constructor(config: BTreeConfig);
9
+ private createNode;
10
+ private getNode;
11
+ insert(key: IndexEntry['key'], dataOffset: bigint, dataLength: number, sequence: bigint): void;
12
+ private insertNonFull;
13
+ private splitChild;
14
+ search(key: IndexEntry['key']): IndexEntry[];
15
+ private searchNode;
16
+ range(minKey: IndexEntry['key'], maxKey: IndexEntry['key']): IndexEntry[];
17
+ private rangeSearch;
18
+ all(): IndexEntry[];
19
+ private collectAll;
20
+ getStats(): BTreeStats;
21
+ private getHeight;
22
+ serialize(): {
23
+ config: BTreeConfig;
24
+ rootId: bigint;
25
+ nodes: BTreeNode[];
26
+ stats: BTreeStats;
27
+ };
28
+ static deserialize(data: {
29
+ config: BTreeConfig;
30
+ rootId: bigint;
31
+ nodes: BTreeNode[];
32
+ }): BTree;
33
+ }
34
+ //# sourceMappingURL=btree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btree.d.ts","sourceRoot":"","sources":["../../src/btree/btree.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EAIX,MAAM,YAAY,CAAC;AAEpB,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAc;gBAEpB,MAAM,EAAE,WAAW;IAM/B,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,OAAO;IASf,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+B9F,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,UAAU;IA6BlB,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE;IAI5C,OAAO,CAAC,UAAU;IA4BlB,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE;IAMzE,OAAO,CAAC,WAAW;IAwCnB,GAAG,IAAI,UAAU,EAAE;IAMnB,OAAO,CAAC,UAAU;IAgBlB,QAAQ,IAAI,UAAU;IAQtB,OAAO,CAAC,SAAS;IASjB,SAAS,IAAI;QACX,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,SAAS,EAAE,CAAC;QACnB,KAAK,EAAE,UAAU,CAAC;KACnB;IAUD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,SAAS,EAAE,CAAC;KACpB,GAAG,KAAK;CAuBV"}
@@ -0,0 +1,235 @@
1
+ // In-memory B-Tree implementation for FlatBuffers-SQLite
2
+ // This indexes into offsets in the stacked FlatBuffer data file
3
+ import { compareKeys, } from './types.js';
4
+ export class BTree {
5
+ config;
6
+ nodes = new Map();
7
+ rootId = 0n;
8
+ nextNodeId = 1n;
9
+ entryCount = 0n;
10
+ constructor(config) {
11
+ this.config = config;
12
+ // Create initial empty root (leaf)
13
+ this.rootId = this.createNode(true, 0n);
14
+ }
15
+ createNode(isLeaf, parentId) {
16
+ const nodeId = this.nextNodeId++;
17
+ const node = {
18
+ nodeId,
19
+ isLeaf,
20
+ entries: [],
21
+ children: [],
22
+ parentId,
23
+ };
24
+ this.nodes.set(nodeId, node);
25
+ return nodeId;
26
+ }
27
+ getNode(nodeId) {
28
+ const node = this.nodes.get(nodeId);
29
+ if (!node) {
30
+ throw new Error(`Node ${nodeId} not found`);
31
+ }
32
+ return node;
33
+ }
34
+ // Insert a new entry into the B-tree
35
+ insert(key, dataOffset, dataLength, sequence) {
36
+ const entry = {
37
+ keyType: this.config.keyType,
38
+ key,
39
+ dataOffset,
40
+ dataLength,
41
+ sequence,
42
+ };
43
+ const root = this.getNode(this.rootId);
44
+ // If root is full, split it first
45
+ if (root.entries.length >= this.config.order - 1) {
46
+ // Create new root
47
+ const newRootId = this.createNode(false, 0n);
48
+ const newRoot = this.getNode(newRootId);
49
+ newRoot.children.push(this.rootId);
50
+ // Update old root's parent
51
+ root.parentId = newRootId;
52
+ // Split the old root
53
+ this.splitChild(newRootId, 0);
54
+ this.rootId = newRootId;
55
+ }
56
+ this.insertNonFull(this.rootId, entry);
57
+ this.entryCount++;
58
+ }
59
+ insertNonFull(nodeId, entry) {
60
+ const node = this.getNode(nodeId);
61
+ if (node.isLeaf) {
62
+ // Find position to insert
63
+ let i = node.entries.length - 1;
64
+ while (i >= 0 && compareKeys(entry.key, node.entries[i].key, this.config.keyType) < 0) {
65
+ i--;
66
+ }
67
+ // Insert at position i + 1
68
+ node.entries.splice(i + 1, 0, entry);
69
+ }
70
+ else {
71
+ // Find child to descend into
72
+ let i = node.entries.length - 1;
73
+ while (i >= 0 && compareKeys(entry.key, node.entries[i].key, this.config.keyType) < 0) {
74
+ i--;
75
+ }
76
+ i++;
77
+ const childId = node.children[i];
78
+ const child = this.getNode(childId);
79
+ // If child is full, split it
80
+ if (child.entries.length >= this.config.order - 1) {
81
+ this.splitChild(nodeId, i);
82
+ // After split, determine which child to use
83
+ if (compareKeys(entry.key, node.entries[i].key, this.config.keyType) > 0) {
84
+ i++;
85
+ }
86
+ }
87
+ this.insertNonFull(node.children[i], entry);
88
+ }
89
+ }
90
+ splitChild(parentId, childIndex) {
91
+ const parent = this.getNode(parentId);
92
+ const child = this.getNode(parent.children[childIndex]);
93
+ const mid = Math.floor((this.config.order - 1) / 2);
94
+ // Create new sibling node
95
+ const siblingId = this.createNode(child.isLeaf, parentId);
96
+ const sibling = this.getNode(siblingId);
97
+ // Move second half of entries to sibling
98
+ sibling.entries = child.entries.splice(mid + 1);
99
+ const midEntry = child.entries.pop();
100
+ // If not leaf, move children too
101
+ if (!child.isLeaf) {
102
+ sibling.children = child.children.splice(mid + 1);
103
+ // Update parent references for moved children
104
+ for (const sibChildId of sibling.children) {
105
+ const sibChild = this.getNode(sibChildId);
106
+ sibChild.parentId = siblingId;
107
+ }
108
+ }
109
+ // Insert mid entry and sibling into parent
110
+ parent.entries.splice(childIndex, 0, midEntry);
111
+ parent.children.splice(childIndex + 1, 0, siblingId);
112
+ }
113
+ // Search for entries matching a key
114
+ search(key) {
115
+ return this.searchNode(this.rootId, key);
116
+ }
117
+ searchNode(nodeId, key) {
118
+ const node = this.getNode(nodeId);
119
+ const results = [];
120
+ let i = 0;
121
+ while (i < node.entries.length && compareKeys(key, node.entries[i].key, this.config.keyType) > 0) {
122
+ i++;
123
+ }
124
+ // Collect all matching entries (handles duplicates)
125
+ while (i < node.entries.length && compareKeys(key, node.entries[i].key, this.config.keyType) === 0) {
126
+ results.push(node.entries[i]);
127
+ i++;
128
+ }
129
+ if (!node.isLeaf) {
130
+ // Search appropriate child
131
+ let childIdx = 0;
132
+ while (childIdx < node.entries.length && compareKeys(key, node.entries[childIdx].key, this.config.keyType) > 0) {
133
+ childIdx++;
134
+ }
135
+ results.push(...this.searchNode(node.children[childIdx], key));
136
+ }
137
+ return results;
138
+ }
139
+ // Range query: find all entries where minKey <= key <= maxKey
140
+ range(minKey, maxKey) {
141
+ const results = [];
142
+ this.rangeSearch(this.rootId, minKey, maxKey, results);
143
+ return results;
144
+ }
145
+ rangeSearch(nodeId, minKey, maxKey, results) {
146
+ const node = this.getNode(nodeId);
147
+ // Find first entry that might be in range
148
+ let i = 0;
149
+ while (i < node.entries.length) {
150
+ const entry = node.entries[i];
151
+ const cmpMin = compareKeys(entry.key, minKey, this.config.keyType);
152
+ const cmpMax = compareKeys(entry.key, maxKey, this.config.keyType);
153
+ // Visit left child if it might contain entries in range
154
+ if (!node.isLeaf && cmpMin >= 0) {
155
+ this.rangeSearch(node.children[i], minKey, maxKey, results);
156
+ }
157
+ // Add entry if in range
158
+ if (cmpMin >= 0 && cmpMax <= 0) {
159
+ results.push(entry);
160
+ }
161
+ // Stop if we're past maxKey
162
+ if (cmpMax > 0) {
163
+ break;
164
+ }
165
+ i++;
166
+ }
167
+ // Visit the rightmost child if we haven't stopped early
168
+ if (!node.isLeaf && i === node.entries.length && node.children.length > i) {
169
+ this.rangeSearch(node.children[i], minKey, maxKey, results);
170
+ }
171
+ }
172
+ // Get all entries (full scan)
173
+ all() {
174
+ const results = [];
175
+ this.collectAll(this.rootId, results);
176
+ return results;
177
+ }
178
+ collectAll(nodeId, results) {
179
+ const node = this.getNode(nodeId);
180
+ for (let i = 0; i < node.entries.length; i++) {
181
+ if (!node.isLeaf) {
182
+ this.collectAll(node.children[i], results);
183
+ }
184
+ results.push(node.entries[i]);
185
+ }
186
+ if (!node.isLeaf && node.children.length > node.entries.length) {
187
+ this.collectAll(node.children[node.children.length - 1], results);
188
+ }
189
+ }
190
+ // Get tree statistics
191
+ getStats() {
192
+ return {
193
+ entryCount: this.entryCount,
194
+ height: this.getHeight(this.rootId),
195
+ nodeCount: this.nodes.size,
196
+ };
197
+ }
198
+ getHeight(nodeId) {
199
+ const node = this.getNode(nodeId);
200
+ if (node.isLeaf) {
201
+ return 1;
202
+ }
203
+ return 1 + this.getHeight(node.children[0]);
204
+ }
205
+ // Serialize the B-tree to a format suitable for FlatBuffer storage
206
+ serialize() {
207
+ return {
208
+ config: this.config,
209
+ rootId: this.rootId,
210
+ nodes: Array.from(this.nodes.values()),
211
+ stats: this.getStats(),
212
+ };
213
+ }
214
+ // Restore a B-tree from serialized data
215
+ static deserialize(data) {
216
+ const tree = new BTree(data.config);
217
+ tree.nodes.clear();
218
+ tree.rootId = data.rootId;
219
+ let maxId = 0n;
220
+ let entryCount = 0n;
221
+ for (const node of data.nodes) {
222
+ tree.nodes.set(node.nodeId, node);
223
+ if (node.nodeId > maxId) {
224
+ maxId = node.nodeId;
225
+ }
226
+ if (node.isLeaf) {
227
+ entryCount += BigInt(node.entries.length);
228
+ }
229
+ }
230
+ tree.nextNodeId = maxId + 1n;
231
+ tree.entryCount = entryCount;
232
+ return tree;
233
+ }
234
+ }
235
+ //# sourceMappingURL=btree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/btree/btree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './btree.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/btree/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './btree.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/btree/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,36 @@
1
+ export declare enum KeyType {
2
+ Null = 0,
3
+ Int = 1,
4
+ Float = 2,
5
+ String = 3,
6
+ Bytes = 4
7
+ }
8
+ export interface IndexEntry {
9
+ keyType: KeyType;
10
+ key: number | string | Uint8Array | null;
11
+ dataOffset: bigint;
12
+ dataLength: number;
13
+ sequence: bigint;
14
+ }
15
+ export interface BTreeNode {
16
+ nodeId: bigint;
17
+ isLeaf: boolean;
18
+ entries: IndexEntry[];
19
+ children: bigint[];
20
+ parentId: bigint;
21
+ }
22
+ export interface BTreeConfig {
23
+ name: string;
24
+ tableName: string;
25
+ columnName: string;
26
+ keyType: KeyType;
27
+ order: number;
28
+ }
29
+ export interface BTreeStats {
30
+ entryCount: bigint;
31
+ height: number;
32
+ nodeCount: number;
33
+ }
34
+ export type CompareResult = -1 | 0 | 1;
35
+ export declare function compareKeys(a: IndexEntry['key'], b: IndexEntry['key'], keyType: KeyType): CompareResult;
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/btree/types.ts"],"names":[],"mappings":"AAEA,oBAAY,OAAO;IACjB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,KAAK,IAAI;IACT,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAGvC,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAoCvG"}
@@ -0,0 +1,55 @@
1
+ // B-Tree types for FlatBuffers-SQLite
2
+ export var KeyType;
3
+ (function (KeyType) {
4
+ KeyType[KeyType["Null"] = 0] = "Null";
5
+ KeyType[KeyType["Int"] = 1] = "Int";
6
+ KeyType[KeyType["Float"] = 2] = "Float";
7
+ KeyType[KeyType["String"] = 3] = "String";
8
+ KeyType[KeyType["Bytes"] = 4] = "Bytes";
9
+ })(KeyType || (KeyType = {}));
10
+ // Compare two keys of the same type
11
+ export function compareKeys(a, b, keyType) {
12
+ if (a === null && b === null)
13
+ return 0;
14
+ if (a === null)
15
+ return -1;
16
+ if (b === null)
17
+ return 1;
18
+ switch (keyType) {
19
+ case KeyType.Int:
20
+ case KeyType.Float:
21
+ const numA = a;
22
+ const numB = b;
23
+ if (numA < numB)
24
+ return -1;
25
+ if (numA > numB)
26
+ return 1;
27
+ return 0;
28
+ case KeyType.String:
29
+ const strA = a;
30
+ const strB = b;
31
+ if (strA < strB)
32
+ return -1;
33
+ if (strA > strB)
34
+ return 1;
35
+ return 0;
36
+ case KeyType.Bytes:
37
+ const bytesA = a;
38
+ const bytesB = b;
39
+ const minLen = Math.min(bytesA.length, bytesB.length);
40
+ for (let i = 0; i < minLen; i++) {
41
+ if (bytesA[i] < bytesB[i])
42
+ return -1;
43
+ if (bytesA[i] > bytesB[i])
44
+ return 1;
45
+ }
46
+ if (bytesA.length < bytesB.length)
47
+ return -1;
48
+ if (bytesA.length > bytesB.length)
49
+ return 1;
50
+ return 0;
51
+ default:
52
+ return 0;
53
+ }
54
+ }
55
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/btree/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,MAAM,CAAN,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,qCAAQ,CAAA;IACR,mCAAO,CAAA;IACP,uCAAS,CAAA;IACT,yCAAU,CAAA;IACV,uCAAS,CAAA;AACX,CAAC,EANW,OAAO,KAAP,OAAO,QAMlB;AAmCD,oCAAoC;AACpC,MAAM,UAAU,WAAW,CAAC,CAAoB,EAAE,CAAoB,EAAE,OAAgB;IACtF,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAEzB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,KAAK,OAAO,CAAC,KAAK;YAChB,MAAM,IAAI,GAAG,CAAW,CAAC;YACzB,MAAM,IAAI,GAAG,CAAW,CAAC;YACzB,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QAEX,KAAK,OAAO,CAAC,MAAM;YACjB,MAAM,IAAI,GAAG,CAAW,CAAC;YACzB,MAAM,IAAI,GAAG,CAAW,CAAC;YACzB,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QAEX,KAAK,OAAO,CAAC,KAAK;YAChB,MAAM,MAAM,GAAG,CAAe,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAe,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC;QAEX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
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
+ query(sql: string): QueryResult;
31
+ private parseSQL;
32
+ private parseValue;
33
+ private enforceRateLimit;
34
+ private evaluateCondition;
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
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAS3E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEhD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;CACzE;AAED,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAAqB;IAGrC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAgB;gBAE3B,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,eAAoB;IAmB/F,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,MAAkB,EACxB,OAAO,GAAE,eAAoB,GAC5B,eAAe;IAMlB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAW5D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,GAAG,MAAM;IAUhE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE;IAYtE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAkE/B,OAAO,CAAC,QAAQ;IAkDhB,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IAqBzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAKpD,UAAU,IAAI,MAAM,EAAE;IAKtB,UAAU,IAAI,UAAU;IAKxB,SAAS,IAAI,cAAc;IAK3B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;CAO5E"}