@dxos/echo-pipeline 0.6.13 → 0.6.14-main.2b6a0f3

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 (129) hide show
  1. package/dist/lib/browser/chunk-COV5H3SU.mjs +2060 -0
  2. package/dist/lib/browser/chunk-COV5H3SU.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3477 -17
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +17 -7
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-7HHYCGUR.cjs → chunk-XHGWCBX6.cjs} +116 -64
  9. package/dist/lib/node/chunk-XHGWCBX6.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +3454 -35
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +25 -15
  14. package/dist/lib/node/testing/index.cjs.map +3 -3
  15. package/dist/lib/{browser/chunk-UKXIJW43.mjs → node-esm/chunk-KKYLPT56.mjs} +103 -53
  16. package/dist/lib/node-esm/chunk-KKYLPT56.mjs.map +7 -0
  17. package/dist/lib/{browser/chunk-MPWFDDQK.mjs → node-esm/index.mjs} +1723 -342
  18. package/dist/lib/node-esm/index.mjs.map +7 -0
  19. package/dist/lib/node-esm/meta.json +1 -0
  20. package/dist/lib/node-esm/testing/index.mjs +562 -0
  21. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  22. package/dist/types/src/automerge/automerge-host.d.ts +24 -1
  23. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
  24. package/dist/types/src/automerge/collection-synchronizer.d.ts +2 -0
  25. package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
  26. package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
  27. package/dist/types/src/automerge/echo-replicator.d.ts +3 -3
  28. package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
  29. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +3 -3
  30. package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
  31. package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
  32. package/dist/types/src/automerge/space-collection.d.ts +3 -2
  33. package/dist/types/src/automerge/space-collection.d.ts.map +1 -1
  34. package/dist/types/src/db-host/automerge-metrics.d.ts +11 -0
  35. package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -0
  36. package/dist/types/src/db-host/data-service.d.ts +3 -2
  37. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  38. package/dist/types/src/db-host/database-root.d.ts +20 -0
  39. package/dist/types/src/db-host/database-root.d.ts.map +1 -0
  40. package/dist/types/src/db-host/documents-iterator.d.ts +7 -0
  41. package/dist/types/src/db-host/documents-iterator.d.ts.map +1 -0
  42. package/dist/types/src/db-host/echo-host.d.ts +73 -0
  43. package/dist/types/src/db-host/echo-host.d.ts.map +1 -0
  44. package/dist/types/src/db-host/index.d.ts +5 -0
  45. package/dist/types/src/db-host/index.d.ts.map +1 -1
  46. package/dist/types/src/db-host/migration.d.ts +8 -0
  47. package/dist/types/src/db-host/migration.d.ts.map +1 -0
  48. package/dist/types/src/db-host/query-service.d.ts +25 -0
  49. package/dist/types/src/db-host/query-service.d.ts.map +1 -0
  50. package/dist/types/src/db-host/query-state.d.ts +41 -0
  51. package/dist/types/src/db-host/query-state.d.ts.map +1 -0
  52. package/dist/types/src/db-host/space-state-manager.d.ts +23 -0
  53. package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -0
  54. package/dist/types/src/edge/echo-edge-replicator.d.ts +23 -0
  55. package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -0
  56. package/dist/types/src/edge/echo-edge-replicator.test.d.ts +2 -0
  57. package/dist/types/src/edge/echo-edge-replicator.test.d.ts.map +1 -0
  58. package/dist/types/src/edge/index.d.ts +2 -0
  59. package/dist/types/src/edge/index.d.ts.map +1 -0
  60. package/dist/types/src/index.d.ts +1 -0
  61. package/dist/types/src/index.d.ts.map +1 -1
  62. package/dist/types/src/metadata/metadata-store.d.ts +4 -1
  63. package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
  64. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  65. package/dist/types/src/space/space.d.ts +1 -0
  66. package/dist/types/src/space/space.d.ts.map +1 -1
  67. package/dist/types/src/testing/test-agent-builder.d.ts +2 -0
  68. package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
  69. package/dist/types/src/testing/test-replicator.d.ts +4 -4
  70. package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
  71. package/package.json +41 -50
  72. package/src/automerge/automerge-host.test.ts +8 -9
  73. package/src/automerge/automerge-host.ts +46 -7
  74. package/src/automerge/automerge-repo.test.ts +18 -16
  75. package/src/automerge/collection-synchronizer.test.ts +10 -5
  76. package/src/automerge/collection-synchronizer.ts +17 -6
  77. package/src/automerge/echo-data-monitor.test.ts +1 -3
  78. package/src/automerge/echo-network-adapter.test.ts +4 -3
  79. package/src/automerge/echo-network-adapter.ts +5 -4
  80. package/src/automerge/echo-replicator.ts +3 -3
  81. package/src/automerge/mesh-echo-replicator-connection.ts +10 -9
  82. package/src/automerge/mesh-echo-replicator.ts +2 -1
  83. package/src/automerge/space-collection.ts +3 -2
  84. package/src/automerge/storage-adapter.test.ts +2 -3
  85. package/src/db-host/automerge-metrics.ts +38 -0
  86. package/src/db-host/data-service.ts +29 -14
  87. package/src/db-host/database-root.ts +87 -0
  88. package/src/db-host/documents-iterator.ts +73 -0
  89. package/src/db-host/documents-synchronizer.test.ts +2 -2
  90. package/src/db-host/echo-host.ts +257 -0
  91. package/src/db-host/index.ts +6 -1
  92. package/src/db-host/migration.ts +57 -0
  93. package/src/db-host/query-service.ts +209 -0
  94. package/src/db-host/query-state.ts +214 -0
  95. package/src/db-host/space-state-manager.ts +90 -0
  96. package/src/edge/echo-edge-replicator.test.ts +96 -0
  97. package/src/edge/echo-edge-replicator.ts +341 -0
  98. package/src/edge/index.ts +5 -0
  99. package/src/index.ts +1 -0
  100. package/src/metadata/metadata-store.ts +22 -2
  101. package/src/pipeline/pipeline-stress.test.ts +44 -47
  102. package/src/pipeline/pipeline.test.ts +3 -4
  103. package/src/space/control-pipeline.test.ts +2 -3
  104. package/src/space/control-pipeline.ts +10 -1
  105. package/src/space/replication.browser.test.ts +2 -8
  106. package/src/space/space-manager.browser.test.ts +6 -5
  107. package/src/space/space-protocol.browser.test.ts +29 -34
  108. package/src/space/space-protocol.test.ts +37 -27
  109. package/src/space/space-protocol.ts +0 -4
  110. package/src/space/space.test.ts +30 -11
  111. package/src/space/space.ts +7 -2
  112. package/src/testing/test-agent-builder.ts +16 -4
  113. package/src/testing/test-replicator.ts +3 -3
  114. package/dist/lib/browser/chunk-MPWFDDQK.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-UKXIJW43.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-XPCF2V5U.mjs +0 -31
  117. package/dist/lib/browser/chunk-XPCF2V5U.mjs.map +0 -7
  118. package/dist/lib/browser/light.mjs +0 -32
  119. package/dist/lib/browser/light.mjs.map +0 -7
  120. package/dist/lib/node/chunk-5DH4KR2S.cjs +0 -2148
  121. package/dist/lib/node/chunk-5DH4KR2S.cjs.map +0 -7
  122. package/dist/lib/node/chunk-7HHYCGUR.cjs.map +0 -7
  123. package/dist/lib/node/chunk-DZVH7HDD.cjs +0 -43
  124. package/dist/lib/node/chunk-DZVH7HDD.cjs.map +0 -7
  125. package/dist/lib/node/light.cjs +0 -52
  126. package/dist/lib/node/light.cjs.map +0 -7
  127. package/dist/types/src/light.d.ts +0 -4
  128. package/dist/types/src/light.d.ts.map +0 -1
  129. package/src/light.ts +0 -7
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_7HHYCGUR_exports = {};
30
- __export(chunk_7HHYCGUR_exports, {
29
+ var chunk_XHGWCBX6_exports = {};
30
+ __export(chunk_XHGWCBX6_exports, {
31
31
  AuthExtension: () => AuthExtension,
32
32
  AuthStatus: () => AuthStatus,
33
33
  CredentialRetrieverExtension: () => CredentialRetrieverExtension,
@@ -42,6 +42,7 @@ __export(chunk_7HHYCGUR_exports, {
42
42
  SpaceProtocolSession: () => SpaceProtocolSession,
43
43
  TimeframeClock: () => TimeframeClock,
44
44
  codec: () => codec,
45
+ createIdFromSpaceKey: () => createIdFromSpaceKey,
45
46
  createMappedFeedWriter: () => createMappedFeedWriter,
46
47
  hasInvitationExpired: () => hasInvitationExpired,
47
48
  mapFeedIndexesToTimeframe: () => mapFeedIndexesToTimeframe,
@@ -49,21 +50,23 @@ __export(chunk_7HHYCGUR_exports, {
49
50
  startAfter: () => startAfter,
50
51
  valueEncoding: () => valueEncoding
51
52
  });
52
- module.exports = __toCommonJS(chunk_7HHYCGUR_exports);
53
- var import_chunk_DZVH7HDD = require("./chunk-DZVH7HDD.cjs");
53
+ module.exports = __toCommonJS(chunk_XHGWCBX6_exports);
54
54
  var import_hypercore = require("@dxos/hypercore");
55
55
  var import_proto = require("@dxos/protocols/proto");
56
56
  var import_invariant = require("@dxos/invariant");
57
+ var import_crypto = require("@dxos/crypto");
58
+ var import_keys = require("@dxos/keys");
59
+ var import_util = require("@dxos/util");
57
60
  var import_crc_32 = __toESM(require("crc-32"));
58
61
  var import_async = require("@dxos/async");
59
62
  var import_context = require("@dxos/context");
60
63
  var import_invariant2 = require("@dxos/invariant");
61
- var import_keys = require("@dxos/keys");
64
+ var import_keys2 = require("@dxos/keys");
62
65
  var import_log = require("@dxos/log");
63
66
  var import_protocols = require("@dxos/protocols");
64
67
  var import_proto2 = require("@dxos/protocols/proto");
65
68
  var import_services = require("@dxos/protocols/proto/dxos/client/services");
66
- var import_util = require("@dxos/util");
69
+ var import_util2 = require("@dxos/util");
67
70
  var import_async2 = require("@dxos/async");
68
71
  var import_debug = require("@dxos/debug");
69
72
  var import_log2 = require("@dxos/log");
@@ -73,15 +76,15 @@ var import_context2 = require("@dxos/context");
73
76
  var import_debug2 = require("@dxos/debug");
74
77
  var import_feed_store = require("@dxos/feed-store");
75
78
  var import_invariant3 = require("@dxos/invariant");
76
- var import_keys2 = require("@dxos/keys");
79
+ var import_keys3 = require("@dxos/keys");
77
80
  var import_log3 = require("@dxos/log");
78
81
  var import_timeframe2 = require("@dxos/timeframe");
79
- var import_util2 = require("@dxos/util");
82
+ var import_util3 = require("@dxos/util");
80
83
  var import_invariant4 = require("@dxos/invariant");
81
84
  var import_log4 = require("@dxos/log");
82
85
  var import_async4 = require("@dxos/async");
83
86
  var import_context3 = require("@dxos/context");
84
- var import_crypto = require("@dxos/crypto");
87
+ var import_crypto2 = require("@dxos/crypto");
85
88
  var import_invariant5 = require("@dxos/invariant");
86
89
  var import_log5 = require("@dxos/log");
87
90
  var import_proto3 = require("@dxos/protocols/proto");
@@ -92,36 +95,36 @@ var import_invariant6 = require("@dxos/invariant");
92
95
  var import_log6 = require("@dxos/log");
93
96
  var import_credentials = require("@dxos/protocols/proto/dxos/halo/credentials");
94
97
  var import_tracing = require("@dxos/tracing");
95
- var import_util3 = require("@dxos/util");
98
+ var import_util4 = require("@dxos/util");
96
99
  var import_async6 = require("@dxos/async");
97
100
  var import_context5 = require("@dxos/context");
98
101
  var import_credentials2 = require("@dxos/credentials");
99
- var import_keys3 = require("@dxos/keys");
102
+ var import_keys4 = require("@dxos/keys");
100
103
  var import_log7 = require("@dxos/log");
101
104
  var import_credentials3 = require("@dxos/protocols/proto/dxos/halo/credentials");
102
105
  var import_timeframe3 = require("@dxos/timeframe");
103
106
  var import_tracing2 = require("@dxos/tracing");
104
- var import_util4 = require("@dxos/util");
107
+ var import_util5 = require("@dxos/util");
105
108
  var import_async7 = require("@dxos/async");
106
109
  var import_context6 = require("@dxos/context");
107
110
  var import_protocols2 = require("@dxos/protocols");
108
111
  var import_proto4 = require("@dxos/protocols/proto");
109
112
  var import_teleport2 = require("@dxos/teleport");
110
- var import_crypto2 = require("@dxos/crypto");
111
- var import_keys4 = require("@dxos/keys");
113
+ var import_crypto3 = require("@dxos/crypto");
114
+ var import_keys5 = require("@dxos/keys");
112
115
  var import_log8 = require("@dxos/log");
113
116
  var import_network_manager = require("@dxos/network-manager");
114
117
  var import_teleport3 = require("@dxos/teleport");
115
118
  var import_teleport_extension_object_sync = require("@dxos/teleport-extension-object-sync");
116
119
  var import_teleport_extension_replicator = require("@dxos/teleport-extension-replicator");
117
120
  var import_tracing3 = require("@dxos/tracing");
118
- var import_util5 = require("@dxos/util");
121
+ var import_util6 = require("@dxos/util");
119
122
  var import_async8 = require("@dxos/async");
120
123
  var import_debug3 = require("@dxos/debug");
121
- var import_keys5 = require("@dxos/keys");
124
+ var import_keys6 = require("@dxos/keys");
122
125
  var import_log9 = require("@dxos/log");
123
126
  var import_protocols3 = require("@dxos/protocols");
124
- var import_util6 = require("@dxos/util");
127
+ var import_util7 = require("@dxos/util");
125
128
  var codec = import_proto.schema.getCodecForType("dxos.echo.feed.FeedMessage");
126
129
  var valueEncoding = (0, import_hypercore.createCodecEncoding)(codec);
127
130
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/common/feeds.ts";
@@ -148,6 +151,18 @@ var createMappedFeedWriter = (mapper, writer) => {
148
151
  write: async (data, options) => await writer.write(await mapper(data), options)
149
152
  };
150
153
  };
154
+ var SPACE_IDS_CACHE = new import_util.ComplexMap(import_keys.PublicKey.hash);
155
+ var createIdFromSpaceKey = async (spaceKey) => {
156
+ const cachedValue = SPACE_IDS_CACHE.get(spaceKey);
157
+ if (cachedValue !== void 0) {
158
+ return cachedValue;
159
+ }
160
+ const digest = await import_crypto.subtleCrypto.digest("SHA-256", spaceKey.asUint8Array());
161
+ const bytes = new Uint8Array(digest).slice(0, import_keys.SpaceId.byteLength);
162
+ const spaceId = import_keys.SpaceId.encode(bytes);
163
+ SPACE_IDS_CACHE.set(spaceKey, spaceId);
164
+ return spaceId;
165
+ };
151
166
  function _ts_decorate(decorators, target, key, desc) {
152
167
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
153
168
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -168,12 +183,12 @@ var LargeSpaceMetadata = import_proto2.schema.getCodecForType("dxos.echo.metadat
168
183
  var MetadataStore = class {
169
184
  constructor(directory) {
170
185
  this._metadata = emptyEchoMetadata();
171
- this._spaceLargeMetadata = new import_util.ComplexMap(import_keys.PublicKey.hash);
186
+ this._spaceLargeMetadata = new import_util2.ComplexMap(import_keys2.PublicKey.hash);
172
187
  this._metadataFile = void 0;
173
188
  this.update = new import_async.Event();
174
189
  this._invitationCleanupCtx = new import_context.Context(void 0, {
175
190
  F: __dxlog_file2,
176
- L: 54
191
+ L: 55
177
192
  });
178
193
  this._directory = directory;
179
194
  }
@@ -204,7 +219,7 @@ var MetadataStore = class {
204
219
  name: file.filename
205
220
  }, {
206
221
  F: __dxlog_file2,
207
- L: 90,
222
+ L: 91,
208
223
  S: this,
209
224
  C: (f, a) => f(...a)
210
225
  });
@@ -228,7 +243,7 @@ var MetadataStore = class {
228
243
  * @internal
229
244
  */
230
245
  async _writeFile(file, codec2, data) {
231
- const encoded = (0, import_util.arrayToBuffer)(codec2.encode(data));
246
+ const encoded = (0, import_util2.arrayToBuffer)(codec2.encode(data));
232
247
  const checksum = import_crc_32.default.buf(encoded);
233
248
  const result = Buffer.alloc(8 + encoded.length);
234
249
  result.writeInt32LE(encoded.length, 0);
@@ -240,7 +255,7 @@ var MetadataStore = class {
240
255
  checksum
241
256
  }, {
242
257
  F: __dxlog_file2,
243
- L: 125,
258
+ L: 126,
244
259
  S: this,
245
260
  C: (f, a) => f(...a)
246
261
  });
@@ -273,16 +288,16 @@ var MetadataStore = class {
273
288
  err
274
289
  }, {
275
290
  F: __dxlog_file2,
276
- L: 157,
291
+ L: 158,
277
292
  S: this,
278
293
  C: (f, a) => f(...a)
279
294
  });
280
295
  this._metadata = emptyEchoMetadata();
281
296
  }
282
- await (0, import_util.forEachAsync)([
297
+ await (0, import_util2.forEachAsync)([
283
298
  this._metadata.identity?.haloSpace.key,
284
299
  ...this._metadata.spaces?.map((space) => space.key) ?? []
285
- ].filter(import_util.isNotNullOrUndefined), async (key) => {
300
+ ].filter(import_util2.isNotNullOrUndefined), async (key) => {
286
301
  try {
287
302
  await this._loadSpaceLargeMetadata(key);
288
303
  } catch (err) {
@@ -290,7 +305,7 @@ var MetadataStore = class {
290
305
  err
291
306
  }, {
292
307
  F: __dxlog_file2,
293
- L: 169,
308
+ L: 170,
294
309
  S: this,
295
310
  C: (f, a) => f(...a)
296
311
  });
@@ -327,7 +342,7 @@ var MetadataStore = class {
327
342
  err
328
343
  }, {
329
344
  F: __dxlog_file2,
330
- L: 211,
345
+ L: 212,
331
346
  S: this,
332
347
  C: (f, a) => f(...a)
333
348
  });
@@ -345,10 +360,10 @@ var MetadataStore = class {
345
360
  if (this._metadata.identity?.haloSpace.key.equals(spaceKey)) {
346
361
  return this._metadata.identity.haloSpace;
347
362
  }
348
- const space = this.spaces.find((space2) => space2.key === spaceKey);
363
+ const space = this.spaces.find((space2) => space2.key.equals(spaceKey));
349
364
  (0, import_invariant2.invariant)(space, "Space not found", {
350
365
  F: __dxlog_file2,
351
- L: 233,
366
+ L: 234,
352
367
  S: this,
353
368
  A: [
354
369
  "space",
@@ -357,6 +372,12 @@ var MetadataStore = class {
357
372
  });
358
373
  return space;
359
374
  }
375
+ hasSpace(spaceKey) {
376
+ if (this._metadata.identity?.haloSpace.key.equals(spaceKey)) {
377
+ return true;
378
+ }
379
+ return !!this.spaces.find((space) => space.key.equals(spaceKey));
380
+ }
360
381
  _getLargeSpaceMetadata(key) {
361
382
  let entry = this._spaceLargeMetadata.get(key);
362
383
  if (entry) {
@@ -372,7 +393,7 @@ var MetadataStore = class {
372
393
  async clear() {
373
394
  (0, import_log.log)("clearing all metadata", void 0, {
374
395
  F: __dxlog_file2,
375
- L: 252,
396
+ L: 262,
376
397
  S: this,
377
398
  C: (f, a) => f(...a)
378
399
  });
@@ -385,7 +406,7 @@ var MetadataStore = class {
385
406
  async setIdentityRecord(record) {
386
407
  (0, import_invariant2.invariant)(!this._metadata.identity, "Cannot overwrite existing identity in metadata", {
387
408
  F: __dxlog_file2,
388
- L: 262,
409
+ L: 272,
389
410
  S: this,
390
411
  A: [
391
412
  "!this._metadata.identity",
@@ -413,12 +434,12 @@ var MetadataStore = class {
413
434
  await this.flush();
414
435
  }
415
436
  async addSpace(record) {
416
- (0, import_invariant2.invariant)(!(this._metadata.spaces ?? []).find((space) => space.key === record.key), "Cannot overwrite existing space in metadata", {
437
+ (0, import_invariant2.invariant)(!(this._metadata.spaces ?? []).find((space) => space.key.equals(record.key)), "Cannot overwrite existing space in metadata", {
417
438
  F: __dxlog_file2,
418
- L: 290,
439
+ L: 300,
419
440
  S: this,
420
441
  A: [
421
- "!(this._metadata.spaces ?? []).find((space) => space.key === record.key)",
442
+ "!(this._metadata.spaces ?? []).find((space) => space.key.equals(record.key))",
422
443
  "'Cannot overwrite existing space in metadata'"
423
444
  ]
424
445
  });
@@ -459,6 +480,14 @@ var MetadataStore = class {
459
480
  await this._saveSpaceLargeMetadata(spaceKey);
460
481
  await this.flush();
461
482
  }
483
+ getSpaceEdgeReplicationSetting(spaceKey) {
484
+ return this.hasSpace(spaceKey) ? this._getSpace(spaceKey).edgeReplication : void 0;
485
+ }
486
+ async setSpaceEdgeReplicationSetting(spaceKey, setting) {
487
+ this._getSpace(spaceKey).edgeReplication = setting;
488
+ await this._save();
489
+ await this.flush();
490
+ }
462
491
  };
463
492
  _ts_decorate([
464
493
  import_async.synchronized
@@ -707,11 +736,11 @@ var PipelineState = class {
707
736
  var Pipeline = class {
708
737
  constructor() {
709
738
  this._timeframeClock = new TimeframeClock(new import_timeframe2.Timeframe());
710
- this._feeds = new import_util2.ComplexMap(import_keys2.PublicKey.hash);
739
+ this._feeds = new import_util3.ComplexMap(import_keys3.PublicKey.hash);
711
740
  this._state = new PipelineState(this._feeds, this._timeframeClock);
712
741
  this._processingTrigger = new import_async3.Trigger().wake();
713
742
  this._pauseTrigger = new import_async3.Trigger().wake();
714
- this._downloads = new import_util2.ComplexMap((value) => import_keys2.PublicKey.hash(value.key));
743
+ this._downloads = new import_util3.ComplexMap((value) => import_keys3.PublicKey.hash(value.key));
715
744
  this._isStopping = false;
716
745
  this._isStarted = false;
717
746
  this._isBeingConsumed = false;
@@ -927,7 +956,7 @@ var Pipeline = class {
927
956
  if (!done) {
928
957
  const block = value ?? (0, import_debug2.failUndefined)();
929
958
  this._processingTrigger.reset();
930
- this._timeframeClock.updatePendingTimeframe(import_keys2.PublicKey.from(block.feedKey), block.seq);
959
+ this._timeframeClock.updatePendingTimeframe(import_keys3.PublicKey.from(block.feedKey), block.seq);
931
960
  yield block;
932
961
  this._processingTrigger.wake();
933
962
  this._timeframeClock.updateTimeframe();
@@ -1060,7 +1089,7 @@ var AuthExtension = class extends import_teleport.RpcExtension {
1060
1089
  await super.onOpen(context);
1061
1090
  (0, import_async4.scheduleTask)(this._ctx, async () => {
1062
1091
  try {
1063
- const challenge = (0, import_crypto.randomBytes)(32);
1092
+ const challenge = (0, import_crypto2.randomBytes)(32);
1064
1093
  const { credential } = await this.rpc.AuthService.authenticate({
1065
1094
  challenge
1066
1095
  });
@@ -1122,7 +1151,7 @@ var ControlPipeline = class {
1122
1151
  L: 47
1123
1152
  });
1124
1153
  this._lastTimeframeSaveTime = Date.now();
1125
- this.onFeedAdmitted = new import_util4.Callback();
1154
+ this.onFeedAdmitted = new import_util5.Callback();
1126
1155
  this._usage = new import_tracing2.TimeUsageCounter();
1127
1156
  this._mutations = new import_tracing2.TimeSeriesCounter();
1128
1157
  this._snapshotTask = new import_async6.DeferredTask(this._ctx, async () => {
@@ -1243,7 +1272,7 @@ var ControlPipeline = class {
1243
1272
  await this._pipeline.unpause();
1244
1273
  (0, import_log7.log)("save snapshot", {
1245
1274
  key: this._spaceKey,
1246
- snapshot
1275
+ snapshot: getSnapshotLoggerContext(snapshot)
1247
1276
  }, {
1248
1277
  F: __dxlog_file7,
1249
1278
  L: 163,
@@ -1280,9 +1309,9 @@ var ControlPipeline = class {
1280
1309
  C: (f, a) => f(...a)
1281
1310
  });
1282
1311
  if (msg.data.payload.credential) {
1283
- const timer = import_util4.tracer.mark("dxos.echo.pipeline.control");
1312
+ const timer = import_util5.tracer.mark("dxos.echo.pipeline.control");
1284
1313
  const result = await this._spaceStateMachine.process(msg.data.payload.credential.credential, {
1285
- sourceFeed: import_keys3.PublicKey.from(msg.feedKey)
1314
+ sourceFeed: import_keys4.PublicKey.from(msg.feedKey)
1286
1315
  });
1287
1316
  timer.end();
1288
1317
  if (!result) {
@@ -1359,6 +1388,18 @@ ControlPipeline = _ts_decorate4([
1359
1388
  import_tracing2.trace.resource(),
1360
1389
  (0, import_async6.trackLeaks)("start", "stop")
1361
1390
  ], ControlPipeline);
1391
+ var getSnapshotLoggerContext = (snapshot) => {
1392
+ return snapshot.messages?.map((msg) => {
1393
+ const issuer = msg.credential.issuer;
1394
+ const subject = msg.credential.subject.id;
1395
+ const type = msg.credential.subject.assertion["@type"];
1396
+ return {
1397
+ issuer,
1398
+ subject,
1399
+ type
1400
+ };
1401
+ });
1402
+ };
1362
1403
  function _ts_decorate5(decorators, target, key, desc) {
1363
1404
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1364
1405
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1369,7 +1410,7 @@ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipelin
1369
1410
  var Space = class extends import_context4.Resource {
1370
1411
  constructor(params) {
1371
1412
  super();
1372
- this.onCredentialProcessed = new import_util3.Callback();
1413
+ this.onCredentialProcessed = new import_util4.Callback();
1373
1414
  this.stateUpdate = new import_async5.Event();
1374
1415
  (0, import_invariant6.invariant)(params.spaceKey && params.feedProvider, void 0, {
1375
1416
  F: __dxlog_file8,
@@ -1515,21 +1556,32 @@ var Space = class extends import_context4.Resource {
1515
1556
  C: (f, a) => f(...a)
1516
1557
  });
1517
1558
  await this._controlPipeline.start();
1518
- await this.protocol.start();
1519
- await this.protocol.addFeed(await this._feedProvider(this._genesisFeedKey));
1520
1559
  (0, import_log6.log)("opened", void 0, {
1521
1560
  F: __dxlog_file8,
1522
- L: 182,
1561
+ L: 180,
1523
1562
  S: this,
1524
1563
  C: (f, a) => f(...a)
1525
1564
  });
1526
1565
  }
1566
+ async startProtocol() {
1567
+ (0, import_invariant6.invariant)(this.isOpen, void 0, {
1568
+ F: __dxlog_file8,
1569
+ L: 185,
1570
+ S: this,
1571
+ A: [
1572
+ "this.isOpen",
1573
+ ""
1574
+ ]
1575
+ });
1576
+ await this.protocol.start();
1577
+ await this.protocol.addFeed(await this._feedProvider(this._genesisFeedKey));
1578
+ }
1527
1579
  async _close() {
1528
1580
  (0, import_log6.log)("closing...", {
1529
1581
  key: this._key
1530
1582
  }, {
1531
1583
  F: __dxlog_file8,
1532
- L: 187,
1584
+ L: 192,
1533
1585
  S: this,
1534
1586
  C: (f, a) => f(...a)
1535
1587
  });
@@ -1537,7 +1589,7 @@ var Space = class extends import_context4.Resource {
1537
1589
  await this._controlPipeline.stop();
1538
1590
  (0, import_log6.log)("closed", void 0, {
1539
1591
  F: __dxlog_file8,
1540
- L: 193,
1592
+ L: 198,
1541
1593
  S: this,
1542
1594
  C: (f, a) => f(...a)
1543
1595
  });
@@ -1560,6 +1612,9 @@ _ts_decorate5([
1560
1612
  _ts_decorate5([
1561
1613
  import_tracing.trace.span()
1562
1614
  ], Space.prototype, "_open", null);
1615
+ _ts_decorate5([
1616
+ import_async5.synchronized
1617
+ ], Space.prototype, "startProtocol", null);
1563
1618
  _ts_decorate5([
1564
1619
  import_async5.synchronized
1565
1620
  ], Space.prototype, "_close", null);
@@ -1640,13 +1695,13 @@ var MOCK_AUTH_VERIFIER = async (nonce, credential) => true;
1640
1695
  var SpaceProtocol = class {
1641
1696
  constructor({ topic, swarmIdentity, networkManager, onSessionAuth, onAuthFailure, blobStore, disableP2pReplication }) {
1642
1697
  this._feeds = /* @__PURE__ */ new Set();
1643
- this._sessions = new import_util5.ComplexMap(import_keys4.PublicKey.hash);
1698
+ this._sessions = new import_util6.ComplexMap(import_keys5.PublicKey.hash);
1644
1699
  this._topology = new import_network_manager.MMSTTopology({
1645
1700
  originateConnections: 4,
1646
1701
  maxPeers: 10,
1647
1702
  sampleSize: 20
1648
1703
  });
1649
- this.feedAdded = new import_util5.CallbackCollection();
1704
+ this.feedAdded = new import_util6.CallbackCollection();
1650
1705
  this._spaceKey = topic;
1651
1706
  this._networkManager = networkManager;
1652
1707
  this._swarmIdentity = swarmIdentity;
@@ -1655,7 +1710,7 @@ var SpaceProtocol = class {
1655
1710
  this.blobSync = new import_teleport_extension_object_sync.BlobSync({
1656
1711
  blobStore
1657
1712
  });
1658
- this._topic = import_crypto2.subtleCrypto.digest("SHA-256", topic.asBuffer()).then(import_crypto2.discoveryKey).then(import_keys4.PublicKey.from);
1713
+ this._topic = import_crypto3.subtleCrypto.digest("SHA-256", topic.asBuffer()).then(import_crypto3.discoveryKey).then(import_keys5.PublicKey.from);
1659
1714
  this._disableP2pReplication = disableP2pReplication ?? false;
1660
1715
  }
1661
1716
  get sessions() {
@@ -1699,17 +1754,13 @@ var SpaceProtocol = class {
1699
1754
  const topic = await this._topic;
1700
1755
  this._connection = await this._networkManager.joinSwarm({
1701
1756
  protocolProvider: this._createProtocolProvider(credentials),
1702
- peerInfo: {
1703
- peerKey: this._swarmIdentity.peerKey.toHex(),
1704
- identityKey: this._swarmIdentity.identityKey.toHex()
1705
- },
1706
1757
  topic,
1707
1758
  topology: this._topology,
1708
1759
  label: `swarm ${topic.truncate()} for space ${this._spaceKey.truncate()}`
1709
1760
  });
1710
1761
  (0, import_log8.log)("started", void 0, {
1711
1762
  F: __dxlog_file10,
1712
- L: 162,
1763
+ L: 158,
1713
1764
  S: this,
1714
1765
  C: (f, a) => f(...a)
1715
1766
  });
@@ -1722,14 +1773,14 @@ var SpaceProtocol = class {
1722
1773
  if (this._connection) {
1723
1774
  (0, import_log8.log)("stopping...", void 0, {
1724
1775
  F: __dxlog_file10,
1725
- L: 173,
1776
+ L: 169,
1726
1777
  S: this,
1727
1778
  C: (f, a) => f(...a)
1728
1779
  });
1729
1780
  await this._connection.close();
1730
1781
  (0, import_log8.log)("stopped", void 0, {
1731
1782
  F: __dxlog_file10,
1732
- L: 175,
1783
+ L: 171,
1733
1784
  S: this,
1734
1785
  C: (f, a) => f(...a)
1735
1786
  });
@@ -1804,7 +1855,7 @@ var SpaceProtocolSession = class {
1804
1855
  onAuthSuccess: () => {
1805
1856
  (0, import_log8.log)("Peer authenticated", void 0, {
1806
1857
  F: __dxlog_file10,
1807
- L: 286,
1858
+ L: 282,
1808
1859
  S: this,
1809
1860
  C: (f, a) => f(...a)
1810
1861
  });
@@ -1824,7 +1875,7 @@ var SpaceProtocolSession = class {
1824
1875
  async close() {
1825
1876
  (0, import_log8.log)("close", void 0, {
1826
1877
  F: __dxlog_file10,
1827
- L: 305,
1878
+ L: 301,
1828
1879
  S: this,
1829
1880
  C: (f, a) => f(...a)
1830
1881
  });
@@ -1849,8 +1900,8 @@ function _ts_decorate7(decorators, target, key, desc) {
1849
1900
  var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
1850
1901
  var SpaceManager = class {
1851
1902
  constructor({ feedStore, networkManager, metadataStore, blobStore, disableP2pReplication }) {
1852
- this._spaces = new import_util6.ComplexMap(import_keys5.PublicKey.hash);
1853
- this._instanceId = import_keys5.PublicKey.random().toHex();
1903
+ this._spaces = new import_util7.ComplexMap(import_keys6.PublicKey.hash);
1904
+ this._instanceId = import_keys6.PublicKey.random().toHex();
1854
1905
  this._feedStore = feedStore;
1855
1906
  this._networkManager = networkManager;
1856
1907
  this._metadataStore = metadataStore;
@@ -1887,7 +1938,7 @@ var SpaceManager = class {
1887
1938
  });
1888
1939
  const genesisFeed = await this._feedStore.openFeed(metadata.genesisFeedKey ?? (0, import_debug3.failUndefined)());
1889
1940
  const spaceKey = metadata.key;
1890
- const spaceId = await (0, import_chunk_DZVH7HDD.createIdFromSpaceKey)(spaceKey);
1941
+ const spaceId = await createIdFromSpaceKey(spaceKey);
1891
1942
  const protocol = new SpaceProtocol({
1892
1943
  topic: spaceKey,
1893
1944
  swarmIdentity,
@@ -2007,6 +2058,7 @@ SpaceManager = _ts_decorate7([
2007
2058
  SpaceProtocolSession,
2008
2059
  TimeframeClock,
2009
2060
  codec,
2061
+ createIdFromSpaceKey,
2010
2062
  createMappedFeedWriter,
2011
2063
  hasInvitationExpired,
2012
2064
  mapFeedIndexesToTimeframe,
@@ -2014,4 +2066,4 @@ SpaceManager = _ts_decorate7([
2014
2066
  startAfter,
2015
2067
  valueEncoding
2016
2068
  });
2017
- //# sourceMappingURL=chunk-7HHYCGUR.cjs.map
2069
+ //# sourceMappingURL=chunk-XHGWCBX6.cjs.map