@dxos/client-services 0.4.8-main.c1d1c78 → 0.4.8-main.c2effdb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/lib/browser/{chunk-6YZO4SKO.mjs → chunk-QKU4DHOX.mjs} +139 -43
  2. package/dist/lib/browser/chunk-QKU4DHOX.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/packlets/testing/index.mjs +1 -1
  6. package/dist/lib/node/{chunk-DTGMJP6D.cjs → chunk-KEOK2AUE.cjs} +151 -59
  7. package/dist/lib/node/chunk-KEOK2AUE.cjs.map +7 -0
  8. package/dist/lib/node/index.cjs +38 -38
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/packlets/testing/index.cjs +8 -8
  11. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  12. package/dist/types/src/packlets/indexing/index.d.ts +2 -0
  13. package/dist/types/src/packlets/indexing/index.d.ts.map +1 -0
  14. package/dist/types/src/packlets/indexing/util.d.ts +15 -0
  15. package/dist/types/src/packlets/indexing/util.d.ts.map +1 -0
  16. package/dist/types/src/packlets/services/service-context.d.ts +2 -1
  17. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  18. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  19. package/dist/types/src/version.d.ts +1 -1
  20. package/package.json +37 -35
  21. package/src/packlets/identity/identity.ts +1 -0
  22. package/src/packlets/indexing/index.ts +5 -0
  23. package/src/packlets/indexing/util.ts +89 -0
  24. package/src/packlets/services/service-context.ts +13 -2
  25. package/src/packlets/services/service-host.ts +6 -0
  26. package/src/version.ts +1 -1
  27. package/dist/lib/browser/chunk-6YZO4SKO.mjs.map +0 -7
  28. package/dist/lib/node/chunk-DTGMJP6D.cjs.map +0 -7
@@ -523,6 +523,7 @@ var Identity = class {
523
523
  await this.space.open(ctx);
524
524
  }
525
525
  async close(ctx) {
526
+ await this._presence?.destroy();
526
527
  await this.authVerifier.close();
527
528
  await this.space.spaceState.removeCredentialProcessor(this._profileStateMachine);
528
529
  await this.space.spaceState.removeCredentialProcessor(this._deviceStateMachine);
@@ -562,7 +563,7 @@ var Identity = class {
562
563
  getIdentityCredentialSigner() {
563
564
  invariant(this._deviceStateMachine.deviceCredentialChain, "Device credential chain is not ready.", {
564
565
  F: __dxlog_file2,
565
- L: 144,
566
+ L: 145,
566
567
  S: this,
567
568
  A: [
568
569
  "this._deviceStateMachine.deviceCredentialChain",
@@ -586,7 +587,7 @@ var Identity = class {
586
587
  dataFeedKey
587
588
  }, {
588
589
  F: __dxlog_file2,
589
- L: 160,
590
+ L: 161,
590
591
  S: this,
591
592
  C: (f, a) => f(...a)
592
593
  });
@@ -2772,7 +2773,7 @@ var getPlatform = () => {
2772
2773
  };
2773
2774
 
2774
2775
  // packages/sdk/client-services/src/version.ts
2775
- var DXOS_VERSION = "0.4.8-main.c1d1c78";
2776
+ var DXOS_VERSION = "0.4.8-main.c2effdb";
2776
2777
 
2777
2778
  // packages/sdk/client-services/src/packlets/services/diagnostics.ts
2778
2779
  var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/diagnostics.ts";
@@ -4386,8 +4387,8 @@ import { Context as Context10 } from "@dxos/context";
4386
4387
  import { getCredentialAssertion as getCredentialAssertion3 } from "@dxos/credentials";
4387
4388
  import { failUndefined as failUndefined2 } from "@dxos/debug";
4388
4389
  import { valueEncoding, MetadataStore, SpaceManager, DataServiceSubscriptions, SnapshotStore, AutomergeHost } from "@dxos/echo-pipeline";
4389
- import { IndexMetadataStore } from "@dxos/echo-schema";
4390
4390
  import { FeedFactory, FeedStore } from "@dxos/feed-store";
4391
+ import { IndexMetadataStore, IndexStore, Indexer } from "@dxos/indexing";
4391
4392
  import { invariant as invariant14 } from "@dxos/invariant";
4392
4393
  import { Keyring } from "@dxos/keyring";
4393
4394
  import { PublicKey as PublicKey10 } from "@dxos/keys";
@@ -4397,6 +4398,87 @@ import { Invitation as Invitation6 } from "@dxos/protocols/proto/dxos/client/ser
4397
4398
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
4398
4399
  import { trace as Trace2 } from "@dxos/tracing";
4399
4400
  import { safeInstanceof } from "@dxos/util";
4401
+
4402
+ // packages/sdk/client-services/src/packlets/indexing/util.ts
4403
+ import { getHeads } from "@dxos/automerge/automerge";
4404
+ import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
4405
+ import { idCodec } from "@dxos/protocols";
4406
+ var createLoadDocuments = (automergeHost) => (
4407
+ /**
4408
+ * Get object data blobs from Automerge Repo by ids.
4409
+ * @param ids
4410
+ */
4411
+ // TODO(mykola): Unload automerge handles after usage.
4412
+ async function* loadDocuments(ids) {
4413
+ for (const id of ids) {
4414
+ const { documentId, objectId } = idCodec.decode(id);
4415
+ const handle = automergeHost.repo.find(documentId);
4416
+ await warnAfterTimeout2(5e3, "to long to load doc", () => handle.whenReady());
4417
+ const doc = handle.docSync();
4418
+ const heads = getHeads(doc);
4419
+ yield [
4420
+ {
4421
+ id,
4422
+ object: doc.objects[objectId],
4423
+ currentHash: heads.at(-1)
4424
+ }
4425
+ ];
4426
+ }
4427
+ }
4428
+ );
4429
+ var createGetAllDocuments = (automergeHost) => (
4430
+ /**
4431
+ * Recursively get all object data blobs from Automerge Repo.
4432
+ * @param ids
4433
+ */
4434
+ // TODO(mykola): Unload automerge handles after usage.
4435
+ async function* getAllDocuments() {
4436
+ const visited = /* @__PURE__ */ new Set();
4437
+ async function* getObjectsFromHandle(handle) {
4438
+ if (visited.has(handle.documentId)) {
4439
+ return;
4440
+ }
4441
+ await warnAfterTimeout2(5e3, "to long to load doc", () => handle.whenReady());
4442
+ const doc = handle.docSync();
4443
+ const heads = getHeads(doc);
4444
+ if (doc.objects) {
4445
+ yield Object.entries(doc.objects).map(([objectId, object]) => {
4446
+ return {
4447
+ id: idCodec.encode({
4448
+ documentId: handle.documentId,
4449
+ objectId
4450
+ }),
4451
+ object,
4452
+ currentHash: heads.at(-1)
4453
+ };
4454
+ });
4455
+ }
4456
+ if (doc.links) {
4457
+ for (const id of Object.values(doc.links)) {
4458
+ if (visited.has(id)) {
4459
+ continue;
4460
+ }
4461
+ const linkHandle = automergeHost.repo.find(id);
4462
+ for await (const result of getObjectsFromHandle(linkHandle)) {
4463
+ yield result;
4464
+ }
4465
+ }
4466
+ }
4467
+ visited.add(handle.documentId);
4468
+ }
4469
+ for (const handle of Object.values(automergeHost.repo.handles)) {
4470
+ if (visited.has(handle.documentId)) {
4471
+ continue;
4472
+ }
4473
+ for await (const result of getObjectsFromHandle(handle)) {
4474
+ yield result;
4475
+ }
4476
+ visited.add(handle.documentId);
4477
+ }
4478
+ }
4479
+ );
4480
+
4481
+ // packages/sdk/client-services/src/packlets/services/service-context.ts
4400
4482
  function _ts_decorate6(decorators, target, key, desc) {
4401
4483
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4402
4484
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -4420,9 +4502,6 @@ var ServiceContext = class {
4420
4502
  this._handlerFactories = /* @__PURE__ */ new Map();
4421
4503
  this._instanceId = PublicKey10.random().toHex();
4422
4504
  this.metadataStore = new MetadataStore(storage.createDirectory("metadata"));
4423
- this.indexMetadata = new IndexMetadataStore({
4424
- directory: storage.createDirectory("index-metadata")
4425
- });
4426
4505
  this.snapshotStore = new SnapshotStore(storage.createDirectory("snapshots"));
4427
4506
  this.blobStore = new BlobStore(storage.createDirectory("blobs"));
4428
4507
  this.keyring = new Keyring(storage.createDirectory("keyring"));
@@ -4445,10 +4524,21 @@ var ServiceContext = class {
4445
4524
  snapshotStore: this.snapshotStore
4446
4525
  });
4447
4526
  this.identityManager = new IdentityManager(this.metadataStore, this.keyring, this.feedStore, this.spaceManager, this._runtimeParams);
4527
+ this.indexMetadata = new IndexMetadataStore({
4528
+ directory: storage.createDirectory("index-metadata")
4529
+ });
4448
4530
  this.automergeHost = new AutomergeHost({
4449
4531
  directory: storage.createDirectory("automerge"),
4450
4532
  metadata: this.indexMetadata
4451
4533
  });
4534
+ this.indexer = new Indexer({
4535
+ indexStore: new IndexStore({
4536
+ directory: storage.createDirectory("index-store")
4537
+ }),
4538
+ metadataStore: this.indexMetadata,
4539
+ loadDocuments: createLoadDocuments(this.automergeHost),
4540
+ getAllDocuments: createGetAllDocuments(this.automergeHost)
4541
+ });
4452
4542
  this.invitations = new InvitationsHandler(this.networkManager);
4453
4543
  this._handlerFactories.set(Invitation6.Kind.DEVICE, () => new DeviceInvitationProtocol(this.keyring, () => this.identityManager.identity ?? failUndefined2(), this._acceptIdentity.bind(this)));
4454
4544
  }
@@ -4456,7 +4546,7 @@ var ServiceContext = class {
4456
4546
  await this._checkStorageVersion();
4457
4547
  log13("opening...", void 0, {
4458
4548
  F: __dxlog_file15,
4459
- L: 152,
4549
+ L: 162,
4460
4550
  S: this,
4461
4551
  C: (f, a) => f(...a)
4462
4552
  });
@@ -4464,7 +4554,7 @@ var ServiceContext = class {
4464
4554
  id: this._instanceId
4465
4555
  }), {
4466
4556
  F: __dxlog_file15,
4467
- L: 153,
4557
+ L: 163,
4468
4558
  S: this,
4469
4559
  C: (f, a) => f(...a)
4470
4560
  });
@@ -4480,13 +4570,13 @@ var ServiceContext = class {
4480
4570
  id: this._instanceId
4481
4571
  }), {
4482
4572
  F: __dxlog_file15,
4483
- L: 163,
4573
+ L: 173,
4484
4574
  S: this,
4485
4575
  C: (f, a) => f(...a)
4486
4576
  });
4487
4577
  log13("opened", void 0, {
4488
4578
  F: __dxlog_file15,
4489
- L: 164,
4579
+ L: 174,
4490
4580
  S: this,
4491
4581
  C: (f, a) => f(...a)
4492
4582
  });
@@ -4494,7 +4584,7 @@ var ServiceContext = class {
4494
4584
  async close() {
4495
4585
  log13("closing...", void 0, {
4496
4586
  F: __dxlog_file15,
4497
- L: 168,
4587
+ L: 178,
4498
4588
  S: this,
4499
4589
  C: (f, a) => f(...a)
4500
4590
  });
@@ -4510,9 +4600,10 @@ var ServiceContext = class {
4510
4600
  await this.signalManager.close();
4511
4601
  this.dataServiceSubscriptions.clear();
4512
4602
  await this.metadataStore.close();
4603
+ await this.indexer.destroy();
4513
4604
  log13("closed", void 0, {
4514
4605
  F: __dxlog_file15,
4515
- L: 181,
4606
+ L: 192,
4516
4607
  S: this,
4517
4608
  C: (f, a) => f(...a)
4518
4609
  });
@@ -4526,7 +4617,7 @@ var ServiceContext = class {
4526
4617
  const factory = this._handlerFactories.get(invitation.kind);
4527
4618
  invariant14(factory, `Unknown invitation kind: ${invitation.kind}`, {
4528
4619
  F: __dxlog_file15,
4529
- L: 192,
4620
+ L: 203,
4530
4621
  S: this,
4531
4622
  A: [
4532
4623
  "factory",
@@ -4558,7 +4649,7 @@ var ServiceContext = class {
4558
4649
  async _initialize(ctx) {
4559
4650
  log13("initializing spaces...", void 0, {
4560
4651
  F: __dxlog_file15,
4561
- L: 223,
4652
+ L: 234,
4562
4653
  S: this,
4563
4654
  C: (f, a) => f(...a)
4564
4655
  });
@@ -4581,7 +4672,7 @@ var ServiceContext = class {
4581
4672
  this._handlerFactories.set(Invitation6.Kind.SPACE, (invitation) => {
4582
4673
  invariant14(this.dataSpaceManager, "dataSpaceManager not initialized yet", {
4583
4674
  F: __dxlog_file15,
4584
- L: 248,
4675
+ L: 259,
4585
4676
  S: this,
4586
4677
  A: [
4587
4678
  "this.dataSpaceManager",
@@ -4605,7 +4696,7 @@ var ServiceContext = class {
4605
4696
  details: assertion
4606
4697
  }, {
4607
4698
  F: __dxlog_file15,
4608
- L: 264,
4699
+ L: 275,
4609
4700
  S: this,
4610
4701
  C: (f, a) => f(...a)
4611
4702
  });
@@ -4616,7 +4707,7 @@ var ServiceContext = class {
4616
4707
  details: assertion
4617
4708
  }, {
4618
4709
  F: __dxlog_file15,
4619
- L: 268,
4710
+ L: 279,
4620
4711
  S: this,
4621
4712
  C: (f, a) => f(...a)
4622
4713
  });
@@ -4627,7 +4718,7 @@ var ServiceContext = class {
4627
4718
  details: assertion
4628
4719
  }, {
4629
4720
  F: __dxlog_file15,
4630
- L: 273,
4721
+ L: 284,
4631
4722
  S: this,
4632
4723
  C: (f, a) => f(...a)
4633
4724
  });
@@ -4638,7 +4729,7 @@ var ServiceContext = class {
4638
4729
  } catch (err) {
4639
4730
  log13.catch(err, void 0, {
4640
4731
  F: __dxlog_file15,
4641
- L: 279,
4732
+ L: 290,
4642
4733
  S: this,
4643
4734
  C: (f, a) => f(...a)
4644
4735
  });
@@ -4863,6 +4954,7 @@ import { Context as Context11 } from "@dxos/context";
4863
4954
  import { DocumentModel as DocumentModel2 } from "@dxos/document-model";
4864
4955
  import { DataServiceImpl } from "@dxos/echo-pipeline";
4865
4956
  import { getRawDoc, getAutomergeObjectCore } from "@dxos/echo-schema";
4957
+ import { IndexServiceImpl } from "@dxos/indexing";
4866
4958
  import { invariant as invariant16 } from "@dxos/invariant";
4867
4959
  import { PublicKey as PublicKey12 } from "@dxos/keys";
4868
4960
  import { log as log16 } from "@dxos/log";
@@ -5275,7 +5367,7 @@ var ClientServicesHost = class {
5275
5367
  initialize({ config, ...options }) {
5276
5368
  invariant16(!this._open, "service host is open", {
5277
5369
  F: __dxlog_file18,
5278
- L: 190,
5370
+ L: 191,
5279
5371
  S: this,
5280
5372
  A: [
5281
5373
  "!this._open",
@@ -5284,14 +5376,14 @@ var ClientServicesHost = class {
5284
5376
  });
5285
5377
  log16("initializing...", void 0, {
5286
5378
  F: __dxlog_file18,
5287
- L: 191,
5379
+ L: 192,
5288
5380
  S: this,
5289
5381
  C: (f, a) => f(...a)
5290
5382
  });
5291
5383
  if (config) {
5292
5384
  invariant16(!this._config, "config already set", {
5293
5385
  F: __dxlog_file18,
5294
- L: 194,
5386
+ L: 195,
5295
5387
  S: this,
5296
5388
  A: [
5297
5389
  "!this._config",
@@ -5309,7 +5401,7 @@ var ClientServicesHost = class {
5309
5401
  this._signalManager = signalManager;
5310
5402
  invariant16(!this._networkManager, "network manager already set", {
5311
5403
  F: __dxlog_file18,
5312
- L: 210,
5404
+ L: 211,
5313
5405
  S: this,
5314
5406
  A: [
5315
5407
  "!this._networkManager",
@@ -5323,7 +5415,7 @@ var ClientServicesHost = class {
5323
5415
  });
5324
5416
  log16("initialized", void 0, {
5325
5417
  F: __dxlog_file18,
5326
- L: 217,
5418
+ L: 218,
5327
5419
  S: this,
5328
5420
  C: (f, a) => f(...a)
5329
5421
  });
@@ -5337,13 +5429,13 @@ var ClientServicesHost = class {
5337
5429
  id: traceId
5338
5430
  }), {
5339
5431
  F: __dxlog_file18,
5340
- L: 228,
5432
+ L: 229,
5341
5433
  S: this,
5342
5434
  C: (f, a) => f(...a)
5343
5435
  });
5344
5436
  invariant16(this._config, "config not set", {
5345
5437
  F: __dxlog_file18,
5346
- L: 230,
5438
+ L: 231,
5347
5439
  S: this,
5348
5440
  A: [
5349
5441
  "this._config",
@@ -5352,7 +5444,7 @@ var ClientServicesHost = class {
5352
5444
  });
5353
5445
  invariant16(this._storage, "storage not set", {
5354
5446
  F: __dxlog_file18,
5355
- L: 231,
5447
+ L: 232,
5356
5448
  S: this,
5357
5449
  A: [
5358
5450
  "this._storage",
@@ -5361,7 +5453,7 @@ var ClientServicesHost = class {
5361
5453
  });
5362
5454
  invariant16(this._signalManager, "signal manager not set", {
5363
5455
  F: __dxlog_file18,
5364
- L: 232,
5456
+ L: 233,
5365
5457
  S: this,
5366
5458
  A: [
5367
5459
  "this._signalManager",
@@ -5370,7 +5462,7 @@ var ClientServicesHost = class {
5370
5462
  });
5371
5463
  invariant16(this._networkManager, "network manager not set", {
5372
5464
  F: __dxlog_file18,
5373
- L: 233,
5465
+ L: 234,
5374
5466
  S: this,
5375
5467
  A: [
5376
5468
  "this._networkManager",
@@ -5382,7 +5474,7 @@ var ClientServicesHost = class {
5382
5474
  lockKey: this._resourceLock?.lockKey
5383
5475
  }, {
5384
5476
  F: __dxlog_file18,
5385
- L: 236,
5477
+ L: 237,
5386
5478
  S: this,
5387
5479
  C: (f, a) => f(...a)
5388
5480
  });
@@ -5399,6 +5491,10 @@ var ClientServicesHost = class {
5399
5491
  return this._serviceContext.dataSpaceManager;
5400
5492
  }),
5401
5493
  DataService: new DataServiceImpl(this._serviceContext.dataServiceSubscriptions, this._serviceContext.automergeHost),
5494
+ IndexService: new IndexServiceImpl({
5495
+ indexer: this._serviceContext.indexer,
5496
+ automergeHost: this._serviceContext.automergeHost
5497
+ }),
5402
5498
  NetworkService: new NetworkServiceImpl(this._serviceContext.networkManager, this._serviceContext.signalManager),
5403
5499
  LoggingService: this._loggingService,
5404
5500
  TracingService: this._tracingService,
@@ -5412,7 +5508,7 @@ var ClientServicesHost = class {
5412
5508
  await this._serviceContext.open(ctx);
5413
5509
  invariant16(this.serviceRegistry.services.InvitationsService, void 0, {
5414
5510
  F: __dxlog_file18,
5415
- L: 297,
5511
+ L: 303,
5416
5512
  S: this,
5417
5513
  A: [
5418
5514
  "this.serviceRegistry.services.InvitationsService",
@@ -5424,7 +5520,7 @@ var ClientServicesHost = class {
5424
5520
  count: loadedInvitations.invitations?.length
5425
5521
  }, {
5426
5522
  F: __dxlog_file18,
5427
- L: 300,
5523
+ L: 306,
5428
5524
  S: this,
5429
5525
  C: (f, a) => f(...a)
5430
5526
  });
@@ -5446,7 +5542,7 @@ var ClientServicesHost = class {
5446
5542
  deviceKey
5447
5543
  }, {
5448
5544
  F: __dxlog_file18,
5449
- L: 317,
5545
+ L: 323,
5450
5546
  S: this,
5451
5547
  C: (f, a) => f(...a)
5452
5548
  });
@@ -5454,7 +5550,7 @@ var ClientServicesHost = class {
5454
5550
  id: traceId
5455
5551
  }), {
5456
5552
  F: __dxlog_file18,
5457
- L: 318,
5553
+ L: 324,
5458
5554
  S: this,
5459
5555
  C: (f, a) => f(...a)
5460
5556
  });
@@ -5468,7 +5564,7 @@ var ClientServicesHost = class {
5468
5564
  deviceKey
5469
5565
  }, {
5470
5566
  F: __dxlog_file18,
5471
- L: 329,
5567
+ L: 335,
5472
5568
  S: this,
5473
5569
  C: (f, a) => f(...a)
5474
5570
  });
@@ -5484,7 +5580,7 @@ var ClientServicesHost = class {
5484
5580
  deviceKey
5485
5581
  }, {
5486
5582
  F: __dxlog_file18,
5487
- L: 336,
5583
+ L: 342,
5488
5584
  S: this,
5489
5585
  C: (f, a) => f(...a)
5490
5586
  });
@@ -5495,13 +5591,13 @@ var ClientServicesHost = class {
5495
5591
  id: traceId
5496
5592
  }), {
5497
5593
  F: __dxlog_file18,
5498
- L: 341,
5594
+ L: 347,
5499
5595
  S: this,
5500
5596
  C: (f, a) => f(...a)
5501
5597
  });
5502
5598
  log16("resetting...", void 0, {
5503
5599
  F: __dxlog_file18,
5504
- L: 343,
5600
+ L: 349,
5505
5601
  S: this,
5506
5602
  C: (f, a) => f(...a)
5507
5603
  });
@@ -5509,7 +5605,7 @@ var ClientServicesHost = class {
5509
5605
  await this._storage.reset();
5510
5606
  log16("reset", void 0, {
5511
5607
  F: __dxlog_file18,
5512
- L: 346,
5608
+ L: 352,
5513
5609
  S: this,
5514
5610
  C: (f, a) => f(...a)
5515
5611
  });
@@ -5517,7 +5613,7 @@ var ClientServicesHost = class {
5517
5613
  id: traceId
5518
5614
  }), {
5519
5615
  F: __dxlog_file18,
5520
- L: 347,
5616
+ L: 353,
5521
5617
  S: this,
5522
5618
  C: (f, a) => f(...a)
5523
5619
  });
@@ -5532,7 +5628,7 @@ var ClientServicesHost = class {
5532
5628
  const automergeIndex = space.automergeSpaceState.rootUrl;
5533
5629
  invariant16(automergeIndex, void 0, {
5534
5630
  F: __dxlog_file18,
5535
- L: 362,
5631
+ L: 368,
5536
5632
  S: this,
5537
5633
  A: [
5538
5634
  "automergeIndex",
@@ -5603,4 +5699,4 @@ export {
5603
5699
  createDefaultModelFactory,
5604
5700
  ClientServicesHost
5605
5701
  };
5606
- //# sourceMappingURL=chunk-6YZO4SKO.mjs.map
5702
+ //# sourceMappingURL=chunk-QKU4DHOX.mjs.map