@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
1 lines • 4.19 kB
Source Map (JSON)
{"version":3,"file":"validators.mjs","names":[],"sources":["../../../src/modules/vc/validators.ts"],"sourcesContent":["import type { ValidationOptions } from 'class-validator'\n\nimport { buildMessage, isString, isURL, ValidateBy } from 'class-validator'\nimport { isJsonObject } from '../../types'\nimport { CREDENTIALS_CONTEXT_V1_URL, VERIFIABLE_CREDENTIAL_TYPE, VERIFIABLE_PRESENTATION_TYPE } from './constants'\n\nexport interface IsCredentialJsonLdContextValidationOptions extends ValidationOptions {\n /**\n * Whether to allow string value in addition to arrays.\n *\n * @default false\n */\n allowString?: boolean\n\n /**\n * The expected credential context URL.\n *\n * @default {@link CREDENTIALS_CONTEXT_V1_URL}\n */\n credentialContext?: string\n}\n\nexport function IsCredentialJsonLdContext(\n validationOptions?: IsCredentialJsonLdContextValidationOptions\n): PropertyDecorator {\n const allowString = validationOptions?.allowString ?? false\n const credentialContext = validationOptions?.credentialContext ?? CREDENTIALS_CONTEXT_V1_URL\n\n return ValidateBy(\n {\n name: 'IsCredentialJsonLdContext',\n validator: {\n validate: (value): boolean => {\n if (!Array.isArray(value)) return allowString && isString(value) && value === credentialContext\n\n // First item must be the verifiable credential context\n if (value[0] !== credentialContext) return false\n\n return value.every((v) => (isString(v) && isURL(v)) || isJsonObject(v))\n },\n defaultMessage: buildMessage(\n (eachPrefix) =>\n `${eachPrefix}$property must be an array of strings or objects, where the first item is the verifiable credential context URL.`,\n validationOptions\n ),\n },\n },\n validationOptions\n )\n}\n\nexport function IsCredentialType(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: 'IsVerifiableCredentialType',\n validator: {\n validate: (value): boolean => {\n return Array.isArray(value)\n ? value.includes(VERIFIABLE_CREDENTIAL_TYPE) && value.every((v) => typeof v === 'string')\n : value === VERIFIABLE_CREDENTIAL_TYPE\n },\n defaultMessage: buildMessage(\n (eachPrefix) =>\n `${eachPrefix}$property must be \"VerifiableCredential\" or an array of strings which includes \"VerifiableCredential\"`,\n validationOptions\n ),\n },\n },\n validationOptions\n )\n}\n\nexport function IsVerifiablePresentationType(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: 'IsVerifiablePresentationType',\n validator: {\n validate: (value): boolean => {\n return Array.isArray(value)\n ? value.includes(VERIFIABLE_PRESENTATION_TYPE) && value.every((v) => typeof v === 'string')\n : value === VERIFIABLE_PRESENTATION_TYPE\n },\n defaultMessage: buildMessage(\n (eachPrefix) =>\n `${eachPrefix}$property must be \"VerifiablePresentation\" or an array of strings which includes \"VerifiablePresentation\"`,\n validationOptions\n ),\n },\n },\n validationOptions\n )\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,0BACd,mBACmB;CACnB,MAAM,cAAc,mBAAmB,eAAe;CACtD,MAAM,oBAAoB,mBAAmB,qBAAqB;AAElE,QAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;AAC5B,QAAI,CAAC,MAAM,QAAQ,MAAM,CAAE,QAAO,eAAe,SAAS,MAAM,IAAI,UAAU;AAG9E,QAAI,MAAM,OAAO,kBAAmB,QAAO;AAE3C,WAAO,MAAM,OAAO,MAAO,SAAS,EAAE,IAAI,MAAM,EAAE,IAAK,aAAa,EAAE,CAAC;;GAEzE,gBAAgB,cACb,eACC,GAAG,WAAW,mHAChB,kBACD;GACF;EACF,EACD,kBACD;;AAGH,SAAgB,iBAAiB,mBAA0D;AACzF,QAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;AAC5B,WAAO,MAAM,QAAQ,MAAM,GACvB,MAAM,SAAS,2BAA2B,IAAI,MAAM,OAAO,MAAM,OAAO,MAAM,SAAS,GACvF,UAAU;;GAEhB,gBAAgB,cACb,eACC,GAAG,WAAW,wGAChB,kBACD;GACF;EACF,EACD,kBACD;;AAGH,SAAgB,6BAA6B,mBAA0D;AACrG,QAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;AAC5B,WAAO,MAAM,QAAQ,MAAM,GACvB,MAAM,SAAS,6BAA6B,IAAI,MAAM,OAAO,MAAM,OAAO,MAAM,SAAS,GACzF,UAAU;;GAEhB,gBAAgB,cACb,eACC,GAAG,WAAW,4GAChB,kBACD;GACF;EACF,EACD,kBACD"}