@learncard/learn-cloud-plugin 2.3.26 → 2.3.28

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.
@@ -6109,7 +6109,7 @@ var require_lib = __commonJS({
6109
6109
  // src/plugin.ts
6110
6110
  var import_lodash = __toESM(require_lodash(), 1);
6111
6111
  import { getClient } from "@learncard/learn-cloud-client";
6112
- import { isEncrypted } from "@learncard/helpers";
6112
+ import { isEncrypted, resolveStorageReadResult } from "@learncard/helpers";
6113
6113
 
6114
6114
  // ../../../node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/external.js
6115
6115
  var external_exports = {};
@@ -19640,6 +19640,17 @@ var CredentialFormatValidator = external_exports.enum([
19640
19640
  "vc+sd-jwt",
19641
19641
  "mso_mdoc"
19642
19642
  ]);
19643
+ var StoredCredentialEnvelopeValidator = external_exports.object({
19644
+ format: CredentialFormatValidator,
19645
+ data: external_exports.string()
19646
+ }).passthrough();
19647
+ var isStoredCredentialEnvelope = /* @__PURE__ */ __name2((value) => {
19648
+ if (!value || typeof value !== "object") return false;
19649
+ const candidate = value;
19650
+ if (typeof candidate.format !== "string") return false;
19651
+ if (!CredentialFormatValidator.safeParse(candidate.format).success) return false;
19652
+ return typeof candidate.data === "string" || candidate.data instanceof Uint8Array;
19653
+ }, "isStoredCredentialEnvelope");
19643
19654
  var StatusCheckEntryValidator = external_exports.object({
19644
19655
  /**
19645
19656
  * The `credentialStatus.type` as it appeared on the credential.
@@ -19726,6 +19737,13 @@ var parseRegexString = /* @__PURE__ */ __name2((regexStr) => {
19726
19737
  if (!match) throw new Error("Invalid RegExp string format");
19727
19738
  return { pattern: match[1], flags: match[2] };
19728
19739
  }, "parseRegexString");
19740
+ var withStringOverride = /* @__PURE__ */ __name2((schema) => {
19741
+ const metaSchema = schema;
19742
+ if (typeof metaSchema.meta === "function") {
19743
+ return metaSchema.meta({ override: { type: "string" } });
19744
+ }
19745
+ return schema;
19746
+ }, "withStringOverride");
19729
19747
  var RegExpStringValidator = external_exports.string().refine(
19730
19748
  (str) => {
19731
19749
  try {
@@ -19745,9 +19763,9 @@ var RegExpStringValidator = external_exports.string().refine(
19745
19763
  } catch (error46) {
19746
19764
  throw new Error(`Invalid RegExp: ${error46.message}`);
19747
19765
  }
19748
- }).meta({ override: { type: "string" } });
19749
- var RegExpValidator = external_exports.instanceof(RegExp).meta({ override: { type: "string" } }).or(RegExpStringValidator).meta({ override: { type: "string" } });
19750
- var BaseStringQuery = external_exports.string().or(external_exports.object({ $in: external_exports.string().array() })).or(external_exports.object({ $regex: RegExpValidator.meta({ override: { type: "string" } }) }));
19766
+ });
19767
+ var RegExpValidator = withStringOverride(external_exports.instanceof(RegExp).or(RegExpStringValidator));
19768
+ var BaseStringQuery = external_exports.string().or(external_exports.object({ $in: external_exports.string().array() })).or(external_exports.object({ $regex: RegExpValidator }));
19751
19769
  var StringQuery = external_exports.union([
19752
19770
  BaseStringQuery,
19753
19771
  external_exports.object({
@@ -19971,7 +19989,8 @@ var BoostRecipientValidator = external_exports.object({
19971
19989
  to: LCNVisibleProfileValidator,
19972
19990
  from: external_exports.string(),
19973
19991
  received: external_exports.string().optional(),
19974
- uri: external_exports.string().optional()
19992
+ uri: external_exports.string().optional(),
19993
+ status: external_exports.enum(["active", "revoked", "suspended"]).optional()
19975
19994
  });
19976
19995
  var PaginatedBoostRecipientsValidator = PaginationResponseValidator.extend({
19977
19996
  records: BoostRecipientValidator.array()
@@ -19981,7 +20000,8 @@ var BoostRecipientWithChildrenValidator = external_exports.object({
19981
20000
  from: external_exports.string(),
19982
20001
  received: external_exports.string().optional(),
19983
20002
  boostUris: external_exports.array(external_exports.string()),
19984
- credentialUris: external_exports.array(external_exports.string()).optional()
20003
+ credentialUris: external_exports.array(external_exports.string()).optional(),
20004
+ status: external_exports.enum(["active", "revoked", "suspended"]).optional()
19985
20005
  });
19986
20006
  var PaginatedBoostRecipientsWithChildrenValidator = PaginationResponseValidator.extend({
19987
20007
  records: BoostRecipientWithChildrenValidator.array()
@@ -21067,7 +21087,8 @@ var CredentialActivityValidator = external_exports.object({
21067
21087
  inboxCredentialId: external_exports.string().optional(),
21068
21088
  integrationId: external_exports.string().optional(),
21069
21089
  source: CredentialActivitySourceTypeValidator,
21070
- metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
21090
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
21091
+ status: external_exports.enum(["active", "revoked", "suspended"]).optional()
21071
21092
  });
21072
21093
  var CredentialActivityWithDetailsValidator = CredentialActivityValidator.extend({
21073
21094
  boost: external_exports.object({
@@ -21225,6 +21246,19 @@ var generateEncryptedRecord = /* @__PURE__ */ __name(async (learnCard, record2,
21225
21246
  }, "generateEncryptedRecord");
21226
21247
 
21227
21248
  // src/plugin.ts
21249
+ var uint8ArrayToBase64Url = /* @__PURE__ */ __name((bytes) => {
21250
+ let binary = "";
21251
+ for (let i = 0; i < bytes.length; i += 1) binary += String.fromCharCode(bytes[i]);
21252
+ const base643 = typeof btoa === "function" ? btoa(binary) : Buffer.from(binary, "binary").toString("base64");
21253
+ return base643.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
21254
+ }, "uint8ArrayToBase64Url");
21255
+ var normalizeEnvelopeForTransport = /* @__PURE__ */ __name((value) => {
21256
+ if (!isStoredCredentialEnvelope(value)) {
21257
+ return value;
21258
+ }
21259
+ if (typeof value.data === "string") return value;
21260
+ return { ...value, data: uint8ArrayToBase64Url(value.data) };
21261
+ }, "normalizeEnvelopeForTransport");
21228
21262
  var getLearnCloudClient = /* @__PURE__ */ __name(async (url2, learnCard) => {
21229
21263
  return getClient(url2, async (challenge) => {
21230
21264
  const jwt2 = await learnCard.invoke.getDidAuthVp({ proofFormat: "jwt", challenge });
@@ -21428,7 +21462,9 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
21428
21462
  if (!result) return null;
21429
21463
  try {
21430
21464
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
21431
- return await VCValidator.or(VPValidator).parseAsync(decryptedResult);
21465
+ const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
21466
+ const resolved = resolveStorageReadResult(parsed);
21467
+ return resolved === void 0 || isStoredCredentialEnvelope(resolved) ? null : resolved;
21432
21468
  } catch (error46) {
21433
21469
  _learnCard.debug?.(error46);
21434
21470
  return null;
@@ -21466,7 +21502,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
21466
21502
  learnCard.debug?.("LearnCloud read.get result", result);
21467
21503
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
21468
21504
  learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
21469
- return await VCValidator.or(VPValidator).parseAsync(decryptedResult);
21505
+ const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
21506
+ return resolveStorageReadResult(parsed);
21470
21507
  } catch (error46) {
21471
21508
  _learnCard.debug?.(error46);
21472
21509
  return void 0;
@@ -21477,7 +21514,8 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
21477
21514
  learnCard.debug?.("LearnCloud read.get result", result);
21478
21515
  const decryptedResult = await _learnCard.invoke.decryptDagJwe(result);
21479
21516
  learnCard.debug?.("LearnCloud read.get decryptedResult", decryptedResult);
21480
- return await VCValidator.or(VPValidator).parseAsync(decryptedResult);
21517
+ const parsed = await VCValidator.or(VPValidator).or(StoredCredentialEnvelopeValidator).parseAsync(decryptedResult);
21518
+ return resolveStorageReadResult(parsed);
21481
21519
  } catch (error46) {
21482
21520
  _learnCard.debug?.(error46);
21483
21521
  return void 0;
@@ -21487,14 +21525,16 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url2,
21487
21525
  store: {
21488
21526
  upload: /* @__PURE__ */ __name(async (_learnCard, credential) => {
21489
21527
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
21490
- return client.storage.store.mutate({ item: credential });
21528
+ return client.storage.store.mutate({
21529
+ item: normalizeEnvelopeForTransport(credential)
21530
+ });
21491
21531
  }, "upload"),
21492
21532
  uploadEncrypted: /* @__PURE__ */ __name(async (_learnCard, credential, { recipients = [] } = { recipients: [] }) => {
21493
21533
  _learnCard.debug?.("learnCard.store['LearnCard Network'].upload");
21494
- const jwe = await _learnCard.invoke.createDagJwe(credential, [
21495
- _learnCard.id.did(),
21496
- ...recipients
21497
- ]);
21534
+ const jwe = await _learnCard.invoke.createDagJwe(
21535
+ normalizeEnvelopeForTransport(credential),
21536
+ [_learnCard.id.did(), ...recipients]
21537
+ );
21498
21538
  return client.storage.store.mutate({ item: jwe });
21499
21539
  }, "uploadEncrypted"),
21500
21540
  delete: /* @__PURE__ */ __name(async (_learnCard, uri) => {