@moltendb-web/core 1.5.1 → 1.7.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/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![NPM Version](https://img.shields.io/npm/v/@moltendb-web/core?style=flat-square&color=orange)](https://www.npmjs.com/package/@moltendb-web/core)
12
12
  [![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](LICENSE.md)
13
13
  [![WASM](https://img.shields.io/badge/wasm-optimized-magenta?style=flat-square)](https://webassembly.org/)
14
- [![Status](https://img.shields.io/badge/status-release%20candidate-brightgreen?style=flat-square)]()
14
+ [![Status](https://img.shields.io/badge/status-stable-brightgreen?style=flat-square)]()
15
15
 
16
16
  </div>
17
17
 
@@ -23,7 +23,7 @@ MoltenDb is a JSON document database written in Rust that runs directly in your
23
23
 
24
24
  Beyond being a full-featured embedded database, MoltenDb can also serve as a **persistent state manager** for your application. Because all data is written to OPFS, your app's state survives page reloads, browser crashes, and unexpected connection loss — your users will never lose their work.
25
25
 
26
- > **🚀 Release Candidate 2** — The core engine, multi-tab sync, storage layer, and **transparent at-rest encryption** are feature-complete and stabilised. Server sync and analytics are planned for a future release.
26
+ > **✅ Stable** — The core engine, multi-tab sync, storage layer, and **transparent at-rest encryption** are feature-complete and stabilised. Server sync and analytics are planned for a future release.
27
27
 
28
28
  ### 🎮 Explore the Full Functionality
29
29
 
@@ -220,6 +220,8 @@ MoltenDb supports a variety of operators in the `where` clause:
220
220
  | `$contains` | `$ct` | Substring check (string) or membership check (array) |
221
221
  | `$in` | `$oneOf` | Field value is one of a list |
222
222
  | `$nin` | `$notIn` | Field value is not in a list |
223
+ | `$or` | | At least one of the sub-conditions must match (array of where-style objects) |
224
+ | `$and` | | All sub-conditions must match (array of where-style objects) |
223
225
 
224
226
  // Inline reference embedding (`extends`)
225
227
 
@@ -266,15 +268,15 @@ await db.init();
266
268
 
267
269
  ### Options Reference
268
270
 
269
- | Property | Type | Default | Description |
270
- | :--- | :--- | :--- | :--- |
271
- | `hotThreshold` | `number` | `50000` | **Hybrid Bitcask Limit:** Maximum documents per collection to keep in RAM. When exceeded, the oldest documents are paged out to OPFS to save memory. |
272
- | `encryptionKey` | `string` | `undefined` | **At-Rest Encryption:** If provided, all data written to OPFS is encrypted using XChaCha20-Poly1305. If omitted, data is stored as plain JSON. |
271
+ | Property | Type | Default | Description |
272
+ | :--- | :--- | :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
273
+ | `hotThreshold` | `number` | `50000` | **Hybrid Bitcask Limit:** Maximum documents per collection to keep in RAM. When exceeded, the oldest documents are paged out to OPFS to save memory. |
274
+ | `encryptionKey` | `string` | `undefined` | **At-Rest Encryption:** If provided, all data written to OPFS is encrypted using XChaCha20-Poly1305. If omitted, data is stored as plain JSON. |
273
275
  | `writeMode` | `'async' \| 'sync'` | `'async'` | **Durability vs Speed:** `'async'` is blazing fast (high throughput), while `'sync'` ensures every write is flushed to disk before returning (safer but slower). **Note:** `async` is recommended for most web apps to avoid blocking during heavy write bursts. |
274
- | `workerUrl` | `string \| URL` | `undefined` | Custom path to the Web Worker script. |
275
- | `maxBodySize` | `number` | `10485760` | **Payload Limit:** Max body size in bytes. Prevents memory spikes from large messages. |
276
- | `rateLimitRequests`| `number` | `100` | (Server Parity/Safety) Max requests allowed per rate-limit window. |
277
- | `rateLimitWindow` | `number` | `60` | (Server Parity/Safety) Size of the rate-limit window in seconds. |
276
+ | `workerUrl` | `string \| URL` | `undefined` | Custom path to the Web Worker script. |
277
+ | `maxBodySize` | `number` | `10485760` | **Payload Limit:** Max body size in bytes. Prevents memory spikes from large messages. |
278
+ | `maxKeysPerRequest` | `number` | `1000` | **Batch Limit:** Maximum number of keys allowed per JSON request. |
279
+ | `inMemory` | `boolean` | `false` | **Ephemeral Mode:** Run entirely in RAM no OPFS writes, no WAL. All data is lost when **any** tab refreshes or closes. Ideal for CI environments and ephemeral caches. |
278
280
 
279
281
  ---
280
282
  ## Storage Architecture
@@ -394,16 +396,16 @@ This monorepo contains the following packages:
394
396
 
395
397
  ## Roadmap
396
398
 
397
- - [x] **Multi-Tab Sync:** Leader election for multiple tabs to share a single OPFS instance — **stabilised in RC1**.
398
- - [x] **Automatic Compaction:** Log compacts automatically at 500 entries or 5 MB — **stabilised in RC1**.
399
- - [x] **Rich Test Suite:** 50 unit, integration, and stress tests via Vitest — **stabilised in RC1**.
399
+ - [x] **Multi-Tab Sync:** Leader election for multiple tabs to share a single OPFS instance.
400
+ - [x] **Automatic Compaction:** Log compacts automatically at 500 entries or 5 MB.
401
+ - [x] **Rich Test Suite:** 50 unit, integration, and stress tests via Vitest.
400
402
  - [ ] **React Adapter:** Official `@moltendb-web/react` package with `useQuery` hooks and real-time context providers.
401
403
  - [x] **Angular Adapter:** Official `@moltendb-web/angular` package featuring Signal-based data fetching.
402
404
  - [ ] **Delta Sync:** Automatic two-way sync with the MoltenDb Rust server.
403
- - [x] **Data Encryption:** Transparent encryption-at-rest using hardware-backed keys (Argon2id + XChaCha20) — **stabilised in RC2**.
404
- - [x] **Hybrid Bitcask:** Seamlessly handle datasets larger than RAM by paging docs to OPFS — **stabilised in RC2**.
405
+ - [x] **Data Encryption:** Transparent encryption-at-rest using hardware-backed keys (Argon2id + XChaCha20).
406
+ - [x] **Hybrid Bitcask:** Seamlessly handle datasets larger than RAM by paging docs to OPFS.
405
407
  - [ ] **Analytics Functionality:** Run complex analytics queries straight in the browser without blocking the UI.
406
- - [x] **Configurable Limits:** User-defined RAM thresholds and request body sizes for edge and browser environments — **stabilised in RC2**.
408
+ - [x] **Configurable Limits:** User-defined RAM thresholds and request body sizes for edge and browser environments.
407
409
 
408
410
 
409
411
  ## Contributing & Feedback
package/dist/index.d.ts CHANGED
@@ -7,12 +7,20 @@ export interface MoltenDbOptions {
7
7
  encryptionKey?: string;
8
8
  /** Storage write mode: 'async' (default, high throughput) or 'sync' (durable). */
9
9
  writeMode?: 'async' | 'sync';
10
- /** (Server only) Max requests per IP per rate-limit window. */
11
- rateLimitRequests?: number;
12
- /** (Server only) Rate-limit window size in seconds. */
13
- rateLimitWindow?: number;
14
- /** (Server only) Maximum request body size in bytes. */
10
+ /** Maximum request body size in bytes. */
15
11
  maxBodySize?: number;
12
+ /** Maximum number of keys allowed per JSON request. Default: 1000. */
13
+ maxKeysPerRequest?: number;
14
+ /**
15
+ * Run entirely in RAM — no OPFS writes.
16
+ *
17
+ * All tabs share a single in-memory store via the leader/follower election.
18
+ * Data persists as long as at least one tab is open.
19
+ * When **any** tab refreshes or closes, the shared RAM store is wiped for all tabs.
20
+ *
21
+ * Default: false.
22
+ */
23
+ inMemory?: boolean;
16
24
  }
17
25
  export interface DbEvent {
18
26
  type: 'event';
package/dist/index.js CHANGED
@@ -46,7 +46,17 @@ export class MoltenDb {
46
46
  // 1. If initialization has already started or finished, return the existing promise
47
47
  if (this.initPromise)
48
48
  return this.initPromise;
49
- // 2. Otherwise, start the initialization and store the promise
49
+ // 2. When running in-memory, any tab refresh should wipe the shared RAM store.
50
+ // Broadcast a clear_all signal on beforeunload so the leader can wipe the Rust DashMap.
51
+ if (this.options.inMemory) {
52
+ window.addEventListener('beforeunload', () => {
53
+ try {
54
+ this.bc?.postMessage({ type: 'clear_all' });
55
+ }
56
+ catch { }
57
+ });
58
+ }
59
+ // 3. Otherwise, start the initialization and store the promise
50
60
  this.initPromise = new Promise((resolveInit, rejectInit) => {
51
61
  this.bc = new BroadcastChannel(`moltendb_channel_${this.dbName}`);
52
62
  navigator.locks.request(`moltendb_lock_${this.dbName}`, { ifAvailable: true }, async (lock) => {
@@ -76,12 +86,14 @@ export class MoltenDb {
76
86
  }
77
87
  async startAsLeader() {
78
88
  // Guard: OPFS is required
79
- try {
80
- await navigator.storage.getDirectory();
81
- }
82
- catch {
83
- throw new Error('[MoltenDb] Origin Private File System (OPFS) is not available in this browser context. ' +
84
- 'Try a non-private window or a browser that supports OPFS (Chrome 102+, Firefox 111+, Safari 15.2+).');
89
+ if (!this.options.inMemory) {
90
+ try {
91
+ await navigator.storage.getDirectory();
92
+ }
93
+ catch {
94
+ throw new Error('[MoltenDb] Origin Private File System (OPFS) is not available in this browser context. ' +
95
+ 'Try a non-private window or a browser that supports OPFS (Chrome 102+, Firefox 111+, Safari 15.2+).');
96
+ }
85
97
  }
86
98
  this.isLeader = true;
87
99
  if (this.worker)
@@ -107,15 +119,27 @@ export class MoltenDb {
107
119
  // Wait for worker to boot
108
120
  await this.sendMessage('init', {
109
121
  dbName: this.dbName,
110
- hotThreshold: this.options.hotThreshold,
111
122
  encryptionKey: this.options.encryptionKey,
112
- writeMode: this.options.writeMode,
113
- rateLimitRequests: this.options.rateLimitRequests,
114
- rateLimitWindow: this.options.rateLimitWindow,
123
+ hotThreshold: this.options.hotThreshold,
124
+ inMemory: this.options.inMemory,
115
125
  maxBodySize: this.options.maxBodySize,
126
+ maxKeysPerRequest: this.options.maxKeysPerRequest,
127
+ writeMode: this.options.writeMode,
116
128
  });
117
129
  this.bc.onmessage = async (e) => {
118
130
  const msg = e.data;
131
+ // Any tab unloading in in-memory mode broadcasts this — wipe the shared RAM store.
132
+ if (msg.type === 'clear_all') {
133
+ try {
134
+ await this.sendMessage('clear', {});
135
+ this.bc.postMessage({ type: 'cleared' });
136
+ console.log('[MoltenDb] In-memory store wiped (tab unloaded).');
137
+ }
138
+ catch (err) {
139
+ console.warn('[MoltenDb] Failed to clear in-memory store:', err);
140
+ }
141
+ return;
142
+ }
119
143
  if (msg.type === 'query' && msg.action) {
120
144
  try {
121
145
  const result = await this.sendMessage(msg.action, msg.payload);
@@ -139,6 +163,15 @@ export class MoltenDb {
139
163
  this.dispatchEvent(data); // ⬅️ Trigger new dispatcher
140
164
  return;
141
165
  }
166
+ // In-memory wipe notification from leader — reject all in-flight requests.
167
+ if (data.type === 'cleared') {
168
+ console.log('[MoltenDb] In-memory store was wiped by another tab.');
169
+ for (const [id, req] of this.pendingRequests) {
170
+ req.reject(new Error('[MoltenDb] In-memory store was cleared by a tab reload.'));
171
+ this.pendingRequests.delete(id);
172
+ }
173
+ return;
174
+ }
142
175
  if (data.type === 'response') {
143
176
  const req = this.pendingRequests.get(data.id);
144
177
  if (req) {
@@ -9,7 +9,7 @@ self.onmessage = async (e) => {
9
9
  initPromise = (async () => {
10
10
  await init();
11
11
  // Pass all config flags to Rust
12
- const instance = await WorkerDb.create(payload.dbName, payload.hotThreshold, payload.encryptionKey, payload.writeMode, payload.rateLimitRequests, payload.rateLimitWindow, payload.maxBodySize);
12
+ const instance = await WorkerDb.create(payload.dbName, payload.hotThreshold, payload.encryptionKey, payload.writeMode, payload.maxBodySize, payload.maxKeysPerRequest, payload.inMemory);
13
13
  // Listen to Rust and broadcast events
14
14
  instance.subscribe((eventStr) => {
15
15
  try {
@@ -59,11 +59,13 @@ export class WorkerDb {
59
59
  * * `hot_threshold` — Optional maximum documents per collection to keep in RAM (default: 50,000).
60
60
  * * `encryption_key` — Optional password for at-rest encryption.
61
61
  * * `write_mode` — Optional write mode: "async" (default) or "sync".
62
- * * `rate_limit_requests` — Optional max requests per window (default: 100).
63
- * * `rate_limit_window` — Optional window size in seconds (default: 60).
64
62
  * * `max_body_size` — Optional maximum request body size in bytes (default: 10MB).
63
+ * * `max_keys_per_request` — Optional maximum keys allowed per request (default: 1000).
64
+ * * `in_memory` — Optional flag to run entirely in RAM with no OPFS writes (default: false).
65
+ * When `true`, all data is lost when the worker is terminated — useful for ephemeral
66
+ * session caches or testing without touching OPFS storage.
65
67
  */
66
- static create(db_name: string, hot_threshold?: number | null, encryption_key?: string | null, write_mode?: string | null, rate_limit_requests?: number | null, rate_limit_window?: bigint | null, max_body_size?: number | null): Promise<WorkerDb>;
68
+ static create(db_name: string, hot_threshold?: number | null, encryption_key?: string | null, write_mode?: string | null, max_body_size?: number | null, max_keys_per_request?: number | null, in_memory?: boolean | null): Promise<WorkerDb>;
67
69
  /**
68
70
  * Route an incoming message from the JavaScript worker to the correct handler.
69
71
  *
@@ -80,6 +82,7 @@ export class WorkerDb {
80
82
  * - "delete" → delete documents or drop: { collection, keys: ... } or { drop: true }
81
83
  * - "compact" → compact the OPFS log file
82
84
  * - "get_size" → return current OPFS file size in bytes
85
+ * - "clear" → wipe all in-memory state (in-memory mode only)
83
86
  *
84
87
  * Returns a JsValue result on success, or a JsValue error string on failure.
85
88
  */
@@ -98,11 +101,11 @@ export interface InitOutput {
98
101
  readonly memory: WebAssembly.Memory;
99
102
  readonly __wbg_workerdb_free: (a: number, b: number) => void;
100
103
  readonly workerdb_analytics: (a: number, b: number, c: number, d: number) => void;
101
- readonly workerdb_create: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint, k: number) => number;
104
+ readonly workerdb_create: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
102
105
  readonly workerdb_handle_message: (a: number, b: number, c: number) => void;
103
106
  readonly workerdb_subscribe: (a: number, b: number) => void;
104
- readonly __wasm_bindgen_func_elem_4204: (a: number, b: number, c: number, d: number) => void;
105
- readonly __wasm_bindgen_func_elem_4216: (a: number, b: number, c: number, d: number) => void;
107
+ readonly __wasm_bindgen_func_elem_4220: (a: number, b: number, c: number, d: number) => void;
108
+ readonly __wasm_bindgen_func_elem_4230: (a: number, b: number, c: number, d: number) => void;
106
109
  readonly __wbindgen_export: (a: number, b: number) => number;
107
110
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
108
111
  readonly __wbindgen_export3: (a: number) => void;
@@ -91,26 +91,28 @@ export class WorkerDb {
91
91
  * * `hot_threshold` — Optional maximum documents per collection to keep in RAM (default: 50,000).
92
92
  * * `encryption_key` — Optional password for at-rest encryption.
93
93
  * * `write_mode` — Optional write mode: "async" (default) or "sync".
94
- * * `rate_limit_requests` — Optional max requests per window (default: 100).
95
- * * `rate_limit_window` — Optional window size in seconds (default: 60).
96
94
  * * `max_body_size` — Optional maximum request body size in bytes (default: 10MB).
95
+ * * `max_keys_per_request` — Optional maximum keys allowed per request (default: 1000).
96
+ * * `in_memory` — Optional flag to run entirely in RAM with no OPFS writes (default: false).
97
+ * When `true`, all data is lost when the worker is terminated — useful for ephemeral
98
+ * session caches or testing without touching OPFS storage.
97
99
  * @param {string} db_name
98
100
  * @param {number | null} [hot_threshold]
99
101
  * @param {string | null} [encryption_key]
100
102
  * @param {string | null} [write_mode]
101
- * @param {number | null} [rate_limit_requests]
102
- * @param {bigint | null} [rate_limit_window]
103
103
  * @param {number | null} [max_body_size]
104
+ * @param {number | null} [max_keys_per_request]
105
+ * @param {boolean | null} [in_memory]
104
106
  * @returns {Promise<WorkerDb>}
105
107
  */
106
- static create(db_name, hot_threshold, encryption_key, write_mode, rate_limit_requests, rate_limit_window, max_body_size) {
108
+ static create(db_name, hot_threshold, encryption_key, write_mode, max_body_size, max_keys_per_request, in_memory) {
107
109
  const ptr0 = passStringToWasm0(db_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
108
110
  const len0 = WASM_VECTOR_LEN;
109
111
  var ptr1 = isLikeNone(encryption_key) ? 0 : passStringToWasm0(encryption_key, wasm.__wbindgen_export, wasm.__wbindgen_export2);
110
112
  var len1 = WASM_VECTOR_LEN;
111
113
  var ptr2 = isLikeNone(write_mode) ? 0 : passStringToWasm0(write_mode, wasm.__wbindgen_export, wasm.__wbindgen_export2);
112
114
  var len2 = WASM_VECTOR_LEN;
113
- const ret = wasm.workerdb_create(ptr0, len0, isLikeNone(hot_threshold) ? 0x100000001 : (hot_threshold) >>> 0, ptr1, len1, ptr2, len2, isLikeNone(rate_limit_requests) ? 0x100000001 : (rate_limit_requests) >>> 0, !isLikeNone(rate_limit_window), isLikeNone(rate_limit_window) ? BigInt(0) : rate_limit_window, isLikeNone(max_body_size) ? 0x100000001 : (max_body_size) >>> 0);
115
+ const ret = wasm.workerdb_create(ptr0, len0, isLikeNone(hot_threshold) ? 0x100000001 : (hot_threshold) >>> 0, ptr1, len1, ptr2, len2, isLikeNone(max_body_size) ? 0x100000001 : (max_body_size) >>> 0, isLikeNone(max_keys_per_request) ? 0x100000001 : (max_keys_per_request) >>> 0, isLikeNone(in_memory) ? 0xFFFFFF : in_memory ? 1 : 0);
114
116
  return takeObject(ret);
115
117
  }
116
118
  /**
@@ -129,6 +131,7 @@ export class WorkerDb {
129
131
  * - "delete" → delete documents or drop: { collection, keys: ... } or { drop: true }
130
132
  * - "compact" → compact the OPFS log file
131
133
  * - "get_size" → return current OPFS file size in bytes
134
+ * - "clear" → wipe all in-memory state (in-memory mode only)
132
135
  *
133
136
  * Returns a JsValue result on success, or a JsValue error string on failure.
134
137
  * @param {any} data
@@ -417,7 +420,7 @@ function __wbg_get_imports() {
417
420
  const a = state0.a;
418
421
  state0.a = 0;
419
422
  try {
420
- return __wasm_bindgen_func_elem_4216(a, state0.b, arg0, arg1);
423
+ return __wasm_bindgen_func_elem_4230(a, state0.b, arg0, arg1);
421
424
  } finally {
422
425
  state0.a = a;
423
426
  }
@@ -564,8 +567,8 @@ function __wbg_get_imports() {
564
567
  return ret;
565
568
  }, arguments); },
566
569
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
567
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 769, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
568
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_4204);
570
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 774, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
571
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_4220);
569
572
  return addHeapObject(ret);
570
573
  },
571
574
  __wbindgen_cast_0000000000000002: function(arg0) {
@@ -607,10 +610,10 @@ function __wbg_get_imports() {
607
610
  };
608
611
  }
609
612
 
610
- function __wasm_bindgen_func_elem_4204(arg0, arg1, arg2) {
613
+ function __wasm_bindgen_func_elem_4220(arg0, arg1, arg2) {
611
614
  try {
612
615
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
613
- wasm.__wasm_bindgen_func_elem_4204(retptr, arg0, arg1, addHeapObject(arg2));
616
+ wasm.__wasm_bindgen_func_elem_4220(retptr, arg0, arg1, addHeapObject(arg2));
614
617
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
615
618
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
616
619
  if (r1) {
@@ -621,8 +624,8 @@ function __wasm_bindgen_func_elem_4204(arg0, arg1, arg2) {
621
624
  }
622
625
  }
623
626
 
624
- function __wasm_bindgen_func_elem_4216(arg0, arg1, arg2, arg3) {
625
- wasm.__wasm_bindgen_func_elem_4216(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
627
+ function __wasm_bindgen_func_elem_4230(arg0, arg1, arg2, arg3) {
628
+ wasm.__wasm_bindgen_func_elem_4230(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
626
629
  }
627
630
 
628
631
  const WorkerDbFinalization = (typeof FinalizationRegistry === 'undefined')
Binary file
@@ -3,11 +3,11 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_workerdb_free: (a: number, b: number) => void;
5
5
  export const workerdb_analytics: (a: number, b: number, c: number, d: number) => void;
6
- export const workerdb_create: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint, k: number) => number;
6
+ export const workerdb_create: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
7
7
  export const workerdb_handle_message: (a: number, b: number, c: number) => void;
8
8
  export const workerdb_subscribe: (a: number, b: number) => void;
9
- export const __wasm_bindgen_func_elem_4204: (a: number, b: number, c: number, d: number) => void;
10
- export const __wasm_bindgen_func_elem_4216: (a: number, b: number, c: number, d: number) => void;
9
+ export const __wasm_bindgen_func_elem_4220: (a: number, b: number, c: number, d: number) => void;
10
+ export const __wasm_bindgen_func_elem_4230: (a: number, b: number, c: number, d: number) => void;
11
11
  export const __wbindgen_export: (a: number, b: number) => number;
12
12
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
13
13
  export const __wbindgen_export3: (a: number) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltendb-web/core",
3
- "version": "1.5.1",
3
+ "version": "1.7.0",
4
4
  "description": "MoltenDb WASM runtime — the database engine, Web Worker, and main-thread client in one package.",
5
5
  "type": "module",
6
6
  "author": "Maximilian Both <maximilian.both27@outlook.com>",