{"version":3,"file":"OpenApiStationValidator.mjs","sources":["../../../src/utils/internal/OpenApiStationValidator.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { OpenApiTypeChecker } from \"../OpenApiTypeChecker\";\nimport { IOpenApiValidatorContext } from \"./IOpenApiValidatorContext\";\nimport { OpenApiArrayValidator } from \"./OpenApiArrayValidator\";\nimport { OpenApiBooleanValidator } from \"./OpenApiBooleanValidator\";\nimport { OpenApiConstantValidator } from \"./OpenApiConstantValidator\";\nimport { OpenApiIntegerValidator } from \"./OpenApiIntegerValidator\";\nimport { OpenApiNumberValidator } from \"./OpenApiNumberValidator\";\nimport { OpenApiObjectValidator } from \"./OpenApiObjectValidator\";\nimport { OpenApiOneOfValidator } from \"./OpenApiOneOfValidator\";\nimport { OpenApiSchemaNamingRule } from \"./OpenApiSchemaNamingRule\";\nimport { OpenApiStringValidator } from \"./OpenApiStringValidator\";\nimport { OpenApiTupleValidator } from \"./OpenApiTupleValidator\";\n\nexport namespace OpenApiStationValidator {\n  export const validate = (\n    ctx: Omit<IOpenApiValidatorContext<OpenApi.IJsonSchema>, \"expected\">,\n    expected?: string,\n  ): boolean => {\n    // THE TYPE NAME\n    expected ??= (() => {\n      const name = OpenApiSchemaNamingRule.getName(ctx.schema);\n      return ctx.required ? name : `${name} | undefined`;\n    })();\n\n    // COALESCE\n    if (OpenApiTypeChecker.isUnknown(ctx.schema)) return true;\n    else if (ctx.value === undefined)\n      return (\n        ctx.required === false ||\n        ctx.report({\n          ...ctx,\n          expected,\n        })\n      );\n    else if (OpenApiTypeChecker.isNull(ctx.schema))\n      return (\n        ctx.value === null ||\n        ctx.report({\n          ...ctx,\n          expected,\n        })\n      );\n    // NESTED\n    else if (OpenApiTypeChecker.isReference(ctx.schema)) {\n      const schema: OpenApi.IJsonSchema | undefined =\n        ctx.components.schemas?.[ctx.schema.$ref.split(\"/\").pop() ?? \"\"];\n      if (schema === undefined) return true;\n      return OpenApiStationValidator.validate(\n        {\n          ...ctx,\n          schema,\n        },\n        expected,\n      );\n    } else if (OpenApiTypeChecker.isOneOf(ctx.schema))\n      return OpenApiOneOfValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    // ATOMICS\n    else if (OpenApiTypeChecker.isConstant(ctx.schema))\n      return OpenApiConstantValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isBoolean(ctx.schema))\n      return OpenApiBooleanValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isInteger(ctx.schema))\n      return OpenApiIntegerValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isNumber(ctx.schema))\n      return OpenApiNumberValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isString(ctx.schema))\n      return OpenApiStringValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    // INSTANCES\n    else if (OpenApiTypeChecker.isArray(ctx.schema))\n      return OpenApiArrayValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isTuple(ctx.schema))\n      return OpenApiTupleValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    else if (OpenApiTypeChecker.isObject(ctx.schema))\n      return OpenApiObjectValidator.validate({\n        ...ctx,\n        schema: ctx.schema,\n        expected,\n      });\n    return true;\n  };\n}\n"],"names":["OpenApiStationValidator","validate","ctx","expected","name","OpenApiSchemaNamingRule","getName","schema","required","OpenApiTypeChecker","isUnknown","value","undefined","report","isNull","isReference","components","schemas","$ref","split","pop","isOneOf","OpenApiOneOfValidator","isConstant","OpenApiConstantValidator","isBoolean","OpenApiBooleanValidator","isInteger","OpenApiIntegerValidator","isNumber","OpenApiNumberValidator","isString","OpenApiStringValidator","isArray","OpenApiArrayValidator","isTuple","OpenApiTupleValidator","isObject","OpenApiObjectValidator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcM,IAAWA;;CAAjB,SAAiBA;IACFA,wBAAAC,WAAW,CACtBC,KACAC;QAGAA,aAAAA,WAAa;YACX,MAAMC,OAAOC,wBAAwBC,QAAQJ,IAAIK;YACjD,OAAOL,IAAIM,WAAWJ,OAAO,GAAGA;AACjC,UAHY;QAMb,IAAIK,mBAAmBC,UAAUR,IAAIK,SAAS,OAAO,WAChD,IAAIL,IAAIS,UAAUC,WACrB,OACEV,IAAIM,aAAa,SACjBN,IAAIW,OAAO;eACNX;YACHC;iBAGD,IAAIM,mBAAmBK,OAAOZ,IAAIK,SACrC,OACEL,IAAIS,UAAU,QACdT,IAAIW,OAAO;eACNX;YACHC;iBAID,IAAIM,mBAAmBM,YAAYb,IAAIK,SAAS;YACnD,MAAMA,SACJL,IAAIc,WAAWC,UAAUf,IAAIK,OAAOW,KAAKC,MAAM,KAAKC,SAAS;YAC/D,IAAIb,WAAWK,WAAW,OAAO;YACjC,OAAOZ,wBAAwBC,SAC7B;mBACKC;gBACHK;eAEFJ;AAEJ,eAAO,IAAIM,mBAAmBY,QAAQnB,IAAIK,SACxC,OAAOe,sBAAsBrB,SAAS;eACjCC;YACHK,QAAQL,IAAIK;YACZJ;iBAGC,IAAIM,mBAAmBc,WAAWrB,IAAIK,SACzC,OAAOiB,yBAAyBvB,SAAS;eACpCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmBgB,UAAUvB,IAAIK,SACxC,OAAOmB,wBAAwBzB,SAAS;eACnCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmBkB,UAAUzB,IAAIK,SACxC,OAAOqB,wBAAwB3B,SAAS;eACnCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmBoB,SAAS3B,IAAIK,SACvC,OAAOuB,uBAAuB7B,SAAS;eAClCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmBsB,SAAS7B,IAAIK,SACvC,OAAOyB,uBAAuB/B,SAAS;eAClCC;YACHK,QAAQL,IAAIK;YACZJ;iBAGC,IAAIM,mBAAmBwB,QAAQ/B,IAAIK,SACtC,OAAO2B,sBAAsBjC,SAAS;eACjCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmB0B,QAAQjC,IAAIK,SACtC,OAAO6B,sBAAsBnC,SAAS;eACjCC;YACHK,QAAQL,IAAIK;YACZJ;iBAEC,IAAIM,mBAAmB4B,SAASnC,IAAIK,SACvC,OAAO+B,uBAAuBrC,SAAS;eAClCC;YACHK,QAAQL,IAAIK;YACZJ;;QAEJ,OAAO;;AAEV,EAnGD,CAAiBH,4BAAAA,0BAAuB,CAAA;;"}