@learncard/render-method-plugin 8.0.0 → 9.0.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.
@@ -1365,10 +1365,10 @@ function $constructor(name, initializer3, params) {
1365
1365
  let Definition = _Definition;
1366
1366
  Object.defineProperty(Definition, "name", { value: name });
1367
1367
  function _(def) {
1368
- var _a6;
1368
+ var _a7;
1369
1369
  const inst = params?.Parent ? new Definition() : this;
1370
1370
  init(inst, def);
1371
- (_a6 = inst._zod).deferred ?? (_a6.deferred = []);
1371
+ (_a7 = inst._zod).deferred ?? (_a7.deferred = []);
1372
1372
  for (const fn of inst._zod.deferred) {
1373
1373
  fn();
1374
1374
  }
@@ -2034,8 +2034,8 @@ function explicitlyAborted(x, startIndex = 0) {
2034
2034
  __name(explicitlyAborted, "explicitlyAborted");
2035
2035
  function prefixIssues(path, issues) {
2036
2036
  return issues.map((iss) => {
2037
- var _a6;
2038
- (_a6 = iss).path ?? (_a6.path = []);
2037
+ var _a7;
2038
+ (_a7 = iss).path ?? (_a7.path = []);
2039
2039
  iss.path.unshift(path);
2040
2040
  return iss;
2041
2041
  });
@@ -2238,7 +2238,7 @@ __name(formatError, "formatError");
2238
2238
  function treeifyError(error51, mapper = (issue2) => issue2.message) {
2239
2239
  const result = { errors: [] };
2240
2240
  const processError = /* @__PURE__ */ __name((error52, path = []) => {
2241
- var _a6, _b;
2241
+ var _a7, _b;
2242
2242
  for (const issue2 of error52.issues) {
2243
2243
  if (issue2.code === "invalid_union" && issue2.errors.length) {
2244
2244
  issue2.errors.map((issues) => processError({ issues }, [...path, ...issue2.path]));
@@ -2259,7 +2259,7 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
2259
2259
  const terminal = i === fullpath.length - 1;
2260
2260
  if (typeof el === "string") {
2261
2261
  curr.properties ?? (curr.properties = {});
2262
- (_a6 = curr.properties)[el] ?? (_a6[el] = { errors: [] });
2262
+ (_a7 = curr.properties)[el] ?? (_a7[el] = { errors: [] });
2263
2263
  curr = curr.properties[el];
2264
2264
  } else {
2265
2265
  curr.items ?? (curr.items = []);
@@ -2564,10 +2564,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
2564
2564
 
2565
2565
  // ../../../node_modules/zod/v4/core/checks.js
2566
2566
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2567
- var _a6;
2567
+ var _a7;
2568
2568
  inst._zod ?? (inst._zod = {});
2569
2569
  inst._zod.def = def;
2570
- (_a6 = inst._zod).onattach ?? (_a6.onattach = []);
2570
+ (_a7 = inst._zod).onattach ?? (_a7.onattach = []);
2571
2571
  });
2572
2572
  var numericOriginMap = {
2573
2573
  number: "number",
@@ -2633,8 +2633,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
2633
2633
  var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
2634
2634
  $ZodCheck.init(inst, def);
2635
2635
  inst._zod.onattach.push((inst2) => {
2636
- var _a6;
2637
- (_a6 = inst2._zod.bag).multipleOf ?? (_a6.multipleOf = def.value);
2636
+ var _a7;
2637
+ (_a7 = inst2._zod.bag).multipleOf ?? (_a7.multipleOf = def.value);
2638
2638
  });
2639
2639
  inst._zod.check = (payload) => {
2640
2640
  if (typeof payload.value !== typeof def.value)
@@ -2767,9 +2767,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
2767
2767
  };
2768
2768
  });
2769
2769
  var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
2770
- var _a6;
2770
+ var _a7;
2771
2771
  $ZodCheck.init(inst, def);
2772
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2772
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2773
2773
  const val = payload.value;
2774
2774
  return !nullish(val) && val.size !== void 0;
2775
2775
  });
@@ -2795,9 +2795,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
2795
2795
  };
2796
2796
  });
2797
2797
  var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
2798
- var _a6;
2798
+ var _a7;
2799
2799
  $ZodCheck.init(inst, def);
2800
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2800
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2801
2801
  const val = payload.value;
2802
2802
  return !nullish(val) && val.size !== void 0;
2803
2803
  });
@@ -2823,9 +2823,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
2823
2823
  };
2824
2824
  });
2825
2825
  var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
2826
- var _a6;
2826
+ var _a7;
2827
2827
  $ZodCheck.init(inst, def);
2828
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2828
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2829
2829
  const val = payload.value;
2830
2830
  return !nullish(val) && val.size !== void 0;
2831
2831
  });
@@ -2853,9 +2853,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
2853
2853
  };
2854
2854
  });
2855
2855
  var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
2856
- var _a6;
2856
+ var _a7;
2857
2857
  $ZodCheck.init(inst, def);
2858
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2858
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2859
2859
  const val = payload.value;
2860
2860
  return !nullish(val) && val.length !== void 0;
2861
2861
  });
@@ -2882,9 +2882,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
2882
2882
  };
2883
2883
  });
2884
2884
  var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
2885
- var _a6;
2885
+ var _a7;
2886
2886
  $ZodCheck.init(inst, def);
2887
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2887
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2888
2888
  const val = payload.value;
2889
2889
  return !nullish(val) && val.length !== void 0;
2890
2890
  });
@@ -2911,9 +2911,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
2911
2911
  };
2912
2912
  });
2913
2913
  var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
2914
- var _a6;
2914
+ var _a7;
2915
2915
  $ZodCheck.init(inst, def);
2916
- (_a6 = inst._zod.def).when ?? (_a6.when = (payload) => {
2916
+ (_a7 = inst._zod.def).when ?? (_a7.when = (payload) => {
2917
2917
  const val = payload.value;
2918
2918
  return !nullish(val) && val.length !== void 0;
2919
2919
  });
@@ -2942,7 +2942,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
2942
2942
  };
2943
2943
  });
2944
2944
  var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
2945
- var _a6, _b;
2945
+ var _a7, _b;
2946
2946
  $ZodCheck.init(inst, def);
2947
2947
  inst._zod.onattach.push((inst2) => {
2948
2948
  const bag = inst2._zod.bag;
@@ -2953,7 +2953,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
2953
2953
  }
2954
2954
  });
2955
2955
  if (def.pattern)
2956
- (_a6 = inst._zod).check ?? (_a6.check = (payload) => {
2956
+ (_a7 = inst._zod).check ?? (_a7.check = (payload) => {
2957
2957
  def.pattern.lastIndex = 0;
2958
2958
  if (def.pattern.test(payload.value))
2959
2959
  return;
@@ -3158,7 +3158,7 @@ var version = {
3158
3158
 
3159
3159
  // ../../../node_modules/zod/v4/core/schemas.js
3160
3160
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3161
- var _a6;
3161
+ var _a7;
3162
3162
  inst ?? (inst = {});
3163
3163
  inst._zod.def = def;
3164
3164
  inst._zod.bag = inst._zod.bag || {};
@@ -3173,7 +3173,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3173
3173
  }
3174
3174
  }
3175
3175
  if (checks.length === 0) {
3176
- (_a6 = inst._zod).deferred ?? (_a6.deferred = []);
3176
+ (_a7 = inst._zod).deferred ?? (_a7.deferred = []);
3177
3177
  inst._zod.deferred?.push(() => {
3178
3178
  inst._zod.run = inst._zod.parse;
3179
3179
  });
@@ -12564,7 +12564,7 @@ function initializeContext(params) {
12564
12564
  }
12565
12565
  __name(initializeContext, "initializeContext");
12566
12566
  function process2(schema, ctx, _params = { path: [], schemaPath: [] }) {
12567
- var _a6;
12567
+ var _a7;
12568
12568
  const def = schema._zod.def;
12569
12569
  const seen = ctx.seen.get(schema);
12570
12570
  if (seen) {
@@ -12612,7 +12612,7 @@ function process2(schema, ctx, _params = { path: [], schemaPath: [] }) {
12612
12612
  delete result.schema.default;
12613
12613
  }
12614
12614
  if (ctx.io === "input" && "_prefault" in result.schema)
12615
- (_a6 = result.schema).default ?? (_a6.default = result.schema._prefault);
12615
+ (_a7 = result.schema).default ?? (_a7.default = result.schema._prefault);
12616
12616
  delete result.schema._prefault;
12617
12617
  const _result = ctx.seen.get(schema);
12618
12618
  return _result.schema;
@@ -15961,7 +15961,7 @@ var __toESM = /* @__PURE__ */ __name((mod, isNodeMode, target) => (target = mod
15961
15961
  var require_types_cjs_development = __commonJS({
15962
15962
  "../learn-card-types/dist/types.cjs.development.cjs"(exports, module2) {
15963
15963
  "use strict";
15964
- var _a7, _b, _c, _d, _e, _f, _g;
15964
+ var _a8, _b, _c, _d, _e, _f, _g;
15965
15965
  var __defProp22 = Object.defineProperty;
15966
15966
  var __getOwnPropDesc22 = Object.getOwnPropertyDescriptor;
15967
15967
  var __getOwnPropNames22 = Object.getOwnPropertyNames;
@@ -15989,6 +15989,8 @@ var require_types_cjs_development = __commonJS({
15989
15989
  AchievementSubjectValidator: /* @__PURE__ */ __name2(() => AchievementSubjectValidator2, "AchievementSubjectValidator"),
15990
15990
  AchievementTypeValidator: /* @__PURE__ */ __name2(() => AchievementTypeValidator2, "AchievementTypeValidator"),
15991
15991
  AchievementValidator: /* @__PURE__ */ __name2(() => AchievementValidator2, "AchievementValidator"),
15992
+ AcknowledgeViewInputValidator: /* @__PURE__ */ __name2(() => AcknowledgeViewInputValidator2, "AcknowledgeViewInputValidator"),
15993
+ AcknowledgeViewOutputValidator: /* @__PURE__ */ __name2(() => AcknowledgeViewOutputValidator2, "AcknowledgeViewOutputValidator"),
15992
15994
  AddTagInputValidator: /* @__PURE__ */ __name2(() => AddTagInputValidator2, "AddTagInputValidator"),
15993
15995
  AddressValidator: /* @__PURE__ */ __name2(() => AddressValidator2, "AddressValidator"),
15994
15996
  AgeRatingValidator: /* @__PURE__ */ __name2(() => AgeRatingValidator2, "AgeRatingValidator"),
@@ -16066,6 +16068,7 @@ var require_types_cjs_development = __commonJS({
16066
16068
  CreateContactMethodSessionValidator: /* @__PURE__ */ __name2(() => CreateContactMethodSessionValidator2, "CreateContactMethodSessionValidator"),
16067
16069
  CreateManagedFrameworkBatchInputValidator: /* @__PURE__ */ __name2(() => CreateManagedFrameworkBatchInputValidator2, "CreateManagedFrameworkBatchInputValidator"),
16068
16070
  CreateManagedFrameworkInputValidator: /* @__PURE__ */ __name2(() => CreateManagedFrameworkInputValidator2, "CreateManagedFrameworkInputValidator"),
16071
+ CreateShareLinkInputValidator: /* @__PURE__ */ __name2(() => CreateShareLinkInputValidator2, "CreateShareLinkInputValidator"),
16069
16072
  CreateSkillInputValidator: /* @__PURE__ */ __name2(() => CreateSkillInputValidator2, "CreateSkillInputValidator"),
16070
16073
  CreateSkillsBatchInputValidator: /* @__PURE__ */ __name2(() => CreateSkillsBatchInputValidator2, "CreateSkillsBatchInputValidator"),
16071
16074
  CredentialActivityEventTypeValidator: /* @__PURE__ */ __name2(() => CredentialActivityEventTypeValidator2, "CredentialActivityEventTypeValidator"),
@@ -16097,10 +16100,14 @@ var require_types_cjs_development = __commonJS({
16097
16100
  DeleteSkillInputValidator: /* @__PURE__ */ __name2(() => DeleteSkillInputValidator2, "DeleteSkillInputValidator"),
16098
16101
  DidDocumentValidator: /* @__PURE__ */ __name2(() => DidDocumentValidator2, "DidDocumentValidator"),
16099
16102
  EMPTY_IN_APP_MESSAGES_FLAG: /* @__PURE__ */ __name2(() => EMPTY_IN_APP_MESSAGES_FLAG, "EMPTY_IN_APP_MESSAGES_FLAG"),
16103
+ ESCROW_PIN_LOCKED_MESSAGE: /* @__PURE__ */ __name2(() => ESCROW_PIN_LOCKED_MESSAGE, "ESCROW_PIN_LOCKED_MESSAGE"),
16104
+ ESCROW_PIN_MISMATCH_PATTERN: /* @__PURE__ */ __name2(() => ESCROW_PIN_MISMATCH_PATTERN, "ESCROW_PIN_MISMATCH_PATTERN"),
16105
+ ESCROW_PIN_UNAVAILABLE_MESSAGE: /* @__PURE__ */ __name2(() => ESCROW_PIN_UNAVAILABLE_MESSAGE, "ESCROW_PIN_UNAVAILABLE_MESSAGE"),
16100
16106
  EncryptedCredentialRecordValidator: /* @__PURE__ */ __name2(() => EncryptedCredentialRecordValidator2, "EncryptedCredentialRecordValidator"),
16101
16107
  EncryptedRecordValidator: /* @__PURE__ */ __name2(() => EncryptedRecordValidator2, "EncryptedRecordValidator"),
16102
16108
  EndorsementCredentialValidator: /* @__PURE__ */ __name2(() => EndorsementCredentialValidator2, "EndorsementCredentialValidator"),
16103
16109
  EndorsementSubjectValidator: /* @__PURE__ */ __name2(() => EndorsementSubjectValidator2, "EndorsementSubjectValidator"),
16110
+ EscrowPinStatusValidator: /* @__PURE__ */ __name2(() => EscrowPinStatusValidator2, "EscrowPinStatusValidator"),
16104
16111
  EvidenceValidator: /* @__PURE__ */ __name2(() => EvidenceValidator2, "EvidenceValidator"),
16105
16112
  FlatAuthGrantValidator: /* @__PURE__ */ __name2(() => FlatAuthGrantValidator2, "FlatAuthGrantValidator"),
16106
16113
  FrameworkWithSkillsValidator: /* @__PURE__ */ __name2(() => FrameworkWithSkillsValidator2, "FrameworkWithSkillsValidator"),
@@ -16182,6 +16189,14 @@ var require_types_cjs_development = __commonJS({
16182
16189
  LaunchTypeValidator: /* @__PURE__ */ __name2(() => LaunchTypeValidator2, "LaunchTypeValidator"),
16183
16190
  LearnCardRefreshAuthorizationValidator: /* @__PURE__ */ __name2(() => LearnCardRefreshAuthorizationValidator2, "LearnCardRefreshAuthorizationValidator"),
16184
16191
  LinkProviderFrameworkInputValidator: /* @__PURE__ */ __name2(() => LinkProviderFrameworkInputValidator2, "LinkProviderFrameworkInputValidator"),
16192
+ ListShareLinksInputValidator: /* @__PURE__ */ __name2(() => ListShareLinksInputValidator2, "ListShareLinksInputValidator"),
16193
+ MAX_ENDORSEMENTS: /* @__PURE__ */ __name2(() => MAX_ENDORSEMENTS2, "MAX_ENDORSEMENTS"),
16194
+ MAX_SELECTED_CREDENTIALS: /* @__PURE__ */ __name2(() => MAX_SELECTED_CREDENTIALS2, "MAX_SELECTED_CREDENTIALS"),
16195
+ MAX_SHARE_CIPHERTEXT_BYTES: /* @__PURE__ */ __name2(() => MAX_SHARE_CIPHERTEXT_BYTES2, "MAX_SHARE_CIPHERTEXT_BYTES"),
16196
+ MAX_SHARE_LINK_REQUEST_BYTES: /* @__PURE__ */ __name2(() => MAX_SHARE_LINK_REQUEST_BYTES2, "MAX_SHARE_LINK_REQUEST_BYTES"),
16197
+ MAX_SHARE_RECOVERY_JWE_BYTES: /* @__PURE__ */ __name2(() => MAX_SHARE_RECOVERY_JWE_BYTES2, "MAX_SHARE_RECOVERY_JWE_BYTES"),
16198
+ MAX_SHARE_SOURCE_URI_CHARS: /* @__PURE__ */ __name2(() => MAX_SHARE_SOURCE_URI_CHARS2, "MAX_SHARE_SOURCE_URI_CHARS"),
16199
+ MAX_VP_MEMBERS: /* @__PURE__ */ __name2(() => MAX_VP_MEMBERS2, "MAX_VP_MEMBERS"),
16185
16200
  ManagedCredentialRefreshReceiptValidator: /* @__PURE__ */ __name2(() => ManagedCredentialRefreshReceiptValidator2, "ManagedCredentialRefreshReceiptValidator"),
16186
16201
  ManagedCredentialRefreshServiceValidator: /* @__PURE__ */ __name2(() => ManagedCredentialRefreshServiceValidator2, "ManagedCredentialRefreshServiceValidator"),
16187
16202
  PaginatedAppStoreListingsValidator: /* @__PURE__ */ __name2(() => PaginatedAppStoreListingsValidator2, "PaginatedAppStoreListingsValidator"),
@@ -16204,6 +16219,7 @@ var require_types_cjs_development = __commonJS({
16204
16219
  PaginatedLCNProfileManagersValidator: /* @__PURE__ */ __name2(() => PaginatedLCNProfileManagersValidator2, "PaginatedLCNProfileManagersValidator"),
16205
16220
  PaginatedLCNProfilesAndManagersValidator: /* @__PURE__ */ __name2(() => PaginatedLCNProfilesAndManagersValidator2, "PaginatedLCNProfilesAndManagersValidator"),
16206
16221
  PaginatedLCNProfilesValidator: /* @__PURE__ */ __name2(() => PaginatedLCNProfilesValidator2, "PaginatedLCNProfilesValidator"),
16222
+ PaginatedShareLinksValidator: /* @__PURE__ */ __name2(() => PaginatedShareLinksValidator2, "PaginatedShareLinksValidator"),
16207
16223
  PaginatedSkillFrameworksValidator: /* @__PURE__ */ __name2(() => PaginatedSkillFrameworksValidator2, "PaginatedSkillFrameworksValidator"),
16208
16224
  PaginatedSkillTreeValidator: /* @__PURE__ */ __name2(() => PaginatedSkillTreeValidator2, "PaginatedSkillTreeValidator"),
16209
16225
  PaginatedVisibleLCNProfilesValidator: /* @__PURE__ */ __name2(() => PaginatedVisibleLCNProfilesValidator2, "PaginatedVisibleLCNProfilesValidator"),
@@ -16228,11 +16244,20 @@ var require_types_cjs_development = __commonJS({
16228
16244
  ReplaceSkillFrameworkSkillsInputValidator: /* @__PURE__ */ __name2(() => ReplaceSkillFrameworkSkillsInputValidator2, "ReplaceSkillFrameworkSkillsInputValidator"),
16229
16245
  ReplaceSkillFrameworkSkillsResultValidator: /* @__PURE__ */ __name2(() => ReplaceSkillFrameworkSkillsResultValidator2, "ReplaceSkillFrameworkSkillsResultValidator"),
16230
16246
  RequestLearnerContextEventValidator: /* @__PURE__ */ __name2(() => RequestLearnerContextEventValidator2, "RequestLearnerContextEventValidator"),
16247
+ ResolveShareLinkInputValidator: /* @__PURE__ */ __name2(() => ResolveShareLinkInputValidator2, "ResolveShareLinkInputValidator"),
16231
16248
  ResultDescriptionValidator: /* @__PURE__ */ __name2(() => ResultDescriptionValidator2, "ResultDescriptionValidator"),
16232
16249
  ResultStatusTypeValidator: /* @__PURE__ */ __name2(() => ResultStatusTypeValidator2, "ResultStatusTypeValidator"),
16233
16250
  ResultTypeValidator: /* @__PURE__ */ __name2(() => ResultTypeValidator2, "ResultTypeValidator"),
16234
16251
  ResultValidator: /* @__PURE__ */ __name2(() => ResultValidator2, "ResultValidator"),
16235
16252
  RubricCriterionValidator: /* @__PURE__ */ __name2(() => RubricCriterionValidator2, "RubricCriterionValidator"),
16253
+ SHARE_AAD_PREFIX: /* @__PURE__ */ __name2(() => SHARE_AAD_PREFIX, "SHARE_AAD_PREFIX"),
16254
+ SHARE_CONTENT_KEY_BYTES: /* @__PURE__ */ __name2(() => SHARE_CONTENT_KEY_BYTES2, "SHARE_CONTENT_KEY_BYTES"),
16255
+ SHARE_IV_BYTES: /* @__PURE__ */ __name2(() => SHARE_IV_BYTES2, "SHARE_IV_BYTES"),
16256
+ SHARE_LINK_ID_BYTES: /* @__PURE__ */ __name2(() => SHARE_LINK_ID_BYTES2, "SHARE_LINK_ID_BYTES"),
16257
+ SHARE_LINK_PROTOCOL: /* @__PURE__ */ __name2(() => SHARE_LINK_PROTOCOL2, "SHARE_LINK_PROTOCOL"),
16258
+ SHARE_RECOVERY_PROTOCOL: /* @__PURE__ */ __name2(() => SHARE_RECOVERY_PROTOCOL2, "SHARE_RECOVERY_PROTOCOL"),
16259
+ SHARE_TAG_BYTES: /* @__PURE__ */ __name2(() => SHARE_TAG_BYTES2, "SHARE_TAG_BYTES"),
16260
+ SHARE_VIEW_RECEIPT_TTL_SECONDS: /* @__PURE__ */ __name2(() => SHARE_VIEW_RECEIPT_TTL_SECONDS2, "SHARE_VIEW_RECEIPT_TTL_SECONDS"),
16236
16261
  SendAiSessionCredentialEventValidator: /* @__PURE__ */ __name2(() => SendAiSessionCredentialEventValidator2, "SendAiSessionCredentialEventValidator"),
16237
16262
  SendBoostInputValidator: /* @__PURE__ */ __name2(() => SendBoostInputValidator2, "SendBoostInputValidator"),
16238
16263
  SendBoostResponseValidator: /* @__PURE__ */ __name2(() => SendBoostResponseValidator2, "SendBoostResponseValidator"),
@@ -16247,6 +16272,32 @@ var require_types_cjs_development = __commonJS({
16247
16272
  SentCredentialInfoValidator: /* @__PURE__ */ __name2(() => SentCredentialInfoValidator2, "SentCredentialInfoValidator"),
16248
16273
  ServiceValidator: /* @__PURE__ */ __name2(() => ServiceValidator2, "ServiceValidator"),
16249
16274
  SetPrimaryContactMethodValidator: /* @__PURE__ */ __name2(() => SetPrimaryContactMethodValidator2, "SetPrimaryContactMethodValidator"),
16275
+ ShareCiphertextValidator: /* @__PURE__ */ __name2(() => ShareCiphertextValidator2, "ShareCiphertextValidator"),
16276
+ ShareContentKeyValidator: /* @__PURE__ */ __name2(() => ShareContentKeyValidator2, "ShareContentKeyValidator"),
16277
+ ShareContentStateValidator: /* @__PURE__ */ __name2(() => ShareContentStateValidator2, "ShareContentStateValidator"),
16278
+ ShareEndorsementEntryValidator: /* @__PURE__ */ __name2(() => ShareEndorsementEntryValidator2, "ShareEndorsementEntryValidator"),
16279
+ ShareEnvelopeValidator: /* @__PURE__ */ __name2(() => ShareEnvelopeValidator2, "ShareEnvelopeValidator"),
16280
+ ShareIvValidator: /* @__PURE__ */ __name2(() => ShareIvValidator2, "ShareIvValidator"),
16281
+ ShareLinkIdInputValidator: /* @__PURE__ */ __name2(() => ShareLinkIdInputValidator2, "ShareLinkIdInputValidator"),
16282
+ ShareLinkIdValidator: /* @__PURE__ */ __name2(() => ShareLinkIdValidator2, "ShareLinkIdValidator"),
16283
+ ShareLinkOperationKeyInputValidator: /* @__PURE__ */ __name2(() => ShareLinkOperationKeyInputValidator2, "ShareLinkOperationKeyInputValidator"),
16284
+ ShareLinkOwnerCommitOutputValidator: /* @__PURE__ */ __name2(() => ShareLinkOwnerCommitOutputValidator2, "ShareLinkOwnerCommitOutputValidator"),
16285
+ ShareLinkOwnerContentOutputValidator: /* @__PURE__ */ __name2(() => ShareLinkOwnerContentOutputValidator2, "ShareLinkOwnerContentOutputValidator"),
16286
+ ShareLinkOwnerRecoveryOutputValidator: /* @__PURE__ */ __name2(() => ShareLinkOwnerRecoveryOutputValidator2, "ShareLinkOwnerRecoveryOutputValidator"),
16287
+ ShareLinkOwnerStatusOutputValidator: /* @__PURE__ */ __name2(() => ShareLinkOwnerStatusOutputValidator2, "ShareLinkOwnerStatusOutputValidator"),
16288
+ ShareLinkPublicContentViewValidator: /* @__PURE__ */ __name2(() => ShareLinkPublicContentViewValidator2, "ShareLinkPublicContentViewValidator"),
16289
+ ShareLinkPublicStateValidator: /* @__PURE__ */ __name2(() => ShareLinkPublicStateValidator2, "ShareLinkPublicStateValidator"),
16290
+ ShareLinkStatusValidator: /* @__PURE__ */ __name2(() => ShareLinkStatusValidator2, "ShareLinkStatusValidator"),
16291
+ ShareLinkValidator: /* @__PURE__ */ __name2(() => ShareLinkValidator2, "ShareLinkValidator"),
16292
+ ShareManifestPresentationValidator: /* @__PURE__ */ __name2(() => ShareManifestPresentationValidator2, "ShareManifestPresentationValidator"),
16293
+ ShareOwnerRecoveryValidator: /* @__PURE__ */ __name2(() => ShareOwnerRecoveryValidator2, "ShareOwnerRecoveryValidator"),
16294
+ SharePayloadValidator: /* @__PURE__ */ __name2(() => SharePayloadValidator2, "SharePayloadValidator"),
16295
+ SharePayloadValidatorShape: /* @__PURE__ */ __name2(() => SharePayloadValidatorShape2, "SharePayloadValidatorShape"),
16296
+ ShareRecoveryEndorsementValidator: /* @__PURE__ */ __name2(() => ShareRecoveryEndorsementValidator2, "ShareRecoveryEndorsementValidator"),
16297
+ ShareRecoveryPlaintextValidator: /* @__PURE__ */ __name2(() => ShareRecoveryPlaintextValidator2, "ShareRecoveryPlaintextValidator"),
16298
+ ShareRecoverySelectionValidator: /* @__PURE__ */ __name2(() => ShareRecoverySelectionValidator2, "ShareRecoverySelectionValidator"),
16299
+ ShareSelectionEntryValidator: /* @__PURE__ */ __name2(() => ShareSelectionEntryValidator2, "ShareSelectionEntryValidator"),
16300
+ ShareSharerValidator: /* @__PURE__ */ __name2(() => ShareSharerValidator2, "ShareSharerValidator"),
16250
16301
  SkillDeletionStrategyValidator: /* @__PURE__ */ __name2(() => SkillDeletionStrategyValidator2, "SkillDeletionStrategyValidator"),
16251
16302
  SkillFrameworkAdminInputValidator: /* @__PURE__ */ __name2(() => SkillFrameworkAdminInputValidator2, "SkillFrameworkAdminInputValidator"),
16252
16303
  SkillFrameworkAdminsValidator: /* @__PURE__ */ __name2(() => SkillFrameworkAdminsValidator2, "SkillFrameworkAdminsValidator"),
@@ -16278,6 +16329,7 @@ var require_types_cjs_development = __commonJS({
16278
16329
  UnsignedVCValidator: /* @__PURE__ */ __name2(() => UnsignedVCValidator2, "UnsignedVCValidator"),
16279
16330
  UnsignedVPValidator: /* @__PURE__ */ __name2(() => UnsignedVPValidator2, "UnsignedVPValidator"),
16280
16331
  UpdateFrameworkInputValidator: /* @__PURE__ */ __name2(() => UpdateFrameworkInputValidator2, "UpdateFrameworkInputValidator"),
16332
+ UpdateShareLinkInputValidator: /* @__PURE__ */ __name2(() => UpdateShareLinkInputValidator2, "UpdateShareLinkInputValidator"),
16281
16333
  UpdateSkillInputValidator: /* @__PURE__ */ __name2(() => UpdateSkillInputValidator2, "UpdateSkillInputValidator"),
16282
16334
  VC2EvidenceValidator: /* @__PURE__ */ __name2(() => VC2EvidenceValidator2, "VC2EvidenceValidator"),
16283
16335
  VCValidator: /* @__PURE__ */ __name2(() => VCValidator2, "VCValidator"),
@@ -16289,7 +16341,12 @@ var require_types_cjs_development = __commonJS({
16289
16341
  VerificationStatusValidator: /* @__PURE__ */ __name2(() => VerificationStatusValidator2, "VerificationStatusValidator"),
16290
16342
  appStoreActionValidator: /* @__PURE__ */ __name2(() => appStoreActionValidator2, "appStoreActionValidator"),
16291
16343
  capgoUpdateActionValidator: /* @__PURE__ */ __name2(() => capgoUpdateActionValidator2, "capgoUpdateActionValidator"),
16344
+ classifyShareManifest: /* @__PURE__ */ __name2(() => classifyShareManifest2, "classifyShareManifest"),
16345
+ decodeBase64Url: /* @__PURE__ */ __name2(() => decodeBase64Url2, "decodeBase64Url"),
16346
+ decodedBase64UrlByteLength: /* @__PURE__ */ __name2(() => decodedBase64UrlByteLength, "decodedBase64UrlByteLength"),
16292
16347
  dismissActionValidator: /* @__PURE__ */ __name2(() => dismissActionValidator2, "dismissActionValidator"),
16348
+ encodeBase64Url: /* @__PURE__ */ __name2(() => encodeBase64Url2, "encodeBase64Url"),
16349
+ escrowPinMismatchMessage: /* @__PURE__ */ __name2(() => escrowPinMismatchMessage, "escrowPinMismatchMessage"),
16293
16350
  externalLinkActionValidator: /* @__PURE__ */ __name2(() => externalLinkActionValidator2, "externalLinkActionValidator"),
16294
16351
  inAppMessageActionStyleValidator: /* @__PURE__ */ __name2(() => inAppMessageActionStyleValidator2, "inAppMessageActionStyleValidator"),
16295
16352
  inAppMessageActionTargetValidator: /* @__PURE__ */ __name2(() => inAppMessageActionTargetValidator2, "inAppMessageActionTargetValidator"),
@@ -16304,10 +16361,12 @@ var require_types_cjs_development = __commonJS({
16304
16361
  inAppMessageVersionSourceValidator: /* @__PURE__ */ __name2(() => inAppMessageVersionSourceValidator2, "inAppMessageVersionSourceValidator"),
16305
16362
  inAppMessagesFlagValidator: /* @__PURE__ */ __name2(() => inAppMessagesFlagValidator2, "inAppMessagesFlagValidator"),
16306
16363
  internalLinkActionValidator: /* @__PURE__ */ __name2(() => internalLinkActionValidator2, "internalLinkActionValidator"),
16364
+ isCanonicalBase64Url: /* @__PURE__ */ __name2(() => isCanonicalBase64Url2, "isCanonicalBase64Url"),
16307
16365
  isStoredCredentialEnvelope: /* @__PURE__ */ __name2(() => isStoredCredentialEnvelope2, "isStoredCredentialEnvelope"),
16308
16366
  parseInAppMessagesFlag: /* @__PURE__ */ __name2(() => parseInAppMessagesFlag, "parseInAppMessagesFlag"),
16309
16367
  platformPredicateValidator: /* @__PURE__ */ __name2(() => platformPredicateValidator2, "platformPredicateValidator"),
16310
16368
  rolePredicateValidator: /* @__PURE__ */ __name2(() => rolePredicateValidator2, "rolePredicateValidator"),
16369
+ utf8ByteLength: /* @__PURE__ */ __name2(() => utf8ByteLength2, "utf8ByteLength"),
16311
16370
  versionPredicateValidator: /* @__PURE__ */ __name2(() => versionPredicateValidator2, "versionPredicateValidator")
16312
16371
  });
16313
16372
  module2.exports = __toCommonJS2(index_exports2);
@@ -16829,7 +16888,7 @@ var require_types_cjs_development = __commonJS({
16829
16888
  util: /* @__PURE__ */ __name2(() => util_exports2, "util"),
16830
16889
  version: /* @__PURE__ */ __name2(() => version3, "version")
16831
16890
  });
16832
- var _a6;
16891
+ var _a7;
16833
16892
  var NEVER2 = /* @__PURE__ */ Object.freeze({
16834
16893
  status: "aborted"
16835
16894
  });
@@ -16899,18 +16958,18 @@ var require_types_cjs_development = __commonJS({
16899
16958
  __name2($constructor2, "$constructor");
16900
16959
  __name22($constructor2, "$constructor");
16901
16960
  var $brand2 = /* @__PURE__ */ Symbol("zod_brand");
16902
- var $ZodAsyncError2 = (_a7 = class extends Error {
16961
+ var $ZodAsyncError2 = (_a8 = class extends Error {
16903
16962
  constructor() {
16904
16963
  super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);
16905
16964
  }
16906
- }, __name(_a7, "$ZodAsyncError"), __name2(_a7, "$ZodAsyncError"), __name22(_a7, "$ZodAsyncError"), _a7);
16965
+ }, __name(_a8, "$ZodAsyncError"), __name2(_a8, "$ZodAsyncError"), __name22(_a8, "$ZodAsyncError"), _a8);
16907
16966
  var $ZodEncodeError2 = (_b = class extends Error {
16908
16967
  constructor(name) {
16909
16968
  super(`Encountered unidirectional transform during encode: ${name}`);
16910
16969
  this.name = "ZodEncodeError";
16911
16970
  }
16912
16971
  }, __name(_b, "$ZodEncodeError"), __name2(_b, "$ZodEncodeError"), __name22(_b, "$ZodEncodeError"), _b);
16913
- (_a6 = globalThis).__zod_globalConfig ?? (_a6.__zod_globalConfig = {});
16972
+ (_a7 = globalThis).__zod_globalConfig ?? (_a7.__zod_globalConfig = {});
16914
16973
  var globalConfig2 = globalThis.__zod_globalConfig;
16915
16974
  function config2(newConfig) {
16916
16975
  if (newConfig)
@@ -34331,6 +34390,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34331
34390
  this.name = "AuthSessionError";
34332
34391
  }
34333
34392
  }, __name(_g, "AuthSessionError"), __name2(_g, "AuthSessionError"), __name22(_g, "AuthSessionError"), _g);
34393
+ var ESCROW_PIN_LOCKED_MESSAGE = "Too many incorrect PIN attempts. You can still recover by waiting.";
34394
+ var ESCROW_PIN_UNAVAILABLE_MESSAGE = "PIN recovery is not available for this account.";
34395
+ var ESCROW_PIN_MISMATCH_PATTERN = /^Incorrect PIN\. (\d+) attempts left\.$/;
34396
+ var escrowPinMismatchMessage = /* @__PURE__ */ __name22((attemptsRemaining) => `Incorrect PIN. ${attemptsRemaining} attempts left.`, "escrowPinMismatchMessage");
34397
+ var EscrowPinStatusValidator2 = external_exports2.object({
34398
+ state: external_exports2.enum(["none", "enabled", "locked", "stale"]),
34399
+ enabled: external_exports2.boolean(),
34400
+ attemptsRemaining: external_exports2.number().int().nonnegative(),
34401
+ salt: external_exports2.string().optional()
34402
+ });
34334
34403
  var BITSTRING_STATUS_PURPOSES2 = ["revocation", "suspension"];
34335
34404
  var DEFAULT_BITSTRING_STATUS_LIST_SIZE = 131072;
34336
34405
  var BitstringStatusPurposeValidator2 = external_exports2.enum(BITSTRING_STATUS_PURPOSES2);
@@ -34445,6 +34514,458 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
34445
34514
  const result = inAppMessagesFlagValidator2.safeParse(raw);
34446
34515
  return result.success ? result.data : EMPTY_IN_APP_MESSAGES_FLAG;
34447
34516
  }, "parseInAppMessagesFlag");
34517
+ var SHARE_LINK_ID_BYTES2 = 16;
34518
+ var SHARE_CONTENT_KEY_BYTES2 = 32;
34519
+ var SHARE_IV_BYTES2 = 12;
34520
+ var SHARE_TAG_BYTES2 = 16;
34521
+ var MAX_SHARE_CIPHERTEXT_BYTES2 = 512 * 1024;
34522
+ var MAX_SHARE_RECOVERY_JWE_BYTES2 = 64 * 1024;
34523
+ var MAX_SELECTED_CREDENTIALS2 = 50;
34524
+ var MAX_ENDORSEMENTS2 = 200;
34525
+ var MAX_VP_MEMBERS2 = MAX_SELECTED_CREDENTIALS2 + MAX_ENDORSEMENTS2;
34526
+ var MAX_SHARE_SOURCE_URI_CHARS2 = 2048;
34527
+ var MAX_SHARE_LINK_REQUEST_BYTES2 = 1024 * 1024;
34528
+ var SHARE_LINK_PROTOCOL2 = "lc-share/v1";
34529
+ var SHARE_RECOVERY_PROTOCOL2 = "lc-share-recovery/v1";
34530
+ var SHARE_AAD_PREFIX = "lc-share:v1";
34531
+ var BASE64URL_ALPHABET2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
34532
+ var BASE64URL_LOOKUP2 = (() => {
34533
+ const table = new Int16Array(128).fill(-1);
34534
+ for (let index = 0; index < BASE64URL_ALPHABET2.length; index += 1) {
34535
+ table[BASE64URL_ALPHABET2.charCodeAt(index)] = index;
34536
+ }
34537
+ return table;
34538
+ })();
34539
+ var encodeBase64Url2 = /* @__PURE__ */ __name22((bytes) => {
34540
+ let output = "";
34541
+ for (let index = 0; index < bytes.length; index += 3) {
34542
+ const first = bytes[index];
34543
+ const second = bytes[index + 1];
34544
+ const third = bytes[index + 2];
34545
+ output += BASE64URL_ALPHABET2[first >> 2];
34546
+ output += BASE64URL_ALPHABET2[(first & 3) << 4 | (second ?? 0) >> 4];
34547
+ if (second === void 0) break;
34548
+ output += BASE64URL_ALPHABET2[(second & 15) << 2 | (third ?? 0) >> 6];
34549
+ if (third === void 0) break;
34550
+ output += BASE64URL_ALPHABET2[third & 63];
34551
+ }
34552
+ return output;
34553
+ }, "encodeBase64Url");
34554
+ var decodeBase64Url2 = /* @__PURE__ */ __name22((value) => {
34555
+ if (typeof value !== "string") return null;
34556
+ const output = new Uint8Array(Math.floor(value.length * 6 / 8));
34557
+ let bits = 0;
34558
+ let bitCount = 0;
34559
+ let outputIndex = 0;
34560
+ for (let index = 0; index < value.length; index += 1) {
34561
+ const code = value.charCodeAt(index);
34562
+ const digit = code < 128 ? BASE64URL_LOOKUP2[code] : -1;
34563
+ if (digit < 0) return null;
34564
+ bits = bits << 6 | digit;
34565
+ bitCount += 6;
34566
+ if (bitCount >= 8) {
34567
+ bitCount -= 8;
34568
+ output[outputIndex] = bits >> bitCount & 255;
34569
+ outputIndex += 1;
34570
+ }
34571
+ }
34572
+ return output;
34573
+ }, "decodeBase64Url");
34574
+ var isCanonicalBase64Url2 = /* @__PURE__ */ __name22((value, expectedBytes) => {
34575
+ if (typeof value !== "string") return false;
34576
+ if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
34577
+ return false;
34578
+ const decoded = decodeBase64Url2(value);
34579
+ if (decoded === null) return false;
34580
+ if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
34581
+ return encodeBase64Url2(decoded) === value;
34582
+ }, "isCanonicalBase64Url");
34583
+ var decodedBase64UrlByteLength = /* @__PURE__ */ __name22((value) => decodeBase64Url2(value)?.length ?? null, "decodedBase64UrlByteLength");
34584
+ var utf8ByteLength2 = /* @__PURE__ */ __name22((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
34585
+ var canonicalBase64Url2 = /* @__PURE__ */ __name22((bytes) => external_exports2.string().refine((value) => isCanonicalBase64Url2(value, bytes), {
34586
+ message: `must be canonical base64url for exactly ${bytes} bytes`
34587
+ }), "canonicalBase64Url");
34588
+ var ShareLinkIdValidator2 = canonicalBase64Url2(SHARE_LINK_ID_BYTES2);
34589
+ var ShareContentKeyValidator2 = canonicalBase64Url2(SHARE_CONTENT_KEY_BYTES2);
34590
+ var ShareIvValidator2 = canonicalBase64Url2(SHARE_IV_BYTES2);
34591
+ var ShareCiphertextValidator2 = external_exports2.string().refine(
34592
+ (value) => {
34593
+ if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES2 * 4 / 3)) return false;
34594
+ const decoded = decodeBase64Url2(value);
34595
+ if (decoded === null) return false;
34596
+ if (encodeBase64Url2(decoded) !== value) return false;
34597
+ return decoded.length >= SHARE_TAG_BYTES2 && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES2;
34598
+ },
34599
+ {
34600
+ message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES2}..${MAX_SHARE_CIPHERTEXT_BYTES2} bytes`
34601
+ }
34602
+ );
34603
+ var ShareEnvelopeValidator2 = external_exports2.object({
34604
+ v: external_exports2.literal(1),
34605
+ alg: external_exports2.literal("A256GCM"),
34606
+ iv: ShareIvValidator2,
34607
+ ct: ShareCiphertextValidator2
34608
+ }).strict();
34609
+ var safeVersion2 = external_exports2.number().int().min(1).max(2 ** 31 - 1);
34610
+ var safeCredentialIndex2 = external_exports2.number().int().min(0).max(MAX_VP_MEMBERS2 - 1);
34611
+ var ShareSelectionEntryValidator2 = external_exports2.object({ credentialIndex: safeCredentialIndex2 }).strict();
34612
+ var ShareEndorsementEntryValidator2 = external_exports2.object({ credentialIndex: safeCredentialIndex2, targetCredentialIndex: safeCredentialIndex2 }).strict();
34613
+ var ShareSharerValidator2 = external_exports2.object({
34614
+ profileId: external_exports2.string().min(1).max(128),
34615
+ displayName: external_exports2.string().min(1).max(120),
34616
+ avatar: external_exports2.string().max(2048).optional()
34617
+ }).strict();
34618
+ var presentationShape2 = VPValidator2.extend({
34619
+ verifiableCredential: VCValidator2.array().min(1).max(MAX_VP_MEMBERS2)
34620
+ });
34621
+ var hasBoundedPresentation2 = /* @__PURE__ */ __name22((value) => {
34622
+ let credentialCount = 0;
34623
+ const ancestors = /* @__PURE__ */ new Set();
34624
+ const visit = /* @__PURE__ */ __name22((node, depth) => {
34625
+ if (node === null || typeof node !== "object") return true;
34626
+ if (depth > 32 || ancestors.has(node)) return false;
34627
+ ancestors.add(node);
34628
+ try {
34629
+ for (const [key, child] of Object.entries(node)) {
34630
+ if (key === "verifiableCredential") {
34631
+ credentialCount += Array.isArray(child) ? child.length : 1;
34632
+ if (credentialCount > MAX_VP_MEMBERS2) return false;
34633
+ }
34634
+ if (!visit(child, depth + 1)) return false;
34635
+ }
34636
+ return true;
34637
+ } finally {
34638
+ ancestors.delete(node);
34639
+ }
34640
+ }, "visit");
34641
+ return visit(value, 0);
34642
+ }, "hasBoundedPresentation");
34643
+ var ShareManifestPresentationValidator2 = external_exports2.custom(
34644
+ (value) => hasBoundedPresentation2(value) && presentationShape2.safeParse(value).success,
34645
+ { message: "invalid share presentation" }
34646
+ );
34647
+ var SharePayloadValidatorShape2 = external_exports2.object({
34648
+ protocol: external_exports2.literal(SHARE_LINK_PROTOCOL2),
34649
+ shareId: ShareLinkIdValidator2,
34650
+ contentVersion: safeVersion2,
34651
+ createdAt: external_exports2.iso.datetime(),
34652
+ sharer: ShareSharerValidator2,
34653
+ presentation: ShareManifestPresentationValidator2,
34654
+ selection: ShareSelectionEntryValidator2.array().min(1).max(MAX_SELECTED_CREDENTIALS2),
34655
+ endorsements: ShareEndorsementEntryValidator2.array().max(MAX_ENDORSEMENTS2).default([])
34656
+ }).strict();
34657
+ var classificationFailure2 = /* @__PURE__ */ __name22((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
34658
+ var readSignedClaimId2 = /* @__PURE__ */ __name22((member) => {
34659
+ if (member === null || typeof member !== "object") return void 0;
34660
+ const record22 = member;
34661
+ const claim = record22.credentialSubject ?? record22.endorsement;
34662
+ if (claim === null || typeof claim !== "object") return void 0;
34663
+ const claimRecord = claim;
34664
+ const nested = claimRecord.endorsement;
34665
+ const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
34666
+ return claimRecord.id ?? nestedId;
34667
+ }, "readSignedClaimId");
34668
+ var classifyShareManifest2 = /* @__PURE__ */ __name22((payload) => {
34669
+ const members = payload.presentation?.verifiableCredential;
34670
+ if (!Array.isArray(members) || members.length === 0) {
34671
+ return classificationFailure2("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
34672
+ }
34673
+ if (members.length > MAX_VP_MEMBERS2) {
34674
+ return classificationFailure2(
34675
+ "TOO_MANY_VP_MEMBERS",
34676
+ `presentation has ${members.length} members, over the ${MAX_VP_MEMBERS2} bound`
34677
+ );
34678
+ }
34679
+ const selection = payload.selection;
34680
+ const endorsements = payload.endorsements ?? [];
34681
+ if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS2) {
34682
+ return classificationFailure2("BAD_SELECTION", "selection must contain 1..50 entries");
34683
+ }
34684
+ if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS2) {
34685
+ return classificationFailure2(
34686
+ "BAD_ENDORSEMENTS",
34687
+ "endorsements must contain at most 200 entries"
34688
+ );
34689
+ }
34690
+ const selectedIndices = [];
34691
+ const selected = /* @__PURE__ */ new Set();
34692
+ for (let index = 0; index < selection.length; index += 1) {
34693
+ const entry = selection[index];
34694
+ const credentialIndex = entry?.credentialIndex;
34695
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
34696
+ return classificationFailure2(
34697
+ "SELECTION_INDEX_OUT_OF_BOUNDS",
34698
+ `selection[${index}].credentialIndex is out of bounds`,
34699
+ ["selection", index, "credentialIndex"]
34700
+ );
34701
+ }
34702
+ if (selected.has(credentialIndex)) {
34703
+ return classificationFailure2(
34704
+ "SELECTION_INDEX_DUPLICATE",
34705
+ `selection[${index}].credentialIndex is duplicated`,
34706
+ ["selection", index, "credentialIndex"]
34707
+ );
34708
+ }
34709
+ selected.add(credentialIndex);
34710
+ selectedIndices.push(credentialIndex);
34711
+ }
34712
+ const classified = new Set(selected);
34713
+ const endorsementIndices = [];
34714
+ for (let index = 0; index < endorsements.length; index += 1) {
34715
+ const entry = endorsements[index];
34716
+ const credentialIndex = entry?.credentialIndex;
34717
+ const targetIndex = entry?.targetCredentialIndex;
34718
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
34719
+ return classificationFailure2(
34720
+ "ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
34721
+ `endorsements[${index}].credentialIndex is out of bounds`,
34722
+ ["endorsements", index, "credentialIndex"]
34723
+ );
34724
+ }
34725
+ if (classified.has(credentialIndex)) {
34726
+ return classificationFailure2(
34727
+ "VP_MEMBER_CLASSIFIED_TWICE",
34728
+ `endorsements[${index}].credentialIndex was already classified`,
34729
+ ["endorsements", index, "credentialIndex"]
34730
+ );
34731
+ }
34732
+ if (!selected.has(targetIndex)) {
34733
+ return classificationFailure2(
34734
+ "ENDORSEMENT_TARGET_NOT_SELECTED",
34735
+ `endorsements[${index}].targetCredentialIndex must reference a selected credential`,
34736
+ ["endorsements", index, "targetCredentialIndex"]
34737
+ );
34738
+ }
34739
+ const referenced = readSignedClaimId2(members[credentialIndex]);
34740
+ const target = members[targetIndex];
34741
+ const targetId = target !== null && typeof target === "object" ? target.id : void 0;
34742
+ if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
34743
+ return classificationFailure2(
34744
+ "ENDORSEMENT_TARGET_UNBOUND",
34745
+ `endorsements[${index}] claim does not reference the target credential id`,
34746
+ ["endorsements", index]
34747
+ );
34748
+ }
34749
+ classified.add(credentialIndex);
34750
+ endorsementIndices.push(credentialIndex);
34751
+ }
34752
+ if (classified.size !== members.length) {
34753
+ return classificationFailure2(
34754
+ "UNCLASSIFIED_VP_MEMBER",
34755
+ "every presentation member must be classified exactly once",
34756
+ ["presentation", "verifiableCredential"]
34757
+ );
34758
+ }
34759
+ return {
34760
+ ok: true,
34761
+ classification: { selectedIndices, endorsementIndices, memberCount: members.length }
34762
+ };
34763
+ }, "classifyShareManifest");
34764
+ var SharePayloadValidator2 = SharePayloadValidatorShape2.superRefine((payload, ctx) => {
34765
+ const result = classifyShareManifest2(payload);
34766
+ if (!result.ok) {
34767
+ ctx.addIssue({
34768
+ code: "custom",
34769
+ message: result.message,
34770
+ path: result.path,
34771
+ params: { shareLinkCode: result.code }
34772
+ });
34773
+ }
34774
+ });
34775
+ var ShareRecoverySelectionValidator2 = external_exports2.object({
34776
+ ref: external_exports2.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS2),
34777
+ order: external_exports2.number().int().min(0).max(MAX_SELECTED_CREDENTIALS2 - 1)
34778
+ }).strict();
34779
+ var ShareRecoveryEndorsementValidator2 = external_exports2.object({ targetRef: external_exports2.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS2) }).strict();
34780
+ var ShareRecoveryPlaintextValidator2 = external_exports2.object({
34781
+ protocol: external_exports2.literal(SHARE_RECOVERY_PROTOCOL2),
34782
+ shareId: ShareLinkIdValidator2,
34783
+ ownerProfileId: external_exports2.string().min(1).max(128),
34784
+ createdAt: external_exports2.iso.datetime(),
34785
+ latest: external_exports2.object({ contentVersion: safeVersion2, key: ShareContentKeyValidator2 }).strict(),
34786
+ selection: ShareRecoverySelectionValidator2.array().min(1).max(MAX_SELECTED_CREDENTIALS2),
34787
+ endorsements: ShareRecoveryEndorsementValidator2.array().max(MAX_ENDORSEMENTS2).default([])
34788
+ }).strict().superRefine((recovery, ctx) => {
34789
+ const orders = /* @__PURE__ */ new Set();
34790
+ recovery.selection.forEach((entry, index) => {
34791
+ if (entry.order >= recovery.selection.length) {
34792
+ ctx.addIssue({
34793
+ code: "custom",
34794
+ message: "order must be within the selection bounds",
34795
+ path: ["selection", index, "order"]
34796
+ });
34797
+ }
34798
+ if (orders.has(entry.order)) {
34799
+ ctx.addIssue({
34800
+ code: "custom",
34801
+ message: "order must be unique within the selection",
34802
+ path: ["selection", index, "order"]
34803
+ });
34804
+ }
34805
+ orders.add(entry.order);
34806
+ });
34807
+ });
34808
+ var ShareOwnerRecoveryValidator2 = JWEValidator2.refine(
34809
+ (value) => utf8ByteLength2(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES2,
34810
+ { message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES2} bytes` }
34811
+ );
34812
+ var ShareLinkStatusValidator2 = external_exports2.enum(["pending", "active", "stopped"]);
34813
+ var ShareContentStateValidator2 = external_exports2.enum(["staging", "finalized", "content_missing"]);
34814
+ var ShareLinkValidator2 = external_exports2.object({
34815
+ id: ShareLinkIdValidator2,
34816
+ title: external_exports2.string().min(1).max(120),
34817
+ note: external_exports2.string().max(500).optional(),
34818
+ selectedCount: external_exports2.number().int().min(1).max(MAX_SELECTED_CREDENTIALS2),
34819
+ version: safeVersion2,
34820
+ contentVersion: safeVersion2,
34821
+ status: ShareLinkStatusValidator2,
34822
+ contentState: ShareContentStateValidator2,
34823
+ createdAt: external_exports2.iso.datetime(),
34824
+ updatedAt: external_exports2.iso.datetime(),
34825
+ expiresAt: external_exports2.iso.datetime().nullable(),
34826
+ stoppedAt: external_exports2.iso.datetime().nullable(),
34827
+ lastViewedAt: external_exports2.iso.datetime().nullable(),
34828
+ viewCount: external_exports2.number().int().min(0).optional(),
34829
+ passcodeProtected: external_exports2.boolean(),
34830
+ notifyOnView: external_exports2.boolean(),
34831
+ minorPolicy: external_exports2.object({
34832
+ isMinor: external_exports2.boolean().nullable(),
34833
+ policyResolved: external_exports2.boolean(),
34834
+ defaultExpiryDays: external_exports2.union([external_exports2.literal(30), external_exports2.literal(365)]),
34835
+ viewCountingEnabled: external_exports2.boolean()
34836
+ }),
34837
+ /**
34838
+ * Guarded application/API URL for the content. Optional because owner APIs in
34839
+ * D1 have no public resolve/content endpoint yet; it must never be a
34840
+ * LearnCloud object URL or carry a fabricated decryption key.
34841
+ */
34842
+ contentUrl: external_exports2.string().optional()
34843
+ });
34844
+ var clientRequestId2 = external_exports2.string().uuid();
34845
+ var CreateShareLinkInputValidator2 = external_exports2.object({
34846
+ id: ShareLinkIdValidator2,
34847
+ clientRequestId: clientRequestId2,
34848
+ title: external_exports2.string().min(1).max(120),
34849
+ note: external_exports2.string().max(500).optional(),
34850
+ expiresAt: external_exports2.iso.datetime().nullable().optional(),
34851
+ passcode: external_exports2.string().min(8).max(64).optional(),
34852
+ notifyOnView: external_exports2.boolean().default(false),
34853
+ selectedCount: external_exports2.number().int().min(1).max(MAX_SELECTED_CREDENTIALS2),
34854
+ contentVersion: external_exports2.literal(1),
34855
+ envelope: ShareEnvelopeValidator2,
34856
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator2
34857
+ }).strict();
34858
+ var UpdateShareLinkInputValidator2 = external_exports2.object({
34859
+ id: ShareLinkIdValidator2,
34860
+ expectedVersion: safeVersion2,
34861
+ clientRequestId: clientRequestId2,
34862
+ title: external_exports2.string().min(1).max(120).optional(),
34863
+ note: external_exports2.string().max(500).nullable().optional(),
34864
+ expiresAt: external_exports2.iso.datetime().nullable().optional(),
34865
+ /** Omitted preserves the current passcode, null removes it, and a string replaces it. */
34866
+ passcode: external_exports2.string().min(8).max(64).nullable().optional(),
34867
+ notifyOnView: external_exports2.boolean().optional(),
34868
+ contentVersion: safeVersion2.optional(),
34869
+ selectedCount: external_exports2.number().int().min(1).max(MAX_SELECTED_CREDENTIALS2).optional(),
34870
+ envelope: ShareEnvelopeValidator2.optional(),
34871
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator2.optional()
34872
+ }).strict().superRefine((value, ctx) => {
34873
+ const provided = [
34874
+ value.contentVersion,
34875
+ value.selectedCount,
34876
+ value.envelope,
34877
+ value.ownerEncryptedRecovery
34878
+ ].filter((field) => field !== void 0).length;
34879
+ if (provided !== 0 && provided !== 4) {
34880
+ ctx.addIssue({
34881
+ code: "custom",
34882
+ message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
34883
+ });
34884
+ }
34885
+ });
34886
+ var ShareLinkIdInputValidator2 = external_exports2.object({ id: ShareLinkIdValidator2 }).strict();
34887
+ var ShareLinkOperationKeyInputValidator2 = external_exports2.object({ id: ShareLinkIdValidator2, operationId: external_exports2.string().uuid() }).strict();
34888
+ var ShareLinkOwnerCommitOutputValidator2 = external_exports2.discriminatedUnion("status", [
34889
+ external_exports2.object({ status: external_exports2.literal("completed"), share: ShareLinkValidator2 }).strict(),
34890
+ external_exports2.object({
34891
+ status: external_exports2.literal("pending"),
34892
+ id: ShareLinkIdValidator2,
34893
+ operationId: external_exports2.string().uuid()
34894
+ }).strict()
34895
+ ]);
34896
+ var ShareLinkOwnerStatusOutputValidator2 = external_exports2.discriminatedUnion("status", [
34897
+ external_exports2.object({ status: external_exports2.literal("found"), share: ShareLinkValidator2 }).strict(),
34898
+ external_exports2.object({
34899
+ status: external_exports2.literal("pending"),
34900
+ id: ShareLinkIdValidator2,
34901
+ operationId: external_exports2.string().uuid()
34902
+ }).strict(),
34903
+ external_exports2.object({ status: external_exports2.literal("not_found"), id: ShareLinkIdValidator2 }).strict()
34904
+ ]);
34905
+ var ShareLinkOwnerRecoveryOutputValidator2 = external_exports2.object({ recovery: ShareOwnerRecoveryValidator2 }).strict();
34906
+ var ShareLinkOwnerContentOutputValidator2 = external_exports2.object({
34907
+ id: ShareLinkIdValidator2,
34908
+ contentVersion: safeVersion2,
34909
+ envelope: ShareEnvelopeValidator2
34910
+ }).strict();
34911
+ var ResolveShareLinkInputValidator2 = external_exports2.object({
34912
+ id: ShareLinkIdValidator2,
34913
+ /** Sent only in a POST body; it must never be placed in a share URL. */
34914
+ passcode: external_exports2.string().min(4).max(64).optional()
34915
+ }).strict();
34916
+ var ShareLinkPublicStateValidator2 = external_exports2.discriminatedUnion("state", [
34917
+ external_exports2.object({
34918
+ state: external_exports2.literal("passcode_required"),
34919
+ id: ShareLinkIdValidator2
34920
+ }).strict(),
34921
+ external_exports2.object({ state: external_exports2.literal("try_later"), id: ShareLinkIdValidator2 }).strict(),
34922
+ external_exports2.object({
34923
+ state: external_exports2.literal("active"),
34924
+ id: ShareLinkIdValidator2,
34925
+ title: external_exports2.string().max(120),
34926
+ note: external_exports2.string().max(500).optional(),
34927
+ selectedCount: external_exports2.number().int().min(1).max(MAX_SELECTED_CREDENTIALS2),
34928
+ contentVersion: safeVersion2,
34929
+ contentUrl: external_exports2.string(),
34930
+ sharer: external_exports2.object({
34931
+ displayName: external_exports2.string().max(120),
34932
+ avatar: external_exports2.string().max(2048).optional()
34933
+ }),
34934
+ createdAt: external_exports2.iso.datetime(),
34935
+ updatedAt: external_exports2.iso.datetime(),
34936
+ expiresAt: external_exports2.iso.datetime().nullable()
34937
+ }).strict(),
34938
+ external_exports2.object({
34939
+ state: external_exports2.literal("expired"),
34940
+ id: ShareLinkIdValidator2,
34941
+ expiresAt: external_exports2.iso.datetime()
34942
+ }).strict(),
34943
+ external_exports2.object({
34944
+ state: external_exports2.literal("stopped"),
34945
+ id: ShareLinkIdValidator2,
34946
+ stoppedAt: external_exports2.iso.datetime()
34947
+ }).strict(),
34948
+ external_exports2.object({ state: external_exports2.literal("not_found"), id: ShareLinkIdValidator2 }).strict()
34949
+ ]);
34950
+ var ListShareLinksInputValidator2 = external_exports2.object({
34951
+ limit: external_exports2.number().int().min(1).max(50).default(25),
34952
+ cursor: external_exports2.string().max(512).optional()
34953
+ }).strict();
34954
+ var PaginatedShareLinksValidator2 = PaginationResponseValidator2.extend({
34955
+ records: ShareLinkValidator2.array()
34956
+ });
34957
+ var AcknowledgeViewInputValidator2 = external_exports2.object({
34958
+ receipt: external_exports2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
34959
+ }).strict();
34960
+ var AcknowledgeViewOutputValidator2 = external_exports2.object({ ok: external_exports2.literal(true) }).strict();
34961
+ var SHARE_VIEW_RECEIPT_TTL_SECONDS2 = 10 * 60;
34962
+ var ShareLinkPublicContentViewValidator2 = external_exports2.object({
34963
+ id: ShareLinkIdValidator2,
34964
+ contentVersion: safeVersion2,
34965
+ envelope: ShareEnvelopeValidator2,
34966
+ contentUrl: external_exports2.string(),
34967
+ receipt: external_exports2.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
34968
+ }).strict();
34448
34969
  }
34449
34970
  });
34450
34971
  var require_dist = __commonJS({
@@ -34778,6 +35299,15 @@ var optionalEnvironmentPort = external_exports.preprocess(
34778
35299
  (value) => value === "" || value === void 0 ? void 0 : value,
34779
35300
  environmentPort.optional()
34780
35301
  );
35302
+ var DEFAULT_MAX_CANONICAL_BYTES = 2 * 1024 * 1024;
35303
+ var _a5;
35304
+ var ShareContentCanonicalizationError = (_a5 = class extends Error {
35305
+ constructor(message) {
35306
+ super(message);
35307
+ this.code = "UNSUPPORTED_REQUEST_VALUE";
35308
+ this.name = "ShareContentCanonicalizationError";
35309
+ }
35310
+ }, __name(_a5, "ShareContentCanonicalizationError"), __name2(_a5, "ShareContentCanonicalizationError"), _a5);
34781
35311
  var unwrapBoostCredential = /* @__PURE__ */ __name2((vc) => {
34782
35312
  if (vc?.type?.includes("CertifiedBoostCredential") && vc?.boostCredential) {
34783
35313
  return vc.boostCredential;
@@ -37143,14 +37673,20 @@ var CredentialActivityStatsValidator = external_exports.object({
37143
37673
  failed: external_exports.number(),
37144
37674
  claimRate: external_exports.number()
37145
37675
  });
37146
- var _a5;
37147
- var AuthSessionError = (_a5 = class extends Error {
37676
+ var _a6;
37677
+ var AuthSessionError = (_a6 = class extends Error {
37148
37678
  constructor(message, reason) {
37149
37679
  super(message);
37150
37680
  this.reason = reason;
37151
37681
  this.name = "AuthSessionError";
37152
37682
  }
37153
- }, __name(_a5, "AuthSessionError"), __name3(_a5, "AuthSessionError"), _a5);
37683
+ }, __name(_a6, "AuthSessionError"), __name3(_a6, "AuthSessionError"), _a6);
37684
+ var EscrowPinStatusValidator = external_exports.object({
37685
+ state: external_exports.enum(["none", "enabled", "locked", "stale"]),
37686
+ enabled: external_exports.boolean(),
37687
+ attemptsRemaining: external_exports.number().int().nonnegative(),
37688
+ salt: external_exports.string().optional()
37689
+ });
37154
37690
  var BITSTRING_STATUS_PURPOSES = ["revocation", "suspension"];
37155
37691
  var BitstringStatusPurposeValidator = external_exports.enum(BITSTRING_STATUS_PURPOSES);
37156
37692
  var BitstringStatusListEntryValidator = external_exports.object({
@@ -37259,6 +37795,456 @@ var inAppMessagesFlagValidator = external_exports.object({
37259
37795
  version: external_exports.number().default(1),
37260
37796
  messages: external_exports.array(inAppMessageValidator).default([])
37261
37797
  }).passthrough();
37798
+ var SHARE_LINK_ID_BYTES = 16;
37799
+ var SHARE_CONTENT_KEY_BYTES = 32;
37800
+ var SHARE_IV_BYTES = 12;
37801
+ var SHARE_TAG_BYTES = 16;
37802
+ var MAX_SHARE_CIPHERTEXT_BYTES = 512 * 1024;
37803
+ var MAX_SHARE_RECOVERY_JWE_BYTES = 64 * 1024;
37804
+ var MAX_SELECTED_CREDENTIALS = 50;
37805
+ var MAX_ENDORSEMENTS = 200;
37806
+ var MAX_VP_MEMBERS = MAX_SELECTED_CREDENTIALS + MAX_ENDORSEMENTS;
37807
+ var MAX_SHARE_SOURCE_URI_CHARS = 2048;
37808
+ var MAX_SHARE_LINK_REQUEST_BYTES = 1024 * 1024;
37809
+ var SHARE_LINK_PROTOCOL = "lc-share/v1";
37810
+ var SHARE_RECOVERY_PROTOCOL = "lc-share-recovery/v1";
37811
+ var BASE64URL_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
37812
+ var BASE64URL_LOOKUP = (() => {
37813
+ const table = new Int16Array(128).fill(-1);
37814
+ for (let index = 0; index < BASE64URL_ALPHABET.length; index += 1) {
37815
+ table[BASE64URL_ALPHABET.charCodeAt(index)] = index;
37816
+ }
37817
+ return table;
37818
+ })();
37819
+ var encodeBase64Url = /* @__PURE__ */ __name3((bytes) => {
37820
+ let output = "";
37821
+ for (let index = 0; index < bytes.length; index += 3) {
37822
+ const first = bytes[index];
37823
+ const second = bytes[index + 1];
37824
+ const third = bytes[index + 2];
37825
+ output += BASE64URL_ALPHABET[first >> 2];
37826
+ output += BASE64URL_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
37827
+ if (second === void 0) break;
37828
+ output += BASE64URL_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
37829
+ if (third === void 0) break;
37830
+ output += BASE64URL_ALPHABET[third & 63];
37831
+ }
37832
+ return output;
37833
+ }, "encodeBase64Url");
37834
+ var decodeBase64Url = /* @__PURE__ */ __name3((value) => {
37835
+ if (typeof value !== "string") return null;
37836
+ const output = new Uint8Array(Math.floor(value.length * 6 / 8));
37837
+ let bits = 0;
37838
+ let bitCount = 0;
37839
+ let outputIndex = 0;
37840
+ for (let index = 0; index < value.length; index += 1) {
37841
+ const code = value.charCodeAt(index);
37842
+ const digit = code < 128 ? BASE64URL_LOOKUP[code] : -1;
37843
+ if (digit < 0) return null;
37844
+ bits = bits << 6 | digit;
37845
+ bitCount += 6;
37846
+ if (bitCount >= 8) {
37847
+ bitCount -= 8;
37848
+ output[outputIndex] = bits >> bitCount & 255;
37849
+ outputIndex += 1;
37850
+ }
37851
+ }
37852
+ return output;
37853
+ }, "decodeBase64Url");
37854
+ var isCanonicalBase64Url = /* @__PURE__ */ __name3((value, expectedBytes) => {
37855
+ if (typeof value !== "string") return false;
37856
+ if (expectedBytes !== void 0 && value.length !== Math.ceil(expectedBytes * 4 / 3))
37857
+ return false;
37858
+ const decoded = decodeBase64Url(value);
37859
+ if (decoded === null) return false;
37860
+ if (expectedBytes !== void 0 && decoded.length !== expectedBytes) return false;
37861
+ return encodeBase64Url(decoded) === value;
37862
+ }, "isCanonicalBase64Url");
37863
+ var utf8ByteLength = /* @__PURE__ */ __name3((value) => new TextEncoder().encode(value).length, "utf8ByteLength");
37864
+ var canonicalBase64Url = /* @__PURE__ */ __name3((bytes) => external_exports.string().refine((value) => isCanonicalBase64Url(value, bytes), {
37865
+ message: `must be canonical base64url for exactly ${bytes} bytes`
37866
+ }), "canonicalBase64Url");
37867
+ var ShareLinkIdValidator = canonicalBase64Url(SHARE_LINK_ID_BYTES);
37868
+ var ShareContentKeyValidator = canonicalBase64Url(SHARE_CONTENT_KEY_BYTES);
37869
+ var ShareIvValidator = canonicalBase64Url(SHARE_IV_BYTES);
37870
+ var ShareCiphertextValidator = external_exports.string().refine(
37871
+ (value) => {
37872
+ if (value.length > Math.ceil(MAX_SHARE_CIPHERTEXT_BYTES * 4 / 3)) return false;
37873
+ const decoded = decodeBase64Url(value);
37874
+ if (decoded === null) return false;
37875
+ if (encodeBase64Url(decoded) !== value) return false;
37876
+ return decoded.length >= SHARE_TAG_BYTES && decoded.length <= MAX_SHARE_CIPHERTEXT_BYTES;
37877
+ },
37878
+ {
37879
+ message: `must be canonical base64url decoding to ${SHARE_TAG_BYTES}..${MAX_SHARE_CIPHERTEXT_BYTES} bytes`
37880
+ }
37881
+ );
37882
+ var ShareEnvelopeValidator = external_exports.object({
37883
+ v: external_exports.literal(1),
37884
+ alg: external_exports.literal("A256GCM"),
37885
+ iv: ShareIvValidator,
37886
+ ct: ShareCiphertextValidator
37887
+ }).strict();
37888
+ var safeVersion = external_exports.number().int().min(1).max(2 ** 31 - 1);
37889
+ var safeCredentialIndex = external_exports.number().int().min(0).max(MAX_VP_MEMBERS - 1);
37890
+ var ShareSelectionEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex }).strict();
37891
+ var ShareEndorsementEntryValidator = external_exports.object({ credentialIndex: safeCredentialIndex, targetCredentialIndex: safeCredentialIndex }).strict();
37892
+ var ShareSharerValidator = external_exports.object({
37893
+ profileId: external_exports.string().min(1).max(128),
37894
+ displayName: external_exports.string().min(1).max(120),
37895
+ avatar: external_exports.string().max(2048).optional()
37896
+ }).strict();
37897
+ var presentationShape = VPValidator.extend({
37898
+ verifiableCredential: VCValidator.array().min(1).max(MAX_VP_MEMBERS)
37899
+ });
37900
+ var hasBoundedPresentation = /* @__PURE__ */ __name3((value) => {
37901
+ let credentialCount = 0;
37902
+ const ancestors = /* @__PURE__ */ new Set();
37903
+ const visit = /* @__PURE__ */ __name3((node, depth) => {
37904
+ if (node === null || typeof node !== "object") return true;
37905
+ if (depth > 32 || ancestors.has(node)) return false;
37906
+ ancestors.add(node);
37907
+ try {
37908
+ for (const [key, child] of Object.entries(node)) {
37909
+ if (key === "verifiableCredential") {
37910
+ credentialCount += Array.isArray(child) ? child.length : 1;
37911
+ if (credentialCount > MAX_VP_MEMBERS) return false;
37912
+ }
37913
+ if (!visit(child, depth + 1)) return false;
37914
+ }
37915
+ return true;
37916
+ } finally {
37917
+ ancestors.delete(node);
37918
+ }
37919
+ }, "visit");
37920
+ return visit(value, 0);
37921
+ }, "hasBoundedPresentation");
37922
+ var ShareManifestPresentationValidator = external_exports.custom(
37923
+ (value) => hasBoundedPresentation(value) && presentationShape.safeParse(value).success,
37924
+ { message: "invalid share presentation" }
37925
+ );
37926
+ var SharePayloadValidatorShape = external_exports.object({
37927
+ protocol: external_exports.literal(SHARE_LINK_PROTOCOL),
37928
+ shareId: ShareLinkIdValidator,
37929
+ contentVersion: safeVersion,
37930
+ createdAt: external_exports.iso.datetime(),
37931
+ sharer: ShareSharerValidator,
37932
+ presentation: ShareManifestPresentationValidator,
37933
+ selection: ShareSelectionEntryValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
37934
+ endorsements: ShareEndorsementEntryValidator.array().max(MAX_ENDORSEMENTS).default([])
37935
+ }).strict();
37936
+ var classificationFailure = /* @__PURE__ */ __name3((code, message, path = []) => ({ ok: false, code, message, path }), "classificationFailure");
37937
+ var readSignedClaimId = /* @__PURE__ */ __name3((member) => {
37938
+ if (member === null || typeof member !== "object") return void 0;
37939
+ const record2 = member;
37940
+ const claim = record2.credentialSubject ?? record2.endorsement;
37941
+ if (claim === null || typeof claim !== "object") return void 0;
37942
+ const claimRecord = claim;
37943
+ const nested = claimRecord.endorsement;
37944
+ const nestedId = nested !== null && typeof nested === "object" ? nested.id : void 0;
37945
+ return claimRecord.id ?? nestedId;
37946
+ }, "readSignedClaimId");
37947
+ var classifyShareManifest = /* @__PURE__ */ __name3((payload) => {
37948
+ const members = payload.presentation?.verifiableCredential;
37949
+ if (!Array.isArray(members) || members.length === 0) {
37950
+ return classificationFailure("NO_PRESENTATION_MEMBERS", "presentation has no credentials");
37951
+ }
37952
+ if (members.length > MAX_VP_MEMBERS) {
37953
+ return classificationFailure(
37954
+ "TOO_MANY_VP_MEMBERS",
37955
+ `presentation has ${members.length} members, over the ${MAX_VP_MEMBERS} bound`
37956
+ );
37957
+ }
37958
+ const selection = payload.selection;
37959
+ const endorsements = payload.endorsements ?? [];
37960
+ if (!Array.isArray(selection) || selection.length < 1 || selection.length > MAX_SELECTED_CREDENTIALS) {
37961
+ return classificationFailure("BAD_SELECTION", "selection must contain 1..50 entries");
37962
+ }
37963
+ if (!Array.isArray(endorsements) || endorsements.length > MAX_ENDORSEMENTS) {
37964
+ return classificationFailure(
37965
+ "BAD_ENDORSEMENTS",
37966
+ "endorsements must contain at most 200 entries"
37967
+ );
37968
+ }
37969
+ const selectedIndices = [];
37970
+ const selected = /* @__PURE__ */ new Set();
37971
+ for (let index = 0; index < selection.length; index += 1) {
37972
+ const entry = selection[index];
37973
+ const credentialIndex = entry?.credentialIndex;
37974
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
37975
+ return classificationFailure(
37976
+ "SELECTION_INDEX_OUT_OF_BOUNDS",
37977
+ `selection[${index}].credentialIndex is out of bounds`,
37978
+ ["selection", index, "credentialIndex"]
37979
+ );
37980
+ }
37981
+ if (selected.has(credentialIndex)) {
37982
+ return classificationFailure(
37983
+ "SELECTION_INDEX_DUPLICATE",
37984
+ `selection[${index}].credentialIndex is duplicated`,
37985
+ ["selection", index, "credentialIndex"]
37986
+ );
37987
+ }
37988
+ selected.add(credentialIndex);
37989
+ selectedIndices.push(credentialIndex);
37990
+ }
37991
+ const classified = new Set(selected);
37992
+ const endorsementIndices = [];
37993
+ for (let index = 0; index < endorsements.length; index += 1) {
37994
+ const entry = endorsements[index];
37995
+ const credentialIndex = entry?.credentialIndex;
37996
+ const targetIndex = entry?.targetCredentialIndex;
37997
+ if (!Number.isSafeInteger(credentialIndex) || credentialIndex < 0 || credentialIndex >= members.length) {
37998
+ return classificationFailure(
37999
+ "ENDORSEMENT_INDEX_OUT_OF_BOUNDS",
38000
+ `endorsements[${index}].credentialIndex is out of bounds`,
38001
+ ["endorsements", index, "credentialIndex"]
38002
+ );
38003
+ }
38004
+ if (classified.has(credentialIndex)) {
38005
+ return classificationFailure(
38006
+ "VP_MEMBER_CLASSIFIED_TWICE",
38007
+ `endorsements[${index}].credentialIndex was already classified`,
38008
+ ["endorsements", index, "credentialIndex"]
38009
+ );
38010
+ }
38011
+ if (!selected.has(targetIndex)) {
38012
+ return classificationFailure(
38013
+ "ENDORSEMENT_TARGET_NOT_SELECTED",
38014
+ `endorsements[${index}].targetCredentialIndex must reference a selected credential`,
38015
+ ["endorsements", index, "targetCredentialIndex"]
38016
+ );
38017
+ }
38018
+ const referenced = readSignedClaimId(members[credentialIndex]);
38019
+ const target = members[targetIndex];
38020
+ const targetId = target !== null && typeof target === "object" ? target.id : void 0;
38021
+ if (typeof referenced !== "string" || typeof targetId !== "string" || referenced !== targetId) {
38022
+ return classificationFailure(
38023
+ "ENDORSEMENT_TARGET_UNBOUND",
38024
+ `endorsements[${index}] claim does not reference the target credential id`,
38025
+ ["endorsements", index]
38026
+ );
38027
+ }
38028
+ classified.add(credentialIndex);
38029
+ endorsementIndices.push(credentialIndex);
38030
+ }
38031
+ if (classified.size !== members.length) {
38032
+ return classificationFailure(
38033
+ "UNCLASSIFIED_VP_MEMBER",
38034
+ "every presentation member must be classified exactly once",
38035
+ ["presentation", "verifiableCredential"]
38036
+ );
38037
+ }
38038
+ return {
38039
+ ok: true,
38040
+ classification: { selectedIndices, endorsementIndices, memberCount: members.length }
38041
+ };
38042
+ }, "classifyShareManifest");
38043
+ var SharePayloadValidator = SharePayloadValidatorShape.superRefine((payload, ctx) => {
38044
+ const result = classifyShareManifest(payload);
38045
+ if (!result.ok) {
38046
+ ctx.addIssue({
38047
+ code: "custom",
38048
+ message: result.message,
38049
+ path: result.path,
38050
+ params: { shareLinkCode: result.code }
38051
+ });
38052
+ }
38053
+ });
38054
+ var ShareRecoverySelectionValidator = external_exports.object({
38055
+ ref: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS),
38056
+ order: external_exports.number().int().min(0).max(MAX_SELECTED_CREDENTIALS - 1)
38057
+ }).strict();
38058
+ var ShareRecoveryEndorsementValidator = external_exports.object({ targetRef: external_exports.string().min(1).max(MAX_SHARE_SOURCE_URI_CHARS) }).strict();
38059
+ var ShareRecoveryPlaintextValidator = external_exports.object({
38060
+ protocol: external_exports.literal(SHARE_RECOVERY_PROTOCOL),
38061
+ shareId: ShareLinkIdValidator,
38062
+ ownerProfileId: external_exports.string().min(1).max(128),
38063
+ createdAt: external_exports.iso.datetime(),
38064
+ latest: external_exports.object({ contentVersion: safeVersion, key: ShareContentKeyValidator }).strict(),
38065
+ selection: ShareRecoverySelectionValidator.array().min(1).max(MAX_SELECTED_CREDENTIALS),
38066
+ endorsements: ShareRecoveryEndorsementValidator.array().max(MAX_ENDORSEMENTS).default([])
38067
+ }).strict().superRefine((recovery, ctx) => {
38068
+ const orders = /* @__PURE__ */ new Set();
38069
+ recovery.selection.forEach((entry, index) => {
38070
+ if (entry.order >= recovery.selection.length) {
38071
+ ctx.addIssue({
38072
+ code: "custom",
38073
+ message: "order must be within the selection bounds",
38074
+ path: ["selection", index, "order"]
38075
+ });
38076
+ }
38077
+ if (orders.has(entry.order)) {
38078
+ ctx.addIssue({
38079
+ code: "custom",
38080
+ message: "order must be unique within the selection",
38081
+ path: ["selection", index, "order"]
38082
+ });
38083
+ }
38084
+ orders.add(entry.order);
38085
+ });
38086
+ });
38087
+ var ShareOwnerRecoveryValidator = JWEValidator.refine(
38088
+ (value) => utf8ByteLength(JSON.stringify(value)) <= MAX_SHARE_RECOVERY_JWE_BYTES,
38089
+ { message: `serialized recovery JWE must be at most ${MAX_SHARE_RECOVERY_JWE_BYTES} bytes` }
38090
+ );
38091
+ var ShareLinkStatusValidator = external_exports.enum(["pending", "active", "stopped"]);
38092
+ var ShareContentStateValidator = external_exports.enum(["staging", "finalized", "content_missing"]);
38093
+ var ShareLinkValidator = external_exports.object({
38094
+ id: ShareLinkIdValidator,
38095
+ title: external_exports.string().min(1).max(120),
38096
+ note: external_exports.string().max(500).optional(),
38097
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
38098
+ version: safeVersion,
38099
+ contentVersion: safeVersion,
38100
+ status: ShareLinkStatusValidator,
38101
+ contentState: ShareContentStateValidator,
38102
+ createdAt: external_exports.iso.datetime(),
38103
+ updatedAt: external_exports.iso.datetime(),
38104
+ expiresAt: external_exports.iso.datetime().nullable(),
38105
+ stoppedAt: external_exports.iso.datetime().nullable(),
38106
+ lastViewedAt: external_exports.iso.datetime().nullable(),
38107
+ viewCount: external_exports.number().int().min(0).optional(),
38108
+ passcodeProtected: external_exports.boolean(),
38109
+ notifyOnView: external_exports.boolean(),
38110
+ minorPolicy: external_exports.object({
38111
+ isMinor: external_exports.boolean().nullable(),
38112
+ policyResolved: external_exports.boolean(),
38113
+ defaultExpiryDays: external_exports.union([external_exports.literal(30), external_exports.literal(365)]),
38114
+ viewCountingEnabled: external_exports.boolean()
38115
+ }),
38116
+ /**
38117
+ * Guarded application/API URL for the content. Optional because owner APIs in
38118
+ * D1 have no public resolve/content endpoint yet; it must never be a
38119
+ * LearnCloud object URL or carry a fabricated decryption key.
38120
+ */
38121
+ contentUrl: external_exports.string().optional()
38122
+ });
38123
+ var clientRequestId = external_exports.string().uuid();
38124
+ var CreateShareLinkInputValidator = external_exports.object({
38125
+ id: ShareLinkIdValidator,
38126
+ clientRequestId,
38127
+ title: external_exports.string().min(1).max(120),
38128
+ note: external_exports.string().max(500).optional(),
38129
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
38130
+ passcode: external_exports.string().min(8).max(64).optional(),
38131
+ notifyOnView: external_exports.boolean().default(false),
38132
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
38133
+ contentVersion: external_exports.literal(1),
38134
+ envelope: ShareEnvelopeValidator,
38135
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator
38136
+ }).strict();
38137
+ var UpdateShareLinkInputValidator = external_exports.object({
38138
+ id: ShareLinkIdValidator,
38139
+ expectedVersion: safeVersion,
38140
+ clientRequestId,
38141
+ title: external_exports.string().min(1).max(120).optional(),
38142
+ note: external_exports.string().max(500).nullable().optional(),
38143
+ expiresAt: external_exports.iso.datetime().nullable().optional(),
38144
+ /** Omitted preserves the current passcode, null removes it, and a string replaces it. */
38145
+ passcode: external_exports.string().min(8).max(64).nullable().optional(),
38146
+ notifyOnView: external_exports.boolean().optional(),
38147
+ contentVersion: safeVersion.optional(),
38148
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS).optional(),
38149
+ envelope: ShareEnvelopeValidator.optional(),
38150
+ ownerEncryptedRecovery: ShareOwnerRecoveryValidator.optional()
38151
+ }).strict().superRefine((value, ctx) => {
38152
+ const provided = [
38153
+ value.contentVersion,
38154
+ value.selectedCount,
38155
+ value.envelope,
38156
+ value.ownerEncryptedRecovery
38157
+ ].filter((field) => field !== void 0).length;
38158
+ if (provided !== 0 && provided !== 4) {
38159
+ ctx.addIssue({
38160
+ code: "custom",
38161
+ message: "content replacement requires contentVersion, selectedCount, envelope and ownerEncryptedRecovery together"
38162
+ });
38163
+ }
38164
+ });
38165
+ var ShareLinkIdInputValidator = external_exports.object({ id: ShareLinkIdValidator }).strict();
38166
+ var ShareLinkOperationKeyInputValidator = external_exports.object({ id: ShareLinkIdValidator, operationId: external_exports.string().uuid() }).strict();
38167
+ var ShareLinkOwnerCommitOutputValidator = external_exports.discriminatedUnion("status", [
38168
+ external_exports.object({ status: external_exports.literal("completed"), share: ShareLinkValidator }).strict(),
38169
+ external_exports.object({
38170
+ status: external_exports.literal("pending"),
38171
+ id: ShareLinkIdValidator,
38172
+ operationId: external_exports.string().uuid()
38173
+ }).strict()
38174
+ ]);
38175
+ var ShareLinkOwnerStatusOutputValidator = external_exports.discriminatedUnion("status", [
38176
+ external_exports.object({ status: external_exports.literal("found"), share: ShareLinkValidator }).strict(),
38177
+ external_exports.object({
38178
+ status: external_exports.literal("pending"),
38179
+ id: ShareLinkIdValidator,
38180
+ operationId: external_exports.string().uuid()
38181
+ }).strict(),
38182
+ external_exports.object({ status: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
38183
+ ]);
38184
+ var ShareLinkOwnerRecoveryOutputValidator = external_exports.object({ recovery: ShareOwnerRecoveryValidator }).strict();
38185
+ var ShareLinkOwnerContentOutputValidator = external_exports.object({
38186
+ id: ShareLinkIdValidator,
38187
+ contentVersion: safeVersion,
38188
+ envelope: ShareEnvelopeValidator
38189
+ }).strict();
38190
+ var ResolveShareLinkInputValidator = external_exports.object({
38191
+ id: ShareLinkIdValidator,
38192
+ /** Sent only in a POST body; it must never be placed in a share URL. */
38193
+ passcode: external_exports.string().min(4).max(64).optional()
38194
+ }).strict();
38195
+ var ShareLinkPublicStateValidator = external_exports.discriminatedUnion("state", [
38196
+ external_exports.object({
38197
+ state: external_exports.literal("passcode_required"),
38198
+ id: ShareLinkIdValidator
38199
+ }).strict(),
38200
+ external_exports.object({ state: external_exports.literal("try_later"), id: ShareLinkIdValidator }).strict(),
38201
+ external_exports.object({
38202
+ state: external_exports.literal("active"),
38203
+ id: ShareLinkIdValidator,
38204
+ title: external_exports.string().max(120),
38205
+ note: external_exports.string().max(500).optional(),
38206
+ selectedCount: external_exports.number().int().min(1).max(MAX_SELECTED_CREDENTIALS),
38207
+ contentVersion: safeVersion,
38208
+ contentUrl: external_exports.string(),
38209
+ sharer: external_exports.object({
38210
+ displayName: external_exports.string().max(120),
38211
+ avatar: external_exports.string().max(2048).optional()
38212
+ }),
38213
+ createdAt: external_exports.iso.datetime(),
38214
+ updatedAt: external_exports.iso.datetime(),
38215
+ expiresAt: external_exports.iso.datetime().nullable()
38216
+ }).strict(),
38217
+ external_exports.object({
38218
+ state: external_exports.literal("expired"),
38219
+ id: ShareLinkIdValidator,
38220
+ expiresAt: external_exports.iso.datetime()
38221
+ }).strict(),
38222
+ external_exports.object({
38223
+ state: external_exports.literal("stopped"),
38224
+ id: ShareLinkIdValidator,
38225
+ stoppedAt: external_exports.iso.datetime()
38226
+ }).strict(),
38227
+ external_exports.object({ state: external_exports.literal("not_found"), id: ShareLinkIdValidator }).strict()
38228
+ ]);
38229
+ var ListShareLinksInputValidator = external_exports.object({
38230
+ limit: external_exports.number().int().min(1).max(50).default(25),
38231
+ cursor: external_exports.string().max(512).optional()
38232
+ }).strict();
38233
+ var PaginatedShareLinksValidator = PaginationResponseValidator.extend({
38234
+ records: ShareLinkValidator.array()
38235
+ });
38236
+ var AcknowledgeViewInputValidator = external_exports.object({
38237
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
38238
+ }).strict();
38239
+ var AcknowledgeViewOutputValidator = external_exports.object({ ok: external_exports.literal(true) }).strict();
38240
+ var SHARE_VIEW_RECEIPT_TTL_SECONDS = 10 * 60;
38241
+ var ShareLinkPublicContentViewValidator = external_exports.object({
38242
+ id: ShareLinkIdValidator,
38243
+ contentVersion: safeVersion,
38244
+ envelope: ShareEnvelopeValidator,
38245
+ contentUrl: external_exports.string(),
38246
+ receipt: external_exports.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/)
38247
+ }).strict();
37262
38248
 
37263
38249
  // src/read.ts
37264
38250
  var isTemplateRenderMethod = /* @__PURE__ */ __name((rm) => TemplateRenderMethodValidator.safeParse(rm).success, "isTemplateRenderMethod");