@learncard/network-plugin 3.0.0 → 3.1.0
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/lcn-plugin.cjs.development.cjs +960 -52
- package/dist/lcn-plugin.cjs.development.cjs.map +3 -3
- package/dist/lcn-plugin.cjs.production.min.cjs +22 -22
- package/dist/lcn-plugin.cjs.production.min.cjs.map +3 -3
- package/dist/lcn-plugin.esm.js +961 -52
- package/dist/lcn-plugin.esm.js.map +3 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/test/inbox-finalize-crypto.test.d.ts +2 -0
- package/dist/test/inbox-finalize-crypto.test.d.ts.map +1 -0
- package/dist/types.d.ts +99 -18
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/plugin.ts +206 -12
- package/src/test/inbox-finalize-crypto.test.ts +61 -0
- package/src/test/index.test.ts +0 -33
- package/src/types.ts +156 -22
|
@@ -639,10 +639,10 @@ function $constructor(name, initializer3, params) {
|
|
|
639
639
|
let Definition = _Definition;
|
|
640
640
|
Object.defineProperty(Definition, "name", { value: name });
|
|
641
641
|
function _(def) {
|
|
642
|
-
var
|
|
642
|
+
var _a5;
|
|
643
643
|
const inst = params?.Parent ? new Definition() : this;
|
|
644
644
|
init(inst, def);
|
|
645
|
-
(
|
|
645
|
+
(_a5 = inst._zod).deferred ?? (_a5.deferred = []);
|
|
646
646
|
for (const fn of inst._zod.deferred) {
|
|
647
647
|
fn();
|
|
648
648
|
}
|
|
@@ -1308,8 +1308,8 @@ function explicitlyAborted(x, startIndex = 0) {
|
|
|
1308
1308
|
__name(explicitlyAborted, "explicitlyAborted");
|
|
1309
1309
|
function prefixIssues(path, issues) {
|
|
1310
1310
|
return issues.map((iss) => {
|
|
1311
|
-
var
|
|
1312
|
-
(
|
|
1311
|
+
var _a5;
|
|
1312
|
+
(_a5 = iss).path ?? (_a5.path = []);
|
|
1313
1313
|
iss.path.unshift(path);
|
|
1314
1314
|
return iss;
|
|
1315
1315
|
});
|
|
@@ -1512,7 +1512,7 @@ __name(formatError, "formatError");
|
|
|
1512
1512
|
function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
1513
1513
|
const result = { errors: [] };
|
|
1514
1514
|
const processError = /* @__PURE__ */ __name((error52, path = []) => {
|
|
1515
|
-
var
|
|
1515
|
+
var _a5, _b;
|
|
1516
1516
|
for (const issue2 of error52.issues) {
|
|
1517
1517
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
1518
1518
|
issue2.errors.map((issues) => processError({ issues }, [...path, ...issue2.path]));
|
|
@@ -1533,7 +1533,7 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
|
1533
1533
|
const terminal = i === fullpath.length - 1;
|
|
1534
1534
|
if (typeof el === "string") {
|
|
1535
1535
|
curr.properties ?? (curr.properties = {});
|
|
1536
|
-
(
|
|
1536
|
+
(_a5 = curr.properties)[el] ?? (_a5[el] = { errors: [] });
|
|
1537
1537
|
curr = curr.properties[el];
|
|
1538
1538
|
} else {
|
|
1539
1539
|
curr.items ?? (curr.items = []);
|
|
@@ -1838,10 +1838,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
|
|
|
1838
1838
|
|
|
1839
1839
|
// ../../../node_modules/zod/v4/core/checks.js
|
|
1840
1840
|
var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
|
|
1841
|
-
var
|
|
1841
|
+
var _a5;
|
|
1842
1842
|
inst._zod ?? (inst._zod = {});
|
|
1843
1843
|
inst._zod.def = def;
|
|
1844
|
-
(
|
|
1844
|
+
(_a5 = inst._zod).onattach ?? (_a5.onattach = []);
|
|
1845
1845
|
});
|
|
1846
1846
|
var numericOriginMap = {
|
|
1847
1847
|
number: "number",
|
|
@@ -1907,8 +1907,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
|
|
|
1907
1907
|
var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
|
|
1908
1908
|
$ZodCheck.init(inst, def);
|
|
1909
1909
|
inst._zod.onattach.push((inst2) => {
|
|
1910
|
-
var
|
|
1911
|
-
(
|
|
1910
|
+
var _a5;
|
|
1911
|
+
(_a5 = inst2._zod.bag).multipleOf ?? (_a5.multipleOf = def.value);
|
|
1912
1912
|
});
|
|
1913
1913
|
inst._zod.check = (payload) => {
|
|
1914
1914
|
if (typeof payload.value !== typeof def.value)
|
|
@@ -2041,9 +2041,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
|
|
|
2041
2041
|
};
|
|
2042
2042
|
});
|
|
2043
2043
|
var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
|
|
2044
|
-
var
|
|
2044
|
+
var _a5;
|
|
2045
2045
|
$ZodCheck.init(inst, def);
|
|
2046
|
-
(
|
|
2046
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2047
2047
|
const val = payload.value;
|
|
2048
2048
|
return !nullish(val) && val.size !== void 0;
|
|
2049
2049
|
});
|
|
@@ -2069,9 +2069,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
|
|
|
2069
2069
|
};
|
|
2070
2070
|
});
|
|
2071
2071
|
var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
|
|
2072
|
-
var
|
|
2072
|
+
var _a5;
|
|
2073
2073
|
$ZodCheck.init(inst, def);
|
|
2074
|
-
(
|
|
2074
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2075
2075
|
const val = payload.value;
|
|
2076
2076
|
return !nullish(val) && val.size !== void 0;
|
|
2077
2077
|
});
|
|
@@ -2097,9 +2097,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
|
|
|
2097
2097
|
};
|
|
2098
2098
|
});
|
|
2099
2099
|
var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
|
|
2100
|
-
var
|
|
2100
|
+
var _a5;
|
|
2101
2101
|
$ZodCheck.init(inst, def);
|
|
2102
|
-
(
|
|
2102
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2103
2103
|
const val = payload.value;
|
|
2104
2104
|
return !nullish(val) && val.size !== void 0;
|
|
2105
2105
|
});
|
|
@@ -2127,9 +2127,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
|
|
|
2127
2127
|
};
|
|
2128
2128
|
});
|
|
2129
2129
|
var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
|
|
2130
|
-
var
|
|
2130
|
+
var _a5;
|
|
2131
2131
|
$ZodCheck.init(inst, def);
|
|
2132
|
-
(
|
|
2132
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2133
2133
|
const val = payload.value;
|
|
2134
2134
|
return !nullish(val) && val.length !== void 0;
|
|
2135
2135
|
});
|
|
@@ -2156,9 +2156,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
|
|
|
2156
2156
|
};
|
|
2157
2157
|
});
|
|
2158
2158
|
var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
|
|
2159
|
-
var
|
|
2159
|
+
var _a5;
|
|
2160
2160
|
$ZodCheck.init(inst, def);
|
|
2161
|
-
(
|
|
2161
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2162
2162
|
const val = payload.value;
|
|
2163
2163
|
return !nullish(val) && val.length !== void 0;
|
|
2164
2164
|
});
|
|
@@ -2185,9 +2185,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
|
|
|
2185
2185
|
};
|
|
2186
2186
|
});
|
|
2187
2187
|
var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
|
|
2188
|
-
var
|
|
2188
|
+
var _a5;
|
|
2189
2189
|
$ZodCheck.init(inst, def);
|
|
2190
|
-
(
|
|
2190
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2191
2191
|
const val = payload.value;
|
|
2192
2192
|
return !nullish(val) && val.length !== void 0;
|
|
2193
2193
|
});
|
|
@@ -2216,7 +2216,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
|
|
|
2216
2216
|
};
|
|
2217
2217
|
});
|
|
2218
2218
|
var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
|
|
2219
|
-
var
|
|
2219
|
+
var _a5, _b;
|
|
2220
2220
|
$ZodCheck.init(inst, def);
|
|
2221
2221
|
inst._zod.onattach.push((inst2) => {
|
|
2222
2222
|
const bag = inst2._zod.bag;
|
|
@@ -2227,7 +2227,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
|
|
|
2227
2227
|
}
|
|
2228
2228
|
});
|
|
2229
2229
|
if (def.pattern)
|
|
2230
|
-
(
|
|
2230
|
+
(_a5 = inst._zod).check ?? (_a5.check = (payload) => {
|
|
2231
2231
|
def.pattern.lastIndex = 0;
|
|
2232
2232
|
if (def.pattern.test(payload.value))
|
|
2233
2233
|
return;
|
|
@@ -2432,7 +2432,7 @@ var version = {
|
|
|
2432
2432
|
|
|
2433
2433
|
// ../../../node_modules/zod/v4/core/schemas.js
|
|
2434
2434
|
var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
2435
|
-
var
|
|
2435
|
+
var _a5;
|
|
2436
2436
|
inst ?? (inst = {});
|
|
2437
2437
|
inst._zod.def = def;
|
|
2438
2438
|
inst._zod.bag = inst._zod.bag || {};
|
|
@@ -2447,7 +2447,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
|
2447
2447
|
}
|
|
2448
2448
|
}
|
|
2449
2449
|
if (checks.length === 0) {
|
|
2450
|
-
(
|
|
2450
|
+
(_a5 = inst._zod).deferred ?? (_a5.deferred = []);
|
|
2451
2451
|
inst._zod.deferred?.push(() => {
|
|
2452
2452
|
inst._zod.run = inst._zod.parse;
|
|
2453
2453
|
});
|
|
@@ -11838,7 +11838,7 @@ function initializeContext(params) {
|
|
|
11838
11838
|
}
|
|
11839
11839
|
__name(initializeContext, "initializeContext");
|
|
11840
11840
|
function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
|
|
11841
|
-
var
|
|
11841
|
+
var _a5;
|
|
11842
11842
|
const def = schema._zod.def;
|
|
11843
11843
|
const seen = ctx.seen.get(schema);
|
|
11844
11844
|
if (seen) {
|
|
@@ -11886,7 +11886,7 @@ function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
|
|
|
11886
11886
|
delete result.schema.default;
|
|
11887
11887
|
}
|
|
11888
11888
|
if (ctx.io === "input" && "_prefault" in result.schema)
|
|
11889
|
-
(
|
|
11889
|
+
(_a5 = result.schema).default ?? (_a5.default = result.schema._prefault);
|
|
11890
11890
|
delete result.schema._prefault;
|
|
11891
11891
|
const _result = ctx.seen.get(schema);
|
|
11892
11892
|
return _result.schema;
|
|
@@ -15462,7 +15462,8 @@ var AssociationTypeValidator = external_exports.enum([
|
|
|
15462
15462
|
"replacedBy"
|
|
15463
15463
|
]).or(external_exports.string());
|
|
15464
15464
|
var AssociationValidator = external_exports.object({
|
|
15465
|
-
|
|
15465
|
+
// Accept compacted scalars while retaining the existing permissive array contract.
|
|
15466
|
+
type: external_exports.string().min(1).or(external_exports.string().array().nonempty()),
|
|
15466
15467
|
associationType: AssociationTypeValidator,
|
|
15467
15468
|
sourceId: external_exports.string().optional(),
|
|
15468
15469
|
targetId: external_exports.string()
|
|
@@ -16285,11 +16286,48 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
|
16285
16286
|
updatedAt: external_exports.string(),
|
|
16286
16287
|
expiresAt: external_exports.string().optional(),
|
|
16287
16288
|
autoBoosts: external_exports.string().array().optional(),
|
|
16288
|
-
writers: external_exports.array(LCNProfileValidator).optional()
|
|
16289
|
+
writers: external_exports.array(LCNProfileValidator).optional(),
|
|
16290
|
+
recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
|
|
16291
|
+
audienceVersion: external_exports.number().int().nonnegative().optional()
|
|
16289
16292
|
});
|
|
16290
|
-
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied"]).nullable();
|
|
16293
|
+
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
|
|
16291
16294
|
var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
|
|
16292
|
-
var
|
|
16295
|
+
var ConsentFlowReferralValidator = external_exports.object({
|
|
16296
|
+
requestId: external_exports.string(),
|
|
16297
|
+
requestedBy: external_exports.string(),
|
|
16298
|
+
externalReferenceId: external_exports.string().max(256).optional()
|
|
16299
|
+
});
|
|
16300
|
+
var ContractRequestFieldsValidator = ConsentFlowReferralValidator.partial().extend({
|
|
16301
|
+
requestedAt: external_exports.string().optional(),
|
|
16302
|
+
message: external_exports.string().max(500).optional()
|
|
16303
|
+
});
|
|
16304
|
+
var SendContractRequestValidator = external_exports.object({
|
|
16305
|
+
contractUri: external_exports.string(),
|
|
16306
|
+
targetProfileId: external_exports.string(),
|
|
16307
|
+
externalReferenceId: external_exports.string().trim().min(1).max(256).optional(),
|
|
16308
|
+
message: external_exports.string().trim().max(500).optional()
|
|
16309
|
+
});
|
|
16310
|
+
var ConsentFlowWebhookMetadataValidator = external_exports.object({
|
|
16311
|
+
eventId: external_exports.string(),
|
|
16312
|
+
deliveryKey: external_exports.string(),
|
|
16313
|
+
event: external_exports.enum([
|
|
16314
|
+
"request_sent",
|
|
16315
|
+
"request_accepted",
|
|
16316
|
+
"request_denied",
|
|
16317
|
+
"request_cancelled",
|
|
16318
|
+
"consent_created",
|
|
16319
|
+
"consent_updated",
|
|
16320
|
+
"consent_withdrawn",
|
|
16321
|
+
"credentials_synced"
|
|
16322
|
+
]),
|
|
16323
|
+
contractUri: external_exports.string(),
|
|
16324
|
+
termsUri: external_exports.string().optional(),
|
|
16325
|
+
requestId: external_exports.string().optional(),
|
|
16326
|
+
requestedBy: external_exports.string().optional(),
|
|
16327
|
+
externalReferenceId: external_exports.string().optional(),
|
|
16328
|
+
recipientRole: external_exports.enum(["owner", "recipient", "requester", "target"])
|
|
16329
|
+
});
|
|
16330
|
+
var ConsentFlowContractRequestForProfileValidator = ContractRequestFieldsValidator.extend({
|
|
16293
16331
|
profile: LCNProfileValidator,
|
|
16294
16332
|
status: ConsentFlowContractRequestStatusValidator,
|
|
16295
16333
|
readStatus: ConsentFlowContractRequestReadStatusValidator.optional()
|
|
@@ -16335,6 +16373,7 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
|
|
|
16335
16373
|
expiresAt: external_exports.string().optional(),
|
|
16336
16374
|
oneTime: external_exports.boolean().optional(),
|
|
16337
16375
|
terms: ConsentFlowTermsValidator,
|
|
16376
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16338
16377
|
contract: ConsentFlowContractDetailsValidator,
|
|
16339
16378
|
uri: external_exports.string(),
|
|
16340
16379
|
consenter: LCNProfileValidator,
|
|
@@ -16430,6 +16469,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
|
|
|
16430
16469
|
oneTime: external_exports.boolean().optional(),
|
|
16431
16470
|
terms: ConsentFlowTermsValidator.optional(),
|
|
16432
16471
|
guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
|
|
16472
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16433
16473
|
id: external_exports.string(),
|
|
16434
16474
|
action: ConsentFlowTransactionActionValidator,
|
|
16435
16475
|
date: external_exports.string(),
|
|
@@ -16440,6 +16480,7 @@ var HolderExportConsentRecordValidator = external_exports.object({
|
|
|
16440
16480
|
status: ConsentFlowTermsStatusValidator,
|
|
16441
16481
|
contract: ConsentFlowContractDetailsValidator,
|
|
16442
16482
|
terms: ConsentFlowTermsValidator,
|
|
16483
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16443
16484
|
transactions: ConsentFlowTransactionValidator.array()
|
|
16444
16485
|
});
|
|
16445
16486
|
var HolderExportMetadataValidator = external_exports.object({
|
|
@@ -17176,7 +17217,7 @@ var AppStoreListingSubmitterValidator = external_exports.object({
|
|
|
17176
17217
|
displayName: external_exports.string(),
|
|
17177
17218
|
email: external_exports.string().optional()
|
|
17178
17219
|
});
|
|
17179
|
-
var
|
|
17220
|
+
var AppStoreListingFieldsValidator = external_exports.object({
|
|
17180
17221
|
listing_id: external_exports.string(),
|
|
17181
17222
|
slug: external_exports.string().optional(),
|
|
17182
17223
|
display_name: external_exports.string(),
|
|
@@ -17202,15 +17243,33 @@ var AppStoreListingValidator = external_exports.object({
|
|
|
17202
17243
|
submitter: AppStoreListingSubmitterValidator.optional(),
|
|
17203
17244
|
contact_email: external_exports.string().email().optional()
|
|
17204
17245
|
});
|
|
17246
|
+
var PendingListingUpdateStatusValidator = external_exports.enum(["DRAFT", "PENDING_REVIEW"]);
|
|
17247
|
+
var PendingListingUpdateValidator = external_exports.object({
|
|
17248
|
+
status: PendingListingUpdateStatusValidator,
|
|
17249
|
+
submitted_at: external_exports.string().optional(),
|
|
17250
|
+
changes: AppStoreListingFieldsValidator.omit({
|
|
17251
|
+
listing_id: true,
|
|
17252
|
+
app_listing_status: true,
|
|
17253
|
+
promotion_level: true,
|
|
17254
|
+
submitted_at: true,
|
|
17255
|
+
submitter: true
|
|
17256
|
+
}).partial(),
|
|
17257
|
+
manifest_version: external_exports.number().int().min(1).optional()
|
|
17258
|
+
});
|
|
17259
|
+
var AppStoreListingValidator = AppStoreListingFieldsValidator.extend({
|
|
17260
|
+
pending_update: PendingListingUpdateValidator.optional()
|
|
17261
|
+
});
|
|
17205
17262
|
var AppStoreListingCreateValidator = AppStoreListingValidator.omit({
|
|
17206
17263
|
listing_id: true,
|
|
17207
17264
|
app_listing_status: true,
|
|
17208
|
-
promotion_level: true
|
|
17265
|
+
promotion_level: true,
|
|
17266
|
+
pending_update: true
|
|
17209
17267
|
});
|
|
17210
17268
|
var AppStoreListingUpdateValidator = AppStoreListingValidator.partial().omit({
|
|
17211
17269
|
listing_id: true,
|
|
17212
17270
|
app_listing_status: true,
|
|
17213
|
-
promotion_level: true
|
|
17271
|
+
promotion_level: true,
|
|
17272
|
+
pending_update: true
|
|
17214
17273
|
});
|
|
17215
17274
|
var InstalledAppValidator = AppStoreListingValidator.extend({
|
|
17216
17275
|
installed_at: external_exports.string()
|
|
@@ -17225,12 +17284,87 @@ var AppBoostValidator = external_exports.object({
|
|
|
17225
17284
|
templateAlias: external_exports.string().min(1).max(50).regex(/^[a-z0-9-]+$/),
|
|
17226
17285
|
boostUri: external_exports.string()
|
|
17227
17286
|
});
|
|
17228
|
-
var
|
|
17287
|
+
var InlineWalletCategoryValidator = external_exports.enum([
|
|
17288
|
+
"Achievement",
|
|
17289
|
+
"Skill",
|
|
17290
|
+
"ID",
|
|
17291
|
+
"Learning History",
|
|
17292
|
+
"Work History",
|
|
17293
|
+
"Social Badges",
|
|
17294
|
+
"Membership",
|
|
17295
|
+
"Accomplishment",
|
|
17296
|
+
"Experiences",
|
|
17297
|
+
"Accommodation",
|
|
17298
|
+
"Family"
|
|
17299
|
+
]);
|
|
17300
|
+
var InlineAlignmentValidator = external_exports.object({
|
|
17301
|
+
name: external_exports.string(),
|
|
17302
|
+
url: external_exports.string(),
|
|
17303
|
+
framework: external_exports.string().optional(),
|
|
17304
|
+
code: external_exports.string().optional()
|
|
17305
|
+
}).passthrough();
|
|
17306
|
+
var InlineEvidenceValidator = external_exports.object({
|
|
17307
|
+
id: external_exports.string().optional(),
|
|
17308
|
+
name: external_exports.string().optional(),
|
|
17309
|
+
narrative: external_exports.string().optional()
|
|
17310
|
+
}).passthrough();
|
|
17311
|
+
var InlineWalletSkillTagValidator = external_exports.object({
|
|
17312
|
+
frameworkId: external_exports.string(),
|
|
17313
|
+
id: external_exports.string(),
|
|
17314
|
+
proficiencyLevel: external_exports.string().optional()
|
|
17315
|
+
}).passthrough();
|
|
17316
|
+
var SimpleInlineCredentialTemplateValidator = external_exports.object({
|
|
17317
|
+
rawCredential: external_exports.undefined().optional(),
|
|
17318
|
+
name: external_exports.string(),
|
|
17319
|
+
description: external_exports.string().optional(),
|
|
17320
|
+
image: external_exports.string().optional(),
|
|
17321
|
+
issuerName: external_exports.string().optional(),
|
|
17322
|
+
achievementType: external_exports.string().optional(),
|
|
17323
|
+
category: InlineWalletCategoryValidator.optional(),
|
|
17324
|
+
criteria: external_exports.object({
|
|
17325
|
+
narrative: external_exports.string().optional(),
|
|
17326
|
+
url: external_exports.string().optional()
|
|
17327
|
+
}).passthrough().optional(),
|
|
17328
|
+
alignments: external_exports.array(InlineAlignmentValidator).optional(),
|
|
17329
|
+
tags: external_exports.array(external_exports.string()).optional(),
|
|
17330
|
+
activity: external_exports.object({
|
|
17331
|
+
startDate: external_exports.string().optional(),
|
|
17332
|
+
endDate: external_exports.string().optional()
|
|
17333
|
+
}).passthrough().optional(),
|
|
17334
|
+
credits: external_exports.object({
|
|
17335
|
+
earned: external_exports.union([external_exports.number(), external_exports.string()]).optional(),
|
|
17336
|
+
available: external_exports.union([external_exports.number(), external_exports.string()]).optional()
|
|
17337
|
+
}).passthrough().optional(),
|
|
17338
|
+
validUntil: external_exports.string().optional(),
|
|
17339
|
+
evidence: external_exports.array(InlineEvidenceValidator).optional(),
|
|
17340
|
+
walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
|
|
17341
|
+
}).passthrough();
|
|
17342
|
+
var RawInlineCredentialTemplateValidator = external_exports.object({
|
|
17343
|
+
rawCredential: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
17344
|
+
category: InlineWalletCategoryValidator.optional(),
|
|
17345
|
+
walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
|
|
17346
|
+
}).passthrough();
|
|
17347
|
+
var InlineCredentialTemplateValidator = external_exports.union([
|
|
17348
|
+
RawInlineCredentialTemplateValidator,
|
|
17349
|
+
SimpleInlineCredentialTemplateValidator
|
|
17350
|
+
]);
|
|
17351
|
+
var LegacySendCredentialEventValidator = external_exports.object({
|
|
17229
17352
|
type: external_exports.literal("send-credential"),
|
|
17230
17353
|
templateAlias: external_exports.string(),
|
|
17231
17354
|
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
17232
17355
|
preventDuplicateClaim: external_exports.boolean().optional()
|
|
17233
17356
|
});
|
|
17357
|
+
var InlineSendCredentialEventValidator = external_exports.object({
|
|
17358
|
+
type: external_exports.literal("send-credential"),
|
|
17359
|
+
alias: external_exports.string(),
|
|
17360
|
+
template: InlineCredentialTemplateValidator,
|
|
17361
|
+
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
17362
|
+
preventDuplicateClaim: external_exports.boolean().optional()
|
|
17363
|
+
});
|
|
17364
|
+
var SendCredentialEventValidator = external_exports.union([
|
|
17365
|
+
LegacySendCredentialEventValidator,
|
|
17366
|
+
InlineSendCredentialEventValidator
|
|
17367
|
+
]);
|
|
17234
17368
|
var CheckCredentialEventValidator = external_exports.object({
|
|
17235
17369
|
type: external_exports.literal("check-credential"),
|
|
17236
17370
|
templateAlias: external_exports.string().optional(),
|
|
@@ -17325,7 +17459,119 @@ var GetCountersEventValidator = external_exports.object({
|
|
|
17325
17459
|
type: external_exports.literal("get-counters"),
|
|
17326
17460
|
keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
|
|
17327
17461
|
});
|
|
17328
|
-
var
|
|
17462
|
+
var ConsentRequestWalletCategoryValidator = external_exports.enum([
|
|
17463
|
+
"Achievement",
|
|
17464
|
+
"Skill",
|
|
17465
|
+
"ID",
|
|
17466
|
+
"Learning History",
|
|
17467
|
+
"Work History",
|
|
17468
|
+
"Social Badges",
|
|
17469
|
+
"Membership",
|
|
17470
|
+
"Accomplishment",
|
|
17471
|
+
"Experiences",
|
|
17472
|
+
"Accommodation",
|
|
17473
|
+
"Family"
|
|
17474
|
+
]);
|
|
17475
|
+
var ConsentRequestPersonalFieldValidator = external_exports.enum([
|
|
17476
|
+
"name",
|
|
17477
|
+
"email",
|
|
17478
|
+
"phone",
|
|
17479
|
+
"birthDate",
|
|
17480
|
+
"country",
|
|
17481
|
+
"avatar"
|
|
17482
|
+
]);
|
|
17483
|
+
var ConsentRequestValidator = external_exports.object({
|
|
17484
|
+
read: external_exports.object({
|
|
17485
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional(),
|
|
17486
|
+
personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).optional()
|
|
17487
|
+
}).optional(),
|
|
17488
|
+
write: external_exports.object({
|
|
17489
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional()
|
|
17490
|
+
}).optional(),
|
|
17491
|
+
reason: external_exports.string().optional()
|
|
17492
|
+
});
|
|
17493
|
+
var NormalizedConsentScopesValidator = external_exports.object({
|
|
17494
|
+
read: external_exports.object({
|
|
17495
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([]),
|
|
17496
|
+
personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).default([])
|
|
17497
|
+
}),
|
|
17498
|
+
write: external_exports.object({
|
|
17499
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([])
|
|
17500
|
+
})
|
|
17501
|
+
});
|
|
17502
|
+
var CapturedTemplateRecordValidator = external_exports.object({
|
|
17503
|
+
alias: external_exports.string(),
|
|
17504
|
+
template: InlineCredentialTemplateValidator,
|
|
17505
|
+
version: external_exports.number().int().min(1),
|
|
17506
|
+
lastUsedAt: external_exports.string()
|
|
17507
|
+
}).passthrough();
|
|
17508
|
+
var CapturedConsentRecordValidator = external_exports.object({
|
|
17509
|
+
scopes: NormalizedConsentScopesValidator,
|
|
17510
|
+
reason: external_exports.string().optional(),
|
|
17511
|
+
lastUsedAt: external_exports.string()
|
|
17512
|
+
}).passthrough();
|
|
17513
|
+
var AppManifestValidator = external_exports.object({
|
|
17514
|
+
manifestVersion: external_exports.literal(1),
|
|
17515
|
+
appUrl: external_exports.string(),
|
|
17516
|
+
appKey: external_exports.string().max(200).optional(),
|
|
17517
|
+
suggestedName: external_exports.string().optional(),
|
|
17518
|
+
suggestedIconUrl: external_exports.string().optional(),
|
|
17519
|
+
permissions: external_exports.array(external_exports.string()).default([]),
|
|
17520
|
+
templates: external_exports.array(CapturedTemplateRecordValidator).default([]),
|
|
17521
|
+
consentRequests: external_exports.array(CapturedConsentRecordValidator).default([]),
|
|
17522
|
+
usedConsentContract: external_exports.boolean().optional(),
|
|
17523
|
+
featuresLaunched: external_exports.array(external_exports.string()).default([]),
|
|
17524
|
+
counterKeys: external_exports.array(external_exports.string()).default([]),
|
|
17525
|
+
usedLearnerContext: external_exports.boolean(),
|
|
17526
|
+
usedNotifications: external_exports.boolean(),
|
|
17527
|
+
firstCapturedAt: external_exports.string(),
|
|
17528
|
+
lastUpdatedAt: external_exports.string()
|
|
17529
|
+
}).passthrough();
|
|
17530
|
+
var AppManifestVersionStatusValidator = external_exports.enum(["draft", "active", "superseded"]);
|
|
17531
|
+
var AppManifestVersionValidator = external_exports.object({
|
|
17532
|
+
id: external_exports.string(),
|
|
17533
|
+
version: external_exports.number().int().min(1),
|
|
17534
|
+
manifestHash: external_exports.string(),
|
|
17535
|
+
manifest: AppManifestValidator,
|
|
17536
|
+
status: AppManifestVersionStatusValidator,
|
|
17537
|
+
createdAt: external_exports.string(),
|
|
17538
|
+
activatedAt: external_exports.string().optional()
|
|
17539
|
+
});
|
|
17540
|
+
var AppManifestStringDiffValidator = external_exports.object({
|
|
17541
|
+
added: external_exports.array(external_exports.string()),
|
|
17542
|
+
removed: external_exports.array(external_exports.string()),
|
|
17543
|
+
changed: external_exports.array(external_exports.string())
|
|
17544
|
+
});
|
|
17545
|
+
var AppManifestTemplateRefValidator = external_exports.object({
|
|
17546
|
+
alias: external_exports.string(),
|
|
17547
|
+
version: external_exports.number().int().min(1)
|
|
17548
|
+
});
|
|
17549
|
+
var AppManifestTemplateChangeValidator = external_exports.object({
|
|
17550
|
+
alias: external_exports.string(),
|
|
17551
|
+
fromVersion: external_exports.number().int().min(1),
|
|
17552
|
+
toVersion: external_exports.number().int().min(1)
|
|
17553
|
+
});
|
|
17554
|
+
var AppManifestDiffValidator = external_exports.object({
|
|
17555
|
+
permissions: AppManifestStringDiffValidator,
|
|
17556
|
+
templates: external_exports.object({
|
|
17557
|
+
added: external_exports.array(AppManifestTemplateRefValidator),
|
|
17558
|
+
removed: external_exports.array(AppManifestTemplateRefValidator),
|
|
17559
|
+
changed: external_exports.array(AppManifestTemplateChangeValidator)
|
|
17560
|
+
}),
|
|
17561
|
+
consentScopes: AppManifestStringDiffValidator,
|
|
17562
|
+
featurePaths: AppManifestStringDiffValidator,
|
|
17563
|
+
counterKeys: AppManifestStringDiffValidator,
|
|
17564
|
+
requiresReview: external_exports.boolean()
|
|
17565
|
+
});
|
|
17566
|
+
var UpsertConsentContractEventValidator = external_exports.object({
|
|
17567
|
+
type: external_exports.literal("upsert-consent-contract"),
|
|
17568
|
+
scopes: ConsentRequestValidator
|
|
17569
|
+
});
|
|
17570
|
+
var UpsertConsentContractResponseValidator = external_exports.object({
|
|
17571
|
+
contractUri: external_exports.string(),
|
|
17572
|
+
created: external_exports.boolean()
|
|
17573
|
+
});
|
|
17574
|
+
var AppEventValidator = external_exports.union([
|
|
17329
17575
|
SendCredentialEventValidator,
|
|
17330
17576
|
CheckCredentialEventValidator,
|
|
17331
17577
|
CheckIssuanceStatusEventValidator,
|
|
@@ -17335,7 +17581,8 @@ var AppEventValidator = external_exports.discriminatedUnion("type", [
|
|
|
17335
17581
|
SendNotificationEventValidator,
|
|
17336
17582
|
IncrementCounterEventValidator,
|
|
17337
17583
|
GetCounterEventValidator,
|
|
17338
|
-
GetCountersEventValidator
|
|
17584
|
+
GetCountersEventValidator,
|
|
17585
|
+
UpsertConsentContractEventValidator
|
|
17339
17586
|
]);
|
|
17340
17587
|
var AppEventInputValidator = external_exports.object({
|
|
17341
17588
|
listingId: external_exports.string(),
|
|
@@ -17409,6 +17656,21 @@ var AuthSessionError = (_a3 = class extends Error {
|
|
|
17409
17656
|
this.name = "AuthSessionError";
|
|
17410
17657
|
}
|
|
17411
17658
|
}, __name(_a3, "AuthSessionError"), __name2(_a3, "AuthSessionError"), _a3);
|
|
17659
|
+
var _a4;
|
|
17660
|
+
var UnsupportedSignInOperationError = (_a4 = class extends Error {
|
|
17661
|
+
constructor(operation, providerType) {
|
|
17662
|
+
super(`${operation} is not supported by ${providerType}`);
|
|
17663
|
+
this.operation = operation;
|
|
17664
|
+
this.providerType = providerType;
|
|
17665
|
+
this.name = "UnsupportedSignInOperationError";
|
|
17666
|
+
}
|
|
17667
|
+
}, __name(_a4, "UnsupportedSignInOperationError"), __name2(_a4, "UnsupportedSignInOperationError"), _a4);
|
|
17668
|
+
var EscrowPinStatusValidator = external_exports.object({
|
|
17669
|
+
state: external_exports.enum(["none", "enabled", "locked", "stale"]),
|
|
17670
|
+
enabled: external_exports.boolean(),
|
|
17671
|
+
attemptsRemaining: external_exports.number().int().nonnegative(),
|
|
17672
|
+
salt: external_exports.string().optional()
|
|
17673
|
+
});
|
|
17412
17674
|
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
17413
17675
|
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
17414
17676
|
var BitstringStatusListEntryValidator = external_exports.object({
|
|
@@ -17517,6 +17779,501 @@ var inAppMessagesFlagValidator = external_exports.object({
|
|
|
17517
17779
|
version: external_exports.number().default(1),
|
|
17518
17780
|
messages: external_exports.array(inAppMessageValidator).default([])
|
|
17519
17781
|
}).passthrough();
|
|
17782
|
+
var SHARE_LINK_ID_BYTES = 16;
|
|
17783
|
+
var SHARE_CONTENT_KEY_BYTES = 32;
|
|
17784
|
+
var SHARE_IV_BYTES = 12;
|
|
17785
|
+
var SHARE_TAG_BYTES = 16;
|
|
17786
|
+
var MAX_SHARE_CIPHERTEXT_BYTES = 512 * 1024;
|
|
17787
|
+
var MAX_SHARE_RECOVERY_JWE_BYTES = 64 * 1024;
|
|
17788
|
+
var MAX_SELECTED_CREDENTIALS = 50;
|
|
17789
|
+
var MAX_ENDORSEMENTS = 200;
|
|
17790
|
+
var MAX_VP_MEMBERS = MAX_SELECTED_CREDENTIALS + MAX_ENDORSEMENTS;
|
|
17791
|
+
var MAX_SHARE_SOURCE_URI_CHARS = 2048;
|
|
17792
|
+
var MAX_SHARE_LINK_REQUEST_BYTES = 1024 * 1024;
|
|
17793
|
+
var SHARE_LINK_PROTOCOL = "lc-share/v1";
|
|
17794
|
+
var SHARE_RECOVERY_PROTOCOL = "lc-share-recovery/v1";
|
|
17795
|
+
var BASE64URL_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
17796
|
+
var BASE64URL_LOOKUP = (() => {
|
|
17797
|
+
const table = new Int16Array(128).fill(-1);
|
|
17798
|
+
for (let index = 0; index < BASE64URL_ALPHABET.length; index += 1) {
|
|
17799
|
+
table[BASE64URL_ALPHABET.charCodeAt(index)] = index;
|
|
17800
|
+
}
|
|
17801
|
+
return table;
|
|
17802
|
+
})();
|
|
17803
|
+
var encodeBase64Url = /* @__PURE__ */ __name2((bytes) => {
|
|
17804
|
+
let output = "";
|
|
17805
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
17806
|
+
const first = bytes[index];
|
|
17807
|
+
const second = bytes[index + 1];
|
|
17808
|
+
const third = bytes[index + 2];
|
|
17809
|
+
output += BASE64URL_ALPHABET[first >> 2];
|
|
17810
|
+
output += BASE64URL_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
|
|
17811
|
+
if (second === void 0) break;
|
|
17812
|
+
output += BASE64URL_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
|
|
17813
|
+
if (third === void 0) break;
|
|
17814
|
+
output += BASE64URL_ALPHABET[third & 63];
|
|
17815
|
+
}
|
|
17816
|
+
return output;
|
|
17817
|
+
}, "encodeBase64Url");
|
|
17818
|
+
var decodeBase64Url = /* @__PURE__ */ __name2((value) => {
|
|
17819
|
+
if (typeof value !== "string") return null;
|
|
17820
|
+
const output = new Uint8Array(Math.floor(value.length * 6 / 8));
|
|
17821
|
+
let bits = 0;
|
|
17822
|
+
let bitCount = 0;
|
|
17823
|
+
let outputIndex = 0;
|
|
17824
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
17825
|
+
const code = value.charCodeAt(index);
|
|
17826
|
+
const digit = code < 128 ? BASE64URL_LOOKUP[code] : -1;
|
|
17827
|
+
if (digit < 0) return null;
|
|
17828
|
+
bits = bits << 6 | digit;
|
|
17829
|
+
bitCount += 6;
|
|
17830
|
+
if (bitCount >= 8) {
|
|
17831
|
+
bitCount -= 8;
|
|
17832
|
+
output[outputIndex] = bits >> bitCount & 255;
|
|
17833
|
+
outputIndex += 1;
|
|
17834
|
+
}
|
|
17835
|
+
}
|
|
17836
|
+
return output;
|
|
17837
|
+
}, "decodeBase64Url");
|
|
17838
|
+
var isCanonicalBase64Url = /* @__PURE__ */ __name2((value, expectedBytes) => {
|
|
17839
|
+
if (typeof value !== "string") return false;
|
|
17840
|
+
if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
|
|
17841
|
+
return false;
|
|
17842
|
+
const decoded = decodeBase64Url(value);
|
|
17843
|
+
if (decoded === null) return false;
|
|
17844
|
+
if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
|
|
17845
|
+
return encodeBase64Url(decoded) === value;
|
|
17846
|
+
}, "isCanonicalBase64Url");
|
|
17847
|
+
var decodedBase64UrlByteLength = /* @__PURE__ */ __name2((value) => decodeBase64Url(value)?.length ?? null, "decodedBase64UrlByteLength");
|
|
17848
|
+
var utf8ByteLength = /* @__PURE__ */ __name2((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
|
|
17849
|
+
var canonicalBase64Url = /* @__PURE__ */ __name2((bytes) => external_exports.string().refine((value) => isCanonicalBase64Url(value, bytes), {
|
|
17850
|
+
message: `must be canonical base64url for exactly ${bytes} bytes`
|
|
17851
|
+
}), "canonicalBase64Url");
|
|
17852
|
+
var ShareLinkIdValidator = canonicalBase64Url(SHARE_LINK_ID_BYTES);
|
|
17853
|
+
var ShareContentKeyValidator = canonicalBase64Url(SHARE_CONTENT_KEY_BYTES);
|
|
17854
|
+
var ShareIvValidator = canonicalBase64Url(SHARE_IV_BYTES);
|
|
17855
|
+
var ShareCiphertextValidator = external_exports.string().refine(
|
|
17856
|
+
(value) => {
|
|
17857
|
+
if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES * 4 / 3)) return false;
|
|
17858
|
+
const decoded = decodeBase64Url(value);
|
|
17859
|
+
if (decoded === null) return false;
|
|
17860
|
+
if (encodeBase64Url(decoded) !== value) return false;
|
|
17861
|
+
return decoded.length >= SHARE_TAG_BYTES && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES;
|
|
17862
|
+
},
|
|
17863
|
+
{
|
|
17864
|
+
message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES}..${MAX_SHARE_CIPHERTEXT_BYTES} bytes`
|
|
17865
|
+
}
|
|
17866
|
+
);
|
|
17867
|
+
var ShareEnvelopeValidator = external_exports.object({
|
|
17868
|
+
v: external_exports.literal(1),
|
|
17869
|
+
alg: external_exports.literal("A256GCM"),
|
|
17870
|
+
iv: ShareIvValidator,
|
|
17871
|
+
ct: ShareCiphertextValidator
|
|
17872
|
+
}).strict();
|
|
17873
|
+
var safeVersion = external_exports.number().int().min(1).max(2 ** 31 - 1);
|
|
17874
|
+
var safeCredentialIndex = external_exports.number().int().min(0).max(MAX_VP_MEMBERS - 1);
|
|
17875
|
+
var ShareSelectionEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex }).strict();
|
|
17876
|
+
var ShareEndorsementEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex, targetCredentialIndex: safeCredentialIndex }).strict();
|
|
17877
|
+
var ShareSharerValidator = external_exports.object({
|
|
17878
|
+
profileId: external_exports.string().min(1).max(128),
|
|
17879
|
+
displayName: external_exports.string().min(1).max(120),
|
|
17880
|
+
avatar: external_exports.string().max(2048).optional()
|
|
17881
|
+
}).strict();
|
|
17882
|
+
var presentationShape = VPValidator.extend({
|
|
17883
|
+
verifiableCredential: VCValidator.array().min(1).max(MAX_VP_MEMBERS)
|
|
17884
|
+
});
|
|
17885
|
+
var hasBoundedPresentation = /* @__PURE__ */ __name2((value) => {
|
|
17886
|
+
let credentialCount = 0;
|
|
17887
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
17888
|
+
const visit = /* @__PURE__ */ __name2((node, depth) => {
|
|
17889
|
+
if (node === null || typeof node !== "object") return true;
|
|
17890
|
+
if (depth > 32 || ancestors.has(node)) return false;
|
|
17891
|
+
ancestors.add(node);
|
|
17892
|
+
try {
|
|
17893
|
+
for (const [key, child] of Object.entries(node)) {
|
|
17894
|
+
if (key === "verifiableCredential") {
|
|
17895
|
+
credentialCount += Array.isArray(child) ? child.length : 1;
|
|
17896
|
+
if (credentialCount > MAX_VP_MEMBERS) return false;
|
|
17897
|
+
}
|
|
17898
|
+
if (!visit(child, depth + 1)) return false;
|
|
17899
|
+
}
|
|
17900
|
+
return true;
|
|
17901
|
+
} finally {
|
|
17902
|
+
ancestors.delete(node);
|
|
17903
|
+
}
|
|
17904
|
+
}, "visit");
|
|
17905
|
+
return visit(value, 0);
|
|
17906
|
+
}, "hasBoundedPresentation");
|
|
17907
|
+
var ShareManifestPresentationValidator = external_exports.custom(
|
|
17908
|
+
(value) => hasBoundedPresentation(value) && presentationShape.safeParse(value).success,
|
|
17909
|
+
{ message: "invalid share presentation" }
|
|
17910
|
+
);
|
|
17911
|
+
var SharePayloadValidatorShape = external_exports.object({
|
|
17912
|
+
protocol: external_exports.literal(SHARE_LINK_PROTOCOL),
|
|
17913
|
+
shareId: ShareLinkIdValidator,
|
|
17914
|
+
contentVersion: safeVersion,
|
|
17915
|
+
createdAt: external_exports.iso.datetime(),
|
|
17916
|
+
sharer: ShareSharerValidator,
|
|
17917
|
+
presentation: ShareManifestPresentationValidator,
|
|
17918
|
+
selection: ShareSelectionEntryValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
17919
|
+
endorsements: ShareEndorsementEntryValidator.array().max(MAX_ENDORSEMENTS).default([])
|
|
17920
|
+
}).strict();
|
|
17921
|
+
var classificationFailure = /* @__PURE__ */ __name2((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
|
|
17922
|
+
var readSignedClaimId = /* @__PURE__ */ __name2((member) => {
|
|
17923
|
+
if (member === null || typeof member !== "object") return void 0;
|
|
17924
|
+
const record2 = member;
|
|
17925
|
+
const claim = record2.credentialSubject ?? record2.endorsement;
|
|
17926
|
+
if (claim === null || typeof claim !== "object") return void 0;
|
|
17927
|
+
const claimRecord = claim;
|
|
17928
|
+
const nested = claimRecord.endorsement;
|
|
17929
|
+
const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
|
|
17930
|
+
return claimRecord.id ?? nestedId;
|
|
17931
|
+
}, "readSignedClaimId");
|
|
17932
|
+
var classifyShareManifest = /* @__PURE__ */ __name2((payload) => {
|
|
17933
|
+
const members = payload.presentation?.verifiableCredential;
|
|
17934
|
+
if (!Array.isArray(members) || members.length === 0) {
|
|
17935
|
+
return classificationFailure("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
|
|
17936
|
+
}
|
|
17937
|
+
if (members.length > MAX_VP_MEMBERS) {
|
|
17938
|
+
return classificationFailure(
|
|
17939
|
+
"TOO_MANY_VP_MEMBERS",
|
|
17940
|
+
`presentation has ${members.length} members, over the ${MAX_VP_MEMBERS} bound`
|
|
17941
|
+
);
|
|
17942
|
+
}
|
|
17943
|
+
const selection = payload.selection;
|
|
17944
|
+
const endorsements = payload.endorsements ?? [];
|
|
17945
|
+
if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS) {
|
|
17946
|
+
return classificationFailure("BAD_SELECTION", "selection must contain 1..50 entries");
|
|
17947
|
+
}
|
|
17948
|
+
if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS) {
|
|
17949
|
+
return classificationFailure(
|
|
17950
|
+
"BAD_ENDORSEMENTS",
|
|
17951
|
+
"endorsements must contain at most 200 entries"
|
|
17952
|
+
);
|
|
17953
|
+
}
|
|
17954
|
+
const selectedIndices = [];
|
|
17955
|
+
const selected = /* @__PURE__ */ new Set();
|
|
17956
|
+
for (let index = 0; index < selection.length; index += 1) {
|
|
17957
|
+
const entry = selection[index];
|
|
17958
|
+
const credentialIndex = entry?.credentialIndex;
|
|
17959
|
+
if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
|
|
17960
|
+
return classificationFailure(
|
|
17961
|
+
"SELECTION_INDEX_OUT_OF_BOUNDS",
|
|
17962
|
+
`selection[${index}].credentialIndex is out of bounds`,
|
|
17963
|
+
["selection", index, "credentialIndex"]
|
|
17964
|
+
);
|
|
17965
|
+
}
|
|
17966
|
+
if (selected.has(credentialIndex)) {
|
|
17967
|
+
return classificationFailure(
|
|
17968
|
+
"SELECTION_INDEX_DUPLICATE",
|
|
17969
|
+
`selection[${index}].credentialIndex is duplicated`,
|
|
17970
|
+
["selection", index, "credentialIndex"]
|
|
17971
|
+
);
|
|
17972
|
+
}
|
|
17973
|
+
selected.add(credentialIndex);
|
|
17974
|
+
selectedIndices.push(credentialIndex);
|
|
17975
|
+
}
|
|
17976
|
+
const classified = new Set(selected);
|
|
17977
|
+
const endorsementIndices = [];
|
|
17978
|
+
for (let index = 0; index < endorsements.length; index += 1) {
|
|
17979
|
+
const entry = endorsements[index];
|
|
17980
|
+
const credentialIndex = entry?.credentialIndex;
|
|
17981
|
+
const targetIndex = entry?.targetCredentialIndex;
|
|
17982
|
+
if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
|
|
17983
|
+
return classificationFailure(
|
|
17984
|
+
"ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
|
|
17985
|
+
`endorsements[${index}].credentialIndex is out of bounds`,
|
|
17986
|
+
["endorsements", index, "credentialIndex"]
|
|
17987
|
+
);
|
|
17988
|
+
}
|
|
17989
|
+
if (classified.has(credentialIndex)) {
|
|
17990
|
+
return classificationFailure(
|
|
17991
|
+
"VP_MEMBER_CLASSIFIED_TWICE",
|
|
17992
|
+
`endorsements[${index}].credentialIndex was already classified`,
|
|
17993
|
+
["endorsements", index, "credentialIndex"]
|
|
17994
|
+
);
|
|
17995
|
+
}
|
|
17996
|
+
if (!selected.has(targetIndex)) {
|
|
17997
|
+
return classificationFailure(
|
|
17998
|
+
"ENDORSEMENT_TARGET_NOT_SELECTED",
|
|
17999
|
+
`endorsements[${index}].targetCredentialIndex must reference a selected credential`,
|
|
18000
|
+
["endorsements", index, "targetCredentialIndex"]
|
|
18001
|
+
);
|
|
18002
|
+
}
|
|
18003
|
+
const referenced = readSignedClaimId(members[credentialIndex]);
|
|
18004
|
+
const target = members[targetIndex];
|
|
18005
|
+
const targetId = target !== null && typeof target === "object" ? target.id : void 0;
|
|
18006
|
+
if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
|
|
18007
|
+
return classificationFailure(
|
|
18008
|
+
"ENDORSEMENT_TARGET_UNBOUND",
|
|
18009
|
+
`endorsements[${index}] claim does not reference the target credential id`,
|
|
18010
|
+
["endorsements", index]
|
|
18011
|
+
);
|
|
18012
|
+
}
|
|
18013
|
+
classified.add(credentialIndex);
|
|
18014
|
+
endorsementIndices.push(credentialIndex);
|
|
18015
|
+
}
|
|
18016
|
+
if (classified.size !== members.length) {
|
|
18017
|
+
return classificationFailure(
|
|
18018
|
+
"UNCLASSIFIED_VP_MEMBER",
|
|
18019
|
+
"every presentation member must be classified exactly once",
|
|
18020
|
+
["presentation", "verifiableCredential"]
|
|
18021
|
+
);
|
|
18022
|
+
}
|
|
18023
|
+
return {
|
|
18024
|
+
ok: true,
|
|
18025
|
+
classification: { selectedIndices, endorsementIndices, memberCount: members.length }
|
|
18026
|
+
};
|
|
18027
|
+
}, "classifyShareManifest");
|
|
18028
|
+
var SharePayloadValidator = SharePayloadValidatorShape.superRefine((payload, ctx) => {
|
|
18029
|
+
const result = classifyShareManifest(payload);
|
|
18030
|
+
if (!result.ok) {
|
|
18031
|
+
ctx.addIssue({
|
|
18032
|
+
code: "custom",
|
|
18033
|
+
message: result.message,
|
|
18034
|
+
path: result.path,
|
|
18035
|
+
params: { shareLinkCode: result.code }
|
|
18036
|
+
});
|
|
18037
|
+
}
|
|
18038
|
+
});
|
|
18039
|
+
var ShareRecoverySelectionValidator = external_exports.object({
|
|
18040
|
+
ref: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS),
|
|
18041
|
+
order: external_exports.number().int().min(0).max(MAX_SELECTED_CREDENTIALS - 1)
|
|
18042
|
+
}).strict();
|
|
18043
|
+
var ShareRecoveryEndorsementValidator = external_exports.object({ targetRef: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS) }).strict();
|
|
18044
|
+
var ShareRecoveryPlaintextValidator = external_exports.object({
|
|
18045
|
+
protocol: external_exports.literal(SHARE_RECOVERY_PROTOCOL),
|
|
18046
|
+
shareId: ShareLinkIdValidator,
|
|
18047
|
+
ownerProfileId: external_exports.string().min(1).max(128),
|
|
18048
|
+
createdAt: external_exports.iso.datetime(),
|
|
18049
|
+
latest: external_exports.object({ contentVersion: safeVersion, key: ShareContentKeyValidator }).strict(),
|
|
18050
|
+
selection: ShareRecoverySelectionValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18051
|
+
endorsements: ShareRecoveryEndorsementValidator.array().max(MAX_ENDORSEMENTS).default([])
|
|
18052
|
+
}).strict().superRefine((recovery, ctx) => {
|
|
18053
|
+
const orders = /* @__PURE__ */ new Set();
|
|
18054
|
+
recovery.selection.forEach((entry, index) => {
|
|
18055
|
+
if (entry.order >= recovery.selection.length) {
|
|
18056
|
+
ctx.addIssue({
|
|
18057
|
+
code: "custom",
|
|
18058
|
+
message: "order must be within the selection bounds",
|
|
18059
|
+
path: ["selection", index, "order"]
|
|
18060
|
+
});
|
|
18061
|
+
}
|
|
18062
|
+
if (orders.has(entry.order)) {
|
|
18063
|
+
ctx.addIssue({
|
|
18064
|
+
code: "custom",
|
|
18065
|
+
message: "order must be unique within the selection",
|
|
18066
|
+
path: ["selection", index, "order"]
|
|
18067
|
+
});
|
|
18068
|
+
}
|
|
18069
|
+
orders.add(entry.order);
|
|
18070
|
+
});
|
|
18071
|
+
});
|
|
18072
|
+
var ShareOwnerRecoveryValidator = JWEValidator.refine(
|
|
18073
|
+
(value) => utf8ByteLength(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES,
|
|
18074
|
+
{ message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES} bytes` }
|
|
18075
|
+
);
|
|
18076
|
+
var ShareLinkStatusValidator = external_exports.enum(["pending", "active", "stopped"]);
|
|
18077
|
+
var ShareContentStateValidator = external_exports.enum(["staging", "finalized", "content_missing"]);
|
|
18078
|
+
var ShareLinkValidator = external_exports.object({
|
|
18079
|
+
id: ShareLinkIdValidator,
|
|
18080
|
+
title: external_exports.string().min(1).max(120),
|
|
18081
|
+
note: external_exports.string().max(500).optional(),
|
|
18082
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18083
|
+
version: safeVersion,
|
|
18084
|
+
contentVersion: safeVersion,
|
|
18085
|
+
status: ShareLinkStatusValidator,
|
|
18086
|
+
attachmentId: external_exports.string().uuid().nullable().optional(),
|
|
18087
|
+
attachmentChunkCount: external_exports.number().int().min(1).max(16).nullable().optional(),
|
|
18088
|
+
contentState: ShareContentStateValidator,
|
|
18089
|
+
createdAt: external_exports.iso.datetime(),
|
|
18090
|
+
updatedAt: external_exports.iso.datetime(),
|
|
18091
|
+
expiresAt: external_exports.iso.datetime().nullable(),
|
|
18092
|
+
stoppedAt: external_exports.iso.datetime().nullable(),
|
|
18093
|
+
lastViewedAt: external_exports.iso.datetime().nullable(),
|
|
18094
|
+
viewCount: external_exports.number().int().min(0).optional(),
|
|
18095
|
+
passcodeProtected: external_exports.boolean(),
|
|
18096
|
+
notifyOnView: external_exports.boolean(),
|
|
18097
|
+
minorPolicy: external_exports.object({
|
|
18098
|
+
isMinor: external_exports.boolean().nullable(),
|
|
18099
|
+
policyResolved: external_exports.boolean(),
|
|
18100
|
+
defaultExpiryDays: external_exports.union([external_exports.literal(30), external_exports.literal(365)]),
|
|
18101
|
+
viewCountingEnabled: external_exports.boolean()
|
|
18102
|
+
}),
|
|
18103
|
+
/**
|
|
18104
|
+
* Guarded application/API URL for the content. Optional because owner APIs in
|
|
18105
|
+
* D1 have no public resolve/content endpoint yet; it must never be a
|
|
18106
|
+
* LearnCloud object URL or carry a fabricated decryption key.
|
|
18107
|
+
*/
|
|
18108
|
+
contentUrl: external_exports.string().optional()
|
|
18109
|
+
});
|
|
18110
|
+
var clientRequestId = external_exports.string().uuid();
|
|
18111
|
+
var ShareLinkAttachmentValidator = external_exports.object({
|
|
18112
|
+
id: external_exports.string().uuid(),
|
|
18113
|
+
chunkCount: external_exports.number().int().min(1).max(16)
|
|
18114
|
+
}).strict();
|
|
18115
|
+
var attachmentChunkKey = {
|
|
18116
|
+
id: ShareLinkIdValidator,
|
|
18117
|
+
contentVersion: safeVersion,
|
|
18118
|
+
attachmentId: external_exports.string().uuid(),
|
|
18119
|
+
chunkIndex: external_exports.number().int().min(0).max(15)
|
|
18120
|
+
};
|
|
18121
|
+
var ShareLinkAttachmentChunkEnvelopeValidator = ShareEnvelopeValidator.refine(
|
|
18122
|
+
(value) => (decodedBase64UrlByteLength(value.ct) ?? Infinity) <= 256 * 1024 + SHARE_TAG_BYTES
|
|
18123
|
+
);
|
|
18124
|
+
var PutShareLinkAttachmentChunkInputValidator = external_exports.object({
|
|
18125
|
+
...attachmentChunkKey,
|
|
18126
|
+
chunkCount: external_exports.number().int().min(1).max(16),
|
|
18127
|
+
envelope: ShareLinkAttachmentChunkEnvelopeValidator,
|
|
18128
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator
|
|
18129
|
+
}).strict().refine((value) => value.chunkIndex < value.chunkCount);
|
|
18130
|
+
var GetShareLinkAttachmentChunkInputValidator = external_exports.object({
|
|
18131
|
+
...attachmentChunkKey,
|
|
18132
|
+
passcode: external_exports.string().min(4).max(64).optional(),
|
|
18133
|
+
accessToken: external_exports.string().min(1).max(2048).optional()
|
|
18134
|
+
}).strict();
|
|
18135
|
+
var ShareLinkAttachmentChunkOutputValidator = external_exports.object({
|
|
18136
|
+
...attachmentChunkKey,
|
|
18137
|
+
envelope: ShareLinkAttachmentChunkEnvelopeValidator,
|
|
18138
|
+
accessToken: external_exports.string().min(1).max(2048).optional()
|
|
18139
|
+
}).strict();
|
|
18140
|
+
var DeleteShareLinkAttachmentChunksInputValidator = external_exports.object({
|
|
18141
|
+
id: ShareLinkIdValidator,
|
|
18142
|
+
contentVersion: safeVersion,
|
|
18143
|
+
attachmentId: external_exports.string().uuid(),
|
|
18144
|
+
chunkCount: external_exports.number().int().min(1).max(16)
|
|
18145
|
+
}).strict();
|
|
18146
|
+
var PutShareLinkAttachmentChunkOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
|
|
18147
|
+
var DeleteShareLinkAttachmentChunksOutputValidator = external_exports.object({ ok: external_exports.boolean() }).strict();
|
|
18148
|
+
var CreateShareLinkInputValidator = external_exports.object({
|
|
18149
|
+
id: ShareLinkIdValidator,
|
|
18150
|
+
clientRequestId,
|
|
18151
|
+
title: external_exports.string().min(1).max(120),
|
|
18152
|
+
note: external_exports.string().max(500).optional(),
|
|
18153
|
+
expiresAt: external_exports.iso.datetime().nullable().optional(),
|
|
18154
|
+
passcode: external_exports.string().min(8).max(64).optional(),
|
|
18155
|
+
notifyOnView: external_exports.boolean().default(false),
|
|
18156
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18157
|
+
contentVersion: external_exports.literal(1),
|
|
18158
|
+
envelope: ShareEnvelopeValidator,
|
|
18159
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator,
|
|
18160
|
+
attachment: ShareLinkAttachmentValidator.optional()
|
|
18161
|
+
}).strict();
|
|
18162
|
+
var UpdateShareLinkInputValidator = external_exports.object({
|
|
18163
|
+
id: ShareLinkIdValidator,
|
|
18164
|
+
expectedVersion: safeVersion,
|
|
18165
|
+
clientRequestId,
|
|
18166
|
+
title: external_exports.string().min(1).max(120).optional(),
|
|
18167
|
+
note: external_exports.string().max(500).nullable().optional(),
|
|
18168
|
+
expiresAt: external_exports.iso.datetime().nullable().optional(),
|
|
18169
|
+
/** Omitted preserves the current passcode, null removes it, and a string replaces it. */
|
|
18170
|
+
passcode: external_exports.string().min(8).max(64).nullable().optional(),
|
|
18171
|
+
notifyOnView: external_exports.boolean().optional(),
|
|
18172
|
+
contentVersion: safeVersion.optional(),
|
|
18173
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS).optional(),
|
|
18174
|
+
envelope: ShareEnvelopeValidator.optional(),
|
|
18175
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator.optional(),
|
|
18176
|
+
attachment: ShareLinkAttachmentValidator.optional()
|
|
18177
|
+
}).strict().superRefine((value, ctx) => {
|
|
18178
|
+
const provided = [
|
|
18179
|
+
value.contentVersion,
|
|
18180
|
+
value.selectedCount,
|
|
18181
|
+
value.envelope,
|
|
18182
|
+
value.ownerEncryptedRecovery
|
|
18183
|
+
].filter((field) => field !== void 0).length;
|
|
18184
|
+
if (provided !== 0 && provided !== 4) {
|
|
18185
|
+
ctx.addIssue({
|
|
18186
|
+
code: "custom",
|
|
18187
|
+
message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
|
|
18188
|
+
});
|
|
18189
|
+
}
|
|
18190
|
+
if (value.attachment !== void 0 && provided !== 4) {
|
|
18191
|
+
ctx.addIssue({ code: "custom", message: "attachment requires a content replacement" });
|
|
18192
|
+
}
|
|
18193
|
+
});
|
|
18194
|
+
var ShareLinkIdInputValidator = external_exports.object({ id: ShareLinkIdValidator }).strict();
|
|
18195
|
+
var ShareLinkOperationKeyInputValidator = external_exports.object({ id: ShareLinkIdValidator, operationId: external_exports.string().uuid() }).strict();
|
|
18196
|
+
var ShareLinkOwnerCommitOutputValidator = external_exports.discriminatedUnion("status", [
|
|
18197
|
+
external_exports.object({ status: external_exports.literal("completed"), share: ShareLinkValidator }).strict(),
|
|
18198
|
+
external_exports.object({
|
|
18199
|
+
status: external_exports.literal("pending"),
|
|
18200
|
+
id: ShareLinkIdValidator,
|
|
18201
|
+
operationId: external_exports.string().uuid()
|
|
18202
|
+
}).strict()
|
|
18203
|
+
]);
|
|
18204
|
+
var ShareLinkOwnerStatusOutputValidator = external_exports.discriminatedUnion("status", [
|
|
18205
|
+
external_exports.object({ status: external_exports.literal("found"), share: ShareLinkValidator }).strict(),
|
|
18206
|
+
external_exports.object({
|
|
18207
|
+
status: external_exports.literal("pending"),
|
|
18208
|
+
id: ShareLinkIdValidator,
|
|
18209
|
+
operationId: external_exports.string().uuid()
|
|
18210
|
+
}).strict(),
|
|
18211
|
+
external_exports.object({ status: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
|
|
18212
|
+
]);
|
|
18213
|
+
var ShareLinkOwnerRecoveryOutputValidator = external_exports.object({ recovery: ShareOwnerRecoveryValidator }).strict();
|
|
18214
|
+
var ShareLinkOwnerContentOutputValidator = external_exports.object({
|
|
18215
|
+
id: ShareLinkIdValidator,
|
|
18216
|
+
contentVersion: safeVersion,
|
|
18217
|
+
envelope: ShareEnvelopeValidator
|
|
18218
|
+
}).strict();
|
|
18219
|
+
var ResolveShareLinkInputValidator = external_exports.object({
|
|
18220
|
+
id: ShareLinkIdValidator,
|
|
18221
|
+
/** Sent only in a POST body; it must never be placed in a share URL. */
|
|
18222
|
+
passcode: external_exports.string().min(4).max(64).optional()
|
|
18223
|
+
}).strict();
|
|
18224
|
+
var ShareLinkPublicStateValidator = external_exports.discriminatedUnion("state", [
|
|
18225
|
+
external_exports.object({
|
|
18226
|
+
state: external_exports.literal("passcode_required"),
|
|
18227
|
+
id: ShareLinkIdValidator
|
|
18228
|
+
}).strict(),
|
|
18229
|
+
external_exports.object({ state: external_exports.literal("try_later"), id: ShareLinkIdValidator }).strict(),
|
|
18230
|
+
external_exports.object({
|
|
18231
|
+
state: external_exports.literal("active"),
|
|
18232
|
+
id: ShareLinkIdValidator,
|
|
18233
|
+
title: external_exports.string().max(120),
|
|
18234
|
+
note: external_exports.string().max(500).optional(),
|
|
18235
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18236
|
+
contentVersion: safeVersion,
|
|
18237
|
+
contentUrl: external_exports.string(),
|
|
18238
|
+
sharer: external_exports.object({
|
|
18239
|
+
displayName: external_exports.string().max(120),
|
|
18240
|
+
avatar: external_exports.string().max(2048).optional()
|
|
18241
|
+
}),
|
|
18242
|
+
createdAt: external_exports.iso.datetime(),
|
|
18243
|
+
updatedAt: external_exports.iso.datetime(),
|
|
18244
|
+
expiresAt: external_exports.iso.datetime().nullable()
|
|
18245
|
+
}).strict(),
|
|
18246
|
+
external_exports.object({
|
|
18247
|
+
state: external_exports.literal("expired"),
|
|
18248
|
+
id: ShareLinkIdValidator,
|
|
18249
|
+
expiresAt: external_exports.iso.datetime()
|
|
18250
|
+
}).strict(),
|
|
18251
|
+
external_exports.object({
|
|
18252
|
+
state: external_exports.literal("stopped"),
|
|
18253
|
+
id: ShareLinkIdValidator,
|
|
18254
|
+
stoppedAt: external_exports.iso.datetime()
|
|
18255
|
+
}).strict(),
|
|
18256
|
+
external_exports.object({ state: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
|
|
18257
|
+
]);
|
|
18258
|
+
var ListShareLinksInputValidator = external_exports.object({
|
|
18259
|
+
limit: external_exports.number().int().min(1).max(50).default(25),
|
|
18260
|
+
cursor: external_exports.string().max(512).optional()
|
|
18261
|
+
}).strict();
|
|
18262
|
+
var PaginatedShareLinksValidator = PaginationResponseValidator.extend({
|
|
18263
|
+
records: ShareLinkValidator.array()
|
|
18264
|
+
});
|
|
18265
|
+
var AcknowledgeViewInputValidator = external_exports.object({
|
|
18266
|
+
receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
|
|
18267
|
+
}).strict();
|
|
18268
|
+
var AcknowledgeViewOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
|
|
18269
|
+
var SHARE_VIEW_RECEIPT_TTL_SECONDS = 10 * 60;
|
|
18270
|
+
var ShareLinkPublicContentViewValidator = external_exports.object({
|
|
18271
|
+
id: ShareLinkIdValidator,
|
|
18272
|
+
contentVersion: safeVersion,
|
|
18273
|
+
envelope: ShareEnvelopeValidator,
|
|
18274
|
+
contentUrl: external_exports.string(),
|
|
18275
|
+
receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
|
|
18276
|
+
}).strict();
|
|
17520
18277
|
|
|
17521
18278
|
// src/plugin.ts
|
|
17522
18279
|
var import_helpers = require("@learncard/helpers");
|
|
@@ -18168,6 +18925,7 @@ var isActAsDenial = /* @__PURE__ */ __name((error51) => {
|
|
|
18168
18925
|
}
|
|
18169
18926
|
return false;
|
|
18170
18927
|
}, "isActAsDenial");
|
|
18928
|
+
var getInboxFailureReason = /* @__PURE__ */ __name((reason) => reason instanceof Error ? `${reason.name}: ${reason.message}` : String(reason), "getInboxFailureReason");
|
|
18171
18929
|
async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, options) {
|
|
18172
18930
|
const apiToken = typeof apiTokenOrOptions === "string" ? apiTokenOrOptions : void 0;
|
|
18173
18931
|
const resolvedOptions = (typeof apiTokenOrOptions === "object" ? apiTokenOrOptions : options) ?? {};
|
|
@@ -18580,6 +19338,58 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18580
19338
|
await ensureUser();
|
|
18581
19339
|
return client.profile.invalidateInvite.mutate({ challenge });
|
|
18582
19340
|
}, "invalidateInvite"),
|
|
19341
|
+
createShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19342
|
+
await ensureUser();
|
|
19343
|
+
return client.shareLinks.create.mutate(input);
|
|
19344
|
+
}, "createShareLink"),
|
|
19345
|
+
putShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19346
|
+
await ensureUser();
|
|
19347
|
+
return client.shareLinks.putAttachmentChunk.mutate(input);
|
|
19348
|
+
}, "putShareLinkAttachmentChunk"),
|
|
19349
|
+
deleteShareLinkAttachmentChunks: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19350
|
+
await ensureUser();
|
|
19351
|
+
return client.shareLinks.deleteAttachmentChunks.mutate(input);
|
|
19352
|
+
}, "deleteShareLinkAttachmentChunks"),
|
|
19353
|
+
getShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => client.publicShareLinks.attachmentChunk.mutate(input), "getShareLinkAttachmentChunk"),
|
|
19354
|
+
updateShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19355
|
+
await ensureUser();
|
|
19356
|
+
return client.shareLinks.update.mutate(input);
|
|
19357
|
+
}, "updateShareLink"),
|
|
19358
|
+
revokeShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19359
|
+
await ensureUser();
|
|
19360
|
+
return client.shareLinks.revoke.mutate(input);
|
|
19361
|
+
}, "revokeShareLink"),
|
|
19362
|
+
getShareLink: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19363
|
+
await ensureUser();
|
|
19364
|
+
return client.shareLinks.get.query({ id });
|
|
19365
|
+
}, "getShareLink"),
|
|
19366
|
+
getShareLinkOperationStatus: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19367
|
+
await ensureUser();
|
|
19368
|
+
return client.shareLinks.getOperationStatus.query(input);
|
|
19369
|
+
}, "getShareLinkOperationStatus"),
|
|
19370
|
+
retryShareLinkOperation: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19371
|
+
await ensureUser();
|
|
19372
|
+
return client.shareLinks.retry.mutate(input);
|
|
19373
|
+
}, "retryShareLinkOperation"),
|
|
19374
|
+
getShareLinkRecovery: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19375
|
+
await ensureUser();
|
|
19376
|
+
return client.shareLinks.getRecovery.query({ id });
|
|
19377
|
+
}, "getShareLinkRecovery"),
|
|
19378
|
+
getShareLinkOwnerContent: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19379
|
+
await ensureUser();
|
|
19380
|
+
return client.shareLinks.getContent.query({ id });
|
|
19381
|
+
}, "getShareLinkOwnerContent"),
|
|
19382
|
+
listShareLinks: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19383
|
+
await ensureUser();
|
|
19384
|
+
return client.shareLinks.list.query(input);
|
|
19385
|
+
}, "listShareLinks"),
|
|
19386
|
+
// Anonymous public methods: deliberately NO `ensureUser()`. A viewer
|
|
19387
|
+
// has no account and must not need one.
|
|
19388
|
+
// POST keeps an optional passcode in the request body and out of URLs,
|
|
19389
|
+
// access logs, browser history and referrers.
|
|
19390
|
+
resolveShareLink: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.resolve.mutate({ id, passcode }), "resolveShareLink"),
|
|
19391
|
+
getShareLinkContent: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.content.mutate({ id, passcode }), "getShareLinkContent"),
|
|
19392
|
+
acknowledgeShareLinkView: /* @__PURE__ */ __name(async (_learnCard, receipt) => client.publicShareLinks.acknowledgeView.mutate({ receipt }), "acknowledgeShareLinkView"),
|
|
18583
19393
|
blockProfile: /* @__PURE__ */ __name(async (_learnCard, profileId) => {
|
|
18584
19394
|
await ensureUser();
|
|
18585
19395
|
return client.profile.blockProfile.mutate({ profileId });
|
|
@@ -18694,12 +19504,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18694
19504
|
await ensureUser();
|
|
18695
19505
|
return client.credential.deleteCredential.mutate({ uri });
|
|
18696
19506
|
}, "deleteCredential"),
|
|
18697
|
-
sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, encrypt
|
|
19507
|
+
sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, metadataOrEncrypt, encrypt) => {
|
|
18698
19508
|
await ensureUser();
|
|
18699
|
-
|
|
19509
|
+
const metadata = typeof metadataOrEncrypt === "object" ? metadataOrEncrypt : void 0;
|
|
19510
|
+
const shouldEncrypt = typeof metadataOrEncrypt === "boolean" ? metadataOrEncrypt : encrypt ?? true;
|
|
19511
|
+
if (!shouldEncrypt) {
|
|
18700
19512
|
return client.presentation.sendPresentation.mutate({
|
|
18701
19513
|
profileId,
|
|
18702
|
-
presentation: vp
|
|
19514
|
+
presentation: vp,
|
|
19515
|
+
metadata
|
|
18703
19516
|
});
|
|
18704
19517
|
}
|
|
18705
19518
|
const target = await _learnCard.invoke.getProfile(profileId);
|
|
@@ -18709,7 +19522,11 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18709
19522
|
_learnCard.id.did(),
|
|
18710
19523
|
target.did
|
|
18711
19524
|
]);
|
|
18712
|
-
return client.presentation.sendPresentation.mutate({
|
|
19525
|
+
return client.presentation.sendPresentation.mutate({
|
|
19526
|
+
profileId,
|
|
19527
|
+
presentation,
|
|
19528
|
+
metadata
|
|
19529
|
+
});
|
|
18713
19530
|
}, "sendPresentation"),
|
|
18714
19531
|
acceptPresentation: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
18715
19532
|
await ensureUser();
|
|
@@ -19389,6 +20206,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19389
20206
|
boostUris
|
|
19390
20207
|
});
|
|
19391
20208
|
}, "removeAutoBoostsFromContract"),
|
|
20209
|
+
addContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
|
|
20210
|
+
await ensureUser();
|
|
20211
|
+
return client.contracts.addContractRecipient.mutate({ contractUri, recipient });
|
|
20212
|
+
}, "addContractRecipient"),
|
|
20213
|
+
removeContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
|
|
20214
|
+
await ensureUser();
|
|
20215
|
+
return client.contracts.removeContractRecipient.mutate({ contractUri, recipient });
|
|
20216
|
+
}, "removeContractRecipient"),
|
|
19392
20217
|
getContract: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
19393
20218
|
return client.contracts.getConsentFlowContract.query({ uri });
|
|
19394
20219
|
}, "getContract"),
|
|
@@ -19421,13 +20246,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19421
20246
|
boostUri
|
|
19422
20247
|
});
|
|
19423
20248
|
}, "writeCredentialToContract"),
|
|
19424
|
-
consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime }, recipientToken) => {
|
|
20249
|
+
consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime, audienceVersion, expectedRequestId }, recipientToken) => {
|
|
19425
20250
|
await ensureUser();
|
|
19426
20251
|
return client.contracts.consentToContract.mutate({
|
|
19427
20252
|
contractUri,
|
|
19428
20253
|
terms,
|
|
19429
20254
|
expiresAt,
|
|
19430
20255
|
oneTime,
|
|
20256
|
+
audienceVersion,
|
|
20257
|
+
expectedRequestId,
|
|
19431
20258
|
recipientToken
|
|
19432
20259
|
// for SmartResume
|
|
19433
20260
|
});
|
|
@@ -19436,13 +20263,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19436
20263
|
await ensureUser();
|
|
19437
20264
|
return client.contracts.getConsentedContracts.query(options2);
|
|
19438
20265
|
}, "getConsentedContracts"),
|
|
19439
|
-
updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime }) => {
|
|
20266
|
+
updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime, audienceVersion }) => {
|
|
19440
20267
|
await ensureUser();
|
|
19441
20268
|
return client.contracts.updateConsentedContractTerms.mutate({
|
|
19442
20269
|
uri,
|
|
19443
20270
|
terms,
|
|
19444
20271
|
expiresAt,
|
|
19445
|
-
oneTime
|
|
20272
|
+
oneTime,
|
|
20273
|
+
audienceVersion
|
|
19446
20274
|
});
|
|
19447
20275
|
}, "updateContractTerms"),
|
|
19448
20276
|
withdrawConsent: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
@@ -19469,11 +20297,12 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19469
20297
|
await ensureUser();
|
|
19470
20298
|
return client.contracts.verifyConsent.query({ uri, profileId });
|
|
19471
20299
|
}, "verifyConsent"),
|
|
19472
|
-
syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories) => {
|
|
20300
|
+
syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories, audienceVersion) => {
|
|
19473
20301
|
await ensureUser();
|
|
19474
20302
|
return client.contracts.syncCredentialsToContract.mutate({
|
|
19475
20303
|
termsUri,
|
|
19476
|
-
categories
|
|
20304
|
+
categories,
|
|
20305
|
+
audienceVersion
|
|
19477
20306
|
});
|
|
19478
20307
|
}, "syncCredentialsToContract"),
|
|
19479
20308
|
deleteCredentialFromAllContracts: /* @__PURE__ */ __name(async (_learnCard, deletedUris) => {
|
|
@@ -19482,6 +20311,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19482
20311
|
deletedUris
|
|
19483
20312
|
});
|
|
19484
20313
|
}, "deleteCredentialFromAllContracts"),
|
|
20314
|
+
sendContractRequest: /* @__PURE__ */ __name(async (_learnCard, request) => {
|
|
20315
|
+
await ensureUser();
|
|
20316
|
+
return client.contracts.sendContractRequest.mutate(request);
|
|
20317
|
+
}, "sendContractRequest"),
|
|
20318
|
+
denyContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri) => {
|
|
20319
|
+
await ensureUser();
|
|
20320
|
+
return client.contracts.denyContractRequest.mutate({ contractUri });
|
|
20321
|
+
}, "denyContractRequest"),
|
|
19485
20322
|
sendAiInsightsContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri, targetProfileId, shareLink) => {
|
|
19486
20323
|
await ensureUser();
|
|
19487
20324
|
return client.contracts.sendAiInsightsContractRequest.mutate({
|
|
@@ -19667,9 +20504,32 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19667
20504
|
await ensureUser();
|
|
19668
20505
|
return client.inbox.getInboxCredential.query({ credentialId: id });
|
|
19669
20506
|
}, "getInboxCredential"),
|
|
19670
|
-
finalizeInboxCredentials: /* @__PURE__ */ __name(async (
|
|
20507
|
+
finalizeInboxCredentials: /* @__PURE__ */ __name(async (learnCard2) => {
|
|
19671
20508
|
await ensureUser();
|
|
19672
|
-
|
|
20509
|
+
const result = await client.inbox.finalize.mutate();
|
|
20510
|
+
const results = await Promise.allSettled(
|
|
20511
|
+
result.deliveries.map(async (delivery) => ({
|
|
20512
|
+
...delivery,
|
|
20513
|
+
credential: VCValidator.parse(
|
|
20514
|
+
(0, import_helpers.isEncrypted)(delivery.credential) ? await learnCard2.invoke.decryptDagJwe(delivery.credential, [
|
|
20515
|
+
learnCard2.id.keypair()
|
|
20516
|
+
]) : delivery.credential
|
|
20517
|
+
)
|
|
20518
|
+
}))
|
|
20519
|
+
);
|
|
20520
|
+
const deliveries = results.flatMap((delivery, index) => {
|
|
20521
|
+
if (delivery.status === "fulfilled") return [delivery.value];
|
|
20522
|
+
console.warn(
|
|
20523
|
+
`Failed to finalize inbox delivery ${result.deliveries[index].id}: ${getInboxFailureReason(delivery.reason)}`
|
|
20524
|
+
);
|
|
20525
|
+
return [];
|
|
20526
|
+
});
|
|
20527
|
+
return {
|
|
20528
|
+
...result,
|
|
20529
|
+
deliveries,
|
|
20530
|
+
verifiableCredentials: deliveries.map((delivery) => delivery.credential),
|
|
20531
|
+
errors: result.errors + results.length - deliveries.length
|
|
20532
|
+
};
|
|
19673
20533
|
}, "finalizeInboxCredentials"),
|
|
19674
20534
|
recoverInboxCredentials: /* @__PURE__ */ __name(async (learnCard2, options2 = {}) => {
|
|
19675
20535
|
const result = await client.inbox.getMyInboxDeliveries.query(options2);
|
|
@@ -19683,9 +20543,13 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19683
20543
|
)
|
|
19684
20544
|
}))
|
|
19685
20545
|
);
|
|
19686
|
-
const records = results.flatMap(
|
|
19687
|
-
(record2
|
|
19688
|
-
|
|
20546
|
+
const records = results.flatMap((record2, index) => {
|
|
20547
|
+
if (record2.status === "fulfilled") return [record2.value];
|
|
20548
|
+
console.warn(
|
|
20549
|
+
`Failed to recover inbox delivery ${result.records[index].id}: ${getInboxFailureReason(record2.reason)}`
|
|
20550
|
+
);
|
|
20551
|
+
return [];
|
|
20552
|
+
});
|
|
19689
20553
|
return { ...result, records, failed: results.length - records.length };
|
|
19690
20554
|
}, "recoverInboxCredentials"),
|
|
19691
20555
|
sendGuardianApprovalEmail: /* @__PURE__ */ __name(async (_learnCard, options2) => {
|
|
@@ -19952,6 +20816,18 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19952
20816
|
await ensureUser();
|
|
19953
20817
|
return client.appStore.unsubmitForReview.mutate({ listingId });
|
|
19954
20818
|
}, "unsubmitAppStoreListing"),
|
|
20819
|
+
submitAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20820
|
+
await ensureUser();
|
|
20821
|
+
return client.appStore.submitListingUpdate.mutate({ listingId });
|
|
20822
|
+
}, "submitAppStoreListingUpdate"),
|
|
20823
|
+
withdrawAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20824
|
+
await ensureUser();
|
|
20825
|
+
return client.appStore.withdrawListingUpdate.mutate({ listingId });
|
|
20826
|
+
}, "withdrawAppStoreListingUpdate"),
|
|
20827
|
+
discardAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20828
|
+
await ensureUser();
|
|
20829
|
+
return client.appStore.discardListingUpdate.mutate({ listingId });
|
|
20830
|
+
}, "discardAppStoreListingUpdate"),
|
|
19955
20831
|
getListingsForIntegration: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2 = {}) => {
|
|
19956
20832
|
await ensureUser();
|
|
19957
20833
|
return client.appStore.getListingsForIntegration.query({
|
|
@@ -19963,6 +20839,34 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19963
20839
|
await ensureUser();
|
|
19964
20840
|
return client.appStore.countListingsForIntegration.query({ integrationId });
|
|
19965
20841
|
}, "countListingsForIntegration"),
|
|
20842
|
+
submitAppManifest: /* @__PURE__ */ __name(async (_learnCard, integrationId, manifest) => {
|
|
20843
|
+
await ensureUser();
|
|
20844
|
+
return client.appStore.submitAppManifest.mutate({ integrationId, manifest });
|
|
20845
|
+
}, "submitAppManifest"),
|
|
20846
|
+
getManifestVersions: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2) => {
|
|
20847
|
+
await ensureUser();
|
|
20848
|
+
return client.appStore.getManifestVersions.query({ integrationId, ...options2 });
|
|
20849
|
+
}, "getManifestVersions"),
|
|
20850
|
+
getManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2) => {
|
|
20851
|
+
await ensureUser();
|
|
20852
|
+
return client.appStore.getManifestVersion.query({ integrationId, version: version2 });
|
|
20853
|
+
}, "getManifestVersion"),
|
|
20854
|
+
getManifestDiff: /* @__PURE__ */ __name(async (_learnCard, integrationId, toVersion, fromVersion) => {
|
|
20855
|
+
await ensureUser();
|
|
20856
|
+
return client.appStore.getManifestDiff.query({
|
|
20857
|
+
integrationId,
|
|
20858
|
+
toVersion,
|
|
20859
|
+
fromVersion
|
|
20860
|
+
});
|
|
20861
|
+
}, "getManifestDiff"),
|
|
20862
|
+
applyManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2, listingId) => {
|
|
20863
|
+
await ensureUser();
|
|
20864
|
+
return client.appStore.applyManifestVersion.mutate({
|
|
20865
|
+
integrationId,
|
|
20866
|
+
version: version2,
|
|
20867
|
+
listingId
|
|
20868
|
+
});
|
|
20869
|
+
}, "applyManifestVersion"),
|
|
19966
20870
|
browseAppStore: /* @__PURE__ */ __name(async (_learnCard, options2) => {
|
|
19967
20871
|
return client.appStore.browseListedApps.query(options2);
|
|
19968
20872
|
}, "browseAppStore"),
|
|
@@ -20018,6 +20922,10 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
20018
20922
|
await ensureUser();
|
|
20019
20923
|
return client.appStore.adminGetAllListings.query(options2);
|
|
20020
20924
|
}, "adminGetAllListings"),
|
|
20925
|
+
adminReviewListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId, approve) => {
|
|
20926
|
+
await ensureUser();
|
|
20927
|
+
return client.appStore.adminReviewListingUpdate.mutate({ listingId, approve });
|
|
20928
|
+
}, "adminReviewListingUpdate"),
|
|
20021
20929
|
// App Store Boost Management
|
|
20022
20930
|
addBoostToApp: /* @__PURE__ */ __name(async (_learnCard, listingId, boostUri, templateAlias) => {
|
|
20023
20931
|
await ensureUser();
|