@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.
- package/dist/learn-cloud-plugin.cjs.development.cjs +336 -86
- package/dist/learn-cloud-plugin.cjs.development.cjs.map +2 -2
- package/dist/learn-cloud-plugin.cjs.production.min.cjs +37 -37
- package/dist/learn-cloud-plugin.cjs.production.min.cjs.map +3 -3
- package/dist/learn-cloud-plugin.esm.js +336 -86
- package/dist/learn-cloud-plugin.esm.js.map +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/plugin.ts +146 -84
- package/src/test/index.test.ts +187 -19
|
@@ -22003,7 +22003,10 @@ var SendOptionsValidator = external_exports.object({
|
|
|
22003
22003
|
webhookUrl: external_exports.string().url().optional().describe("Webhook URL to receive claim notifications"),
|
|
22004
22004
|
suppressDelivery: external_exports.boolean().optional().describe("If true, returns claimUrl without sending email/SMS"),
|
|
22005
22005
|
branding: SendBrandingOptionsValidator.optional().describe("Branding for email/SMS delivery"),
|
|
22006
|
-
guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim")
|
|
22006
|
+
guardianEmail: external_exports.string().email().optional().describe("Guardian email that must approve before student can claim"),
|
|
22007
|
+
expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
|
|
22008
|
+
"How many days the credential stays claimable in the Universal Inbox (default 30). Does not change the credential validity period."
|
|
22009
|
+
)
|
|
22007
22010
|
});
|
|
22008
22011
|
var SendBoostInputValidator = external_exports.object({
|
|
22009
22012
|
type: external_exports.literal("boost"),
|
|
@@ -22298,7 +22301,8 @@ var LCNNotificationTypeEnumValidator = external_exports.enum([
|
|
|
22298
22301
|
"APP_NOTIFICATION",
|
|
22299
22302
|
"CREDENTIAL_REVOKED",
|
|
22300
22303
|
"CREDENTIAL_SUSPENDED",
|
|
22301
|
-
"CREDENTIAL_UNSUSPENDED"
|
|
22304
|
+
"CREDENTIAL_UNSUSPENDED",
|
|
22305
|
+
"CREDENTIAL_REFRESHED"
|
|
22302
22306
|
]);
|
|
22303
22307
|
var LCNNotificationMessageValidator = external_exports.object({
|
|
22304
22308
|
title: external_exports.string().optional(),
|
|
@@ -22430,12 +22434,16 @@ var CreateContactMethodSessionResponseValidator = external_exports.object({
|
|
|
22430
22434
|
});
|
|
22431
22435
|
var InboxCredentialValidator = external_exports.object({
|
|
22432
22436
|
id: external_exports.string(),
|
|
22433
|
-
credential: external_exports.string(),
|
|
22437
|
+
credential: external_exports.string().optional(),
|
|
22434
22438
|
isSigned: external_exports.boolean(),
|
|
22435
22439
|
currentStatus: LCNInboxStatusEnumValidator,
|
|
22436
22440
|
isAccepted: external_exports.boolean().optional(),
|
|
22437
22441
|
expiresAt: external_exports.string(),
|
|
22438
22442
|
createdAt: external_exports.string(),
|
|
22443
|
+
finalizedAt: external_exports.string().optional(),
|
|
22444
|
+
expiredAt: external_exports.string().optional(),
|
|
22445
|
+
credentialName: external_exports.string().optional(),
|
|
22446
|
+
achievementType: external_exports.string().optional(),
|
|
22439
22447
|
issuerDid: external_exports.string(),
|
|
22440
22448
|
webhookUrl: external_exports.string().optional(),
|
|
22441
22449
|
boostUri: external_exports.string().optional(),
|
|
@@ -22489,7 +22497,9 @@ var IssueInboxCredentialValidator = external_exports.object({
|
|
|
22489
22497
|
"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."
|
|
22490
22498
|
),
|
|
22491
22499
|
webhookUrl: external_exports.string().url().optional().describe("The webhook URL to receive credential issuance events."),
|
|
22492
|
-
expiresInDays: external_exports.number().min(1).max(
|
|
22500
|
+
expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
|
|
22501
|
+
"How many days the encrypted inbox payload remains claimable. This does not change the credential validity period."
|
|
22502
|
+
),
|
|
22493
22503
|
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional().describe(
|
|
22494
22504
|
"Template data to render into the boost credential template using Mustache syntax. Only used when boostUri is provided."
|
|
22495
22505
|
),
|
|
@@ -22552,6 +22562,9 @@ var ClaimInboxCredentialValidator = external_exports.object({
|
|
|
22552
22562
|
credential: VCValidator.or(VPValidator).or(UnsignedVCValidator).or(CredentialNameRefValidator).describe("The credential to issue, or a { name } reference to resolve a boost template."),
|
|
22553
22563
|
configuration: external_exports.object({
|
|
22554
22564
|
publishableKey: external_exports.string(),
|
|
22565
|
+
expiresInDays: external_exports.number().int().min(1).max(720).optional().describe(
|
|
22566
|
+
"Inbox claim window in days. Defaults to 720; use a shorter window for sensitive records."
|
|
22567
|
+
),
|
|
22555
22568
|
signingAuthorityName: external_exports.string().optional(),
|
|
22556
22569
|
listingId: external_exports.string().optional(),
|
|
22557
22570
|
listingSlug: external_exports.string().optional()
|
|
@@ -23178,6 +23191,191 @@ var inAppMessagesFlagValidator = external_exports.object({
|
|
|
23178
23191
|
version: external_exports.number().default(1),
|
|
23179
23192
|
messages: external_exports.array(inAppMessageValidator).default([])
|
|
23180
23193
|
}).passthrough();
|
|
23194
|
+
var LearnCardRefreshAuthorizationValidator = external_exports.object({ type: external_exports.literal("LearnCardDIDAuth") }).catchall(external_exports.any());
|
|
23195
|
+
var ManagedCredentialRefreshServiceValidator = external_exports.object({
|
|
23196
|
+
id: external_exports.string().min(1),
|
|
23197
|
+
type: external_exports.literal("LearnCardCredentialRefresh2026"),
|
|
23198
|
+
authorization: LearnCardRefreshAuthorizationValidator.optional()
|
|
23199
|
+
}).catchall(external_exports.any());
|
|
23200
|
+
var StandardCredentialRefreshServiceValidator = external_exports.object({
|
|
23201
|
+
id: external_exports.string().min(1),
|
|
23202
|
+
type: external_exports.literal("1EdTechCredentialRefresh")
|
|
23203
|
+
}).catchall(external_exports.any());
|
|
23204
|
+
var SupportedCredentialRefreshServiceValidator = external_exports.union([
|
|
23205
|
+
ManagedCredentialRefreshServiceValidator,
|
|
23206
|
+
StandardCredentialRefreshServiceValidator
|
|
23207
|
+
]);
|
|
23208
|
+
var AllocateCredentialRefreshInputValidator = external_exports.object({
|
|
23209
|
+
holder: external_exports.object({
|
|
23210
|
+
profileId: external_exports.string().optional(),
|
|
23211
|
+
did: external_exports.string().min(1)
|
|
23212
|
+
}),
|
|
23213
|
+
credentialId: external_exports.string().min(1)
|
|
23214
|
+
});
|
|
23215
|
+
var AllocateCredentialRefreshResultValidator = external_exports.object({
|
|
23216
|
+
refreshId: external_exports.string().min(1),
|
|
23217
|
+
refreshService: ManagedCredentialRefreshServiceValidator.extend({
|
|
23218
|
+
authorization: LearnCardRefreshAuthorizationValidator
|
|
23219
|
+
})
|
|
23220
|
+
});
|
|
23221
|
+
var CredentialRefreshSigningModeValidator = external_exports.enum(["issuer-signed", "signing-authority"]);
|
|
23222
|
+
var PublishCredentialRefreshBaseFields = {
|
|
23223
|
+
refreshId: external_exports.string().min(1),
|
|
23224
|
+
notifyHolder: external_exports.boolean().optional(),
|
|
23225
|
+
updateSummary: external_exports.string().optional(),
|
|
23226
|
+
idempotencyKey: external_exports.string().optional()
|
|
23227
|
+
};
|
|
23228
|
+
var PublishIssuerSignedRefreshValidator = external_exports.object({
|
|
23229
|
+
...PublishCredentialRefreshBaseFields,
|
|
23230
|
+
mode: external_exports.literal("issuer-signed"),
|
|
23231
|
+
signedCredential: VCValidator
|
|
23232
|
+
});
|
|
23233
|
+
var PublishSigningAuthorityRefreshValidator = external_exports.object({
|
|
23234
|
+
...PublishCredentialRefreshBaseFields,
|
|
23235
|
+
mode: external_exports.literal("signing-authority"),
|
|
23236
|
+
credential: UnsignedVCValidator,
|
|
23237
|
+
signingAuthority: external_exports.object({
|
|
23238
|
+
type: external_exports.string().min(1)
|
|
23239
|
+
}).catchall(external_exports.any())
|
|
23240
|
+
});
|
|
23241
|
+
var PublishCredentialRefreshInputValidator = external_exports.object({
|
|
23242
|
+
...PublishCredentialRefreshBaseFields,
|
|
23243
|
+
mode: CredentialRefreshSigningModeValidator,
|
|
23244
|
+
signedCredential: VCValidator.optional(),
|
|
23245
|
+
credential: UnsignedVCValidator.optional(),
|
|
23246
|
+
signingAuthority: external_exports.object({
|
|
23247
|
+
type: external_exports.string().min(1)
|
|
23248
|
+
}).catchall(external_exports.any()).optional()
|
|
23249
|
+
}).superRefine((input, ctx) => {
|
|
23250
|
+
if (input.mode === "issuer-signed" && !input.signedCredential) {
|
|
23251
|
+
ctx.addIssue({
|
|
23252
|
+
code: "custom",
|
|
23253
|
+
path: ["signedCredential"],
|
|
23254
|
+
message: "signedCredential is required for issuer-signed publication"
|
|
23255
|
+
});
|
|
23256
|
+
}
|
|
23257
|
+
if (input.mode === "issuer-signed" && (input.credential !== void 0 || input.signingAuthority !== void 0)) {
|
|
23258
|
+
ctx.addIssue({
|
|
23259
|
+
code: "custom",
|
|
23260
|
+
path: ["mode"],
|
|
23261
|
+
message: "issuer-signed publication cannot include signing-authority fields"
|
|
23262
|
+
});
|
|
23263
|
+
}
|
|
23264
|
+
if (input.mode === "signing-authority") {
|
|
23265
|
+
if (input.signedCredential !== void 0) {
|
|
23266
|
+
ctx.addIssue({
|
|
23267
|
+
code: "custom",
|
|
23268
|
+
path: ["signedCredential"],
|
|
23269
|
+
message: "signing-authority publication cannot include signedCredential"
|
|
23270
|
+
});
|
|
23271
|
+
}
|
|
23272
|
+
if (!input.credential) {
|
|
23273
|
+
ctx.addIssue({
|
|
23274
|
+
code: "custom",
|
|
23275
|
+
path: ["credential"],
|
|
23276
|
+
message: "credential is required for signing-authority publication"
|
|
23277
|
+
});
|
|
23278
|
+
}
|
|
23279
|
+
if (!input.signingAuthority) {
|
|
23280
|
+
ctx.addIssue({
|
|
23281
|
+
code: "custom",
|
|
23282
|
+
path: ["signingAuthority"],
|
|
23283
|
+
message: "signingAuthority is required for signing-authority publication"
|
|
23284
|
+
});
|
|
23285
|
+
}
|
|
23286
|
+
}
|
|
23287
|
+
});
|
|
23288
|
+
var PublishCredentialRefreshNotificationValidator = external_exports.enum([
|
|
23289
|
+
"queued",
|
|
23290
|
+
"suppressed",
|
|
23291
|
+
"not-applicable",
|
|
23292
|
+
/** Publication succeeded, but the post-commit notification enqueue must be retried. */
|
|
23293
|
+
"delivery-failed"
|
|
23294
|
+
]);
|
|
23295
|
+
var PublishCredentialRefreshResultValidator = external_exports.object({
|
|
23296
|
+
refreshId: external_exports.string().min(1),
|
|
23297
|
+
version: external_exports.number().int().positive(),
|
|
23298
|
+
publishedAt: external_exports.string().min(1),
|
|
23299
|
+
notification: PublishCredentialRefreshNotificationValidator
|
|
23300
|
+
});
|
|
23301
|
+
var CredentialRefreshVersionMetadataValidator = external_exports.object({
|
|
23302
|
+
version: external_exports.number().int().positive(),
|
|
23303
|
+
publishedAt: external_exports.string().min(1),
|
|
23304
|
+
effectiveAt: external_exports.string().optional(),
|
|
23305
|
+
etag: external_exports.string().optional(),
|
|
23306
|
+
signingMode: CredentialRefreshSigningModeValidator.optional(),
|
|
23307
|
+
updateSummary: external_exports.string().optional()
|
|
23308
|
+
});
|
|
23309
|
+
var GetCredentialRefreshHistoryInputValidator = external_exports.object({
|
|
23310
|
+
refreshId: external_exports.string().min(1),
|
|
23311
|
+
cursor: external_exports.string().optional(),
|
|
23312
|
+
limit: external_exports.number().int().positive().optional()
|
|
23313
|
+
});
|
|
23314
|
+
var GetCredentialRefreshHistoryResultValidator = external_exports.object({
|
|
23315
|
+
records: CredentialRefreshVersionMetadataValidator.array(),
|
|
23316
|
+
hasMore: external_exports.boolean(),
|
|
23317
|
+
cursor: external_exports.string().optional()
|
|
23318
|
+
});
|
|
23319
|
+
var CredentialRefreshChallengeValidator = external_exports.object({
|
|
23320
|
+
challenge: external_exports.string().min(1),
|
|
23321
|
+
expiresAt: external_exports.string().min(1),
|
|
23322
|
+
domain: external_exports.string().optional(),
|
|
23323
|
+
scheme: external_exports.literal("LearnCardDIDAuth").optional()
|
|
23324
|
+
});
|
|
23325
|
+
var PublicCredentialRefreshEnvelopeValidator = external_exports.object({
|
|
23326
|
+
format: external_exports.literal("vc"),
|
|
23327
|
+
credential: VCValidator,
|
|
23328
|
+
etag: external_exports.string().optional()
|
|
23329
|
+
});
|
|
23330
|
+
var JweCredentialRefreshEnvelopeValidator = external_exports.object({
|
|
23331
|
+
format: external_exports.literal("jwe"),
|
|
23332
|
+
jwe: JWEValidator,
|
|
23333
|
+
etag: external_exports.string().optional(),
|
|
23334
|
+
/** Present on LearnCard-managed endpoints; optional for interoperable JWE services. */
|
|
23335
|
+
version: external_exports.number().int().positive().optional()
|
|
23336
|
+
});
|
|
23337
|
+
var CredentialRefreshResponseEnvelopeValidator = external_exports.discriminatedUnion("format", [
|
|
23338
|
+
PublicCredentialRefreshEnvelopeValidator,
|
|
23339
|
+
JweCredentialRefreshEnvelopeValidator
|
|
23340
|
+
]);
|
|
23341
|
+
var CredentialRefreshFailureCodeValidator = external_exports.enum([
|
|
23342
|
+
"UNAVAILABLE",
|
|
23343
|
+
"TIMEOUT",
|
|
23344
|
+
"UNSUPPORTED_SERVICE",
|
|
23345
|
+
"UNAUTHORIZED",
|
|
23346
|
+
"MALFORMED_RESPONSE",
|
|
23347
|
+
"INVALID_PROOF",
|
|
23348
|
+
"ISSUER_MISMATCH",
|
|
23349
|
+
"ID_MISMATCH",
|
|
23350
|
+
"ROLLBACK",
|
|
23351
|
+
"REVOKED",
|
|
23352
|
+
"UNSAFE_ENDPOINT"
|
|
23353
|
+
]);
|
|
23354
|
+
var CredentialRefreshUpdatedResultValidator = external_exports.object({
|
|
23355
|
+
status: external_exports.literal("updated"),
|
|
23356
|
+
credential: VCValidator,
|
|
23357
|
+
etag: external_exports.string().optional(),
|
|
23358
|
+
managedVersion: external_exports.number().int().positive().optional()
|
|
23359
|
+
});
|
|
23360
|
+
var CredentialRefreshUnchangedResultValidator = external_exports.object({
|
|
23361
|
+
status: external_exports.literal("unchanged"),
|
|
23362
|
+
checkedAt: external_exports.string().min(1),
|
|
23363
|
+
etag: external_exports.string().optional()
|
|
23364
|
+
});
|
|
23365
|
+
var CredentialRefreshUnsupportedResultValidator = external_exports.object({
|
|
23366
|
+
status: external_exports.literal("unsupported")
|
|
23367
|
+
});
|
|
23368
|
+
var CredentialRefreshFailedResultValidator = external_exports.object({
|
|
23369
|
+
status: external_exports.literal("failed"),
|
|
23370
|
+
code: CredentialRefreshFailureCodeValidator,
|
|
23371
|
+
retryable: external_exports.boolean()
|
|
23372
|
+
});
|
|
23373
|
+
var CredentialRefreshResultValidator = external_exports.discriminatedUnion("status", [
|
|
23374
|
+
CredentialRefreshUpdatedResultValidator,
|
|
23375
|
+
CredentialRefreshUnchangedResultValidator,
|
|
23376
|
+
CredentialRefreshUnsupportedResultValidator,
|
|
23377
|
+
CredentialRefreshFailedResultValidator
|
|
23378
|
+
]);
|
|
23181
23379
|
|
|
23182
23380
|
// src/helpers.ts
|
|
23183
23381
|
var import_json_stringify_deterministic = __toESM(require_lib(), 1);
|
|
@@ -23306,30 +23504,63 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23306
23504
|
learnCard.debug?.("Adding LearnCloud Plugin");
|
|
23307
23505
|
let client = await getLearnCloudClient(url2, learnCard);
|
|
23308
23506
|
let dids = [learnCard.id.did()];
|
|
23309
|
-
|
|
23310
|
-
|
|
23311
|
-
|
|
23312
|
-
|
|
23313
|
-
|
|
23314
|
-
|
|
23315
|
-
|
|
23507
|
+
let didsLoaded = false;
|
|
23508
|
+
const loadDids = /* @__PURE__ */ __name(async (currentClient) => {
|
|
23509
|
+
if (didsLoaded) return;
|
|
23510
|
+
dids = await currentClient.user.getDids.query();
|
|
23511
|
+
didsLoaded = true;
|
|
23512
|
+
}, "loadDids");
|
|
23513
|
+
const otherClients = /* @__PURE__ */ new Map();
|
|
23514
|
+
const learnCloudDids = /* @__PURE__ */ new WeakMap();
|
|
23515
|
+
const getLearnCloudDid = /* @__PURE__ */ __name((currentClient) => {
|
|
23516
|
+
let learnCloudDid = learnCloudDids.get(currentClient);
|
|
23517
|
+
if (!learnCloudDid) {
|
|
23518
|
+
learnCloudDid = currentClient.utilities.getDid.query();
|
|
23519
|
+
learnCloudDids.set(currentClient, learnCloudDid);
|
|
23520
|
+
}
|
|
23521
|
+
return learnCloudDid;
|
|
23522
|
+
}, "getLearnCloudDid");
|
|
23523
|
+
const getOtherClient = /* @__PURE__ */ __name(async (otherUrl, _learnCard) => {
|
|
23524
|
+
const key = `${_learnCard.id.did()}\0${otherUrl}`;
|
|
23525
|
+
let otherClient = otherClients.get(key);
|
|
23526
|
+
if (!otherClient) {
|
|
23527
|
+
otherClient = getLearnCloudClient(otherUrl, _learnCard);
|
|
23528
|
+
otherClients.set(key, otherClient);
|
|
23529
|
+
}
|
|
23530
|
+
try {
|
|
23531
|
+
return await otherClient;
|
|
23532
|
+
} catch (error51) {
|
|
23533
|
+
if (otherClients.get(key) === otherClient) otherClients.delete(key);
|
|
23534
|
+
throw error51;
|
|
23535
|
+
}
|
|
23316
23536
|
}, "getOtherClient");
|
|
23317
|
-
|
|
23318
|
-
|
|
23319
|
-
const
|
|
23320
|
-
|
|
23321
|
-
|
|
23322
|
-
|
|
23323
|
-
|
|
23324
|
-
|
|
23325
|
-
|
|
23326
|
-
|
|
23327
|
-
|
|
23328
|
-
|
|
23329
|
-
|
|
23330
|
-
|
|
23331
|
-
|
|
23332
|
-
|
|
23537
|
+
let updateQueue = Promise.resolve();
|
|
23538
|
+
const updateLearnCard = /* @__PURE__ */ __name((_learnCard) => {
|
|
23539
|
+
const update = updateQueue.then(async () => {
|
|
23540
|
+
const oldDid = learnCard.id.did();
|
|
23541
|
+
const newDid = _learnCard.id.did();
|
|
23542
|
+
if (oldDid !== newDid) {
|
|
23543
|
+
if (automaticallyAssociateDids) {
|
|
23544
|
+
await loadDids(client);
|
|
23545
|
+
if (!dids.includes(newDid)) {
|
|
23546
|
+
const presentation = await _learnCard.invoke.getDidAuthVp();
|
|
23547
|
+
await client.user.addDid.mutate({ presentation });
|
|
23548
|
+
if (newDid.split(":")[1] === "web") {
|
|
23549
|
+
await client.user.setPrimaryDid.mutate({ presentation });
|
|
23550
|
+
}
|
|
23551
|
+
dids = await client.user.getDids.query();
|
|
23552
|
+
}
|
|
23553
|
+
}
|
|
23554
|
+
client = await getLearnCloudClient(url2, _learnCard);
|
|
23555
|
+
}
|
|
23556
|
+
learnCard = _learnCard;
|
|
23557
|
+
return client;
|
|
23558
|
+
});
|
|
23559
|
+
updateQueue = update.then(
|
|
23560
|
+
() => void 0,
|
|
23561
|
+
() => void 0
|
|
23562
|
+
);
|
|
23563
|
+
return update;
|
|
23333
23564
|
}, "updateLearnCard");
|
|
23334
23565
|
return {
|
|
23335
23566
|
name: "LearnCloud",
|
|
@@ -23337,25 +23568,33 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23337
23568
|
description: "LearnCloud Integration",
|
|
23338
23569
|
methods: {
|
|
23339
23570
|
learnCloudCreate: /* @__PURE__ */ __name(async (_learnCard, document) => {
|
|
23340
|
-
await updateLearnCard(_learnCard);
|
|
23571
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23341
23572
|
const item = await generateEncryptedRecord(
|
|
23342
23573
|
_learnCard,
|
|
23343
23574
|
document,
|
|
23344
23575
|
unencryptedCustomFields
|
|
23345
23576
|
);
|
|
23346
|
-
return
|
|
23347
|
-
item: await generateJWE(
|
|
23577
|
+
return currentClient.customStorage.create.mutate({
|
|
23578
|
+
item: await generateJWE(
|
|
23579
|
+
_learnCard,
|
|
23580
|
+
await getLearnCloudDid(currentClient),
|
|
23581
|
+
item
|
|
23582
|
+
)
|
|
23348
23583
|
});
|
|
23349
23584
|
}, "learnCloudCreate"),
|
|
23350
23585
|
learnCloudCreateMany: /* @__PURE__ */ __name(async (_learnCard, documents) => {
|
|
23351
|
-
await updateLearnCard(_learnCard);
|
|
23586
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23352
23587
|
const items = await Promise.all(
|
|
23353
23588
|
documents.map(
|
|
23354
23589
|
async (document) => generateEncryptedRecord(_learnCard, document, unencryptedCustomFields)
|
|
23355
23590
|
)
|
|
23356
23591
|
);
|
|
23357
|
-
return
|
|
23358
|
-
items: await generateJWE(
|
|
23592
|
+
return currentClient.customStorage.createMany.mutate({
|
|
23593
|
+
items: await generateJWE(
|
|
23594
|
+
_learnCard,
|
|
23595
|
+
await getLearnCloudDid(currentClient),
|
|
23596
|
+
items
|
|
23597
|
+
)
|
|
23359
23598
|
});
|
|
23360
23599
|
}, "learnCloudCreateMany"),
|
|
23361
23600
|
learnCloudRead: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
|
|
@@ -23378,9 +23617,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23378
23617
|
return documents;
|
|
23379
23618
|
}, "learnCloudRead"),
|
|
23380
23619
|
learnCloudReadPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions, includeAssociatedDids) => {
|
|
23381
|
-
await updateLearnCard(_learnCard);
|
|
23620
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23382
23621
|
if (!query) {
|
|
23383
|
-
const jwe2 = await
|
|
23622
|
+
const jwe2 = await currentClient.customStorage.read.query({
|
|
23384
23623
|
includeAssociatedDids,
|
|
23385
23624
|
...paginationOptions
|
|
23386
23625
|
});
|
|
@@ -23407,8 +23646,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23407
23646
|
([key]) => [...unencryptedCustomFields, "_id"].includes(key)
|
|
23408
23647
|
)
|
|
23409
23648
|
);
|
|
23410
|
-
const jwe = await
|
|
23411
|
-
query: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23649
|
+
const jwe = await currentClient.customStorage.read.query({
|
|
23650
|
+
query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23412
23651
|
...unencryptedEntries,
|
|
23413
23652
|
...fields.length > 0 ? { fields: { $in: fields } } : {}
|
|
23414
23653
|
}),
|
|
@@ -23430,8 +23669,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23430
23669
|
};
|
|
23431
23670
|
}, "learnCloudReadPage"),
|
|
23432
23671
|
learnCloudCount: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
|
|
23433
|
-
await updateLearnCard(_learnCard);
|
|
23434
|
-
if (!query)
|
|
23672
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23673
|
+
if (!query)
|
|
23674
|
+
return currentClient.customStorage.count.query({ includeAssociatedDids });
|
|
23435
23675
|
const fields = await generateEncryptedFieldsArray(_learnCard, query, [
|
|
23436
23676
|
...unencryptedCustomFields,
|
|
23437
23677
|
"_id"
|
|
@@ -23441,8 +23681,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23441
23681
|
([key]) => [...unencryptedCustomFields, "_id"].includes(key)
|
|
23442
23682
|
)
|
|
23443
23683
|
);
|
|
23444
|
-
return
|
|
23445
|
-
query: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23684
|
+
return currentClient.customStorage.count.query({
|
|
23685
|
+
query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23446
23686
|
...unencryptedEntries,
|
|
23447
23687
|
...fields.length > 0 ? { fields: { $in: fields } } : {}
|
|
23448
23688
|
}),
|
|
@@ -23450,17 +23690,21 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23450
23690
|
});
|
|
23451
23691
|
}, "learnCloudCount"),
|
|
23452
23692
|
learnCloudUpdate: /* @__PURE__ */ __name(async (_learnCard, query, update) => {
|
|
23453
|
-
await updateLearnCard(_learnCard);
|
|
23693
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23454
23694
|
const documents = await _learnCard.invoke.learnCloudRead(query);
|
|
23455
23695
|
const updates = await Promise.all(
|
|
23456
23696
|
documents.map(
|
|
23457
|
-
async (document) =>
|
|
23458
|
-
query: await generateJWE(
|
|
23459
|
-
|
|
23460
|
-
|
|
23697
|
+
async (document) => currentClient.customStorage.update.mutate({
|
|
23698
|
+
query: await generateJWE(
|
|
23699
|
+
_learnCard,
|
|
23700
|
+
await getLearnCloudDid(currentClient),
|
|
23701
|
+
{
|
|
23702
|
+
_id: document._id
|
|
23703
|
+
}
|
|
23704
|
+
),
|
|
23461
23705
|
update: await generateJWE(
|
|
23462
23706
|
_learnCard,
|
|
23463
|
-
await getLearnCloudDid(),
|
|
23707
|
+
await getLearnCloudDid(currentClient),
|
|
23464
23708
|
await generateEncryptedRecord(
|
|
23465
23709
|
_learnCard,
|
|
23466
23710
|
{ ...document, ...update },
|
|
@@ -23473,8 +23717,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23473
23717
|
return updates.reduce((sum, current) => current + sum, 0);
|
|
23474
23718
|
}, "learnCloudUpdate"),
|
|
23475
23719
|
learnCloudDelete: /* @__PURE__ */ __name(async (_learnCard, query, includeAssociatedDids) => {
|
|
23476
|
-
await updateLearnCard(_learnCard);
|
|
23477
|
-
if (!query)
|
|
23720
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23721
|
+
if (!query)
|
|
23722
|
+
return currentClient.customStorage.delete.mutate({ includeAssociatedDids });
|
|
23478
23723
|
const fields = await generateEncryptedFieldsArray(_learnCard, query, [
|
|
23479
23724
|
...unencryptedCustomFields,
|
|
23480
23725
|
"_id"
|
|
@@ -23484,8 +23729,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23484
23729
|
([key]) => [...unencryptedCustomFields, "_id"].includes(key)
|
|
23485
23730
|
)
|
|
23486
23731
|
);
|
|
23487
|
-
return
|
|
23488
|
-
query: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23732
|
+
return currentClient.customStorage.delete.mutate({
|
|
23733
|
+
query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23489
23734
|
...unencryptedEntries,
|
|
23490
23735
|
...fields.length > 0 ? { fields: { $in: fields } } : {}
|
|
23491
23736
|
}),
|
|
@@ -23493,7 +23738,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23493
23738
|
});
|
|
23494
23739
|
}, "learnCloudDelete"),
|
|
23495
23740
|
learnCloudBatchResolve: /* @__PURE__ */ __name(async (_learnCard, uris) => {
|
|
23496
|
-
const
|
|
23741
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23742
|
+
const results = await currentClient.storage.batchResolve.query({ uris });
|
|
23497
23743
|
return Promise.all(
|
|
23498
23744
|
results.map(async (result) => {
|
|
23499
23745
|
if (!result) return null;
|
|
@@ -23512,19 +23758,20 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23512
23758
|
},
|
|
23513
23759
|
read: {
|
|
23514
23760
|
get: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
23515
|
-
|
|
23761
|
+
_learnCard.debug?.("LearnCloud read.get", uri);
|
|
23516
23762
|
if (!uri) return void 0;
|
|
23763
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23517
23764
|
const parts = uri.split(":");
|
|
23518
|
-
|
|
23765
|
+
_learnCard.debug?.("LearnCloud read.get parts:", parts);
|
|
23519
23766
|
if (parts.length !== 5) return void 0;
|
|
23520
23767
|
const [lc, method, uriUrl] = parts;
|
|
23521
23768
|
if (lc !== "lc" || method !== "cloud") {
|
|
23522
|
-
|
|
23769
|
+
_learnCard.debug?.("LearnCloud read.get not cloud URI!", { lc, method });
|
|
23523
23770
|
return void 0;
|
|
23524
23771
|
}
|
|
23525
23772
|
if (uriUrl.replace(/https?:\/\//g, "") !== url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")) {
|
|
23526
23773
|
const fullUrl = (uriUrl.startsWith("http") ? uriUrl : `http${uriUrl.includes("http") || uriUrl.includes("localhost") ? "" : "s"}://${uriUrl}`).replaceAll("%3A", ":");
|
|
23527
|
-
|
|
23774
|
+
_learnCard.debug?.("LearnCloud read.get different LearnCloud!", {
|
|
23528
23775
|
uriUrl,
|
|
23529
23776
|
url: url2,
|
|
23530
23777
|
fullUrl,
|
|
@@ -23533,12 +23780,12 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23533
23780
|
b: url2.replace(/https?:\/\//g, "").replace(/:/g, "%3A")
|
|
23534
23781
|
}
|
|
23535
23782
|
});
|
|
23536
|
-
const otherClient = await getOtherClient(fullUrl);
|
|
23783
|
+
const otherClient = await getOtherClient(fullUrl, _learnCard);
|
|
23537
23784
|
try {
|
|
23538
23785
|
const result = await otherClient.storage.resolve.query({ uri });
|
|
23539
|
-
|
|
23786
|
+
_learnCard.debug?.("LearnCloud read.get result", result);
|
|
23540
23787
|
const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
|
|
23541
|
-
|
|
23788
|
+
_learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
|
|
23542
23789
|
const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
|
|
23543
23790
|
return (0, import_helpers.resolveStorageReadResult)(parsed);
|
|
23544
23791
|
} catch (error51) {
|
|
@@ -23547,10 +23794,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23547
23794
|
}
|
|
23548
23795
|
}
|
|
23549
23796
|
try {
|
|
23550
|
-
const result = await
|
|
23551
|
-
|
|
23797
|
+
const result = await currentClient.storage.resolve.query({ uri });
|
|
23798
|
+
_learnCard.debug?.("LearnCloud read.get result", result);
|
|
23552
23799
|
const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
|
|
23553
|
-
|
|
23800
|
+
_learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
|
|
23554
23801
|
const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
|
|
23555
23802
|
return (0, import_helpers.resolveStorageReadResult)(parsed);
|
|
23556
23803
|
} catch (error51) {
|
|
@@ -23562,23 +23809,26 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23562
23809
|
store: {
|
|
23563
23810
|
upload: /* @__PURE__ */ __name(async (_learnCard, credential) => {
|
|
23564
23811
|
_learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
|
|
23565
|
-
|
|
23812
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23813
|
+
return currentClient.storage.store.mutate({
|
|
23566
23814
|
item: normalizeEnvelopeForTransport(credential)
|
|
23567
23815
|
});
|
|
23568
23816
|
}, "upload"),
|
|
23569
23817
|
uploadEncrypted: /* @__PURE__ */ __name(async (_learnCard, credential, { recipients = [] } = { recipients: [] }) => {
|
|
23570
23818
|
_learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
|
|
23819
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23571
23820
|
const jwe = await _learnCard.invoke.createDagJwe(
|
|
23572
23821
|
normalizeEnvelopeForTransport(credential),
|
|
23573
23822
|
[_learnCard.id.did(), ...recipients]
|
|
23574
23823
|
);
|
|
23575
|
-
return
|
|
23824
|
+
return currentClient.storage.store.mutate({ item: jwe });
|
|
23576
23825
|
}, "uploadEncrypted"),
|
|
23577
23826
|
delete: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
23578
23827
|
_learnCard.debug?.("learnCard.store['LearnCloud'].delete", { uri });
|
|
23828
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23579
23829
|
let deleted = false;
|
|
23580
23830
|
try {
|
|
23581
|
-
deleted = Boolean(await
|
|
23831
|
+
deleted = Boolean(await currentClient.storage.delete.mutate({ uri }));
|
|
23582
23832
|
} catch (error51) {
|
|
23583
23833
|
_learnCard.debug?.("LearnCloud store.delete storage.delete failed", error51);
|
|
23584
23834
|
}
|
|
@@ -23611,7 +23861,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23611
23861
|
return records;
|
|
23612
23862
|
}, "get"),
|
|
23613
23863
|
getPage: /* @__PURE__ */ __name(async (_learnCard, query, paginationOptions) => {
|
|
23614
|
-
await updateLearnCard(_learnCard);
|
|
23864
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23615
23865
|
_learnCard.debug?.("LearnCloud index.getPaginated", query, paginationOptions);
|
|
23616
23866
|
const options = {
|
|
23617
23867
|
...paginationOptions,
|
|
@@ -23619,7 +23869,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23619
23869
|
};
|
|
23620
23870
|
if (!query) {
|
|
23621
23871
|
_learnCard.debug?.("LearnCloud index.get (no query)");
|
|
23622
|
-
const jwe2 = await
|
|
23872
|
+
const jwe2 = await currentClient.index.get.query(options);
|
|
23623
23873
|
_learnCard.debug?.("LearnCloud index.get (no query response)", jwe2);
|
|
23624
23874
|
const encryptedRecords2 = (0, import_helpers.isEncrypted)(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
|
|
23625
23875
|
_learnCard.debug?.(
|
|
@@ -23649,8 +23899,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23649
23899
|
"LearnCloud index.get (query unencryptedEntries)",
|
|
23650
23900
|
unencryptedEntries
|
|
23651
23901
|
);
|
|
23652
|
-
const jwe = await
|
|
23653
|
-
query: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23902
|
+
const jwe = await currentClient.index.get.query({
|
|
23903
|
+
query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23654
23904
|
...unencryptedEntries,
|
|
23655
23905
|
...fields.length > 0 ? { fields: { $in: fields } } : {}
|
|
23656
23906
|
}),
|
|
@@ -23672,10 +23922,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23672
23922
|
};
|
|
23673
23923
|
}, "getPage"),
|
|
23674
23924
|
getCount: /* @__PURE__ */ __name(async (_learnCard, query) => {
|
|
23675
|
-
await updateLearnCard(_learnCard);
|
|
23925
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23676
23926
|
if (!query) {
|
|
23677
23927
|
_learnCard.debug?.("LearnCloud index.count (no query)");
|
|
23678
|
-
const jwe2 = await
|
|
23928
|
+
const jwe2 = await currentClient.index.count.query();
|
|
23679
23929
|
_learnCard.debug?.("LearnCloud index.count (no query response)", jwe2);
|
|
23680
23930
|
const count2 = (0, import_helpers.isEncrypted)(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
|
|
23681
23931
|
_learnCard.debug?.("LearnCloud index.count (no query count)", count2);
|
|
@@ -23695,8 +23945,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23695
23945
|
"LearnCloud index.getCount (query unencryptedEntries)",
|
|
23696
23946
|
unencryptedEntries
|
|
23697
23947
|
);
|
|
23698
|
-
const jwe = await
|
|
23699
|
-
query: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23948
|
+
const jwe = await currentClient.index.count.query({
|
|
23949
|
+
query: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23700
23950
|
...unencryptedEntries,
|
|
23701
23951
|
...fields.length > 0 ? { fields: { $in: fields } } : {}
|
|
23702
23952
|
})
|
|
@@ -23707,10 +23957,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23707
23957
|
return count;
|
|
23708
23958
|
}, "getCount"),
|
|
23709
23959
|
add: /* @__PURE__ */ __name(async (_learnCard, record2) => {
|
|
23710
|
-
await updateLearnCard(_learnCard);
|
|
23960
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23711
23961
|
const id = record2.id || _learnCard.invoke.crypto().randomUUID();
|
|
23712
|
-
return
|
|
23713
|
-
record: await generateJWE(_learnCard, await getLearnCloudDid(), {
|
|
23962
|
+
return currentClient.index.add.mutate({
|
|
23963
|
+
record: await generateJWE(_learnCard, await getLearnCloudDid(currentClient), {
|
|
23714
23964
|
...await generateEncryptedRecord(
|
|
23715
23965
|
_learnCard,
|
|
23716
23966
|
{ ...record2, id },
|
|
@@ -23721,7 +23971,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23721
23971
|
});
|
|
23722
23972
|
}, "add"),
|
|
23723
23973
|
addMany: /* @__PURE__ */ __name(async (_learnCard, _records) => {
|
|
23724
|
-
await updateLearnCard(_learnCard);
|
|
23974
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23725
23975
|
const results = await Promise.all(
|
|
23726
23976
|
(0, import_lodash.chunk)(_records, 25).map(async (batch) => {
|
|
23727
23977
|
const records = await Promise.all(
|
|
@@ -23737,10 +23987,10 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23737
23987
|
};
|
|
23738
23988
|
})
|
|
23739
23989
|
);
|
|
23740
|
-
return
|
|
23990
|
+
return currentClient.index.addMany.mutate({
|
|
23741
23991
|
records: await generateJWE(
|
|
23742
23992
|
_learnCard,
|
|
23743
|
-
await getLearnCloudDid(),
|
|
23993
|
+
await getLearnCloudDid(currentClient),
|
|
23744
23994
|
records
|
|
23745
23995
|
)
|
|
23746
23996
|
});
|
|
@@ -23749,27 +23999,27 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
|
|
|
23749
23999
|
return results.every(Boolean);
|
|
23750
24000
|
}, "addMany"),
|
|
23751
24001
|
update: /* @__PURE__ */ __name(async (_learnCard, id, updates) => {
|
|
23752
|
-
await updateLearnCard(_learnCard);
|
|
24002
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
23753
24003
|
const records = await _learnCard.index.LearnCloud.get({ id });
|
|
23754
24004
|
if (records.length !== 1) return false;
|
|
23755
24005
|
const record2 = records[0];
|
|
23756
24006
|
const newRecord = { ...record2, ...updates };
|
|
23757
|
-
return
|
|
24007
|
+
return currentClient.index.update.mutate({
|
|
23758
24008
|
id: await hash2(_learnCard, id),
|
|
23759
24009
|
updates: await generateJWE(
|
|
23760
24010
|
_learnCard,
|
|
23761
|
-
await getLearnCloudDid(),
|
|
24011
|
+
await getLearnCloudDid(currentClient),
|
|
23762
24012
|
await generateEncryptedRecord(_learnCard, newRecord, unencryptedFields)
|
|
23763
24013
|
)
|
|
23764
24014
|
});
|
|
23765
24015
|
}, "update"),
|
|
23766
24016
|
remove: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
23767
|
-
await updateLearnCard(_learnCard);
|
|
23768
|
-
return
|
|
24017
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
24018
|
+
return currentClient.index.remove.mutate({ id: await hash2(_learnCard, id) });
|
|
23769
24019
|
}, "remove"),
|
|
23770
24020
|
removeAll: /* @__PURE__ */ __name(async (_learnCard) => {
|
|
23771
|
-
await updateLearnCard(_learnCard);
|
|
23772
|
-
return
|
|
24021
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
24022
|
+
return currentClient.index.removeAll.mutate();
|
|
23773
24023
|
}, "removeAll")
|
|
23774
24024
|
}
|
|
23775
24025
|
};
|