@diaryx/wasm 0.11.1-dev.193efc4 → 0.13.1-dev.9e5e63e

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
@@ -27,6 +27,25 @@ To build the WebAssembly module:
27
27
  wasm-pack build --target web --out-dir ../../apps/web/src/lib/wasm
28
28
  ```
29
29
 
30
+ ## Testing
31
+
32
+ Run browser filesystem integration tests (wasm + browser):
33
+
34
+ ```bash
35
+ nix develop -c wasm-pack test --headless --chrome crates/diaryx_wasm
36
+ ```
37
+
38
+ Current filesystem test suites live in:
39
+
40
+ - `crates/diaryx_wasm/tests/opfs_fs.rs`
41
+ - `crates/diaryx_wasm/tests/fs_trait_parity.rs`
42
+
43
+ `fs_trait_parity.rs` runs the same contract checks across:
44
+
45
+ - `OpfsFileSystem`
46
+ - `IndexedDbFileSystem`
47
+ - `FsaFileSystem`
48
+
30
49
  ## Architecture
31
50
 
32
51
  The crate provides typed class-based APIs that wrap `diaryx_core` functionality:
package/diaryx_wasm.d.ts CHANGED
@@ -278,6 +278,10 @@ export class DiaryxBackend {
278
278
  * provides a unified approach that works across all platforms.
279
279
  */
280
280
  hasNativeSync(): boolean;
281
+ /**
282
+ * Check whether CrdtFs is currently enabled.
283
+ */
284
+ isCrdtEnabled(): boolean;
281
285
  /**
282
286
  * Unsubscribe from filesystem events.
283
287
  *
@@ -325,6 +329,14 @@ export class DiaryxBackend {
325
329
  * Config keys are stored as `diaryx_*` properties.
326
330
  */
327
331
  saveConfig(config_js: any): Promise<any>;
332
+ /**
333
+ * Enable or disable the CrdtFs decorator.
334
+ *
335
+ * When disabled, file writes pass through to storage without updating CRDTs.
336
+ * CrdtFs starts disabled by default and should be enabled after sync
337
+ * handshake completes (or immediately in local-only mode).
338
+ */
339
+ setCrdtEnabled(enabled: boolean): void;
328
340
  /**
329
341
  * Write binary file.
330
342
  *
@@ -550,7 +562,6 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
550
562
  export interface InitOutput {
551
563
  readonly memory: WebAssembly.Memory;
552
564
  readonly __wbg_diaryxbackend_free: (a: number, b: number) => void;
553
- readonly __wbg_jsasyncfilesystem_free: (a: number, b: number) => void;
554
565
  readonly diaryxbackend_create: (a: number, b: number) => any;
555
566
  readonly diaryxbackend_createFromDirectoryHandle: (a: any) => [number, number, number];
556
567
  readonly diaryxbackend_createInMemory: () => [number, number, number];
@@ -563,23 +574,17 @@ export interface InitOutput {
563
574
  readonly diaryxbackend_executeJs: (a: number, b: any) => any;
564
575
  readonly diaryxbackend_getConfig: (a: number) => any;
565
576
  readonly diaryxbackend_hasNativeSync: (a: number) => number;
577
+ readonly diaryxbackend_isCrdtEnabled: (a: number) => number;
566
578
  readonly diaryxbackend_offFileSystemEvent: (a: number, b: bigint) => number;
567
579
  readonly diaryxbackend_onFileSystemEvent: (a: number, b: any) => bigint;
568
580
  readonly diaryxbackend_readBinary: (a: number, b: number, c: number) => any;
569
581
  readonly diaryxbackend_saveConfig: (a: number, b: any) => any;
582
+ readonly diaryxbackend_setCrdtEnabled: (a: number, b: number) => void;
570
583
  readonly diaryxbackend_writeBinary: (a: number, b: number, c: number, d: any) => any;
584
+ readonly __wbg_jsasyncfilesystem_free: (a: number, b: number) => void;
585
+ readonly __wbg_wasmsyncclient_free: (a: number, b: number) => void;
571
586
  readonly jsasyncfilesystem_has_callback: (a: number, b: number, c: number) => number;
572
587
  readonly jsasyncfilesystem_new: (a: any) => number;
573
- readonly init: () => void;
574
- readonly __wbg_indexeddbfilesystem_free: (a: number, b: number) => void;
575
- readonly __wbg_opfsfilesystem_free: (a: number, b: number) => void;
576
- readonly indexeddbfilesystem_create: () => any;
577
- readonly opfsfilesystem_create: () => any;
578
- readonly opfsfilesystem_createWithName: (a: number, b: number) => any;
579
- readonly now_timestamp: () => [number, number];
580
- readonly today_formatted: (a: number, b: number) => [number, number];
581
- readonly __wbg_fsafilesystem_free: (a: number, b: number) => void;
582
- readonly __wbg_wasmsyncclient_free: (a: number, b: number) => void;
583
588
  readonly wasmsyncclient_focusFiles: (a: number, b: number, c: number) => void;
584
589
  readonly wasmsyncclient_getServerUrl: (a: number) => [number, number];
585
590
  readonly wasmsyncclient_getWorkspaceId: (a: number) => [number, number];
@@ -597,13 +602,22 @@ export interface InitOutput {
597
602
  readonly wasmsyncclient_queueLocalUpdate: (a: number, b: number, c: number, d: number, e: number) => any;
598
603
  readonly wasmsyncclient_setSessionCode: (a: number, b: number, c: number) => void;
599
604
  readonly wasmsyncclient_unfocusFiles: (a: number, b: number, c: number) => void;
605
+ readonly init: () => void;
606
+ readonly __wbg_opfsfilesystem_free: (a: number, b: number) => void;
607
+ readonly opfsfilesystem_create: () => any;
608
+ readonly opfsfilesystem_createWithName: (a: number, b: number) => any;
609
+ readonly __wbg_fsafilesystem_free: (a: number, b: number) => void;
610
+ readonly __wbg_indexeddbfilesystem_free: (a: number, b: number) => void;
600
611
  readonly fsafilesystem_fromHandle: (a: any) => number;
601
- readonly wasm_bindgen__closure__destroy__h07a67dc9810a4be6: (a: number, b: number) => void;
612
+ readonly indexeddbfilesystem_create: () => any;
613
+ readonly now_timestamp: () => [number, number];
614
+ readonly today_formatted: (a: number, b: number) => [number, number];
615
+ readonly wasm_bindgen__closure__destroy__h09eeefe5853d24a4: (a: number, b: number) => void;
602
616
  readonly wasm_bindgen__closure__destroy__h54a6b627d1123dca: (a: number, b: number) => void;
603
617
  readonly wasm_bindgen__closure__destroy__h440f08373ff30a05: (a: number, b: number) => void;
604
- readonly wasm_bindgen__convert__closures_____invoke__h599d65e67049bef4: (a: number, b: number, c: any) => [number, number];
618
+ readonly wasm_bindgen__convert__closures_____invoke__hf3e5366b68ae3db8: (a: number, b: number, c: any) => [number, number];
605
619
  readonly wasm_bindgen__convert__closures_____invoke__h4e796b59e8c15a06: (a: number, b: number, c: any, d: any) => void;
606
- readonly wasm_bindgen__convert__closures_____invoke__h41872df2b19d108c: (a: number, b: number, c: any) => void;
620
+ readonly wasm_bindgen__convert__closures_____invoke__h41b1874c8dc37b1a: (a: number, b: number, c: any) => void;
607
621
  readonly wasm_bindgen__convert__closures_____invoke__h7d21c95eeb3011e3: (a: number, b: number, c: any) => void;
608
622
  readonly wasm_bindgen__convert__closures_____invoke__h359356b1e0b37746: (a: number, b: number, c: any) => void;
609
623
  readonly __wbindgen_malloc: (a: number, b: number) => number;
package/diaryx_wasm.js CHANGED
@@ -274,6 +274,14 @@ export class DiaryxBackend {
274
274
  const ret = wasm.diaryxbackend_hasNativeSync(this.__wbg_ptr);
275
275
  return ret !== 0;
276
276
  }
277
+ /**
278
+ * Check whether CrdtFs is currently enabled.
279
+ * @returns {boolean}
280
+ */
281
+ isCrdtEnabled() {
282
+ const ret = wasm.diaryxbackend_isCrdtEnabled(this.__wbg_ptr);
283
+ return ret !== 0;
284
+ }
277
285
  /**
278
286
  * Unsubscribe from filesystem events.
279
287
  *
@@ -343,6 +351,17 @@ export class DiaryxBackend {
343
351
  const ret = wasm.diaryxbackend_saveConfig(this.__wbg_ptr, config_js);
344
352
  return ret;
345
353
  }
354
+ /**
355
+ * Enable or disable the CrdtFs decorator.
356
+ *
357
+ * When disabled, file writes pass through to storage without updating CRDTs.
358
+ * CrdtFs starts disabled by default and should be enabled after sync
359
+ * handshake completes (or immediately in local-only mode).
360
+ * @param {boolean} enabled
361
+ */
362
+ setCrdtEnabled(enabled) {
363
+ wasm.diaryxbackend_setCrdtEnabled(this.__wbg_ptr, enabled);
364
+ }
346
365
  /**
347
366
  * Write binary file.
348
367
  *
@@ -1495,22 +1514,22 @@ function __wbg_get_imports() {
1495
1514
  return ret;
1496
1515
  }, arguments); },
1497
1516
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
1498
- // Cast intrinsic for `Closure(Closure { dtor_idx: 649, function: Function { arguments: [NamedExternref("Event")], shim_idx: 652, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
1499
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h07a67dc9810a4be6, wasm_bindgen__convert__closures_____invoke__h599d65e67049bef4);
1517
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 573, function: Function { arguments: [NamedExternref("Event")], shim_idx: 574, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
1518
+ const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h09eeefe5853d24a4, wasm_bindgen__convert__closures_____invoke__hf3e5366b68ae3db8);
1500
1519
  return ret;
1501
1520
  },
1502
1521
  __wbindgen_cast_0000000000000002: function(arg0, arg1) {
1503
- // Cast intrinsic for `Closure(Closure { dtor_idx: 649, function: Function { arguments: [NamedExternref("IDBVersionChangeEvent")], shim_idx: 650, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1504
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h07a67dc9810a4be6, wasm_bindgen__convert__closures_____invoke__h41872df2b19d108c);
1522
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 573, function: Function { arguments: [NamedExternref("IDBVersionChangeEvent")], shim_idx: 575, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1523
+ const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h09eeefe5853d24a4, wasm_bindgen__convert__closures_____invoke__h41b1874c8dc37b1a);
1505
1524
  return ret;
1506
1525
  },
1507
1526
  __wbindgen_cast_0000000000000003: function(arg0, arg1) {
1508
- // Cast intrinsic for `Closure(Closure { dtor_idx: 749, function: Function { arguments: [NamedExternref("Event")], shim_idx: 750, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1527
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 778, function: Function { arguments: [NamedExternref("Event")], shim_idx: 779, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1509
1528
  const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h54a6b627d1123dca, wasm_bindgen__convert__closures_____invoke__h7d21c95eeb3011e3);
1510
1529
  return ret;
1511
1530
  },
1512
1531
  __wbindgen_cast_0000000000000004: function(arg0, arg1) {
1513
- // Cast intrinsic for `Closure(Closure { dtor_idx: 775, function: Function { arguments: [Externref], shim_idx: 776, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1532
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 804, function: Function { arguments: [Externref], shim_idx: 805, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1514
1533
  const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h440f08373ff30a05, wasm_bindgen__convert__closures_____invoke__h359356b1e0b37746);
1515
1534
  return ret;
1516
1535
  },
@@ -1555,8 +1574,8 @@ function __wbg_get_imports() {
1555
1574
  };
1556
1575
  }
1557
1576
 
1558
- function wasm_bindgen__convert__closures_____invoke__h41872df2b19d108c(arg0, arg1, arg2) {
1559
- wasm.wasm_bindgen__convert__closures_____invoke__h41872df2b19d108c(arg0, arg1, arg2);
1577
+ function wasm_bindgen__convert__closures_____invoke__h41b1874c8dc37b1a(arg0, arg1, arg2) {
1578
+ wasm.wasm_bindgen__convert__closures_____invoke__h41b1874c8dc37b1a(arg0, arg1, arg2);
1560
1579
  }
1561
1580
 
1562
1581
  function wasm_bindgen__convert__closures_____invoke__h7d21c95eeb3011e3(arg0, arg1, arg2) {
@@ -1567,8 +1586,8 @@ function wasm_bindgen__convert__closures_____invoke__h359356b1e0b37746(arg0, arg
1567
1586
  wasm.wasm_bindgen__convert__closures_____invoke__h359356b1e0b37746(arg0, arg1, arg2);
1568
1587
  }
1569
1588
 
1570
- function wasm_bindgen__convert__closures_____invoke__h599d65e67049bef4(arg0, arg1, arg2) {
1571
- const ret = wasm.wasm_bindgen__convert__closures_____invoke__h599d65e67049bef4(arg0, arg1, arg2);
1589
+ function wasm_bindgen__convert__closures_____invoke__hf3e5366b68ae3db8(arg0, arg1, arg2) {
1590
+ const ret = wasm.wasm_bindgen__convert__closures_____invoke__hf3e5366b68ae3db8(arg0, arg1, arg2);
1572
1591
  if (ret[1]) {
1573
1592
  throw takeFromExternrefTable0(ret[0]);
1574
1593
  }
@@ -2,7 +2,6 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_diaryxbackend_free: (a: number, b: number) => void;
5
- export const __wbg_jsasyncfilesystem_free: (a: number, b: number) => void;
6
5
  export const diaryxbackend_create: (a: number, b: number) => any;
7
6
  export const diaryxbackend_createFromDirectoryHandle: (a: any) => [number, number, number];
8
7
  export const diaryxbackend_createInMemory: () => [number, number, number];
@@ -15,23 +14,17 @@ export const diaryxbackend_execute: (a: number, b: number, c: number) => any;
15
14
  export const diaryxbackend_executeJs: (a: number, b: any) => any;
16
15
  export const diaryxbackend_getConfig: (a: number) => any;
17
16
  export const diaryxbackend_hasNativeSync: (a: number) => number;
17
+ export const diaryxbackend_isCrdtEnabled: (a: number) => number;
18
18
  export const diaryxbackend_offFileSystemEvent: (a: number, b: bigint) => number;
19
19
  export const diaryxbackend_onFileSystemEvent: (a: number, b: any) => bigint;
20
20
  export const diaryxbackend_readBinary: (a: number, b: number, c: number) => any;
21
21
  export const diaryxbackend_saveConfig: (a: number, b: any) => any;
22
+ export const diaryxbackend_setCrdtEnabled: (a: number, b: number) => void;
22
23
  export const diaryxbackend_writeBinary: (a: number, b: number, c: number, d: any) => any;
24
+ export const __wbg_jsasyncfilesystem_free: (a: number, b: number) => void;
25
+ export const __wbg_wasmsyncclient_free: (a: number, b: number) => void;
23
26
  export const jsasyncfilesystem_has_callback: (a: number, b: number, c: number) => number;
24
27
  export const jsasyncfilesystem_new: (a: any) => number;
25
- export const init: () => void;
26
- export const __wbg_indexeddbfilesystem_free: (a: number, b: number) => void;
27
- export const __wbg_opfsfilesystem_free: (a: number, b: number) => void;
28
- export const indexeddbfilesystem_create: () => any;
29
- export const opfsfilesystem_create: () => any;
30
- export const opfsfilesystem_createWithName: (a: number, b: number) => any;
31
- export const now_timestamp: () => [number, number];
32
- export const today_formatted: (a: number, b: number) => [number, number];
33
- export const __wbg_fsafilesystem_free: (a: number, b: number) => void;
34
- export const __wbg_wasmsyncclient_free: (a: number, b: number) => void;
35
28
  export const wasmsyncclient_focusFiles: (a: number, b: number, c: number) => void;
36
29
  export const wasmsyncclient_getServerUrl: (a: number) => [number, number];
37
30
  export const wasmsyncclient_getWorkspaceId: (a: number) => [number, number];
@@ -49,13 +42,22 @@ export const wasmsyncclient_pollOutgoingText: (a: number) => [number, number];
49
42
  export const wasmsyncclient_queueLocalUpdate: (a: number, b: number, c: number, d: number, e: number) => any;
50
43
  export const wasmsyncclient_setSessionCode: (a: number, b: number, c: number) => void;
51
44
  export const wasmsyncclient_unfocusFiles: (a: number, b: number, c: number) => void;
45
+ export const init: () => void;
46
+ export const __wbg_opfsfilesystem_free: (a: number, b: number) => void;
47
+ export const opfsfilesystem_create: () => any;
48
+ export const opfsfilesystem_createWithName: (a: number, b: number) => any;
49
+ export const __wbg_fsafilesystem_free: (a: number, b: number) => void;
50
+ export const __wbg_indexeddbfilesystem_free: (a: number, b: number) => void;
52
51
  export const fsafilesystem_fromHandle: (a: any) => number;
53
- export const wasm_bindgen__closure__destroy__h07a67dc9810a4be6: (a: number, b: number) => void;
52
+ export const indexeddbfilesystem_create: () => any;
53
+ export const now_timestamp: () => [number, number];
54
+ export const today_formatted: (a: number, b: number) => [number, number];
55
+ export const wasm_bindgen__closure__destroy__h09eeefe5853d24a4: (a: number, b: number) => void;
54
56
  export const wasm_bindgen__closure__destroy__h54a6b627d1123dca: (a: number, b: number) => void;
55
57
  export const wasm_bindgen__closure__destroy__h440f08373ff30a05: (a: number, b: number) => void;
56
- export const wasm_bindgen__convert__closures_____invoke__h599d65e67049bef4: (a: number, b: number, c: any) => [number, number];
58
+ export const wasm_bindgen__convert__closures_____invoke__hf3e5366b68ae3db8: (a: number, b: number, c: any) => [number, number];
57
59
  export const wasm_bindgen__convert__closures_____invoke__h4e796b59e8c15a06: (a: number, b: number, c: any, d: any) => void;
58
- export const wasm_bindgen__convert__closures_____invoke__h41872df2b19d108c: (a: number, b: number, c: any) => void;
60
+ export const wasm_bindgen__convert__closures_____invoke__h41b1874c8dc37b1a: (a: number, b: number, c: any) => void;
59
61
  export const wasm_bindgen__convert__closures_____invoke__h7d21c95eeb3011e3: (a: number, b: number, c: any) => void;
60
62
  export const wasm_bindgen__convert__closures_____invoke__h359356b1e0b37746: (a: number, b: number, c: any) => void;
61
63
  export const __wbindgen_malloc: (a: number, b: number) => number;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@diaryx/wasm",
3
3
  "type": "module",
4
4
  "description": "WebAssembly bindings for Diaryx core functionality",
5
- "version": "0.11.1-dev.193efc4",
5
+ "version": "0.13.1-dev.9e5e63e",
6
6
  "license": "SEE LICENSE IN ../../LICENSE.md",
7
7
  "repository": {
8
8
  "type": "git",