@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
package/dist/lcn-plugin.esm.js
CHANGED
|
@@ -617,10 +617,10 @@ function $constructor(name, initializer3, params) {
|
|
|
617
617
|
let Definition = _Definition;
|
|
618
618
|
Object.defineProperty(Definition, "name", { value: name });
|
|
619
619
|
function _(def) {
|
|
620
|
-
var
|
|
620
|
+
var _a5;
|
|
621
621
|
const inst = params?.Parent ? new Definition() : this;
|
|
622
622
|
init(inst, def);
|
|
623
|
-
(
|
|
623
|
+
(_a5 = inst._zod).deferred ?? (_a5.deferred = []);
|
|
624
624
|
for (const fn of inst._zod.deferred) {
|
|
625
625
|
fn();
|
|
626
626
|
}
|
|
@@ -1286,8 +1286,8 @@ function explicitlyAborted(x, startIndex = 0) {
|
|
|
1286
1286
|
__name(explicitlyAborted, "explicitlyAborted");
|
|
1287
1287
|
function prefixIssues(path, issues) {
|
|
1288
1288
|
return issues.map((iss) => {
|
|
1289
|
-
var
|
|
1290
|
-
(
|
|
1289
|
+
var _a5;
|
|
1290
|
+
(_a5 = iss).path ?? (_a5.path = []);
|
|
1291
1291
|
iss.path.unshift(path);
|
|
1292
1292
|
return iss;
|
|
1293
1293
|
});
|
|
@@ -1490,7 +1490,7 @@ __name(formatError, "formatError");
|
|
|
1490
1490
|
function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
1491
1491
|
const result = { errors: [] };
|
|
1492
1492
|
const processError = /* @__PURE__ */ __name((error52, path = []) => {
|
|
1493
|
-
var
|
|
1493
|
+
var _a5, _b;
|
|
1494
1494
|
for (const issue2 of error52.issues) {
|
|
1495
1495
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
1496
1496
|
issue2.errors.map((issues) => processError({ issues }, [...path, ...issue2.path]));
|
|
@@ -1511,7 +1511,7 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
|
|
|
1511
1511
|
const terminal = i === fullpath.length - 1;
|
|
1512
1512
|
if (typeof el === "string") {
|
|
1513
1513
|
curr.properties ?? (curr.properties = {});
|
|
1514
|
-
(
|
|
1514
|
+
(_a5 = curr.properties)[el] ?? (_a5[el] = { errors: [] });
|
|
1515
1515
|
curr = curr.properties[el];
|
|
1516
1516
|
} else {
|
|
1517
1517
|
curr.items ?? (curr.items = []);
|
|
@@ -1816,10 +1816,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
|
|
|
1816
1816
|
|
|
1817
1817
|
// ../../../node_modules/zod/v4/core/checks.js
|
|
1818
1818
|
var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
|
|
1819
|
-
var
|
|
1819
|
+
var _a5;
|
|
1820
1820
|
inst._zod ?? (inst._zod = {});
|
|
1821
1821
|
inst._zod.def = def;
|
|
1822
|
-
(
|
|
1822
|
+
(_a5 = inst._zod).onattach ?? (_a5.onattach = []);
|
|
1823
1823
|
});
|
|
1824
1824
|
var numericOriginMap = {
|
|
1825
1825
|
number: "number",
|
|
@@ -1885,8 +1885,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
|
|
|
1885
1885
|
var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
|
|
1886
1886
|
$ZodCheck.init(inst, def);
|
|
1887
1887
|
inst._zod.onattach.push((inst2) => {
|
|
1888
|
-
var
|
|
1889
|
-
(
|
|
1888
|
+
var _a5;
|
|
1889
|
+
(_a5 = inst2._zod.bag).multipleOf ?? (_a5.multipleOf = def.value);
|
|
1890
1890
|
});
|
|
1891
1891
|
inst._zod.check = (payload) => {
|
|
1892
1892
|
if (typeof payload.value !== typeof def.value)
|
|
@@ -2019,9 +2019,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
|
|
|
2019
2019
|
};
|
|
2020
2020
|
});
|
|
2021
2021
|
var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
|
|
2022
|
-
var
|
|
2022
|
+
var _a5;
|
|
2023
2023
|
$ZodCheck.init(inst, def);
|
|
2024
|
-
(
|
|
2024
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2025
2025
|
const val = payload.value;
|
|
2026
2026
|
return !nullish(val) && val.size !== void 0;
|
|
2027
2027
|
});
|
|
@@ -2047,9 +2047,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
|
|
|
2047
2047
|
};
|
|
2048
2048
|
});
|
|
2049
2049
|
var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
|
|
2050
|
-
var
|
|
2050
|
+
var _a5;
|
|
2051
2051
|
$ZodCheck.init(inst, def);
|
|
2052
|
-
(
|
|
2052
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2053
2053
|
const val = payload.value;
|
|
2054
2054
|
return !nullish(val) && val.size !== void 0;
|
|
2055
2055
|
});
|
|
@@ -2075,9 +2075,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
|
|
|
2075
2075
|
};
|
|
2076
2076
|
});
|
|
2077
2077
|
var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
|
|
2078
|
-
var
|
|
2078
|
+
var _a5;
|
|
2079
2079
|
$ZodCheck.init(inst, def);
|
|
2080
|
-
(
|
|
2080
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2081
2081
|
const val = payload.value;
|
|
2082
2082
|
return !nullish(val) && val.size !== void 0;
|
|
2083
2083
|
});
|
|
@@ -2105,9 +2105,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
|
|
|
2105
2105
|
};
|
|
2106
2106
|
});
|
|
2107
2107
|
var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
|
|
2108
|
-
var
|
|
2108
|
+
var _a5;
|
|
2109
2109
|
$ZodCheck.init(inst, def);
|
|
2110
|
-
(
|
|
2110
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2111
2111
|
const val = payload.value;
|
|
2112
2112
|
return !nullish(val) && val.length !== void 0;
|
|
2113
2113
|
});
|
|
@@ -2134,9 +2134,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
|
|
|
2134
2134
|
};
|
|
2135
2135
|
});
|
|
2136
2136
|
var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
|
|
2137
|
-
var
|
|
2137
|
+
var _a5;
|
|
2138
2138
|
$ZodCheck.init(inst, def);
|
|
2139
|
-
(
|
|
2139
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2140
2140
|
const val = payload.value;
|
|
2141
2141
|
return !nullish(val) && val.length !== void 0;
|
|
2142
2142
|
});
|
|
@@ -2163,9 +2163,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
|
|
|
2163
2163
|
};
|
|
2164
2164
|
});
|
|
2165
2165
|
var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
|
|
2166
|
-
var
|
|
2166
|
+
var _a5;
|
|
2167
2167
|
$ZodCheck.init(inst, def);
|
|
2168
|
-
(
|
|
2168
|
+
(_a5 = inst._zod.def).when ?? (_a5.when = (payload) => {
|
|
2169
2169
|
const val = payload.value;
|
|
2170
2170
|
return !nullish(val) && val.length !== void 0;
|
|
2171
2171
|
});
|
|
@@ -2194,7 +2194,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
|
|
|
2194
2194
|
};
|
|
2195
2195
|
});
|
|
2196
2196
|
var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
|
|
2197
|
-
var
|
|
2197
|
+
var _a5, _b;
|
|
2198
2198
|
$ZodCheck.init(inst, def);
|
|
2199
2199
|
inst._zod.onattach.push((inst2) => {
|
|
2200
2200
|
const bag = inst2._zod.bag;
|
|
@@ -2205,7 +2205,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
|
|
|
2205
2205
|
}
|
|
2206
2206
|
});
|
|
2207
2207
|
if (def.pattern)
|
|
2208
|
-
(
|
|
2208
|
+
(_a5 = inst._zod).check ?? (_a5.check = (payload) => {
|
|
2209
2209
|
def.pattern.lastIndex = 0;
|
|
2210
2210
|
if (def.pattern.test(payload.value))
|
|
2211
2211
|
return;
|
|
@@ -2410,7 +2410,7 @@ var version = {
|
|
|
2410
2410
|
|
|
2411
2411
|
// ../../../node_modules/zod/v4/core/schemas.js
|
|
2412
2412
|
var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
2413
|
-
var
|
|
2413
|
+
var _a5;
|
|
2414
2414
|
inst ?? (inst = {});
|
|
2415
2415
|
inst._zod.def = def;
|
|
2416
2416
|
inst._zod.bag = inst._zod.bag || {};
|
|
@@ -2425,7 +2425,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
|
2425
2425
|
}
|
|
2426
2426
|
}
|
|
2427
2427
|
if (checks.length === 0) {
|
|
2428
|
-
(
|
|
2428
|
+
(_a5 = inst._zod).deferred ?? (_a5.deferred = []);
|
|
2429
2429
|
inst._zod.deferred?.push(() => {
|
|
2430
2430
|
inst._zod.run = inst._zod.parse;
|
|
2431
2431
|
});
|
|
@@ -11816,7 +11816,7 @@ function initializeContext(params) {
|
|
|
11816
11816
|
}
|
|
11817
11817
|
__name(initializeContext, "initializeContext");
|
|
11818
11818
|
function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
|
|
11819
|
-
var
|
|
11819
|
+
var _a5;
|
|
11820
11820
|
const def = schema._zod.def;
|
|
11821
11821
|
const seen = ctx.seen.get(schema);
|
|
11822
11822
|
if (seen) {
|
|
@@ -11864,7 +11864,7 @@ function process(schema, ctx, _params = { path: [], schemaPath: [] }) {
|
|
|
11864
11864
|
delete result.schema.default;
|
|
11865
11865
|
}
|
|
11866
11866
|
if (ctx.io === "input" && "_prefault" in result.schema)
|
|
11867
|
-
(
|
|
11867
|
+
(_a5 = result.schema).default ?? (_a5.default = result.schema._prefault);
|
|
11868
11868
|
delete result.schema._prefault;
|
|
11869
11869
|
const _result = ctx.seen.get(schema);
|
|
11870
11870
|
return _result.schema;
|
|
@@ -15440,7 +15440,8 @@ var AssociationTypeValidator = external_exports.enum([
|
|
|
15440
15440
|
"replacedBy"
|
|
15441
15441
|
]).or(external_exports.string());
|
|
15442
15442
|
var AssociationValidator = external_exports.object({
|
|
15443
|
-
|
|
15443
|
+
// Accept compacted scalars while retaining the existing permissive array contract.
|
|
15444
|
+
type: external_exports.string().min(1).or(external_exports.string().array().nonempty()),
|
|
15444
15445
|
associationType: AssociationTypeValidator,
|
|
15445
15446
|
sourceId: external_exports.string().optional(),
|
|
15446
15447
|
targetId: external_exports.string()
|
|
@@ -16263,11 +16264,48 @@ var ConsentFlowContractDetailsValidator = external_exports.object({
|
|
|
16263
16264
|
updatedAt: external_exports.string(),
|
|
16264
16265
|
expiresAt: external_exports.string().optional(),
|
|
16265
16266
|
autoBoosts: external_exports.string().array().optional(),
|
|
16266
|
-
writers: external_exports.array(LCNProfileValidator).optional()
|
|
16267
|
+
writers: external_exports.array(LCNProfileValidator).optional(),
|
|
16268
|
+
recipients: external_exports.array(LCNPublicProfileValidator.extend({ did: external_exports.string() })).optional(),
|
|
16269
|
+
audienceVersion: external_exports.number().int().nonnegative().optional()
|
|
16267
16270
|
});
|
|
16268
|
-
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied"]).nullable();
|
|
16271
|
+
var ConsentFlowContractRequestStatusValidator = external_exports.enum(["pending", "accepted", "denied", "cancelled"]).nullable();
|
|
16269
16272
|
var ConsentFlowContractRequestReadStatusValidator = external_exports.enum(["unseen", "seen"]).nullable();
|
|
16270
|
-
var
|
|
16273
|
+
var ConsentFlowReferralValidator = external_exports.object({
|
|
16274
|
+
requestId: external_exports.string(),
|
|
16275
|
+
requestedBy: external_exports.string(),
|
|
16276
|
+
externalReferenceId: external_exports.string().max(256).optional()
|
|
16277
|
+
});
|
|
16278
|
+
var ContractRequestFieldsValidator = ConsentFlowReferralValidator.partial().extend({
|
|
16279
|
+
requestedAt: external_exports.string().optional(),
|
|
16280
|
+
message: external_exports.string().max(500).optional()
|
|
16281
|
+
});
|
|
16282
|
+
var SendContractRequestValidator = external_exports.object({
|
|
16283
|
+
contractUri: external_exports.string(),
|
|
16284
|
+
targetProfileId: external_exports.string(),
|
|
16285
|
+
externalReferenceId: external_exports.string().trim().min(1).max(256).optional(),
|
|
16286
|
+
message: external_exports.string().trim().max(500).optional()
|
|
16287
|
+
});
|
|
16288
|
+
var ConsentFlowWebhookMetadataValidator = external_exports.object({
|
|
16289
|
+
eventId: external_exports.string(),
|
|
16290
|
+
deliveryKey: external_exports.string(),
|
|
16291
|
+
event: external_exports.enum([
|
|
16292
|
+
"request_sent",
|
|
16293
|
+
"request_accepted",
|
|
16294
|
+
"request_denied",
|
|
16295
|
+
"request_cancelled",
|
|
16296
|
+
"consent_created",
|
|
16297
|
+
"consent_updated",
|
|
16298
|
+
"consent_withdrawn",
|
|
16299
|
+
"credentials_synced"
|
|
16300
|
+
]),
|
|
16301
|
+
contractUri: external_exports.string(),
|
|
16302
|
+
termsUri: external_exports.string().optional(),
|
|
16303
|
+
requestId: external_exports.string().optional(),
|
|
16304
|
+
requestedBy: external_exports.string().optional(),
|
|
16305
|
+
externalReferenceId: external_exports.string().optional(),
|
|
16306
|
+
recipientRole: external_exports.enum(["owner", "recipient", "requester", "target"])
|
|
16307
|
+
});
|
|
16308
|
+
var ConsentFlowContractRequestForProfileValidator = ContractRequestFieldsValidator.extend({
|
|
16271
16309
|
profile: LCNProfileValidator,
|
|
16272
16310
|
status: ConsentFlowContractRequestStatusValidator,
|
|
16273
16311
|
readStatus: ConsentFlowContractRequestReadStatusValidator.optional()
|
|
@@ -16313,6 +16351,7 @@ var PaginatedConsentFlowTermsValidator = PaginationResponseValidator.extend({
|
|
|
16313
16351
|
expiresAt: external_exports.string().optional(),
|
|
16314
16352
|
oneTime: external_exports.boolean().optional(),
|
|
16315
16353
|
terms: ConsentFlowTermsValidator,
|
|
16354
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16316
16355
|
contract: ConsentFlowContractDetailsValidator,
|
|
16317
16356
|
uri: external_exports.string(),
|
|
16318
16357
|
consenter: LCNProfileValidator,
|
|
@@ -16408,6 +16447,7 @@ var ConsentFlowTransactionValidator = external_exports.object({
|
|
|
16408
16447
|
oneTime: external_exports.boolean().optional(),
|
|
16409
16448
|
terms: ConsentFlowTermsValidator.optional(),
|
|
16410
16449
|
guardianApproval: ConsentFlowGuardianApprovalValidator.optional(),
|
|
16450
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16411
16451
|
id: external_exports.string(),
|
|
16412
16452
|
action: ConsentFlowTransactionActionValidator,
|
|
16413
16453
|
date: external_exports.string(),
|
|
@@ -16418,6 +16458,7 @@ var HolderExportConsentRecordValidator = external_exports.object({
|
|
|
16418
16458
|
status: ConsentFlowTermsStatusValidator,
|
|
16419
16459
|
contract: ConsentFlowContractDetailsValidator,
|
|
16420
16460
|
terms: ConsentFlowTermsValidator,
|
|
16461
|
+
referral: ConsentFlowReferralValidator.optional(),
|
|
16421
16462
|
transactions: ConsentFlowTransactionValidator.array()
|
|
16422
16463
|
});
|
|
16423
16464
|
var HolderExportMetadataValidator = external_exports.object({
|
|
@@ -17154,7 +17195,7 @@ var AppStoreListingSubmitterValidator = external_exports.object({
|
|
|
17154
17195
|
displayName: external_exports.string(),
|
|
17155
17196
|
email: external_exports.string().optional()
|
|
17156
17197
|
});
|
|
17157
|
-
var
|
|
17198
|
+
var AppStoreListingFieldsValidator = external_exports.object({
|
|
17158
17199
|
listing_id: external_exports.string(),
|
|
17159
17200
|
slug: external_exports.string().optional(),
|
|
17160
17201
|
display_name: external_exports.string(),
|
|
@@ -17180,15 +17221,33 @@ var AppStoreListingValidator = external_exports.object({
|
|
|
17180
17221
|
submitter: AppStoreListingSubmitterValidator.optional(),
|
|
17181
17222
|
contact_email: external_exports.string().email().optional()
|
|
17182
17223
|
});
|
|
17224
|
+
var PendingListingUpdateStatusValidator = external_exports.enum(["DRAFT", "PENDING_REVIEW"]);
|
|
17225
|
+
var PendingListingUpdateValidator = external_exports.object({
|
|
17226
|
+
status: PendingListingUpdateStatusValidator,
|
|
17227
|
+
submitted_at: external_exports.string().optional(),
|
|
17228
|
+
changes: AppStoreListingFieldsValidator.omit({
|
|
17229
|
+
listing_id: true,
|
|
17230
|
+
app_listing_status: true,
|
|
17231
|
+
promotion_level: true,
|
|
17232
|
+
submitted_at: true,
|
|
17233
|
+
submitter: true
|
|
17234
|
+
}).partial(),
|
|
17235
|
+
manifest_version: external_exports.number().int().min(1).optional()
|
|
17236
|
+
});
|
|
17237
|
+
var AppStoreListingValidator = AppStoreListingFieldsValidator.extend({
|
|
17238
|
+
pending_update: PendingListingUpdateValidator.optional()
|
|
17239
|
+
});
|
|
17183
17240
|
var AppStoreListingCreateValidator = AppStoreListingValidator.omit({
|
|
17184
17241
|
listing_id: true,
|
|
17185
17242
|
app_listing_status: true,
|
|
17186
|
-
promotion_level: true
|
|
17243
|
+
promotion_level: true,
|
|
17244
|
+
pending_update: true
|
|
17187
17245
|
});
|
|
17188
17246
|
var AppStoreListingUpdateValidator = AppStoreListingValidator.partial().omit({
|
|
17189
17247
|
listing_id: true,
|
|
17190
17248
|
app_listing_status: true,
|
|
17191
|
-
promotion_level: true
|
|
17249
|
+
promotion_level: true,
|
|
17250
|
+
pending_update: true
|
|
17192
17251
|
});
|
|
17193
17252
|
var InstalledAppValidator = AppStoreListingValidator.extend({
|
|
17194
17253
|
installed_at: external_exports.string()
|
|
@@ -17203,12 +17262,87 @@ var AppBoostValidator = external_exports.object({
|
|
|
17203
17262
|
templateAlias: external_exports.string().min(1).max(50).regex(/^[a-z0-9-]+$/),
|
|
17204
17263
|
boostUri: external_exports.string()
|
|
17205
17264
|
});
|
|
17206
|
-
var
|
|
17265
|
+
var InlineWalletCategoryValidator = external_exports.enum([
|
|
17266
|
+
"Achievement",
|
|
17267
|
+
"Skill",
|
|
17268
|
+
"ID",
|
|
17269
|
+
"Learning History",
|
|
17270
|
+
"Work History",
|
|
17271
|
+
"Social Badges",
|
|
17272
|
+
"Membership",
|
|
17273
|
+
"Accomplishment",
|
|
17274
|
+
"Experiences",
|
|
17275
|
+
"Accommodation",
|
|
17276
|
+
"Family"
|
|
17277
|
+
]);
|
|
17278
|
+
var InlineAlignmentValidator = external_exports.object({
|
|
17279
|
+
name: external_exports.string(),
|
|
17280
|
+
url: external_exports.string(),
|
|
17281
|
+
framework: external_exports.string().optional(),
|
|
17282
|
+
code: external_exports.string().optional()
|
|
17283
|
+
}).passthrough();
|
|
17284
|
+
var InlineEvidenceValidator = external_exports.object({
|
|
17285
|
+
id: external_exports.string().optional(),
|
|
17286
|
+
name: external_exports.string().optional(),
|
|
17287
|
+
narrative: external_exports.string().optional()
|
|
17288
|
+
}).passthrough();
|
|
17289
|
+
var InlineWalletSkillTagValidator = external_exports.object({
|
|
17290
|
+
frameworkId: external_exports.string(),
|
|
17291
|
+
id: external_exports.string(),
|
|
17292
|
+
proficiencyLevel: external_exports.string().optional()
|
|
17293
|
+
}).passthrough();
|
|
17294
|
+
var SimpleInlineCredentialTemplateValidator = external_exports.object({
|
|
17295
|
+
rawCredential: external_exports.undefined().optional(),
|
|
17296
|
+
name: external_exports.string(),
|
|
17297
|
+
description: external_exports.string().optional(),
|
|
17298
|
+
image: external_exports.string().optional(),
|
|
17299
|
+
issuerName: external_exports.string().optional(),
|
|
17300
|
+
achievementType: external_exports.string().optional(),
|
|
17301
|
+
category: InlineWalletCategoryValidator.optional(),
|
|
17302
|
+
criteria: external_exports.object({
|
|
17303
|
+
narrative: external_exports.string().optional(),
|
|
17304
|
+
url: external_exports.string().optional()
|
|
17305
|
+
}).passthrough().optional(),
|
|
17306
|
+
alignments: external_exports.array(InlineAlignmentValidator).optional(),
|
|
17307
|
+
tags: external_exports.array(external_exports.string()).optional(),
|
|
17308
|
+
activity: external_exports.object({
|
|
17309
|
+
startDate: external_exports.string().optional(),
|
|
17310
|
+
endDate: external_exports.string().optional()
|
|
17311
|
+
}).passthrough().optional(),
|
|
17312
|
+
credits: external_exports.object({
|
|
17313
|
+
earned: external_exports.union([external_exports.number(), external_exports.string()]).optional(),
|
|
17314
|
+
available: external_exports.union([external_exports.number(), external_exports.string()]).optional()
|
|
17315
|
+
}).passthrough().optional(),
|
|
17316
|
+
validUntil: external_exports.string().optional(),
|
|
17317
|
+
evidence: external_exports.array(InlineEvidenceValidator).optional(),
|
|
17318
|
+
walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
|
|
17319
|
+
}).passthrough();
|
|
17320
|
+
var RawInlineCredentialTemplateValidator = external_exports.object({
|
|
17321
|
+
rawCredential: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
17322
|
+
category: InlineWalletCategoryValidator.optional(),
|
|
17323
|
+
walletSkills: external_exports.array(InlineWalletSkillTagValidator).optional()
|
|
17324
|
+
}).passthrough();
|
|
17325
|
+
var InlineCredentialTemplateValidator = external_exports.union([
|
|
17326
|
+
RawInlineCredentialTemplateValidator,
|
|
17327
|
+
SimpleInlineCredentialTemplateValidator
|
|
17328
|
+
]);
|
|
17329
|
+
var LegacySendCredentialEventValidator = external_exports.object({
|
|
17207
17330
|
type: external_exports.literal("send-credential"),
|
|
17208
17331
|
templateAlias: external_exports.string(),
|
|
17209
17332
|
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
17210
17333
|
preventDuplicateClaim: external_exports.boolean().optional()
|
|
17211
17334
|
});
|
|
17335
|
+
var InlineSendCredentialEventValidator = external_exports.object({
|
|
17336
|
+
type: external_exports.literal("send-credential"),
|
|
17337
|
+
alias: external_exports.string(),
|
|
17338
|
+
template: InlineCredentialTemplateValidator,
|
|
17339
|
+
templateData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
17340
|
+
preventDuplicateClaim: external_exports.boolean().optional()
|
|
17341
|
+
});
|
|
17342
|
+
var SendCredentialEventValidator = external_exports.union([
|
|
17343
|
+
LegacySendCredentialEventValidator,
|
|
17344
|
+
InlineSendCredentialEventValidator
|
|
17345
|
+
]);
|
|
17212
17346
|
var CheckCredentialEventValidator = external_exports.object({
|
|
17213
17347
|
type: external_exports.literal("check-credential"),
|
|
17214
17348
|
templateAlias: external_exports.string().optional(),
|
|
@@ -17303,7 +17437,119 @@ var GetCountersEventValidator = external_exports.object({
|
|
|
17303
17437
|
type: external_exports.literal("get-counters"),
|
|
17304
17438
|
keys: external_exports.array(counterKeyValidator).min(1).max(50).optional()
|
|
17305
17439
|
});
|
|
17306
|
-
var
|
|
17440
|
+
var ConsentRequestWalletCategoryValidator = external_exports.enum([
|
|
17441
|
+
"Achievement",
|
|
17442
|
+
"Skill",
|
|
17443
|
+
"ID",
|
|
17444
|
+
"Learning History",
|
|
17445
|
+
"Work History",
|
|
17446
|
+
"Social Badges",
|
|
17447
|
+
"Membership",
|
|
17448
|
+
"Accomplishment",
|
|
17449
|
+
"Experiences",
|
|
17450
|
+
"Accommodation",
|
|
17451
|
+
"Family"
|
|
17452
|
+
]);
|
|
17453
|
+
var ConsentRequestPersonalFieldValidator = external_exports.enum([
|
|
17454
|
+
"name",
|
|
17455
|
+
"email",
|
|
17456
|
+
"phone",
|
|
17457
|
+
"birthDate",
|
|
17458
|
+
"country",
|
|
17459
|
+
"avatar"
|
|
17460
|
+
]);
|
|
17461
|
+
var ConsentRequestValidator = external_exports.object({
|
|
17462
|
+
read: external_exports.object({
|
|
17463
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional(),
|
|
17464
|
+
personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).optional()
|
|
17465
|
+
}).optional(),
|
|
17466
|
+
write: external_exports.object({
|
|
17467
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).optional()
|
|
17468
|
+
}).optional(),
|
|
17469
|
+
reason: external_exports.string().optional()
|
|
17470
|
+
});
|
|
17471
|
+
var NormalizedConsentScopesValidator = external_exports.object({
|
|
17472
|
+
read: external_exports.object({
|
|
17473
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([]),
|
|
17474
|
+
personalFields: external_exports.array(ConsentRequestPersonalFieldValidator).default([])
|
|
17475
|
+
}),
|
|
17476
|
+
write: external_exports.object({
|
|
17477
|
+
credentialCategories: external_exports.array(ConsentRequestWalletCategoryValidator).default([])
|
|
17478
|
+
})
|
|
17479
|
+
});
|
|
17480
|
+
var CapturedTemplateRecordValidator = external_exports.object({
|
|
17481
|
+
alias: external_exports.string(),
|
|
17482
|
+
template: InlineCredentialTemplateValidator,
|
|
17483
|
+
version: external_exports.number().int().min(1),
|
|
17484
|
+
lastUsedAt: external_exports.string()
|
|
17485
|
+
}).passthrough();
|
|
17486
|
+
var CapturedConsentRecordValidator = external_exports.object({
|
|
17487
|
+
scopes: NormalizedConsentScopesValidator,
|
|
17488
|
+
reason: external_exports.string().optional(),
|
|
17489
|
+
lastUsedAt: external_exports.string()
|
|
17490
|
+
}).passthrough();
|
|
17491
|
+
var AppManifestValidator = external_exports.object({
|
|
17492
|
+
manifestVersion: external_exports.literal(1),
|
|
17493
|
+
appUrl: external_exports.string(),
|
|
17494
|
+
appKey: external_exports.string().max(200).optional(),
|
|
17495
|
+
suggestedName: external_exports.string().optional(),
|
|
17496
|
+
suggestedIconUrl: external_exports.string().optional(),
|
|
17497
|
+
permissions: external_exports.array(external_exports.string()).default([]),
|
|
17498
|
+
templates: external_exports.array(CapturedTemplateRecordValidator).default([]),
|
|
17499
|
+
consentRequests: external_exports.array(CapturedConsentRecordValidator).default([]),
|
|
17500
|
+
usedConsentContract: external_exports.boolean().optional(),
|
|
17501
|
+
featuresLaunched: external_exports.array(external_exports.string()).default([]),
|
|
17502
|
+
counterKeys: external_exports.array(external_exports.string()).default([]),
|
|
17503
|
+
usedLearnerContext: external_exports.boolean(),
|
|
17504
|
+
usedNotifications: external_exports.boolean(),
|
|
17505
|
+
firstCapturedAt: external_exports.string(),
|
|
17506
|
+
lastUpdatedAt: external_exports.string()
|
|
17507
|
+
}).passthrough();
|
|
17508
|
+
var AppManifestVersionStatusValidator = external_exports.enum(["draft", "active", "superseded"]);
|
|
17509
|
+
var AppManifestVersionValidator = external_exports.object({
|
|
17510
|
+
id: external_exports.string(),
|
|
17511
|
+
version: external_exports.number().int().min(1),
|
|
17512
|
+
manifestHash: external_exports.string(),
|
|
17513
|
+
manifest: AppManifestValidator,
|
|
17514
|
+
status: AppManifestVersionStatusValidator,
|
|
17515
|
+
createdAt: external_exports.string(),
|
|
17516
|
+
activatedAt: external_exports.string().optional()
|
|
17517
|
+
});
|
|
17518
|
+
var AppManifestStringDiffValidator = external_exports.object({
|
|
17519
|
+
added: external_exports.array(external_exports.string()),
|
|
17520
|
+
removed: external_exports.array(external_exports.string()),
|
|
17521
|
+
changed: external_exports.array(external_exports.string())
|
|
17522
|
+
});
|
|
17523
|
+
var AppManifestTemplateRefValidator = external_exports.object({
|
|
17524
|
+
alias: external_exports.string(),
|
|
17525
|
+
version: external_exports.number().int().min(1)
|
|
17526
|
+
});
|
|
17527
|
+
var AppManifestTemplateChangeValidator = external_exports.object({
|
|
17528
|
+
alias: external_exports.string(),
|
|
17529
|
+
fromVersion: external_exports.number().int().min(1),
|
|
17530
|
+
toVersion: external_exports.number().int().min(1)
|
|
17531
|
+
});
|
|
17532
|
+
var AppManifestDiffValidator = external_exports.object({
|
|
17533
|
+
permissions: AppManifestStringDiffValidator,
|
|
17534
|
+
templates: external_exports.object({
|
|
17535
|
+
added: external_exports.array(AppManifestTemplateRefValidator),
|
|
17536
|
+
removed: external_exports.array(AppManifestTemplateRefValidator),
|
|
17537
|
+
changed: external_exports.array(AppManifestTemplateChangeValidator)
|
|
17538
|
+
}),
|
|
17539
|
+
consentScopes: AppManifestStringDiffValidator,
|
|
17540
|
+
featurePaths: AppManifestStringDiffValidator,
|
|
17541
|
+
counterKeys: AppManifestStringDiffValidator,
|
|
17542
|
+
requiresReview: external_exports.boolean()
|
|
17543
|
+
});
|
|
17544
|
+
var UpsertConsentContractEventValidator = external_exports.object({
|
|
17545
|
+
type: external_exports.literal("upsert-consent-contract"),
|
|
17546
|
+
scopes: ConsentRequestValidator
|
|
17547
|
+
});
|
|
17548
|
+
var UpsertConsentContractResponseValidator = external_exports.object({
|
|
17549
|
+
contractUri: external_exports.string(),
|
|
17550
|
+
created: external_exports.boolean()
|
|
17551
|
+
});
|
|
17552
|
+
var AppEventValidator = external_exports.union([
|
|
17307
17553
|
SendCredentialEventValidator,
|
|
17308
17554
|
CheckCredentialEventValidator,
|
|
17309
17555
|
CheckIssuanceStatusEventValidator,
|
|
@@ -17313,7 +17559,8 @@ var AppEventValidator = external_exports.discriminatedUnion("type", [
|
|
|
17313
17559
|
SendNotificationEventValidator,
|
|
17314
17560
|
IncrementCounterEventValidator,
|
|
17315
17561
|
GetCounterEventValidator,
|
|
17316
|
-
GetCountersEventValidator
|
|
17562
|
+
GetCountersEventValidator,
|
|
17563
|
+
UpsertConsentContractEventValidator
|
|
17317
17564
|
]);
|
|
17318
17565
|
var AppEventInputValidator = external_exports.object({
|
|
17319
17566
|
listingId: external_exports.string(),
|
|
@@ -17387,6 +17634,21 @@ var AuthSessionError = (_a3 = class extends Error {
|
|
|
17387
17634
|
this.name = "AuthSessionError";
|
|
17388
17635
|
}
|
|
17389
17636
|
}, __name(_a3, "AuthSessionError"), __name2(_a3, "AuthSessionError"), _a3);
|
|
17637
|
+
var _a4;
|
|
17638
|
+
var UnsupportedSignInOperationError = (_a4 = class extends Error {
|
|
17639
|
+
constructor(operation, providerType) {
|
|
17640
|
+
super(`${operation} is not supported by ${providerType}`);
|
|
17641
|
+
this.operation = operation;
|
|
17642
|
+
this.providerType = providerType;
|
|
17643
|
+
this.name = "UnsupportedSignInOperationError";
|
|
17644
|
+
}
|
|
17645
|
+
}, __name(_a4, "UnsupportedSignInOperationError"), __name2(_a4, "UnsupportedSignInOperationError"), _a4);
|
|
17646
|
+
var EscrowPinStatusValidator = external_exports.object({
|
|
17647
|
+
state: external_exports.enum(["none", "enabled", "locked", "stale"]),
|
|
17648
|
+
enabled: external_exports.boolean(),
|
|
17649
|
+
attemptsRemaining: external_exports.number().int().nonnegative(),
|
|
17650
|
+
salt: external_exports.string().optional()
|
|
17651
|
+
});
|
|
17390
17652
|
var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
|
|
17391
17653
|
var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
|
|
17392
17654
|
var BitstringStatusListEntryValidator = external_exports.object({
|
|
@@ -17495,6 +17757,501 @@ var inAppMessagesFlagValidator = external_exports.object({
|
|
|
17495
17757
|
version: external_exports.number().default(1),
|
|
17496
17758
|
messages: external_exports.array(inAppMessageValidator).default([])
|
|
17497
17759
|
}).passthrough();
|
|
17760
|
+
var SHARE_LINK_ID_BYTES = 16;
|
|
17761
|
+
var SHARE_CONTENT_KEY_BYTES = 32;
|
|
17762
|
+
var SHARE_IV_BYTES = 12;
|
|
17763
|
+
var SHARE_TAG_BYTES = 16;
|
|
17764
|
+
var MAX_SHARE_CIPHERTEXT_BYTES = 512 * 1024;
|
|
17765
|
+
var MAX_SHARE_RECOVERY_JWE_BYTES = 64 * 1024;
|
|
17766
|
+
var MAX_SELECTED_CREDENTIALS = 50;
|
|
17767
|
+
var MAX_ENDORSEMENTS = 200;
|
|
17768
|
+
var MAX_VP_MEMBERS = MAX_SELECTED_CREDENTIALS + MAX_ENDORSEMENTS;
|
|
17769
|
+
var MAX_SHARE_SOURCE_URI_CHARS = 2048;
|
|
17770
|
+
var MAX_SHARE_LINK_REQUEST_BYTES = 1024 * 1024;
|
|
17771
|
+
var SHARE_LINK_PROTOCOL = "lc-share/v1";
|
|
17772
|
+
var SHARE_RECOVERY_PROTOCOL = "lc-share-recovery/v1";
|
|
17773
|
+
var BASE64URL_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
17774
|
+
var BASE64URL_LOOKUP = (() => {
|
|
17775
|
+
const table = new Int16Array(128).fill(-1);
|
|
17776
|
+
for (let index = 0; index < BASE64URL_ALPHABET.length; index += 1) {
|
|
17777
|
+
table[BASE64URL_ALPHABET.charCodeAt(index)] = index;
|
|
17778
|
+
}
|
|
17779
|
+
return table;
|
|
17780
|
+
})();
|
|
17781
|
+
var encodeBase64Url = /* @__PURE__ */ __name2((bytes) => {
|
|
17782
|
+
let output = "";
|
|
17783
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
17784
|
+
const first = bytes[index];
|
|
17785
|
+
const second = bytes[index + 1];
|
|
17786
|
+
const third = bytes[index + 2];
|
|
17787
|
+
output += BASE64URL_ALPHABET[first >> 2];
|
|
17788
|
+
output += BASE64URL_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
|
|
17789
|
+
if (second === void 0) break;
|
|
17790
|
+
output += BASE64URL_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
|
|
17791
|
+
if (third === void 0) break;
|
|
17792
|
+
output += BASE64URL_ALPHABET[third & 63];
|
|
17793
|
+
}
|
|
17794
|
+
return output;
|
|
17795
|
+
}, "encodeBase64Url");
|
|
17796
|
+
var decodeBase64Url = /* @__PURE__ */ __name2((value) => {
|
|
17797
|
+
if (typeof value !== "string") return null;
|
|
17798
|
+
const output = new Uint8Array(Math.floor(value.length * 6 / 8));
|
|
17799
|
+
let bits = 0;
|
|
17800
|
+
let bitCount = 0;
|
|
17801
|
+
let outputIndex = 0;
|
|
17802
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
17803
|
+
const code = value.charCodeAt(index);
|
|
17804
|
+
const digit = code < 128 ? BASE64URL_LOOKUP[code] : -1;
|
|
17805
|
+
if (digit < 0) return null;
|
|
17806
|
+
bits = bits << 6 | digit;
|
|
17807
|
+
bitCount += 6;
|
|
17808
|
+
if (bitCount >= 8) {
|
|
17809
|
+
bitCount -= 8;
|
|
17810
|
+
output[outputIndex] = bits >> bitCount & 255;
|
|
17811
|
+
outputIndex += 1;
|
|
17812
|
+
}
|
|
17813
|
+
}
|
|
17814
|
+
return output;
|
|
17815
|
+
}, "decodeBase64Url");
|
|
17816
|
+
var isCanonicalBase64Url = /* @__PURE__ */ __name2((value, expectedBytes) => {
|
|
17817
|
+
if (typeof value !== "string") return false;
|
|
17818
|
+
if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
|
|
17819
|
+
return false;
|
|
17820
|
+
const decoded = decodeBase64Url(value);
|
|
17821
|
+
if (decoded === null) return false;
|
|
17822
|
+
if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
|
|
17823
|
+
return encodeBase64Url(decoded) === value;
|
|
17824
|
+
}, "isCanonicalBase64Url");
|
|
17825
|
+
var decodedBase64UrlByteLength = /* @__PURE__ */ __name2((value) => decodeBase64Url(value)?.length ?? null, "decodedBase64UrlByteLength");
|
|
17826
|
+
var utf8ByteLength = /* @__PURE__ */ __name2((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
|
|
17827
|
+
var canonicalBase64Url = /* @__PURE__ */ __name2((bytes) => external_exports.string().refine((value) => isCanonicalBase64Url(value, bytes), {
|
|
17828
|
+
message: `must be canonical base64url for exactly ${bytes} bytes`
|
|
17829
|
+
}), "canonicalBase64Url");
|
|
17830
|
+
var ShareLinkIdValidator = canonicalBase64Url(SHARE_LINK_ID_BYTES);
|
|
17831
|
+
var ShareContentKeyValidator = canonicalBase64Url(SHARE_CONTENT_KEY_BYTES);
|
|
17832
|
+
var ShareIvValidator = canonicalBase64Url(SHARE_IV_BYTES);
|
|
17833
|
+
var ShareCiphertextValidator = external_exports.string().refine(
|
|
17834
|
+
(value) => {
|
|
17835
|
+
if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES * 4 / 3)) return false;
|
|
17836
|
+
const decoded = decodeBase64Url(value);
|
|
17837
|
+
if (decoded === null) return false;
|
|
17838
|
+
if (encodeBase64Url(decoded) !== value) return false;
|
|
17839
|
+
return decoded.length >= SHARE_TAG_BYTES && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES;
|
|
17840
|
+
},
|
|
17841
|
+
{
|
|
17842
|
+
message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES}..${MAX_SHARE_CIPHERTEXT_BYTES} bytes`
|
|
17843
|
+
}
|
|
17844
|
+
);
|
|
17845
|
+
var ShareEnvelopeValidator = external_exports.object({
|
|
17846
|
+
v: external_exports.literal(1),
|
|
17847
|
+
alg: external_exports.literal("A256GCM"),
|
|
17848
|
+
iv: ShareIvValidator,
|
|
17849
|
+
ct: ShareCiphertextValidator
|
|
17850
|
+
}).strict();
|
|
17851
|
+
var safeVersion = external_exports.number().int().min(1).max(2 ** 31 - 1);
|
|
17852
|
+
var safeCredentialIndex = external_exports.number().int().min(0).max(MAX_VP_MEMBERS - 1);
|
|
17853
|
+
var ShareSelectionEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex }).strict();
|
|
17854
|
+
var ShareEndorsementEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex, targetCredentialIndex: safeCredentialIndex }).strict();
|
|
17855
|
+
var ShareSharerValidator = external_exports.object({
|
|
17856
|
+
profileId: external_exports.string().min(1).max(128),
|
|
17857
|
+
displayName: external_exports.string().min(1).max(120),
|
|
17858
|
+
avatar: external_exports.string().max(2048).optional()
|
|
17859
|
+
}).strict();
|
|
17860
|
+
var presentationShape = VPValidator.extend({
|
|
17861
|
+
verifiableCredential: VCValidator.array().min(1).max(MAX_VP_MEMBERS)
|
|
17862
|
+
});
|
|
17863
|
+
var hasBoundedPresentation = /* @__PURE__ */ __name2((value) => {
|
|
17864
|
+
let credentialCount = 0;
|
|
17865
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
17866
|
+
const visit = /* @__PURE__ */ __name2((node, depth) => {
|
|
17867
|
+
if (node === null || typeof node !== "object") return true;
|
|
17868
|
+
if (depth > 32 || ancestors.has(node)) return false;
|
|
17869
|
+
ancestors.add(node);
|
|
17870
|
+
try {
|
|
17871
|
+
for (const [key, child] of Object.entries(node)) {
|
|
17872
|
+
if (key === "verifiableCredential") {
|
|
17873
|
+
credentialCount += Array.isArray(child) ? child.length : 1;
|
|
17874
|
+
if (credentialCount > MAX_VP_MEMBERS) return false;
|
|
17875
|
+
}
|
|
17876
|
+
if (!visit(child, depth + 1)) return false;
|
|
17877
|
+
}
|
|
17878
|
+
return true;
|
|
17879
|
+
} finally {
|
|
17880
|
+
ancestors.delete(node);
|
|
17881
|
+
}
|
|
17882
|
+
}, "visit");
|
|
17883
|
+
return visit(value, 0);
|
|
17884
|
+
}, "hasBoundedPresentation");
|
|
17885
|
+
var ShareManifestPresentationValidator = external_exports.custom(
|
|
17886
|
+
(value) => hasBoundedPresentation(value) && presentationShape.safeParse(value).success,
|
|
17887
|
+
{ message: "invalid share presentation" }
|
|
17888
|
+
);
|
|
17889
|
+
var SharePayloadValidatorShape = external_exports.object({
|
|
17890
|
+
protocol: external_exports.literal(SHARE_LINK_PROTOCOL),
|
|
17891
|
+
shareId: ShareLinkIdValidator,
|
|
17892
|
+
contentVersion: safeVersion,
|
|
17893
|
+
createdAt: external_exports.iso.datetime(),
|
|
17894
|
+
sharer: ShareSharerValidator,
|
|
17895
|
+
presentation: ShareManifestPresentationValidator,
|
|
17896
|
+
selection: ShareSelectionEntryValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
17897
|
+
endorsements: ShareEndorsementEntryValidator.array().max(MAX_ENDORSEMENTS).default([])
|
|
17898
|
+
}).strict();
|
|
17899
|
+
var classificationFailure = /* @__PURE__ */ __name2((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
|
|
17900
|
+
var readSignedClaimId = /* @__PURE__ */ __name2((member) => {
|
|
17901
|
+
if (member === null || typeof member !== "object") return void 0;
|
|
17902
|
+
const record2 = member;
|
|
17903
|
+
const claim = record2.credentialSubject ?? record2.endorsement;
|
|
17904
|
+
if (claim === null || typeof claim !== "object") return void 0;
|
|
17905
|
+
const claimRecord = claim;
|
|
17906
|
+
const nested = claimRecord.endorsement;
|
|
17907
|
+
const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
|
|
17908
|
+
return claimRecord.id ?? nestedId;
|
|
17909
|
+
}, "readSignedClaimId");
|
|
17910
|
+
var classifyShareManifest = /* @__PURE__ */ __name2((payload) => {
|
|
17911
|
+
const members = payload.presentation?.verifiableCredential;
|
|
17912
|
+
if (!Array.isArray(members) || members.length === 0) {
|
|
17913
|
+
return classificationFailure("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
|
|
17914
|
+
}
|
|
17915
|
+
if (members.length > MAX_VP_MEMBERS) {
|
|
17916
|
+
return classificationFailure(
|
|
17917
|
+
"TOO_MANY_VP_MEMBERS",
|
|
17918
|
+
`presentation has ${members.length} members, over the ${MAX_VP_MEMBERS} bound`
|
|
17919
|
+
);
|
|
17920
|
+
}
|
|
17921
|
+
const selection = payload.selection;
|
|
17922
|
+
const endorsements = payload.endorsements ?? [];
|
|
17923
|
+
if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS) {
|
|
17924
|
+
return classificationFailure("BAD_SELECTION", "selection must contain 1..50 entries");
|
|
17925
|
+
}
|
|
17926
|
+
if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS) {
|
|
17927
|
+
return classificationFailure(
|
|
17928
|
+
"BAD_ENDORSEMENTS",
|
|
17929
|
+
"endorsements must contain at most 200 entries"
|
|
17930
|
+
);
|
|
17931
|
+
}
|
|
17932
|
+
const selectedIndices = [];
|
|
17933
|
+
const selected = /* @__PURE__ */ new Set();
|
|
17934
|
+
for (let index = 0; index < selection.length; index += 1) {
|
|
17935
|
+
const entry = selection[index];
|
|
17936
|
+
const credentialIndex = entry?.credentialIndex;
|
|
17937
|
+
if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
|
|
17938
|
+
return classificationFailure(
|
|
17939
|
+
"SELECTION_INDEX_OUT_OF_BOUNDS",
|
|
17940
|
+
`selection[${index}].credentialIndex is out of bounds`,
|
|
17941
|
+
["selection", index, "credentialIndex"]
|
|
17942
|
+
);
|
|
17943
|
+
}
|
|
17944
|
+
if (selected.has(credentialIndex)) {
|
|
17945
|
+
return classificationFailure(
|
|
17946
|
+
"SELECTION_INDEX_DUPLICATE",
|
|
17947
|
+
`selection[${index}].credentialIndex is duplicated`,
|
|
17948
|
+
["selection", index, "credentialIndex"]
|
|
17949
|
+
);
|
|
17950
|
+
}
|
|
17951
|
+
selected.add(credentialIndex);
|
|
17952
|
+
selectedIndices.push(credentialIndex);
|
|
17953
|
+
}
|
|
17954
|
+
const classified = new Set(selected);
|
|
17955
|
+
const endorsementIndices = [];
|
|
17956
|
+
for (let index = 0; index < endorsements.length; index += 1) {
|
|
17957
|
+
const entry = endorsements[index];
|
|
17958
|
+
const credentialIndex = entry?.credentialIndex;
|
|
17959
|
+
const targetIndex = entry?.targetCredentialIndex;
|
|
17960
|
+
if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
|
|
17961
|
+
return classificationFailure(
|
|
17962
|
+
"ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
|
|
17963
|
+
`endorsements[${index}].credentialIndex is out of bounds`,
|
|
17964
|
+
["endorsements", index, "credentialIndex"]
|
|
17965
|
+
);
|
|
17966
|
+
}
|
|
17967
|
+
if (classified.has(credentialIndex)) {
|
|
17968
|
+
return classificationFailure(
|
|
17969
|
+
"VP_MEMBER_CLASSIFIED_TWICE",
|
|
17970
|
+
`endorsements[${index}].credentialIndex was already classified`,
|
|
17971
|
+
["endorsements", index, "credentialIndex"]
|
|
17972
|
+
);
|
|
17973
|
+
}
|
|
17974
|
+
if (!selected.has(targetIndex)) {
|
|
17975
|
+
return classificationFailure(
|
|
17976
|
+
"ENDORSEMENT_TARGET_NOT_SELECTED",
|
|
17977
|
+
`endorsements[${index}].targetCredentialIndex must reference a selected credential`,
|
|
17978
|
+
["endorsements", index, "targetCredentialIndex"]
|
|
17979
|
+
);
|
|
17980
|
+
}
|
|
17981
|
+
const referenced = readSignedClaimId(members[credentialIndex]);
|
|
17982
|
+
const target = members[targetIndex];
|
|
17983
|
+
const targetId = target !== null && typeof target === "object" ? target.id : void 0;
|
|
17984
|
+
if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
|
|
17985
|
+
return classificationFailure(
|
|
17986
|
+
"ENDORSEMENT_TARGET_UNBOUND",
|
|
17987
|
+
`endorsements[${index}] claim does not reference the target credential id`,
|
|
17988
|
+
["endorsements", index]
|
|
17989
|
+
);
|
|
17990
|
+
}
|
|
17991
|
+
classified.add(credentialIndex);
|
|
17992
|
+
endorsementIndices.push(credentialIndex);
|
|
17993
|
+
}
|
|
17994
|
+
if (classified.size !== members.length) {
|
|
17995
|
+
return classificationFailure(
|
|
17996
|
+
"UNCLASSIFIED_VP_MEMBER",
|
|
17997
|
+
"every presentation member must be classified exactly once",
|
|
17998
|
+
["presentation", "verifiableCredential"]
|
|
17999
|
+
);
|
|
18000
|
+
}
|
|
18001
|
+
return {
|
|
18002
|
+
ok: true,
|
|
18003
|
+
classification: { selectedIndices, endorsementIndices, memberCount: members.length }
|
|
18004
|
+
};
|
|
18005
|
+
}, "classifyShareManifest");
|
|
18006
|
+
var SharePayloadValidator = SharePayloadValidatorShape.superRefine((payload, ctx) => {
|
|
18007
|
+
const result = classifyShareManifest(payload);
|
|
18008
|
+
if (!result.ok) {
|
|
18009
|
+
ctx.addIssue({
|
|
18010
|
+
code: "custom",
|
|
18011
|
+
message: result.message,
|
|
18012
|
+
path: result.path,
|
|
18013
|
+
params: { shareLinkCode: result.code }
|
|
18014
|
+
});
|
|
18015
|
+
}
|
|
18016
|
+
});
|
|
18017
|
+
var ShareRecoverySelectionValidator = external_exports.object({
|
|
18018
|
+
ref: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS),
|
|
18019
|
+
order: external_exports.number().int().min(0).max(MAX_SELECTED_CREDENTIALS - 1)
|
|
18020
|
+
}).strict();
|
|
18021
|
+
var ShareRecoveryEndorsementValidator = external_exports.object({ targetRef: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS) }).strict();
|
|
18022
|
+
var ShareRecoveryPlaintextValidator = external_exports.object({
|
|
18023
|
+
protocol: external_exports.literal(SHARE_RECOVERY_PROTOCOL),
|
|
18024
|
+
shareId: ShareLinkIdValidator,
|
|
18025
|
+
ownerProfileId: external_exports.string().min(1).max(128),
|
|
18026
|
+
createdAt: external_exports.iso.datetime(),
|
|
18027
|
+
latest: external_exports.object({ contentVersion: safeVersion, key: ShareContentKeyValidator }).strict(),
|
|
18028
|
+
selection: ShareRecoverySelectionValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18029
|
+
endorsements: ShareRecoveryEndorsementValidator.array().max(MAX_ENDORSEMENTS).default([])
|
|
18030
|
+
}).strict().superRefine((recovery, ctx) => {
|
|
18031
|
+
const orders = /* @__PURE__ */ new Set();
|
|
18032
|
+
recovery.selection.forEach((entry, index) => {
|
|
18033
|
+
if (entry.order >= recovery.selection.length) {
|
|
18034
|
+
ctx.addIssue({
|
|
18035
|
+
code: "custom",
|
|
18036
|
+
message: "order must be within the selection bounds",
|
|
18037
|
+
path: ["selection", index, "order"]
|
|
18038
|
+
});
|
|
18039
|
+
}
|
|
18040
|
+
if (orders.has(entry.order)) {
|
|
18041
|
+
ctx.addIssue({
|
|
18042
|
+
code: "custom",
|
|
18043
|
+
message: "order must be unique within the selection",
|
|
18044
|
+
path: ["selection", index, "order"]
|
|
18045
|
+
});
|
|
18046
|
+
}
|
|
18047
|
+
orders.add(entry.order);
|
|
18048
|
+
});
|
|
18049
|
+
});
|
|
18050
|
+
var ShareOwnerRecoveryValidator = JWEValidator.refine(
|
|
18051
|
+
(value) => utf8ByteLength(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES,
|
|
18052
|
+
{ message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES} bytes` }
|
|
18053
|
+
);
|
|
18054
|
+
var ShareLinkStatusValidator = external_exports.enum(["pending", "active", "stopped"]);
|
|
18055
|
+
var ShareContentStateValidator = external_exports.enum(["staging", "finalized", "content_missing"]);
|
|
18056
|
+
var ShareLinkValidator = external_exports.object({
|
|
18057
|
+
id: ShareLinkIdValidator,
|
|
18058
|
+
title: external_exports.string().min(1).max(120),
|
|
18059
|
+
note: external_exports.string().max(500).optional(),
|
|
18060
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18061
|
+
version: safeVersion,
|
|
18062
|
+
contentVersion: safeVersion,
|
|
18063
|
+
status: ShareLinkStatusValidator,
|
|
18064
|
+
attachmentId: external_exports.string().uuid().nullable().optional(),
|
|
18065
|
+
attachmentChunkCount: external_exports.number().int().min(1).max(16).nullable().optional(),
|
|
18066
|
+
contentState: ShareContentStateValidator,
|
|
18067
|
+
createdAt: external_exports.iso.datetime(),
|
|
18068
|
+
updatedAt: external_exports.iso.datetime(),
|
|
18069
|
+
expiresAt: external_exports.iso.datetime().nullable(),
|
|
18070
|
+
stoppedAt: external_exports.iso.datetime().nullable(),
|
|
18071
|
+
lastViewedAt: external_exports.iso.datetime().nullable(),
|
|
18072
|
+
viewCount: external_exports.number().int().min(0).optional(),
|
|
18073
|
+
passcodeProtected: external_exports.boolean(),
|
|
18074
|
+
notifyOnView: external_exports.boolean(),
|
|
18075
|
+
minorPolicy: external_exports.object({
|
|
18076
|
+
isMinor: external_exports.boolean().nullable(),
|
|
18077
|
+
policyResolved: external_exports.boolean(),
|
|
18078
|
+
defaultExpiryDays: external_exports.union([external_exports.literal(30), external_exports.literal(365)]),
|
|
18079
|
+
viewCountingEnabled: external_exports.boolean()
|
|
18080
|
+
}),
|
|
18081
|
+
/**
|
|
18082
|
+
* Guarded application/API URL for the content. Optional because owner APIs in
|
|
18083
|
+
* D1 have no public resolve/content endpoint yet; it must never be a
|
|
18084
|
+
* LearnCloud object URL or carry a fabricated decryption key.
|
|
18085
|
+
*/
|
|
18086
|
+
contentUrl: external_exports.string().optional()
|
|
18087
|
+
});
|
|
18088
|
+
var clientRequestId = external_exports.string().uuid();
|
|
18089
|
+
var ShareLinkAttachmentValidator = external_exports.object({
|
|
18090
|
+
id: external_exports.string().uuid(),
|
|
18091
|
+
chunkCount: external_exports.number().int().min(1).max(16)
|
|
18092
|
+
}).strict();
|
|
18093
|
+
var attachmentChunkKey = {
|
|
18094
|
+
id: ShareLinkIdValidator,
|
|
18095
|
+
contentVersion: safeVersion,
|
|
18096
|
+
attachmentId: external_exports.string().uuid(),
|
|
18097
|
+
chunkIndex: external_exports.number().int().min(0).max(15)
|
|
18098
|
+
};
|
|
18099
|
+
var ShareLinkAttachmentChunkEnvelopeValidator = ShareEnvelopeValidator.refine(
|
|
18100
|
+
(value) => (decodedBase64UrlByteLength(value.ct) ?? Infinity) <= 256 * 1024 + SHARE_TAG_BYTES
|
|
18101
|
+
);
|
|
18102
|
+
var PutShareLinkAttachmentChunkInputValidator = external_exports.object({
|
|
18103
|
+
...attachmentChunkKey,
|
|
18104
|
+
chunkCount: external_exports.number().int().min(1).max(16),
|
|
18105
|
+
envelope: ShareLinkAttachmentChunkEnvelopeValidator,
|
|
18106
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator
|
|
18107
|
+
}).strict().refine((value) => value.chunkIndex < value.chunkCount);
|
|
18108
|
+
var GetShareLinkAttachmentChunkInputValidator = external_exports.object({
|
|
18109
|
+
...attachmentChunkKey,
|
|
18110
|
+
passcode: external_exports.string().min(4).max(64).optional(),
|
|
18111
|
+
accessToken: external_exports.string().min(1).max(2048).optional()
|
|
18112
|
+
}).strict();
|
|
18113
|
+
var ShareLinkAttachmentChunkOutputValidator = external_exports.object({
|
|
18114
|
+
...attachmentChunkKey,
|
|
18115
|
+
envelope: ShareLinkAttachmentChunkEnvelopeValidator,
|
|
18116
|
+
accessToken: external_exports.string().min(1).max(2048).optional()
|
|
18117
|
+
}).strict();
|
|
18118
|
+
var DeleteShareLinkAttachmentChunksInputValidator = external_exports.object({
|
|
18119
|
+
id: ShareLinkIdValidator,
|
|
18120
|
+
contentVersion: safeVersion,
|
|
18121
|
+
attachmentId: external_exports.string().uuid(),
|
|
18122
|
+
chunkCount: external_exports.number().int().min(1).max(16)
|
|
18123
|
+
}).strict();
|
|
18124
|
+
var PutShareLinkAttachmentChunkOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
|
|
18125
|
+
var DeleteShareLinkAttachmentChunksOutputValidator = external_exports.object({ ok: external_exports.boolean() }).strict();
|
|
18126
|
+
var CreateShareLinkInputValidator = external_exports.object({
|
|
18127
|
+
id: ShareLinkIdValidator,
|
|
18128
|
+
clientRequestId,
|
|
18129
|
+
title: external_exports.string().min(1).max(120),
|
|
18130
|
+
note: external_exports.string().max(500).optional(),
|
|
18131
|
+
expiresAt: external_exports.iso.datetime().nullable().optional(),
|
|
18132
|
+
passcode: external_exports.string().min(8).max(64).optional(),
|
|
18133
|
+
notifyOnView: external_exports.boolean().default(false),
|
|
18134
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18135
|
+
contentVersion: external_exports.literal(1),
|
|
18136
|
+
envelope: ShareEnvelopeValidator,
|
|
18137
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator,
|
|
18138
|
+
attachment: ShareLinkAttachmentValidator.optional()
|
|
18139
|
+
}).strict();
|
|
18140
|
+
var UpdateShareLinkInputValidator = external_exports.object({
|
|
18141
|
+
id: ShareLinkIdValidator,
|
|
18142
|
+
expectedVersion: safeVersion,
|
|
18143
|
+
clientRequestId,
|
|
18144
|
+
title: external_exports.string().min(1).max(120).optional(),
|
|
18145
|
+
note: external_exports.string().max(500).nullable().optional(),
|
|
18146
|
+
expiresAt: external_exports.iso.datetime().nullable().optional(),
|
|
18147
|
+
/** Omitted preserves the current passcode, null removes it, and a string replaces it. */
|
|
18148
|
+
passcode: external_exports.string().min(8).max(64).nullable().optional(),
|
|
18149
|
+
notifyOnView: external_exports.boolean().optional(),
|
|
18150
|
+
contentVersion: safeVersion.optional(),
|
|
18151
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS).optional(),
|
|
18152
|
+
envelope: ShareEnvelopeValidator.optional(),
|
|
18153
|
+
ownerEncryptedRecovery: ShareOwnerRecoveryValidator.optional(),
|
|
18154
|
+
attachment: ShareLinkAttachmentValidator.optional()
|
|
18155
|
+
}).strict().superRefine((value, ctx) => {
|
|
18156
|
+
const provided = [
|
|
18157
|
+
value.contentVersion,
|
|
18158
|
+
value.selectedCount,
|
|
18159
|
+
value.envelope,
|
|
18160
|
+
value.ownerEncryptedRecovery
|
|
18161
|
+
].filter((field) => field !== void 0).length;
|
|
18162
|
+
if (provided !== 0 && provided !== 4) {
|
|
18163
|
+
ctx.addIssue({
|
|
18164
|
+
code: "custom",
|
|
18165
|
+
message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
|
|
18166
|
+
});
|
|
18167
|
+
}
|
|
18168
|
+
if (value.attachment !== void 0 && provided !== 4) {
|
|
18169
|
+
ctx.addIssue({ code: "custom", message: "attachment requires a content replacement" });
|
|
18170
|
+
}
|
|
18171
|
+
});
|
|
18172
|
+
var ShareLinkIdInputValidator = external_exports.object({ id: ShareLinkIdValidator }).strict();
|
|
18173
|
+
var ShareLinkOperationKeyInputValidator = external_exports.object({ id: ShareLinkIdValidator, operationId: external_exports.string().uuid() }).strict();
|
|
18174
|
+
var ShareLinkOwnerCommitOutputValidator = external_exports.discriminatedUnion("status", [
|
|
18175
|
+
external_exports.object({ status: external_exports.literal("completed"), share: ShareLinkValidator }).strict(),
|
|
18176
|
+
external_exports.object({
|
|
18177
|
+
status: external_exports.literal("pending"),
|
|
18178
|
+
id: ShareLinkIdValidator,
|
|
18179
|
+
operationId: external_exports.string().uuid()
|
|
18180
|
+
}).strict()
|
|
18181
|
+
]);
|
|
18182
|
+
var ShareLinkOwnerStatusOutputValidator = external_exports.discriminatedUnion("status", [
|
|
18183
|
+
external_exports.object({ status: external_exports.literal("found"), share: ShareLinkValidator }).strict(),
|
|
18184
|
+
external_exports.object({
|
|
18185
|
+
status: external_exports.literal("pending"),
|
|
18186
|
+
id: ShareLinkIdValidator,
|
|
18187
|
+
operationId: external_exports.string().uuid()
|
|
18188
|
+
}).strict(),
|
|
18189
|
+
external_exports.object({ status: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
|
|
18190
|
+
]);
|
|
18191
|
+
var ShareLinkOwnerRecoveryOutputValidator = external_exports.object({ recovery: ShareOwnerRecoveryValidator }).strict();
|
|
18192
|
+
var ShareLinkOwnerContentOutputValidator = external_exports.object({
|
|
18193
|
+
id: ShareLinkIdValidator,
|
|
18194
|
+
contentVersion: safeVersion,
|
|
18195
|
+
envelope: ShareEnvelopeValidator
|
|
18196
|
+
}).strict();
|
|
18197
|
+
var ResolveShareLinkInputValidator = external_exports.object({
|
|
18198
|
+
id: ShareLinkIdValidator,
|
|
18199
|
+
/** Sent only in a POST body; it must never be placed in a share URL. */
|
|
18200
|
+
passcode: external_exports.string().min(4).max(64).optional()
|
|
18201
|
+
}).strict();
|
|
18202
|
+
var ShareLinkPublicStateValidator = external_exports.discriminatedUnion("state", [
|
|
18203
|
+
external_exports.object({
|
|
18204
|
+
state: external_exports.literal("passcode_required"),
|
|
18205
|
+
id: ShareLinkIdValidator
|
|
18206
|
+
}).strict(),
|
|
18207
|
+
external_exports.object({ state: external_exports.literal("try_later"), id: ShareLinkIdValidator }).strict(),
|
|
18208
|
+
external_exports.object({
|
|
18209
|
+
state: external_exports.literal("active"),
|
|
18210
|
+
id: ShareLinkIdValidator,
|
|
18211
|
+
title: external_exports.string().max(120),
|
|
18212
|
+
note: external_exports.string().max(500).optional(),
|
|
18213
|
+
selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
|
|
18214
|
+
contentVersion: safeVersion,
|
|
18215
|
+
contentUrl: external_exports.string(),
|
|
18216
|
+
sharer: external_exports.object({
|
|
18217
|
+
displayName: external_exports.string().max(120),
|
|
18218
|
+
avatar: external_exports.string().max(2048).optional()
|
|
18219
|
+
}),
|
|
18220
|
+
createdAt: external_exports.iso.datetime(),
|
|
18221
|
+
updatedAt: external_exports.iso.datetime(),
|
|
18222
|
+
expiresAt: external_exports.iso.datetime().nullable()
|
|
18223
|
+
}).strict(),
|
|
18224
|
+
external_exports.object({
|
|
18225
|
+
state: external_exports.literal("expired"),
|
|
18226
|
+
id: ShareLinkIdValidator,
|
|
18227
|
+
expiresAt: external_exports.iso.datetime()
|
|
18228
|
+
}).strict(),
|
|
18229
|
+
external_exports.object({
|
|
18230
|
+
state: external_exports.literal("stopped"),
|
|
18231
|
+
id: ShareLinkIdValidator,
|
|
18232
|
+
stoppedAt: external_exports.iso.datetime()
|
|
18233
|
+
}).strict(),
|
|
18234
|
+
external_exports.object({ state: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
|
|
18235
|
+
]);
|
|
18236
|
+
var ListShareLinksInputValidator = external_exports.object({
|
|
18237
|
+
limit: external_exports.number().int().min(1).max(50).default(25),
|
|
18238
|
+
cursor: external_exports.string().max(512).optional()
|
|
18239
|
+
}).strict();
|
|
18240
|
+
var PaginatedShareLinksValidator = PaginationResponseValidator.extend({
|
|
18241
|
+
records: ShareLinkValidator.array()
|
|
18242
|
+
});
|
|
18243
|
+
var AcknowledgeViewInputValidator = external_exports.object({
|
|
18244
|
+
receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
|
|
18245
|
+
}).strict();
|
|
18246
|
+
var AcknowledgeViewOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
|
|
18247
|
+
var SHARE_VIEW_RECEIPT_TTL_SECONDS = 10 * 60;
|
|
18248
|
+
var ShareLinkPublicContentViewValidator = external_exports.object({
|
|
18249
|
+
id: ShareLinkIdValidator,
|
|
18250
|
+
contentVersion: safeVersion,
|
|
18251
|
+
envelope: ShareEnvelopeValidator,
|
|
18252
|
+
contentUrl: external_exports.string(),
|
|
18253
|
+
receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
|
|
18254
|
+
}).strict();
|
|
17498
18255
|
|
|
17499
18256
|
// src/plugin.ts
|
|
17500
18257
|
import {
|
|
@@ -17502,6 +18259,7 @@ import {
|
|
|
17502
18259
|
getCredentialStatusArray,
|
|
17503
18260
|
injectManagedRefreshService as injectSharedManagedRefreshService,
|
|
17504
18261
|
isVC2Format,
|
|
18262
|
+
isEncrypted,
|
|
17505
18263
|
resolveStorageReadResult
|
|
17506
18264
|
} from "@learncard/helpers";
|
|
17507
18265
|
|
|
@@ -18152,6 +18910,7 @@ var isActAsDenial = /* @__PURE__ */ __name((error51) => {
|
|
|
18152
18910
|
}
|
|
18153
18911
|
return false;
|
|
18154
18912
|
}, "isActAsDenial");
|
|
18913
|
+
var getInboxFailureReason = /* @__PURE__ */ __name((reason) => reason instanceof Error ? `${reason.name}: ${reason.message}` : String(reason), "getInboxFailureReason");
|
|
18155
18914
|
async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, options) {
|
|
18156
18915
|
const apiToken = typeof apiTokenOrOptions === "string" ? apiTokenOrOptions : void 0;
|
|
18157
18916
|
const resolvedOptions = (typeof apiTokenOrOptions === "object" ? apiTokenOrOptions : options) ?? {};
|
|
@@ -18564,6 +19323,58 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18564
19323
|
await ensureUser();
|
|
18565
19324
|
return client.profile.invalidateInvite.mutate({ challenge });
|
|
18566
19325
|
}, "invalidateInvite"),
|
|
19326
|
+
createShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19327
|
+
await ensureUser();
|
|
19328
|
+
return client.shareLinks.create.mutate(input);
|
|
19329
|
+
}, "createShareLink"),
|
|
19330
|
+
putShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19331
|
+
await ensureUser();
|
|
19332
|
+
return client.shareLinks.putAttachmentChunk.mutate(input);
|
|
19333
|
+
}, "putShareLinkAttachmentChunk"),
|
|
19334
|
+
deleteShareLinkAttachmentChunks: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19335
|
+
await ensureUser();
|
|
19336
|
+
return client.shareLinks.deleteAttachmentChunks.mutate(input);
|
|
19337
|
+
}, "deleteShareLinkAttachmentChunks"),
|
|
19338
|
+
getShareLinkAttachmentChunk: /* @__PURE__ */ __name(async (_learnCard, input) => client.publicShareLinks.attachmentChunk.mutate(input), "getShareLinkAttachmentChunk"),
|
|
19339
|
+
updateShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19340
|
+
await ensureUser();
|
|
19341
|
+
return client.shareLinks.update.mutate(input);
|
|
19342
|
+
}, "updateShareLink"),
|
|
19343
|
+
revokeShareLink: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19344
|
+
await ensureUser();
|
|
19345
|
+
return client.shareLinks.revoke.mutate(input);
|
|
19346
|
+
}, "revokeShareLink"),
|
|
19347
|
+
getShareLink: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19348
|
+
await ensureUser();
|
|
19349
|
+
return client.shareLinks.get.query({ id });
|
|
19350
|
+
}, "getShareLink"),
|
|
19351
|
+
getShareLinkOperationStatus: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19352
|
+
await ensureUser();
|
|
19353
|
+
return client.shareLinks.getOperationStatus.query(input);
|
|
19354
|
+
}, "getShareLinkOperationStatus"),
|
|
19355
|
+
retryShareLinkOperation: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19356
|
+
await ensureUser();
|
|
19357
|
+
return client.shareLinks.retry.mutate(input);
|
|
19358
|
+
}, "retryShareLinkOperation"),
|
|
19359
|
+
getShareLinkRecovery: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19360
|
+
await ensureUser();
|
|
19361
|
+
return client.shareLinks.getRecovery.query({ id });
|
|
19362
|
+
}, "getShareLinkRecovery"),
|
|
19363
|
+
getShareLinkOwnerContent: /* @__PURE__ */ __name(async (_learnCard, id) => {
|
|
19364
|
+
await ensureUser();
|
|
19365
|
+
return client.shareLinks.getContent.query({ id });
|
|
19366
|
+
}, "getShareLinkOwnerContent"),
|
|
19367
|
+
listShareLinks: /* @__PURE__ */ __name(async (_learnCard, input) => {
|
|
19368
|
+
await ensureUser();
|
|
19369
|
+
return client.shareLinks.list.query(input);
|
|
19370
|
+
}, "listShareLinks"),
|
|
19371
|
+
// Anonymous public methods: deliberately NO `ensureUser()`. A viewer
|
|
19372
|
+
// has no account and must not need one.
|
|
19373
|
+
// POST keeps an optional passcode in the request body and out of URLs,
|
|
19374
|
+
// access logs, browser history and referrers.
|
|
19375
|
+
resolveShareLink: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.resolve.mutate({ id, passcode }), "resolveShareLink"),
|
|
19376
|
+
getShareLinkContent: /* @__PURE__ */ __name(async (_learnCard, id, passcode) => client.publicShareLinks.content.mutate({ id, passcode }), "getShareLinkContent"),
|
|
19377
|
+
acknowledgeShareLinkView: /* @__PURE__ */ __name(async (_learnCard, receipt) => client.publicShareLinks.acknowledgeView.mutate({ receipt }), "acknowledgeShareLinkView"),
|
|
18567
19378
|
blockProfile: /* @__PURE__ */ __name(async (_learnCard, profileId) => {
|
|
18568
19379
|
await ensureUser();
|
|
18569
19380
|
return client.profile.blockProfile.mutate({ profileId });
|
|
@@ -18678,12 +19489,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18678
19489
|
await ensureUser();
|
|
18679
19490
|
return client.credential.deleteCredential.mutate({ uri });
|
|
18680
19491
|
}, "deleteCredential"),
|
|
18681
|
-
sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, encrypt
|
|
19492
|
+
sendPresentation: /* @__PURE__ */ __name(async (_learnCard, profileId, vp, metadataOrEncrypt, encrypt) => {
|
|
18682
19493
|
await ensureUser();
|
|
18683
|
-
|
|
19494
|
+
const metadata = typeof metadataOrEncrypt === "object" ? metadataOrEncrypt : void 0;
|
|
19495
|
+
const shouldEncrypt = typeof metadataOrEncrypt === "boolean" ? metadataOrEncrypt : encrypt ?? true;
|
|
19496
|
+
if (!shouldEncrypt) {
|
|
18684
19497
|
return client.presentation.sendPresentation.mutate({
|
|
18685
19498
|
profileId,
|
|
18686
|
-
presentation: vp
|
|
19499
|
+
presentation: vp,
|
|
19500
|
+
metadata
|
|
18687
19501
|
});
|
|
18688
19502
|
}
|
|
18689
19503
|
const target = await _learnCard.invoke.getProfile(profileId);
|
|
@@ -18693,7 +19507,11 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
18693
19507
|
_learnCard.id.did(),
|
|
18694
19508
|
target.did
|
|
18695
19509
|
]);
|
|
18696
|
-
return client.presentation.sendPresentation.mutate({
|
|
19510
|
+
return client.presentation.sendPresentation.mutate({
|
|
19511
|
+
profileId,
|
|
19512
|
+
presentation,
|
|
19513
|
+
metadata
|
|
19514
|
+
});
|
|
18697
19515
|
}, "sendPresentation"),
|
|
18698
19516
|
acceptPresentation: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
18699
19517
|
await ensureUser();
|
|
@@ -19373,6 +20191,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19373
20191
|
boostUris
|
|
19374
20192
|
});
|
|
19375
20193
|
}, "removeAutoBoostsFromContract"),
|
|
20194
|
+
addContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
|
|
20195
|
+
await ensureUser();
|
|
20196
|
+
return client.contracts.addContractRecipient.mutate({ contractUri, recipient });
|
|
20197
|
+
}, "addContractRecipient"),
|
|
20198
|
+
removeContractRecipient: /* @__PURE__ */ __name(async (_learnCard, contractUri, recipient) => {
|
|
20199
|
+
await ensureUser();
|
|
20200
|
+
return client.contracts.removeContractRecipient.mutate({ contractUri, recipient });
|
|
20201
|
+
}, "removeContractRecipient"),
|
|
19376
20202
|
getContract: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
19377
20203
|
return client.contracts.getConsentFlowContract.query({ uri });
|
|
19378
20204
|
}, "getContract"),
|
|
@@ -19405,13 +20231,15 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19405
20231
|
boostUri
|
|
19406
20232
|
});
|
|
19407
20233
|
}, "writeCredentialToContract"),
|
|
19408
|
-
consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime }, recipientToken) => {
|
|
20234
|
+
consentToContract: /* @__PURE__ */ __name(async (_learnCard, contractUri, { terms, expiresAt, oneTime, audienceVersion, expectedRequestId }, recipientToken) => {
|
|
19409
20235
|
await ensureUser();
|
|
19410
20236
|
return client.contracts.consentToContract.mutate({
|
|
19411
20237
|
contractUri,
|
|
19412
20238
|
terms,
|
|
19413
20239
|
expiresAt,
|
|
19414
20240
|
oneTime,
|
|
20241
|
+
audienceVersion,
|
|
20242
|
+
expectedRequestId,
|
|
19415
20243
|
recipientToken
|
|
19416
20244
|
// for SmartResume
|
|
19417
20245
|
});
|
|
@@ -19420,13 +20248,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19420
20248
|
await ensureUser();
|
|
19421
20249
|
return client.contracts.getConsentedContracts.query(options2);
|
|
19422
20250
|
}, "getConsentedContracts"),
|
|
19423
|
-
updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime }) => {
|
|
20251
|
+
updateContractTerms: /* @__PURE__ */ __name(async (_learnCard, uri, { terms, expiresAt, oneTime, audienceVersion }) => {
|
|
19424
20252
|
await ensureUser();
|
|
19425
20253
|
return client.contracts.updateConsentedContractTerms.mutate({
|
|
19426
20254
|
uri,
|
|
19427
20255
|
terms,
|
|
19428
20256
|
expiresAt,
|
|
19429
|
-
oneTime
|
|
20257
|
+
oneTime,
|
|
20258
|
+
audienceVersion
|
|
19430
20259
|
});
|
|
19431
20260
|
}, "updateContractTerms"),
|
|
19432
20261
|
withdrawConsent: /* @__PURE__ */ __name(async (_learnCard, uri) => {
|
|
@@ -19453,11 +20282,12 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19453
20282
|
await ensureUser();
|
|
19454
20283
|
return client.contracts.verifyConsent.query({ uri, profileId });
|
|
19455
20284
|
}, "verifyConsent"),
|
|
19456
|
-
syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories) => {
|
|
20285
|
+
syncCredentialsToContract: /* @__PURE__ */ __name(async (_learnCard, termsUri, categories, audienceVersion) => {
|
|
19457
20286
|
await ensureUser();
|
|
19458
20287
|
return client.contracts.syncCredentialsToContract.mutate({
|
|
19459
20288
|
termsUri,
|
|
19460
|
-
categories
|
|
20289
|
+
categories,
|
|
20290
|
+
audienceVersion
|
|
19461
20291
|
});
|
|
19462
20292
|
}, "syncCredentialsToContract"),
|
|
19463
20293
|
deleteCredentialFromAllContracts: /* @__PURE__ */ __name(async (_learnCard, deletedUris) => {
|
|
@@ -19466,6 +20296,14 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19466
20296
|
deletedUris
|
|
19467
20297
|
});
|
|
19468
20298
|
}, "deleteCredentialFromAllContracts"),
|
|
20299
|
+
sendContractRequest: /* @__PURE__ */ __name(async (_learnCard, request) => {
|
|
20300
|
+
await ensureUser();
|
|
20301
|
+
return client.contracts.sendContractRequest.mutate(request);
|
|
20302
|
+
}, "sendContractRequest"),
|
|
20303
|
+
denyContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri) => {
|
|
20304
|
+
await ensureUser();
|
|
20305
|
+
return client.contracts.denyContractRequest.mutate({ contractUri });
|
|
20306
|
+
}, "denyContractRequest"),
|
|
19469
20307
|
sendAiInsightsContractRequest: /* @__PURE__ */ __name(async (_learnCard, contractUri, targetProfileId, shareLink) => {
|
|
19470
20308
|
await ensureUser();
|
|
19471
20309
|
return client.contracts.sendAiInsightsContractRequest.mutate({
|
|
@@ -19651,9 +20489,32 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19651
20489
|
await ensureUser();
|
|
19652
20490
|
return client.inbox.getInboxCredential.query({ credentialId: id });
|
|
19653
20491
|
}, "getInboxCredential"),
|
|
19654
|
-
finalizeInboxCredentials: /* @__PURE__ */ __name(async (
|
|
20492
|
+
finalizeInboxCredentials: /* @__PURE__ */ __name(async (learnCard2) => {
|
|
19655
20493
|
await ensureUser();
|
|
19656
|
-
|
|
20494
|
+
const result = await client.inbox.finalize.mutate();
|
|
20495
|
+
const results = await Promise.allSettled(
|
|
20496
|
+
result.deliveries.map(async (delivery) => ({
|
|
20497
|
+
...delivery,
|
|
20498
|
+
credential: VCValidator.parse(
|
|
20499
|
+
isEncrypted(delivery.credential) ? await learnCard2.invoke.decryptDagJwe(delivery.credential, [
|
|
20500
|
+
learnCard2.id.keypair()
|
|
20501
|
+
]) : delivery.credential
|
|
20502
|
+
)
|
|
20503
|
+
}))
|
|
20504
|
+
);
|
|
20505
|
+
const deliveries = results.flatMap((delivery, index) => {
|
|
20506
|
+
if (delivery.status === "fulfilled") return [delivery.value];
|
|
20507
|
+
console.warn(
|
|
20508
|
+
`Failed to finalize inbox delivery ${result.deliveries[index].id}: ${getInboxFailureReason(delivery.reason)}`
|
|
20509
|
+
);
|
|
20510
|
+
return [];
|
|
20511
|
+
});
|
|
20512
|
+
return {
|
|
20513
|
+
...result,
|
|
20514
|
+
deliveries,
|
|
20515
|
+
verifiableCredentials: deliveries.map((delivery) => delivery.credential),
|
|
20516
|
+
errors: result.errors + results.length - deliveries.length
|
|
20517
|
+
};
|
|
19657
20518
|
}, "finalizeInboxCredentials"),
|
|
19658
20519
|
recoverInboxCredentials: /* @__PURE__ */ __name(async (learnCard2, options2 = {}) => {
|
|
19659
20520
|
const result = await client.inbox.getMyInboxDeliveries.query(options2);
|
|
@@ -19667,9 +20528,13 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19667
20528
|
)
|
|
19668
20529
|
}))
|
|
19669
20530
|
);
|
|
19670
|
-
const records = results.flatMap(
|
|
19671
|
-
(record2
|
|
19672
|
-
|
|
20531
|
+
const records = results.flatMap((record2, index) => {
|
|
20532
|
+
if (record2.status === "fulfilled") return [record2.value];
|
|
20533
|
+
console.warn(
|
|
20534
|
+
`Failed to recover inbox delivery ${result.records[index].id}: ${getInboxFailureReason(record2.reason)}`
|
|
20535
|
+
);
|
|
20536
|
+
return [];
|
|
20537
|
+
});
|
|
19673
20538
|
return { ...result, records, failed: results.length - records.length };
|
|
19674
20539
|
}, "recoverInboxCredentials"),
|
|
19675
20540
|
sendGuardianApprovalEmail: /* @__PURE__ */ __name(async (_learnCard, options2) => {
|
|
@@ -19936,6 +20801,18 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19936
20801
|
await ensureUser();
|
|
19937
20802
|
return client.appStore.unsubmitForReview.mutate({ listingId });
|
|
19938
20803
|
}, "unsubmitAppStoreListing"),
|
|
20804
|
+
submitAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20805
|
+
await ensureUser();
|
|
20806
|
+
return client.appStore.submitListingUpdate.mutate({ listingId });
|
|
20807
|
+
}, "submitAppStoreListingUpdate"),
|
|
20808
|
+
withdrawAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20809
|
+
await ensureUser();
|
|
20810
|
+
return client.appStore.withdrawListingUpdate.mutate({ listingId });
|
|
20811
|
+
}, "withdrawAppStoreListingUpdate"),
|
|
20812
|
+
discardAppStoreListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId) => {
|
|
20813
|
+
await ensureUser();
|
|
20814
|
+
return client.appStore.discardListingUpdate.mutate({ listingId });
|
|
20815
|
+
}, "discardAppStoreListingUpdate"),
|
|
19939
20816
|
getListingsForIntegration: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2 = {}) => {
|
|
19940
20817
|
await ensureUser();
|
|
19941
20818
|
return client.appStore.getListingsForIntegration.query({
|
|
@@ -19947,6 +20824,34 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
19947
20824
|
await ensureUser();
|
|
19948
20825
|
return client.appStore.countListingsForIntegration.query({ integrationId });
|
|
19949
20826
|
}, "countListingsForIntegration"),
|
|
20827
|
+
submitAppManifest: /* @__PURE__ */ __name(async (_learnCard, integrationId, manifest) => {
|
|
20828
|
+
await ensureUser();
|
|
20829
|
+
return client.appStore.submitAppManifest.mutate({ integrationId, manifest });
|
|
20830
|
+
}, "submitAppManifest"),
|
|
20831
|
+
getManifestVersions: /* @__PURE__ */ __name(async (_learnCard, integrationId, options2) => {
|
|
20832
|
+
await ensureUser();
|
|
20833
|
+
return client.appStore.getManifestVersions.query({ integrationId, ...options2 });
|
|
20834
|
+
}, "getManifestVersions"),
|
|
20835
|
+
getManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2) => {
|
|
20836
|
+
await ensureUser();
|
|
20837
|
+
return client.appStore.getManifestVersion.query({ integrationId, version: version2 });
|
|
20838
|
+
}, "getManifestVersion"),
|
|
20839
|
+
getManifestDiff: /* @__PURE__ */ __name(async (_learnCard, integrationId, toVersion, fromVersion) => {
|
|
20840
|
+
await ensureUser();
|
|
20841
|
+
return client.appStore.getManifestDiff.query({
|
|
20842
|
+
integrationId,
|
|
20843
|
+
toVersion,
|
|
20844
|
+
fromVersion
|
|
20845
|
+
});
|
|
20846
|
+
}, "getManifestDiff"),
|
|
20847
|
+
applyManifestVersion: /* @__PURE__ */ __name(async (_learnCard, integrationId, version2, listingId) => {
|
|
20848
|
+
await ensureUser();
|
|
20849
|
+
return client.appStore.applyManifestVersion.mutate({
|
|
20850
|
+
integrationId,
|
|
20851
|
+
version: version2,
|
|
20852
|
+
listingId
|
|
20853
|
+
});
|
|
20854
|
+
}, "applyManifestVersion"),
|
|
19950
20855
|
browseAppStore: /* @__PURE__ */ __name(async (_learnCard, options2) => {
|
|
19951
20856
|
return client.appStore.browseListedApps.query(options2);
|
|
19952
20857
|
}, "browseAppStore"),
|
|
@@ -20002,6 +20907,10 @@ async function getLearnCardNetworkPlugin(learnCard, url2, apiTokenOrOptions, opt
|
|
|
20002
20907
|
await ensureUser();
|
|
20003
20908
|
return client.appStore.adminGetAllListings.query(options2);
|
|
20004
20909
|
}, "adminGetAllListings"),
|
|
20910
|
+
adminReviewListingUpdate: /* @__PURE__ */ __name(async (_learnCard, listingId, approve) => {
|
|
20911
|
+
await ensureUser();
|
|
20912
|
+
return client.appStore.adminReviewListingUpdate.mutate({ listingId, approve });
|
|
20913
|
+
}, "adminReviewListingUpdate"),
|
|
20005
20914
|
// App Store Boost Management
|
|
20006
20915
|
addBoostToApp: /* @__PURE__ */ __name(async (_learnCard, listingId, boostUri, templateAlias) => {
|
|
20007
20916
|
await ensureUser();
|