@moltendb-web/query 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +28 -12
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +15 -6
package/dist/index.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export type ExtendsMap = {
|
|
|
62
62
|
* - A mock for testing
|
|
63
63
|
*/
|
|
64
64
|
export interface MoltenTransport {
|
|
65
|
-
|
|
65
|
+
sendMessage(action: 'get' | 'set' | 'update' | 'delete', payload: Document): Promise<JsonValue>;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
68
|
* Default transport that communicates with a MoltenDB Web Worker.
|
|
@@ -75,8 +75,9 @@ export declare class WorkerTransport implements MoltenTransport {
|
|
|
75
75
|
private worker;
|
|
76
76
|
private messageId;
|
|
77
77
|
private pending;
|
|
78
|
+
onEvent?: (event: any) => void;
|
|
78
79
|
constructor(worker: Worker, startId?: number);
|
|
79
|
-
|
|
80
|
+
sendMessage(action: 'get' | 'set' | 'update' | 'delete', payload: Document): Promise<JsonValue>;
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
83
|
* Builder for GET (read/query) operations.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4CA,uCAAuC;AACvC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEpD,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAIlD,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;CAC7C,CAAC;AAIF,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAID,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAID;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4CA,uCAAuC;AACvC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEpD,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAIlD,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;CAC7C,CAAC;AAIF,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAID,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAID;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAIrD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACjG;AAID;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAsF;IAC9F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;gBAE1B,MAAM,EAAE,MAAM,EAAE,OAAO,SAAI;IAqBvC,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;CAOhG;AAID;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,SAAS,CAAkB;IAEnC,gBAAgB;gBACJ,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAK1D;;;;;;;;;;OAUG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAKnC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKhC;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B;;;;;;OAMG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKtC;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAO9B;;;;;;;OAOG;IACH,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAK7B;;;;;OAKG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB;;;;;OAKG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvB;;;OAGG;IACH,KAAK,IAAI,QAAQ;IAIjB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAG3B;AAID;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,SAAS,CAAkB;IAEnC,gBAAgB;gBACJ,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE;IAKtF;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAqB9B,gEAAgE;IAChE,KAAK,IAAI,QAAQ;IAIjB,gEAAgE;IAChE,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAG3B;AAID;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,SAAS,CAAkB;IAEnC,gBAAgB;gBACJ,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAKzE,gEAAgE;IAChE,KAAK,IAAI,QAAQ;IAIjB,wDAAwD;IACxD,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAG3B;AAID;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,SAAS,CAAkB;IAEnC,gBAAgB;gBACJ,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAK1D;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAKnC;;;;;;OAMG;IACH,IAAI,IAAI,IAAI;IAKZ,gEAAgE;IAChE,KAAK,IAAI,QAAQ;IAIjB,yDAAyD;IACzD,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAG3B;AAID;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAS;IAE/B,gBAAgB;gBACJ,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM;IAK9D;;;;;OAKG;IACH,GAAG,IAAI,QAAQ;IAIf;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,QAAQ;IAIzC;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;IAIlC;;;;;;OAMG;IACH,MAAM,IAAI,WAAW;CAGtB;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAkB;gBAEvB,SAAS,EAAE,eAAe;IAItC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;CAG3C"}
|
package/dist/index.esm.js
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
// await db.collection('laptops').delete().keys(['lp4', 'lp5']).exec();
|
|
40
40
|
// await db.collection('laptops').delete().drop().exec();
|
|
41
41
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
42
|
+
|
|
42
43
|
// ─── WorkerTransport ──────────────────────────────────────────────────────────
|
|
43
44
|
/**
|
|
44
45
|
* Default transport that communicates with a MoltenDB Web Worker.
|
|
@@ -47,12 +48,19 @@
|
|
|
47
48
|
* postMessage({ id, action, ...payload })
|
|
48
49
|
* onmessage → { id, result } | { id, error }
|
|
49
50
|
*/
|
|
50
|
-
|
|
51
|
+
class WorkerTransport {
|
|
51
52
|
constructor(worker, startId = 0) {
|
|
52
53
|
this.pending = new Map();
|
|
53
54
|
this.messageId = startId;
|
|
54
55
|
this.worker = worker;
|
|
55
56
|
this.worker.addEventListener('message', (event) => {
|
|
57
|
+
// 1. Intercept unsolicited broadcast events from the Rust core
|
|
58
|
+
if (event.data && event.data.type === 'event') {
|
|
59
|
+
if (this.onEvent)
|
|
60
|
+
this.onEvent(event.data);
|
|
61
|
+
return; // Don't try to process this as a promise resolution
|
|
62
|
+
}
|
|
63
|
+
// 2. Standard request/response routing
|
|
56
64
|
const { id, result, error } = event.data;
|
|
57
65
|
const p = this.pending.get(id);
|
|
58
66
|
if (!p)
|
|
@@ -64,7 +72,7 @@ export class WorkerTransport {
|
|
|
64
72
|
p.resolve(result ?? null);
|
|
65
73
|
});
|
|
66
74
|
}
|
|
67
|
-
|
|
75
|
+
sendMessage(action, payload) {
|
|
68
76
|
return new Promise((resolve, reject) => {
|
|
69
77
|
const id = this.messageId++;
|
|
70
78
|
this.pending.set(id, { resolve, reject });
|
|
@@ -72,6 +80,7 @@ export class WorkerTransport {
|
|
|
72
80
|
});
|
|
73
81
|
}
|
|
74
82
|
}
|
|
83
|
+
export { WorkerTransport as WorkerTransport };
|
|
75
84
|
// ─── GetQuery ─────────────────────────────────────────────────────────────────
|
|
76
85
|
/**
|
|
77
86
|
* Builder for GET (read/query) operations.
|
|
@@ -88,7 +97,7 @@ export class WorkerTransport {
|
|
|
88
97
|
* .count(5)
|
|
89
98
|
* .exec();
|
|
90
99
|
*/
|
|
91
|
-
|
|
100
|
+
class GetQuery {
|
|
92
101
|
/** @internal */
|
|
93
102
|
constructor(transport, collection) {
|
|
94
103
|
this.transport = transport;
|
|
@@ -207,9 +216,10 @@ export class GetQuery {
|
|
|
207
216
|
* Returns a single document for single-key lookups, or an array for all others.
|
|
208
217
|
*/
|
|
209
218
|
exec() {
|
|
210
|
-
return this.transport.
|
|
219
|
+
return this.transport.sendMessage('get', this.payload);
|
|
211
220
|
}
|
|
212
221
|
}
|
|
222
|
+
export { GetQuery as GetQuery };
|
|
213
223
|
// ─── SetQuery ─────────────────────────────────────────────────────────────────
|
|
214
224
|
/**
|
|
215
225
|
* Builder for SET (insert / upsert) operations.
|
|
@@ -224,7 +234,7 @@ export class GetQuery {
|
|
|
224
234
|
* })
|
|
225
235
|
* .exec();
|
|
226
236
|
*/
|
|
227
|
-
|
|
237
|
+
class SetQuery {
|
|
228
238
|
/** @internal */
|
|
229
239
|
constructor(transport, collection, data) {
|
|
230
240
|
this.transport = transport;
|
|
@@ -266,9 +276,10 @@ export class SetQuery {
|
|
|
266
276
|
}
|
|
267
277
|
/** Execute the insert/upsert and return `{ count, status }`. */
|
|
268
278
|
exec() {
|
|
269
|
-
return this.transport.
|
|
279
|
+
return this.transport.sendMessage('set', this.payload);
|
|
270
280
|
}
|
|
271
281
|
}
|
|
282
|
+
export { SetQuery as SetQuery };
|
|
272
283
|
// ─── UpdateQuery ──────────────────────────────────────────────────────────────
|
|
273
284
|
/**
|
|
274
285
|
* Builder for UPDATE (partial patch / merge) operations.
|
|
@@ -283,7 +294,7 @@ export class SetQuery {
|
|
|
283
294
|
* .update({ lp4: { price: 1749, in_stock: true } })
|
|
284
295
|
* .exec();
|
|
285
296
|
*/
|
|
286
|
-
|
|
297
|
+
class UpdateQuery {
|
|
287
298
|
/** @internal */
|
|
288
299
|
constructor(transport, collection, data) {
|
|
289
300
|
this.transport = transport;
|
|
@@ -295,9 +306,10 @@ export class UpdateQuery {
|
|
|
295
306
|
}
|
|
296
307
|
/** Execute the patch and return `{ count, status }`. */
|
|
297
308
|
exec() {
|
|
298
|
-
return this.transport.
|
|
309
|
+
return this.transport.sendMessage('update', this.payload);
|
|
299
310
|
}
|
|
300
311
|
}
|
|
312
|
+
export { UpdateQuery as UpdateQuery };
|
|
301
313
|
// ─── DeleteQuery ──────────────────────────────────────────────────────────────
|
|
302
314
|
/**
|
|
303
315
|
* Builder for DELETE operations.
|
|
@@ -314,7 +326,7 @@ export class UpdateQuery {
|
|
|
314
326
|
* // Drop the entire collection
|
|
315
327
|
* await db.collection('laptops').delete().drop().exec();
|
|
316
328
|
*/
|
|
317
|
-
|
|
329
|
+
class DeleteQuery {
|
|
318
330
|
/** @internal */
|
|
319
331
|
constructor(transport, collection) {
|
|
320
332
|
this.transport = transport;
|
|
@@ -348,16 +360,17 @@ export class DeleteQuery {
|
|
|
348
360
|
}
|
|
349
361
|
/** Execute the delete and return `{ count, status }`. */
|
|
350
362
|
exec() {
|
|
351
|
-
return this.transport.
|
|
363
|
+
return this.transport.sendMessage('delete', this.payload);
|
|
352
364
|
}
|
|
353
365
|
}
|
|
366
|
+
export { DeleteQuery as DeleteQuery };
|
|
354
367
|
// ─── CollectionHandle ─────────────────────────────────────────────────────────
|
|
355
368
|
/**
|
|
356
369
|
* A handle to a specific collection.
|
|
357
370
|
* Returned by `MoltenDBClient.collection(name)`.
|
|
358
371
|
* Use it to start any of the four operation builders.
|
|
359
372
|
*/
|
|
360
|
-
|
|
373
|
+
class CollectionHandle {
|
|
361
374
|
/** @internal */
|
|
362
375
|
constructor(transport, collectionName) {
|
|
363
376
|
this.transport = transport;
|
|
@@ -406,6 +419,7 @@ export class CollectionHandle {
|
|
|
406
419
|
return new DeleteQuery(this.transport, this.collectionName);
|
|
407
420
|
}
|
|
408
421
|
}
|
|
422
|
+
export { CollectionHandle as CollectionHandle };
|
|
409
423
|
// ─── MoltenDBClient ───────────────────────────────────────────────────────────
|
|
410
424
|
/**
|
|
411
425
|
* The main entry point for the MoltenDB query builder.
|
|
@@ -427,7 +441,7 @@ export class CollectionHandle {
|
|
|
427
441
|
* .count(5)
|
|
428
442
|
* .exec();
|
|
429
443
|
*/
|
|
430
|
-
|
|
444
|
+
class MoltenDBClient {
|
|
431
445
|
constructor(transport) {
|
|
432
446
|
this.transport = transport;
|
|
433
447
|
}
|
|
@@ -441,3 +455,5 @@ export class MoltenDBClient {
|
|
|
441
455
|
return new CollectionHandle(this.transport, name);
|
|
442
456
|
}
|
|
443
457
|
}
|
|
458
|
+
export { MoltenDBClient as MoltenDBClient };
|
|
459
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
// await db.collection('laptops').delete().drop().exec();
|
|
42
42
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.
|
|
44
|
+
exports.MoltenDBClient = exports.CollectionHandle = exports.DeleteQuery = exports.UpdateQuery = exports.SetQuery = exports.GetQuery = exports.WorkerTransport = void 0;
|
|
45
45
|
// ─── WorkerTransport ──────────────────────────────────────────────────────────
|
|
46
46
|
/**
|
|
47
47
|
* Default transport that communicates with a MoltenDB Web Worker.
|
|
@@ -56,6 +56,13 @@ class WorkerTransport {
|
|
|
56
56
|
this.messageId = startId;
|
|
57
57
|
this.worker = worker;
|
|
58
58
|
this.worker.addEventListener('message', (event) => {
|
|
59
|
+
// 1. Intercept unsolicited broadcast events from the Rust core
|
|
60
|
+
if (event.data && event.data.type === 'event') {
|
|
61
|
+
if (this.onEvent)
|
|
62
|
+
this.onEvent(event.data);
|
|
63
|
+
return; // Don't try to process this as a promise resolution
|
|
64
|
+
}
|
|
65
|
+
// 2. Standard request/response routing
|
|
59
66
|
const { id, result, error } = event.data;
|
|
60
67
|
const p = this.pending.get(id);
|
|
61
68
|
if (!p)
|
|
@@ -67,7 +74,7 @@ class WorkerTransport {
|
|
|
67
74
|
p.resolve(result ?? null);
|
|
68
75
|
});
|
|
69
76
|
}
|
|
70
|
-
|
|
77
|
+
sendMessage(action, payload) {
|
|
71
78
|
return new Promise((resolve, reject) => {
|
|
72
79
|
const id = this.messageId++;
|
|
73
80
|
this.pending.set(id, { resolve, reject });
|
|
@@ -211,7 +218,7 @@ class GetQuery {
|
|
|
211
218
|
* Returns a single document for single-key lookups, or an array for all others.
|
|
212
219
|
*/
|
|
213
220
|
exec() {
|
|
214
|
-
return this.transport.
|
|
221
|
+
return this.transport.sendMessage('get', this.payload);
|
|
215
222
|
}
|
|
216
223
|
}
|
|
217
224
|
exports.GetQuery = GetQuery;
|
|
@@ -271,7 +278,7 @@ class SetQuery {
|
|
|
271
278
|
}
|
|
272
279
|
/** Execute the insert/upsert and return `{ count, status }`. */
|
|
273
280
|
exec() {
|
|
274
|
-
return this.transport.
|
|
281
|
+
return this.transport.sendMessage('set', this.payload);
|
|
275
282
|
}
|
|
276
283
|
}
|
|
277
284
|
exports.SetQuery = SetQuery;
|
|
@@ -301,7 +308,7 @@ class UpdateQuery {
|
|
|
301
308
|
}
|
|
302
309
|
/** Execute the patch and return `{ count, status }`. */
|
|
303
310
|
exec() {
|
|
304
|
-
return this.transport.
|
|
311
|
+
return this.transport.sendMessage('update', this.payload);
|
|
305
312
|
}
|
|
306
313
|
}
|
|
307
314
|
exports.UpdateQuery = UpdateQuery;
|
|
@@ -355,7 +362,7 @@ class DeleteQuery {
|
|
|
355
362
|
}
|
|
356
363
|
/** Execute the delete and return `{ count, status }`. */
|
|
357
364
|
exec() {
|
|
358
|
-
return this.transport.
|
|
365
|
+
return this.transport.sendMessage('delete', this.payload);
|
|
359
366
|
}
|
|
360
367
|
}
|
|
361
368
|
exports.DeleteQuery = DeleteQuery;
|
|
@@ -436,7 +443,7 @@ exports.CollectionHandle = CollectionHandle;
|
|
|
436
443
|
* .count(5)
|
|
437
444
|
* .exec();
|
|
438
445
|
*/
|
|
439
|
-
class
|
|
446
|
+
class MoltenDBClient {
|
|
440
447
|
constructor(transport) {
|
|
441
448
|
this.transport = transport;
|
|
442
449
|
}
|
|
@@ -450,5 +457,5 @@ class MoltenDBQueryBuilder {
|
|
|
450
457
|
return new CollectionHandle(this.transport, name);
|
|
451
458
|
}
|
|
452
459
|
}
|
|
453
|
-
exports.
|
|
460
|
+
exports.MoltenDBClient = MoltenDBClient;
|
|
454
461
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,mDAAmD;AACnD,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,iBAAiB;AACjB,EAAE;AACF,qEAAqE;AACrE,+CAA+C;AAC/C,8CAA8C;AAC9C,qCAAqC;AACrC,2CAA2C;AAC3C,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,2CAA2C;AAC3C,EAAE;AACF,6BAA6B;AAC7B,mDAAmD;AACnD,aAAa;AACb,iCAAiC;AACjC,2CAA2C;AAC3C,gDAAgD;AAChD,iBAAiB;AACjB,eAAe;AACf,EAAE;AACF,2BAA2B;AAC3B,mCAAmC;AACnC,sDAAsD;AACtD,eAAe;AACf,EAAE;AACF,8BAA8B;AAC9B,mCAAmC;AACnC,wDAAwD;AACxD,eAAe;AACf,EAAE;AACF,2CAA2C;AAC3C,gEAAgE;AAChE,yEAAyE;AACzE,2DAA2D;AAC3D,gFAAgF;;;AAuFhF,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -122,7 +122,7 @@ export type ExtendsMap = { [alias: string]: string };
|
|
|
122
122
|
* - A mock for testing
|
|
123
123
|
*/
|
|
124
124
|
export interface MoltenTransport {
|
|
125
|
-
|
|
125
|
+
sendMessage(action: 'get' | 'set' | 'update' | 'delete', payload: Document): Promise<JsonValue>;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
// ─── WorkerTransport ──────────────────────────────────────────────────────────
|
|
@@ -138,21 +138,30 @@ export class WorkerTransport implements MoltenTransport {
|
|
|
138
138
|
private worker: Worker;
|
|
139
139
|
private messageId: number;
|
|
140
140
|
private pending = new Map<number, { resolve: (v: JsonValue) => void; reject: (e: Error) => void }>();
|
|
141
|
+
public onEvent?: (event: any) => void;
|
|
141
142
|
|
|
142
143
|
constructor(worker: Worker, startId = 0) {
|
|
143
144
|
this.messageId = startId;
|
|
144
145
|
this.worker = worker;
|
|
145
146
|
this.worker.addEventListener('message', (event: MessageEvent) => {
|
|
147
|
+
// 1. Intercept unsolicited broadcast events from the Rust core
|
|
148
|
+
if (event.data && event.data.type === 'event') {
|
|
149
|
+
if (this.onEvent) this.onEvent(event.data);
|
|
150
|
+
return; // Don't try to process this as a promise resolution
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// 2. Standard request/response routing
|
|
146
154
|
const { id, result, error } = event.data as { id: number; result?: JsonValue; error?: string };
|
|
147
155
|
const p = this.pending.get(id);
|
|
148
156
|
if (!p) return;
|
|
157
|
+
|
|
149
158
|
this.pending.delete(id);
|
|
150
159
|
if (error) p.reject(new Error(error));
|
|
151
160
|
else p.resolve(result ?? null);
|
|
152
161
|
});
|
|
153
162
|
}
|
|
154
163
|
|
|
155
|
-
|
|
164
|
+
sendMessage(action: 'get' | 'set' | 'update' | 'delete', payload: Document): Promise<JsonValue> {
|
|
156
165
|
return new Promise((resolve, reject) => {
|
|
157
166
|
const id = this.messageId++;
|
|
158
167
|
this.pending.set(id, { resolve, reject });
|
|
@@ -310,7 +319,7 @@ export class GetQuery {
|
|
|
310
319
|
* Returns a single document for single-key lookups, or an array for all others.
|
|
311
320
|
*/
|
|
312
321
|
exec(): Promise<JsonValue> {
|
|
313
|
-
return this.transport.
|
|
322
|
+
return this.transport.sendMessage('get', this.payload);
|
|
314
323
|
}
|
|
315
324
|
}
|
|
316
325
|
|
|
@@ -376,7 +385,7 @@ export class SetQuery {
|
|
|
376
385
|
|
|
377
386
|
/** Execute the insert/upsert and return `{ count, status }`. */
|
|
378
387
|
exec(): Promise<JsonValue> {
|
|
379
|
-
return this.transport.
|
|
388
|
+
return this.transport.sendMessage('set', this.payload);
|
|
380
389
|
}
|
|
381
390
|
}
|
|
382
391
|
|
|
@@ -412,7 +421,7 @@ export class UpdateQuery {
|
|
|
412
421
|
|
|
413
422
|
/** Execute the patch and return `{ count, status }`. */
|
|
414
423
|
exec(): Promise<JsonValue> {
|
|
415
|
-
return this.transport.
|
|
424
|
+
return this.transport.sendMessage('update', this.payload);
|
|
416
425
|
}
|
|
417
426
|
}
|
|
418
427
|
|
|
@@ -474,7 +483,7 @@ export class DeleteQuery {
|
|
|
474
483
|
|
|
475
484
|
/** Execute the delete and return `{ count, status }`. */
|
|
476
485
|
exec(): Promise<JsonValue> {
|
|
477
|
-
return this.transport.
|
|
486
|
+
return this.transport.sendMessage('delete', this.payload);
|
|
478
487
|
}
|
|
479
488
|
}
|
|
480
489
|
|