@learncard/learn-cloud-plugin 2.3.39 → 2.3.41

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.
@@ -21226,14 +21226,22 @@ var UnsignedVCValidator = external_exports.object({
21226
21226
  }).catchall(external_exports.any());
21227
21227
  var ProofValidator = external_exports.object({
21228
21228
  type: external_exports.string(),
21229
- created: external_exports.string(),
21229
+ created: external_exports.string().optional(),
21230
21230
  challenge: external_exports.string().optional(),
21231
21231
  domain: external_exports.string().optional(),
21232
21232
  nonce: external_exports.string().optional(),
21233
21233
  proofPurpose: external_exports.string(),
21234
21234
  verificationMethod: external_exports.string(),
21235
21235
  jws: external_exports.string().optional()
21236
- }).catchall(external_exports.any());
21236
+ }).catchall(external_exports.any()).superRefine((proof, ctx) => {
21237
+ if (proof.created === void 0 && (proof.type !== "DataIntegrityProof" || proof.cryptosuite !== "ecdsa-rdfc-2019")) {
21238
+ ctx.addIssue({
21239
+ code: "custom",
21240
+ path: ["created"],
21241
+ message: "created is required for this proof suite"
21242
+ });
21243
+ }
21244
+ });
21237
21245
  var VCValidator = UnsignedVCValidator.extend({
21238
21246
  proof: ProofValidator.or(ProofValidator.array())
21239
21247
  });
@@ -21994,7 +22002,10 @@ var SendOptionsValidator = external_exports.object({
21994
22002
  webhookUrl: external_exports.string().url().optional().describe("Webhook URL to receive claim notifications"),
21995
22003
  suppressDelivery: external_exports.boolean().optional().describe("If true, returns claimUrl without sending email/SMS"),
21996
22004
  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")
22005
+ guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim"),
22006
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
22007
+ "How many days the credential stays claimable in the Universal Inbox (default 30). Does not change the credential validity period."
22008
+ )
21998
22009
  });
21999
22010
  var SendBoostInputValidator = external_exports.object({
22000
22011
  type: external_exports.literal("boost"),
@@ -22115,15 +22126,6 @@ var ConsentFlowContractDataValidator = external_exports.object({
22115
22126
  var PaginatedConsentFlowDataValidator = PaginationResponseValidator.extend({
22116
22127
  records: ConsentFlowContractDataValidator.array()
22117
22128
  });
22118
- var ConsentFlowContractDataForDidValidator = external_exports.object({
22119
- credentials: external_exports.object({ category: external_exports.string(), uri: external_exports.string() }).array(),
22120
- personal: external_exports.record(external_exports.string(), external_exports.string()).default({}),
22121
- date: external_exports.string(),
22122
- contractUri: external_exports.string()
22123
- });
22124
- var PaginatedConsentFlowDataForDidValidator = PaginationResponseValidator.extend({
22125
- records: ConsentFlowContractDataForDidValidator.array()
22126
- });
22127
22129
  var ConsentFlowTermValidator = external_exports.object({
22128
22130
  sharing: external_exports.boolean().optional(),
22129
22131
  shared: external_exports.string().array().optional(),
@@ -22157,6 +22159,34 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
22157
22159
  status: ConsentFlowTermsStatusValidator
22158
22160
  }).array()
22159
22161
  });
22162
+ var ConsentFlowGuardianApprovalValidator = external_exports.object({
22163
+ guardianProfileId: external_exports.string(),
22164
+ guardianDid: external_exports.string(),
22165
+ approvedAt: external_exports.string().datetime(),
22166
+ contractUpdatedAt: external_exports.string()
22167
+ });
22168
+ var ConsentFlowContractDataForDidValidator = external_exports.object({
22169
+ credentials: external_exports.object({ category: external_exports.string(), uri: external_exports.string() }).array(),
22170
+ personal: external_exports.record(external_exports.string(), external_exports.string()).default({}),
22171
+ date: external_exports.string(),
22172
+ createdAt: external_exports.string().optional(),
22173
+ contractUpdatedAt: external_exports.string(),
22174
+ contractExpiresAt: external_exports.string().optional(),
22175
+ reasonForAccessing: external_exports.string().optional(),
22176
+ guardian: external_exports.object({
22177
+ required: external_exports.boolean(),
22178
+ approved: external_exports.boolean(),
22179
+ approval: ConsentFlowGuardianApprovalValidator.optional()
22180
+ }),
22181
+ contractUri: external_exports.string(),
22182
+ termsUri: external_exports.string(),
22183
+ status: ConsentFlowTermsStatusValidator,
22184
+ expiresAt: external_exports.string().optional(),
22185
+ terms: ConsentFlowTermsValidator
22186
+ });
22187
+ var PaginatedConsentFlowDataForDidValidator = PaginationResponseValidator.extend({
22188
+ records: ConsentFlowContractDataForDidValidator.array()
22189
+ });
22160
22190
  var ConsentFlowContractQueryValidator = external_exports.object({
22161
22191
  read: external_exports.object({
22162
22192
  anonymize: external_exports.boolean().optional(),
@@ -22217,6 +22247,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
22217
22247
  expiresAt: external_exports.string().optional(),
22218
22248
  oneTime: external_exports.boolean().optional(),
22219
22249
  terms: ConsentFlowTermsValidator.optional(),
22250
+ guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
22220
22251
  id: external_exports.string(),
22221
22252
  action: ConsentFlowTransactionActionValidator,
22222
22253
  date: external_exports.string(),
@@ -22289,7 +22320,8 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
22289
22320
  "APP_NOTIFICATION",
22290
22321
  "CREDENTIAL_REVOKED",
22291
22322
  "CREDENTIAL_SUSPENDED",
22292
- "CREDENTIAL_UNSUSPENDED"
22323
+ "CREDENTIAL_UNSUSPENDED",
22324
+ "CREDENTIAL_REFRESHED"
22293
22325
  ]);
22294
22326
  var LCNNotificationMessageValidator = external_exports.object({
22295
22327
  title: external_exports.string().optional(),
@@ -22421,12 +22453,16 @@ var CreateContactMethodSessionResponseValidator = external_exports.object({
22421
22453
  });
22422
22454
  var InboxCredentialValidator = external_exports.object({
22423
22455
  id: external_exports.string(),
22424
- credential: external_exports.string(),
22456
+ credential: external_exports.string().optional(),
22425
22457
  isSigned: external_exports.boolean(),
22426
22458
  currentStatus: LCNInboxStatusEnumValidator,
22427
22459
  isAccepted: external_exports.boolean().optional(),
22428
22460
  expiresAt: external_exports.string(),
22429
22461
  createdAt: external_exports.string(),
22462
+ finalizedAt: external_exports.string().optional(),
22463
+ expiredAt: external_exports.string().optional(),
22464
+ credentialName: external_exports.string().optional(),
22465
+ achievementType: external_exports.string().optional(),
22430
22466
  issuerDid: external_exports.string(),
22431
22467
  webhookUrl: external_exports.string().optional(),
22432
22468
  boostUri: external_exports.string().optional(),
@@ -22480,7 +22516,9 @@ var IssueInboxCredentialValidator = external_exports.object({
22480
22516
  "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
22517
  ),
22482
22518
  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."),
22519
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
22520
+ "How many days the encrypted inbox payload remains claimable. This does not change the credential validity period."
22521
+ ),
22484
22522
  templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional().describe(
22485
22523
  "Template data to render into the boost credential template using Mustache syntax. Only used when boostUri is provided."
22486
22524
  ),
@@ -22543,6 +22581,9 @@ var ClaimInboxCredentialValidator = external_exports.object({
22543
22581
  credential: VCValidator.or(VPValidator).or(UnsignedVCValidator).or(CredentialNameRefValidator).describe("The credential to issue, or a { name } reference to resolve a boost template."),
22544
22582
  configuration: external_exports.object({
22545
22583
  publishableKey: external_exports.string(),
22584
+ expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
22585
+ "Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
22586
+ ),
22546
22587
  signingAuthorityName: external_exports.string().optional(),
22547
22588
  listingId: external_exports.string().optional(),
22548
22589
  listingSlug: external_exports.string().optional()
@@ -23169,6 +23210,191 @@ var inAppMessagesFlagValidator = external_exports.object({
23169
23210
  version: external_exports.number().default(1),
23170
23211
  messages: external_exports.array(inAppMessageValidator).default([])
23171
23212
  }).passthrough();
23213
+ var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
23214
+ var ManagedCredentialRefreshServiceValidator = external_exports.object({
23215
+ id: external_exports.string().min(1),
23216
+ type: external_exports.literal("LearnCardCredentialRefresh2026"),
23217
+ authorization: LearnCardRefreshAuthorizationValidator.optional()
23218
+ }).catchall(external_exports.any());
23219
+ var StandardCredentialRefreshServiceValidator = external_exports.object({
23220
+ id: external_exports.string().min(1),
23221
+ type: external_exports.literal("1EdTechCredentialRefresh")
23222
+ }).catchall(external_exports.any());
23223
+ var SupportedCredentialRefreshServiceValidator = external_exports.union([
23224
+ ManagedCredentialRefreshServiceValidator,
23225
+ StandardCredentialRefreshServiceValidator
23226
+ ]);
23227
+ var AllocateCredentialRefreshInputValidator = external_exports.object({
23228
+ holder: external_exports.object({
23229
+ profileId: external_exports.string().optional(),
23230
+ did: external_exports.string().min(1)
23231
+ }),
23232
+ credentialId: external_exports.string().min(1)
23233
+ });
23234
+ var AllocateCredentialRefreshResultValidator = external_exports.object({
23235
+ refreshId: external_exports.string().min(1),
23236
+ refreshService: ManagedCredentialRefreshServiceValidator.extend({
23237
+ authorization: LearnCardRefreshAuthorizationValidator
23238
+ })
23239
+ });
23240
+ var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
23241
+ var PublishCredentialRefreshBaseFields = {
23242
+ refreshId: external_exports.string().min(1),
23243
+ notifyHolder: external_exports.boolean().optional(),
23244
+ updateSummary: external_exports.string().optional(),
23245
+ idempotencyKey: external_exports.string().optional()
23246
+ };
23247
+ var PublishIssuerSignedRefreshValidator = external_exports.object({
23248
+ ...PublishCredentialRefreshBaseFields,
23249
+ mode: external_exports.literal("issuer-signed"),
23250
+ signedCredential: VCValidator
23251
+ });
23252
+ var PublishSigningAuthorityRefreshValidator = external_exports.object({
23253
+ ...PublishCredentialRefreshBaseFields,
23254
+ mode: external_exports.literal("signing-authority"),
23255
+ credential: UnsignedVCValidator,
23256
+ signingAuthority: external_exports.object({
23257
+ type: external_exports.string().min(1)
23258
+ }).catchall(external_exports.any())
23259
+ });
23260
+ var PublishCredentialRefreshInputValidator = external_exports.object({
23261
+ ...PublishCredentialRefreshBaseFields,
23262
+ mode: CredentialRefreshSigningModeValidator,
23263
+ signedCredential: VCValidator.optional(),
23264
+ credential: UnsignedVCValidator.optional(),
23265
+ signingAuthority: external_exports.object({
23266
+ type: external_exports.string().min(1)
23267
+ }).catchall(external_exports.any()).optional()
23268
+ }).superRefine((input, ctx) => {
23269
+ if (input.mode === "issuer-signed" && !input.signedCredential) {
23270
+ ctx.addIssue({
23271
+ code: "custom",
23272
+ path: ["signedCredential"],
23273
+ message: "signedCredential is required for issuer-signed publication"
23274
+ });
23275
+ }
23276
+ if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
23277
+ ctx.addIssue({
23278
+ code: "custom",
23279
+ path: ["mode"],
23280
+ message: "issuer-signed publication cannot include signing-authority fields"
23281
+ });
23282
+ }
23283
+ if (input.mode === "signing-authority") {
23284
+ if (input.signedCredential !== void 0) {
23285
+ ctx.addIssue({
23286
+ code: "custom",
23287
+ path: ["signedCredential"],
23288
+ message: "signing-authority publication cannot include signedCredential"
23289
+ });
23290
+ }
23291
+ if (!input.credential) {
23292
+ ctx.addIssue({
23293
+ code: "custom",
23294
+ path: ["credential"],
23295
+ message: "credential is required for signing-authority publication"
23296
+ });
23297
+ }
23298
+ if (!input.signingAuthority) {
23299
+ ctx.addIssue({
23300
+ code: "custom",
23301
+ path: ["signingAuthority"],
23302
+ message: "signingAuthority is required for signing-authority publication"
23303
+ });
23304
+ }
23305
+ }
23306
+ });
23307
+ var PublishCredentialRefreshNotificationValidator = external_exports.enum([
23308
+ "queued",
23309
+ "suppressed",
23310
+ "not-applicable",
23311
+ /** Publication succeeded, but the post-commit notification enqueue must be retried. */
23312
+ "delivery-failed"
23313
+ ]);
23314
+ var PublishCredentialRefreshResultValidator = external_exports.object({
23315
+ refreshId: external_exports.string().min(1),
23316
+ version: external_exports.number().int().positive(),
23317
+ publishedAt: external_exports.string().min(1),
23318
+ notification: PublishCredentialRefreshNotificationValidator
23319
+ });
23320
+ var CredentialRefreshVersionMetadataValidator = external_exports.object({
23321
+ version: external_exports.number().int().positive(),
23322
+ publishedAt: external_exports.string().min(1),
23323
+ effectiveAt: external_exports.string().optional(),
23324
+ etag: external_exports.string().optional(),
23325
+ signingMode: CredentialRefreshSigningModeValidator.optional(),
23326
+ updateSummary: external_exports.string().optional()
23327
+ });
23328
+ var GetCredentialRefreshHistoryInputValidator = external_exports.object({
23329
+ refreshId: external_exports.string().min(1),
23330
+ cursor: external_exports.string().optional(),
23331
+ limit: external_exports.number().int().positive().optional()
23332
+ });
23333
+ var GetCredentialRefreshHistoryResultValidator = external_exports.object({
23334
+ records: CredentialRefreshVersionMetadataValidator.array(),
23335
+ hasMore: external_exports.boolean(),
23336
+ cursor: external_exports.string().optional()
23337
+ });
23338
+ var CredentialRefreshChallengeValidator = external_exports.object({
23339
+ challenge: external_exports.string().min(1),
23340
+ expiresAt: external_exports.string().min(1),
23341
+ domain: external_exports.string().optional(),
23342
+ scheme: external_exports.literal("LearnCardDIDAuth").optional()
23343
+ });
23344
+ var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
23345
+ format: external_exports.literal("vc"),
23346
+ credential: VCValidator,
23347
+ etag: external_exports.string().optional()
23348
+ });
23349
+ var JweCredentialRefreshEnvelopeValidator = external_exports.object({
23350
+ format: external_exports.literal("jwe"),
23351
+ jwe: JWEValidator,
23352
+ etag: external_exports.string().optional(),
23353
+ /** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
23354
+ version: external_exports.number().int().positive().optional()
23355
+ });
23356
+ var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
23357
+ PublicCredentialRefreshEnvelopeValidator,
23358
+ JweCredentialRefreshEnvelopeValidator
23359
+ ]);
23360
+ var CredentialRefreshFailureCodeValidator = external_exports.enum([
23361
+ "UNAVAILABLE",
23362
+ "TIMEOUT",
23363
+ "UNSUPPORTED_SERVICE",
23364
+ "UNAUTHORIZED",
23365
+ "MALFORMED_RESPONSE",
23366
+ "INVALID_PROOF",
23367
+ "ISSUER_MISMATCH",
23368
+ "ID_MISMATCH",
23369
+ "ROLLBACK",
23370
+ "REVOKED",
23371
+ "UNSAFE_ENDPOINT"
23372
+ ]);
23373
+ var CredentialRefreshUpdatedResultValidator = external_exports.object({
23374
+ status: external_exports.literal("updated"),
23375
+ credential: VCValidator,
23376
+ etag: external_exports.string().optional(),
23377
+ managedVersion: external_exports.number().int().positive().optional()
23378
+ });
23379
+ var CredentialRefreshUnchangedResultValidator = external_exports.object({
23380
+ status: external_exports.literal("unchanged"),
23381
+ checkedAt: external_exports.string().min(1),
23382
+ etag: external_exports.string().optional()
23383
+ });
23384
+ var CredentialRefreshUnsupportedResultValidator = external_exports.object({
23385
+ status: external_exports.literal("unsupported")
23386
+ });
23387
+ var CredentialRefreshFailedResultValidator = external_exports.object({
23388
+ status: external_exports.literal("failed"),
23389
+ code: CredentialRefreshFailureCodeValidator,
23390
+ retryable: external_exports.boolean()
23391
+ });
23392
+ var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
23393
+ CredentialRefreshUpdatedResultValidator,
23394
+ CredentialRefreshUnchangedResultValidator,
23395
+ CredentialRefreshUnsupportedResultValidator,
23396
+ CredentialRefreshFailedResultValidator
23397
+ ]);
23172
23398
 
23173
23399
  // src/helpers.ts
23174
23400
  var import_json_stringify_deterministic = __toESM(require_lib(), 1);
@@ -23297,30 +23523,63 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23297
23523
  learnCard.debug?.("Adding LearnCloud Plugin");
23298
23524
  let client = await getLearnCloudClient(url2, learnCard);
23299
23525
  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];
23526
+ let didsLoaded = false;
23527
+ const loadDids = /* @__PURE__ */ __name(async (currentClient) => {
23528
+ if (didsLoaded) return;
23529
+ dids = await currentClient.user.getDids.query();
23530
+ didsLoaded = true;
23531
+ }, "loadDids");
23532
+ const otherClients = /* @__PURE__ */ new Map();
23533
+ const learnCloudDids = /* @__PURE__ */ new WeakMap();
23534
+ const getLearnCloudDid = /* @__PURE__ */ __name((currentClient) => {
23535
+ let learnCloudDid = learnCloudDids.get(currentClient);
23536
+ if (!learnCloudDid) {
23537
+ learnCloudDid = currentClient.utilities.getDid.query();
23538
+ learnCloudDids.set(currentClient, learnCloudDid);
23539
+ }
23540
+ return learnCloudDid;
23541
+ }, "getLearnCloudDid");
23542
+ const getOtherClient = /* @__PURE__ */ __name(async (otherUrl, _learnCard) => {
23543
+ const key = `${_learnCard.id.did()}\0${otherUrl}`;
23544
+ let otherClient = otherClients.get(key);
23545
+ if (!otherClient) {
23546
+ otherClient = getLearnCloudClient(otherUrl, _learnCard);
23547
+ otherClients.set(key, otherClient);
23548
+ }
23549
+ try {
23550
+ return await otherClient;
23551
+ } catch (error51) {
23552
+ if (otherClients.get(key) === otherClient) otherClients.delete(key);
23553
+ throw error51;
23554
+ }
23307
23555
  }, "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;
23556
+ let updateQueue = Promise.resolve();
23557
+ const updateLearnCard = /* @__PURE__ */ __name((_learnCard) => {
23558
+ const update = updateQueue.then(async () => {
23559
+ const oldDid = learnCard.id.did();
23560
+ const newDid = _learnCard.id.did();
23561
+ if (oldDid !== newDid) {
23562
+ if (automaticallyAssociateDids) {
23563
+ await loadDids(client);
23564
+ if (!dids.includes(newDid)) {
23565
+ const presentation = await _learnCard.invoke.getDidAuthVp();
23566
+ await client.user.addDid.mutate({ presentation });
23567
+ if (newDid.split(":")[1] === "web") {
23568
+ await client.user.setPrimaryDid.mutate({ presentation });
23569
+ }
23570
+ dids = await client.user.getDids.query();
23571
+ }
23572
+ }
23573
+ client = await getLearnCloudClient(url2, _learnCard);
23574
+ }
23575
+ learnCard = _learnCard;
23576
+ return client;
23577
+ });
23578
+ updateQueue = update.then(
23579
+ () => void 0,
23580
+ () => void 0
23581
+ );
23582
+ return update;
23324
23583
  }, "updateLearnCard");
23325
23584
  return {
23326
23585
  name: "LearnCloud",
@@ -23328,25 +23587,33 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23328
23587
  description: "LearnCloud Integration",
23329
23588
  methods: {
23330
23589
  learnCloudCreate: /* @__PURE__ */ __name(async (_learnCard, document) => {
23331
- await updateLearnCard(_learnCard);
23590
+ const currentClient = await updateLearnCard(_learnCard);
23332
23591
  const item = await generateEncryptedRecord(
23333
23592
  _learnCard,
23334
23593
  document,
23335
23594
  unencryptedCustomFields
23336
23595
  );
23337
- return client.customStorage.create.mutate({
23338
- item: await generateJWE(_learnCard, await getLearnCloudDid(), item)
23596
+ return currentClient.customStorage.create.mutate({
23597
+ item: await generateJWE(
23598
+ _learnCard,
23599
+ await getLearnCloudDid(currentClient),
23600
+ item
23601
+ )
23339
23602
  });
23340
23603
  }, "learnCloudCreate"),
23341
23604
  learnCloudCreateMany: /* @__PURE__ */ __name(async (_learnCard, documents) => {
23342
- await updateLearnCard(_learnCard);
23605
+ const currentClient = await updateLearnCard(_learnCard);
23343
23606
  const items = await Promise.all(
23344
23607
  documents.map(
23345
23608
  async (document) => generateEncryptedRecord(_learnCard, document, unencryptedCustomFields)
23346
23609
  )
23347
23610
  );
23348
- return client.customStorage.createMany.mutate({
23349
- items: await generateJWE(_learnCard, await getLearnCloudDid(), items)
23611
+ return currentClient.customStorage.createMany.mutate({
23612
+ items: await generateJWE(
23613
+ _learnCard,
23614
+ await getLearnCloudDid(currentClient),
23615
+ items
23616
+ )
23350
23617
  });
23351
23618
  }, "learnCloudCreateMany"),
23352
23619
  learnCloudRead: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
@@ -23369,9 +23636,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23369
23636
  return documents;
23370
23637
  }, "learnCloudRead"),
23371
23638
  learnCloudReadPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions, includeAssociatedDids) => {
23372
- await updateLearnCard(_learnCard);
23639
+ const currentClient = await updateLearnCard(_learnCard);
23373
23640
  if (!query) {
23374
- const jwe2 = await client.customStorage.read.query({
23641
+ const jwe2 = await currentClient.customStorage.read.query({
23375
23642
  includeAssociatedDids,
23376
23643
  ...paginationOptions
23377
23644
  });
@@ -23398,8 +23665,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23398
23665
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23399
23666
  )
23400
23667
  );
23401
- const jwe = await client.customStorage.read.query({
23402
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23668
+ const jwe = await currentClient.customStorage.read.query({
23669
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23403
23670
  ...unencryptedEntries,
23404
23671
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23405
23672
  }),
@@ -23421,8 +23688,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23421
23688
  };
23422
23689
  }, "learnCloudReadPage"),
23423
23690
  learnCloudCount: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
23424
- await updateLearnCard(_learnCard);
23425
- if (!query) return client.customStorage.count.query({ includeAssociatedDids });
23691
+ const currentClient = await updateLearnCard(_learnCard);
23692
+ if (!query)
23693
+ return currentClient.customStorage.count.query({ includeAssociatedDids });
23426
23694
  const fields = await generateEncryptedFieldsArray(_learnCard, query, [
23427
23695
  ...unencryptedCustomFields,
23428
23696
  "_id"
@@ -23432,8 +23700,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23432
23700
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23433
23701
  )
23434
23702
  );
23435
- return client.customStorage.count.query({
23436
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23703
+ return currentClient.customStorage.count.query({
23704
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23437
23705
  ...unencryptedEntries,
23438
23706
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23439
23707
  }),
@@ -23441,17 +23709,21 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23441
23709
  });
23442
23710
  }, "learnCloudCount"),
23443
23711
  learnCloudUpdate: /* @__PURE__ */ __name(async (_learnCard, query, update) => {
23444
- await updateLearnCard(_learnCard);
23712
+ const currentClient = await updateLearnCard(_learnCard);
23445
23713
  const documents = await _learnCard.invoke.learnCloudRead(query);
23446
23714
  const updates = await Promise.all(
23447
23715
  documents.map(
23448
- async (document) => client.customStorage.update.mutate({
23449
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23450
- _id: document._id
23451
- }),
23716
+ async (document) => currentClient.customStorage.update.mutate({
23717
+ query: await generateJWE(
23718
+ _learnCard,
23719
+ await getLearnCloudDid(currentClient),
23720
+ {
23721
+ _id: document._id
23722
+ }
23723
+ ),
23452
23724
  update: await generateJWE(
23453
23725
  _learnCard,
23454
- await getLearnCloudDid(),
23726
+ await getLearnCloudDid(currentClient),
23455
23727
  await generateEncryptedRecord(
23456
23728
  _learnCard,
23457
23729
  { ...document, ...update },
@@ -23464,8 +23736,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23464
23736
  return updates.reduce((sum, current) => current + sum, 0);
23465
23737
  }, "learnCloudUpdate"),
23466
23738
  learnCloudDelete: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
23467
- await updateLearnCard(_learnCard);
23468
- if (!query) return client.customStorage.delete.mutate({ includeAssociatedDids });
23739
+ const currentClient = await updateLearnCard(_learnCard);
23740
+ if (!query)
23741
+ return currentClient.customStorage.delete.mutate({ includeAssociatedDids });
23469
23742
  const fields = await generateEncryptedFieldsArray(_learnCard, query, [
23470
23743
  ...unencryptedCustomFields,
23471
23744
  "_id"
@@ -23475,8 +23748,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23475
23748
  ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
23476
23749
  )
23477
23750
  );
23478
- return client.customStorage.delete.mutate({
23479
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23751
+ return currentClient.customStorage.delete.mutate({
23752
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23480
23753
  ...unencryptedEntries,
23481
23754
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23482
23755
  }),
@@ -23484,7 +23757,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23484
23757
  });
23485
23758
  }, "learnCloudDelete"),
23486
23759
  learnCloudBatchResolve: /* @__PURE__ */ __name(async (_learnCard, uris) => {
23487
- const results = await client.storage.batchResolve.query({ uris });
23760
+ const currentClient = await updateLearnCard(_learnCard);
23761
+ const results = await currentClient.storage.batchResolve.query({ uris });
23488
23762
  return Promise.all(
23489
23763
  results.map(async (result) => {
23490
23764
  if (!result) return null;
@@ -23503,19 +23777,20 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23503
23777
  },
23504
23778
  read: {
23505
23779
  get: /* @__PURE__ */ __name(async (_learnCard, uri) => {
23506
- learnCard.debug?.("LearnCloud read.get", uri);
23780
+ _learnCard.debug?.("LearnCloud read.get", uri);
23507
23781
  if (!uri) return void 0;
23782
+ const currentClient = await updateLearnCard(_learnCard);
23508
23783
  const parts = uri.split(":");
23509
- learnCard.debug?.("LearnCloud read.get parts:", parts);
23784
+ _learnCard.debug?.("LearnCloud read.get parts:", parts);
23510
23785
  if (parts.length !== 5) return void 0;
23511
23786
  const [lc, method, uriUrl] = parts;
23512
23787
  if (lc !== "lc" || method !== "cloud") {
23513
- learnCard.debug?.("LearnCloud read.get not cloud URI!", { lc, method });
23788
+ _learnCard.debug?.("LearnCloud read.get not cloud URI!", { lc, method });
23514
23789
  return void 0;
23515
23790
  }
23516
23791
  if (uriUrl.replace(/https?:\/\//g, "") !== url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")) {
23517
23792
  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!", {
23793
+ _learnCard.debug?.("LearnCloud read.get different LearnCloud!", {
23519
23794
  uriUrl,
23520
23795
  url: url2,
23521
23796
  fullUrl,
@@ -23524,12 +23799,12 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23524
23799
  b: url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")
23525
23800
  }
23526
23801
  });
23527
- const otherClient = await getOtherClient(fullUrl);
23802
+ const otherClient = await getOtherClient(fullUrl, _learnCard);
23528
23803
  try {
23529
23804
  const result = await otherClient.storage.resolve.query({ uri });
23530
- learnCard.debug?.("LearnCloud read.get result", result);
23805
+ _learnCard.debug?.("LearnCloud read.get result", result);
23531
23806
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
23532
- learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23807
+ _learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23533
23808
  const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
23534
23809
  return resolveStorageReadResult(parsed);
23535
23810
  } catch (error51) {
@@ -23538,10 +23813,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23538
23813
  }
23539
23814
  }
23540
23815
  try {
23541
- const result = await client.storage.resolve.query({ uri });
23542
- learnCard.debug?.("LearnCloud read.get result", result);
23816
+ const result = await currentClient.storage.resolve.query({ uri });
23817
+ _learnCard.debug?.("LearnCloud read.get result", result);
23543
23818
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
23544
- learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23819
+ _learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
23545
23820
  const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
23546
23821
  return resolveStorageReadResult(parsed);
23547
23822
  } catch (error51) {
@@ -23553,23 +23828,26 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23553
23828
  store: {
23554
23829
  upload: /* @__PURE__ */ __name(async (_learnCard, credential) => {
23555
23830
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
23556
- return client.storage.store.mutate({
23831
+ const currentClient = await updateLearnCard(_learnCard);
23832
+ return currentClient.storage.store.mutate({
23557
23833
  item: normalizeEnvelopeForTransport(credential)
23558
23834
  });
23559
23835
  }, "upload"),
23560
23836
  uploadEncrypted: /* @__PURE__ */ __name(async (_learnCard, credential, { recipients = [] } = { recipients: [] }) => {
23561
23837
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
23838
+ const currentClient = await updateLearnCard(_learnCard);
23562
23839
  const jwe = await _learnCard.invoke.createDagJwe(
23563
23840
  normalizeEnvelopeForTransport(credential),
23564
23841
  [_learnCard.id.did(), ...recipients]
23565
23842
  );
23566
- return client.storage.store.mutate({ item: jwe });
23843
+ return currentClient.storage.store.mutate({ item: jwe });
23567
23844
  }, "uploadEncrypted"),
23568
23845
  delete: /* @__PURE__ */ __name(async (_learnCard, uri) => {
23569
23846
  _learnCard.debug?.("learnCard.store['LearnCloud'].delete", { uri });
23847
+ const currentClient = await updateLearnCard(_learnCard);
23570
23848
  let deleted = false;
23571
23849
  try {
23572
- deleted = Boolean(await client.storage.delete.mutate({ uri }));
23850
+ deleted = Boolean(await currentClient.storage.delete.mutate({ uri }));
23573
23851
  } catch (error51) {
23574
23852
  _learnCard.debug?.("LearnCloud store.delete storage.delete failed", error51);
23575
23853
  }
@@ -23602,7 +23880,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23602
23880
  return records;
23603
23881
  }, "get"),
23604
23882
  getPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions) => {
23605
- await updateLearnCard(_learnCard);
23883
+ const currentClient = await updateLearnCard(_learnCard);
23606
23884
  _learnCard.debug?.("LearnCloud index.getPaginated", query, paginationOptions);
23607
23885
  const options = {
23608
23886
  ...paginationOptions,
@@ -23610,7 +23888,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23610
23888
  };
23611
23889
  if (!query) {
23612
23890
  _learnCard.debug?.("LearnCloud index.get (no query)");
23613
- const jwe2 = await client.index.get.query(options);
23891
+ const jwe2 = await currentClient.index.get.query(options);
23614
23892
  _learnCard.debug?.("LearnCloud index.get (no query response)", jwe2);
23615
23893
  const encryptedRecords2 = isEncrypted(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
23616
23894
  _learnCard.debug?.(
@@ -23640,8 +23918,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23640
23918
  "LearnCloud index.get (query unencryptedEntries)",
23641
23919
  unencryptedEntries
23642
23920
  );
23643
- const jwe = await client.index.get.query({
23644
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23921
+ const jwe = await currentClient.index.get.query({
23922
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23645
23923
  ...unencryptedEntries,
23646
23924
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23647
23925
  }),
@@ -23663,10 +23941,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23663
23941
  };
23664
23942
  }, "getPage"),
23665
23943
  getCount: /* @__PURE__ */ __name(async (_learnCard, query) => {
23666
- await updateLearnCard(_learnCard);
23944
+ const currentClient = await updateLearnCard(_learnCard);
23667
23945
  if (!query) {
23668
23946
  _learnCard.debug?.("LearnCloud index.count (no query)");
23669
- const jwe2 = await client.index.count.query();
23947
+ const jwe2 = await currentClient.index.count.query();
23670
23948
  _learnCard.debug?.("LearnCloud index.count (no query response)", jwe2);
23671
23949
  const count2 = isEncrypted(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
23672
23950
  _learnCard.debug?.("LearnCloud index.count (no query count)", count2);
@@ -23686,8 +23964,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23686
23964
  "LearnCloud index.getCount (query unencryptedEntries)",
23687
23965
  unencryptedEntries
23688
23966
  );
23689
- const jwe = await client.index.count.query({
23690
- query: await generateJWE(_learnCard, await getLearnCloudDid(), {
23967
+ const jwe = await currentClient.index.count.query({
23968
+ query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23691
23969
  ...unencryptedEntries,
23692
23970
  ...fields.length > 0 ? { fields: { $in: fields } } : {}
23693
23971
  })
@@ -23698,10 +23976,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23698
23976
  return count;
23699
23977
  }, "getCount"),
23700
23978
  add: /* @__PURE__ */ __name(async (_learnCard, record2) => {
23701
- await updateLearnCard(_learnCard);
23979
+ const currentClient = await updateLearnCard(_learnCard);
23702
23980
  const id = record2.id || _learnCard.invoke.crypto().randomUUID();
23703
- return client.index.add.mutate({
23704
- record: await generateJWE(_learnCard, await getLearnCloudDid(), {
23981
+ return currentClient.index.add.mutate({
23982
+ record: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
23705
23983
  ...await generateEncryptedRecord(
23706
23984
  _learnCard,
23707
23985
  { ...record2, id },
@@ -23712,7 +23990,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23712
23990
  });
23713
23991
  }, "add"),
23714
23992
  addMany: /* @__PURE__ */ __name(async (_learnCard, _records) => {
23715
- await updateLearnCard(_learnCard);
23993
+ const currentClient = await updateLearnCard(_learnCard);
23716
23994
  const results = await Promise.all(
23717
23995
  (0, import_lodash.chunk)(_records, 25).map(async (batch) => {
23718
23996
  const records = await Promise.all(
@@ -23728,10 +24006,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23728
24006
  };
23729
24007
  })
23730
24008
  );
23731
- return client.index.addMany.mutate({
24009
+ return currentClient.index.addMany.mutate({
23732
24010
  records: await generateJWE(
23733
24011
  _learnCard,
23734
- await getLearnCloudDid(),
24012
+ await getLearnCloudDid(currentClient),
23735
24013
  records
23736
24014
  )
23737
24015
  });
@@ -23740,27 +24018,27 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
23740
24018
  return results.every(Boolean);
23741
24019
  }, "addMany"),
23742
24020
  update: /* @__PURE__ */ __name(async (_learnCard, id, updates) => {
23743
- await updateLearnCard(_learnCard);
24021
+ const currentClient = await updateLearnCard(_learnCard);
23744
24022
  const records = await _learnCard.index.LearnCloud.get({ id });
23745
24023
  if (records.length !== 1) return false;
23746
24024
  const record2 = records[0];
23747
24025
  const newRecord = { ...record2, ...updates };
23748
- return client.index.update.mutate({
24026
+ return currentClient.index.update.mutate({
23749
24027
  id: await hash2(_learnCard, id),
23750
24028
  updates: await generateJWE(
23751
24029
  _learnCard,
23752
- await getLearnCloudDid(),
24030
+ await getLearnCloudDid(currentClient),
23753
24031
  await generateEncryptedRecord(_learnCard, newRecord, unencryptedFields)
23754
24032
  )
23755
24033
  });
23756
24034
  }, "update"),
23757
24035
  remove: /* @__PURE__ */ __name(async (_learnCard, id) => {
23758
- await updateLearnCard(_learnCard);
23759
- return client.index.remove.mutate({ id: await hash2(_learnCard, id) });
24036
+ const currentClient = await updateLearnCard(_learnCard);
24037
+ return currentClient.index.remove.mutate({ id: await hash2(_learnCard, id) });
23760
24038
  }, "remove"),
23761
24039
  removeAll: /* @__PURE__ */ __name(async (_learnCard) => {
23762
- await updateLearnCard(_learnCard);
23763
- return client.index.removeAll.mutate();
24040
+ const currentClient = await updateLearnCard(_learnCard);
24041
+ return currentClient.index.removeAll.mutate();
23764
24042
  }, "removeAll")
23765
24043
  }
23766
24044
  };