UNPKG

@autobe/agent

Version:

AI backend server code generator

44 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolvePropertyTransformer = resolvePropertyTransformer; const utils_1 = require("@autobe/utils"); /** * Resolves a JSON schema property to its matching Transformer. * * Handles direct `$ref`, `array` of `$ref`, and `oneOf` (nullable) wrappers by * recursively unwrapping until a Transformer match is found. */ function resolvePropertyTransformer(props) { // direct reference → single transform if (utils_1.AutoBeOpenApiTypeChecker.isReference(props.schema)) { const typeName = props.schema.$ref.split("/").pop(); const transformer = props.transformers.find((t) => t.plan.dtoTypeName === typeName); if (transformer) return { transformer, isArray: false }; } // array of references → asyncMap transform if (utils_1.AutoBeOpenApiTypeChecker.isArray(props.schema)) { const items = props.schema.items; if (utils_1.AutoBeOpenApiTypeChecker.isReference(items)) { const typeName = items.$ref.split("/").pop(); const transformer = props.transformers.find((t) => t.plan.dtoTypeName === typeName); if (transformer) return { transformer, isArray: true }; } } // oneOf (nullable reference) → unwrap non-null variant if (utils_1.AutoBeOpenApiTypeChecker.isOneOf(props.schema)) { for (const variant of props.schema.oneOf) { if (utils_1.AutoBeOpenApiTypeChecker.isNull(variant)) continue; const result = resolvePropertyTransformer({ schema: variant, transformers: props.transformers, }); if (result) return result; } } return null; } //# sourceMappingURL=resolvePropertyTransformer.js.map