@moyodb/sdk 1.0.1 → 1.3.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 (78) hide show
  1. package/README.md +111 -28
  2. package/dist/assets/browser-worker-DBt51gsS.js +4 -0
  3. package/dist/assets/browser-worker-DBt51gsS.js.map +1 -0
  4. package/dist/assets/shared-worker-NdniRuEL.js +2 -0
  5. package/dist/assets/shared-worker-NdniRuEL.js.map +1 -0
  6. package/dist/browser-worker.d.ts +2 -0
  7. package/dist/browser-worker.d.ts.map +1 -0
  8. package/dist/change-events.d.ts +1 -1
  9. package/dist/chunks/indexing-CKtbpaZn.js +1657 -0
  10. package/dist/chunks/indexing-CKtbpaZn.js.map +1 -0
  11. package/dist/codec.d.ts +1 -1
  12. package/dist/compression.d.ts +16 -2
  13. package/dist/compression.d.ts.map +1 -1
  14. package/dist/demo.d.ts +2 -1
  15. package/dist/demo.d.ts.map +1 -1
  16. package/dist/engine/README.md +89 -16
  17. package/dist/engine/moyodb_engine.d.ts +34 -10
  18. package/dist/engine/moyodb_engine.js +238 -51
  19. package/dist/engine/moyodb_engine_bg.wasm +0 -0
  20. package/dist/engine/moyodb_engine_bg.wasm.d.ts +17 -10
  21. package/dist/engine/package.json +2 -2
  22. package/dist/errors.d.ts +3 -0
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/index.d.ts +11 -5
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/indexing.d.ts +1 -1
  27. package/dist/internal.d.ts +6 -0
  28. package/dist/internal.d.ts.map +1 -1
  29. package/dist/moyodb-sdk.js +2362 -640
  30. package/dist/moyodb-sdk.js.map +1 -1
  31. package/dist/node-engine.js +2838 -0
  32. package/dist/node-engine.js.map +1 -0
  33. package/dist/node-storage.d.mts +16 -0
  34. package/dist/node-storage.mjs +669 -0
  35. package/dist/node-worker-client.d.ts +20 -0
  36. package/dist/node-worker-client.d.ts.map +1 -0
  37. package/dist/node-worker.mjs +119 -0
  38. package/dist/node.d.ts +19 -0
  39. package/dist/node.d.ts.map +1 -0
  40. package/dist/node.js +3437 -0
  41. package/dist/node.js.map +1 -0
  42. package/dist/records.d.ts +75 -0
  43. package/dist/records.d.ts.map +1 -0
  44. package/dist/registry.d.ts +12 -4
  45. package/dist/registry.d.ts.map +1 -1
  46. package/dist/shared-worker-client.d.ts +28 -0
  47. package/dist/shared-worker-client.d.ts.map +1 -0
  48. package/dist/shared-worker-protocol.d.ts +16 -0
  49. package/dist/shared-worker-protocol.d.ts.map +1 -0
  50. package/dist/shared-worker.d.ts +33 -0
  51. package/dist/shared-worker.d.ts.map +1 -0
  52. package/dist/snappy.d.ts +3 -0
  53. package/dist/snappy.d.ts.map +1 -0
  54. package/dist/sql-parser.d.ts +9 -0
  55. package/dist/sql-parser.d.ts.map +1 -0
  56. package/dist/sql-types.d.ts +82 -0
  57. package/dist/sql-types.d.ts.map +1 -0
  58. package/dist/sql.d.ts +32 -0
  59. package/dist/sql.d.ts.map +1 -0
  60. package/dist/subscriptions.d.ts +2 -2
  61. package/dist/subscriptions.d.ts.map +1 -1
  62. package/dist/types.d.ts +36 -3
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/worker-api.d.ts +19 -3
  65. package/dist/worker-api.d.ts.map +1 -1
  66. package/dist/worker-client.d.ts +30 -6
  67. package/dist/worker-client.d.ts.map +1 -1
  68. package/dist/worker-protocol.d.ts +19 -4
  69. package/dist/worker-protocol.d.ts.map +1 -1
  70. package/dist/worker-server.d.ts +10 -2
  71. package/dist/worker-server.d.ts.map +1 -1
  72. package/dist/worker.d.ts +292 -1
  73. package/dist/worker.d.ts.map +1 -1
  74. package/package.json +13 -6
  75. package/dist/assets/worker-KDc8Khl_.js +0 -4
  76. package/dist/assets/worker-KDc8Khl_.js.map +0 -1
  77. package/dist/engine/snippets/moyodb-engine-cff0a0e2441a7a8f/js/opfs_shim.js +0 -513
  78. /package/dist/engine/snippets/{moyodb-engine-8ebe6af0cc2e81b7 → moyodb-engine-54a406e33b0fb849}/js/opfs_shim.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-worker-client.d.ts","sourceRoot":"","sources":["../src/node-worker-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,mBAAmB;;IAC5B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IASrC,YAAY,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,IAAI,EAgCzD;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAE,YAAY,EAAO,GAAG,IAAI,CAEjE;IAED,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAOjF;IAED,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAEpF;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAM3B;CAQJ"}
@@ -0,0 +1,119 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { BroadcastChannel, parentPort, workerData } from 'node:worker_threads';
3
+ import { installNodeStorage } from './node-storage.mjs';
4
+
5
+ if (!parentPort) {
6
+ throw new Error('Node database runtime must run in a worker thread');
7
+ }
8
+
9
+ const listeners = new Map();
10
+ const scope = {
11
+ isSecureContext: true,
12
+ location: { origin: 'moyodb-node' },
13
+ addEventListener(type, listener) {
14
+ let entries = listeners.get(type);
15
+ if (!entries) {
16
+ entries = new Set();
17
+ listeners.set(type, entries);
18
+ }
19
+ entries.add(listener);
20
+ },
21
+ removeEventListener(type, listener) {
22
+ listeners.get(type)?.delete(listener);
23
+ },
24
+ postMessage(data, transfer = []) {
25
+ parentPort.postMessage(data, transfer);
26
+ }
27
+ };
28
+
29
+ parentPort.on('message', (data) => {
30
+ const event = { data, origin: '', ports: [] };
31
+ for (const listener of Array.from(listeners.get('message') ?? [])) {
32
+ if (typeof listener === 'function') listener(event);
33
+ else listener.handleEvent(event);
34
+ }
35
+ });
36
+
37
+ Object.defineProperty(globalThis, 'self', { configurable: true, value: scope });
38
+
39
+ class NodeBroadcastChannel extends BroadcastChannel {
40
+ constructor(name) {
41
+ const channelName = name === `db:${workerData.dbName}:events` ? `db:${workerData.channelName}:events` : name;
42
+ super(channelName);
43
+ }
44
+ }
45
+
46
+ Object.defineProperty(globalThis, 'BroadcastChannel', { configurable: true, value: NodeBroadcastChannel });
47
+
48
+ let storage;
49
+ let server;
50
+
51
+ async function acquireStorage() {
52
+ const deadline = performance.now() + workerData.ownerWaitMs;
53
+ for (;;) {
54
+ try {
55
+ return await installNodeStorage(workerData.directory, {
56
+ lockToken: workerData.lockToken,
57
+ encodedDbName: workerData.encodedDbName,
58
+ createIfMissing: workerData.createIfMissing !== false
59
+ });
60
+ } catch (error) {
61
+ const remaining = deadline - performance.now();
62
+ if (error.name !== 'DatabaseBusyError' || remaining <= 0) throw error;
63
+ await new Promise((resolve) => setTimeout(resolve, Math.min(remaining, 25)));
64
+ }
65
+ }
66
+ }
67
+
68
+ try {
69
+ storage = await acquireStorage();
70
+ // The file lease excludes other owners before this lock is granted.
71
+ Object.defineProperty(navigator, 'locks', {
72
+ configurable: true,
73
+ value: {
74
+ async request(name, options, callback) {
75
+ options.signal?.throwIfAborted();
76
+ return callback({ name, mode: options.mode ?? 'exclusive' });
77
+ }
78
+ }
79
+ });
80
+ // The filesystem adapter supplies the actual handles.
81
+ class NodeFileSystemFileHandle {
82
+ createSyncAccessHandle() {}
83
+ }
84
+ Object.defineProperty(globalThis, 'FileSystemFileHandle', {
85
+ configurable: true,
86
+ value: NodeFileSystemFileHandle
87
+ });
88
+ const { DbWorker, exposeWorkerApi } = await import(new URL('./node-engine.js', import.meta.url).href);
89
+ const engine = new DbWorker({
90
+ async loadWasm() {
91
+ const module = await import(new URL('./engine/moyodb_engine.js', import.meta.url).href);
92
+ const bytes = await readFile(new URL('./engine/moyodb_engine_bg.wasm', import.meta.url));
93
+ await module.default({ module_or_path: bytes });
94
+ return module;
95
+ },
96
+ persistence: {
97
+ async persisted() {
98
+ return true;
99
+ },
100
+ async persist() {
101
+ return true;
102
+ },
103
+ close() {}
104
+ }
105
+ });
106
+ server = exposeWorkerApi(engine, scope);
107
+ process.once('exit', () => {
108
+ server.close();
109
+ storage.close();
110
+ });
111
+ } catch (error) {
112
+ server?.close();
113
+ try {
114
+ storage?.close();
115
+ } catch {
116
+ // Preserve the runtime failure.
117
+ }
118
+ throw error;
119
+ }
package/dist/node.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { DB, OpenOptions } from './types.js';
2
+ export type NodeOpenOptions = Omit<OpenOptions, 'workerMode'> & {
3
+ directory: string;
4
+ };
5
+ export interface NodeDeleteOptions {
6
+ directory: string;
7
+ }
8
+ export declare function openNodeDB(name: string, options: NodeOpenOptions): Promise<DB>;
9
+ export declare function deleteNodeDB(name: string, options: NodeDeleteOptions): Promise<void>;
10
+ export declare function unsafeDebugCrashNodeWorker(name: string, options: NodeDeleteOptions): Promise<boolean>;
11
+ export * from './codec.js';
12
+ export * from './errors.js';
13
+ export * from './indexing.js';
14
+ export * from './records.js';
15
+ export * from './sql.js';
16
+ export { SqlSyntaxError } from './sql-parser.js';
17
+ export type * from './sql-types.js';
18
+ export type * from './types.js';
19
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;CACrB;AA2LD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CAOpF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc1F;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAY3G;AAED,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,mBAAmB,aAAa,CAAC;AACjC,mBAAmB,SAAS,CAAC"}