@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 +19 -0
- package/diaryx_wasm.d.ts +28 -14
- package/diaryx_wasm.js +29 -10
- package/diaryx_wasm_bg.wasm.d.ts +16 -14
- package/package.json +1 -1
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
|
|
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
|
|
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
|
|
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:
|
|
1499
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
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:
|
|
1504
|
-
const ret = makeMutClosure(arg0, arg1, wasm.
|
|
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:
|
|
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:
|
|
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
|
|
1559
|
-
wasm.
|
|
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
|
|
1571
|
-
const ret = wasm.
|
|
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
|
}
|
package/diaryx_wasm_bg.wasm.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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.
|
|
5
|
+
"version": "0.13.1-dev.9e5e63e",
|
|
6
6
|
"license": "SEE LICENSE IN ../../LICENSE.md",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|