UNPKG

@samchon/openapi

Version:

OpenAPI definitions and converters for 'typia' and 'nestia'.

1 lines 5.67 kB
{"version":3,"file":"OpenApiStringValidator.mjs","sources":["../../../src/utils/internal/OpenApiStringValidator.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { _isFormatByte } from \"../../functional/_isFormatByte\";\nimport { _isFormatDate } from \"../../functional/_isFormatDate\";\nimport { _isFormatDateTime } from \"../../functional/_isFormatDateTime\";\nimport { _isFormatDuration } from \"../../functional/_isFormatDuration\";\nimport { _isFormatEmail } from \"../../functional/_isFormatEmail\";\nimport { _isFormatHostname } from \"../../functional/_isFormatHostname\";\nimport { _isFormatIdnEmail } from \"../../functional/_isFormatIdnEmail\";\nimport { _isFormatIdnHostname } from \"../../functional/_isFormatIdnHostname\";\nimport { _isFormatIpv4 } from \"../../functional/_isFormatIpv4\";\nimport { _isFormatIpv6 } from \"../../functional/_isFormatIpv6\";\nimport { _isFormatIri } from \"../../functional/_isFormatIri\";\nimport { _isFormatIriReference } from \"../../functional/_isFormatIriReference\";\nimport { _isFormatJsonPointer } from \"../../functional/_isFormatJsonPointer\";\nimport { _isFormatRegex } from \"../../functional/_isFormatRegex\";\nimport { _isFormatRelativeJsonPointer } from \"../../functional/_isFormatRelativeJsonPointer\";\nimport { _isFormatTime } from \"../../functional/_isFormatTime\";\nimport { _isFormatUri } from \"../../functional/_isFormatUri\";\nimport { _isFormatUriReference } from \"../../functional/_isFormatUriReference\";\nimport { _isFormatUriTemplate } from \"../../functional/_isFormatUriTemplate\";\nimport { _isFormatUrl } from \"../../functional/_isFormatUrl\";\nimport { _isFormatUuid } from \"../../functional/_isFormatUuid\";\nimport { IOpenApiValidatorContext } from \"./IOpenApiValidatorContext\";\n\nexport namespace OpenApiStringValidator {\n export const validate = (\n ctx: IOpenApiValidatorContext<OpenApi.IJsonSchema.IString>,\n ): boolean => {\n if (typeof ctx.value !== \"string\") return ctx.report(ctx);\n return (\n [\n ctx.schema.minLength !== undefined\n ? ctx.value.length >= ctx.schema.minLength ||\n ctx.report({\n ...ctx,\n expected: `string & MinLength<${ctx.schema.minLength}>`,\n })\n : true,\n ctx.schema.maxLength !== undefined\n ? ctx.value.length <= ctx.schema.maxLength ||\n ctx.report({\n ...ctx,\n expected: `string & MaxLength<${ctx.schema.maxLength}>`,\n })\n : true,\n ctx.schema.pattern !== undefined\n ? new RegExp(ctx.schema.pattern).test(ctx.value) ||\n ctx.report({\n ...ctx,\n expected: `string & Pattern<${JSON.stringify(ctx.schema.pattern)}>`,\n })\n : true,\n ctx.schema.format && FORMAT[ctx.schema.format as \"uuid\"]\n ? FORMAT[ctx.schema.format as \"uuid\"](ctx.value) ||\n ctx.report({\n ...ctx,\n expected: `string & Format<${JSON.stringify(ctx.schema.format)}>`,\n })\n : true,\n ].every((v) => v) || ctx.report(ctx)\n );\n };\n}\n\nconst FORMAT = {\n byte: _isFormatByte,\n regex: _isFormatRegex,\n uuid: _isFormatUuid,\n email: _isFormatEmail,\n hostname: _isFormatHostname,\n \"idn-email\": _isFormatIdnEmail,\n \"idn-hostname\": _isFormatIdnHostname,\n iri: _isFormatIri,\n \"iri-reference\": _isFormatIriReference,\n ipv4: _isFormatIpv4,\n ipv6: _isFormatIpv6,\n uri: _isFormatUri,\n \"uri-reference\": _isFormatUriReference,\n \"uri-template\": _isFormatUriTemplate,\n url: _isFormatUrl,\n \"date-time\": _isFormatDateTime,\n date: _isFormatDate,\n time: _isFormatTime,\n duration: _isFormatDuration,\n \"json-pointer\": _isFormatJsonPointer,\n \"relative-json-pointer\": _isFormatRelativeJsonPointer,\n};\n"],"names":["OpenApiStringValidator","validate","ctx","value","report","schema","minLength","undefined","length","expected","maxLength","pattern","RegExp","test","JSON","stringify","format","FORMAT","every","v","byte","_isFormatByte","regex","_isFormatRegex","uuid","_isFormatUuid","email","_isFormatEmail","hostname","_isFormatHostname","_isFormatIdnEmail","_isFormatIdnHostname","iri","_isFormatIri","_isFormatIriReference","ipv4","_isFormatIpv4","ipv6","_isFormatIpv6","uri","_isFormatUri","_isFormatUriReference","_isFormatUriTemplate","url","_isFormatUrl","_isFormatDateTime","date","_isFormatDate","time","_isFormatTime","duration","_isFormatDuration","_isFormatJsonPointer","_isFormatRelativeJsonPointer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBM,IAAWA;;CAAjB,SAAiBA;IACFA,uBAAAC,WACXC;QAEA,WAAWA,IAAIC,UAAU,UAAU,OAAOD,IAAIE,OAAOF;QACrD,OACE,EACEA,IAAIG,OAAOC,cAAcC,YACrBL,IAAIC,MAAMK,UAAUN,IAAIG,OAAOC,aAC/BJ,IAAIE,OAAO;eACNF;YACHO,UAAU,sBAAsBP,IAAIG,OAAOC;aAE7C,MACJJ,IAAIG,OAAOK,cAAcH,YACrBL,IAAIC,MAAMK,UAAUN,IAAIG,OAAOK,aAC/BR,IAAIE,OAAO;eACNF;YACHO,UAAU,sBAAsBP,IAAIG,OAAOK;aAE7C,MACJR,IAAIG,OAAOM,YAAYJ,YACnB,IAAIK,OAAOV,IAAIG,OAAOM,SAASE,KAAKX,IAAIC,UACxCD,IAAIE,OAAO;eACNF;YACHO,UAAU,oBAAoBK,KAAKC,UAAUb,IAAIG,OAAOM;aAE1D,MACJT,IAAIG,OAAOW,UAAUC,OAAOf,IAAIG,OAAOW,UACnCC,OAAOf,IAAIG,OAAOW,QAAkBd,IAAIC,UACxCD,IAAIE,OAAO;eACNF;YACHO,UAAU,mBAAmBK,KAAKC,UAAUb,IAAIG,OAAOW;aAEzD,OACJE,OAAOC,KAAMA,OAAMjB,IAAIE,OAAOF;AAAI;AAGzC,EAtCD,CAAiBF,2BAAAA,yBAsChB,CAAA;;AAED,MAAMiB,SAAS;IACbG,MAAMC;IACNC,OAAOC;IACPC,MAAMC;IACNC,OAAOC;IACPC,UAAUC;IACV,aAAaC;IACb,gBAAgBC;IAChBC,KAAKC;IACL,iBAAiBC;IACjBC,MAAMC;IACNC,MAAMC;IACNC,KAAKC;IACL,iBAAiBC;IACjB,gBAAgBC;IAChBC,KAAKC;IACL,aAAaC;IACbC,MAAMC;IACNC,MAAMC;IACNC,UAAUC;IACV,gBAAgBC;IAChB,yBAAyBC;;;"}