@enbox/agent 0.7.6 → 0.7.8
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/browser.mjs +9 -11
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/dwn-api.js +3 -2
- package/dist/esm/dwn-api.js.map +1 -1
- package/dist/esm/enbox-connect-protocol.js +5 -5
- package/dist/esm/enbox-connect-protocol.js.map +1 -1
- package/dist/esm/hd-identity-vault.js +187 -177
- package/dist/esm/hd-identity-vault.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/permissions-api.js +7 -34
- package/dist/esm/permissions-api.js.map +1 -1
- package/dist/esm/sync-closure-resolver.js +229 -110
- package/dist/esm/sync-closure-resolver.js.map +1 -1
- package/dist/esm/sync-closure-types.js +24 -7
- package/dist/esm/sync-closure-types.js.map +1 -1
- package/dist/esm/sync-engine-level.js +1961 -764
- package/dist/esm/sync-engine-level.js.map +1 -1
- package/dist/esm/sync-link-id.js +4 -13
- package/dist/esm/sync-link-id.js.map +1 -1
- package/dist/esm/sync-link-reconciler.js +26 -8
- package/dist/esm/sync-link-reconciler.js.map +1 -1
- package/dist/esm/sync-messages.js +218 -154
- package/dist/esm/sync-messages.js.map +1 -1
- package/dist/esm/sync-permission-grants.js +208 -0
- package/dist/esm/sync-permission-grants.js.map +1 -0
- package/dist/esm/sync-replication-ledger.js +23 -40
- package/dist/esm/sync-replication-ledger.js.map +1 -1
- package/dist/esm/sync-scope-acceptance.js +126 -0
- package/dist/esm/sync-scope-acceptance.js.map +1 -0
- package/dist/esm/sync-topological-sort.js +57 -15
- package/dist/esm/sync-topological-sort.js.map +1 -1
- package/dist/esm/types/sync.js +130 -22
- package/dist/esm/types/sync.js.map +1 -1
- package/dist/types/dwn-api.d.ts.map +1 -1
- package/dist/types/hd-identity-vault.d.ts +25 -0
- package/dist/types/hd-identity-vault.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/permissions-api.d.ts +1 -2
- package/dist/types/permissions-api.d.ts.map +1 -1
- package/dist/types/sync-closure-resolver.d.ts.map +1 -1
- package/dist/types/sync-closure-types.d.ts +14 -3
- package/dist/types/sync-closure-types.d.ts.map +1 -1
- package/dist/types/sync-engine-level.d.ts +127 -25
- package/dist/types/sync-engine-level.d.ts.map +1 -1
- package/dist/types/sync-link-id.d.ts +3 -9
- package/dist/types/sync-link-id.d.ts.map +1 -1
- package/dist/types/sync-link-reconciler.d.ts +12 -2
- package/dist/types/sync-link-reconciler.d.ts.map +1 -1
- package/dist/types/sync-messages.d.ts +16 -13
- package/dist/types/sync-messages.d.ts.map +1 -1
- package/dist/types/sync-permission-grants.d.ts +52 -0
- package/dist/types/sync-permission-grants.d.ts.map +1 -0
- package/dist/types/sync-replication-ledger.d.ts +5 -13
- package/dist/types/sync-replication-ledger.d.ts.map +1 -1
- package/dist/types/sync-scope-acceptance.d.ts +28 -0
- package/dist/types/sync-scope-acceptance.d.ts.map +1 -0
- package/dist/types/sync-topological-sort.d.ts +2 -1
- package/dist/types/sync-topological-sort.d.ts.map +1 -1
- package/dist/types/types/identity-vault.d.ts +9 -0
- package/dist/types/types/identity-vault.d.ts.map +1 -1
- package/dist/types/types/permissions.d.ts +2 -0
- package/dist/types/types/permissions.d.ts.map +1 -1
- package/dist/types/types/sync.d.ts +137 -75
- package/dist/types/types/sync.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/dwn-api.ts +3 -2
- package/src/enbox-connect-protocol.ts +5 -5
- package/src/hd-identity-vault.ts +244 -212
- package/src/index.ts +10 -1
- package/src/permissions-api.ts +11 -42
- package/src/sync-closure-resolver.ts +306 -126
- package/src/sync-closure-types.ts +38 -9
- package/src/sync-engine-level.ts +2560 -797
- package/src/sync-link-id.ts +9 -14
- package/src/sync-link-reconciler.ts +43 -10
- package/src/sync-messages.ts +263 -159
- package/src/sync-permission-grants.ts +297 -0
- package/src/sync-replication-ledger.ts +55 -50
- package/src/sync-scope-acceptance.ts +186 -0
- package/src/sync-topological-sort.ts +89 -21
- package/src/types/identity-vault.ts +8 -1
- package/src/types/permissions.ts +2 -0
- package/src/types/sync.ts +235 -62
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-link-reconciler.js","sourceRoot":"","sources":["../../src/sync-link-reconciler.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sync-link-reconciler.js","sourceRoot":"","sources":["../../src/sync-link-reconciler.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { DwnInterfaceName, DwnMethodName, Encoder, Message } from '@enbox/dwn-sdk-js';
|
|
11
11
|
import { DwnInterface } from './types/dwn.js';
|
|
12
12
|
import { isRecordsWrite } from './utils.js';
|
|
13
|
+
import { toMessagesPermissionGrantIds } from './sync-permission-grants.js';
|
|
13
14
|
import { topologicalSort } from './sync-topological-sort.js';
|
|
14
15
|
/** Maximum data size (in bytes) to buffer in memory for retry. Larger payloads are re-fetched. */
|
|
15
16
|
const MAX_BUFFER_SIZE = 1048576; // 1 MB
|
|
17
|
+
/** Raised when an in-flight pull is cancelled before local apply can continue. */
|
|
18
|
+
export class SyncPullAbortedError extends Error {
|
|
19
|
+
constructor() {
|
|
20
|
+
super('Sync pull aborted because the sync target is no longer current.');
|
|
21
|
+
this.name = 'SyncPullAbortedError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function assertShouldContinue(shouldContinue) {
|
|
25
|
+
if ((shouldContinue === null || shouldContinue === void 0 ? void 0 : shouldContinue()) === false) {
|
|
26
|
+
throw new SyncPullAbortedError();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
16
29
|
/**
|
|
17
30
|
* 202: message was successfully written to the remote DWN
|
|
18
31
|
* 204: an initial write message was written without any data
|
|
@@ -92,97 +105,147 @@ export function getMessageCid(message) {
|
|
|
92
105
|
* too much memory.
|
|
93
106
|
*/
|
|
94
107
|
export function pullMessages(_a) {
|
|
95
|
-
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid,
|
|
96
|
-
|
|
97
|
-
const prefetchedEntries = [];
|
|
98
|
-
if (prefetched) {
|
|
99
|
-
for (const entry of prefetched) {
|
|
100
|
-
if (!entry.message) {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
const syncEntry = { message: entry.message };
|
|
104
|
-
if (entry.encodedData) {
|
|
105
|
-
// Convert base64url-encoded data to a ReadableStream.
|
|
106
|
-
const bytes = Encoder.base64UrlToBytes(entry.encodedData);
|
|
107
|
-
syncEntry.bufferedData = bytes;
|
|
108
|
-
syncEntry.dataStream = new ReadableStream({
|
|
109
|
-
start(controller) {
|
|
110
|
-
controller.enqueue(bytes);
|
|
111
|
-
controller.close();
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
prefetchedEntries.push(syncEntry);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
108
|
+
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, prefetched, acceptEntry, shouldContinue, agent }) {
|
|
109
|
+
assertShouldContinue(shouldContinue);
|
|
118
110
|
// Step 1: Fetch remaining messages (not prefetched) from the remote.
|
|
119
111
|
const fetched = messageCids.length > 0
|
|
120
|
-
? yield fetchRemoteMessages({ did, dwnUrl, delegateDid,
|
|
112
|
+
? yield fetchRemoteMessages({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, agent })
|
|
121
113
|
: [];
|
|
114
|
+
assertShouldContinue(shouldContinue);
|
|
122
115
|
// Merge prefetched entries with remotely fetched ones.
|
|
123
|
-
const allFetched = [...
|
|
116
|
+
const allFetched = [...syncEntriesFromPrefetchedDiff(prefetched), ...fetched];
|
|
117
|
+
const { accepted, rejectedCids } = yield applyPullAcceptanceGate(allFetched, acceptEntry, shouldContinue);
|
|
118
|
+
assertShouldContinue(shouldContinue);
|
|
124
119
|
// Step 2: Build dependency graph and topological sort.
|
|
125
|
-
const sorted = topologicalSort(
|
|
120
|
+
const sorted = topologicalSort(accepted);
|
|
126
121
|
// Step 3: Buffer small data streams so they can be replayed on retry.
|
|
127
|
-
yield bufferSmallStreams(sorted);
|
|
122
|
+
yield bufferSmallStreams(sorted, shouldContinue);
|
|
123
|
+
assertShouldContinue(shouldContinue);
|
|
128
124
|
// Step 4: Process messages in dependency order with multi-pass retry.
|
|
129
125
|
const MAX_RETRY_PASSES = 3;
|
|
130
126
|
let pending = sorted;
|
|
131
127
|
for (let pass = 0; pass <= MAX_RETRY_PASSES && pending.length > 0; pass++) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
assertShouldContinue(shouldContinue);
|
|
129
|
+
const failed = yield processPullPass({ did, entries: pending, shouldContinue, agent });
|
|
130
|
+
assertShouldContinue(shouldContinue);
|
|
131
|
+
pending = failed.length === 0
|
|
132
|
+
? []
|
|
133
|
+
: yield preparePullRetry({ did, dwnUrl, delegateDid, permissionGrantIds, failed, shouldContinue, agent });
|
|
134
|
+
}
|
|
135
|
+
// Return CIDs that permanently failed after all retry passes.
|
|
136
|
+
return [...rejectedCids, ...yield getMessageCids(pending)];
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function applyPullAcceptanceGate(entries, acceptEntry, shouldContinue) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
if (!acceptEntry) {
|
|
142
|
+
return { accepted: entries, rejectedCids: [] };
|
|
143
|
+
}
|
|
144
|
+
const accepted = [];
|
|
145
|
+
const rejectedCids = [];
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
assertShouldContinue(shouldContinue);
|
|
148
|
+
if (yield acceptEntry(entry, entries)) {
|
|
149
|
+
accepted.push(entry);
|
|
142
150
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
151
|
+
else {
|
|
152
|
+
rejectedCids.push(yield getMessageCid(entry.message));
|
|
153
|
+
}
|
|
154
|
+
assertShouldContinue(shouldContinue);
|
|
155
|
+
}
|
|
156
|
+
return { accepted, rejectedCids };
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function syncEntriesFromPrefetchedDiff(prefetched) {
|
|
160
|
+
if (!prefetched) {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
const entries = [];
|
|
164
|
+
for (const entry of prefetched) {
|
|
165
|
+
if (!entry.message) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const syncEntry = { message: entry.message };
|
|
169
|
+
if (entry.encodedData) {
|
|
170
|
+
const bytes = Encoder.base64UrlToBytes(entry.encodedData);
|
|
171
|
+
syncEntry.bufferedData = bytes;
|
|
172
|
+
syncEntry.dataStream = dataStreamFromBytes(bytes);
|
|
173
|
+
}
|
|
174
|
+
entries.push(syncEntry);
|
|
175
|
+
}
|
|
176
|
+
return entries;
|
|
177
|
+
}
|
|
178
|
+
function dataStreamFromBytes(bytes) {
|
|
179
|
+
return new ReadableStream({
|
|
180
|
+
start(controller) {
|
|
181
|
+
controller.enqueue(bytes);
|
|
182
|
+
controller.close();
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function replayableDataStream(entry) {
|
|
187
|
+
return entry.bufferedData ? dataStreamFromBytes(entry.bufferedData) : entry.dataStream;
|
|
188
|
+
}
|
|
189
|
+
function processPullPass(_a) {
|
|
190
|
+
return __awaiter(this, arguments, void 0, function* ({ did, entries, shouldContinue, agent }) {
|
|
191
|
+
const failed = [];
|
|
192
|
+
for (const entry of entries) {
|
|
193
|
+
assertShouldContinue(shouldContinue);
|
|
194
|
+
const pullReply = yield agent.dwn.processRawMessage(did, entry.message, {
|
|
195
|
+
dataStream: replayableDataStream(entry),
|
|
196
|
+
});
|
|
197
|
+
assertShouldContinue(shouldContinue);
|
|
198
|
+
if (!syncMessageReplyIsSuccessful(pullReply)) {
|
|
199
|
+
failed.push(entry);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return failed;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
function preparePullRetry(_a) {
|
|
206
|
+
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid, permissionGrantIds, failed, shouldContinue, agent }) {
|
|
207
|
+
const canRetry = [];
|
|
208
|
+
const needsRefetch = [];
|
|
209
|
+
for (const entry of failed) {
|
|
210
|
+
if (entry.bufferedData || !entry.dataStream) {
|
|
211
|
+
canRetry.push(entry);
|
|
165
212
|
}
|
|
166
213
|
else {
|
|
167
|
-
|
|
214
|
+
needsRefetch.push(yield getMessageCid(entry.message));
|
|
168
215
|
}
|
|
169
216
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
217
|
+
if (needsRefetch.length > 0) {
|
|
218
|
+
assertShouldContinue(shouldContinue);
|
|
219
|
+
canRetry.push(...yield fetchRemoteMessages({
|
|
220
|
+
did,
|
|
221
|
+
dwnUrl,
|
|
222
|
+
delegateDid,
|
|
223
|
+
permissionGrantIds,
|
|
224
|
+
messageCids: needsRefetch,
|
|
225
|
+
agent,
|
|
226
|
+
}));
|
|
227
|
+
assertShouldContinue(shouldContinue);
|
|
175
228
|
}
|
|
176
|
-
return
|
|
229
|
+
return topologicalSort(canRetry);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
function getMessageCids(entries) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
const cids = [];
|
|
235
|
+
for (const entry of entries) {
|
|
236
|
+
cids.push(yield getMessageCid(entry.message));
|
|
237
|
+
}
|
|
238
|
+
return cids;
|
|
177
239
|
});
|
|
178
240
|
}
|
|
179
241
|
/**
|
|
180
242
|
* Buffers small data streams into `Uint8Array` so they can be replayed on retry.
|
|
181
243
|
* Streams larger than `MAX_BUFFER_SIZE` are left as-is (will be re-fetched on retry).
|
|
182
244
|
*/
|
|
183
|
-
function bufferSmallStreams(entries) {
|
|
245
|
+
function bufferSmallStreams(entries, shouldContinue) {
|
|
184
246
|
return __awaiter(this, void 0, void 0, function* () {
|
|
185
247
|
for (const entry of entries) {
|
|
248
|
+
assertShouldContinue(shouldContinue);
|
|
186
249
|
if (!entry.dataStream) {
|
|
187
250
|
continue;
|
|
188
251
|
}
|
|
@@ -198,6 +261,7 @@ function bufferSmallStreams(entries) {
|
|
|
198
261
|
if (done) {
|
|
199
262
|
break;
|
|
200
263
|
}
|
|
264
|
+
assertShouldContinue(shouldContinue);
|
|
201
265
|
totalSize += value.byteLength;
|
|
202
266
|
if (totalSize > MAX_BUFFER_SIZE) {
|
|
203
267
|
exceededThreshold = true;
|
|
@@ -224,12 +288,8 @@ function bufferSmallStreams(entries) {
|
|
|
224
288
|
}
|
|
225
289
|
entry.bufferedData = buffer;
|
|
226
290
|
// Create a fresh ReadableStream from the buffer for the first processing attempt.
|
|
227
|
-
entry.dataStream =
|
|
228
|
-
|
|
229
|
-
controller.enqueue(buffer);
|
|
230
|
-
controller.close();
|
|
231
|
-
}
|
|
232
|
-
});
|
|
291
|
+
entry.dataStream = dataStreamFromBytes(buffer);
|
|
292
|
+
assertShouldContinue(shouldContinue);
|
|
233
293
|
}
|
|
234
294
|
});
|
|
235
295
|
}
|
|
@@ -237,19 +297,8 @@ function bufferSmallStreams(entries) {
|
|
|
237
297
|
* Fetches messages from a remote DWN by their CIDs using MessagesRead.
|
|
238
298
|
*/
|
|
239
299
|
export function fetchRemoteMessages(_a) {
|
|
240
|
-
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid,
|
|
300
|
+
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, agent }) {
|
|
241
301
|
const results = [];
|
|
242
|
-
let permissionGrantId;
|
|
243
|
-
if (delegateDid) {
|
|
244
|
-
const messagesReadGrant = yield permissionsApi.getPermissionForRequest({
|
|
245
|
-
connectedDid: did,
|
|
246
|
-
messageType: DwnInterface.MessagesRead,
|
|
247
|
-
delegateDid,
|
|
248
|
-
protocol,
|
|
249
|
-
cached: true
|
|
250
|
-
});
|
|
251
|
-
permissionGrantId = messagesReadGrant.grant.id;
|
|
252
|
-
}
|
|
253
302
|
// Fetch messages in parallel with bounded concurrency. Keep this low
|
|
254
303
|
// to avoid bursting through the remote server's rate limits during sync.
|
|
255
304
|
const CONCURRENCY = 4;
|
|
@@ -265,7 +314,7 @@ export function fetchRemoteMessages(_a) {
|
|
|
265
314
|
target: did,
|
|
266
315
|
messageType: DwnInterface.MessagesRead,
|
|
267
316
|
granteeDid: delegateDid,
|
|
268
|
-
messageParams: { messageCid,
|
|
317
|
+
messageParams: { messageCid, permissionGrantIds: toMessagesPermissionGrantIds(permissionGrantIds) }
|
|
269
318
|
});
|
|
270
319
|
let reply;
|
|
271
320
|
try {
|
|
@@ -309,23 +358,16 @@ export function fetchRemoteMessages(_a) {
|
|
|
309
358
|
* incrementally — only up to the highest contiguous success.
|
|
310
359
|
*/
|
|
311
360
|
export function pushMessages(_a) {
|
|
312
|
-
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid,
|
|
313
|
-
var _b, _c, _d;
|
|
361
|
+
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, delegateDid, permissionGrantIds, messageCids, agent }) {
|
|
314
362
|
const succeeded = [];
|
|
315
|
-
const failed = [];
|
|
316
363
|
const permanentlyFailed = [];
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
else {
|
|
325
|
-
// Message could not be fetched locally — mark as failed.
|
|
326
|
-
failed.push(messageCid);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
364
|
+
const { fetched, failed } = yield fetchLocalMessagesForPush({
|
|
365
|
+
did,
|
|
366
|
+
delegateDid,
|
|
367
|
+
permissionGrantIds,
|
|
368
|
+
messageCids,
|
|
369
|
+
agent,
|
|
370
|
+
});
|
|
329
371
|
// Step 2: Sort in dependency order using topological sort.
|
|
330
372
|
const sorted = topologicalSort(fetched);
|
|
331
373
|
// Step 3: Buffer data streams so they survive fetch retries.
|
|
@@ -334,74 +376,96 @@ export function pushMessages(_a) {
|
|
|
334
376
|
yield bufferSmallStreams(sorted);
|
|
335
377
|
// Step 4: Push messages in dependency order.
|
|
336
378
|
for (const entry of sorted) {
|
|
337
|
-
const
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
const data = entry.bufferedData
|
|
341
|
-
? new Blob([entry.bufferedData], { type: 'application/octet-stream' })
|
|
342
|
-
: entry.dataStream;
|
|
343
|
-
try {
|
|
344
|
-
const reply = yield agent.rpc.sendDwnRequest({
|
|
345
|
-
dwnUrl,
|
|
346
|
-
targetDid: did,
|
|
347
|
-
data,
|
|
348
|
-
message: entry.message
|
|
349
|
-
});
|
|
350
|
-
if (syncMessageReplyIsSuccessful(reply, entry.message)) {
|
|
351
|
-
succeeded.push(cid);
|
|
352
|
-
}
|
|
353
|
-
else if (isPermanentPushFailure(reply)) {
|
|
354
|
-
// Permanent failures (400/401/403) will never succeed — do NOT retry.
|
|
355
|
-
// These include protocol violations (RecordLimitExceeded), auth errors,
|
|
356
|
-
// and schema validation failures.
|
|
357
|
-
if (reply.status.code === 400 && ((_b = reply.status.detail) === null || _b === void 0 ? void 0 : _b.includes('record limit'))) {
|
|
358
|
-
// Expected for singleton convergence in multi-device scenarios:
|
|
359
|
-
// one device created a singleton record, this device has a
|
|
360
|
-
// different one, and the remote rejects the duplicate.
|
|
361
|
-
console.debug(`SyncEngineLevel: singleton already exists on remote, skipping push for ${cid}`);
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
console.warn(`SyncEngineLevel: push permanently failed for ${cid}: ${reply.status.code} ${reply.status.detail}`);
|
|
365
|
-
}
|
|
366
|
-
permanentlyFailed.push({ cid, statusCode: reply.status.code, detail: (_c = reply.status.detail) !== null && _c !== void 0 ? _c : '' });
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
// Transient failures (5xx, etc.) — worth retrying.
|
|
370
|
-
console.error(`SyncEngineLevel: push failed for ${cid}: ${reply.status.code} ${reply.status.detail}`);
|
|
371
|
-
failed.push(cid);
|
|
372
|
-
}
|
|
379
|
+
const outcome = yield pushSingleMessage({ did, dwnUrl, entry, agent });
|
|
380
|
+
if (outcome.status === 'succeeded') {
|
|
381
|
+
succeeded.push(outcome.cid);
|
|
373
382
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
383
|
+
else if (outcome.status === 'permanent') {
|
|
384
|
+
permanentlyFailed.push(outcome.failure);
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
failed.push(outcome.cid);
|
|
378
388
|
}
|
|
379
389
|
}
|
|
380
390
|
return { succeeded, failed, permanentlyFailed };
|
|
381
391
|
});
|
|
382
392
|
}
|
|
393
|
+
function fetchLocalMessagesForPush(_a) {
|
|
394
|
+
return __awaiter(this, arguments, void 0, function* ({ did, delegateDid, permissionGrantIds, messageCids, agent }) {
|
|
395
|
+
const fetched = [];
|
|
396
|
+
const failed = [];
|
|
397
|
+
for (const messageCid of messageCids) {
|
|
398
|
+
const dwnMessage = yield getLocalMessage({ author: did, messageCid, delegateDid, permissionGrantIds, agent });
|
|
399
|
+
if (dwnMessage) {
|
|
400
|
+
fetched.push(dwnMessage);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
failed.push(messageCid);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return { fetched, failed };
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
function pushSingleMessage(_a) {
|
|
410
|
+
return __awaiter(this, arguments, void 0, function* ({ did, dwnUrl, entry, agent }) {
|
|
411
|
+
var _b, _c;
|
|
412
|
+
const cid = yield getMessageCid(entry.message);
|
|
413
|
+
try {
|
|
414
|
+
const reply = yield agent.rpc.sendDwnRequest({
|
|
415
|
+
dwnUrl,
|
|
416
|
+
targetDid: did,
|
|
417
|
+
data: pushData(entry),
|
|
418
|
+
message: entry.message
|
|
419
|
+
});
|
|
420
|
+
if (syncMessageReplyIsSuccessful(reply, entry.message)) {
|
|
421
|
+
return { status: 'succeeded', cid };
|
|
422
|
+
}
|
|
423
|
+
if (isPermanentPushFailure(reply)) {
|
|
424
|
+
logPermanentPushFailure(cid, reply);
|
|
425
|
+
return {
|
|
426
|
+
status: 'permanent',
|
|
427
|
+
cid,
|
|
428
|
+
failure: { cid, statusCode: reply.status.code, detail: (_b = reply.status.detail) !== null && _b !== void 0 ? _b : '' },
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
console.error(`SyncEngineLevel: push failed for ${cid}: ${reply.status.code} ${reply.status.detail}`);
|
|
432
|
+
return { status: 'failed', cid };
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
console.error(`SyncEngineLevel: push error for ${cid}: ${(_c = error.message) !== null && _c !== void 0 ? _c : error}`);
|
|
436
|
+
return { status: 'failed', cid };
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
function pushData(entry) {
|
|
441
|
+
// Use a Blob for buffered data: unlike ReadableStream, Blob is replayable,
|
|
442
|
+
// so fetchWithRetry can retry the HTTP request after a transport failure.
|
|
443
|
+
return entry.bufferedData
|
|
444
|
+
? new Blob([entry.bufferedData], { type: 'application/octet-stream' })
|
|
445
|
+
: entry.dataStream;
|
|
446
|
+
}
|
|
447
|
+
function logPermanentPushFailure(cid, reply) {
|
|
448
|
+
var _a;
|
|
449
|
+
if (reply.status.code === 400 && ((_a = reply.status.detail) === null || _a === void 0 ? void 0 : _a.includes('record limit'))) {
|
|
450
|
+
// Expected for singleton convergence in multi-device scenarios: one device
|
|
451
|
+
// created a singleton record, this device has another, and the remote
|
|
452
|
+
// rejects the duplicate.
|
|
453
|
+
console.debug(`SyncEngineLevel: singleton already exists on remote, skipping push for ${cid}`);
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
console.warn(`SyncEngineLevel: push permanently failed for ${cid}: ${reply.status.code} ${reply.status.detail}`);
|
|
457
|
+
}
|
|
383
458
|
/**
|
|
384
459
|
* Reads a message from the local DWN by its CID using MessagesRead.
|
|
385
460
|
*/
|
|
386
461
|
export function getLocalMessage(_a) {
|
|
387
|
-
return __awaiter(this, arguments, void 0, function* ({ author, delegateDid,
|
|
388
|
-
let permissionGrantId;
|
|
389
|
-
if (delegateDid) {
|
|
390
|
-
const messagesReadGrant = yield permissionsApi.getPermissionForRequest({
|
|
391
|
-
connectedDid: author,
|
|
392
|
-
messageType: DwnInterface.MessagesRead,
|
|
393
|
-
delegateDid,
|
|
394
|
-
protocol,
|
|
395
|
-
cached: true
|
|
396
|
-
});
|
|
397
|
-
permissionGrantId = messagesReadGrant.grant.id;
|
|
398
|
-
}
|
|
462
|
+
return __awaiter(this, arguments, void 0, function* ({ author, delegateDid, permissionGrantIds, messageCid, agent }) {
|
|
399
463
|
const { reply } = yield agent.dwn.processRequest({
|
|
400
464
|
author,
|
|
401
465
|
target: author,
|
|
402
466
|
messageType: DwnInterface.MessagesRead,
|
|
403
467
|
granteeDid: delegateDid,
|
|
404
|
-
messageParams: { messageCid,
|
|
468
|
+
messageParams: { messageCid, permissionGrantIds: toMessagesPermissionGrantIds(permissionGrantIds) }
|
|
405
469
|
});
|
|
406
470
|
if (reply.status.code !== 200 || !reply.entry) {
|
|
407
471
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-messages.js","sourceRoot":"","sources":["../../src/sync-messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-messages.js","sourceRoot":"","sources":["../../src/sync-messages.ts"],"names":[],"mappings":";;;;;;;;;AAKA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,kGAAkG;AAClG,MAAM,eAAe,GAAG,OAAS,CAAC,CAAC,OAAO;AAgB1C,kFAAkF;AAClF,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C;QACE,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,cAA2C;IACvE,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,EAAI,MAAK,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAwB,EAAE,aAA8B;;IACnG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QAC9B,sEAAsE;QACtE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC,SAAS,MAAK,gBAAgB,CAAC,OAAO;YAChE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC,MAAM,MAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oFAAoF;QACpF,IAAI,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,OAAO,CAAC,UAAU,CAAC,SAAS,MAAK,gBAAgB,CAAC,OAAO;YACtE,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,OAAO,CAAC,UAAU,CAAC,MAAM,MAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,6BAA6B,GAAG;IACpC,8BAA8B;IAC9B,kBAAkB;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAwB;IAC7D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAEtC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAElD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAgB,aAAa,CAAC,OAAuB;;QACzD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAgB,YAAY;yDAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAW7I;QACC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAErC,qEAAqE;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,MAAM,mBAAmB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACjG,CAAC,CAAC,EAAE,CAAC;QACP,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAErC,uDAAuD;QACvD,MAAM,UAAU,GAAG,CAAC,GAAG,6BAA6B,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QAE9E,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1G,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAErC,uDAAuD;QACvD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEzC,sEAAsE;QACtE,MAAM,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAErC,sEAAsE;QACtE,MAAM,gBAAgB,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,GAAG,MAAM,CAAC;QAErB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC1E,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YACvF,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC3B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,8DAA8D;QAC9D,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;CAAA;AAED,SAAe,uBAAuB,CACpC,OAA2B,EAC3B,WAA8C,EAC9C,cAA8B;;QAE9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,IAAI,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACpC,CAAC;CAAA;AAED,SAAS,6BAA6B,CAAC,UAAoC;IACzE,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAE/B,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEjC,MAAM,SAAS,GAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1D,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;YAC/B,SAAS,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAiB;IAC5C,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,UAAU;YACd,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAuB;IACnD,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AACzF,CAAC;AAED,SAAe,eAAe;yDAAC,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAKnE;QACC,MAAM,MAAM,GAAuB,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE;gBACtE,UAAU,EAAE,oBAAoB,CAAC,KAAK,CAAC;aACxC,CAAC,CAAC;YACH,oBAAoB,CAAC,cAAc,CAAC,CAAC;YAErC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAED,SAAe,gBAAgB;yDAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAQ5G;QACC,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAmB,CAAC;gBACzC,GAAG;gBACH,MAAM;gBACN,WAAW;gBACX,kBAAkB;gBAClB,WAAW,EAAE,YAAY;gBACzB,KAAK;aACN,CAAC,CAAC,CAAC;YACJ,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CAAA;AAED,SAAe,cAAc,CAAC,OAA2B;;QACvD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED;;;GAGG;AACH,SAAe,kBAAkB,CAAC,OAA2B,EAAE,cAA8B;;QAC3F,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,qEAAqE;YACrE,qEAAqE;YACrE,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAE5C,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5C,IAAI,IAAI,EAAE,CAAC;wBAAC,MAAM;oBAAC,CAAC;oBACpB,oBAAoB,CAAC,cAAc,CAAC,CAAC;oBACrC,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC;oBAC9B,IAAI,SAAS,GAAG,eAAe,EAAE,CAAC;wBAChC,iBAAiB,GAAG,IAAI,CAAC;wBACzB,MAAM;oBACR,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACtB,oEAAoE;gBACpE,4CAA4C;gBAC5C,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,kDAAkD;YAClD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;YAC7B,CAAC;YAED,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;YAC5B,kFAAkF;YAClF,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC/C,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,UAAgB,mBAAmB;yDAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAO3G;QACC,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;YAC9D,MAAM,IAAI,WAAW,CAAC;YAGtB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAO,UAAU,EAAwB,EAAE;;gBAC1F,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC;oBACjD,KAAK,EAAW,KAAK;oBACrB,MAAM,EAAU,GAAG;oBACnB,MAAM,EAAU,GAAG;oBACnB,WAAW,EAAK,YAAY,CAAC,YAAY;oBACzC,UAAU,EAAM,WAAW;oBAC3B,aAAa,EAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,EAAE;iBACrG,CAAC,CAAC;gBAEH,IAAI,KAAwB,CAAC;gBAC7B,IAAI,CAAC;oBACH,KAAK,IAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;wBACrC,MAAM;wBACN,SAAS,EAAG,GAAG;wBACf,OAAO,EAAK,YAAY,CAAC,OAAO;qBACjC,CAAsB,CAAA,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,0CAA0C,UAAU,SAAS,MAAM,GAAG,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,KAAK,CAAC,CAAC;oBAC9G,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,OAAO,CAAA,EAAE,CAAC;oBACvD,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/B,IAAI,UAAkD,CAAC;gBACvD,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;oBAClD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;gBAC/B,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YACrD,CAAC,CAAA,CAAC,CAAC,CAAC;YAEJ,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,UAAgB,YAAY;yDAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAOpG;QACC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QACrD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,yBAAyB,CAAC;YAC1D,GAAG;YACH,WAAW;YACX,kBAAkB;YAClB,WAAW;YACX,KAAK;SACN,CAAC,CAAC;QAEH,2DAA2D;QAC3D,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,6DAA6D;QAC7D,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEjC,6CAA6C;QAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC1C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;CAAA;AAED,SAAe,yBAAyB;yDAAC,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAMlG;QACC,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9G,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;CAAA;AAOD,SAAe,iBAAiB;yDAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAK3D;;QACC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC3C,MAAM;gBACN,SAAS,EAAG,GAAG;gBACf,IAAI,EAAQ,QAAQ,CAAC,KAAK,CAAC;gBAC3B,OAAO,EAAK,KAAK,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,IAAI,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;YACtC,CAAC;YAED,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO;oBACL,MAAM,EAAI,WAAW;oBACrB,GAAG;oBACH,OAAO,EAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,CAAC,MAAM,mCAAI,EAAE,EAAE;iBACpF,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACtG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,MAAA,KAAK,CAAC,OAAO,mCAAI,KAAK,EAAE,CAAC,CAAC;YACnF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CAAA;AAED,SAAS,QAAQ,CAAC,KAAuB;IACvC,2EAA2E;IAC3E,0EAA0E;IAC1E,OAAO,KAAK,CAAC,YAAY;QACvB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAe,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;QACpF,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AACvB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW,EAAE,KAAwB;;IACpE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,KAAI,MAAA,KAAK,CAAC,MAAM,CAAC,MAAM,0CAAE,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAE,CAAC;QAC/E,2EAA2E;QAC3E,sEAAsE;QACtE,yBAAyB;QACzB,OAAO,CAAC,KAAK,CAAC,0EAA0E,GAAG,EAAE,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,gDAAgD,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACnH,CAAC;AAED;;GAEG;AACH,MAAM,UAAgB,eAAe;yDAAC,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAMjG;QACC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC;YAC/C,MAAM;YACN,MAAM,EAAU,MAAM;YACtB,WAAW,EAAK,YAAY,CAAC,YAAY;YACzC,UAAU,EAAM,WAAW;YAC3B,aAAa,EAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,EAAE;SACrG,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAM,CAAC;QAElC,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,YAAY,CAAC,OAAO;SAC9B,CAAC;QAEF,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;QACxC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA"}
|