@learncard/learn-cloud-plugin 2.3.38 → 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
|
@@ -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(
|
|
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
|
-
|
|
23301
|
-
|
|
23302
|
-
|
|
23303
|
-
|
|
23304
|
-
|
|
23305
|
-
|
|
23306
|
-
|
|
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
|
-
|
|
23309
|
-
|
|
23310
|
-
const
|
|
23311
|
-
|
|
23312
|
-
|
|
23313
|
-
|
|
23314
|
-
|
|
23315
|
-
|
|
23316
|
-
|
|
23317
|
-
|
|
23318
|
-
|
|
23319
|
-
|
|
23320
|
-
|
|
23321
|
-
|
|
23322
|
-
|
|
23323
|
-
|
|
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
|
|
23338
|
-
item: await generateJWE(
|
|
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
|
|
23349
|
-
items: await generateJWE(
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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) =>
|
|
23449
|
-
query: await generateJWE(
|
|
23450
|
-
|
|
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)
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23777
|
+
_learnCard.debug?.("LearnCloud read.get result", result);
|
|
23531
23778
|
const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
|
|
23532
|
-
|
|
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
|
|
23542
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
24012
|
+
const currentClient = await updateLearnCard(_learnCard);
|
|
24013
|
+
return currentClient.index.removeAll.mutate();
|
|
23764
24014
|
}, "removeAll")
|
|
23765
24015
|
}
|
|
23766
24016
|
};
|