@minnowdb/core 0.0.1 → 0.1.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 (218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -1
  3. package/dist/block-format/block.d.ts +46 -0
  4. package/dist/block-format/block.d.ts.map +1 -0
  5. package/dist/block-format/block.js +244 -0
  6. package/dist/block-format/block.js.map +1 -0
  7. package/dist/block-format/checksum.d.ts +7 -0
  8. package/dist/block-format/checksum.d.ts.map +1 -0
  9. package/dist/block-format/checksum.js +56 -0
  10. package/dist/block-format/checksum.js.map +1 -0
  11. package/dist/block-format/codecs.d.ts +24 -0
  12. package/dist/block-format/codecs.d.ts.map +1 -0
  13. package/dist/block-format/codecs.js +102 -0
  14. package/dist/block-format/codecs.js.map +1 -0
  15. package/dist/block-format/column.d.ts +8 -0
  16. package/dist/block-format/column.d.ts.map +1 -0
  17. package/dist/block-format/column.js +166 -0
  18. package/dist/block-format/column.js.map +1 -0
  19. package/dist/block-format/index.d.ts +7 -0
  20. package/dist/block-format/index.d.ts.map +1 -0
  21. package/dist/block-format/index.js +7 -0
  22. package/dist/block-format/index.js.map +1 -0
  23. package/dist/block-format/physical.d.ts +20 -0
  24. package/dist/block-format/physical.d.ts.map +1 -0
  25. package/dist/block-format/physical.js +439 -0
  26. package/dist/block-format/physical.js.map +1 -0
  27. package/dist/block-format/types.d.ts +93 -0
  28. package/dist/block-format/types.d.ts.map +1 -0
  29. package/dist/block-format/types.js +2 -0
  30. package/dist/block-format/types.js.map +1 -0
  31. package/dist/engine/artifact-cache.d.ts +22 -0
  32. package/dist/engine/artifact-cache.d.ts.map +1 -0
  33. package/dist/engine/artifact-cache.js +68 -0
  34. package/dist/engine/artifact-cache.js.map +1 -0
  35. package/dist/engine/batch.d.ts +28 -0
  36. package/dist/engine/batch.d.ts.map +1 -0
  37. package/dist/engine/batch.js +38 -0
  38. package/dist/engine/batch.js.map +1 -0
  39. package/dist/engine/buffered-writer.d.ts +43 -0
  40. package/dist/engine/buffered-writer.d.ts.map +1 -0
  41. package/dist/engine/buffered-writer.js +158 -0
  42. package/dist/engine/buffered-writer.js.map +1 -0
  43. package/dist/engine/catalog.d.ts +82 -0
  44. package/dist/engine/catalog.d.ts.map +1 -0
  45. package/dist/engine/catalog.js +47 -0
  46. package/dist/engine/catalog.js.map +1 -0
  47. package/dist/engine/client.d.ts +211 -0
  48. package/dist/engine/client.d.ts.map +1 -0
  49. package/dist/engine/client.js +538 -0
  50. package/dist/engine/client.js.map +1 -0
  51. package/dist/engine/coordinator.d.ts +17 -0
  52. package/dist/engine/coordinator.d.ts.map +1 -0
  53. package/dist/engine/coordinator.js +60 -0
  54. package/dist/engine/coordinator.js.map +1 -0
  55. package/dist/engine/database.d.ts +661 -0
  56. package/dist/engine/database.d.ts.map +1 -0
  57. package/dist/engine/database.js +10313 -0
  58. package/dist/engine/database.js.map +1 -0
  59. package/dist/engine/defaults.d.ts +33 -0
  60. package/dist/engine/defaults.d.ts.map +1 -0
  61. package/dist/engine/defaults.js +87 -0
  62. package/dist/engine/defaults.js.map +1 -0
  63. package/dist/engine/dsl/db.d.ts +137 -0
  64. package/dist/engine/dsl/db.d.ts.map +1 -0
  65. package/dist/engine/dsl/db.js +161 -0
  66. package/dist/engine/dsl/db.js.map +1 -0
  67. package/dist/engine/dsl/expression.d.ts +172 -0
  68. package/dist/engine/dsl/expression.d.ts.map +1 -0
  69. package/dist/engine/dsl/expression.js +397 -0
  70. package/dist/engine/dsl/expression.js.map +1 -0
  71. package/dist/engine/dsl/index.d.ts +8 -0
  72. package/dist/engine/dsl/index.d.ts.map +1 -0
  73. package/dist/engine/dsl/index.js +7 -0
  74. package/dist/engine/dsl/index.js.map +1 -0
  75. package/dist/engine/dsl/live-query.d.ts +45 -0
  76. package/dist/engine/dsl/live-query.d.ts.map +1 -0
  77. package/dist/engine/dsl/live-query.js +116 -0
  78. package/dist/engine/dsl/live-query.js.map +1 -0
  79. package/dist/engine/dsl/mutations.d.ts +123 -0
  80. package/dist/engine/dsl/mutations.d.ts.map +1 -0
  81. package/dist/engine/dsl/mutations.js +241 -0
  82. package/dist/engine/dsl/mutations.js.map +1 -0
  83. package/dist/engine/dsl/select-query-builder.d.ts +148 -0
  84. package/dist/engine/dsl/select-query-builder.d.ts.map +1 -0
  85. package/dist/engine/dsl/select-query-builder.js +377 -0
  86. package/dist/engine/dsl/select-query-builder.js.map +1 -0
  87. package/dist/engine/dsl/sql-tag.d.ts +46 -0
  88. package/dist/engine/dsl/sql-tag.d.ts.map +1 -0
  89. package/dist/engine/dsl/sql-tag.js +85 -0
  90. package/dist/engine/dsl/sql-tag.js.map +1 -0
  91. package/dist/engine/dsl/types.d.ts +133 -0
  92. package/dist/engine/dsl/types.d.ts.map +1 -0
  93. package/dist/engine/dsl/types.js +9 -0
  94. package/dist/engine/dsl/types.js.map +1 -0
  95. package/dist/engine/errors.d.ts +55 -0
  96. package/dist/engine/errors.d.ts.map +1 -0
  97. package/dist/engine/errors.js +81 -0
  98. package/dist/engine/errors.js.map +1 -0
  99. package/dist/engine/fts.d.ts +93 -0
  100. package/dist/engine/fts.d.ts.map +1 -0
  101. package/dist/engine/fts.js +273 -0
  102. package/dist/engine/fts.js.map +1 -0
  103. package/dist/engine/group-index.d.ts +32 -0
  104. package/dist/engine/group-index.d.ts.map +1 -0
  105. package/dist/engine/group-index.js +366 -0
  106. package/dist/engine/group-index.js.map +1 -0
  107. package/dist/engine/index.d.ts +13 -0
  108. package/dist/engine/index.d.ts.map +1 -0
  109. package/dist/engine/index.js +12 -0
  110. package/dist/engine/index.js.map +1 -0
  111. package/dist/engine/join-index.d.ts +12 -0
  112. package/dist/engine/join-index.d.ts.map +1 -0
  113. package/dist/engine/join-index.js +217 -0
  114. package/dist/engine/join-index.js.map +1 -0
  115. package/dist/engine/live.d.ts +86 -0
  116. package/dist/engine/live.d.ts.map +1 -0
  117. package/dist/engine/live.js +289 -0
  118. package/dist/engine/live.js.map +1 -0
  119. package/dist/engine/memory.d.ts +37 -0
  120. package/dist/engine/memory.d.ts.map +1 -0
  121. package/dist/engine/memory.js +119 -0
  122. package/dist/engine/memory.js.map +1 -0
  123. package/dist/engine/optimizer.d.ts +20 -0
  124. package/dist/engine/optimizer.d.ts.map +1 -0
  125. package/dist/engine/optimizer.js +1170 -0
  126. package/dist/engine/optimizer.js.map +1 -0
  127. package/dist/engine/query-cache.d.ts +10 -0
  128. package/dist/engine/query-cache.d.ts.map +1 -0
  129. package/dist/engine/query-cache.js +58 -0
  130. package/dist/engine/query-cache.js.map +1 -0
  131. package/dist/engine/query.d.ts +844 -0
  132. package/dist/engine/query.d.ts.map +1 -0
  133. package/dist/engine/query.js +7450 -0
  134. package/dist/engine/query.js.map +1 -0
  135. package/dist/engine/schema-wire.d.ts +92 -0
  136. package/dist/engine/schema-wire.d.ts.map +1 -0
  137. package/dist/engine/schema-wire.js +115 -0
  138. package/dist/engine/schema-wire.js.map +1 -0
  139. package/dist/engine/schema.d.ts +394 -0
  140. package/dist/engine/schema.d.ts.map +1 -0
  141. package/dist/engine/schema.js +709 -0
  142. package/dist/engine/schema.js.map +1 -0
  143. package/dist/engine/sort-keys.d.ts +36 -0
  144. package/dist/engine/sort-keys.d.ts.map +1 -0
  145. package/dist/engine/sort-keys.js +60 -0
  146. package/dist/engine/sort-keys.js.map +1 -0
  147. package/dist/engine/sql-json.d.ts +30 -0
  148. package/dist/engine/sql-json.d.ts.map +1 -0
  149. package/dist/engine/sql-json.js +120 -0
  150. package/dist/engine/sql-json.js.map +1 -0
  151. package/dist/engine/sql-semantics.d.ts +31 -0
  152. package/dist/engine/sql-semantics.d.ts.map +1 -0
  153. package/dist/engine/sql-semantics.js +121 -0
  154. package/dist/engine/sql-semantics.js.map +1 -0
  155. package/dist/engine/vector.d.ts +87 -0
  156. package/dist/engine/vector.d.ts.map +1 -0
  157. package/dist/engine/vector.js +4227 -0
  158. package/dist/engine/vector.js.map +1 -0
  159. package/dist/engine/worker-host.d.ts +48 -0
  160. package/dist/engine/worker-host.d.ts.map +1 -0
  161. package/dist/engine/worker-host.js +501 -0
  162. package/dist/engine/worker-host.js.map +1 -0
  163. package/dist/engine/worker.d.ts +2 -0
  164. package/dist/engine/worker.d.ts.map +1 -0
  165. package/dist/engine/worker.js +14 -0
  166. package/dist/engine/worker.js.map +1 -0
  167. package/dist/index.d.ts +2 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +2 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/plan/index.d.ts +17 -0
  172. package/dist/plan/index.d.ts.map +1 -0
  173. package/dist/plan/index.js +17 -0
  174. package/dist/plan/index.js.map +1 -0
  175. package/dist/storage/fixture-shape.d.ts +42 -0
  176. package/dist/storage/fixture-shape.d.ts.map +1 -0
  177. package/dist/storage/fixture-shape.js +146 -0
  178. package/dist/storage/fixture-shape.js.map +1 -0
  179. package/dist/storage/index.d.ts +5 -0
  180. package/dist/storage/index.d.ts.map +1 -0
  181. package/dist/storage/index.js +5 -0
  182. package/dist/storage/index.js.map +1 -0
  183. package/dist/storage/indexeddb.d.ts +139 -0
  184. package/dist/storage/indexeddb.d.ts.map +1 -0
  185. package/dist/storage/indexeddb.js +3161 -0
  186. package/dist/storage/indexeddb.js.map +1 -0
  187. package/dist/storage/memory.d.ts +121 -0
  188. package/dist/storage/memory.d.ts.map +1 -0
  189. package/dist/storage/memory.js +1455 -0
  190. package/dist/storage/memory.js.map +1 -0
  191. package/dist/storage/snapshot.d.ts +108 -0
  192. package/dist/storage/snapshot.d.ts.map +1 -0
  193. package/dist/storage/snapshot.js +276 -0
  194. package/dist/storage/snapshot.js.map +1 -0
  195. package/dist/storage/types.d.ts +895 -0
  196. package/dist/storage/types.d.ts.map +1 -0
  197. package/dist/storage/types.js +1549 -0
  198. package/dist/storage/types.js.map +1 -0
  199. package/dist/testing/index.d.ts +76 -0
  200. package/dist/testing/index.d.ts.map +1 -0
  201. package/dist/testing/index.js +233 -0
  202. package/dist/testing/index.js.map +1 -0
  203. package/dist/testing/seeds.d.ts +11 -0
  204. package/dist/testing/seeds.d.ts.map +1 -0
  205. package/dist/testing/seeds.js +50 -0
  206. package/dist/testing/seeds.js.map +1 -0
  207. package/dist/transactions/index.d.ts +148 -0
  208. package/dist/transactions/index.d.ts.map +1 -0
  209. package/dist/transactions/index.js +662 -0
  210. package/dist/transactions/index.js.map +1 -0
  211. package/dist/worker-protocol/index.d.ts +84 -0
  212. package/dist/worker-protocol/index.d.ts.map +1 -0
  213. package/dist/worker-protocol/index.js +117 -0
  214. package/dist/worker-protocol/index.js.map +1 -0
  215. package/package.json +66 -16
  216. package/sql-feature-matrix.json +1275 -0
  217. package/index.d.ts +0 -1
  218. package/index.js +0 -1
@@ -0,0 +1,501 @@
1
+ import { IndexedDbBlockStore, MemoryBlockStore } from "../storage/index.js";
2
+ import { parseRpcRequest, rpcEvent, rpcFailure, rpcResult, serializeError, } from "../worker-protocol/index.js";
3
+ import { MinnowDatabase, } from "./database.js";
4
+ import { deserializeSchema, serializeMigrationSteps } from "./schema-wire.js";
5
+ /**
6
+ * The staged-mutation ops a client may name inside a "stage" call. The op arrives as wire data,
7
+ * so it must be checked against this list before indexing into the session — otherwise any
8
+ * property name (including Object.prototype members like "constructor") would be reachable.
9
+ */
10
+ const stageOps = ["insertBatch", "upsertBatch", "updateBatch", "deleteBatch"];
11
+ function isStageOp(value) {
12
+ return typeof value === "string" && stageOps.includes(value);
13
+ }
14
+ class WriteScopeAbortedError extends Error {
15
+ name = "WriteScopeAbortedError";
16
+ constructor() {
17
+ super("Write scope aborted");
18
+ }
19
+ }
20
+ class DatabaseRpcServer {
21
+ database;
22
+ scope;
23
+ options;
24
+ #handles = new Map();
25
+ #disposed = false;
26
+ constructor(database, scope, options) {
27
+ this.database = database;
28
+ this.scope = scope;
29
+ this.options = options;
30
+ }
31
+ async handle(request) {
32
+ if (request.kind === "rpc-init") {
33
+ this.scope.postMessage(rpcResult(request.requestId, { ready: true }));
34
+ return;
35
+ }
36
+ try {
37
+ if (this.#disposed)
38
+ throw new Error("Database connection is disposed");
39
+ const result = request.handleId === null
40
+ ? await this.#callRoot(request.method, request.args)
41
+ : await this.#callHandle(request.handleId, request.method, request.args);
42
+ this.scope.postMessage(rpcResult(request.requestId, result));
43
+ }
44
+ catch (error) {
45
+ this.scope.postMessage(rpcFailure(request.requestId, error));
46
+ }
47
+ }
48
+ async #callRoot(method, args) {
49
+ const database = this.database;
50
+ switch (method) {
51
+ case "createTable":
52
+ case "introspect":
53
+ case "listTables":
54
+ case "insertBatch":
55
+ case "insert":
56
+ case "upsertBatch":
57
+ case "upsert":
58
+ case "updateBatch":
59
+ case "update":
60
+ case "deleteBatch":
61
+ case "readTable":
62
+ case "query":
63
+ case "run":
64
+ case "runStatement":
65
+ case "explain":
66
+ case "execute":
67
+ case "listVisibleSegments":
68
+ case "cleanupQuerySpill":
69
+ case "compactTable":
70
+ case "compactTableStep":
71
+ case "resumeCompactionJob":
72
+ case "listCompactionJobs":
73
+ case "cancelCompactionJob":
74
+ case "collectGarbage":
75
+ case "collectGarbageStep":
76
+ case "resumeGarbageCollectionJob":
77
+ case "bufferPoolStats":
78
+ case "listGarbageCollectionJobs":
79
+ return database[method]?.(...args);
80
+ case "migrate": {
81
+ const result = await this.database.migrate(deserializeSchema(args[0]), args[1] ?? {});
82
+ return {
83
+ createdTables: result.createdTables,
84
+ alteredTables: result.alteredTables,
85
+ droppedTables: result.droppedTables,
86
+ replacedViews: result.replacedViews,
87
+ droppedViews: result.droppedViews,
88
+ steps: serializeMigrationSteps(result.steps),
89
+ };
90
+ }
91
+ case "writeOpen": {
92
+ // Same deferred-callback shape as snapshotOpen: the scoped write() stays pending
93
+ // until the client commits or aborts, so its staged transaction spans the RPC session.
94
+ const handleId = crypto.randomUUID();
95
+ let sessionResolve;
96
+ const sessionReady = new Promise((resolveSession) => {
97
+ sessionResolve = resolveSession;
98
+ });
99
+ let finish;
100
+ const done = this.database
101
+ .write(async (session) => {
102
+ sessionResolve(session);
103
+ await new Promise((resolveCommit, rejectAbort) => {
104
+ finish = (commit) => {
105
+ if (commit)
106
+ resolveCommit();
107
+ else
108
+ rejectAbort(new WriteScopeAbortedError());
109
+ };
110
+ });
111
+ })
112
+ .then((outcome) => ({ version: outcome.version }));
113
+ const session = await sessionReady;
114
+ this.#handles.set(handleId, { type: "write", session, finish, done });
115
+ return { handleId };
116
+ }
117
+ case "snapshotOpen": {
118
+ // The scoped snapshot() holds its lease until the callback settles; the handle keeps
119
+ // the callback pending until the client closes it, so the pin spans the RPC session.
120
+ const handleId = crypto.randomUUID();
121
+ let release;
122
+ const version = await new Promise((resolveVersion, rejectVersion) => {
123
+ void this.database
124
+ .snapshot(async (session) => {
125
+ resolveVersion(session.version);
126
+ await new Promise((resolveRelease) => {
127
+ release = resolveRelease;
128
+ });
129
+ })
130
+ .catch((error) => {
131
+ rejectVersion(error instanceof Error ? error : new Error(String(error)));
132
+ });
133
+ });
134
+ this.#handles.set(handleId, { type: "snapshot", release });
135
+ return { handleId, version };
136
+ }
137
+ case "exportSnapshotOpen": {
138
+ // The snapshot is encoded here and held by the handle so the client can pull it across
139
+ // in slices. One result frame carrying the whole thing would be a structured clone the
140
+ // size of the database, and the main thread would sit still for all of it.
141
+ const handleId = crypto.randomUUID();
142
+ const bytes = await this.database.exportSnapshot();
143
+ this.#handles.set(handleId, { type: "snapshot-export", bytes });
144
+ return { handleId, byteLength: bytes.byteLength };
145
+ }
146
+ case "importSnapshotOpen": {
147
+ // Named by the client, like the other event-producing handles, so its progress route
148
+ // exists before the first frame the load can emit.
149
+ const handleId = this.#claimHandleId(args[0]);
150
+ this.#handles.set(handleId, { type: "snapshot-import", chunks: [], byteLength: 0 });
151
+ return { handleId };
152
+ }
153
+ case "bufferedWriter": {
154
+ // Event-producing handles are named by the client so its event routes exist before the
155
+ // first frame the handle can emit.
156
+ const handleId = this.#claimHandleId(args[0]);
157
+ const writer = this.database.bufferedWriter(args[1], {
158
+ ...args[2],
159
+ onError: (error) => {
160
+ this.scope.postMessage(rpcEvent(handleId, "error", serializeError(error)));
161
+ },
162
+ });
163
+ this.#handles.set(handleId, { type: "writer", writer });
164
+ return { handleId };
165
+ }
166
+ case "liveQueries": {
167
+ const handleId = this.#claimHandleId(args[0]);
168
+ const { pollIntervalMs, channelName } = (args[1] ?? {});
169
+ // The database owns channelName resolution (and closes the channel with the set).
170
+ const set = this.database.liveQueries({
171
+ ...(channelName === undefined ? {} : { channelName }),
172
+ ...(pollIntervalMs === undefined ? {} : { pollIntervalMs }),
173
+ });
174
+ this.#handles.set(handleId, { type: "live-set", set, subscriptionIds: new Set() });
175
+ return { handleId };
176
+ }
177
+ case "dispose": {
178
+ await this.#dispose();
179
+ return { disposed: true };
180
+ }
181
+ default:
182
+ throw new Error(`Unsupported database method: ${method}`);
183
+ }
184
+ }
185
+ async #callHandle(handleId, method, args) {
186
+ const handle = this.#handles.get(handleId);
187
+ if (handle === undefined)
188
+ throw new Error(`Unknown handle: ${handleId}`);
189
+ switch (handle.type) {
190
+ case "snapshot": {
191
+ if (method !== "close")
192
+ throw new Error(`Unsupported snapshot method: ${method}`);
193
+ handle.release();
194
+ this.#handles.delete(handleId);
195
+ return undefined;
196
+ }
197
+ case "write": {
198
+ if (method === "query") {
199
+ const [sql, options] = args;
200
+ return handle.session.query(sql, options);
201
+ }
202
+ if (method === "stage") {
203
+ const [op, tableName, input] = args;
204
+ if (!isStageOp(op)) {
205
+ throw new Error(`Unsupported write stage operation: ${String(op)}`);
206
+ }
207
+ return handle.session[op](tableName, input);
208
+ }
209
+ if (method === "commit") {
210
+ handle.finish(true);
211
+ this.#handles.delete(handleId);
212
+ return handle.done;
213
+ }
214
+ if (method === "abort") {
215
+ handle.finish(false);
216
+ this.#handles.delete(handleId);
217
+ return handle.done.catch((error) => {
218
+ if (error instanceof WriteScopeAbortedError)
219
+ return undefined;
220
+ throw error;
221
+ });
222
+ }
223
+ throw new Error(`Unsupported write method: ${method}`);
224
+ }
225
+ case "snapshot-export":
226
+ return this.#callSnapshotExport(handleId, handle, method, args);
227
+ case "snapshot-import":
228
+ return this.#callSnapshotImport(handleId, handle, method, args);
229
+ case "writer":
230
+ return this.#callWriter(handleId, handle.writer, method, args);
231
+ case "live-set":
232
+ return this.#callLiveSet(handleId, handle, method, args);
233
+ case "live-subscription": {
234
+ if (method !== "close")
235
+ throw new Error(`Unsupported subscription method: ${method}`);
236
+ handle.subscription.close();
237
+ this.#handles.delete(handleId);
238
+ const parent = this.#handles.get(handle.setId);
239
+ if (parent?.type === "live-set")
240
+ parent.subscriptionIds.delete(handleId);
241
+ return undefined;
242
+ }
243
+ }
244
+ }
245
+ /**
246
+ * Hands one slice of an encoded snapshot back. The slice is copied rather than viewed: a
247
+ * subarray shares the whole buffer, and structured clone copies the buffer behind a view, not
248
+ * the window into it — so every read would post the entire snapshot again.
249
+ */
250
+ #callSnapshotExport(handleId, handle, method, args) {
251
+ switch (method) {
252
+ case "read": {
253
+ const [offset, length] = args;
254
+ if (!Number.isSafeInteger(offset) || offset < 0) {
255
+ throw new RangeError("Snapshot read offset must be a non-negative whole number");
256
+ }
257
+ if (!Number.isSafeInteger(length) || length <= 0) {
258
+ throw new RangeError("Snapshot read length must be a positive whole number");
259
+ }
260
+ const start = offset;
261
+ return handle.bytes.slice(start, start + length);
262
+ }
263
+ case "close": {
264
+ this.#handles.delete(handleId);
265
+ return undefined;
266
+ }
267
+ default:
268
+ throw new Error(`Unsupported snapshot export method: ${method}`);
269
+ }
270
+ }
271
+ /** Collects an uploaded snapshot chunk by chunk, then loads it, reporting progress as events. */
272
+ async #callSnapshotImport(handleId, handle, method, args) {
273
+ switch (method) {
274
+ case "write": {
275
+ const chunk = args[0];
276
+ if (!(chunk instanceof Uint8Array)) {
277
+ throw new TypeError("Snapshot chunk must be a Uint8Array");
278
+ }
279
+ handle.chunks.push(chunk);
280
+ handle.byteLength += chunk.byteLength;
281
+ return undefined;
282
+ }
283
+ case "finish": {
284
+ const bytes = new Uint8Array(handle.byteLength);
285
+ let offset = 0;
286
+ for (const chunk of handle.chunks) {
287
+ bytes.set(chunk, offset);
288
+ offset += chunk.byteLength;
289
+ }
290
+ // Dropped before the load starts: the decoded snapshot is another copy of these bytes,
291
+ // and holding the chunks too would make three of them.
292
+ handle.chunks.length = 0;
293
+ try {
294
+ await this.database.importSnapshot(bytes, {
295
+ onProgress: (progress) => {
296
+ this.scope.postMessage(rpcEvent(handleId, "progress", progress));
297
+ },
298
+ });
299
+ }
300
+ finally {
301
+ this.#handles.delete(handleId);
302
+ }
303
+ return undefined;
304
+ }
305
+ case "close": {
306
+ this.#handles.delete(handleId);
307
+ return undefined;
308
+ }
309
+ default:
310
+ throw new Error(`Unsupported snapshot import method: ${method}`);
311
+ }
312
+ }
313
+ async #callWriter(handleId, writer, method, args) {
314
+ switch (method) {
315
+ case "add":
316
+ return writer.add(args[0]);
317
+ case "flush":
318
+ return writer.flush();
319
+ case "requestFlush":
320
+ writer.requestFlush();
321
+ return undefined;
322
+ case "discard":
323
+ return writer.discard();
324
+ case "stats":
325
+ return { pendingRowCount: writer.pendingRowCount, estimatedBytes: writer.estimatedBytes };
326
+ case "close": {
327
+ const result = await writer.close();
328
+ this.#handles.delete(handleId);
329
+ return result;
330
+ }
331
+ default:
332
+ throw new Error(`Unsupported buffered writer method: ${method}`);
333
+ }
334
+ }
335
+ async #callLiveSet(handleId, handle, method, args) {
336
+ switch (method) {
337
+ case "subscribe": {
338
+ // The client names the subscription so it can route the initial change event, which is
339
+ // posted before this call's own result frame.
340
+ const subscriptionId = this.#claimHandleId(args[0]);
341
+ const query = args[1];
342
+ const subscription = await handle.set.subscribe(query, {
343
+ onChange: (result) => {
344
+ this.scope.postMessage(rpcEvent(subscriptionId, "change", result));
345
+ },
346
+ onError: (error) => {
347
+ this.scope.postMessage(rpcEvent(subscriptionId, "error", serializeError(error)));
348
+ },
349
+ onComplete: () => {
350
+ this.scope.postMessage(rpcEvent(subscriptionId, "complete", null));
351
+ this.#handles.delete(subscriptionId);
352
+ const parent = this.#handles.get(handleId);
353
+ if (parent?.type === "live-set")
354
+ parent.subscriptionIds.delete(subscriptionId);
355
+ },
356
+ });
357
+ this.#handles.set(subscriptionId, {
358
+ type: "live-subscription",
359
+ subscription,
360
+ setId: handleId,
361
+ });
362
+ handle.subscriptionIds.add(subscriptionId);
363
+ return { dependencyTableIds: subscription.dependencyTableIds };
364
+ }
365
+ case "stats":
366
+ return handle.set.stats;
367
+ case "notifyLocalCommit":
368
+ handle.set.notifyLocalCommit();
369
+ return undefined;
370
+ case "refresh":
371
+ return handle.set.refresh();
372
+ case "close":
373
+ this.#closeLiveSet(handleId, handle);
374
+ return undefined;
375
+ default:
376
+ throw new Error(`Unsupported live query method: ${method}`);
377
+ }
378
+ }
379
+ #claimHandleId(value) {
380
+ if (typeof value !== "string" || value.length === 0) {
381
+ throw new TypeError("Handle ID must be a non-empty string");
382
+ }
383
+ if (this.#handles.has(value))
384
+ throw new Error(`Handle ID already exists: ${value}`);
385
+ return value;
386
+ }
387
+ #closeLiveSet(handleId, handle) {
388
+ handle.set.close();
389
+ for (const subscriptionId of handle.subscriptionIds)
390
+ this.#handles.delete(subscriptionId);
391
+ this.#handles.delete(handleId);
392
+ }
393
+ async #dispose() {
394
+ this.#disposed = true;
395
+ const handles = [...this.#handles.entries()];
396
+ this.#handles.clear();
397
+ for (const [handleId, handle] of handles) {
398
+ try {
399
+ if (handle.type === "snapshot")
400
+ handle.release();
401
+ else if (handle.type === "write") {
402
+ handle.finish(false);
403
+ await handle.done.catch(() => undefined);
404
+ }
405
+ else if (handle.type === "writer")
406
+ await handle.writer.close();
407
+ else if (handle.type === "live-set")
408
+ this.#closeLiveSet(handleId, handle);
409
+ }
410
+ catch {
411
+ // Dispose every handle even when one close fails; the client is already gone.
412
+ }
413
+ }
414
+ await this.options.onDispose?.();
415
+ }
416
+ }
417
+ /**
418
+ * Answers client RPC frames against a database you constructed yourself. Use this in a custom
419
+ * worker entry when you need non-cloneable construction options (a custom store, `now`,
420
+ * `createId`) — the client's init frame is acknowledged without reconstructing anything.
421
+ */
422
+ export function exposeDatabase(database, scope, options = {}) {
423
+ const server = new DatabaseRpcServer(database, scope, options);
424
+ scope.addEventListener("message", (event) => {
425
+ let request;
426
+ try {
427
+ request = parseRpcRequest(event.data);
428
+ }
429
+ catch (error) {
430
+ const requestId = requestIdOf(event.data);
431
+ if (requestId !== undefined)
432
+ scope.postMessage(rpcFailure(requestId, error));
433
+ return;
434
+ }
435
+ if (request !== null)
436
+ void server.handle(request);
437
+ });
438
+ }
439
+ /**
440
+ * Full worker-side wiring: waits for the client's init frame, builds the store it describes,
441
+ * constructs the database, and exposes it. The store is closed when the client disposes.
442
+ */
443
+ export function attachDatabaseWorker(scope, options = {}) {
444
+ let initialized;
445
+ scope.addEventListener("message", (event) => {
446
+ let request;
447
+ try {
448
+ request = parseRpcRequest(event.data);
449
+ }
450
+ catch (error) {
451
+ const requestId = requestIdOf(event.data);
452
+ if (requestId !== undefined)
453
+ scope.postMessage(rpcFailure(requestId, error));
454
+ return;
455
+ }
456
+ if (request === null)
457
+ return;
458
+ if (request.kind === "rpc-init" && initialized === undefined) {
459
+ const attempt = createServer(scope, request.payload, options);
460
+ initialized = attempt;
461
+ attempt.catch(() => {
462
+ // Leave the worker reusable: a failed store open (quota, blocked upgrade) may be retried.
463
+ if (initialized === attempt)
464
+ initialized = undefined;
465
+ });
466
+ }
467
+ const pending = initialized;
468
+ if (pending === undefined) {
469
+ scope.postMessage(rpcFailure(request.requestId, new Error("Database is not initialized: send init first")));
470
+ return;
471
+ }
472
+ void pending
473
+ .then((server) => server.handle(request))
474
+ .catch((error) => {
475
+ scope.postMessage(rpcFailure(request.requestId, error));
476
+ });
477
+ });
478
+ }
479
+ async function createServer(scope, payload, options) {
480
+ const store = await createStore(payload.store, options);
481
+ const database = new MinnowDatabase(store, payload.options ?? {});
482
+ return new DatabaseRpcServer(database, scope, { onDispose: () => store.close() });
483
+ }
484
+ async function createStore(descriptor, options) {
485
+ if (descriptor.kind === "memory")
486
+ return new MemoryBlockStore();
487
+ return IndexedDbBlockStore.open({
488
+ name: descriptor.name,
489
+ ...(descriptor.durability === undefined ? {} : { durability: descriptor.durability }),
490
+ ...(options.indexedDB === undefined ? {} : { indexedDB: options.indexedDB }),
491
+ });
492
+ }
493
+ function requestIdOf(value) {
494
+ if (typeof value === "object" && value !== null && "requestId" in value) {
495
+ const requestId = value.requestId;
496
+ if (typeof requestId === "string")
497
+ return requestId;
498
+ }
499
+ return undefined;
500
+ }
501
+ //# sourceMappingURL=worker-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-host.js","sourceRoot":"","sources":["../../src/engine/worker-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/engine/worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ /// <reference lib="webworker" />
2
+ /**
3
+ * Ready-made dedicated-worker entry, published as `@minnowdb/core/worker`. Point a
4
+ * module worker at it and connect a MinnowDatabaseClient — the client's init frame carries the
5
+ * store descriptor and options, so this entry needs no configuration of its own:
6
+ *
7
+ * new Worker(new URL("@minnowdb/core/worker", import.meta.url), { type: "module" })
8
+ *
9
+ * For non-cloneable construction options (custom store, `now`, `createId`), write your own entry
10
+ * and call exposeDatabase() instead.
11
+ */
12
+ import { attachDatabaseWorker } from "./worker-host.js";
13
+ attachDatabaseWorker(self);
14
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/engine/worker.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,oBAAoB,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./engine/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./engine/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The plan-construction primitives, published so a typed client can be built outside this package.
3
+ *
4
+ * A query builder's whole job is to assemble the same logical plan the SQL parser assembles, and
5
+ * then hand it to the engine. That requires the plan's types, the block-assembly functions the
6
+ * parser itself ends in, and the validators that keep a hand-built plan as strict as a parsed one.
7
+ * Exposing them here is what lets `@minnowdb/client` — or anyone else's builder — produce plans the
8
+ * engine treats as indistinguishable from parsed SQL.
9
+ *
10
+ * This module re-exports rather than owns: the plan types still live beside the parser that
11
+ * produces them. Splitting them into a leaf module of their own is the next step, and it will not
12
+ * change this entry point.
13
+ */
14
+ export { assembleSelectBlock, compoundSelectBlock, derivedTableSource, hasAggregate, splitCondition, validateLimit, validateOffset, type AggregateName, type CompiledQuery, type CompiledStatement, type Expression, type JoinPlan, type Predicate, type PredicateOperator, type QueryResult, type QueryRow, type QueryValue, type SelectItem, type SetOperator, type TableSource, type WindowFunctionName, } from "../engine/query.js";
15
+ export { optimizePlan, renderPlan } from "../engine/optimizer.js";
16
+ export { validateFtsQuery } from "../engine/fts.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The plan-construction primitives, published so a typed client can be built outside this package.
3
+ *
4
+ * A query builder's whole job is to assemble the same logical plan the SQL parser assembles, and
5
+ * then hand it to the engine. That requires the plan's types, the block-assembly functions the
6
+ * parser itself ends in, and the validators that keep a hand-built plan as strict as a parsed one.
7
+ * Exposing them here is what lets `@minnowdb/client` — or anyone else's builder — produce plans the
8
+ * engine treats as indistinguishable from parsed SQL.
9
+ *
10
+ * This module re-exports rather than owns: the plan types still live beside the parser that
11
+ * produces them. Splitting them into a leaf module of their own is the next step, and it will not
12
+ * change this entry point.
13
+ */
14
+ export { assembleSelectBlock, compoundSelectBlock, derivedTableSource, hasAggregate, splitCondition, validateLimit, validateOffset, } from "../engine/query.js";
15
+ export { optimizePlan, renderPlan } from "../engine/optimizer.js";
16
+ export { validateFtsQuery } from "../engine/fts.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,GAef,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}