@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.
- package/dist/lib/browser/chunk-COV5H3SU.mjs +2060 -0
- package/dist/lib/browser/chunk-COV5H3SU.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3477 -17
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +17 -7
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-7HHYCGUR.cjs → chunk-XHGWCBX6.cjs} +116 -64
- package/dist/lib/node/chunk-XHGWCBX6.cjs.map +7 -0
- package/dist/lib/node/index.cjs +3454 -35
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +25 -15
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/{browser/chunk-UKXIJW43.mjs → node-esm/chunk-KKYLPT56.mjs} +103 -53
- package/dist/lib/node-esm/chunk-KKYLPT56.mjs.map +7 -0
- package/dist/lib/{browser/chunk-MPWFDDQK.mjs → node-esm/index.mjs} +1723 -342
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/testing/index.mjs +562 -0
- package/dist/lib/node-esm/testing/index.mjs.map +7 -0
- package/dist/types/src/automerge/automerge-host.d.ts +24 -1
- package/dist/types/src/automerge/automerge-host.d.ts.map +1 -1
- package/dist/types/src/automerge/collection-synchronizer.d.ts +2 -0
- package/dist/types/src/automerge/collection-synchronizer.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-network-adapter.d.ts.map +1 -1
- package/dist/types/src/automerge/echo-replicator.d.ts +3 -3
- package/dist/types/src/automerge/echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts +3 -3
- package/dist/types/src/automerge/mesh-echo-replicator-connection.d.ts.map +1 -1
- package/dist/types/src/automerge/mesh-echo-replicator.d.ts.map +1 -1
- package/dist/types/src/automerge/space-collection.d.ts +3 -2
- package/dist/types/src/automerge/space-collection.d.ts.map +1 -1
- package/dist/types/src/db-host/automerge-metrics.d.ts +11 -0
- package/dist/types/src/db-host/automerge-metrics.d.ts.map +1 -0
- package/dist/types/src/db-host/data-service.d.ts +3 -2
- package/dist/types/src/db-host/data-service.d.ts.map +1 -1
- package/dist/types/src/db-host/database-root.d.ts +20 -0
- package/dist/types/src/db-host/database-root.d.ts.map +1 -0
- package/dist/types/src/db-host/documents-iterator.d.ts +7 -0
- package/dist/types/src/db-host/documents-iterator.d.ts.map +1 -0
- package/dist/types/src/db-host/echo-host.d.ts +73 -0
- package/dist/types/src/db-host/echo-host.d.ts.map +1 -0
- package/dist/types/src/db-host/index.d.ts +5 -0
- package/dist/types/src/db-host/index.d.ts.map +1 -1
- package/dist/types/src/db-host/migration.d.ts +8 -0
- package/dist/types/src/db-host/migration.d.ts.map +1 -0
- package/dist/types/src/db-host/query-service.d.ts +25 -0
- package/dist/types/src/db-host/query-service.d.ts.map +1 -0
- package/dist/types/src/db-host/query-state.d.ts +41 -0
- package/dist/types/src/db-host/query-state.d.ts.map +1 -0
- package/dist/types/src/db-host/space-state-manager.d.ts +23 -0
- package/dist/types/src/db-host/space-state-manager.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-replicator.d.ts +23 -0
- package/dist/types/src/edge/echo-edge-replicator.d.ts.map +1 -0
- package/dist/types/src/edge/echo-edge-replicator.test.d.ts +2 -0
- package/dist/types/src/edge/echo-edge-replicator.test.d.ts.map +1 -0
- package/dist/types/src/edge/index.d.ts +2 -0
- package/dist/types/src/edge/index.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/metadata/metadata-store.d.ts +4 -1
- package/dist/types/src/metadata/metadata-store.d.ts.map +1 -1
- package/dist/types/src/space/space-protocol.d.ts.map +1 -1
- package/dist/types/src/space/space.d.ts +1 -0
- package/dist/types/src/space/space.d.ts.map +1 -1
- package/dist/types/src/testing/test-agent-builder.d.ts +2 -0
- package/dist/types/src/testing/test-agent-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-replicator.d.ts +4 -4
- package/dist/types/src/testing/test-replicator.d.ts.map +1 -1
- package/package.json +41 -50
- package/src/automerge/automerge-host.test.ts +8 -9
- package/src/automerge/automerge-host.ts +46 -7
- package/src/automerge/automerge-repo.test.ts +18 -16
- package/src/automerge/collection-synchronizer.test.ts +10 -5
- package/src/automerge/collection-synchronizer.ts +17 -6
- package/src/automerge/echo-data-monitor.test.ts +1 -3
- package/src/automerge/echo-network-adapter.test.ts +4 -3
- package/src/automerge/echo-network-adapter.ts +5 -4
- package/src/automerge/echo-replicator.ts +3 -3
- package/src/automerge/mesh-echo-replicator-connection.ts +10 -9
- package/src/automerge/mesh-echo-replicator.ts +2 -1
- package/src/automerge/space-collection.ts +3 -2
- package/src/automerge/storage-adapter.test.ts +2 -3
- package/src/db-host/automerge-metrics.ts +38 -0
- package/src/db-host/data-service.ts +29 -14
- package/src/db-host/database-root.ts +87 -0
- package/src/db-host/documents-iterator.ts +73 -0
- package/src/db-host/documents-synchronizer.test.ts +2 -2
- package/src/db-host/echo-host.ts +257 -0
- package/src/db-host/index.ts +6 -1
- package/src/db-host/migration.ts +57 -0
- package/src/db-host/query-service.ts +209 -0
- package/src/db-host/query-state.ts +214 -0
- package/src/db-host/space-state-manager.ts +90 -0
- package/src/edge/echo-edge-replicator.test.ts +96 -0
- package/src/edge/echo-edge-replicator.ts +341 -0
- package/src/edge/index.ts +5 -0
- package/src/index.ts +1 -0
- package/src/metadata/metadata-store.ts +22 -2
- package/src/pipeline/pipeline-stress.test.ts +44 -47
- package/src/pipeline/pipeline.test.ts +3 -4
- package/src/space/control-pipeline.test.ts +2 -3
- package/src/space/control-pipeline.ts +10 -1
- package/src/space/replication.browser.test.ts +2 -8
- package/src/space/space-manager.browser.test.ts +6 -5
- package/src/space/space-protocol.browser.test.ts +29 -34
- package/src/space/space-protocol.test.ts +37 -27
- package/src/space/space-protocol.ts +0 -4
- package/src/space/space.test.ts +30 -11
- package/src/space/space.ts +7 -2
- package/src/testing/test-agent-builder.ts +16 -4
- package/src/testing/test-replicator.ts +3 -3
- package/dist/lib/browser/chunk-MPWFDDQK.mjs.map +0 -7
- package/dist/lib/browser/chunk-UKXIJW43.mjs.map +0 -7
- package/dist/lib/browser/chunk-XPCF2V5U.mjs +0 -31
- package/dist/lib/browser/chunk-XPCF2V5U.mjs.map +0 -7
- package/dist/lib/browser/light.mjs +0 -32
- package/dist/lib/browser/light.mjs.map +0 -7
- package/dist/lib/node/chunk-5DH4KR2S.cjs +0 -2148
- package/dist/lib/node/chunk-5DH4KR2S.cjs.map +0 -7
- package/dist/lib/node/chunk-7HHYCGUR.cjs.map +0 -7
- package/dist/lib/node/chunk-DZVH7HDD.cjs +0 -43
- package/dist/lib/node/chunk-DZVH7HDD.cjs.map +0 -7
- package/dist/lib/node/light.cjs +0 -52
- package/dist/lib/node/light.cjs.map +0 -7
- package/dist/types/src/light.d.ts +0 -4
- package/dist/types/src/light.d.ts.map +0 -1
- 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
|
|
30
|
-
__export(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
111
|
-
var
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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,
|
|
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:
|
|
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:
|
|
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,
|
|
297
|
+
await (0, import_util2.forEachAsync)([
|
|
283
298
|
this._metadata.identity?.haloSpace.key,
|
|
284
299
|
...this._metadata.spaces?.map((space) => space.key) ?? []
|
|
285
|
-
].filter(
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
439
|
+
L: 300,
|
|
419
440
|
S: this,
|
|
420
441
|
A: [
|
|
421
|
-
"!(this._metadata.spaces ?? []).find((space) => space.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
|
|
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
|
|
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(
|
|
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,
|
|
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
|
|
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 =
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
1853
|
-
this._instanceId =
|
|
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
|
|
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-
|
|
2069
|
+
//# sourceMappingURL=chunk-XHGWCBX6.cjs.map
|