UNPKG

hey-api-builders

Version:

A custom plugin for @hey-api/openapi-ts that generates mock data builders with a lightweight custom runtime, Zod integration, or static mock generation.

66 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = void 0; const schema_transformer_1 = require("../core/schema-transformer"); const zod_schema_generator_1 = require("../generators/zod-schema-generator"); const builder_generator_1 = require("../generators/builder-generator"); const code_generator_1 = require("../core/code-generator"); /** * Resolves the mock strategy from config, handling backward compatibility */ function resolveMockStrategy(config) { // New config takes precedence if (config.mockStrategy) { return config.mockStrategy; } // Backward compatibility with old boolean flags if (config.useStaticMocks) { return 'static'; } if (config.useZodForMocks) { return 'zod'; } // Default strategy return 'runtime'; } /** * Main plugin handler for generating builder classes */ const handler = ({ plugin, context }) => { const rawSchemas = {}; plugin.forEach('schema', (event) => { rawSchemas[event.name] = event.schema; }); const modelNameProvider = context?.casing?.modelName; const normalize = modelNameProvider ? (name) => modelNameProvider(name) : undefined; const metas = (0, schema_transformer_1.collectSchemas)(rawSchemas, normalize); const file = plugin.createFile({ id: plugin.name, path: plugin.output }); const config = plugin.config; const generateZod = config.generateZod || false; const mockStrategy = resolveMockStrategy(config); let out = ''; out += (0, code_generator_1.generateImports)({ mockStrategy, generateZod }); out += (0, code_generator_1.generateBuilderOptionsType)(); if (mockStrategy === 'runtime') { out += (0, code_generator_1.generateSchemaConstants)(metas); } if (generateZod || mockStrategy === 'zod') { const zodSchemaEntries = []; for (const m of metas) { const zodSchemaString = (0, zod_schema_generator_1.generateZodSchema)(m.schema); zodSchemaEntries.push(` ${m.constName}Zod: ${zodSchemaString}`); } out += 'export const zodSchemas = {\n' + zodSchemaEntries.join(',\n') + '\n}\n\n'; } for (const m of metas) { if (m.isEnum) { out += (0, builder_generator_1.generateEnumBuilder)(m, { mockStrategy }); } else { out += (0, builder_generator_1.generateObjectBuilder)(m, { mockStrategy }); } } file.add(out); }; exports.handler = handler; //# sourceMappingURL=handler.js.map