{"version":3,"file":"OpenApiObjectValidator.mjs","sources":["../../../src/utils/internal/OpenApiObjectValidator.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { NamingConvention } from \"../NamingConvention\";\nimport { IOpenApiValidatorContext } from \"./IOpenApiValidatorContext\";\nimport { OpenApiStationValidator } from \"./OpenApiStationValidator\";\n\nexport namespace OpenApiObjectValidator {\n  export const validate = (\n    ctx: IOpenApiValidatorContext<OpenApi.IJsonSchema.IObject>,\n  ): boolean => {\n    if (typeof ctx.value !== \"object\" || ctx.value === null)\n      return ctx.report(ctx);\n    return [\n      ...Object.entries(ctx.schema.properties ?? {}).map(([key, value]) =>\n        OpenApiStationValidator.validate({\n          ...ctx,\n          schema: value,\n          value: (ctx.value as Record<string, any>)[key],\n          path:\n            ctx.path +\n            (NamingConvention.variable(key)\n              ? `.${key}`\n              : `[${JSON.stringify(key)}]`),\n          required: ctx.schema.required?.includes(key) ?? false,\n        }),\n      ),\n      ...(typeof ctx.schema.additionalProperties === \"object\" &&\n      ctx.schema.additionalProperties !== null\n        ? Object.entries(ctx.value)\n            .filter(\n              ([key]) =>\n                Object.keys(ctx.schema.properties ?? {}).includes(key) ===\n                false,\n            )\n            .map(([key, value]) =>\n              OpenApiStationValidator.validate({\n                ...ctx,\n                schema: ctx.schema.additionalProperties as OpenApi.IJsonSchema,\n                value,\n                path:\n                  ctx.path +\n                  (NamingConvention.variable(key)\n                    ? `.${key}`\n                    : `[${JSON.stringify(key)}]`),\n                required: true,\n              }),\n            )\n        : []),\n    ].every((v) => v);\n  };\n}\n"],"names":["OpenApiObjectValidator","validate","ctx","value","report","Object","entries","schema","properties","map","key","OpenApiStationValidator","path","NamingConvention","variable","JSON","stringify","required","includes","additionalProperties","filter","keys","every","v"],"mappings":";;;;AAKM,IAAWA;;CAAjB,SAAiBA;IACFA,uBAAAC,WACXC;QAEA,WAAWA,IAAIC,UAAU,YAAYD,IAAIC,UAAU,MACjD,OAAOD,IAAIE,OAAOF;QACpB,OAAO,KACFG,OAAOC,QAAQJ,IAAIK,OAAOC,cAAc,CAAE,GAAEC,KAAI,EAAEC,KAAKP,WACxDQ,wBAAwBV,SAAS;eAC5BC;YACHK,QAAQJ;YACRA,OAAQD,IAAIC,MAA8BO;YAC1CE,MACEV,IAAIU,QACHC,iBAAiBC,SAASJ,OACvB,IAAIA,QACJ,IAAIK,KAAKC,UAAUN;YACzBO,UAAUf,IAAIK,OAAOU,UAAUC,SAASR,QAAQ;wBAGzCR,IAAIK,OAAOY,yBAAyB,YAC/CjB,IAAIK,OAAOY,yBAAyB,OAChCd,OAAOC,QAAQJ,IAAIC,OAChBiB,QACC,EAAEV,SACAL,OAAOgB,KAAKnB,IAAIK,OAAOC,cAAc,CAAA,GAAIU,SAASR,SAClD,QAEHD,KAAI,EAAEC,KAAKP,WACVQ,wBAAwBV,SAAS;eAC5BC;YACHK,QAAQL,IAAIK,OAAOY;YACnBhB;YACAS,MACEV,IAAIU,QACHC,iBAAiBC,SAASJ,OACvB,IAAIA,QACJ,IAAIK,KAAKC,UAAUN;YACzBO,UAAU;eAGhB,KACJK,OAAOC,KAAMA;AAAE;AAEpB,EA5CD,CAAiBvB,2BAAAA,yBA4ChB,CAAA;;"}