flatsql 3.11.1 → 3.12.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 (181) hide show
  1. package/README.md +61 -795
  2. package/bin/flatsql.mjs +76 -0
  3. package/cpp/README.md +18 -0
  4. package/cpp/include/flatsql/flatsql.h +162 -0
  5. package/cpp/include/flatsql/flatsql_io.h +159 -0
  6. package/docs/API-3.12.md +114 -0
  7. package/package.json +28 -123
  8. package/wasm/flatsql.wasm +0 -0
  9. package/wasm/index.d.ts +61 -548
  10. package/wasm/index.js +280 -1281
  11. package/wasm/integrity.json +6 -26
  12. package/wasm/runtime/LICENSE.sdk.txt +190 -0
  13. package/wasm/runtime/NOTICE.txt +2 -0
  14. package/wasm/runtime/browser-guest.mjs +1 -0
  15. package/wasm/runtime/browser-host.mjs +1 -0
  16. package/wasm/runtime/node-guest.mjs +2 -0
  17. package/wasm/runtime/node-host.mjs +5 -0
  18. package/wasm/runtime/opfsIoWorker.mjs +1 -0
  19. package/wasm/runtime/wasiThreadBrowserWorker.mjs +1 -0
  20. package/dist/artifacts/index.d.ts +0 -3
  21. package/dist/artifacts/index.d.ts.map +0 -1
  22. package/dist/artifacts/index.js +0 -3
  23. package/dist/artifacts/index.js.map +0 -1
  24. package/dist/artifacts/transport.d.ts +0 -5
  25. package/dist/artifacts/transport.d.ts.map +0 -1
  26. package/dist/artifacts/transport.js +0 -45
  27. package/dist/artifacts/transport.js.map +0 -1
  28. package/dist/artifacts/types.d.ts +0 -34
  29. package/dist/artifacts/types.d.ts.map +0 -1
  30. package/dist/artifacts/types.js +0 -2
  31. package/dist/artifacts/types.js.map +0 -1
  32. package/dist/btree/btree.d.ts +0 -34
  33. package/dist/btree/btree.d.ts.map +0 -1
  34. package/dist/btree/btree.js +0 -234
  35. package/dist/btree/btree.js.map +0 -1
  36. package/dist/btree/index.d.ts +0 -3
  37. package/dist/btree/index.d.ts.map +0 -1
  38. package/dist/btree/index.js +0 -3
  39. package/dist/btree/index.js.map +0 -1
  40. package/dist/btree/types.d.ts +0 -36
  41. package/dist/btree/types.d.ts.map +0 -1
  42. package/dist/btree/types.js +0 -55
  43. package/dist/btree/types.js.map +0 -1
  44. package/dist/cluster/index.d.ts +0 -11
  45. package/dist/cluster/index.d.ts.map +0 -1
  46. package/dist/cluster/index.js +0 -59
  47. package/dist/cluster/index.js.map +0 -1
  48. package/dist/response/artifact.d.ts +0 -4
  49. package/dist/response/artifact.d.ts.map +0 -1
  50. package/dist/response/artifact.js +0 -102
  51. package/dist/response/artifact.js.map +0 -1
  52. package/dist/response/cache-key.d.ts +0 -6
  53. package/dist/response/cache-key.d.ts.map +0 -1
  54. package/dist/response/cache-key.js +0 -114
  55. package/dist/response/cache-key.js.map +0 -1
  56. package/dist/response/index.d.ts +0 -5
  57. package/dist/response/index.d.ts.map +0 -1
  58. package/dist/response/index.js +0 -5
  59. package/dist/response/index.js.map +0 -1
  60. package/dist/response/memory-cache.d.ts +0 -17
  61. package/dist/response/memory-cache.d.ts.map +0 -1
  62. package/dist/response/memory-cache.js +0 -76
  63. package/dist/response/memory-cache.js.map +0 -1
  64. package/dist/response/types.d.ts +0 -57
  65. package/dist/response/types.d.ts.map +0 -1
  66. package/dist/response/types.js +0 -2
  67. package/dist/response/types.js.map +0 -1
  68. package/dist/schema/index.d.ts +0 -3
  69. package/dist/schema/index.d.ts.map +0 -1
  70. package/dist/schema/index.js +0 -3
  71. package/dist/schema/index.js.map +0 -1
  72. package/dist/schema/parser.d.ts +0 -25
  73. package/dist/schema/parser.d.ts.map +0 -1
  74. package/dist/schema/parser.js +0 -474
  75. package/dist/schema/parser.js.map +0 -1
  76. package/dist/schema/types.d.ts +0 -33
  77. package/dist/schema/types.d.ts.map +0 -1
  78. package/dist/schema/types.js +0 -29
  79. package/dist/schema/types.js.map +0 -1
  80. package/dist/standalone/index.d.ts +0 -3
  81. package/dist/standalone/index.d.ts.map +0 -1
  82. package/dist/standalone/index.js +0 -3
  83. package/dist/standalone/index.js.map +0 -1
  84. package/dist/standalone/process-client.d.ts +0 -85
  85. package/dist/standalone/process-client.d.ts.map +0 -1
  86. package/dist/standalone/process-client.js +0 -537
  87. package/dist/standalone/process-client.js.map +0 -1
  88. package/dist/standalone/wasmedge-runner.d.ts +0 -19
  89. package/dist/standalone/wasmedge-runner.d.ts.map +0 -1
  90. package/dist/standalone/wasmedge-runner.js +0 -108
  91. package/dist/standalone/wasmedge-runner.js.map +0 -1
  92. package/dist/storage/index.d.ts +0 -3
  93. package/dist/storage/index.d.ts.map +0 -1
  94. package/dist/storage/index.js +0 -3
  95. package/dist/storage/index.js.map +0 -1
  96. package/dist/storage/stacked-flatbuffers.d.ts +0 -38
  97. package/dist/storage/stacked-flatbuffers.d.ts.map +0 -1
  98. package/dist/storage/stacked-flatbuffers.js +0 -253
  99. package/dist/storage/stacked-flatbuffers.js.map +0 -1
  100. package/dist/storage/types.d.ts +0 -23
  101. package/dist/storage/types.d.ts.map +0 -1
  102. package/dist/storage/types.js +0 -27
  103. package/dist/storage/types.js.map +0 -1
  104. package/dist/stress/aggregate.d.ts +0 -3
  105. package/dist/stress/aggregate.d.ts.map +0 -1
  106. package/dist/stress/aggregate.js +0 -61
  107. package/dist/stress/aggregate.js.map +0 -1
  108. package/dist/stress/docker-compose.d.ts +0 -17
  109. package/dist/stress/docker-compose.d.ts.map +0 -1
  110. package/dist/stress/docker-compose.js +0 -156
  111. package/dist/stress/docker-compose.js.map +0 -1
  112. package/dist/stress/index.d.ts +0 -10
  113. package/dist/stress/index.d.ts.map +0 -1
  114. package/dist/stress/index.js +0 -10
  115. package/dist/stress/index.js.map +0 -1
  116. package/dist/stress/metrics.d.ts +0 -3
  117. package/dist/stress/metrics.d.ts.map +0 -1
  118. package/dist/stress/metrics.js +0 -83
  119. package/dist/stress/metrics.js.map +0 -1
  120. package/dist/stress/native-publish-event-workload.d.ts +0 -3
  121. package/dist/stress/native-publish-event-workload.d.ts.map +0 -1
  122. package/dist/stress/native-publish-event-workload.js +0 -465
  123. package/dist/stress/native-publish-event-workload.js.map +0 -1
  124. package/dist/stress/production-gate.d.ts +0 -4
  125. package/dist/stress/production-gate.d.ts.map +0 -1
  126. package/dist/stress/production-gate.js +0 -12
  127. package/dist/stress/production-gate.js.map +0 -1
  128. package/dist/stress/report.d.ts +0 -3
  129. package/dist/stress/report.d.ts.map +0 -1
  130. package/dist/stress/report.js +0 -174
  131. package/dist/stress/report.js.map +0 -1
  132. package/dist/stress/sds-discovery.d.ts +0 -4
  133. package/dist/stress/sds-discovery.d.ts.map +0 -1
  134. package/dist/stress/sds-discovery.js +0 -40
  135. package/dist/stress/sds-discovery.js.map +0 -1
  136. package/dist/stress/smoke-runner.d.ts +0 -3
  137. package/dist/stress/smoke-runner.d.ts.map +0 -1
  138. package/dist/stress/smoke-runner.js +0 -64
  139. package/dist/stress/smoke-runner.js.map +0 -1
  140. package/dist/stress/types.d.ts +0 -219
  141. package/dist/stress/types.d.ts.map +0 -1
  142. package/dist/stress/types.js +0 -2
  143. package/dist/stress/types.js.map +0 -1
  144. package/dist/stress/workload.d.ts +0 -6
  145. package/dist/stress/workload.d.ts.map +0 -1
  146. package/dist/stress/workload.js +0 -144
  147. package/dist/stress/workload.js.map +0 -1
  148. package/docs/PARTITION-STORE-WASM.md +0 -338
  149. package/docs/PARTITION-STORE.md +0 -2380
  150. package/docs/agents/response-artifacts.md +0 -65
  151. package/docs/response-artifacts.md +0 -86
  152. package/scripts/stress-docker.sh +0 -279
  153. package/sdm/flatsql-spatial.wasm +0 -0
  154. package/sdm/index.d.ts +0 -88
  155. package/sdm/index.js +0 -253
  156. package/sdm/manifest.json +0 -402
  157. package/stress/docker/Dockerfile +0 -11
  158. package/stress/docker/docker-compose.yml +0 -51
  159. package/stress/sds/aggregate.mjs +0 -97
  160. package/stress/sds/run.mjs +0 -105
  161. package/stress/sds/write-compose.mjs +0 -96
  162. package/wasm/flatsql-client.js +0 -280
  163. package/wasm/flatsql-io.d.ts +0 -97
  164. package/wasm/flatsql-io.js +0 -625
  165. package/wasm/flatsql-p4-threads.wasm +0 -0
  166. package/wasm/flatsql-ps-threads.wasm +0 -0
  167. package/wasm/flatsql-wasi-noeh.wasm +0 -0
  168. package/wasm/flatsql-wasi.wasm +0 -0
  169. package/wasm/flatsql.js +0 -2
  170. package/wasm/flatsql.worker.js +0 -209
  171. package/wasm/native/flatsql_wasmedge_runner.cpp +0 -858
  172. package/wasm/ps-node-fault.d.mts +0 -23
  173. package/wasm/ps-node-fault.mjs +0 -381
  174. package/wasm/ps-node-guest.mjs +0 -173
  175. package/wasm/ps-node-host.d.mts +0 -95
  176. package/wasm/ps-node-host.mjs +0 -476
  177. package/wasm/ps-node-imports.mjs +0 -847
  178. package/wasm/ps.d.ts +0 -21
  179. package/wasm/ps.js +0 -75
  180. package/wasm/wasi.d.ts +0 -11
  181. package/wasm/wasi.js +0 -51
@@ -1,3 +0,0 @@
1
- export * from './types.js';
2
- export * from './transport.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/artifacts/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare function sizePrefixedByteLength(buffers: Uint8Array[]): number;
2
- export declare function writeSizePrefixedStream(target: Uint8Array, buffers: Uint8Array[]): number;
3
- export declare function forEachSizePrefixedBuffer(stream: Uint8Array, visitor: (buffer: Uint8Array, index: number) => void): number;
4
- export declare function decodeSizePrefixedStream(stream: Uint8Array): Uint8Array[];
5
- //# sourceMappingURL=transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/artifacts/transport.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAMpE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAUzF;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACnD,MAAM,CAsBR;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAOzE"}
@@ -1,45 +0,0 @@
1
- export function sizePrefixedByteLength(buffers) {
2
- let totalLength = 0;
3
- for (const buffer of buffers) {
4
- totalLength += 4 + buffer.length;
5
- }
6
- return totalLength;
7
- }
8
- export function writeSizePrefixedStream(target, buffers) {
9
- let offset = 0;
10
- const view = new DataView(target.buffer, target.byteOffset, target.byteLength);
11
- for (const buffer of buffers) {
12
- view.setUint32(offset, buffer.length, true);
13
- offset += 4;
14
- target.set(buffer, offset);
15
- offset += buffer.length;
16
- }
17
- return offset;
18
- }
19
- export function forEachSizePrefixedBuffer(stream, visitor) {
20
- const view = new DataView(stream.buffer, stream.byteOffset, stream.byteLength);
21
- let offset = 0;
22
- let index = 0;
23
- while (offset < stream.byteLength) {
24
- if (stream.byteLength - offset < 4) {
25
- throw new Error(`Invalid size-prefixed stream: truncated frame header at offset ${offset}`);
26
- }
27
- const size = view.getUint32(offset, true);
28
- offset += 4;
29
- if (size > stream.byteLength - offset) {
30
- throw new Error(`Invalid size-prefixed stream: truncated frame at index ${index}`);
31
- }
32
- visitor(stream.subarray(offset, offset + size), index);
33
- offset += size;
34
- index += 1;
35
- }
36
- return index;
37
- }
38
- export function decodeSizePrefixedStream(stream) {
39
- const buffers = [];
40
- forEachSizePrefixedBuffer(stream, (buffer) => {
41
- buffers.push(buffer);
42
- });
43
- return buffers;
44
- }
45
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/artifacts/transport.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,sBAAsB,CAAC,OAAqB;IAC1D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,WAAW,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAkB,EAAE,OAAqB;IAC/E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAAkB,EAClB,OAAoD;IAEpD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,kEAAkE,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0DAA0D,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,IAAI,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAkB;IACzD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,yBAAyB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QAC3C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,34 +0,0 @@
1
- import type { DatabaseSchema } from '../schema/index.js';
2
- export type ArtifactPerformanceProfile = 'fast' | 'safe';
3
- export interface ArtifactBuilderOptions {
4
- sqlitePath: string;
5
- name?: string;
6
- performanceProfile?: ArtifactPerformanceProfile;
7
- }
8
- export interface ArtifactIngestOptions {
9
- sourceName?: string;
10
- startOffset?: number;
11
- offsets?: number[];
12
- }
13
- export interface ArtifactQueryResult {
14
- columns: string[];
15
- rows: any[][];
16
- rowCount: number;
17
- }
18
- export type ArtifactQueryParams = readonly unknown[] | Record<string, unknown>;
19
- export interface ArtifactQuerySpec {
20
- sql: string;
21
- params?: ArtifactQueryParams;
22
- }
23
- export type ArtifactTransportMode = 'clone' | 'shared-array-buffer';
24
- export interface ArtifactIngestResult {
25
- recordCount: number;
26
- transportMode?: ArtifactTransportMode;
27
- }
28
- export interface ArtifactWorkerBuilderOptions extends ArtifactBuilderOptions {
29
- preferSharedArrayBuffer?: boolean;
30
- }
31
- export interface ParsedArtifactSchema {
32
- schema: DatabaseSchema;
33
- }
34
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/artifacts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,qBAAqB,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;CACxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/artifacts/types.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
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
@@ -1 +0,0 @@
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;IA6BlB,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"}
@@ -1,234 +0,0 @@
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
- for (let i = 0; i < node.entries.length; i++) {
121
- const entry = node.entries[i];
122
- const cmp = compareKeys(key, entry.key, this.config.keyType);
123
- if (!node.isLeaf && cmp <= 0) {
124
- results.push(...this.searchNode(node.children[i], key));
125
- }
126
- if (cmp === 0) {
127
- results.push(entry);
128
- }
129
- if (cmp < 0) {
130
- return results;
131
- }
132
- }
133
- if (!node.isLeaf) {
134
- results.push(...this.searchNode(node.children[node.entries.length], key));
135
- }
136
- return results;
137
- }
138
- // Range query: find all entries where minKey <= key <= maxKey
139
- range(minKey, maxKey) {
140
- const results = [];
141
- this.rangeSearch(this.rootId, minKey, maxKey, results);
142
- return results;
143
- }
144
- rangeSearch(nodeId, minKey, maxKey, results) {
145
- const node = this.getNode(nodeId);
146
- // Find first entry that might be in range
147
- let i = 0;
148
- while (i < node.entries.length) {
149
- const entry = node.entries[i];
150
- const cmpMin = compareKeys(entry.key, minKey, this.config.keyType);
151
- const cmpMax = compareKeys(entry.key, maxKey, this.config.keyType);
152
- // Visit left child if it might contain entries in range
153
- if (!node.isLeaf && cmpMin >= 0) {
154
- this.rangeSearch(node.children[i], minKey, maxKey, results);
155
- }
156
- // Add entry if in range
157
- if (cmpMin >= 0 && cmpMax <= 0) {
158
- results.push(entry);
159
- }
160
- // Stop if we're past maxKey
161
- if (cmpMax > 0) {
162
- break;
163
- }
164
- i++;
165
- }
166
- // Visit the rightmost child if we haven't stopped early
167
- if (!node.isLeaf && i === node.entries.length && node.children.length > i) {
168
- this.rangeSearch(node.children[i], minKey, maxKey, results);
169
- }
170
- }
171
- // Get all entries (full scan)
172
- all() {
173
- const results = [];
174
- this.collectAll(this.rootId, results);
175
- return results;
176
- }
177
- collectAll(nodeId, results) {
178
- const node = this.getNode(nodeId);
179
- for (let i = 0; i < node.entries.length; i++) {
180
- if (!node.isLeaf) {
181
- this.collectAll(node.children[i], results);
182
- }
183
- results.push(node.entries[i]);
184
- }
185
- if (!node.isLeaf && node.children.length > node.entries.length) {
186
- this.collectAll(node.children[node.children.length - 1], results);
187
- }
188
- }
189
- // Get tree statistics
190
- getStats() {
191
- return {
192
- entryCount: this.entryCount,
193
- height: this.getHeight(this.rootId),
194
- nodeCount: this.nodes.size,
195
- };
196
- }
197
- getHeight(nodeId) {
198
- const node = this.getNode(nodeId);
199
- if (node.isLeaf) {
200
- return 1;
201
- }
202
- return 1 + this.getHeight(node.children[0]);
203
- }
204
- // Serialize the B-tree to a format suitable for FlatBuffer storage
205
- serialize() {
206
- return {
207
- config: this.config,
208
- rootId: this.rootId,
209
- nodes: Array.from(this.nodes.values()),
210
- stats: this.getStats(),
211
- };
212
- }
213
- // Restore a B-tree from serialized data
214
- static deserialize(data) {
215
- const tree = new BTree(data.config);
216
- tree.nodes.clear();
217
- tree.rootId = data.rootId;
218
- let maxId = 0n;
219
- let entryCount = 0n;
220
- for (const node of data.nodes) {
221
- tree.nodes.set(node.nodeId, node);
222
- if (node.nodeId > maxId) {
223
- maxId = node.nodeId;
224
- }
225
- if (node.isLeaf) {
226
- entryCount += BigInt(node.entries.length);
227
- }
228
- }
229
- tree.nextNodeId = maxId + 1n;
230
- tree.entryCount = entryCount;
231
- return tree;
232
- }
233
- }
234
- //# sourceMappingURL=btree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"btree.js","sourceRoot":"","sources":["../../src/btree/btree.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './types.js';
2
- export * from './btree.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/btree/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './types.js';
2
- export * from './btree.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/btree/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,36 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,55 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,11 +0,0 @@
1
- export interface ClusterEnvironment {
2
- hasSharedArrayBuffer: boolean;
3
- hasAtomics: boolean;
4
- hasCrossOriginIsolation: boolean;
5
- hasOpfs: boolean;
6
- }
7
- export declare function detectClusterEnvironment(): ClusterEnvironment;
8
- export declare function isClusterModeSupported(env?: ClusterEnvironment): boolean;
9
- export declare function describeClusterSupport(env?: ClusterEnvironment): string;
10
- export declare function ensureClusterModeSupported(env?: ClusterEnvironment): void;
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cluster/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AA2BD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAO7D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,kBAA+C,GAAG,OAAO,CAOpG;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,kBAA+C,GAAG,MAAM,CAoBnG;AAED,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,kBAA+C,GAAG,IAAI,CAIrG"}
@@ -1,59 +0,0 @@
1
- function detectSharedArrayBuffer() {
2
- return typeof SharedArrayBuffer !== 'undefined';
3
- }
4
- function detectAtomics() {
5
- return typeof Atomics !== 'undefined';
6
- }
7
- function detectCrossOriginIsolation() {
8
- const globalAny = globalThis;
9
- return globalAny.crossOriginIsolated === true;
10
- }
11
- function detectOpfs() {
12
- if (typeof navigator !== 'undefined') {
13
- const storageManager = navigator.storage;
14
- if (storageManager && typeof storageManager.getDirectory === 'function') {
15
- return true;
16
- }
17
- }
18
- const globalAny = globalThis;
19
- return typeof globalAny.originPrivateFileSystem === 'object' && globalAny.originPrivateFileSystem !== null;
20
- }
21
- export function detectClusterEnvironment() {
22
- return {
23
- hasSharedArrayBuffer: detectSharedArrayBuffer(),
24
- hasAtomics: detectAtomics(),
25
- hasCrossOriginIsolation: detectCrossOriginIsolation(),
26
- hasOpfs: detectOpfs(),
27
- };
28
- }
29
- export function isClusterModeSupported(env = detectClusterEnvironment()) {
30
- return (env.hasSharedArrayBuffer &&
31
- env.hasAtomics &&
32
- env.hasCrossOriginIsolation &&
33
- env.hasOpfs);
34
- }
35
- export function describeClusterSupport(env = detectClusterEnvironment()) {
36
- const missing = [];
37
- if (!env.hasSharedArrayBuffer) {
38
- missing.push('SharedArrayBuffer');
39
- }
40
- if (!env.hasAtomics) {
41
- missing.push('Atomics');
42
- }
43
- if (!env.hasCrossOriginIsolation) {
44
- missing.push('cross-origin isolation');
45
- }
46
- if (!env.hasOpfs) {
47
- missing.push('OPFS');
48
- }
49
- if (missing.length === 0) {
50
- return 'Cluster mode supported on this runtime';
51
- }
52
- return `Cluster mode unsupported: missing ${missing.join(', ')}`;
53
- }
54
- export function ensureClusterModeSupported(env = detectClusterEnvironment()) {
55
- if (!isClusterModeSupported(env)) {
56
- throw new Error(describeClusterSupport(env));
57
- }
58
- }
59
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cluster/index.ts"],"names":[],"mappings":"AAWA,SAAS,uBAAuB;IAC9B,OAAO,OAAO,iBAAiB,KAAK,WAAW,CAAC;AAClD,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,OAAO,OAAO,KAAK,WAAW,CAAC;AACxC,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,SAAS,GAAG,UAAmE,CAAC;IACtF,OAAO,SAAS,CAAC,mBAAmB,KAAK,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,SAAS,CAAC,OAAkD,CAAC;QACpF,IAAI,cAAc,IAAI,OAAO,cAAc,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAuE,CAAC;IAC1F,OAAO,OAAO,SAAS,CAAC,uBAAuB,KAAK,QAAQ,IAAI,SAAS,CAAC,uBAAuB,KAAK,IAAI,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,oBAAoB,EAAE,uBAAuB,EAAE;QAC/C,UAAU,EAAE,aAAa,EAAE;QAC3B,uBAAuB,EAAE,0BAA0B,EAAE;QACrD,OAAO,EAAE,UAAU,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA0B,wBAAwB,EAAE;IACzF,OAAO,CACL,GAAG,CAAC,oBAAoB;QACxB,GAAG,CAAC,UAAU;QACd,GAAG,CAAC,uBAAuB;QAC3B,GAAG,CAAC,OAAO,CACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA0B,wBAAwB,EAAE;IACzF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,wCAAwC,CAAC;IAClD,CAAC;IAED,OAAO,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAA0B,wBAAwB,EAAE;IAC7F,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { QueryResult, QueryResponseArtifact, QueryResponseArtifactOptions } from './types.js';
2
- export declare function createQueryResponseArtifact(result: QueryResult, options: QueryResponseArtifactOptions): QueryResponseArtifact;
3
- export declare function getResponseArtifactChunk(artifact: QueryResponseArtifact, index: number): Uint8Array;
4
- //# sourceMappingURL=artifact.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/response/artifact.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EAErB,4BAA4B,EAE7B,MAAM,YAAY,CAAC;AA0EpB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CA6BvB;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAMnG"}