{"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      ...(ctx.equals === true &&\n      (ctx.schema.additionalProperties ?? false) === false\n        ? [validateEquals(ctx)]\n        : []),\n    ].every((v) => v);\n  };\n\n  const validateEquals = (\n    ctx: IOpenApiValidatorContext<OpenApi.IJsonSchema.IObject>,\n  ): boolean => {\n    const regular: Set<string> = new Set(\n      Object.keys(ctx.schema.properties ?? {}),\n    );\n    return Object.entries(ctx.value as object)\n      .map(([key, value]) => {\n        if (regular.has(key) === true) return true;\n        return ctx.report({\n          ...ctx,\n          path:\n            ctx.path +\n            (NamingConvention.variable(key)\n              ? `.${key}`\n              : `[${JSON.stringify(key)}]`),\n          value,\n          expected: \"undefined\",\n          description: [\n            `The property \\`${key}\\` is not defined in the object type.`,\n            \"\",\n            \"Please remove the property next time.\",\n          ].join(\"\\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","equals","validateEquals","every","v","regular","Set","has","expected","description","join"],"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,CAAA,GAAIC,IAAI,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;uBAGzCR,IAAIK,OAAOY,yBAAyB,YAC/CjB,IAAIK,OAAOY,yBAAyB,OAChCd,OAAOC,QAAQJ,IAAIC,OAChBiB,OACC,EAAEV,SACAL,OAAOgB,KAAKnB,IAAIK,OAAOC,cAAc,CAAA,GAAIU,SAASR,SAClD,OAEHD,IAAI,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;cAGhB,OACAf,IAAIoB,WAAW,SAClBpB,IAAIK,OAAOY,wBAAwB,WAAW,QAC3C,EAACI,eAAerB,SAChB,KACJsB,MAAOC,KAAMA;;IAGjB,MAAMF,iBACJrB;QAEA,MAAMwB,UAAuB,IAAIC,IAC/BtB,OAAOgB,KAAKnB,IAAIK,OAAOC,cAAc,CAAA;QAEvC,OAAOH,OAAOC,QAAQJ,IAAIC,OACvBM,IAAI,EAAEC,KAAKP;YACV,IAAIuB,QAAQE,IAAIlB,SAAS,MAAM,OAAO;YACtC,OAAOR,IAAIE,OAAO;mBACbF;gBACHU,MACEV,IAAIU,QACHC,iBAAiBC,SAASJ,OACvB,IAAIA,QACJ,IAAIK,KAAKC,UAAUN;gBACzBP;gBACA0B,UAAU;gBACVC,aAAa,EACX,kBAAkBpB,4CAClB,IACA,0CACAqB,KAAK;;WAGVP,MAAOC,KAAMA;;AAEnB,EA5ED,CAAiBzB,2BAAAA,yBAAsB,CAAA;;"}