export const NDC_CREDENTIAL_REFERENCE_OWNER = "ndc_l2_credentials"; const CREDENTIAL_REFERENCE_PATTERN = /^ndc-credref:[A-Za-z0-9][A-Za-z0-9._:-]{7,240}$/; export function normalizeNdcCredentialReference(input) { if (!input || typeof input !== "object" || Array.isArray(input)) { throw new TypeError("ndc_credential_reference_invalid"); } for (const key of Object.keys(input)) { if (!new Set(["owner", "reference"]).has(key)) { throw new TypeError(`ndc_credential_reference_field_unexpected:${key}`); } } if (input.owner !== NDC_CREDENTIAL_REFERENCE_OWNER) { throw new TypeError("ndc_credential_reference_owner_invalid"); } if (!isNdcCredentialReferenceValue(input.reference)) { throw new TypeError("ndc_credential_reference_value_invalid"); } return Object.freeze({ owner: NDC_CREDENTIAL_REFERENCE_OWNER, reference: input.reference, }); } export function isNdcCredentialReferenceValue(value) { return typeof value === "string" && CREDENTIAL_REFERENCE_PATTERN.test(value); }