@learncard/learn-cloud-plugin 2.3.39 → 2.3.40

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.
@@ -21994,7 +21994,10 @@ var SendOptionsValidator = external_exports.object({
21994
21994
  webhookUrl: external_exports.string().url().optional().describe("Webhook URL to receive claim notifications"),
21995
21995
  suppressDelivery: external_exports.boolean().optional().describe("If true, returns claimUrl without sending email/SMS"),
21996
21996
  branding: SendBrandingOptionsValidator.optional().describe("Branding for email/SMS delivery"),
21997
- guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim")
21997
+ guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim"),
21998
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
21999
+ "How many days the credential stays claimable in the Universal Inbox (default 30). Does not change the credential validity period."
22000
+ )
21998
22001
  });
21999
22002
  var SendBoostInputValidator = external_exports.object({
22000
22003
  type: external_exports.literal("boost"),
@@ -22289,7 +22292,8 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
22289
22292
  "APP_NOTIFICATION",
22290
22293
  "CREDENTIAL_REVOKED",
22291
22294
  "CREDENTIAL_SUSPENDED",
22292
- "CREDENTIAL_UNSUSPENDED"
22295
+ "CREDENTIAL_UNSUSPENDED",
22296
+ "CREDENTIAL_REFRESHED"
22293
22297
  ]);
22294
22298
  var LCNNotificationMessageValidator = external_exports.object({
22295
22299
  title: external_exports.string().optional(),
@@ -22421,12 +22425,16 @@ var CreateContactMethodSessionResponseValidator = external_exports.object({
22421
22425
  });
22422
22426
  var InboxCredentialValidator = external_exports.object({
22423
22427
  id: external_exports.string(),
22424
- credential: external_exports.string(),
22428
+ credential: external_exports.string().optional(),
22425
22429
  isSigned: external_exports.boolean(),
22426
22430
  currentStatus: LCNInboxStatusEnumValidator,
22427
22431
  isAccepted: external_exports.boolean().optional(),
22428
22432
  expiresAt: external_exports.string(),
22429
22433
  createdAt: external_exports.string(),
22434
+ finalizedAt: external_exports.string().optional(),
22435
+ expiredAt: external_exports.string().optional(),
22436
+ credentialName: external_exports.string().optional(),
22437
+ achievementType: external_exports.string().optional(),
22430
22438
  issuerDid: external_exports.string(),
22431
22439
  webhookUrl: external_exports.string().optional(),
22432
22440
  boostUri: external_exports.string().optional(),
@@ -22480,7 +22488,9 @@ var IssueInboxCredentialValidator = external_exports.object({
22480
22488
  "The signing authority to use for the credential. If not provided, the users default signing authority will be used if the credential is not signed."
22481
22489
  ),
22482
22490
  webhookUrl: external_exports.string().url().optional().describe("The webhook URL to receive credential issuance events."),
22483
- expiresInDays: external_exports.number().min(1).max(365).optional().describe("The number of days the credential will be valid for."),
22491
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
22492
+ "How many days the encrypted inbox payload remains claimable. This does not change the credential validity period."
22493
+ ),
22484
22494
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional().describe(
22485
22495
  "Template data to render into the boost credential template using Mustache syntax. Only used when boostUri is provided."
22486
22496
  ),
@@ -22543,6 +22553,9 @@ var ClaimInboxCredentialValidator = external_exports.object({
22543
22553
  credential: VCValidator.or(VPValidator).or(UnsignedVCValidator).or(CredentialNameRefValidator).describe("The credential to issue, or a { name } reference to resolve a boost template."),
22544
22554
  configuration: external_exports.object({
22545
22555
  publishableKey: external_exports.string(),
22556
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
22557
+ "Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
22558
+ ),
22546
22559
  signingAuthorityName: external_exports.string().optional(),
22547
22560
  listingId: external_exports.string().optional(),
22548
22561
  listingSlug: external_exports.string().optional()
@@ -23169,6 +23182,191 @@ var inAppMessagesFlagValidator = external_exports.object({
23169
23182
  version: external_exports.number().default(1),
23170
23183
  messages: external_exports.array(inAppMessageValidator).default([])
23171
23184
  }).passthrough();
23185
+ var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
23186
+ var ManagedCredentialRefreshServiceValidator = external_exports.object({
23187
+ id: external_exports.string().min(1),
23188
+ type: external_exports.literal("LearnCardCredentialRefresh2026"),
23189
+ authorization: LearnCardRefreshAuthorizationValidator.optional()
23190
+ }).catchall(external_exports.any());
23191
+ var StandardCredentialRefreshServiceValidator = external_exports.object({
23192
+ id: external_exports.string().min(1),
23193
+ type: external_exports.literal("1EdTechCredentialRefresh")
23194
+ }).catchall(external_exports.any());
23195
+ var SupportedCredentialRefreshServiceValidator = external_exports.union([
23196
+ ManagedCredentialRefreshServiceValidator,
23197
+ StandardCredentialRefreshServiceValidator
23198
+ ]);
23199
+ var AllocateCredentialRefreshInputValidator = external_exports.object({
23200
+ holder: external_exports.object({
23201
+ profileId: external_exports.string().optional(),
23202
+ did: external_exports.string().min(1)
23203
+ }),
23204
+ credentialId: external_exports.string().min(1)
23205
+ });
23206
+ var AllocateCredentialRefreshResultValidator = external_exports.object({
23207
+ refreshId: external_exports.string().min(1),
23208
+ refreshService: ManagedCredentialRefreshServiceValidator.extend({
23209
+ authorization: LearnCardRefreshAuthorizationValidator
23210
+ })
23211
+ });
23212
+ var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
23213
+ var PublishCredentialRefreshBaseFields = {
23214
+ refreshId: external_exports.string().min(1),
23215
+ notifyHolder: external_exports.boolean().optional(),
23216
+ updateSummary: external_exports.string().optional(),
23217
+ idempotencyKey: external_exports.string().optional()
23218
+ };
23219
+ var PublishIssuerSignedRefreshValidator = external_exports.object({
23220
+ ...PublishCredentialRefreshBaseFields,
23221
+ mode: external_exports.literal("issuer-signed"),
23222
+ signedCredential: VCValidator
23223
+ });
23224
+ var PublishSigningAuthorityRefreshValidator = external_exports.object({
23225
+ ...PublishCredentialRefreshBaseFields,
23226
+ mode: external_exports.literal("signing-authority"),
23227
+ credential: UnsignedVCValidator,
23228
+ signingAuthority: external_exports.object({
23229
+ type: external_exports.string().min(1)
23230
+ }).catchall(external_exports.any())
23231
+ });
23232
+ var PublishCredentialRefreshInputValidator = external_exports.object({
23233
+ ...PublishCredentialRefreshBaseFields,
23234
+ mode: CredentialRefreshSigningModeValidator,
23235
+ signedCredential: VCValidator.optional(),
23236
+ credential: UnsignedVCValidator.optional(),
23237
+ signingAuthority: external_exports.object({
23238
+ type: external_exports.string().min(1)
23239
+ }).catchall(external_exports.any()).optional()
23240
+ }).superRefine((input, ctx) => {
23241
+ if (input.mode === "issuer-signed" && !input.signedCredential) {
23242
+ ctx.addIssue({
23243
+ code: "custom",
23244
+ path: ["signedCredential"],
23245
+ message: "signedCredential is required for issuer-signed publication"
23246
+ });
23247
+ }
23248
+ if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
23249
+ ctx.addIssue({
23250
+ code: "custom",
23251
+ path: ["mode"],
23252
+ message: "issuer-signed publication cannot include signing-authority fields"
23253
+ });
23254
+ }
23255
+ if (input.mode === "signing-authority") {
23256
+ if (input.signedCredential !== void 0) {
23257
+ ctx.addIssue({
23258
+ code: "custom",
23259
+ path: ["signedCredential"],
23260
+ message: "signing-authority publication cannot include signedCredential"
23261
+ });
23262
+ }
23263
+ if (!input.credential) {
23264
+ ctx.addIssue({
23265
+ code: "custom",
23266
+ path: ["credential"],
23267
+ message: "credential is required for signing-authority publication"
23268
+ });
23269
+ }
23270
+ if (!input.signingAuthority) {
23271
+ ctx.addIssue({
23272
+ code: "custom",
23273
+ path: ["signingAuthority"],
23274
+ message: "signingAuthority is required for signing-authority publication"
23275
+ });
23276
+ }
23277
+ }
23278
+ });
23279
+ var PublishCredentialRefreshNotificationValidator = external_exports.enum([
23280
+ "queued",
23281
+ "suppressed",
23282
+ "not-applicable",
23283
+ /** Publication succeeded, but the post-commit notification enqueue must be retried. */
23284
+ "delivery-failed"
23285
+ ]);
23286
+ var PublishCredentialRefreshResultValidator = external_exports.object({
23287
+ refreshId: external_exports.string().min(1),
23288
+ version: external_exports.number().int().positive(),
23289
+ publishedAt: external_exports.string().min(1),
23290
+ notification: PublishCredentialRefreshNotificationValidator
23291
+ });
23292
+ var CredentialRefreshVersionMetadataValidator = external_exports.object({
23293
+ version: external_exports.number().int().positive(),
23294
+ publishedAt: external_exports.string().min(1),
23295
+ effectiveAt: external_exports.string().optional(),
23296
+ etag: external_exports.string().optional(),
23297
+ signingMode: CredentialRefreshSigningModeValidator.optional(),
23298
+ updateSummary: external_exports.string().optional()
23299
+ });
23300
+ var GetCredentialRefreshHistoryInputValidator = external_exports.object({
23301
+ refreshId: external_exports.string().min(1),
23302
+ cursor: external_exports.string().optional(),
23303
+ limit: external_exports.number().int().positive().optional()
23304
+ });
23305
+ var GetCredentialRefreshHistoryResultValidator = external_exports.object({
23306
+ records: CredentialRefreshVersionMetadataValidator.array(),
23307
+ hasMore: external_exports.boolean(),
23308
+ cursor: external_exports.string().optional()
23309
+ });
23310
+ var CredentialRefreshChallengeValidator = external_exports.object({
23311
+ challenge: external_exports.string().min(1),
23312
+ expiresAt: external_exports.string().min(1),
23313
+ domain: external_exports.string().optional(),
23314
+ scheme: external_exports.literal("LearnCardDIDAuth").optional()
23315
+ });
23316
+ var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
23317
+ format: external_exports.literal("vc"),
23318
+ credential: VCValidator,
23319
+ etag: external_exports.string().optional()
23320
+ });
23321
+ var JweCredentialRefreshEnvelopeValidator = external_exports.object({
23322
+ format: external_exports.literal("jwe"),
23323
+ jwe: JWEValidator,
23324
+ etag: external_exports.string().optional(),
23325
+ /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
23326
+ version: external_exports.number().int().positive().optional()
23327
+ });
23328
+ var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
23329
+ PublicCredentialRefreshEnvelopeValidator,
23330
+ JweCredentialRefreshEnvelopeValidator
23331
+ ]);
23332
+ var CredentialRefreshFailureCodeValidator = external_exports.enum([
23333
+ "UNAVAILABLE",
23334
+ "TIMEOUT",
23335
+ "UNSUPPORTED_SERVICE",
23336
+ "UNAUTHORIZED",
23337
+ "MALFORMED_RESPONSE",
23338
+ "INVALID_PROOF",
23339
+ "ISSUER_MISMATCH",
23340
+ "ID_MISMATCH",
23341
+ "ROLLBACK",
23342
+ "REVOKED",
23343
+ "UNSAFE_ENDPOINT"
23344
+ ]);
23345
+ var CredentialRefreshUpdatedResultValidator = external_exports.object({
23346
+ status: external_exports.literal("updated"),
23347
+ credential: VCValidator,
23348
+ etag: external_exports.string().optional(),
23349
+ managedVersion: external_exports.number().int().positive().optional()
23350
+ });
23351
+ var CredentialRefreshUnchangedResultValidator = external_exports.object({
23352
+ status: external_exports.literal("unchanged"),
23353
+ checkedAt: external_exports.string().min(1),
23354
+ etag: external_exports.string().optional()
23355
+ });
23356
+ var CredentialRefreshUnsupportedResultValidator = external_exports.object({
23357
+ status: external_exports.literal("unsupported")
23358
+ });
23359
+ var CredentialRefreshFailedResultValidator = external_exports.object({
23360
+ status: external_exports.literal("failed"),
23361
+ code: CredentialRefreshFailureCodeValidator,
23362
+ retryable: external_exports.boolean()
23363
+ });
23364
+ var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
23365
+ CredentialRefreshUpdatedResultValidator,
23366
+ CredentialRefreshUnchangedResultValidator,
23367
+ CredentialRefreshUnsupportedResultValidator,
23368
+ CredentialRefreshFailedResultValidator
23369
+ ]);
23172
23370
 
23173
23371
  // src/helpers.ts
23174
23372
  var import_json_stringify_deterministic = __toESM(require_lib(), 1);
@@ -23297,30 +23495,63 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23297
23495
  learnCard.debug?.("Adding LearnCloud Plugin");
23298
23496
  let client = await getLearnCloudClient(url2, learnCard);
23299
23497
  let dids = [learnCard.id.did()];
23300
- void client.user.getDids.query().then((result) => dids = result).catch((error51) => learnCard.debug?.("Unable to preload LearnCloud DIDs", error51));
23301
- let otherClients = {};
23302
- let learnCloudDid;
23303
- const getLearnCloudDid = /* @__PURE__ */ __name(() => learnCloudDid ?? (learnCloudDid = client.utilities.getDid.query()), "getLearnCloudDid");
23304
- const getOtherClient = /* @__PURE__ */ __name(async (url3) => {
23305
- if (!otherClients[url3]) otherClients[url3] = await getLearnCloudClient(url3, learnCard);
23306
- return otherClients[url3];
23498
+ let didsLoaded = false;
23499
+ const loadDids = /* @__PURE__ */ __name(async (currentClient) => {
23500
+ if (didsLoaded) return;
23501
+ dids = await currentClient.user.getDids.query();
23502
+ didsLoaded = true;
23503
+ }, "loadDids");
23504
+ const otherClients = /* @__PURE__ */ new Map();
23505
+ const learnCloudDids = /* @__PURE__ */ new WeakMap();
23506
+ const getLearnCloudDid = /* @__PURE__ */ __name((currentClient) => {
23507
+ let learnCloudDid = learnCloudDids.get(currentClient);
23508
+ if (!learnCloudDid) {
23509
+ learnCloudDid = currentClient.utilities.getDid.query();
23510
+ learnCloudDids.set(currentClient, learnCloudDid);
23511
+ }
23512
+ return learnCloudDid;
23513
+ }, "getLearnCloudDid");
23514
+ const getOtherClient = /* @__PURE__ */ __name(async (otherUrl, _learnCard) => {
23515
+ const key = `${_learnCard.id.did()}\0${otherUrl}`;
23516
+ let otherClient = otherClients.get(key);
23517
+ if (!otherClient) {
23518
+ otherClient = getLearnCloudClient(otherUrl, _learnCard);
23519
+ otherClients.set(key, otherClient);
23520
+ }
23521
+ try {
23522
+ return await otherClient;
23523
+ } catch (error51) {
23524
+ if (otherClients.get(key) === otherClient) otherClients.delete(key);
23525
+ throw error51;
23526
+ }
23307
23527
  }, "getOtherClient");
23308
- const updateLearnCard = /* @__PURE__ */ __name(async (_learnCard) => {
23309
- const oldDid = learnCard.id.did();
23310
- const newDid = _learnCard.id.did();
23311
- if (oldDid !== newDid) {
23312
- if (!dids.includes(newDid) && automaticallyAssociateDids) {
23313
- const presentation = await _learnCard.invoke.getDidAuthVp();
23314
- await client.user.addDid.mutate({ presentation });
23315
- if (newDid.split(":")[1] === "web") {
23316
- await client.user.setPrimaryDid.mutate({ presentation });
23317
- }
23318
- dids = await client.user.getDids.query();
23319
- }
23320
- client = await getLearnCloudClient(url2, _learnCard);
23321
- learnCloudDid = void 0;
23322
- }
23323
- learnCard = _learnCard;
23528
+ let updateQueue = Promise.resolve();
23529
+ const updateLearnCard = /* @__PURE__ */ __name((_learnCard) => {
23530
+ const update = updateQueue.then(async () => {
23531
+ const oldDid = learnCard.id.did();
23532
+ const newDid = _learnCard.id.did();
23533
+ if (oldDid !== newDid) {
23534
+ if (automaticallyAssociateDids) {
23535
+ await loadDids(client);
23536
+ if (!dids.includes(newDid)) {
23537
+ const presentation = await _learnCard.invoke.getDidAuthVp();
23538
+ await client.user.addDid.mutate({ presentation });
23539
+ if (newDid.split(":")[1] === "web") {
23540
+ await client.user.setPrimaryDid.mutate({ presentation });
23541
+ }
23542
+ dids = await client.user.getDids.query();
23543
+ }
23544
+ }
23545
+ client = await getLearnCloudClient(url2, _learnCard);
23546
+ }
23547
+ learnCard = _learnCard;
23548
+ return client;
23549
+ });
23550
+ updateQueue = update.then(
23551
+ () => void 0,
23552
+ () => void 0
23553
+ );
23554
+ return update;
23324
23555
  }, "updateLearnCard");
23325
23556
  return {
23326
23557
  name: "LearnCloud",
@@ -23328,25 +23559,33 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23328
23559
  description: "LearnCloud Integration",
23329
23560
  methods: {
23330
23561
  learnCloudCreate: /* @__PURE__ */ __name(async (_learnCard, document) => {
23331
- await updateLearnCard(_learnCard);
23562
+ const currentClient = await updateLearnCard(_learnCard);
23332
23563
  const item = await generateEncryptedRecord(
23333
23564
  _learnCard,
23334
23565
  document,
23335
23566
  unencryptedCustomFields
23336
23567
  );
23337
- return client.customStorage.create.mutate({
23338
- item: await generateJWE(_learnCard, await getLearnCloudDid(), item)
23568
+ return currentClient.customStorage.create.mutate({
23569
+ item: await generateJWE(
23570
+ _learnCard,
23571
+ await getLearnCloudDid(currentClient),
23572
+ item
23573
+ )
23339
23574
  });
23340
23575
  }, "learnCloudCreate"),
23341
23576
  learnCloudCreateMany: /* @__PURE__ */ __name(async (_learnCard, documents) => {
23342
- await updateLearnCard(_learnCard);
23577
+ const currentClient = await updateLearnCard(_learnCard);
23343
23578
  const items = await Promise.all(
23344
23579
  documents.map(
23345
23580
  async (document) => generateEncryptedRecord(_learnCard, document, unencryptedCustomFields)
23346
23581
  )
23347
23582
  );
23348
- return client.customStorage.createMany.mutate({
23349
- items: await generateJWE(_learnCard, await getLearnCloudDid(), items)
23583
+ return currentClient.customStorage.createMany.mutate({
23584
+ items: await generateJWE(
23585
+ _learnCard,
23586
+ await getLearnCloudDid(currentClient),
23587
+ items
23588
+ )
23350
23589
  });
23351
23590
  }, "learnCloudCreateMany"),
23352
23591
  learnCloudRead: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
@@ -23369,9 +23608,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23369
23608
  return documents;
23370
23609
  }, "learnCloudRead"),
23371
23610
  learnCloudReadPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions, includeAssociatedDids) => {
23372
- await updateLearnCard(_learnCard);
23611
+ const currentClient = await updateLearnCard(_learnCard);
23373
23612
  if (!query) {
23374
- const jwe2 = await client.customStorage.read.query({
23613
+ const jwe2 = await currentClient.customStorage.read.query({
23375
23614
  includeAssociatedDids,
23376
23615
  ...paginationOptions
23377
23616
  });
@@ -23398,8 +23637,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23398
23637
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23399
23638
  )
23400
23639
  );
23401
- const jwe = await client.customStorage.read.query({
23402
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23640
+ const jwe = await currentClient.customStorage.read.query({
23641
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23403
23642
  ...unencryptedEntries,
23404
23643
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23405
23644
  }),
@@ -23421,8 +23660,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23421
23660
  };
23422
23661
  }, "learnCloudReadPage"),
23423
23662
  learnCloudCount: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
23424
- await updateLearnCard(_learnCard);
23425
- if (!query) return client.customStorage.count.query({ includeAssociatedDids });
23663
+ const currentClient = await updateLearnCard(_learnCard);
23664
+ if (!query)
23665
+ return currentClient.customStorage.count.query({ includeAssociatedDids });
23426
23666
  const fields = await generateEncryptedFieldsArray(_learnCard, query, [
23427
23667
  ...unencryptedCustomFields,
23428
23668
  "_id"
@@ -23432,8 +23672,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23432
23672
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23433
23673
  )
23434
23674
  );
23435
- return client.customStorage.count.query({
23436
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23675
+ return currentClient.customStorage.count.query({
23676
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23437
23677
  ...unencryptedEntries,
23438
23678
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23439
23679
  }),
@@ -23441,17 +23681,21 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23441
23681
  });
23442
23682
  }, "learnCloudCount"),
23443
23683
  learnCloudUpdate: /* @__PURE__ */ __name(async (_learnCard, query, update) => {
23444
- await updateLearnCard(_learnCard);
23684
+ const currentClient = await updateLearnCard(_learnCard);
23445
23685
  const documents = await _learnCard.invoke.learnCloudRead(query);
23446
23686
  const updates = await Promise.all(
23447
23687
  documents.map(
23448
- async (document) => client.customStorage.update.mutate({
23449
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23450
- _id: document._id
23451
- }),
23688
+ async (document) => currentClient.customStorage.update.mutate({
23689
+ query: await generateJWE(
23690
+ _learnCard,
23691
+ await getLearnCloudDid(currentClient),
23692
+ {
23693
+ _id: document._id
23694
+ }
23695
+ ),
23452
23696
  update: await generateJWE(
23453
23697
  _learnCard,
23454
- await getLearnCloudDid(),
23698
+ await getLearnCloudDid(currentClient),
23455
23699
  await generateEncryptedRecord(
23456
23700
  _learnCard,
23457
23701
  { ...document, ...update },
@@ -23464,8 +23708,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23464
23708
  return updates.reduce((sum, current) => current + sum, 0);
23465
23709
  }, "learnCloudUpdate"),
23466
23710
  learnCloudDelete: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
23467
- await updateLearnCard(_learnCard);
23468
- if (!query) return client.customStorage.delete.mutate({ includeAssociatedDids });
23711
+ const currentClient = await updateLearnCard(_learnCard);
23712
+ if (!query)
23713
+ return currentClient.customStorage.delete.mutate({ includeAssociatedDids });
23469
23714
  const fields = await generateEncryptedFieldsArray(_learnCard, query, [
23470
23715
  ...unencryptedCustomFields,
23471
23716
  "_id"
@@ -23475,8 +23720,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23475
23720
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23476
23721
  )
23477
23722
  );
23478
- return client.customStorage.delete.mutate({
23479
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23723
+ return currentClient.customStorage.delete.mutate({
23724
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23480
23725
  ...unencryptedEntries,
23481
23726
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23482
23727
  }),
@@ -23484,7 +23729,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23484
23729
  });
23485
23730
  }, "learnCloudDelete"),
23486
23731
  learnCloudBatchResolve: /* @__PURE__ */ __name(async (_learnCard, uris) => {
23487
- const results = await client.storage.batchResolve.query({ uris });
23732
+ const currentClient = await updateLearnCard(_learnCard);
23733
+ const results = await currentClient.storage.batchResolve.query({ uris });
23488
23734
  return Promise.all(
23489
23735
  results.map(async (result) => {
23490
23736
  if (!result) return null;
@@ -23503,19 +23749,20 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23503
23749
  },
23504
23750
  read: {
23505
23751
  get: /* @__PURE__ */ __name(async (_learnCard, uri) => {
23506
- learnCard.debug?.("LearnCloud read.get", uri);
23752
+ _learnCard.debug?.("LearnCloud read.get", uri);
23507
23753
  if (!uri) return void 0;
23754
+ const currentClient = await updateLearnCard(_learnCard);
23508
23755
  const parts = uri.split(":");
23509
- learnCard.debug?.("LearnCloud read.get parts:", parts);
23756
+ _learnCard.debug?.("LearnCloud read.get parts:", parts);
23510
23757
  if (parts.length !== 5) return void 0;
23511
23758
  const [lc, method, uriUrl] = parts;
23512
23759
  if (lc !== "lc" || method !== "cloud") {
23513
- learnCard.debug?.("LearnCloud read.get not cloud URI!", { lc, method });
23760
+ _learnCard.debug?.("LearnCloud read.get not cloud URI!", { lc, method });
23514
23761
  return void 0;
23515
23762
  }
23516
23763
  if (uriUrl.replace(/https?:\/\//g, "") !== url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")) {
23517
23764
  const fullUrl = (uriUrl.startsWith("http") ? uriUrl : `http${uriUrl.includes("http") || uriUrl.includes("localhost") ? "" : "s"}://${uriUrl}`).replaceAll("%3A", ":");
23518
- learnCard.debug?.("LearnCloud read.get different LearnCloud!", {
23765
+ _learnCard.debug?.("LearnCloud read.get different LearnCloud!", {
23519
23766
  uriUrl,
23520
23767
  url: url2,
23521
23768
  fullUrl,
@@ -23524,12 +23771,12 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23524
23771
  b: url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")
23525
23772
  }
23526
23773
  });
23527
- const otherClient = await getOtherClient(fullUrl);
23774
+ const otherClient = await getOtherClient(fullUrl, _learnCard);
23528
23775
  try {
23529
23776
  const result = await otherClient.storage.resolve.query({ uri });
23530
- learnCard.debug?.("LearnCloud read.get result", result);
23777
+ _learnCard.debug?.("LearnCloud read.get result", result);
23531
23778
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
23532
- learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23779
+ _learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23533
23780
  const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
23534
23781
  return resolveStorageReadResult(parsed);
23535
23782
  } catch (error51) {
@@ -23538,10 +23785,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23538
23785
  }
23539
23786
  }
23540
23787
  try {
23541
- const result = await client.storage.resolve.query({ uri });
23542
- learnCard.debug?.("LearnCloud read.get result", result);
23788
+ const result = await currentClient.storage.resolve.query({ uri });
23789
+ _learnCard.debug?.("LearnCloud read.get result", result);
23543
23790
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
23544
- learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23791
+ _learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23545
23792
  const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
23546
23793
  return resolveStorageReadResult(parsed);
23547
23794
  } catch (error51) {
@@ -23553,23 +23800,26 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23553
23800
  store: {
23554
23801
  upload: /* @__PURE__ */ __name(async (_learnCard, credential) => {
23555
23802
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
23556
- return client.storage.store.mutate({
23803
+ const currentClient = await updateLearnCard(_learnCard);
23804
+ return currentClient.storage.store.mutate({
23557
23805
  item: normalizeEnvelopeForTransport(credential)
23558
23806
  });
23559
23807
  }, "upload"),
23560
23808
  uploadEncrypted: /* @__PURE__ */ __name(async (_learnCard, credential, { recipients = [] } = { recipients: [] }) => {
23561
23809
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
23810
+ const currentClient = await updateLearnCard(_learnCard);
23562
23811
  const jwe = await _learnCard.invoke.createDagJwe(
23563
23812
  normalizeEnvelopeForTransport(credential),
23564
23813
  [_learnCard.id.did(), ...recipients]
23565
23814
  );
23566
- return client.storage.store.mutate({ item: jwe });
23815
+ return currentClient.storage.store.mutate({ item: jwe });
23567
23816
  }, "uploadEncrypted"),
23568
23817
  delete: /* @__PURE__ */ __name(async (_learnCard, uri) => {
23569
23818
  _learnCard.debug?.("learnCard.store['LearnCloud'].delete", { uri });
23819
+ const currentClient = await updateLearnCard(_learnCard);
23570
23820
  let deleted = false;
23571
23821
  try {
23572
- deleted = Boolean(await client.storage.delete.mutate({ uri }));
23822
+ deleted = Boolean(await currentClient.storage.delete.mutate({ uri }));
23573
23823
  } catch (error51) {
23574
23824
  _learnCard.debug?.("LearnCloud store.delete storage.delete failed", error51);
23575
23825
  }
@@ -23602,7 +23852,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23602
23852
  return records;
23603
23853
  }, "get"),
23604
23854
  getPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions) => {
23605
- await updateLearnCard(_learnCard);
23855
+ const currentClient = await updateLearnCard(_learnCard);
23606
23856
  _learnCard.debug?.("LearnCloud index.getPaginated", query, paginationOptions);
23607
23857
  const options = {
23608
23858
  ...paginationOptions,
@@ -23610,7 +23860,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23610
23860
  };
23611
23861
  if (!query) {
23612
23862
  _learnCard.debug?.("LearnCloud index.get (no query)");
23613
- const jwe2 = await client.index.get.query(options);
23863
+ const jwe2 = await currentClient.index.get.query(options);
23614
23864
  _learnCard.debug?.("LearnCloud index.get (no query response)", jwe2);
23615
23865
  const encryptedRecords2 = isEncrypted(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
23616
23866
  _learnCard.debug?.(
@@ -23640,8 +23890,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23640
23890
  "LearnCloud index.get (query unencryptedEntries)",
23641
23891
  unencryptedEntries
23642
23892
  );
23643
- const jwe = await client.index.get.query({
23644
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23893
+ const jwe = await currentClient.index.get.query({
23894
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23645
23895
  ...unencryptedEntries,
23646
23896
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23647
23897
  }),
@@ -23663,10 +23913,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23663
23913
  };
23664
23914
  }, "getPage"),
23665
23915
  getCount: /* @__PURE__ */ __name(async (_learnCard, query) => {
23666
- await updateLearnCard(_learnCard);
23916
+ const currentClient = await updateLearnCard(_learnCard);
23667
23917
  if (!query) {
23668
23918
  _learnCard.debug?.("LearnCloud index.count (no query)");
23669
- const jwe2 = await client.index.count.query();
23919
+ const jwe2 = await currentClient.index.count.query();
23670
23920
  _learnCard.debug?.("LearnCloud index.count (no query response)", jwe2);
23671
23921
  const count2 = isEncrypted(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
23672
23922
  _learnCard.debug?.("LearnCloud index.count (no query count)", count2);
@@ -23686,8 +23936,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23686
23936
  "LearnCloud index.getCount (query unencryptedEntries)",
23687
23937
  unencryptedEntries
23688
23938
  );
23689
- const jwe = await client.index.count.query({
23690
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23939
+ const jwe = await currentClient.index.count.query({
23940
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23691
23941
  ...unencryptedEntries,
23692
23942
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23693
23943
  })
@@ -23698,10 +23948,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23698
23948
  return count;
23699
23949
  }, "getCount"),
23700
23950
  add: /* @__PURE__ */ __name(async (_learnCard, record2) => {
23701
- await updateLearnCard(_learnCard);
23951
+ const currentClient = await updateLearnCard(_learnCard);
23702
23952
  const id = record2.id || _learnCard.invoke.crypto().randomUUID();
23703
- return client.index.add.mutate({
23704
- record: await generateJWE(_learnCard, await getLearnCloudDid(), {
23953
+ return currentClient.index.add.mutate({
23954
+ record: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23705
23955
  ...await generateEncryptedRecord(
23706
23956
  _learnCard,
23707
23957
  { ...record2, id },
@@ -23712,7 +23962,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23712
23962
  });
23713
23963
  }, "add"),
23714
23964
  addMany: /* @__PURE__ */ __name(async (_learnCard, _records) => {
23715
- await updateLearnCard(_learnCard);
23965
+ const currentClient = await updateLearnCard(_learnCard);
23716
23966
  const results = await Promise.all(
23717
23967
  (0, import_lodash.chunk)(_records, 25).map(async (batch) => {
23718
23968
  const records = await Promise.all(
@@ -23728,10 +23978,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23728
23978
  };
23729
23979
  })
23730
23980
  );
23731
- return client.index.addMany.mutate({
23981
+ return currentClient.index.addMany.mutate({
23732
23982
  records: await generateJWE(
23733
23983
  _learnCard,
23734
- await getLearnCloudDid(),
23984
+ await getLearnCloudDid(currentClient),
23735
23985
  records
23736
23986
  )
23737
23987
  });
@@ -23740,27 +23990,27 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23740
23990
  return results.every(Boolean);
23741
23991
  }, "addMany"),
23742
23992
  update: /* @__PURE__ */ __name(async (_learnCard, id, updates) => {
23743
- await updateLearnCard(_learnCard);
23993
+ const currentClient = await updateLearnCard(_learnCard);
23744
23994
  const records = await _learnCard.index.LearnCloud.get({ id });
23745
23995
  if (records.length !== 1) return false;
23746
23996
  const record2 = records[0];
23747
23997
  const newRecord = { ...record2, ...updates };
23748
- return client.index.update.mutate({
23998
+ return currentClient.index.update.mutate({
23749
23999
  id: await hash2(_learnCard, id),
23750
24000
  updates: await generateJWE(
23751
24001
  _learnCard,
23752
- await getLearnCloudDid(),
24002
+ await getLearnCloudDid(currentClient),
23753
24003
  await generateEncryptedRecord(_learnCard, newRecord, unencryptedFields)
23754
24004
  )
23755
24005
  });
23756
24006
  }, "update"),
23757
24007
  remove: /* @__PURE__ */ __name(async (_learnCard, id) => {
23758
- await updateLearnCard(_learnCard);
23759
- return client.index.remove.mutate({ id: await hash2(_learnCard, id) });
24008
+ const currentClient = await updateLearnCard(_learnCard);
24009
+ return currentClient.index.remove.mutate({ id: await hash2(_learnCard, id) });
23760
24010
  }, "remove"),
23761
24011
  removeAll: /* @__PURE__ */ __name(async (_learnCard) => {
23762
- await updateLearnCard(_learnCard);
23763
- return client.index.removeAll.mutate();
24012
+ const currentClient = await updateLearnCard(_learnCard);
24013
+ return currentClient.index.removeAll.mutate();
23764
24014
  }, "removeAll")
23765
24015
  }
23766
24016
  };