@autobe/agent
Version:
AI backend server code generator
44 lines • 1.85 kB
JavaScript
;
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