UNPKG

@matatbread/typia

Version:

Superfast runtime validators with only one line

25 lines 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.json_schema_discriminator = void 0; const UnionPredicator_1 = require("../helpers/UnionPredicator"); const json_schema_discriminator = (metadata) => { if (metadata.size() === 0 || metadata.size() !== metadata.objects.length || metadata.objects.some((o) => o.type.isLiteral()) === true) return undefined; const specialized = UnionPredicator_1.UnionPredicator.object(metadata.objects.map((o) => o.type)); const meet = specialized.length === metadata.objects.length && specialized.every((s) => s.property.key.isSoleLiteral() && s.property.value.isSoleLiteral()) && new Set(specialized.map((s) => s.property.key.getSoleLiteral())).size === 1; if (meet === false) return undefined; return { propertyName: specialized[0].property.key.getSoleLiteral(), mapping: Object.fromEntries(specialized.map((s) => [ s.property.value.getSoleLiteral(), `#/components/schemas/${s.object.name}`, ])), }; }; exports.json_schema_discriminator = json_schema_discriminator; //# sourceMappingURL=json_schema_discriminator.js.map