@learncard/learn-card-plugin 1.2.17 → 1.2.19

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.
@@ -1717,11 +1717,67 @@ function cleanEscapedString(input) {
1717
1717
  __name(cleanEscapedString, "cleanEscapedString");
1718
1718
 
1719
1719
  // src/verify.ts
1720
- var transformErrorCheck = /* @__PURE__ */ __name((error, _credential) => {
1720
+ var STATUS_CHECKS = /* @__PURE__ */ new Set(["status", "credentialStatus"]);
1721
+ var isStatusCheck = /* @__PURE__ */ __name((check) => STATUS_CHECKS.has(check), "isStatusCheck");
1722
+ var getStatusPurposeLabel = /* @__PURE__ */ __name((statusPurpose) => {
1723
+ switch (statusPurpose) {
1724
+ case "revocation":
1725
+ return "Revocation";
1726
+ case "suspension":
1727
+ return "Suspension";
1728
+ default:
1729
+ return statusPurpose.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/[-_]+/g, " ").replace(/\s+/g, " ").trim().replace(/\b\w/g, (letter) => letter.toUpperCase());
1730
+ }
1731
+ }, "getStatusPurposeLabel");
1732
+ var getClearStatusMessage = /* @__PURE__ */ __name((statusPurpose) => {
1733
+ switch (statusPurpose) {
1734
+ case "revocation":
1735
+ return "Not Revoked";
1736
+ case "suspension":
1737
+ return "Not Suspended";
1738
+ default:
1739
+ return `${getStatusPurposeLabel(statusPurpose)} Clear`;
1740
+ }
1741
+ }, "getClearStatusMessage");
1742
+ var getSetStatusMessage = /* @__PURE__ */ __name((statusPurpose) => {
1743
+ switch (statusPurpose) {
1744
+ case "revocation":
1745
+ return "Revoked";
1746
+ case "suspension":
1747
+ return "Suspended";
1748
+ default:
1749
+ return `${getStatusPurposeLabel(statusPurpose)} Set`;
1750
+ }
1751
+ }, "getSetStatusMessage");
1752
+ var getUniqueStatusPurposes = /* @__PURE__ */ __name((statuses) => [
1753
+ ...new Set(statuses.map((status) => status.statusPurpose))
1754
+ ], "getUniqueStatusPurposes");
1755
+ var transformStatusCheckMessage = /* @__PURE__ */ __name((statusEntries = []) => {
1756
+ const setStatuses = statusEntries.filter((status) => status.isSet);
1757
+ if (setStatuses.length > 0) {
1758
+ return getUniqueStatusPurposes(setStatuses).map(getSetStatusMessage).join(", ");
1759
+ }
1760
+ const clearPurposes = getUniqueStatusPurposes(statusEntries);
1761
+ if (clearPurposes.length === 1) return getClearStatusMessage(clearPurposes[0]);
1762
+ return "Active";
1763
+ }, "transformStatusCheckMessage");
1764
+ var getStatusErrorMessage = /* @__PURE__ */ __name((error, verificationCheck) => {
1765
+ if (/credential is revoked/i.test(error)) return "Status: Revoked";
1766
+ if (/credential is suspended/i.test(error)) return "Status: Suspended";
1767
+ const statusPurpose = error.match(/credential status is set for purpose:\s*([^.]+)/i)?.[1];
1768
+ if (statusPurpose) return `Status: ${getSetStatusMessage(statusPurpose.trim())}`;
1769
+ if (!/status/i.test(error)) return;
1770
+ const setStatuses = verificationCheck?.status?.filter((status) => status.isSet) ?? [];
1771
+ if (setStatuses.length > 0) return `Status: ${transformStatusCheckMessage(setStatuses)}`;
1772
+ }, "getStatusErrorMessage");
1773
+ var transformErrorCheck = /* @__PURE__ */ __name((error, _credential, verificationCheck) => {
1774
+ if (getStatusErrorMessage(error, verificationCheck)) return "status";
1721
1775
  const prefix = error.split(" error")[0];
1722
1776
  return prefix || error;
1723
1777
  }, "transformErrorCheck");
1724
- var transformErrorMessage = /* @__PURE__ */ __name((error, credential) => {
1778
+ var transformErrorMessage = /* @__PURE__ */ __name((error, credential, verificationCheck) => {
1779
+ const statusErrorMessage = getStatusErrorMessage(error, verificationCheck);
1780
+ if (statusErrorMessage) return statusErrorMessage;
1725
1781
  if (error.startsWith("expiration")) {
1726
1782
  return credential.expirationDate ? `Expired ${format(new Date(credential.expirationDate), "dd MMM yyyy").toUpperCase()}` : "Expired";
1727
1783
  }
@@ -1732,7 +1788,8 @@ var transformWarningCheck = /* @__PURE__ */ __name((warning, _credential) => {
1732
1788
  const prefix = warning.split(" warning")[0];
1733
1789
  return prefix || warning;
1734
1790
  }, "transformWarningCheck");
1735
- var transformCheckMessage = /* @__PURE__ */ __name((check, credential) => {
1791
+ var transformCheckMessage = /* @__PURE__ */ __name((check, credential, verificationCheck) => {
1792
+ if (isStatusCheck(check)) return transformStatusCheckMessage(verificationCheck.status);
1736
1793
  return {
1737
1794
  proof: "Valid",
1738
1795
  expiration: credential.expirationDate ? `Expires ${format(
@@ -1749,8 +1806,8 @@ var verifyCredential = /* @__PURE__ */ __name((learnCard) => {
1749
1806
  rawVerificationCheck.errors.forEach((error) => {
1750
1807
  verificationItems.push({
1751
1808
  status: import_types.VerificationStatusEnum.Failed,
1752
- check: transformErrorCheck(error, credential),
1753
- details: transformErrorMessage(error, credential)
1809
+ check: transformErrorCheck(error, credential, rawVerificationCheck),
1810
+ details: transformErrorMessage(error, credential, rawVerificationCheck)
1754
1811
  });
1755
1812
  });
1756
1813
  rawVerificationCheck.warnings.forEach((warning) => {
@@ -1763,8 +1820,8 @@ var verifyCredential = /* @__PURE__ */ __name((learnCard) => {
1763
1820
  rawVerificationCheck.checks.forEach((check) => {
1764
1821
  verificationItems.push({
1765
1822
  status: import_types.VerificationStatusEnum.Success,
1766
- check,
1767
- message: transformCheckMessage(check, credential)
1823
+ check: isStatusCheck(check) ? "status" : check,
1824
+ message: transformCheckMessage(check, credential, rawVerificationCheck)
1768
1825
  });
1769
1826
  });
1770
1827
  return verificationItems;