@dxos/teleport-extension-object-sync 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef

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.
@@ -9,28 +9,20 @@ import { RpcClosedError } from "@dxos/protocols";
9
9
  import { schema } from "@dxos/protocols/proto";
10
10
  import { RpcExtension } from "@dxos/teleport";
11
11
  import { BitField } from "@dxos/util";
12
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-sync-extension.ts";
12
13
  function _ts_decorate(decorators, target, key, desc) {
13
14
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
15
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
16
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
17
  return c > 3 && r && Object.defineProperty(target, key, r), r;
17
18
  }
18
- var __dxlog_file = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-sync-extension.ts";
19
19
  var MIN_WANT_LIST_UPDATE_INTERVAL = process.env.NODE_ENV === "test" ? 5 : 500;
20
20
  var MAX_CONCURRENT_UPLOADS = 20;
21
21
  var BlobSyncExtension = class extends RpcExtension {
22
22
  _params;
23
23
  _ctx = new Context({
24
- onError: (err) => log.catch(err, void 0, {
25
- F: __dxlog_file,
26
- L: 35,
27
- S: this,
28
- C: (f, a) => f(...a)
29
- })
30
- }, {
31
- F: __dxlog_file,
32
- L: 35
33
- });
24
+ onError: (err) => log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 26, S: this })
25
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 25 });
34
26
  _lastWantListUpdate = 0;
35
27
  _localWantList = {
36
28
  blobs: []
@@ -44,12 +36,7 @@ var BlobSyncExtension = class extends RpcExtension {
44
36
  }
45
37
  log("want", {
46
38
  list: this._localWantList
47
- }, {
48
- F: __dxlog_file,
49
- L: 49,
50
- S: this,
51
- C: (f, a) => f(...a)
52
- });
39
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 40, S: this });
53
40
  await this.rpc.BlobSyncService.want(this._localWantList);
54
41
  this._lastWantListUpdate = Date.now();
55
42
  });
@@ -73,12 +60,7 @@ var BlobSyncExtension = class extends RpcExtension {
73
60
  }
74
61
  log.warn("push failed", {
75
62
  err
76
- }, {
77
- F: __dxlog_file,
78
- L: 76,
79
- S: this,
80
- C: (f, a) => f(...a)
81
- });
63
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 64, S: this });
82
64
  }).finally(() => {
83
65
  this._currentUploads--;
84
66
  this.reconcileUploads();
@@ -106,33 +88,18 @@ var BlobSyncExtension = class extends RpcExtension {
106
88
  }), this._params = _params;
107
89
  }
108
90
  async onOpen(context) {
109
- log("open", void 0, {
110
- F: __dxlog_file,
111
- L: 108,
112
- S: this,
113
- C: (f, a) => f(...a)
114
- });
91
+ log("open", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 93, S: this });
115
92
  await super.onOpen(context);
116
93
  await this._params.onOpen();
117
94
  }
118
95
  async onClose(err) {
119
- log("close", void 0, {
120
- F: __dxlog_file,
121
- L: 114,
122
- S: this,
123
- C: (f, a) => f(...a)
124
- });
96
+ log("close", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 98, S: this });
125
97
  await this._ctx.dispose();
126
98
  await this._params.onClose();
127
99
  await super.onClose(err);
128
100
  }
129
101
  async onAbort(err) {
130
- log("abort", void 0, {
131
- F: __dxlog_file,
132
- L: 121,
133
- S: this,
134
- C: (f, a) => f(...a)
135
- });
102
+ log("abort", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 104, S: this });
136
103
  await this._ctx.dispose();
137
104
  await this._params.onAbort();
138
105
  await super.onAbort(err);
@@ -143,24 +110,14 @@ var BlobSyncExtension = class extends RpcExtension {
143
110
  want: async (wantList) => {
144
111
  log("remote want", {
145
112
  remoteWantList: wantList
146
- }, {
147
- F: __dxlog_file,
148
- L: 131,
149
- S: this,
150
- C: (f, a) => f(...a)
151
- });
113
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 113, S: this });
152
114
  this.remoteWantList = wantList;
153
115
  this.reconcileUploads();
154
116
  },
155
117
  push: async (data) => {
156
118
  log("received", {
157
119
  data
158
- }, {
159
- F: __dxlog_file,
160
- L: 136,
161
- S: this,
162
- C: (f, a) => f(...a)
163
- });
120
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 120, S: this });
164
121
  await this._params.onPush(data);
165
122
  }
166
123
  }
@@ -172,12 +129,7 @@ var BlobSyncExtension = class extends RpcExtension {
172
129
  }
173
130
  log("push", {
174
131
  data
175
- }, {
176
- F: __dxlog_file,
177
- L: 148,
178
- S: this,
179
- C: (f, a) => f(...a)
180
- });
132
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 132, S: this });
181
133
  await this.rpc.BlobSyncService.push(data);
182
134
  }
183
135
  updateWantList(wantList) {
@@ -209,43 +161,14 @@ var BlobSyncExtension = class extends RpcExtension {
209
161
  if (!meta) {
210
162
  continue;
211
163
  }
212
- invariant(meta.bitfield, void 0, {
213
- F: __dxlog_file,
214
- L: 187,
215
- S: this,
216
- A: [
217
- "meta.bitfield",
218
- ""
219
- ]
220
- });
221
- invariant(meta.chunkSize, void 0, {
222
- F: __dxlog_file,
223
- L: 188,
224
- S: this,
225
- A: [
226
- "meta.chunkSize",
227
- ""
228
- ]
229
- });
230
- invariant(meta.length, void 0, {
231
- F: __dxlog_file,
232
- L: 189,
233
- S: this,
234
- A: [
235
- "meta.length",
236
- ""
237
- ]
238
- });
164
+ invariant(meta.bitfield, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 166, S: this, A: ["meta.bitfield", ""] });
165
+ invariant(meta.chunkSize, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 167, S: this, A: ["meta.chunkSize", ""] });
166
+ invariant(meta.length, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 168, S: this, A: ["meta.length", ""] });
239
167
  if (header.chunkSize && header.chunkSize !== meta.chunkSize) {
240
168
  log.warn("Invalid chunk size", {
241
169
  header,
242
170
  meta
243
- }, {
244
- F: __dxlog_file,
245
- L: 192,
246
- S: this,
247
- C: (f, a) => f(...a)
248
- });
171
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 170, S: this });
249
172
  continue;
250
173
  }
251
174
  const requestBitfield = header.bitfield ?? BitField.ones(meta.length / meta.chunkSize);
@@ -283,19 +206,16 @@ import { PublicKey } from "@dxos/keys";
283
206
  import { log as log2 } from "@dxos/log";
284
207
  import { BlobMeta } from "@dxos/protocols/proto/dxos/echo/blob";
285
208
  import { BitField as BitField2, ComplexMap } from "@dxos/util";
209
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-sync.ts";
286
210
  function _ts_decorate2(decorators, target, key, desc) {
287
211
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
288
212
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
289
213
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
290
214
  return c > 3 && r && Object.defineProperty(target, key, r), r;
291
215
  }
292
- var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-sync.ts";
293
216
  var BlobSync = class {
294
217
  _params;
295
- _ctx = new Context2(void 0, {
296
- F: __dxlog_file2,
297
- L: 30
298
- });
218
+ _ctx = new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 20 });
299
219
  _mutex = new Mutex();
300
220
  _downloadRequests = new ComplexMap((key) => PublicKey.from(key).toHex());
301
221
  _extensions = /* @__PURE__ */ new Set();
@@ -315,12 +235,7 @@ var BlobSync = class {
315
235
  async download(ctx, id) {
316
236
  log2("download", {
317
237
  id
318
- }, {
319
- F: __dxlog_file2,
320
- L: 53,
321
- S: this,
322
- C: (f, a) => f(...a)
323
- });
238
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 36, S: this });
324
239
  const request = await this._mutex.executeSynchronized(async () => {
325
240
  const existingRequest = this._downloadRequests.get(id);
326
241
  if (existingRequest) {
@@ -361,31 +276,16 @@ var BlobSync = class {
361
276
  const extension = new BlobSyncExtension({
362
277
  blobStore: this._params.blobStore,
363
278
  onOpen: async () => {
364
- log2("extension opened", void 0, {
365
- F: __dxlog_file2,
366
- L: 105,
367
- S: this,
368
- C: (f, a) => f(...a)
369
- });
279
+ log2("extension opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 81, S: this });
370
280
  this._extensions.add(extension);
371
281
  extension.updateWantList(this._getWantList());
372
282
  },
373
283
  onClose: async () => {
374
- log2("extension closed", void 0, {
375
- F: __dxlog_file2,
376
- L: 110,
377
- S: this,
378
- C: (f, a) => f(...a)
379
- });
284
+ log2("extension closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 86, S: this });
380
285
  this._extensions.delete(extension);
381
286
  },
382
287
  onAbort: async () => {
383
- log2("extension aborted", void 0, {
384
- F: __dxlog_file2,
385
- L: 114,
386
- S: this,
387
- C: (f, a) => f(...a)
388
- });
288
+ log2("extension aborted", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 90, S: this });
389
289
  this._extensions.delete(extension);
390
290
  },
391
291
  onPush: async (blobChunk) => {
@@ -394,26 +294,13 @@ var BlobSync = class {
394
294
  }
395
295
  log2("received", {
396
296
  blobChunk
397
- }, {
398
- F: __dxlog_file2,
399
- L: 121,
400
- S: this,
401
- C: (f, a) => f(...a)
402
- });
297
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 97, S: this });
403
298
  const meta = await this._params.blobStore.setChunk(blobChunk);
404
299
  if (meta.state === BlobMeta.State.FULLY_PRESENT) {
405
300
  this._downloadRequests.get(blobChunk.id)?.trigger.wake();
406
301
  this._downloadRequests.delete(blobChunk.id);
407
302
  } else {
408
- invariant2(meta.bitfield, void 0, {
409
- F: __dxlog_file2,
410
- L: 127,
411
- S: this,
412
- A: [
413
- "meta.bitfield",
414
- ""
415
- ]
416
- });
303
+ invariant2(meta.bitfield, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 105, S: this, A: ["meta.bitfield", ""] });
417
304
  this._downloadRequests.get(blobChunk.id).want.bitfield = BitField2.invert(meta.bitfield);
418
305
  }
419
306
  this._updateExtensionsWantList();
@@ -457,13 +344,13 @@ import { PublicKey as PublicKey2 } from "@dxos/keys";
457
344
  import { schema as schema2 } from "@dxos/protocols/proto";
458
345
  import { BlobMeta as BlobMeta2 } from "@dxos/protocols/proto/dxos/echo/blob";
459
346
  import { BitField as BitField3, arrayToBuffer } from "@dxos/util";
347
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-store.ts";
460
348
  function _ts_decorate3(decorators, target, key, desc) {
461
349
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
462
350
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
463
351
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
464
352
  return c > 3 && r && Object.defineProperty(target, key, r), r;
465
353
  }
466
- var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/teleport-extension-object-sync/src/blob-store.ts";
467
354
  var DEFAULT_CHUNK_SIZE = 4096;
468
355
  var BlobMetaCodec = schema2.getCodecForType("dxos.echo.blob.BlobMeta");
469
356
  var BlobStore = class {
@@ -494,24 +381,8 @@ var BlobStore = class {
494
381
  }
495
382
  const beginChunk = Math.floor(offset / metadata.chunkSize);
496
383
  const endChunk = Math.ceil((offset + length) / metadata.chunkSize);
497
- invariant3(metadata.bitfield, "Bitfield not present", {
498
- F: __dxlog_file3,
499
- L: 61,
500
- S: this,
501
- A: [
502
- "metadata.bitfield",
503
- "'Bitfield not present'"
504
- ]
505
- });
506
- invariant3(metadata.bitfield.length * 8 >= endChunk, "Invalid bitfield length", {
507
- F: __dxlog_file3,
508
- L: 62,
509
- S: this,
510
- A: [
511
- "metadata.bitfield.length * 8 >= endChunk",
512
- "'Invalid bitfield length'"
513
- ]
514
- });
384
+ invariant3(metadata.bitfield, "Bitfield not present", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 47, S: this, A: ["metadata.bitfield", "'Bitfield not present'"] });
385
+ invariant3(metadata.bitfield.length * 8 >= endChunk, "Invalid bitfield length", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 48, S: this, A: ["metadata.bitfield.length * 8 >= endChunk", "'Invalid bitfield length'"] });
515
386
  const present = BitField3.count(metadata.bitfield, beginChunk, endChunk) === endChunk - beginChunk;
516
387
  if (!present) {
517
388
  throw new Error("Blob not available");
@@ -551,15 +422,7 @@ var BlobStore = class {
551
422
  async setChunk(chunk) {
552
423
  let meta = await this._getMeta(chunk.id);
553
424
  if (!meta) {
554
- invariant3(chunk.totalLength, "totalLength is not present", {
555
- F: __dxlog_file3,
556
- L: 124,
557
- S: this,
558
- A: [
559
- "chunk.totalLength",
560
- "'totalLength is not present'"
561
- ]
562
- });
425
+ invariant3(chunk.totalLength, "totalLength is not present", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 95, S: this, A: ["chunk.totalLength", "'totalLength is not present'"] });
563
426
  meta = {
564
427
  id: chunk.id,
565
428
  state: BlobMeta2.State.PARTIALLY_PRESENT,
@@ -572,24 +435,8 @@ var BlobStore = class {
572
435
  if (chunk.chunkSize && chunk.chunkSize !== meta.chunkSize) {
573
436
  throw new Error("Invalid chunk size");
574
437
  }
575
- invariant3(meta.bitfield, "Bitfield not present", {
576
- F: __dxlog_file3,
577
- L: 139,
578
- S: this,
579
- A: [
580
- "meta.bitfield",
581
- "'Bitfield not present'"
582
- ]
583
- });
584
- invariant3(chunk.chunkOffset !== void 0, "chunkOffset is not present", {
585
- F: __dxlog_file3,
586
- L: 140,
587
- S: this,
588
- A: [
589
- "chunk.chunkOffset !== undefined",
590
- "'chunkOffset is not present'"
591
- ]
592
- });
438
+ invariant3(meta.bitfield, "Bitfield not present", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 108, S: this, A: ["meta.bitfield", "'Bitfield not present'"] });
439
+ invariant3(chunk.chunkOffset !== void 0, "chunkOffset is not present", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 109, S: this, A: ["chunk.chunkOffset !== undefined", "'chunkOffset is not present'"] });
593
440
  await this._getDataFile(chunk.id).write(chunk.chunkOffset, arrayToBuffer(chunk.payload));
594
441
  BitField3.set(meta.bitfield, Math.floor(chunk.chunkOffset / meta.chunkSize), true);
595
442
  if (BitField3.count(meta.bitfield, 0, meta.length) * meta.chunkSize >= meta.length) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/blob-sync-extension.ts", "../../../src/blob-sync.ts", "../../../src/blob-store.ts"],
4
4
  "sourcesContent": ["//\n\n//\n// Copyright 2023 DXOS.org\n//\n\nimport { DeferredTask, sleep, synchronized } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { RpcClosedError } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type BlobChunk, type BlobSyncService, type WantList } from '@dxos/protocols/proto/dxos/mesh/teleport/blobsync';\nimport { type ExtensionContext, RpcExtension } from '@dxos/teleport';\nimport { BitField } from '@dxos/util';\n\nimport { type BlobStore } from './blob-store';\n\nexport type BlobSyncExtensionProps = {\n blobStore: BlobStore;\n onOpen: () => Promise<void>;\n onClose: () => Promise<void>;\n onAbort: () => Promise<void>;\n onPush: (data: BlobChunk) => Promise<void>;\n};\n\nconst MIN_WANT_LIST_UPDATE_INTERVAL = process.env.NODE_ENV === 'test' ? 5 : 500;\n\nconst MAX_CONCURRENT_UPLOADS = 20;\n\n/**\n * Manages replication between a set of feeds for a single teleport session.\n */\nexport class BlobSyncExtension extends RpcExtension<ServiceBundle, ServiceBundle> {\n private readonly _ctx = new Context({ onError: (err) => log.catch(err) });\n\n private _lastWantListUpdate = 0;\n private _localWantList: WantList = { blobs: [] };\n\n private readonly _updateWantList = new DeferredTask(this._ctx, async () => {\n // Throttle want list updates.\n if (this._lastWantListUpdate + MIN_WANT_LIST_UPDATE_INTERVAL > Date.now()) {\n await sleep(this._lastWantListUpdate + MIN_WANT_LIST_UPDATE_INTERVAL - Date.now());\n if (this._ctx.disposed) {\n return;\n }\n }\n\n log('want', { list: this._localWantList });\n await this.rpc.BlobSyncService.want(this._localWantList);\n this._lastWantListUpdate = Date.now();\n });\n\n private _currentUploads = 0;\n\n private readonly _upload = new DeferredTask(this._ctx, async () => {\n if (this._currentUploads >= MAX_CONCURRENT_UPLOADS) {\n return;\n }\n const blobChunks = await this._pickBlobChunks(MAX_CONCURRENT_UPLOADS - this._currentUploads);\n if (!blobChunks) {\n return;\n }\n for (const blobChunk of blobChunks) {\n if (this._ctx.disposed) {\n break;\n }\n\n this._currentUploads++;\n\n this.push(blobChunk)\n .catch((err) => {\n if (err instanceof RpcClosedError) {\n return;\n }\n log.warn('push failed', { err });\n })\n .finally(() => {\n this._currentUploads--;\n this.reconcileUploads();\n });\n }\n });\n\n /**\n * Set of id's remote peer wants.\n */\n public remoteWantList: WantList = { blobs: [] };\n\n constructor(\n private readonly _params: BlobSyncExtensionProps, // to not conflict with the base class\n ) {\n super({\n exposed: {\n BlobSyncService: schema.getService('dxos.mesh.teleport.blobsync.BlobSyncService'),\n },\n requested: {\n BlobSyncService: schema.getService('dxos.mesh.teleport.blobsync.BlobSyncService'),\n },\n timeout: 20_000,\n encodingOptions: {\n preserveAny: true,\n },\n });\n }\n\n override async onOpen(context: ExtensionContext): Promise<void> {\n log('open');\n await super.onOpen(context);\n await this._params.onOpen();\n }\n\n override async onClose(err?: Error | undefined): Promise<void> {\n log('close');\n await this._ctx.dispose();\n await this._params.onClose();\n await super.onClose(err);\n }\n\n override async onAbort(err?: Error | undefined): Promise<void> {\n log('abort');\n await this._ctx.dispose();\n await this._params.onAbort();\n await super.onAbort(err);\n }\n\n protected async getHandlers(): Promise<ServiceBundle> {\n return {\n BlobSyncService: {\n want: async (wantList) => {\n log('remote want', { remoteWantList: wantList });\n this.remoteWantList = wantList;\n this.reconcileUploads();\n },\n push: async (data) => {\n log('received', { data });\n await this._params.onPush(data);\n },\n },\n };\n }\n\n @synchronized\n async push(data: BlobChunk): Promise<void> {\n if (this._ctx.disposed) {\n return;\n }\n log('push', { data });\n await this.rpc.BlobSyncService.push(data);\n }\n\n updateWantList(wantList: WantList): void {\n if (this._ctx.disposed) {\n return;\n }\n this._localWantList = wantList;\n this._updateWantList.schedule();\n }\n\n reconcileUploads(): void {\n if (this._ctx.disposed) {\n return;\n }\n this._upload.schedule();\n }\n\n private async _pickBlobChunks(amount = 1): Promise<BlobChunk[] | void> {\n if (this._ctx.disposed) {\n return;\n }\n\n if (!this.remoteWantList.blobs || this.remoteWantList.blobs?.length === 0) {\n return;\n }\n\n const shuffled = [...this.remoteWantList.blobs].sort(() => Math.random() - 0.5);\n\n const chunks: BlobChunk[] = [];\n\n for (const header of shuffled) {\n const meta = await this._params.blobStore.getMeta(header.id);\n\n if (!meta) {\n // Skip this header\n continue;\n }\n invariant(meta.bitfield);\n invariant(meta.chunkSize);\n invariant(meta.length);\n\n if (header.chunkSize && header.chunkSize !== meta.chunkSize) {\n log.warn('Invalid chunk size', { header, meta });\n continue;\n }\n\n const requestBitfield = header.bitfield ?? BitField.ones(meta.length / meta.chunkSize);\n\n const presentData = BitField.and(requestBitfield, meta.bitfield);\n const chunkIndices = BitField.findIndexes(presentData).sort(() => Math.random() - 0.5);\n\n for (const idx of chunkIndices) {\n const chunkData = await this._params.blobStore.get(header.id, {\n offset: idx * meta.chunkSize,\n length: Math.min(meta.chunkSize, meta.length - idx * meta.chunkSize),\n });\n chunks.push({\n id: header.id,\n totalLength: meta.length,\n chunkSize: meta.chunkSize,\n chunkOffset: idx * meta.chunkSize,\n payload: chunkData,\n });\n\n if (chunks.length >= amount) {\n return chunks;\n }\n }\n }\n\n return chunks;\n }\n}\n\ntype ServiceBundle = {\n BlobSyncService: BlobSyncService;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Mutex, Trigger, trackLeaks } from '@dxos/async';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { BlobMeta } from '@dxos/protocols/proto/dxos/echo/blob';\nimport { type WantList } from '@dxos/protocols/proto/dxos/mesh/teleport/blobsync';\nimport { BitField, ComplexMap } from '@dxos/util';\n\nimport { type BlobStore } from './blob-store';\nimport { BlobSyncExtension } from './blob-sync-extension';\n\nexport type BlobSyncProps = {\n blobStore: BlobStore;\n};\n\ntype DownloadRequest = {\n trigger: Trigger<void>;\n counter: number;\n want: WantList.Entry;\n};\n\n// TODO(dmaretskyi): Rename to blob-sync.\n@trackLeaks('open', 'close')\nexport class BlobSync {\n private readonly _ctx = new Context();\n private readonly _mutex = new Mutex();\n\n private readonly _downloadRequests = new ComplexMap<Uint8Array, DownloadRequest>((key) =>\n PublicKey.from(key).toHex(),\n );\n\n private readonly _extensions = new Set<BlobSyncExtension>();\n\n constructor(private readonly _params: BlobSyncProps) {}\n\n async open(): Promise<void> {}\n\n async close(): Promise<void> {\n await this._ctx.dispose();\n }\n\n /**\n * Resolves when the object with the given id is fully downloaded in the blob store.\n *\n * @param id hex-encoded id of the object to download.\n */\n async download(ctx: Context, id: Uint8Array): Promise<void> {\n log('download', { id });\n const request = await this._mutex.executeSynchronized(async () => {\n const existingRequest = this._downloadRequests.get(id);\n\n if (existingRequest) {\n existingRequest.counter++;\n return existingRequest;\n }\n\n const meta = await this._params.blobStore.getMeta(id);\n const request: DownloadRequest = {\n trigger: new Trigger(),\n counter: 1,\n want: {\n id,\n chunkSize: meta?.chunkSize,\n bitfield: meta?.bitfield && Uint8Array.from(BitField.invert(meta.bitfield)),\n },\n };\n\n // Check if the object is already fully downloaded.\n if (meta?.state === BlobMeta.State.FULLY_PRESENT) {\n request.trigger.wake();\n } else {\n this._downloadRequests.set(id, request);\n this._updateExtensionsWantList();\n }\n\n return request;\n });\n\n ctx?.onDispose(() =>\n this._mutex.executeSynchronized(async () => {\n // Remove request if context is disposed and nobody else requests it.\n const request = this._downloadRequests.get(id);\n if (!request) {\n return;\n }\n if (--request.counter === 0) {\n this._downloadRequests.delete(id);\n }\n this._updateExtensionsWantList();\n }),\n );\n\n return ctx ? cancelWithContext(ctx, request.trigger.wait()) : request.trigger.wait();\n }\n\n createExtension(): BlobSyncExtension {\n const extension = new BlobSyncExtension({\n blobStore: this._params.blobStore,\n onOpen: async () => {\n log('extension opened');\n this._extensions.add(extension);\n extension.updateWantList(this._getWantList());\n },\n onClose: async () => {\n log('extension closed');\n this._extensions.delete(extension);\n },\n onAbort: async () => {\n log('extension aborted');\n this._extensions.delete(extension);\n },\n onPush: async (blobChunk) => {\n if (!this._downloadRequests.has(blobChunk.id)) {\n return;\n }\n log('received', { blobChunk });\n const meta = await this._params.blobStore.setChunk(blobChunk);\n if (meta.state === BlobMeta.State.FULLY_PRESENT) {\n this._downloadRequests.get(blobChunk.id)?.trigger.wake();\n this._downloadRequests.delete(blobChunk.id);\n } else {\n invariant(meta.bitfield);\n this._downloadRequests.get(blobChunk.id)!.want.bitfield = BitField.invert(meta.bitfield);\n }\n\n this._updateExtensionsWantList();\n this._reconcileUploads();\n },\n });\n return extension;\n }\n\n /**\n * Notify extensions that a blob with the given id was added to the blob store.\n */\n async notifyBlobAdded(_id: Uint8Array): Promise<void> {\n this._reconcileUploads();\n }\n\n private _getWantList(): WantList {\n return {\n blobs: Array.from(this._downloadRequests.values()).map((request) => request.want),\n };\n }\n\n private _reconcileUploads(): void {\n for (const extension of this._extensions) {\n extension.reconcileUploads();\n }\n }\n\n private _updateExtensionsWantList(): void {\n for (const extension of this._extensions) {\n extension.updateWantList(this._getWantList());\n }\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport path from 'node:path';\n\nimport { synchronized } from '@dxos/async';\nimport { subtleCrypto } from '@dxos/crypto';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { schema } from '@dxos/protocols/proto';\nimport { BlobMeta } from '@dxos/protocols/proto/dxos/echo/blob';\nimport { type BlobChunk } from '@dxos/protocols/proto/dxos/mesh/teleport/blobsync';\nimport { type Directory } from '@dxos/random-access-storage';\nimport { BitField, arrayToBuffer } from '@dxos/util';\n\nexport type GetOptions = {\n offset?: number;\n length?: number;\n};\n\nexport const DEFAULT_CHUNK_SIZE = 4096;\n\nconst BlobMetaCodec = schema.getCodecForType('dxos.echo.blob.BlobMeta');\n\nexport class BlobStore {\n constructor(private readonly _directory: Directory) {}\n\n @synchronized\n async getMeta(id: Uint8Array): Promise<BlobMeta | undefined> {\n return this._getMeta(id);\n }\n\n /**\n * @throws If range is not available.\n */\n @synchronized\n async get(id: Uint8Array, options: GetOptions = {}): Promise<Uint8Array> {\n const metadata = await this._getMeta(id);\n\n if (!metadata) {\n throw new Error('Blob not available');\n }\n\n const { offset = 0, length = metadata.length } = options;\n\n if (offset + length > metadata.length) {\n throw new Error('Invalid range');\n }\n\n if (metadata.state === BlobMeta.State.FULLY_PRESENT) {\n const file = this._getDataFile(id);\n return file.read(offset, length);\n } else if (options.offset === undefined && options.length === undefined) {\n throw new Error('Blob not available');\n }\n\n const beginChunk = Math.floor(offset / metadata.chunkSize);\n const endChunk = Math.ceil((offset + length) / metadata.chunkSize);\n\n invariant(metadata.bitfield, 'Bitfield not present');\n invariant(metadata.bitfield.length * 8 >= endChunk, 'Invalid bitfield length');\n\n const present = BitField.count(metadata.bitfield, beginChunk, endChunk) === endChunk - beginChunk;\n\n if (!present) {\n throw new Error('Blob not available');\n }\n\n const file = this._getDataFile(id);\n return file.read(offset, length);\n }\n\n @synchronized\n async list(): Promise<BlobMeta[]> {\n /*\n Weird path formatting:\n\n \"e9b9aa7a21c2c55a9eca333cd59975633157562ca0a0f4f243d4778f192c291e_meta\"\n \"e9b9aa7a21c2c55a9eca333cd59975633157562ca0a0f4f243d4778f192c291e_data\"\n \"5001de5a47191357c075aeee6451c4cc323f3a8ada24dd1191e83403608a38d5_meta\n */\n const files = new Set((await this._directory.list()).map((f) => f.split('_')[0]));\n\n const res: BlobMeta[] = [];\n\n for (const file of files) {\n const id = PublicKey.from(file).asUint8Array();\n const meta = await this._getMeta(id);\n if (meta) {\n res.push(meta);\n }\n }\n\n return res;\n }\n\n @synchronized\n async set(data: Uint8Array): Promise<BlobMeta> {\n const id = new Uint8Array(await subtleCrypto.digest('SHA-256', data as Uint8Array<ArrayBuffer>));\n const bitfield = BitField.ones(data.length / DEFAULT_CHUNK_SIZE);\n\n const meta: BlobMeta = {\n id,\n state: BlobMeta.State.FULLY_PRESENT,\n length: data.length,\n chunkSize: DEFAULT_CHUNK_SIZE,\n bitfield,\n created: new Date(),\n updated: new Date(),\n };\n\n await this._getDataFile(id).write(0, arrayToBuffer(data));\n await this._writeMeta(id, meta);\n return meta;\n }\n\n // TODO(dmaretskyi): Optimize locking.\n @synchronized\n async setChunk(chunk: BlobChunk): Promise<BlobMeta> {\n // Init metadata.\n let meta = await this._getMeta(chunk.id);\n if (!meta) {\n invariant(chunk.totalLength, 'totalLength is not present');\n meta = {\n id: chunk.id,\n state: BlobMeta.State.PARTIALLY_PRESENT,\n length: chunk.totalLength,\n chunkSize: chunk.chunkSize ?? DEFAULT_CHUNK_SIZE,\n created: new Date(),\n };\n meta.bitfield = BitField.zeros(meta.length / meta.chunkSize);\n }\n\n if (chunk.chunkSize && chunk.chunkSize !== meta.chunkSize) {\n throw new Error('Invalid chunk size');\n }\n\n invariant(meta.bitfield, 'Bitfield not present');\n invariant(chunk.chunkOffset !== undefined, 'chunkOffset is not present');\n\n // Write chunk.\n await this._getDataFile(chunk.id).write(chunk.chunkOffset, arrayToBuffer(chunk.payload));\n\n // Update bitfield.\n BitField.set(meta.bitfield, Math.floor(chunk.chunkOffset / meta.chunkSize), true);\n\n // Update metadata.\n if (BitField.count(meta.bitfield, 0, meta.length) * meta.chunkSize >= meta.length) {\n meta.state = BlobMeta.State.FULLY_PRESENT;\n }\n meta.updated = new Date();\n\n await this._writeMeta(chunk.id, meta);\n\n return meta;\n }\n\n private async _writeMeta(id: Uint8Array, meta: BlobMeta): Promise<void> {\n const encoded = arrayToBuffer(BlobMetaCodec.encode(meta));\n const data = Buffer.alloc(encoded.length + 4);\n data.writeUInt32LE(encoded.length, 0);\n encoded.copy(data, 4);\n\n // Write metadata.\n await this._getMetaFile(id).write(0, data);\n }\n\n private async _getMeta(id: Uint8Array): Promise<BlobMeta | undefined> {\n const file = this._getMetaFile(id);\n const size = (await file.stat()).size;\n if (size === 0) {\n return;\n }\n const data = await file.read(0, size);\n const protoSize = data.readUInt32LE(0);\n return BlobMetaCodec.decode(data.subarray(4, protoSize + 4));\n }\n\n private _getMetaFile(id: Uint8Array) {\n return this._directory.getOrCreateFile(path.join(arrayToBuffer(id).toString('hex'), 'meta'));\n }\n\n private _getDataFile(id: Uint8Array) {\n return this._directory.getOrCreateFile(path.join(arrayToBuffer(id).toString('hex'), 'data'));\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["DeferredTask", "sleep", "synchronized", "Context", "invariant", "log", "RpcClosedError", "schema", "RpcExtension", "BitField", "MIN_WANT_LIST_UPDATE_INTERVAL", "process", "env", "NODE_ENV", "MAX_CONCURRENT_UPLOADS", "BlobSyncExtension", "_ctx", "onError", "err", "catch", "_lastWantListUpdate", "_localWantList", "blobs", "_updateWantList", "Date", "now", "disposed", "list", "rpc", "BlobSyncService", "want", "_currentUploads", "_upload", "blobChunks", "_pickBlobChunks", "blobChunk", "push", "warn", "finally", "reconcileUploads", "remoteWantList", "_params", "exposed", "getService", "requested", "timeout", "encodingOptions", "preserveAny", "onOpen", "context", "onClose", "dispose", "onAbort", "getHandlers", "wantList", "data", "onPush", "updateWantList", "schedule", "amount", "length", "shuffled", "sort", "Math", "random", "chunks", "header", "meta", "blobStore", "getMeta", "id", "bitfield", "chunkSize", "requestBitfield", "ones", "presentData", "and", "chunkIndices", "findIndexes", "idx", "chunkData", "get", "offset", "min", "totalLength", "chunkOffset", "payload", "Mutex", "Trigger", "trackLeaks", "Context", "cancelWithContext", "invariant", "PublicKey", "log", "BlobMeta", "BitField", "ComplexMap", "BlobSync", "_ctx", "Context", "_mutex", "Mutex", "_downloadRequests", "ComplexMap", "key", "PublicKey", "from", "toHex", "_extensions", "Set", "_params", "open", "close", "dispose", "download", "ctx", "id", "log", "request", "executeSynchronized", "existingRequest", "get", "counter", "meta", "blobStore", "getMeta", "trigger", "Trigger", "want", "chunkSize", "bitfield", "Uint8Array", "BitField", "invert", "state", "BlobMeta", "State", "FULLY_PRESENT", "wake", "set", "_updateExtensionsWantList", "onDispose", "delete", "cancelWithContext", "wait", "createExtension", "extension", "BlobSyncExtension", "onOpen", "add", "updateWantList", "_getWantList", "onClose", "onAbort", "onPush", "blobChunk", "has", "setChunk", "invariant", "_reconcileUploads", "notifyBlobAdded", "_id", "blobs", "Array", "values", "map", "reconcileUploads", "path", "synchronized", "subtleCrypto", "invariant", "PublicKey", "schema", "BlobMeta", "BitField", "arrayToBuffer", "DEFAULT_CHUNK_SIZE", "BlobMetaCodec", "getCodecForType", "BlobStore", "_directory", "getMeta", "id", "_getMeta", "get", "options", "metadata", "Error", "offset", "length", "state", "State", "FULLY_PRESENT", "file", "_getDataFile", "read", "undefined", "beginChunk", "Math", "floor", "chunkSize", "endChunk", "ceil", "bitfield", "present", "count", "list", "files", "Set", "map", "f", "split", "res", "from", "asUint8Array", "meta", "push", "set", "data", "Uint8Array", "digest", "ones", "created", "Date", "updated", "write", "_writeMeta", "setChunk", "chunk", "totalLength", "PARTIALLY_PRESENT", "zeros", "chunkOffset", "payload", "encoded", "encode", "Buffer", "alloc", "writeUInt32LE", "copy", "_getMetaFile", "size", "stat", "protoSize", "readUInt32LE", "decode", "subarray", "getOrCreateFile", "join", "toString"]
5
+ "mappings": "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",
6
+ "names": ["Context", "invariant", "log", "RpcClosedError", "schema", "RpcExtension", "BitField", "MIN_WANT_LIST_UPDATE_INTERVAL", "MAX_CONCURRENT_UPLOADS", "_ctx", "onError", "err", "_lastWantListUpdate", "_localWantList", "_updateWantList", "Date", "disposed", "list", "BlobSyncService", "_currentUploads", "_upload", "DeferredTask", "blobChunks", "push", "finally", "reconcileUploads", "exposed", "requested", "timeout", "encodingOptions", "onOpen", "context", "_params", "dispose", "onClose", "onAbort", "wantList", "remoteWantList", "data", "updateWantList", "schedule", "sort", "Math", "chunks", "header", "meta", "chunkSize", "length", "warn", "presentData", "and", "requestBitfield", "bitfield", "chunkIndices", "findIndexes", "chunkData", "offset", "min", "id", "totalLength", "chunkOffset", "idx", "payload", "Context", "cancelWithContext", "invariant", "PublicKey", "log", "BlobMeta", "BitField", "ComplexMap", "BlobSyncExtension", "__dxlog_file", "_ctx", "_mutex", "Context", "Mutex", "_downloadRequests", "_extensions", "Set", "_params", "close", "id", "request", "executeSynchronized", "existingRequest", "counter", "trigger", "want", "chunkSize", "bitfield", "meta", "BitField", "wake", "_updateExtensionsWantList", "ctx", "delete", "createExtension", "extension", "blobStore", "onOpen", "log", "updateWantList", "_getWantList", "onClose", "onAbort", "onPush", "blobChunk", "setChunk", "state", "BlobMeta", "State", "FULLY_PRESENT", "get", "invariant", "invert", "_reconcileUploads", "blobs", "reconcileUploads", "synchronized", "subtleCrypto", "invariant", "PublicKey", "schema", "BlobMeta", "BitField", "arrayToBuffer", "DEFAULT_CHUNK_SIZE", "__dxlog_file", "BlobMetaCodec", "getCodecForType", "BlobStore", "_directory", "_getMeta", "metadata", "Error", "offset", "length", "file", "_getDataFile", "id", "read", "options", "undefined", "endChunk", "Math", "ceil", "chunkSize", "bitfield", "present", "count", "beginChunk", "res", "from", "meta", "push", "ones", "data", "state", "created", "updated", "Date", "_writeMeta", "totalLength", "chunk", "chunkOffset", "FULLY_PRESENT", "encoded", "Buffer", "writeUInt32LE", "size", "protoSize", "readUInt32LE", "decode", "subarray", "_getMetaFile"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/blob-sync-extension.ts":{"bytes":24800,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/blob-sync.ts":{"bytes":18354,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/blob-sync-extension.ts","kind":"import-statement","original":"./blob-sync-extension"}],"format":"esm"},"src/blob-store.ts":{"bytes":22210,"imports":[{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":690,"imports":[{"path":"src/blob-sync-extension.ts","kind":"import-statement","original":"./blob-sync-extension"},{"path":"src/blob-sync.ts","kind":"import-statement","original":"./blob-sync"},{"path":"src/blob-store.ts","kind":"import-statement","original":"./blob-store"}],"format":"esm"}},"outputs":{"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":30407},"dist/lib/neutral/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["BlobStore","BlobSync","BlobSyncExtension","DEFAULT_CHUNK_SIZE"],"entryPoint":"src/index.ts","inputs":{"src/blob-sync-extension.ts":{"bytesInOutput":7314},"src/index.ts":{"bytesInOutput":0},"src/blob-sync.ts":{"bytesInOutput":5398},"src/blob-store.ts":{"bytesInOutput":6532}},"bytes":19465}}}
1
+ {"inputs":{"src/blob-sync-extension.ts":{"bytes":23472,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/blob-sync.ts":{"bytes":17635,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/blob-sync-extension.ts","kind":"import-statement","original":"./blob-sync-extension"}],"format":"esm"},"src/blob-store.ts":{"bytes":21664,"imports":[{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":586,"imports":[{"path":"src/blob-sync-extension.ts","kind":"import-statement","original":"./blob-sync-extension"},{"path":"src/blob-sync.ts","kind":"import-statement","original":"./blob-sync"},{"path":"src/blob-store.ts","kind":"import-statement","original":"./blob-store"}],"format":"esm"}},"outputs":{"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":29903},"dist/lib/neutral/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/blob","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["BlobStore","BlobSync","BlobSyncExtension","DEFAULT_CHUNK_SIZE"],"entryPoint":"src/index.ts","inputs":{"src/blob-sync-extension.ts":{"bytesInOutput":6834},"src/index.ts":{"bytesInOutput":0},"src/blob-sync.ts":{"bytesInOutput":5122},"src/blob-store.ts":{"bytesInOutput":6375}},"bytes":18552}}}
@@ -1 +1 @@
1
- {"version":3,"file":"blob-store.d.ts","sourceRoot":"","sources":["../../../src/blob-store.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAIvC,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS;IAG5C,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI5D;;OAEG;IAEG,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAqClE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwB3B,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBxC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;YAuCrC,UAAU;YAUV,QAAQ;IAWtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"blob-store.d.ts","sourceRoot":"","sources":["../../../src/blob-store.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAIvC,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAvC,YAA6B,UAAU,EAAE,SAAS,EAAI;IAGhD,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAE3D;IAED;;OAEG;IAEG,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAkCvE;IAGK,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqBhC;IAGK,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiB7C;IAIK,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqClD;YAEa,UAAU;YAUV,QAAQ;IAWtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAGrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"blob-sync-extension.d.ts","sourceRoot":"","sources":["../../../src/blob-sync-extension.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AACxH,OAAO,EAAE,KAAK,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAMF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC;IAyD7E,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxD1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqD;IAE1E,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,cAAc,CAA2B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAY7B;IAEH,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CA2BrB;IAEH;;OAEG;IACI,cAAc,EAAE,QAAQ,CAAiB;gBAG7B,OAAO,EAAE,sBAAsB;IAgBnC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;cAO9C,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAiB/C,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQxC,gBAAgB,IAAI,IAAI;YAOV,eAAe;CAuD9B;AAED,KAAK,aAAa,GAAG;IACnB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"blob-sync-extension.d.ts","sourceRoot":"","sources":["../../../src/blob-sync-extension.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AACxH,OAAO,EAAE,KAAK,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAMF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC;IAyD7E,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxD1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqD;IAE1E,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,cAAc,CAA2B;IAEjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAY7B;IAEH,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CA2BrB;IAEH;;OAEG;IACI,cAAc,EAAE,QAAQ,CAAiB;IAEhD,YACmB,OAAO,EAAE,sBAAsB,EAcjD;IAEc,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9D;IAEc,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7D;IAEc,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7D;IAED,UAAgB,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,CAcpD;IAGK,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzC;IAED,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMvC;IAED,gBAAgB,IAAI,IAAI,CAKvB;YAEa,eAAe;CAuD9B;AAED,KAAK,aAAa,GAAG;IACnB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"blob-sync.d.ts","sourceRoot":"","sources":["../../../src/blob-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAqB,MAAM,eAAe,CAAC;AAQ3D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AASF,qBACa,QAAQ;IAUP,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;gBAE/B,OAAO,EAAE,aAAa;IAE7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD3D,eAAe,IAAI,iBAAiB;IAqCpC;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,yBAAyB;CAKlC"}
1
+ {"version":3,"file":"blob-sync.d.ts","sourceRoot":"","sources":["../../../src/blob-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAqB,MAAM,eAAe,CAAC;AAQ3D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AASF,qBACa,QAAQ;IAUP,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAE5D,YAA6B,OAAO,EAAE,aAAa,EAAI;IAEjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAG;IAExB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C1D;IAED,eAAe,IAAI,iBAAiB,CAmCnC;IAED;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD;IAED,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,yBAAyB;CAKlC"}