UNPKG

prisma-zod-generator

Version:

Prisma 2+ generator to emit Zod schemas from your Prisma schema

76 lines 4.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addMissingInputObjectTypes = addMissingInputObjectTypes; exports.resolveAddMissingInputObjectTypeOptions = resolveAddMissingInputObjectTypeOptions; const transformer_1 = __importDefault(require("../transformer")); const aggregate_helpers_1 = require("./aggregate-helpers"); const include_helpers_1 = require("./include-helpers"); const modelArgs_helpers_1 = require("./modelArgs-helpers"); const mongodb_helpers_1 = require("./mongodb-helpers"); const select_helpers_1 = require("./select-helpers"); const whereUniqueInput_helpers_1 = require("./whereUniqueInput-helpers"); function addMissingInputObjectTypes(inputObjectTypes, outputObjectTypes, models, modelOperations, dataSourceProvider, options) { const cfg = transformer_1.default.getGeneratorConfig(); const isMinimal = (cfg === null || cfg === void 0 ? void 0 : cfg.mode) === 'minimal'; // TODO: remove once Prisma fix this issue: https://github.com/prisma/prisma/issues/14900 if (dataSourceProvider === 'mongodb') { (0, mongodb_helpers_1.addMissingInputObjectTypesForMongoDbRawOpsAndQueries)(modelOperations, outputObjectTypes, inputObjectTypes); } // Filter out fieldRefTypes from input types to avoid generating non-existent schemas filterFieldRefTypes(inputObjectTypes); // Filter aggregate input types based on model and operation filtering if (!isMinimal) { const filteredTypes = (0, aggregate_helpers_1.filterAggregateInputTypes)(inputObjectTypes); inputObjectTypes.length = 0; inputObjectTypes.push(...filteredTypes); } if (!isMinimal) { (0, aggregate_helpers_1.addMissingInputObjectTypesForAggregate)(inputObjectTypes, outputObjectTypes); } if (!isMinimal && options.isGenerateSelect) { (0, select_helpers_1.addMissingInputObjectTypesForSelect)(inputObjectTypes, outputObjectTypes, models); transformer_1.default.setIsGenerateSelect(true); } if (!isMinimal && (options.isGenerateSelect || options.isGenerateInclude)) { (0, modelArgs_helpers_1.addMissingInputObjectTypesForModelArgs)(inputObjectTypes, models, options.isGenerateSelect, options.isGenerateInclude); } if (!isMinimal && options.isGenerateInclude) { (0, include_helpers_1.addMissingInputObjectTypesForInclude)(inputObjectTypes, models, options.isGenerateSelect); transformer_1.default.setIsGenerateInclude(true); } (0, whereUniqueInput_helpers_1.changeOptionalToRequiredFields)(inputObjectTypes); } function filterFieldRefTypes(inputObjectTypes) { // Filter out fieldRefTypes from input types following zod-prisma-types approach // This prevents generation of non-existent FieldRefInput schemas for (const inputType of inputObjectTypes) { const fields = inputType.fields; for (const field of fields) { if (field.inputTypes.some((inputType) => inputType.location === 'fieldRefTypes')) { // Replace the entire inputTypes array with just the first input type // This removes the fieldRefTypes reference while preserving functionality field.inputTypes = [ field.inputTypes[0], ]; } } } } function resolveAddMissingInputObjectTypeOptions(generatorConfigOptions) { return { isGenerateSelect: generatorConfigOptions.isGenerateSelect === 'true', isGenerateInclude: generatorConfigOptions.isGenerateInclude === 'true', exportTypedSchemas: generatorConfigOptions.exportTypedSchemas === undefined ? true : generatorConfigOptions.exportTypedSchemas === 'true', // default true exportZodSchemas: generatorConfigOptions.exportZodSchemas === undefined ? true : generatorConfigOptions.exportZodSchemas === 'true', // default true typedSchemaSuffix: generatorConfigOptions.typedSchemaSuffix || 'Schema', // default 'Schema' zodSchemaSuffix: generatorConfigOptions.zodSchemaSuffix || 'ZodSchema', // default 'ZodSchema' }; } //# sourceMappingURL=helpers.js.map