@learncard/learn-card-plugin 1.2.17 → 1.2.18

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.
@@ -2,7 +2,9 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
4
  // src/verify.ts
5
- import { VerificationStatusEnum } from "@learncard/types";
5
+ import {
6
+ VerificationStatusEnum
7
+ } from "@learncard/types";
6
8
 
7
9
  // ../../../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.js
8
10
  function _typeof(o) {
@@ -1693,11 +1695,67 @@ function cleanEscapedString(input) {
1693
1695
  __name(cleanEscapedString, "cleanEscapedString");
1694
1696
 
1695
1697
  // src/verify.ts
1696
- var transformErrorCheck = /* @__PURE__ */ __name((error, _credential) => {
1698
+ var STATUS_CHECKS = /* @__PURE__ */ new Set(["status", "credentialStatus"]);
1699
+ var isStatusCheck = /* @__PURE__ */ __name((check) => STATUS_CHECKS.has(check), "isStatusCheck");
1700
+ var getStatusPurposeLabel = /* @__PURE__ */ __name((statusPurpose) => {
1701
+ switch (statusPurpose) {
1702
+ case "revocation":
1703
+ return "Revocation";
1704
+ case "suspension":
1705
+ return "Suspension";
1706
+ default:
1707
+ return statusPurpose.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/[-_]+/g, " ").replace(/\s+/g, " ").trim().replace(/\b\w/g, (letter) => letter.toUpperCase());
1708
+ }
1709
+ }, "getStatusPurposeLabel");
1710
+ var getClearStatusMessage = /* @__PURE__ */ __name((statusPurpose) => {
1711
+ switch (statusPurpose) {
1712
+ case "revocation":
1713
+ return "Not Revoked";
1714
+ case "suspension":
1715
+ return "Not Suspended";
1716
+ default:
1717
+ return `${getStatusPurposeLabel(statusPurpose)} Clear`;
1718
+ }
1719
+ }, "getClearStatusMessage");
1720
+ var getSetStatusMessage = /* @__PURE__ */ __name((statusPurpose) => {
1721
+ switch (statusPurpose) {
1722
+ case "revocation":
1723
+ return "Revoked";
1724
+ case "suspension":
1725
+ return "Suspended";
1726
+ default:
1727
+ return `${getStatusPurposeLabel(statusPurpose)} Set`;
1728
+ }
1729
+ }, "getSetStatusMessage");
1730
+ var getUniqueStatusPurposes = /* @__PURE__ */ __name((statuses) => [
1731
+ ...new Set(statuses.map((status) => status.statusPurpose))
1732
+ ], "getUniqueStatusPurposes");
1733
+ var transformStatusCheckMessage = /* @__PURE__ */ __name((statusEntries = []) => {
1734
+ const setStatuses = statusEntries.filter((status) => status.isSet);
1735
+ if (setStatuses.length > 0) {
1736
+ return getUniqueStatusPurposes(setStatuses).map(getSetStatusMessage).join(", ");
1737
+ }
1738
+ const clearPurposes = getUniqueStatusPurposes(statusEntries);
1739
+ if (clearPurposes.length === 1) return getClearStatusMessage(clearPurposes[0]);
1740
+ return "Active";
1741
+ }, "transformStatusCheckMessage");
1742
+ var getStatusErrorMessage = /* @__PURE__ */ __name((error, verificationCheck) => {
1743
+ if (/credential is revoked/i.test(error)) return "Status: Revoked";
1744
+ if (/credential is suspended/i.test(error)) return "Status: Suspended";
1745
+ const statusPurpose = error.match(/credential status is set for purpose:\s*([^.]+)/i)?.[1];
1746
+ if (statusPurpose) return `Status: ${getSetStatusMessage(statusPurpose.trim())}`;
1747
+ if (!/status/i.test(error)) return;
1748
+ const setStatuses = verificationCheck?.status?.filter((status) => status.isSet) ?? [];
1749
+ if (setStatuses.length > 0) return `Status: ${transformStatusCheckMessage(setStatuses)}`;
1750
+ }, "getStatusErrorMessage");
1751
+ var transformErrorCheck = /* @__PURE__ */ __name((error, _credential, verificationCheck) => {
1752
+ if (getStatusErrorMessage(error, verificationCheck)) return "status";
1697
1753
  const prefix = error.split(" error")[0];
1698
1754
  return prefix || error;
1699
1755
  }, "transformErrorCheck");
1700
- var transformErrorMessage = /* @__PURE__ */ __name((error, credential) => {
1756
+ var transformErrorMessage = /* @__PURE__ */ __name((error, credential, verificationCheck) => {
1757
+ const statusErrorMessage = getStatusErrorMessage(error, verificationCheck);
1758
+ if (statusErrorMessage) return statusErrorMessage;
1701
1759
  if (error.startsWith("expiration")) {
1702
1760
  return credential.expirationDate ? `Expired ${format(new Date(credential.expirationDate), "dd MMM yyyy").toUpperCase()}` : "Expired";
1703
1761
  }
@@ -1708,7 +1766,8 @@ var transformWarningCheck = /* @__PURE__ */ __name((warning, _credential) => {
1708
1766
  const prefix = warning.split(" warning")[0];
1709
1767
  return prefix || warning;
1710
1768
  }, "transformWarningCheck");
1711
- var transformCheckMessage = /* @__PURE__ */ __name((check, credential) => {
1769
+ var transformCheckMessage = /* @__PURE__ */ __name((check, credential, verificationCheck) => {
1770
+ if (isStatusCheck(check)) return transformStatusCheckMessage(verificationCheck.status);
1712
1771
  return {
1713
1772
  proof: "Valid",
1714
1773
  expiration: credential.expirationDate ? `Expires ${format(
@@ -1725,8 +1784,8 @@ var verifyCredential = /* @__PURE__ */ __name((learnCard) => {
1725
1784
  rawVerificationCheck.errors.forEach((error) => {
1726
1785
  verificationItems.push({
1727
1786
  status: VerificationStatusEnum.Failed,
1728
- check: transformErrorCheck(error, credential),
1729
- details: transformErrorMessage(error, credential)
1787
+ check: transformErrorCheck(error, credential, rawVerificationCheck),
1788
+ details: transformErrorMessage(error, credential, rawVerificationCheck)
1730
1789
  });
1731
1790
  });
1732
1791
  rawVerificationCheck.warnings.forEach((warning) => {
@@ -1739,8 +1798,8 @@ var verifyCredential = /* @__PURE__ */ __name((learnCard) => {
1739
1798
  rawVerificationCheck.checks.forEach((check) => {
1740
1799
  verificationItems.push({
1741
1800
  status: VerificationStatusEnum.Success,
1742
- check,
1743
- message: transformCheckMessage(check, credential)
1801
+ check: isStatusCheck(check) ? "status" : check,
1802
+ message: transformCheckMessage(check, credential, rawVerificationCheck)
1744
1803
  });
1745
1804
  });
1746
1805
  return verificationItems;