@automerge/subduction 0.9.0 → 0.10.1

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 (36) hide show
  1. package/dist/cjs/wasm-base64.cjs +1 -1
  2. package/dist/cjs/web-bindings.cjs +232 -85
  3. package/dist/cjs/web.cjs +233 -86
  4. package/dist/esm/wasm-base64.js +1 -1
  5. package/dist/iife/index.js +232 -86
  6. package/dist/index.d.ts +83 -11
  7. package/dist/subduction.wasm +0 -0
  8. package/dist/wasm_bindgen/bundler/snippets/subduction_wasm-ec51bcf335db35bd/inline0.js +8 -0
  9. package/dist/wasm_bindgen/bundler/subduction_wasm.d.ts +83 -11
  10. package/dist/wasm_bindgen/bundler/subduction_wasm.js +1 -1
  11. package/dist/wasm_bindgen/bundler/subduction_wasm_bg.js +212 -83
  12. package/dist/wasm_bindgen/bundler/subduction_wasm_bg.wasm +0 -0
  13. package/dist/wasm_bindgen/bundler/subduction_wasm_bg.wasm.d.ts +17 -13
  14. package/dist/wasm_bindgen/nodejs/snippets/subduction_wasm-ec51bcf335db35bd/inline0.js +8 -0
  15. package/dist/wasm_bindgen/nodejs/subduction_wasm.cjs +217 -85
  16. package/dist/wasm_bindgen/nodejs/subduction_wasm.d.ts +83 -11
  17. package/dist/wasm_bindgen/nodejs/subduction_wasm_bg.wasm +0 -0
  18. package/dist/wasm_bindgen/nodejs/subduction_wasm_bg.wasm.d.ts +17 -13
  19. package/dist/wasm_bindgen/web/snippets/subduction_wasm-ec51bcf335db35bd/inline0.js +8 -0
  20. package/dist/wasm_bindgen/web/subduction_wasm.d.ts +100 -24
  21. package/dist/wasm_bindgen/web/subduction_wasm.js +216 -85
  22. package/dist/wasm_bindgen/web/subduction_wasm_bg.wasm +0 -0
  23. package/dist/wasm_bindgen/web/subduction_wasm_bg.wasm.d.ts +17 -13
  24. package/package.json +3 -2
  25. /package/dist/wasm_bindgen/bundler/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline0.js +0 -0
  26. /package/dist/wasm_bindgen/bundler/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline1.js +0 -0
  27. /package/dist/wasm_bindgen/bundler/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline2.js +0 -0
  28. /package/dist/wasm_bindgen/bundler/snippets/{subduction_wasm-0ed7fd66cebca59f/inline0.js → subduction_wasm-ec51bcf335db35bd/inline1.js} +0 -0
  29. /package/dist/wasm_bindgen/nodejs/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline0.js +0 -0
  30. /package/dist/wasm_bindgen/nodejs/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline1.js +0 -0
  31. /package/dist/wasm_bindgen/nodejs/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline2.js +0 -0
  32. /package/dist/wasm_bindgen/nodejs/snippets/{subduction_wasm-0ed7fd66cebca59f/inline0.js → subduction_wasm-ec51bcf335db35bd/inline1.js} +0 -0
  33. /package/dist/wasm_bindgen/web/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline0.js +0 -0
  34. /package/dist/wasm_bindgen/web/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline1.js +0 -0
  35. /package/dist/wasm_bindgen/web/snippets/{sedimentree_wasm-1de4a01519b0f11f → sedimentree_wasm-75027ecce41278de}/inline2.js +0 -0
  36. /package/dist/wasm_bindgen/web/snippets/{subduction_wasm-0ed7fd66cebca59f/inline0.js → subduction_wasm-ec51bcf335db35bd/inline1.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  /* @ts-self-types="./subduction_wasm.d.ts" */
2
- const { tryIntoJsSedimentreeIdsArray } = require(String.raw`./snippets/sedimentree_wasm-1de4a01519b0f11f/inline2.js`);
2
+ const { tryIntoJsSedimentreeIdsArray } = require(String.raw`./snippets/sedimentree_wasm-75027ecce41278de/inline2.js`);
3
3
 
4
4
  /**
5
5
  * An authenticated HTTP long-poll transport.
@@ -2439,6 +2439,10 @@ class Subduction {
2439
2439
  * When set, clients can connect without knowing the server's peer ID.
2440
2440
  * * `hash_metric_override` - Optional custom depth metric function
2441
2441
  * * `max_pending_blob_requests` - Optional maximum number of pending blob requests (default: 10,000)
2442
+ * * `policy` - Optional connection/storage authorization policy.
2443
+ * Defaults to allow-all.
2444
+ * * `ephemeral_policy` - Optional ephemeral message authorization policy.
2445
+ * Defaults to allow-all.
2442
2446
  *
2443
2447
  * # Panics
2444
2448
  *
@@ -2453,15 +2457,16 @@ class Subduction {
2453
2457
  * @param {string | null} [service_name]
2454
2458
  * @param {(digest: Digest) => Depth | null} [hash_metric_override]
2455
2459
  * @param {number | null} [max_pending_blob_requests]
2456
- * @param {any | null} [policy]
2460
+ * @param {Policy | null} [policy]
2461
+ * @param {EphemeralPolicy | null} [ephemeral_policy]
2457
2462
  * @param {Function | null} [on_remote_heads]
2458
2463
  * @param {Function | null} [on_ephemeral]
2459
2464
  * @returns {Promise<Subduction>}
2460
2465
  */
2461
- static hydrate(signer, storage, service_name, hash_metric_override, max_pending_blob_requests, policy, on_remote_heads, on_ephemeral) {
2466
+ static hydrate(signer, storage, service_name, hash_metric_override, max_pending_blob_requests, policy, ephemeral_policy, on_remote_heads, on_ephemeral) {
2462
2467
  var ptr0 = isLikeNone(service_name) ? 0 : passStringToWasm0(service_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2463
2468
  var len0 = WASM_VECTOR_LEN;
2464
- const ret = wasm.subduction_hydrate(signer, storage, ptr0, len0, isLikeNone(hash_metric_override) ? 0 : addToExternrefTable0(hash_metric_override), isLikeNone(max_pending_blob_requests) ? 0x100000001 : (max_pending_blob_requests) >>> 0, isLikeNone(policy) ? 0 : addToExternrefTable0(policy), isLikeNone(on_remote_heads) ? 0 : addToExternrefTable0(on_remote_heads), isLikeNone(on_ephemeral) ? 0 : addToExternrefTable0(on_ephemeral));
2469
+ const ret = wasm.subduction_hydrate(signer, storage, ptr0, len0, isLikeNone(hash_metric_override) ? 0 : addToExternrefTable0(hash_metric_override), isLikeNone(max_pending_blob_requests) ? 0x100000001 : (max_pending_blob_requests) >>> 0, isLikeNone(policy) ? 0 : addToExternrefTable0(policy), isLikeNone(ephemeral_policy) ? 0 : addToExternrefTable0(ephemeral_policy), isLikeNone(on_remote_heads) ? 0 : addToExternrefTable0(on_remote_heads), isLikeNone(on_ephemeral) ? 0 : addToExternrefTable0(on_ephemeral));
2465
2470
  return ret;
2466
2471
  }
2467
2472
  /**
@@ -2496,9 +2501,10 @@ class Subduction {
2496
2501
  * When set, clients can connect without knowing the server's peer ID.
2497
2502
  * * `hash_metric_override` - Optional custom depth metric function
2498
2503
  * * `max_pending_blob_requests` - Optional maximum number of pending blob requests (default: 10,000)
2499
- * * `policy` - Optional JS object implementing authorization.
2500
- * Must have `authorizeConnect(...)`, `authorizeFetch(...)`, `authorizePut(...)`,
2501
- * `filterAuthorizedFetch(...)`. Defaults to allow-all.
2504
+ * * `policy` - Optional connection/storage authorization policy.
2505
+ * Defaults to allow-all.
2506
+ * * `ephemeral_policy` - Optional ephemeral message authorization policy.
2507
+ * Defaults to allow-all.
2502
2508
  *
2503
2509
  * # Panics
2504
2510
  *
@@ -2509,32 +2515,37 @@ class Subduction {
2509
2515
  * @param {string | null} [service_name]
2510
2516
  * @param {(digest: Digest) => Depth | null} [hash_metric_override]
2511
2517
  * @param {number | null} [max_pending_blob_requests]
2512
- * @param {any | null} [policy]
2518
+ * @param {Policy | null} [policy]
2519
+ * @param {EphemeralPolicy | null} [ephemeral_policy]
2513
2520
  * @param {Function | null} [on_remote_heads]
2514
2521
  * @param {Function | null} [on_ephemeral]
2515
2522
  */
2516
- constructor(signer, storage, service_name, hash_metric_override, max_pending_blob_requests, policy, on_remote_heads, on_ephemeral) {
2523
+ constructor(signer, storage, service_name, hash_metric_override, max_pending_blob_requests, policy, ephemeral_policy, on_remote_heads, on_ephemeral) {
2517
2524
  var ptr0 = isLikeNone(service_name) ? 0 : passStringToWasm0(service_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
2518
2525
  var len0 = WASM_VECTOR_LEN;
2519
- const ret = wasm.subduction_new(signer, storage, ptr0, len0, isLikeNone(hash_metric_override) ? 0 : addToExternrefTable0(hash_metric_override), isLikeNone(max_pending_blob_requests) ? 0x100000001 : (max_pending_blob_requests) >>> 0, isLikeNone(policy) ? 0 : addToExternrefTable0(policy), isLikeNone(on_remote_heads) ? 0 : addToExternrefTable0(on_remote_heads), isLikeNone(on_ephemeral) ? 0 : addToExternrefTable0(on_ephemeral));
2526
+ const ret = wasm.subduction_new(signer, storage, ptr0, len0, isLikeNone(hash_metric_override) ? 0 : addToExternrefTable0(hash_metric_override), isLikeNone(max_pending_blob_requests) ? 0x100000001 : (max_pending_blob_requests) >>> 0, isLikeNone(policy) ? 0 : addToExternrefTable0(policy), isLikeNone(ephemeral_policy) ? 0 : addToExternrefTable0(ephemeral_policy), isLikeNone(on_remote_heads) ? 0 : addToExternrefTable0(on_remote_heads), isLikeNone(on_ephemeral) ? 0 : addToExternrefTable0(on_ephemeral));
2520
2527
  this.__wbg_ptr = ret >>> 0;
2521
2528
  SubductionFinalization.register(this, this.__wbg_ptr, this);
2522
2529
  return this;
2523
2530
  }
2524
2531
  /**
2525
- * Publish an ephemeral message to all subscribers of a sedimentree.
2532
+ * Publish an ephemeral message to all subscribers of a topic.
2526
2533
  *
2527
2534
  * The payload is opaque bytes — encoding is the caller's responsibility.
2528
2535
  * Messages are fire-and-forget; delivery is best-effort.
2529
- * @param {SedimentreeId} id
2536
+ *
2537
+ * # Panics
2538
+ *
2539
+ * Panics if the platform's random number generator fails.
2540
+ * @param {Topic} topic
2530
2541
  * @param {Uint8Array} payload
2531
2542
  * @returns {Promise<void>}
2532
2543
  */
2533
- publishEphemeral(id, payload) {
2534
- _assertClass(id, SedimentreeId);
2544
+ publishEphemeral(topic, payload) {
2545
+ _assertClass(topic, Topic);
2535
2546
  const ptr0 = passArray8ToWasm0(payload, wasm.__wbindgen_export);
2536
2547
  const len0 = WASM_VECTOR_LEN;
2537
- const ret = wasm.subduction_publishEphemeral(this.__wbg_ptr, id.__wbg_ptr, ptr0, len0);
2548
+ const ret = wasm.subduction_publishEphemeral(this.__wbg_ptr, topic.__wbg_ptr, ptr0, len0);
2538
2549
  return ret;
2539
2550
  }
2540
2551
  /**
@@ -2581,13 +2592,13 @@ class Subduction {
2581
2592
  return ret;
2582
2593
  }
2583
2594
  /**
2584
- * Subscribe to ephemeral messages for the given sedimentree IDs
2595
+ * Subscribe to ephemeral messages for the given topics
2585
2596
  * from all connected peers.
2586
- * @param {SedimentreeId[]} ids
2597
+ * @param {Topic[]} topics
2587
2598
  * @returns {Promise<void>}
2588
2599
  */
2589
- subscribeEphemeral(ids) {
2590
- const ptr0 = passArrayJsValueToWasm0(ids, wasm.__wbindgen_export);
2600
+ subscribeEphemeral(topics) {
2601
+ const ptr0 = passArrayJsValueToWasm0(topics, wasm.__wbindgen_export);
2591
2602
  const len0 = WASM_VECTOR_LEN;
2592
2603
  const ret = wasm.subduction_subscribeEphemeral(this.__wbg_ptr, ptr0, len0);
2593
2604
  return ret;
@@ -2640,13 +2651,13 @@ class Subduction {
2640
2651
  return ret;
2641
2652
  }
2642
2653
  /**
2643
- * Unsubscribe from ephemeral messages for the given sedimentree IDs
2654
+ * Unsubscribe from ephemeral messages for the given topics
2644
2655
  * from all connected peers.
2645
- * @param {SedimentreeId[]} ids
2656
+ * @param {Topic[]} topics
2646
2657
  * @returns {Promise<void>}
2647
2658
  */
2648
- unsubscribeEphemeral(ids) {
2649
- const ptr0 = passArrayJsValueToWasm0(ids, wasm.__wbindgen_export);
2659
+ unsubscribeEphemeral(topics) {
2660
+ const ptr0 = passArrayJsValueToWasm0(topics, wasm.__wbindgen_export);
2650
2661
  const len0 = WASM_VECTOR_LEN;
2651
2662
  const ret = wasm.subduction_unsubscribeEphemeral(this.__wbg_ptr, ptr0, len0);
2652
2663
  return ret;
@@ -3267,6 +3278,87 @@ class SyncStats {
3267
3278
  if (Symbol.dispose) SyncStats.prototype[Symbol.dispose] = SyncStats.prototype.free;
3268
3279
  exports.SyncStats = SyncStats;
3269
3280
 
3281
+ /**
3282
+ * A Wasm wrapper around the ephemeral [`Topic`] type.
3283
+ *
3284
+ * Topics are opaque 32-byte identifiers for ephemeral pubsub channels.
3285
+ * A [`SedimentreeId`] can be used as a topic, but topics are not
3286
+ * limited to sedimentrees.
3287
+ *
3288
+ * [`SedimentreeId`]: sedimentree_core::id::SedimentreeId
3289
+ */
3290
+ class Topic {
3291
+ static __wrap(ptr) {
3292
+ ptr = ptr >>> 0;
3293
+ const obj = Object.create(Topic.prototype);
3294
+ obj.__wbg_ptr = ptr;
3295
+ TopicFinalization.register(obj, obj.__wbg_ptr, obj);
3296
+ return obj;
3297
+ }
3298
+ static __unwrap(jsValue) {
3299
+ if (!(jsValue instanceof Topic)) {
3300
+ return 0;
3301
+ }
3302
+ return jsValue.__destroy_into_raw();
3303
+ }
3304
+ __destroy_into_raw() {
3305
+ const ptr = this.__wbg_ptr;
3306
+ this.__wbg_ptr = 0;
3307
+ TopicFinalization.unregister(this);
3308
+ return ptr;
3309
+ }
3310
+ free() {
3311
+ const ptr = this.__destroy_into_raw();
3312
+ wasm.__wbg_topic_free(ptr, 0);
3313
+ }
3314
+ /**
3315
+ * Create a topic from a 32-byte array.
3316
+ *
3317
+ * # Errors
3318
+ *
3319
+ * Returns an error if the provided byte array is not exactly 32 bytes.
3320
+ * @param {Uint8Array} bytes
3321
+ * @returns {Topic}
3322
+ */
3323
+ static fromBytes(bytes) {
3324
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
3325
+ const len0 = WASM_VECTOR_LEN;
3326
+ const ret = wasm.topic_fromBytes(ptr0, len0);
3327
+ if (ret[2]) {
3328
+ throw takeFromExternrefTable0(ret[1]);
3329
+ }
3330
+ return Topic.__wrap(ret[0]);
3331
+ }
3332
+ /**
3333
+ * Returns the raw 32 bytes of this topic.
3334
+ * @returns {Uint8Array}
3335
+ */
3336
+ toBytes() {
3337
+ const ret = wasm.topic_toBytes(this.__wbg_ptr);
3338
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
3339
+ wasm.__wbindgen_export5(ret[0], ret[1] * 1, 1);
3340
+ return v1;
3341
+ }
3342
+ /**
3343
+ * Returns a shortened hex prefix representation (first 4 bytes + `…`).
3344
+ * @returns {string}
3345
+ */
3346
+ toString() {
3347
+ let deferred1_0;
3348
+ let deferred1_1;
3349
+ try {
3350
+ const ret = wasm.topic_toString(this.__wbg_ptr);
3351
+ deferred1_0 = ret[0];
3352
+ deferred1_1 = ret[1];
3353
+ return getStringFromWasm0(ret[0], ret[1]);
3354
+ } finally {
3355
+ wasm.__wbindgen_export5(deferred1_0, deferred1_1, 1);
3356
+ }
3357
+ }
3358
+ }
3359
+ if (Symbol.dispose) Topic.prototype[Symbol.dispose] = Topic.prototype.free;
3360
+ exports.Topic = Topic;
3361
+
3270
3362
  /**
3271
3363
  * An Ed25519 signer using the browser's `WebCrypto` API.
3272
3364
  *
@@ -3375,42 +3467,43 @@ function start() {
3375
3467
  wasm.start();
3376
3468
  }
3377
3469
  exports.start = start;
3378
- const import1 = require("./snippets/subduction_wasm-0ed7fd66cebca59f/inline0.js");
3470
+ const import1 = require("./snippets/subduction_wasm-ec51bcf335db35bd/inline0.js");
3471
+ const import2 = require("./snippets/subduction_wasm-ec51bcf335db35bd/inline1.js");
3379
3472
 
3380
3473
  function __wbg_get_imports() {
3381
3474
  const import0 = {
3382
3475
  __proto__: null,
3383
- __wbg___wasm_refgen_toWasmCommitWithBlob_4c1dc5cc453af7eb: function(arg0) {
3476
+ __wbg___wasm_refgen_toWasmCommitWithBlob_fcbd230cf952f128: function(arg0) {
3384
3477
  const ret = arg0.__wasm_refgen_toWasmCommitWithBlob();
3385
3478
  _assertClass(ret, CommitWithBlob);
3386
3479
  var ptr1 = ret.__destroy_into_raw();
3387
3480
  return ptr1;
3388
3481
  },
3389
- __wbg___wasm_refgen_toWasmDepth_e11bce6176c8257e: function(arg0) {
3482
+ __wbg___wasm_refgen_toWasmDepth_4f8de5b877457c3d: function(arg0) {
3390
3483
  const ret = arg0.__wasm_refgen_toWasmDepth();
3391
3484
  _assertClass(ret, Depth);
3392
3485
  var ptr1 = ret.__destroy_into_raw();
3393
3486
  return ptr1;
3394
3487
  },
3395
- __wbg___wasm_refgen_toWasmDigest_86d449f5dc99fc6a: function(arg0) {
3488
+ __wbg___wasm_refgen_toWasmDigest_d0fbca90d003e5b2: function(arg0) {
3396
3489
  const ret = arg0.__wasm_refgen_toWasmDigest();
3397
3490
  _assertClass(ret, Digest);
3398
3491
  var ptr1 = ret.__destroy_into_raw();
3399
3492
  return ptr1;
3400
3493
  },
3401
- __wbg___wasm_refgen_toWasmFragmentWithBlob_d7450dc251166eea: function(arg0) {
3494
+ __wbg___wasm_refgen_toWasmFragmentWithBlob_814bb2b3d862ac90: function(arg0) {
3402
3495
  const ret = arg0.__wasm_refgen_toWasmFragmentWithBlob();
3403
3496
  _assertClass(ret, FragmentWithBlob);
3404
3497
  var ptr1 = ret.__destroy_into_raw();
3405
3498
  return ptr1;
3406
3499
  },
3407
- __wbg___wasm_refgen_toWasmFragment_03b5e19d20693b4f: function(arg0) {
3500
+ __wbg___wasm_refgen_toWasmFragment_32ab33a0a1cf967b: function(arg0) {
3408
3501
  const ret = arg0.__wasm_refgen_toWasmFragment();
3409
3502
  _assertClass(ret, Fragment);
3410
3503
  var ptr1 = ret.__destroy_into_raw();
3411
3504
  return ptr1;
3412
3505
  },
3413
- __wbg___wasm_refgen_toWasmLooseCommit_bc6f015053af2dd7: function(arg0) {
3506
+ __wbg___wasm_refgen_toWasmLooseCommit_6deda612421ca7e6: function(arg0) {
3414
3507
  const ret = arg0.__wasm_refgen_toWasmLooseCommit();
3415
3508
  _assertClass(ret, LooseCommit);
3416
3509
  var ptr1 = ret.__destroy_into_raw();
@@ -3484,16 +3577,24 @@ function __wbg_get_imports() {
3484
3577
  const ret = AuthenticatedWebSocket.__wrap(arg0);
3485
3578
  return ret;
3486
3579
  },
3487
- __wbg_authorizeConnect_0e61e98d289a37c9: function() { return handleError(function (arg0, arg1) {
3488
- const ret = arg0.authorizeConnect(arg1);
3580
+ __wbg_authorizeConnect_8e2609308bbbbcfd: function() { return handleError(function (arg0, arg1) {
3581
+ const ret = arg0.authorizeConnect(PeerId.__wrap(arg1));
3582
+ return ret;
3583
+ }, arguments); },
3584
+ __wbg_authorizeFetch_b7bcc4e437112c73: function() { return handleError(function (arg0, arg1, arg2) {
3585
+ const ret = arg0.authorizeFetch(PeerId.__wrap(arg1), SedimentreeId.__wrap(arg2));
3489
3586
  return ret;
3490
3587
  }, arguments); },
3491
- __wbg_authorizeFetch_88703389e9c295d0: function() { return handleError(function (arg0, arg1, arg2) {
3492
- const ret = arg0.authorizeFetch(arg1, arg2);
3588
+ __wbg_authorizePublish_7e546fc3d8103532: function() { return handleError(function (arg0, arg1, arg2) {
3589
+ const ret = arg0.authorizePublish(PeerId.__wrap(arg1), Topic.__wrap(arg2));
3493
3590
  return ret;
3494
3591
  }, arguments); },
3495
- __wbg_authorizePut_dab9270462803778: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3496
- const ret = arg0.authorizePut(arg1, arg2, arg3);
3592
+ __wbg_authorizePut_ba5a5e36c9e9bbfa: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3593
+ const ret = arg0.authorizePut(PeerId.__wrap(arg1), PeerId.__wrap(arg2), SedimentreeId.__wrap(arg3));
3594
+ return ret;
3595
+ }, arguments); },
3596
+ __wbg_authorizeSubscribe_34f5ba6f23bab853: function() { return handleError(function (arg0, arg1, arg2) {
3597
+ const ret = arg0.authorizeSubscribe(PeerId.__wrap(arg1), Topic.__wrap(arg2));
3497
3598
  return ret;
3498
3599
  }, arguments); },
3499
3600
  __wbg_buffer_60b8043cd926067d: function(arg0) {
@@ -3512,15 +3613,15 @@ function __wbg_get_imports() {
3512
3613
  const ret = arg0.call(arg1, arg2, arg3, arg4);
3513
3614
  return ret;
3514
3615
  }, arguments); },
3515
- __wbg_close_574e2788efd7bb53: function(arg0) {
3516
- arg0.close();
3517
- },
3518
3616
  __wbg_close_af26905c832a88cb: function() { return handleError(function (arg0) {
3519
3617
  arg0.close();
3520
3618
  }, arguments); },
3521
3619
  __wbg_close_cbf870bdad0aad99: function(arg0) {
3522
3620
  arg0.close();
3523
3621
  },
3622
+ __wbg_close_f85b3643ad9ed8d4: function(arg0) {
3623
+ arg0.close();
3624
+ },
3524
3625
  __wbg_commitwithblob_new: function(arg0) {
3525
3626
  const ret = CommitWithBlob.__wrap(arg0);
3526
3627
  return ret;
@@ -3541,11 +3642,11 @@ function __wbg_get_imports() {
3541
3642
  const ret = arg0.data;
3542
3643
  return ret;
3543
3644
  },
3544
- __wbg_deleteAllCommits_b0197e590f7fce60: function(arg0, arg1) {
3645
+ __wbg_deleteAllCommits_87e95e34aba169ea: function(arg0, arg1) {
3545
3646
  const ret = arg0.deleteAllCommits(arg1);
3546
3647
  return ret;
3547
3648
  },
3548
- __wbg_deleteAllFragments_f884845698f5afb7: function(arg0, arg1) {
3649
+ __wbg_deleteAllFragments_b5a40f8b94689ee5: function(arg0, arg1) {
3549
3650
  const ret = arg0.deleteAllFragments(arg1);
3550
3651
  return ret;
3551
3652
  },
@@ -3557,7 +3658,7 @@ function __wbg_get_imports() {
3557
3658
  const ret = Digest.__unwrap(arg0);
3558
3659
  return ret;
3559
3660
  },
3560
- __wbg_disconnect_849aae59f5879e45: function(arg0) {
3661
+ __wbg_disconnect_91312bb506e834b1: function(arg0) {
3561
3662
  const ret = arg0.disconnect();
3562
3663
  return ret;
3563
3664
  },
@@ -3584,8 +3685,16 @@ function __wbg_get_imports() {
3584
3685
  const ret = arg0.fetch(arg1);
3585
3686
  return ret;
3586
3687
  },
3587
- __wbg_filterAuthorizedFetch_0d6450fa919b271d: function() { return handleError(function (arg0, arg1, arg2) {
3588
- const ret = arg0.filterAuthorizedFetch(arg1, arg2);
3688
+ __wbg_filterAuthorizedFetch_a647f13dc33948f1: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3689
+ var v0 = getArrayJsValueFromWasm0(arg2, arg3).slice();
3690
+ wasm.__wbindgen_export5(arg2, arg3 * 4, 4);
3691
+ const ret = arg0.filterAuthorizedFetch(PeerId.__wrap(arg1), v0);
3692
+ return ret;
3693
+ }, arguments); },
3694
+ __wbg_filterAuthorizedSubscribers_34bdeaaac0eb31a5: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3695
+ var v0 = getArrayJsValueFromWasm0(arg2, arg3).slice();
3696
+ wasm.__wbindgen_export5(arg2, arg3 * 4, 4);
3697
+ const ret = arg0.filterAuthorizedSubscribers(Topic.__wrap(arg1), v0);
3589
3698
  return ret;
3590
3699
  }, arguments); },
3591
3700
  __wbg_fragment_new: function(arg0) {
@@ -3776,15 +3885,15 @@ function __wbg_get_imports() {
3776
3885
  const ret = arg0.length;
3777
3886
  return ret;
3778
3887
  },
3779
- __wbg_loadAllCommits_0e97df07ed213aa0: function(arg0, arg1) {
3888
+ __wbg_loadAllCommits_1b040f2bd61f63de: function(arg0, arg1) {
3780
3889
  const ret = arg0.loadAllCommits(arg1);
3781
3890
  return ret;
3782
3891
  },
3783
- __wbg_loadAllFragments_12ecf8f9bd0e0b58: function(arg0, arg1) {
3892
+ __wbg_loadAllFragments_cf081afbfee53965: function(arg0, arg1) {
3784
3893
  const ret = arg0.loadAllFragments(arg1);
3785
3894
  return ret;
3786
3895
  },
3787
- __wbg_loadAllSedimentreeIds_1a18451ef1f8e795: function(arg0) {
3896
+ __wbg_loadAllSedimentreeIds_a9046bfade082517: function(arg0) {
3788
3897
  const ret = arg0.loadAllSedimentreeIds();
3789
3898
  return ret;
3790
3899
  },
@@ -3827,7 +3936,7 @@ function __wbg_get_imports() {
3827
3936
  const a = state0.a;
3828
3937
  state0.a = 0;
3829
3938
  try {
3830
- return __wasm_bindgen_func_elem_1605_191(a, state0.b, arg0, arg1);
3939
+ return __wasm_bindgen_func_elem_1651_194(a, state0.b, arg0, arg1);
3831
3940
  } finally {
3832
3941
  state0.a = a;
3833
3942
  }
@@ -3861,7 +3970,7 @@ function __wbg_get_imports() {
3861
3970
  const a = state0.a;
3862
3971
  state0.a = 0;
3863
3972
  try {
3864
- return __wasm_bindgen_func_elem_1605_192(a, state0.b, arg0, arg1);
3973
+ return __wasm_bindgen_func_elem_1651_195(a, state0.b, arg0, arg1);
3865
3974
  } finally {
3866
3975
  state0.a = a;
3867
3976
  }
@@ -3876,6 +3985,10 @@ function __wbg_get_imports() {
3876
3985
  const ret = new Array();
3877
3986
  return ret;
3878
3987
  },
3988
+ __wbg_new_with_length_3259a525196bd8cc: function(arg0) {
3989
+ const ret = new Array(arg0 >>> 0);
3990
+ return ret;
3991
+ },
3879
3992
  __wbg_new_with_length_825018a1616e9e55: function(arg0) {
3880
3993
  const ret = new Uint8Array(arg0 >>> 0);
3881
3994
  return ret;
@@ -3908,7 +4021,7 @@ function __wbg_get_imports() {
3908
4021
  const ret = Array.of(arg0, arg1);
3909
4022
  return ret;
3910
4023
  },
3911
- __wbg_onDisconnect_12d6884490508121: function(arg0, arg1) {
4024
+ __wbg_onDisconnect_a24437def131c941: function(arg0, arg1) {
3912
4025
  arg0.onDisconnect(arg1);
3913
4026
  },
3914
4027
  __wbg_open_e7a9d3d6344572f6: function() { return handleError(function (arg0, arg1, arg2, arg3) {
@@ -3935,7 +4048,7 @@ function __wbg_get_imports() {
3935
4048
  const ret = arg0.port2;
3936
4049
  return ret;
3937
4050
  },
3938
- __wbg_postMessage_0541d6c31330afe3: function(arg0, arg1) {
4051
+ __wbg_postMessage_fb1c205fdbbf796d: function(arg0, arg1) {
3939
4052
  arg0.postMessage(arg1);
3940
4053
  },
3941
4054
  __wbg_process_44c7a14e11e9f69e: function(arg0) {
@@ -3967,7 +4080,7 @@ function __wbg_get_imports() {
3967
4080
  const ret = arg0.readyState;
3968
4081
  return ret;
3969
4082
  },
3970
- __wbg_recvBytes_c85b12fb48cd7a35: function(arg0) {
4083
+ __wbg_recvBytes_e13f381294da16db: function(arg0) {
3971
4084
  const ret = arg0.recvBytes();
3972
4085
  return ret;
3973
4086
  },
@@ -3983,15 +4096,19 @@ function __wbg_get_imports() {
3983
4096
  const ret = arg0.result;
3984
4097
  return ret;
3985
4098
  }, arguments); },
3986
- __wbg_saveCommit_02f095436fc502e0: function(arg0, arg1, arg2, arg3, arg4) {
4099
+ __wbg_saveBatchAll_b9359532f5a65936: function(arg0, arg1, arg2, arg3) {
4100
+ const ret = arg0.saveBatchAll(arg1, arg2, arg3);
4101
+ return ret;
4102
+ },
4103
+ __wbg_saveCommit_f6c4180a159edfdf: function(arg0, arg1, arg2, arg3, arg4) {
3987
4104
  const ret = arg0.saveCommit(arg1, arg2, arg3, arg4);
3988
4105
  return ret;
3989
4106
  },
3990
- __wbg_saveFragment_7681b2171b8cfb35: function(arg0, arg1, arg2, arg3, arg4) {
4107
+ __wbg_saveFragment_49505af74bd5abe3: function(arg0, arg1, arg2, arg3, arg4) {
3991
4108
  const ret = arg0.saveFragment(arg1, arg2, arg3, arg4);
3992
4109
  return ret;
3993
4110
  },
3994
- __wbg_saveSedimentreeId_c265aaeef5af34b6: function(arg0, arg1) {
4111
+ __wbg_saveSedimentreeId_7b6b4310628fe78c: function(arg0, arg1) {
3995
4112
  const ret = arg0.saveSedimentreeId(arg1);
3996
4113
  return ret;
3997
4114
  },
@@ -4003,17 +4120,20 @@ function __wbg_get_imports() {
4003
4120
  const ret = SedimentreeId.__unwrap(arg0);
4004
4121
  return ret;
4005
4122
  },
4006
- __wbg_sendBytes_e6262dd74f1c260a: function(arg0, arg1) {
4123
+ __wbg_sendBytes_9a00cdaf7c891eff: function(arg0, arg1) {
4007
4124
  const ret = arg0.sendBytes(arg1);
4008
4125
  return ret;
4009
4126
  },
4010
4127
  __wbg_send_d31a693c975dea74: function() { return handleError(function (arg0, arg1, arg2) {
4011
4128
  arg0.send(getArrayU8FromWasm0(arg1, arg2));
4012
4129
  }, arguments); },
4013
- __wbg_setTimeout_7829585928963a1f: function(arg0, arg1) {
4130
+ __wbg_setTimeout_43db2c2050a4d3d2: function(arg0, arg1) {
4014
4131
  const ret = setTimeout(arg0, arg1);
4015
4132
  return ret;
4016
4133
  },
4134
+ __wbg_set_282384002438957f: function(arg0, arg1, arg2) {
4135
+ arg0[arg1 >>> 0] = arg2;
4136
+ },
4017
4137
  __wbg_set_7eaa4f96924fd6b3: function() { return handleError(function (arg0, arg1, arg2) {
4018
4138
  const ret = Reflect.set(arg0, arg1, arg2);
4019
4139
  return ret;
@@ -4048,7 +4168,7 @@ function __wbg_get_imports() {
4048
4168
  __wbg_set_onerror_901ca711f94a5bbb: function(arg0, arg1) {
4049
4169
  arg0.onerror = arg1;
4050
4170
  },
4051
- __wbg_set_onmessage_29558b29aee9a78a: function(arg0, arg1) {
4171
+ __wbg_set_onmessage_284248c97c42cb93: function(arg0, arg1) {
4052
4172
  arg0.onmessage = arg1;
4053
4173
  },
4054
4174
  __wbg_set_onmessage_6f80ab771bf151aa: function(arg0, arg1) {
@@ -4067,7 +4187,7 @@ function __wbg_get_imports() {
4067
4187
  const ret = arg0.sign(arg1, arg2, getArrayU8FromWasm0(arg3, arg4));
4068
4188
  return ret;
4069
4189
  }, arguments); },
4070
- __wbg_sign_d03455abc6736428: function(arg0, arg1) {
4190
+ __wbg_sign_e6fa76bd4ef9c75a: function(arg0, arg1) {
4071
4191
  const ret = arg0.sign(arg1);
4072
4192
  return ret;
4073
4193
  },
@@ -4141,6 +4261,14 @@ function __wbg_get_imports() {
4141
4261
  const ret = arg0.then(arg1, arg2);
4142
4262
  return ret;
4143
4263
  },
4264
+ __wbg_topic_new: function(arg0) {
4265
+ const ret = Topic.__wrap(arg0);
4266
+ return ret;
4267
+ },
4268
+ __wbg_topic_unwrap: function(arg0) {
4269
+ const ret = Topic.__unwrap(arg0);
4270
+ return ret;
4271
+ },
4144
4272
  __wbg_transaction_1309b463c399d2b3: function() { return handleError(function (arg0, arg1, arg2, arg3) {
4145
4273
  const ret = arg0.transaction(getStringFromWasm0(arg1, arg2), __wbindgen_enum_IdbTransactionMode[arg3]);
4146
4274
  return ret;
@@ -4149,14 +4277,14 @@ function __wbg_get_imports() {
4149
4277
  const ret = arg0.transaction(getStringFromWasm0(arg1, arg2));
4150
4278
  return ret;
4151
4279
  }, arguments); },
4152
- __wbg_tryIntoJsSedimentreeIdsArray_d6337c0aa0f28604: function() { return handleError(function (arg0, arg1) {
4280
+ __wbg_tryIntoJsSedimentreeIdsArray_6803cc05ac20ff4f: function() { return handleError(function (arg0, arg1) {
4153
4281
  const ret = tryIntoJsSedimentreeIdsArray(arg1);
4154
4282
  const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_export);
4155
4283
  const len1 = WASM_VECTOR_LEN;
4156
4284
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
4157
4285
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
4158
4286
  }, arguments); },
4159
- __wbg_verifyingKey_29533740d75f8cdb: function(arg0) {
4287
+ __wbg_verifyingKey_28c38fc6525caed5: function(arg0) {
4160
4288
  const ret = arg0.verifyingKey();
4161
4289
  return ret;
4162
4290
  },
@@ -4170,32 +4298,32 @@ function __wbg_get_imports() {
4170
4298
  },
4171
4299
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
4172
4300
  // Cast intrinsic for `Closure(Closure { dtor_idx: 11, function: Function { arguments: [Externref], shim_idx: 12, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
4173
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_590);
4301
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_638);
4174
4302
  return ret;
4175
4303
  },
4176
4304
  __wbindgen_cast_0000000000000002: function(arg0, arg1) {
4177
4305
  // Cast intrinsic for `Closure(Closure { dtor_idx: 11, function: Function { arguments: [NamedExternref("Event")], shim_idx: 12, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
4178
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_590_1);
4306
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_638_1);
4179
4307
  return ret;
4180
4308
  },
4181
4309
  __wbindgen_cast_0000000000000003: function(arg0, arg1) {
4182
4310
  // Cast intrinsic for `Closure(Closure { dtor_idx: 11, function: Function { arguments: [NamedExternref("IDBVersionChangeEvent")], shim_idx: 12, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
4183
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_590_2);
4311
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_638_2);
4184
4312
  return ret;
4185
4313
  },
4186
4314
  __wbindgen_cast_0000000000000004: function(arg0, arg1) {
4187
4315
  // Cast intrinsic for `Closure(Closure { dtor_idx: 11, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 12, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
4188
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_590_3);
4316
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_638_3);
4189
4317
  return ret;
4190
4318
  },
4191
4319
  __wbindgen_cast_0000000000000005: function(arg0, arg1) {
4192
4320
  // Cast intrinsic for `Closure(Closure { dtor_idx: 11, function: Function { arguments: [], shim_idx: 13, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.
4193
- const ret = makeClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_589);
4321
+ const ret = makeClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_637);
4194
4322
  return ret;
4195
4323
  },
4196
4324
  __wbindgen_cast_0000000000000006: function(arg0, arg1) {
4197
- // Cast intrinsic for `Closure(Closure { dtor_idx: 655, function: Function { arguments: [Externref], shim_idx: 738, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
4198
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_274, __wasm_bindgen_func_elem_1605);
4325
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 672, function: Function { arguments: [Externref], shim_idx: 756, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
4326
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_285, __wasm_bindgen_func_elem_1651);
4199
4327
  return ret;
4200
4328
  },
4201
4329
  __wbindgen_cast_0000000000000007: function(arg0) {
@@ -4261,43 +4389,44 @@ function __wbg_get_imports() {
4261
4389
  return {
4262
4390
  __proto__: null,
4263
4391
  "./subduction_wasm_bg.js": import0,
4264
- "./snippets/subduction_wasm-0ed7fd66cebca59f/inline0.js": import1,
4392
+ "./snippets/subduction_wasm-ec51bcf335db35bd/inline0.js": import1,
4393
+ "./snippets/subduction_wasm-ec51bcf335db35bd/inline1.js": import2,
4265
4394
  };
4266
4395
  }
4267
4396
 
4268
- function __wasm_bindgen_func_elem_589(arg0, arg1) {
4269
- wasm.__wasm_bindgen_func_elem_589(arg0, arg1);
4397
+ function __wasm_bindgen_func_elem_637(arg0, arg1) {
4398
+ wasm.__wasm_bindgen_func_elem_637(arg0, arg1);
4270
4399
  }
4271
4400
 
4272
- function __wasm_bindgen_func_elem_590(arg0, arg1, arg2) {
4273
- wasm.__wasm_bindgen_func_elem_590(arg0, arg1, arg2);
4401
+ function __wasm_bindgen_func_elem_638(arg0, arg1, arg2) {
4402
+ wasm.__wasm_bindgen_func_elem_638(arg0, arg1, arg2);
4274
4403
  }
4275
4404
 
4276
- function __wasm_bindgen_func_elem_590_1(arg0, arg1, arg2) {
4277
- wasm.__wasm_bindgen_func_elem_590_1(arg0, arg1, arg2);
4405
+ function __wasm_bindgen_func_elem_638_1(arg0, arg1, arg2) {
4406
+ wasm.__wasm_bindgen_func_elem_638_1(arg0, arg1, arg2);
4278
4407
  }
4279
4408
 
4280
- function __wasm_bindgen_func_elem_590_2(arg0, arg1, arg2) {
4281
- wasm.__wasm_bindgen_func_elem_590_2(arg0, arg1, arg2);
4409
+ function __wasm_bindgen_func_elem_638_2(arg0, arg1, arg2) {
4410
+ wasm.__wasm_bindgen_func_elem_638_2(arg0, arg1, arg2);
4282
4411
  }
4283
4412
 
4284
- function __wasm_bindgen_func_elem_590_3(arg0, arg1, arg2) {
4285
- wasm.__wasm_bindgen_func_elem_590_3(arg0, arg1, arg2);
4413
+ function __wasm_bindgen_func_elem_638_3(arg0, arg1, arg2) {
4414
+ wasm.__wasm_bindgen_func_elem_638_3(arg0, arg1, arg2);
4286
4415
  }
4287
4416
 
4288
- function __wasm_bindgen_func_elem_1605(arg0, arg1, arg2) {
4289
- const ret = wasm.__wasm_bindgen_func_elem_1605(arg0, arg1, arg2);
4417
+ function __wasm_bindgen_func_elem_1651(arg0, arg1, arg2) {
4418
+ const ret = wasm.__wasm_bindgen_func_elem_1651(arg0, arg1, arg2);
4290
4419
  if (ret[1]) {
4291
4420
  throw takeFromExternrefTable0(ret[0]);
4292
4421
  }
4293
4422
  }
4294
4423
 
4295
- function __wasm_bindgen_func_elem_1605_191(arg0, arg1, arg2, arg3) {
4296
- wasm.__wasm_bindgen_func_elem_1605_191(arg0, arg1, arg2, arg3);
4424
+ function __wasm_bindgen_func_elem_1651_194(arg0, arg1, arg2, arg3) {
4425
+ wasm.__wasm_bindgen_func_elem_1651_194(arg0, arg1, arg2, arg3);
4297
4426
  }
4298
4427
 
4299
- function __wasm_bindgen_func_elem_1605_192(arg0, arg1, arg2, arg3) {
4300
- wasm.__wasm_bindgen_func_elem_1605_192(arg0, arg1, arg2, arg3);
4428
+ function __wasm_bindgen_func_elem_1651_195(arg0, arg1, arg2, arg3) {
4429
+ wasm.__wasm_bindgen_func_elem_1651_195(arg0, arg1, arg2, arg3);
4301
4430
  }
4302
4431
 
4303
4432
 
@@ -4410,6 +4539,9 @@ const SubductionFinalization = (typeof FinalizationRegistry === 'undefined')
4410
4539
  const SyncStatsFinalization = (typeof FinalizationRegistry === 'undefined')
4411
4540
  ? { register: () => {}, unregister: () => {} }
4412
4541
  : new FinalizationRegistry(ptr => wasm.__wbg_syncstats_free(ptr >>> 0, 1));
4542
+ const TopicFinalization = (typeof FinalizationRegistry === 'undefined')
4543
+ ? { register: () => {}, unregister: () => {} }
4544
+ : new FinalizationRegistry(ptr => wasm.__wbg_topic_free(ptr >>> 0, 1));
4413
4545
  const SubductionWebSocketFinalization = (typeof FinalizationRegistry === 'undefined')
4414
4546
  ? { register: () => {}, unregister: () => {} }
4415
4547
  : new FinalizationRegistry(ptr => wasm.__wbg_subductionwebsocket_free(ptr >>> 0, 1));