@pegasusheavy/nestjs-prisma-graphql 1.4.3 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -7
- package/dist/benchmark/analysis.d.ts +7 -0
- package/dist/benchmark/analysis.d.ts.map +1 -0
- package/dist/benchmark/analysis.js +265 -0
- package/dist/benchmark/analysis.js.map +1 -0
- package/dist/benchmark/index.d.ts +7 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/dist/benchmark/index.js +272 -0
- package/dist/benchmark/index.js.map +1 -0
- package/dist/event-names.d.ts +2 -0
- package/dist/event-names.d.ts.map +1 -0
- package/dist/event-names.js +2 -0
- package/dist/event-names.js.map +1 -0
- package/dist/generate.d.ts +4 -140
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +199 -2826
- package/dist/generate.js.map +1 -1
- package/dist/handlers/args-type.d.ts +7 -0
- package/dist/handlers/args-type.d.ts.map +1 -0
- package/dist/handlers/args-type.js +68 -0
- package/dist/handlers/args-type.js.map +1 -0
- package/dist/handlers/combine-scalar-filters.d.ts +6 -0
- package/dist/handlers/combine-scalar-filters.d.ts.map +1 -0
- package/dist/handlers/combine-scalar-filters.js +110 -0
- package/dist/handlers/combine-scalar-filters.js.map +1 -0
- package/dist/handlers/create-aggregate-input.d.ts +10 -0
- package/dist/handlers/create-aggregate-input.d.ts.map +1 -0
- package/dist/handlers/create-aggregate-input.js +33 -0
- package/dist/handlers/create-aggregate-input.js.map +1 -0
- package/dist/handlers/decimal-helpers.d.ts +10 -0
- package/dist/handlers/decimal-helpers.d.ts.map +1 -0
- package/dist/handlers/decimal-helpers.js +73 -0
- package/dist/handlers/decimal-helpers.js.map +1 -0
- package/dist/handlers/emit-single.d.ts +3 -0
- package/dist/handlers/emit-single.d.ts.map +1 -0
- package/dist/handlers/emit-single.js +14 -0
- package/dist/handlers/emit-single.js.map +1 -0
- package/dist/handlers/generate-barrel-exports.d.ts +13 -0
- package/dist/handlers/generate-barrel-exports.d.ts.map +1 -0
- package/dist/handlers/generate-barrel-exports.js +69 -0
- package/dist/handlers/generate-barrel-exports.js.map +1 -0
- package/dist/handlers/generate-files.d.ts +3 -0
- package/dist/handlers/generate-files.d.ts.map +1 -0
- package/dist/handlers/generate-files.js +133 -0
- package/dist/handlers/generate-files.js.map +1 -0
- package/dist/handlers/input-type.d.ts +7 -0
- package/dist/handlers/input-type.d.ts.map +1 -0
- package/dist/handlers/input-type.js +297 -0
- package/dist/handlers/input-type.js.map +1 -0
- package/dist/handlers/model-data.d.ts +3 -0
- package/dist/handlers/model-data.d.ts.map +1 -0
- package/dist/handlers/model-data.js +27 -0
- package/dist/handlers/model-data.js.map +1 -0
- package/dist/handlers/model-output-type.d.ts +3 -0
- package/dist/handlers/model-output-type.d.ts.map +1 -0
- package/dist/handlers/model-output-type.js +283 -0
- package/dist/handlers/model-output-type.js.map +1 -0
- package/dist/handlers/no-atomic-operations.d.ts +3 -0
- package/dist/handlers/no-atomic-operations.d.ts.map +1 -0
- package/dist/handlers/no-atomic-operations.js +41 -0
- package/dist/handlers/no-atomic-operations.js.map +1 -0
- package/dist/handlers/output-type.d.ts +3 -0
- package/dist/handlers/output-type.d.ts.map +1 -0
- package/dist/handlers/output-type.js +179 -0
- package/dist/handlers/output-type.js.map +1 -0
- package/dist/handlers/patch-type-registry.d.ts +16 -0
- package/dist/handlers/patch-type-registry.d.ts.map +1 -0
- package/dist/handlers/patch-type-registry.js +47 -0
- package/dist/handlers/patch-type-registry.js.map +1 -0
- package/dist/handlers/post-process-imports.d.ts +11 -0
- package/dist/handlers/post-process-imports.d.ts.map +1 -0
- package/dist/handlers/post-process-imports.js +44 -0
- package/dist/handlers/post-process-imports.js.map +1 -0
- package/dist/handlers/prisma-enum-doc.d.ts +11 -0
- package/dist/handlers/prisma-enum-doc.d.ts.map +1 -0
- package/dist/handlers/prisma-enum-doc.js +16 -0
- package/dist/handlers/prisma-enum-doc.js.map +1 -0
- package/dist/handlers/purge-output.d.ts +3 -0
- package/dist/handlers/purge-output.d.ts.map +1 -0
- package/dist/handlers/purge-output.js +34 -0
- package/dist/handlers/purge-output.js.map +1 -0
- package/dist/handlers/re-export.d.ts +9 -0
- package/dist/handlers/re-export.d.ts.map +1 -0
- package/dist/handlers/re-export.js +101 -0
- package/dist/handlers/re-export.js.map +1 -0
- package/dist/handlers/register-all-types.d.ts +13 -0
- package/dist/handlers/register-all-types.d.ts.map +1 -0
- package/dist/handlers/register-all-types.js +99 -0
- package/dist/handlers/register-all-types.js.map +1 -0
- package/dist/handlers/register-enum.d.ts +3 -0
- package/dist/handlers/register-enum.d.ts.map +1 -0
- package/dist/handlers/register-enum.js +65 -0
- package/dist/handlers/register-enum.js.map +1 -0
- package/dist/handlers/require-single-fields-in-whereunique-input.d.ts +3 -0
- package/dist/handlers/require-single-fields-in-whereunique-input.d.ts.map +1 -0
- package/dist/handlers/require-single-fields-in-whereunique-input.js +15 -0
- package/dist/handlers/require-single-fields-in-whereunique-input.js.map +1 -0
- package/dist/handlers/type-registry.d.ts +14 -0
- package/dist/handlers/type-registry.d.ts.map +1 -0
- package/dist/handlers/type-registry.js +151 -0
- package/dist/handlers/type-registry.js.map +1 -0
- package/dist/handlers/warning.d.ts +2 -0
- package/dist/handlers/warning.d.ts.map +1 -0
- package/dist/handlers/warning.js +14 -0
- package/dist/handlers/warning.js.map +1 -0
- package/dist/helpers/create-comment.d.ts +3 -0
- package/dist/helpers/create-comment.d.ts.map +1 -0
- package/dist/helpers/create-comment.js +23 -0
- package/dist/helpers/create-comment.js.map +1 -0
- package/dist/helpers/create-config.d.ts +51 -0
- package/dist/helpers/create-config.d.ts.map +1 -0
- package/dist/helpers/create-config.js +165 -0
- package/dist/helpers/create-config.js.map +1 -0
- package/dist/helpers/create-emit-blocks.d.ts +5 -0
- package/dist/helpers/create-emit-blocks.d.ts.map +1 -0
- package/dist/helpers/create-emit-blocks.js +37 -0
- package/dist/helpers/create-emit-blocks.js.map +1 -0
- package/dist/helpers/detect-circular-deps.d.ts +28 -0
- package/dist/helpers/detect-circular-deps.d.ts.map +1 -0
- package/dist/helpers/detect-circular-deps.js +92 -0
- package/dist/helpers/detect-circular-deps.js.map +1 -0
- package/dist/helpers/factory-get-source-file.d.ts +13 -0
- package/dist/helpers/factory-get-source-file.d.ts.map +1 -0
- package/dist/helpers/factory-get-source-file.js +17 -0
- package/dist/helpers/factory-get-source-file.js.map +1 -0
- package/dist/helpers/file-type-by-location.d.ts +3 -0
- package/dist/helpers/file-type-by-location.d.ts.map +1 -0
- package/dist/helpers/file-type-by-location.js +19 -0
- package/dist/helpers/file-type-by-location.js.map +1 -0
- package/dist/helpers/generate-file-name.d.ts +7 -0
- package/dist/helpers/generate-file-name.d.ts.map +1 -0
- package/dist/helpers/generate-file-name.js +35 -0
- package/dist/helpers/generate-file-name.js.map +1 -0
- package/dist/helpers/get-enum-name.d.ts +2 -0
- package/dist/helpers/get-enum-name.d.ts.map +1 -0
- package/dist/helpers/get-enum-name.js +5 -0
- package/dist/helpers/get-enum-name.js.map +1 -0
- package/dist/helpers/get-graphql-import.d.ts +19 -0
- package/dist/helpers/get-graphql-import.d.ts.map +1 -0
- package/dist/helpers/get-graphql-import.js +52 -0
- package/dist/helpers/get-graphql-import.js.map +1 -0
- package/dist/helpers/get-graphql-input-type.d.ts +6 -0
- package/dist/helpers/get-graphql-input-type.d.ts.map +1 -0
- package/dist/helpers/get-graphql-input-type.js +64 -0
- package/dist/helpers/get-graphql-input-type.js.map +1 -0
- package/dist/helpers/get-model-name.d.ts +2 -0
- package/dist/helpers/get-model-name.d.ts.map +1 -0
- package/dist/helpers/get-model-name.js +130 -0
- package/dist/helpers/get-model-name.js.map +1 -0
- package/dist/helpers/get-output-type-name.d.ts +2 -0
- package/dist/helpers/get-output-type-name.d.ts.map +1 -0
- package/dist/helpers/get-output-type-name.js +4 -0
- package/dist/helpers/get-output-type-name.js.map +1 -0
- package/dist/helpers/get-property-type.d.ts +9 -0
- package/dist/helpers/get-property-type.d.ts.map +1 -0
- package/dist/helpers/get-property-type.js +48 -0
- package/dist/helpers/get-property-type.js.map +1 -0
- package/dist/helpers/get-where-unique-at-least-keys.d.ts +3 -0
- package/dist/helpers/get-where-unique-at-least-keys.d.ts.map +1 -0
- package/dist/helpers/get-where-unique-at-least-keys.js +17 -0
- package/dist/helpers/get-where-unique-at-least-keys.js.map +1 -0
- package/dist/helpers/import-declaration-map.d.ts +19 -0
- package/dist/helpers/import-declaration-map.d.ts.map +1 -0
- package/dist/helpers/import-declaration-map.js +69 -0
- package/dist/helpers/import-declaration-map.js.map +1 -0
- package/dist/helpers/is-many-and-return.d.ts +2 -0
- package/dist/helpers/is-many-and-return.d.ts.map +1 -0
- package/dist/helpers/is-many-and-return.js +9 -0
- package/dist/helpers/is-many-and-return.js.map +1 -0
- package/dist/helpers/is-where-unique-input-type.d.ts +2 -0
- package/dist/helpers/is-where-unique-input-type.d.ts.map +1 -0
- package/dist/helpers/is-where-unique-input-type.js +4 -0
- package/dist/helpers/is-where-unique-input-type.js.map +1 -0
- package/dist/helpers/object-settings.d.ts +39 -0
- package/dist/helpers/object-settings.d.ts.map +1 -0
- package/dist/helpers/object-settings.js +297 -0
- package/dist/helpers/object-settings.js.map +1 -0
- package/dist/helpers/pascal-case.d.ts +2 -0
- package/dist/helpers/pascal-case.d.ts.map +1 -0
- package/dist/helpers/pascal-case.js +5 -0
- package/dist/helpers/pascal-case.js.map +1 -0
- package/dist/helpers/property-structure.d.ts +13 -0
- package/dist/helpers/property-structure.d.ts.map +1 -0
- package/dist/helpers/property-structure.js +20 -0
- package/dist/helpers/property-structure.js.map +1 -0
- package/dist/helpers/relative-path.d.ts +2 -0
- package/dist/helpers/relative-path.d.ts.map +1 -0
- package/dist/helpers/relative-path.js +20 -0
- package/dist/helpers/relative-path.js.map +1 -0
- package/dist/helpers/type-safe-assert.d.ts +7 -0
- package/dist/helpers/type-safe-assert.d.ts.map +1 -0
- package/dist/helpers/type-safe-assert.js +10 -0
- package/dist/helpers/type-safe-assert.js.map +1 -0
- package/dist/helpers/update-object-property.d.ts +7 -0
- package/dist/helpers/update-object-property.d.ts.map +1 -0
- package/dist/helpers/update-object-property.js +21 -0
- package/dist/helpers/update-object-property.js.map +1 -0
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -2956
- package/dist/index.js.map +1 -1
- package/dist/test/test-utils.d.ts +4 -0
- package/dist/test/test-utils.d.ts.map +1 -0
- package/dist/test/test-utils.js +14 -0
- package/dist/test/test-utils.js.map +1 -0
- package/dist/types.d.ts +73 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/type-safe-assert.ts","../src/helpers/is-many-and-return.ts","../src/helpers/pascal-case.ts","../src/handlers/args-type.ts","../src/event-names.ts","../src/handlers/combine-scalar-filters.ts","../src/handlers/create-aggregate-input.ts","../src/handlers/decimal-helpers.ts","../src/handlers/emit-single.ts","../src/helpers/import-declaration-map.ts","../src/handlers/generate-files.ts","../src/helpers/file-type-by-location.ts","../src/helpers/relative-path.ts","../src/helpers/get-graphql-import.ts","../src/helpers/get-graphql-input-type.ts","../src/helpers/get-property-type.ts","../src/helpers/get-where-unique-at-least-keys.ts","../src/helpers/is-where-unique-input-type.ts","../src/helpers/property-structure.ts","../src/handlers/input-type.ts","../src/helpers/object-settings.ts","../src/handlers/model-data.ts","../src/helpers/create-comment.ts","../src/helpers/detect-circular-deps.ts","../src/helpers/get-output-type-name.ts","../src/handlers/model-output-type.ts","../src/handlers/no-atomic-operations.ts","../src/helpers/get-enum-name.ts","../src/handlers/output-type.ts","../src/handlers/purge-output.ts","../src/handlers/re-export.ts","../src/handlers/register-all-types.ts","../src/handlers/prisma-enum-doc.ts","../src/handlers/register-enum.ts","../src/handlers/require-single-fields-in-whereunique-input.ts","../src/handlers/type-registry.ts","../src/handlers/warning.ts","../src/helpers/create-emit-blocks.ts","../src/helpers/create-config.ts","../src/helpers/generate-file-name.ts","../src/helpers/factory-get-source-file.ts","../src/helpers/get-model-name.ts","../src/generate.ts","../src/index.ts"],"names":["assertOk","getModelName","inputType","outputType","StructureKind","globalConsole","outmatch","JSON5","options","namespaceConfig","castArray","pupa","beforeInputType","nestjsGraphql","rmdirSyncOriginal","ReExport","beforeGenerateFiles","getExportDeclaration","merge","trim","memoize","end","createRequireTyped","createRequire","requireCjs","globalConsole2","log","elapsed","existsSyncTyped","existsSync"],"mappings":"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","file":"index.js","sourcesContent":["import { ok as assertOk } from 'node:assert';\n\n/**\n * Type-safe assertion wrapper for node:assert.ok\n * This wrapper prevents TypeScript/ESLint 'unsafe call' errors\n * while preserving the assertion behavior.\n */\nexport function ok(value: unknown, message?: string): asserts value {\n (assertOk as (value: unknown, message?: string | Error) => asserts value)(\n value,\n message,\n );\n}\n","export function isManyAndReturnOutputType(name: string): boolean {\n const lowerName = name.toLowerCase();\n if (\n (lowerName.startsWith('createmany') || lowerName.startsWith('updatemany')) &&\n (lowerName.endsWith('andreturnoutputtype') || lowerName.endsWith('andreturn'))\n ) {\n return true;\n }\n\n return false;\n}\n","import { camelCase, startCase } from 'lodash-es';\n\nexport function pascalCase(string: string): string {\n return startCase(camelCase(string)).replaceAll(' ', '');\n}\n","import type { EventArguments, InputType, SchemaField } from '../types.js';\n\nimport { isManyAndReturnOutputType } from '../helpers/is-many-and-return.js';\nimport { pascalCase } from '../helpers/pascal-case.js';\n\n/**\n * See https://github.com/prisma/prisma/blob/master/src/packages/client/src/generation/TSClient/Model.ts@getAggregationTypes\n * Subscribes on: 'ArgsType'\n */\nexport function argsType(field: SchemaField, args: EventArguments): void {\n if (['queryRaw', 'executeRaw'].includes(field.name)) {\n return;\n }\n if (isManyAndReturnOutputType(field.name)) {\n return;\n }\n\n const { eventEmitter, getModelName, typeNames } = args;\n let className = pascalCase(`${field.name}Args`);\n const modelName = getModelName(className) ?? '';\n\n switch (className) {\n case `Aggregate${modelName}Args`: {\n className = `${modelName}AggregateArgs`;\n break;\n }\n case `GroupBy${modelName}Args`: {\n className = `${modelName}GroupByArgs`;\n break;\n }\n }\n\n const inputType: InputType = {\n constraints: { maxNumFields: null, minNumFields: null },\n fields: [...field.args],\n name: className,\n };\n\n if (\n !field.args.some(x => x.name === '_count') &&\n [`${modelName}AggregateArgs`, `${modelName}GroupByArgs`].includes(className)\n ) {\n const names = ['Count', 'Avg', 'Sum', 'Min', 'Max'];\n if (`${modelName}GroupByArgs` === inputType.name) {\n // Make `by` property array only, noEnumerable\n const byField = inputType.fields.find(f => f.name === 'by');\n if (byField?.inputTypes) {\n byField.inputTypes = byField.inputTypes.filter(it => it.isList);\n }\n }\n for (const name of names) {\n if (!typeNames.has(`${modelName}${name}AggregateInput`)) {\n continue;\n }\n\n inputType.fields.push({\n inputTypes: [\n {\n isList: false,\n location: 'inputObjectTypes',\n type: `${modelName}${name}AggregateInput`,\n },\n ],\n isNullable: true,\n isRequired: false,\n name: `_${name.toLowerCase()}`,\n });\n }\n }\n\n eventEmitter.emitSync('InputType', {\n ...args,\n classDecoratorName: 'ArgsType',\n fileType: 'args',\n inputType,\n });\n}\n","export const BeforeGenerateField = 'BeforeGenerateField' as const;\n","import type { EventArguments, EventEmitter, InputType, SchemaArg } from '../types.js';\n\nimport { cloneDeep, keyBy, remove } from 'lodash-es';\n\nimport { BeforeGenerateField } from '../event-names.js';\n\n/**\n * Subscribes on 'BeforeInputType'\n */\nexport function combineScalarFilters(eventEmitter: EventEmitter): void {\n eventEmitter.on('BeforeInputType', beforeInputType);\n eventEmitter.on(BeforeGenerateField, beforeGenerateField);\n eventEmitter.on('PostBegin', postBegin);\n}\n\nfunction beforeInputType(\n args: EventArguments & {\n inputType: InputType;\n fileType: string;\n classDecoratorName: string;\n },\n): void {\n const { inputType, removeTypes } = args;\n\n if (isContainBogus(inputType.name) && isScalarFilter(inputType)) {\n removeTypes.add(inputType.name);\n inputType.name = replaceBogus(inputType.name);\n }\n}\n\nfunction beforeGenerateField(field: SchemaArg): void {\n for (const fieldInput of field.inputTypes) {\n if (fieldInput.location !== 'inputObjectTypes') {\n continue;\n }\n const fieldInputType = fieldInput.type;\n if (isContainBogus(fieldInputType)) {\n fieldInput.type = replaceBogus(fieldInputType);\n }\n }\n}\n\nfunction replaceBogus(name: string): string {\n return name.replaceAll(/Nullable|Nested/g, '');\n}\n\nfunction isContainBogus(name: string): boolean {\n return (\n name.startsWith('Nested') ||\n (name.includes('Nullable') && name.endsWith('Filter')) ||\n name.endsWith('NullableFilter')\n );\n}\n\nfunction isScalarFilter(inputType: InputType): boolean {\n if (!inputType.name.endsWith('Filter')) {\n return false;\n }\n let result = false;\n const equals = inputType.fields.find(f => f.name === 'equals');\n if (equals) {\n result = equals.inputTypes.every(x => {\n return ['enumTypes', 'scalar'].includes(x.location);\n });\n }\n return result;\n}\n\nfunction postBegin(args: EventArguments): void {\n const { modelNames, schema } = args;\n const inputTypes = schema.inputObjectTypes.prisma ?? [];\n const enumTypes = schema.enumTypes.model ?? [];\n const types = [\n 'Bool',\n 'Int',\n 'String',\n 'DateTime',\n 'Decimal',\n 'Float',\n 'Json',\n 'Bytes',\n 'BigInt',\n ];\n\n for (const enumType of enumTypes) {\n const { name } = enumType;\n types.push(`Enum${name}`);\n }\n\n const inputTypeByName = keyBy(inputTypes, it => it.name);\n const replaceBogusFilters = (\n filterName: string,\n filterNameCandidates: string[],\n ): void => {\n for (const filterNameCandidate of filterNameCandidates) {\n const candidate = inputTypeByName[filterNameCandidate];\n if (candidate as InputType | undefined) {\n const it = cloneDeep({ ...candidate, name: filterName });\n inputTypes.push(it);\n inputTypeByName[filterName] = it;\n break;\n }\n }\n };\n\n for (const type of types) {\n // Scalar filters\n replaceBogusFilters(`${type}Filter`, [\n `${type}NullableFilter`,\n `Nested${type}NullableFilter`,\n ]);\n\n replaceBogusFilters(`${type}WithAggregatesFilter`, [\n `${type}NullableWithAggregatesFilter`,\n `Nested${type}NullableWithAggregatesFilter`,\n ]);\n\n replaceBogusFilters(`${type}ListFilter`, [\n `${type}NullableListFilter`,\n `Nested${type}NullableListFilter`,\n ]);\n }\n\n for (const modelName of modelNames) {\n replaceBogusFilters(`${modelName}RelationFilter`, [\n `${modelName}NullableRelationFilter`,\n ]);\n }\n\n for (const modelName of modelNames) {\n replaceBogusFilters(`${modelName}ScalarRelationFilter`, [\n `${modelName}NullableScalarRelationFilter`,\n ]);\n }\n\n remove(inputTypes, it => {\n return isContainBogus(it.name);\n });\n}\n","import type { EventArguments, InputType, OutputType } from '../types.js';\n\n/**\n * Create aggregate inputs from aggregate outputs.\n * See client/src/generation/TSClient.ts @ getAggregationTypes\n * Subscribes on: 'AggregateOutput'\n */\nexport function createAggregateInput(\n args: EventArguments & { outputType: OutputType },\n): void {\n const { eventEmitter, outputType } = args;\n const className = `${outputType.name}Input`;\n\n const inputType: InputType = {\n constraints: { maxNumFields: null, minNumFields: null },\n fields: outputType.fields.map(x => ({\n inputTypes: [\n {\n isList: false,\n location: 'scalar',\n type: 'true',\n },\n ],\n isNullable: x.isNullable ?? true,\n isRequired: false,\n name: x.name,\n })),\n name: className,\n };\n\n eventEmitter.emitSync('InputType', {\n ...args,\n classDecoratorName: 'InputType',\n fileType: 'input',\n inputType,\n });\n}\n","import type { EventArguments } from '../types.js';\n\n/**\n * Generate the decimal-helpers.ts file that provides Decimal transformation\n * utilities compatible with Prisma 7+.\n *\n * This replaces the dependency on prisma-graphql-type-decimal which is\n * incompatible with Prisma 7's new client structure.\n */\nexport function generateDecimalHelpers(args: EventArguments): void {\n const { output, project } = args;\n\n const rootDirectory = project.getDirectory(output) ?? project.createDirectory(output);\n\n const sourceFile = rootDirectory.createSourceFile('decimal-helpers.ts', undefined, {\n overwrite: true,\n });\n\n // Generate decimal helper functions using decimal.js\n const helpersCode = `/**\n * Decimal Helpers for Prisma GraphQL\n *\n * This module provides utilities for transforming Decimal values\n * between GraphQL and Prisma, compatible with Prisma 7+.\n *\n * These functions replace the prisma-graphql-type-decimal package\n * which is incompatible with Prisma 7's new client structure.\n */\n\nimport Decimal from 'decimal.js';\n\n/**\n * Reconstruct a Decimal from a serialized object.\n * Prisma serializes Decimals as objects with d, e, s properties.\n */\nfunction createDecimalFromObject(object: { d: number[]; e: number; s: number }): Decimal {\n return Object.create(Decimal.prototype, {\n d: { value: object.d },\n e: { value: object.e },\n s: { value: object.s },\n });\n}\n\n/**\n * Transform input values to Decimal instances.\n * Used as a class-transformer Transform decorator argument.\n *\n * @param params - The transform parameters from class-transformer\n * @returns The transformed Decimal or array of Decimals\n */\nexport function transformToDecimal({ value }: { value: unknown }): Decimal | Decimal[] | null | undefined {\n if (value == null) return value as null | undefined;\n\n if (Array.isArray(value)) {\n return value.map((v) => {\n if (v instanceof Decimal) return v;\n if (typeof v === 'object' && v !== null && 'd' in v && 'e' in v && 's' in v) {\n return createDecimalFromObject(v as { d: number[]; e: number; s: number });\n }\n return new Decimal(v as string | number);\n });\n }\n\n if (value instanceof Decimal) return value;\n if (typeof value === 'object' && value !== null && 'd' in value && 'e' in value && 's' in value) {\n return createDecimalFromObject(value as { d: number[]; e: number; s: number });\n }\n return new Decimal(value as string | number);\n}\n\n/**\n * Re-export Decimal class for convenience\n */\nexport { Decimal };\n`;\n\n sourceFile.addStatements(helpersCode);\n}\n","import type { DMMF, EventEmitter } from '../types.js';\nimport type { PropertyDeclarationStructure } from 'ts-morph';\n\nimport { partition } from 'lodash-es';\n\nexport function emitSingle(emitter: EventEmitter): void {\n emitter.on('ClassProperty', classProperty);\n}\n\nfunction classProperty(\n property: PropertyDeclarationStructure,\n eventArguments: {\n location: DMMF.FieldLocation;\n isList: boolean;\n propertyType: string[];\n },\n): void {\n const { isList, location, propertyType } = eventArguments;\n if (['inputObjectTypes', 'outputObjectTypes'].includes(location) && !isList) {\n const [safeTypes, instanceofTypes] = partition(\n propertyType,\n t => t === 'null' || t.startsWith('Prisma.'),\n );\n const mappedInstanceofTypes = instanceofTypes.map(t => `InstanceType<typeof ${t}>`);\n\n // eslint-disable-next-line no-param-reassign\n property.type = [...mappedInstanceofTypes, ...safeTypes].join(' | ');\n }\n}\n","import {\n type ImportDeclarationStructure,\n type ImportSpecifierStructure,\n type OptionalKind,\n StructureKind,\n} from 'ts-morph';\n\nexport class ImportDeclarationMap extends Map<\n string,\n OptionalKind<ImportDeclarationStructure>\n> {\n public add(name: string, moduleSpecifier: string, isTypeOnly?: boolean): void;\n public add(name: string, value: OptionalKind<ImportDeclarationStructure>): void;\n\n public add(\n name: string,\n value: OptionalKind<ImportDeclarationStructure> | string,\n isTypeOnly?: boolean,\n ): void {\n if (!this.has(name)) {\n const structure: OptionalKind<ImportDeclarationStructure> =\n typeof value === 'string'\n ? { isTypeOnly, moduleSpecifier: value, namedImports: [{ name }] }\n : value;\n this.set(name, structure);\n }\n }\n\n /**\n * Add a type-only import for ESM circular dependency resolution\n */\n public addType(name: string, moduleSpecifier: string): void {\n const typeOnlyKey = `type:${name}`;\n if (!this.has(typeOnlyKey) && !this.has(name)) {\n this.set(typeOnlyKey, {\n isTypeOnly: true,\n moduleSpecifier,\n namedImports: [{ name }],\n });\n }\n }\n\n public create(args: {\n name: string;\n from: string;\n defaultImport?: string | true;\n namespaceImport?: string;\n namedImport?: boolean;\n isTypeOnly?: boolean;\n }): void {\n const { defaultImport, from, isTypeOnly, namedImport, namespaceImport } = args;\n let { name } = args;\n const value: OptionalKind<ImportDeclarationStructure> = {\n defaultImport: undefined as string | undefined,\n isTypeOnly,\n moduleSpecifier: from,\n namedImports: [] as Array<OptionalKind<ImportSpecifierStructure>>,\n namespaceImport: undefined as string | undefined,\n };\n if (namedImport === true && namespaceImport !== undefined) {\n value.namedImports = [{ name: namespaceImport }];\n\n name = namespaceImport;\n } else if (defaultImport === undefined) {\n if (namespaceImport === undefined) {\n value.namedImports = [{ name }];\n } else {\n value.namespaceImport = namespaceImport;\n\n name = namespaceImport;\n }\n } else {\n value.defaultImport = defaultImport === true ? name : defaultImport;\n\n name = value.defaultImport;\n }\n const key = isTypeOnly === true ? `type:${name}` : name;\n if (this.has(key)) {\n return;\n }\n this.set(key, value);\n }\n\n public *toStatements(): Iterable<ImportDeclarationStructure> {\n const iterator = this.values();\n let result = iterator.next();\n while (result.value !== undefined) {\n yield {\n ...result.value,\n kind: StructureKind.ImportDeclaration,\n };\n result = iterator.next();\n }\n }\n}\n","/* eslint-disable @typescript-eslint/strict-boolean-expressions, @typescript-eslint/switch-exhaustiveness-check, @typescript-eslint/no-base-to-string, max-lines-per-function */\nimport type { EventArguments } from '../types.js';\n\nimport {\n type ClassDeclarationStructure,\n type ImportSpecifierStructure,\n type StatementStructures,\n StructureKind,\n} from 'ts-morph';\n\nimport { ImportDeclarationMap } from '../helpers/import-declaration-map.js';\nimport { ok } from '../helpers/type-safe-assert.js';\n\nexport async function generateFiles(args: EventArguments): Promise<void> {\n const { config, eventEmitter, output, project } = args;\n\n if (config.emitSingle) {\n const rootDirectory = project.getDirectory(output) ?? project.createDirectory(output);\n const sourceFile =\n rootDirectory.getSourceFile('index.ts') ??\n rootDirectory.createSourceFile('index.ts', undefined, { overwrite: true });\n const statements = project.getSourceFiles().flatMap(s => {\n if (s === sourceFile) {\n return [];\n }\n const classDeclaration = s.getClass(() => true);\n const stmts = s.getStructure().statements;\n // Reget decorator full name\n if (Array.isArray(stmts)) {\n for (const statement of stmts) {\n if (\n !(typeof statement === 'object' && statement.kind === StructureKind.Class)\n ) {\n continue;\n }\n for (const property of statement.properties ?? []) {\n for (const decorator of property.decorators ?? []) {\n const fullName = classDeclaration\n ?.getProperty(property.name)\n ?.getDecorator(decorator.name)\n ?.getFullName();\n ok(\n fullName !== undefined,\n `Cannot get full name of decorator of class ${String(statement.name)}`,\n );\n decorator.name = fullName;\n }\n }\n }\n }\n\n project.removeSourceFile(s);\n return stmts;\n });\n const imports = new ImportDeclarationMap();\n const enums: Array<StatementStructures | string> = [];\n const classes: ClassDeclarationStructure[] = [];\n for (const statement of statements as Array<StatementStructures | string>) {\n if (typeof statement === 'string') {\n if (statement.startsWith('registerEnumType')) {\n enums.push(statement);\n }\n continue;\n }\n switch (statement.kind) {\n case StructureKind.ImportDeclaration: {\n if (\n statement.moduleSpecifier.startsWith('./') ||\n statement.moduleSpecifier.startsWith('..')\n ) {\n continue;\n }\n for (const namedImport of statement.namedImports as ImportSpecifierStructure[]) {\n const name = namedImport.alias ?? namedImport.name;\n imports.add(name, statement.moduleSpecifier);\n }\n if (statement.defaultImport) {\n imports.create({\n defaultImport: statement.defaultImport,\n from: statement.moduleSpecifier,\n name: statement.defaultImport,\n });\n }\n if (statement.namespaceImport) {\n imports.create({\n from: statement.moduleSpecifier,\n name: statement.namespaceImport,\n namespaceImport: statement.namespaceImport,\n });\n }\n break;\n }\n case StructureKind.Enum: {\n enums.unshift(statement);\n break;\n }\n case StructureKind.Class: {\n classes.push(statement);\n break;\n }\n }\n }\n for (const customImport of config.customImport) {\n imports.create(customImport);\n }\n sourceFile.set({\n kind: StructureKind.SourceFile,\n statements: [...imports.toStatements(), ...enums, ...classes],\n });\n }\n\n const sourceFiles = project.getSourceFiles();\n const sourceFileCount = sourceFiles.length;\n // Type-safe console logging\n type ConsoleLogFunction = (message?: unknown, ...optionalParams: unknown[]) => void;\n const globalConsole: { log: ConsoleLogFunction } = globalThis.console as {\n log: ConsoleLogFunction;\n };\n const logMessage = (msg: string): void => {\n globalConsole.log(msg);\n };\n logMessage(\n `nestjs-prisma-graphql: saving ${String(sourceFileCount)} source files to ${output}`,\n );\n\n if (sourceFileCount === 0) {\n throw new Error(\n 'nestjs-prisma-graphql: project has 0 source files — nothing to write',\n );\n }\n\n if (config.emitCompiled) {\n project.compilerOptions.set({\n declaration: true,\n declarationDir: output,\n emitDecoratorMetadata: false,\n outDir: output,\n rootDir: output,\n skipLibCheck: true,\n });\n const emitResult = await project.emit();\n const errors = emitResult.getDiagnostics().map(d => String(d.getMessageText()));\n if (errors.length > 0) {\n eventEmitter.emitSync('Warning', errors);\n }\n } else {\n // For large schemas (2000+ files), save in batches to avoid stack overflow\n // ts-morph's project.save() can build up deep call stacks on large projects\n const BATCH_SIZE = 100;\n if (sourceFileCount > BATCH_SIZE) {\n logMessage(\n `nestjs-prisma-graphql: using batched save for large schema (${String(sourceFileCount)} files)`,\n );\n for (let i = 0; i < sourceFileCount; i += BATCH_SIZE) {\n const batch = sourceFiles.slice(i, i + BATCH_SIZE);\n logMessage(\n `nestjs-prisma-graphql: saving batch ${String(Math.floor(i / BATCH_SIZE) + 1)}/${String(Math.ceil(sourceFileCount / BATCH_SIZE))} (${String(batch.length)} files)`,\n );\n await Promise.all(batch.map(async sf => await sf.save()));\n }\n } else {\n await project.save();\n }\n }\n}\n","import type { FieldLocation } from '../types.js';\n\nexport function fileTypeByLocation(fieldLocation: FieldLocation): string {\n switch (fieldLocation) {\n case 'inputObjectTypes': {\n return 'input';\n }\n case 'outputObjectTypes': {\n return 'output';\n }\n case 'enumTypes': {\n return 'enum';\n }\n case 'fieldRefTypes':\n case 'scalar':\n default: {\n return 'object';\n }\n }\n}\n","import getRelativePath from 'get-relative-path';\n\nexport function relativePath(from: string, to: string): string {\n let fromPath = from;\n let toPath = to;\n if (!fromPath.startsWith('/')) {\n fromPath = `/${fromPath}`;\n }\n if (!toPath.startsWith('/')) {\n toPath = `/${toPath}`;\n }\n let result = getRelativePath(fromPath, toPath);\n if (!result.startsWith('.')) {\n result = `./${result}`;\n }\n if (result.endsWith('.ts')) {\n result = result.slice(0, -3);\n }\n return result;\n}\n","import type { FieldLocation, GeneratorConfiguration } from '../types.js';\nimport type { SourceFile } from 'ts-morph';\n\nimport { fileTypeByLocation } from './file-type-by-location.js';\nimport { relativePath } from './relative-path.js';\n\nexport function getGraphqlImport(args: {\n sourceFile: SourceFile;\n typeName: string;\n location: FieldLocation;\n isId?: boolean;\n fileType?: string;\n noTypeId?: boolean;\n getSourceFile: (args: { type: string; name: string }) => SourceFile;\n config: GeneratorConfiguration;\n}): { name: string; specifier?: string } {\n const {\n config,\n fileType,\n getSourceFile,\n isId,\n location,\n noTypeId,\n sourceFile,\n typeName,\n } = args;\n\n if (location === 'scalar') {\n if (isId && !noTypeId) {\n return { name: 'ID', specifier: '@nestjs/graphql' };\n }\n\n const graphqlType = config.graphqlScalars[typeName];\n if (graphqlType) {\n return { name: graphqlType.name, specifier: graphqlType.specifier };\n }\n\n switch (typeName) {\n case 'Float':\n case 'Int': {\n return { name: typeName, specifier: '@nestjs/graphql' };\n }\n case 'DateTime': {\n return { name: 'Date', specifier: undefined };\n }\n case 'true':\n case 'Boolean': {\n return { name: 'Boolean', specifier: undefined };\n }\n case 'Decimal': {\n // Use graphql-scalars by default for Prisma 7+ compatibility\n return {\n name: 'GraphQLDecimal',\n specifier: 'graphql-scalars',\n };\n }\n case 'Json': {\n return { name: 'GraphQLJSON', specifier: 'graphql-type-json' };\n }\n }\n\n return { name: 'String', specifier: undefined };\n }\n\n let sourceFileType = fileTypeByLocation(location);\n if (sourceFileType === 'output' && fileType === 'model') {\n sourceFileType = 'model';\n }\n\n let specifier = relativePath(\n sourceFile.getFilePath(),\n getSourceFile({\n name: typeName,\n type: sourceFileType,\n }).getFilePath(),\n );\n\n // In ESM mode, add .js extension for module resolution\n if (config.esmCompatible && !specifier.startsWith('@') && !specifier.endsWith('.js')) {\n specifier += '.js';\n }\n\n return { name: typeName, specifier };\n}\n","import type { DMMF } from '../types.js';\n\nimport { countBy, isEqual, uniqWith } from 'lodash-es';\nimport outmatch from 'outmatch';\n\n/**\n * Find input type for graphql field decorator.\n */\nexport function getGraphqlInputType(\n inputTypes: DMMF.InputTypeRef[],\n pattern?: string,\n): DMMF.InputTypeRef {\n let result: DMMF.InputTypeRef | undefined;\n\n // eslint-disable-next-line no-param-reassign\n inputTypes = inputTypes.filter(t => !['null', 'Null'].includes(t.type));\n // eslint-disable-next-line no-param-reassign\n inputTypes = uniqWith(inputTypes, isEqual);\n\n if (inputTypes.length === 1) {\n return inputTypes[0];\n }\n\n const countTypes = countBy(inputTypes, x => x.location);\n const isOneType = Object.keys(countTypes).length === 1;\n\n if (isOneType) {\n result = inputTypes.find(x => x.isList);\n if (result) {\n return result;\n }\n }\n\n if (pattern !== null && pattern !== undefined && pattern.length > 0) {\n if (pattern.startsWith('matcher:') || pattern.startsWith('match:')) {\n const { 1: patternValue } = pattern.split(':', 2);\n const isMatch = outmatch(patternValue, { separator: false });\n result = inputTypes.find(x => isMatch(x.type));\n if (result !== undefined) {\n return result;\n }\n }\n result = inputTypes.find(x => x.type.includes(pattern));\n if (result !== undefined) {\n return result;\n }\n }\n\n result = inputTypes.find(x => x.location === 'inputObjectTypes');\n if (result !== undefined) {\n return result;\n }\n\n if (\n (countTypes.enumTypes ?? 0) > 0 &&\n (countTypes.scalar ?? 0) > 0 &&\n inputTypes.some(x => x.type === 'Json' && x.location === 'scalar')\n ) {\n result = inputTypes.find(x => x.type === 'Json' && x.location === 'scalar');\n if (result !== undefined) {\n return result;\n }\n }\n\n if (\n ((countTypes.scalar ?? 0) >= 1 || (countTypes.enumTypes ?? 0) >= 1) &&\n countTypes.fieldRefTypes === 1\n ) {\n result = inputTypes.find(\n x => (x.location === 'scalar' || x.location === 'enumTypes') && x.isList,\n );\n\n if (result !== undefined) {\n return result;\n }\n\n result = inputTypes.find(x => x.location === 'scalar' || x.location === 'enumTypes');\n\n if (result !== undefined) {\n return result;\n }\n }\n\n throw new TypeError(\n `Cannot get matching input type from ${\n inputTypes.length > 0\n ? inputTypes.map(x => x.type).join(', ')\n : 'zero length inputTypes'\n }`,\n );\n}\n","import type { FieldLocation } from '../types.js';\n\n/**\n * Returns typescript property type.\n */\nexport function getPropertyType(args: {\n type: string;\n location: FieldLocation;\n}): string[] {\n const { location, type } = args;\n switch (type) {\n case 'Float':\n case 'Int': {\n return ['number'];\n }\n case 'String': {\n return ['string'];\n }\n case 'Boolean': {\n return ['boolean'];\n }\n case 'DateTime': {\n return ['Date', 'string'];\n }\n case 'Decimal': {\n return ['Prisma.Decimal'];\n }\n case 'Json': {\n return ['any'];\n }\n case 'Null': {\n return ['null'];\n }\n case 'Bytes': {\n return ['Uint8Array'];\n }\n case 'BigInt': {\n return ['bigint', 'number'];\n }\n }\n if (['inputObjectTypes', 'outputObjectTypes'].includes(location)) {\n return [type];\n }\n if (location === 'enumTypes') {\n const enumType = `\\`\\${${type}}\\``;\n\n return [enumType];\n }\n if (location === 'scalar') {\n return [type];\n }\n\n return ['unknown'];\n}\n","import type { DMMF } from '../types.js';\n\nexport function getWhereUniqueAtLeastKeys(model: DMMF.Model): string[] {\n const names = model.fields\n .filter(field => field.isUnique || field.isId)\n .map(field => field.name);\n\n if (model.primaryKey) {\n names.push(createFieldName(model.primaryKey));\n }\n\n for (const uniqueIndex of model.uniqueIndexes) {\n names.push(createFieldName(uniqueIndex));\n }\n\n return names;\n}\n\nfunction createFieldName(args: {\n name?: string | null;\n fields: readonly string[];\n}): string {\n const { fields, name } = args;\n\n return name !== null && name !== undefined && name.length > 0 ? name : fields.join('_');\n}\n","export function isWhereUniqueInputType(name: string): boolean {\n return name.endsWith('WhereUniqueInput');\n}\n","import { type PropertyDeclarationStructure, StructureKind } from 'ts-morph';\n\n/**\n * Get property structure (field) for class.\n */\nexport function propertyStructure(args: {\n propertyType: string[];\n isList: boolean;\n name: string;\n isNullable?: boolean;\n hasQuestionToken?: boolean;\n hasExclamationToken?: boolean;\n}): PropertyDeclarationStructure {\n const {\n hasExclamationToken,\n hasQuestionToken,\n isList,\n isNullable,\n name,\n propertyType,\n } = args;\n const typeString = propertyType\n .map(typeItem => (isList ? `Array<${typeItem}>` : typeItem))\n .join(' | ');\n\n return {\n decorators: [],\n hasExclamationToken: hasExclamationToken ?? !isNullable,\n hasQuestionToken: hasQuestionToken ?? isNullable,\n kind: StructureKind.Property,\n leadingTrivia: '\\n',\n name,\n type: typeString,\n };\n}\n","import type { EventArguments, InputType } from '../types.js';\n\nimport JSON5 from 'json5';\nimport { castArray } from 'lodash-es';\nimport pupa from 'pupa';\nimport {\n type ClassDeclarationStructure,\n type StatementStructures,\n StructureKind,\n} from 'ts-morph';\n\nimport { BeforeGenerateField } from '../event-names.js';\nimport { getGraphqlImport } from '../helpers/get-graphql-import.js';\nimport { getGraphqlInputType } from '../helpers/get-graphql-input-type.js';\nimport { getPropertyType } from '../helpers/get-property-type.js';\nimport { getWhereUniqueAtLeastKeys } from '../helpers/get-where-unique-at-least-keys.js';\nimport { ImportDeclarationMap } from '../helpers/import-declaration-map.js';\nimport { isWhereUniqueInputType } from '../helpers/is-where-unique-input-type.js';\nimport { propertyStructure } from '../helpers/property-structure.js';\nimport { relativePath } from '../helpers/relative-path.js';\nimport { ok } from '../helpers/type-safe-assert.js';\n\nexport function inputType(\n args: EventArguments & {\n inputType: InputType;\n fileType: string;\n classDecoratorName: string;\n },\n): void {\n const {\n classDecoratorName,\n classTransformerTypeModels,\n config,\n eventEmitter,\n fieldSettings,\n fileType,\n getModelName,\n getSourceFile,\n inputType: inputTypeArg,\n models,\n output,\n removeTypes,\n typeNames,\n } = args;\n\n typeNames.add(inputTypeArg.name);\n\n const importDeclarations = new ImportDeclarationMap();\n const sourceFile = getSourceFile({\n name: inputTypeArg.name,\n type: fileType,\n });\n const classStructure: ClassDeclarationStructure = {\n decorators: [\n {\n arguments: [],\n name: classDecoratorName,\n },\n ],\n isExported: true,\n kind: StructureKind.Class,\n name: inputTypeArg.name,\n properties: [],\n };\n const modelName = getModelName(inputTypeArg.name) ?? '';\n const model = models.get(modelName);\n const modelFieldSettings = model && fieldSettings.get(model.name);\n const moduleSpecifier = '@nestjs/graphql';\n\n // Track types that need lazy loading due to circular dependencies\n const lazyTypes = new Set<string>();\n\n importDeclarations\n .set('Field', {\n moduleSpecifier,\n namedImports: [{ name: 'Field' }],\n })\n .set(classDecoratorName, {\n moduleSpecifier,\n namedImports: [{ name: classDecoratorName }],\n });\n\n // Add type registry imports if ESM compatible mode is enabled\n if (config.esmCompatible) {\n let typeRegistryPath = relativePath(\n sourceFile.getFilePath(),\n `${output}/type-registry.ts`,\n );\n // Add .js extension for ESM module resolution\n if (!typeRegistryPath.endsWith('.js')) {\n typeRegistryPath += '.js';\n }\n importDeclarations.add('registerType', typeRegistryPath);\n importDeclarations.add('getType', typeRegistryPath);\n }\n\n const useInputType = config.useInputType.find(x =>\n inputTypeArg.name.includes(x.typeName),\n );\n const isWhereUnique = isWhereUniqueInputType(inputTypeArg.name);\n\n for (const field of inputTypeArg.fields) {\n field.inputTypes = field.inputTypes.filter(t => !removeTypes.has(t.type));\n\n eventEmitter.emitSync(BeforeGenerateField, field, args);\n\n const { inputTypes, isRequired, name } = field;\n\n if (inputTypes.length === 0) {\n continue;\n }\n\n const usePattern = useInputType?.ALL ?? useInputType?.[name];\n const graphqlInputType = getGraphqlInputType(inputTypes, usePattern);\n const { isList, location, type } = graphqlInputType;\n const typeName = type;\n const settings = modelFieldSettings?.get(name);\n const propertySettings = settings?.getPropertyType({\n input: true,\n name: inputTypeArg.name,\n });\n const modelField = model?.fields.find(f => f.name === name);\n const isCustomsApplicable = typeName === modelField?.type;\n const atLeastKeys = model && getWhereUniqueAtLeastKeys(model);\n const whereUniqueInputTypeValue =\n isWhereUniqueInputType(typeName) &&\n atLeastKeys &&\n `Prisma.AtLeast<${typeName}, ${atLeastKeys.map(n => `'${n}'`).join(' | ')}>`;\n\n const propertyType = castArray(\n propertySettings?.name ??\n whereUniqueInputTypeValue ??\n getPropertyType({\n location,\n type: typeName,\n }),\n );\n\n const hasExclamationToken = Boolean(\n isWhereUnique &&\n config.unsafeCompatibleWhereUniqueInput &&\n atLeastKeys?.includes(name),\n );\n const property = propertyStructure({\n hasExclamationToken: hasExclamationToken || undefined,\n hasQuestionToken: hasExclamationToken ? false : undefined,\n isList,\n isNullable: !isRequired,\n name,\n propertyType,\n });\n\n if (classStructure.properties) {\n classStructure.properties.push(property);\n }\n\n if (propertySettings) {\n importDeclarations.create({ ...propertySettings });\n } else if (\n propertyType.some(\n (p: string) => typeof p === 'string' && p.includes('Prisma.Decimal'),\n )\n ) {\n importDeclarations.add('Prisma', config.prismaClientImport);\n } else if (\n propertyType.some((p: string) => typeof p === 'string' && p.startsWith('Prisma.'))\n ) {\n importDeclarations.add('Prisma', config.prismaClientImport);\n }\n\n // Get graphql type\n let graphqlType: string;\n let useGetType = false;\n const shouldHideField =\n settings?.shouldHideField({\n input: true,\n name: inputTypeArg.name,\n }) ??\n config.decorate.some(\n d =>\n d.name === 'HideField' &&\n d.from === moduleSpecifier &&\n d.isMatchField(name) &&\n d.isMatchType(inputTypeArg.name),\n );\n\n const fieldType = settings?.getFieldType({\n input: true,\n name: inputTypeArg.name,\n });\n\n if (fieldType && isCustomsApplicable && !shouldHideField) {\n graphqlType = fieldType.name;\n importDeclarations.create({ ...fieldType });\n } else {\n // Import property type class\n const graphqlImport = getGraphqlImport({\n config,\n getSourceFile,\n location,\n sourceFile,\n typeName,\n });\n\n graphqlType = graphqlImport.name;\n // Extract the actual type name from complex property types like \"typeof X | Y\"\n if (location === 'enumTypes') {\n const parts = String(propertyType[0]).split(' ');\n const lastPart = parts.at(-1);\n if (lastPart !== undefined) {\n // Use lastPart for enum type resolution\n void lastPart;\n }\n }\n\n // In ESM mode, always use getType() for input object types\n const shouldUseLazyType = config.esmCompatible && location === 'inputObjectTypes';\n\n // Handle self-references\n if (graphqlImport.name === inputTypeArg.name && shouldUseLazyType) {\n lazyTypes.add(graphqlImport.name);\n useGetType = true;\n } else if (\n graphqlImport.specifier !== null &&\n graphqlImport.specifier !== undefined &&\n !importDeclarations.has(graphqlImport.name) &&\n graphqlImport.name !== inputTypeArg.name\n ) {\n if (shouldUseLazyType) {\n importDeclarations.addType(graphqlImport.name, graphqlImport.specifier);\n lazyTypes.add(graphqlImport.name);\n } else {\n importDeclarations.set(graphqlImport.name, {\n moduleSpecifier: graphqlImport.specifier,\n namedImports: [{ name: graphqlImport.name }],\n });\n }\n }\n\n // Check if this type should use lazy loading\n if (lazyTypes.has(graphqlImport.name)) {\n useGetType = true;\n }\n }\n\n ok(\n property.decorators !== undefined && property.decorators !== null,\n 'property.decorators is undefined',\n );\n\n if (shouldHideField) {\n importDeclarations.add('HideField', moduleSpecifier);\n property.decorators.push({ arguments: [], name: 'HideField' });\n } else {\n let typeExpression: string;\n if (useGetType) {\n typeExpression = isList\n ? `() => [getType('${graphqlType}')]`\n : `() => getType('${graphqlType}')`;\n } else {\n typeExpression = isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`;\n }\n\n property.decorators.push({\n arguments: [\n typeExpression,\n JSON5.stringify({\n ...settings?.fieldArguments(),\n nullable: !isRequired,\n }),\n ],\n name: 'Field',\n });\n\n if (graphqlType === 'GraphQLDecimal') {\n // Import from generated decimal-helpers.ts instead of prisma-graphql-type-decimal\n // This provides Prisma 7+ compatibility\n let decimalHelpersPath = relativePath(\n sourceFile.getFilePath(),\n `${output}/decimal-helpers.ts`,\n );\n // Add .js extension for ESM module resolution\n if (config.esmCompatible && !decimalHelpersPath.endsWith('.js')) {\n decimalHelpersPath += '.js';\n }\n importDeclarations.add('transformToDecimal', decimalHelpersPath);\n importDeclarations.add('Transform', 'class-transformer');\n importDeclarations.add('Type', 'class-transformer');\n\n property.decorators.push(\n {\n arguments: ['() => Object'],\n name: 'Type',\n },\n {\n arguments: ['transformToDecimal'],\n name: 'Transform',\n },\n );\n } else if (\n location === 'inputObjectTypes' &&\n (modelField?.type === 'Decimal' ||\n [\n 'connect',\n 'connectOrCreate',\n 'create',\n 'createMany',\n 'data',\n 'delete',\n 'deleteMany',\n 'disconnect',\n 'set',\n 'update',\n 'updateMany',\n 'upsert',\n 'where',\n ].includes(name) ||\n classTransformerTypeModels.has(getModelName(graphqlType) ?? '') ||\n (modelField?.kind === 'object' &&\n models\n .get(modelField.type)\n ?.fields.some(\n f => f.kind === 'object' && classTransformerTypeModels.has(f.type),\n ) === true))\n ) {\n importDeclarations.add('Type', 'class-transformer');\n if (useGetType) {\n property.decorators.push({\n arguments: [`getType('${graphqlType}')`],\n name: 'Type',\n });\n } else {\n property.decorators.push({ arguments: [`() => ${graphqlType}`], name: 'Type' });\n }\n }\n\n if (isCustomsApplicable) {\n for (const options of settings ?? []) {\n if (\n (options.kind === 'Decorator' && options.input && options.match?.(name)) ??\n true\n ) {\n property.decorators.push({\n arguments: options.arguments as string[],\n name: options.name,\n });\n ok(\n options.from !== undefined && options.from !== null && options.from !== '',\n \"Missed 'from' part in configuration or field setting\",\n );\n importDeclarations.create(options);\n }\n }\n }\n\n for (const decorate of config.decorate) {\n if (decorate.isMatchField(name) && decorate.isMatchType(inputTypeArg.name)) {\n property.decorators.push({\n arguments: decorate.arguments?.map(x => pupa(x, { propertyType })),\n name: decorate.name,\n });\n importDeclarations.create(decorate);\n }\n }\n }\n\n eventEmitter.emitSync('ClassProperty', property, {\n isList,\n location,\n propertyType,\n });\n }\n\n // Build statements array\n const statements: Array<StatementStructures | string> = [\n ...importDeclarations.toStatements(),\n classStructure,\n ];\n\n // Add registerType call if ESM compatible mode is enabled\n if (config.esmCompatible) {\n statements.push(`\\nregisterType('${inputTypeArg.name}', ${inputTypeArg.name});`);\n }\n\n sourceFile.set({\n statements,\n });\n}\n","import type { GeneratorConfiguration } from '../types.js';\nimport type { PlainObject } from 'simplytyped';\n\nimport JSON5 from 'json5';\nimport { isObject, merge, omit, trim } from 'lodash-es';\nimport outmatch from 'outmatch';\n\nexport interface ObjectSetting {\n /**\n * Act as named import or namespaceImport or defaultImport\n */\n name: string;\n kind: 'Decorator' | 'Field' | 'FieldType' | 'PropertyType' | 'ObjectType';\n arguments?: string[] | Record<string, unknown>;\n input: boolean;\n output: boolean;\n model: boolean;\n match?: (test: string) => boolean;\n from: string;\n namespace?: string;\n defaultImport?: string | true;\n namespaceImport?: string;\n namedImport?: boolean;\n}\n\ninterface ObjectSettingsFilterArgs {\n name: string;\n input?: boolean;\n output?: boolean;\n}\n\nexport class ObjectSettings extends Array<ObjectSetting> {\n public shouldHideField({\n input = false,\n name,\n output = false,\n }: ObjectSettingsFilterArgs): boolean {\n const hideField = this.find(s => s.name === 'HideField');\n\n return Boolean(\n (hideField?.input && input) ||\n (hideField?.output && output) ||\n hideField?.match?.(name),\n );\n }\n\n public getFieldType({\n input,\n name,\n output,\n }: ObjectSettingsFilterArgs): ObjectSetting | undefined {\n const fieldType = this.find(s => s.kind === 'FieldType');\n\n if (!fieldType) {\n return undefined;\n }\n\n if (fieldType.match) {\n return fieldType.match(name) ? fieldType : undefined;\n }\n\n if (input && !fieldType.input) {\n return undefined;\n }\n\n if (output && !fieldType.output) {\n return undefined;\n }\n\n return fieldType;\n }\n\n public getPropertyType({\n input,\n name,\n output,\n }: ObjectSettingsFilterArgs): ObjectSetting | undefined {\n const propertyType = this.find(s => s.kind === 'PropertyType');\n\n if (!propertyType) {\n return undefined;\n }\n\n if (propertyType.match) {\n return propertyType.match(name) ? propertyType : undefined;\n }\n\n if (input && !propertyType.input) {\n return undefined;\n }\n\n if (output && !propertyType.output) {\n return undefined;\n }\n\n return propertyType;\n }\n\n public getObjectTypeArguments(options: Record<string, unknown>): string[] {\n const objectTypeOptions = merge({}, options);\n const resultArguments: unknown[] = [objectTypeOptions];\n const objectType = this.find(s => s.kind === 'ObjectType');\n if (objectType && isObject(objectType.arguments)) {\n const { name } = objectType.arguments as PlainObject;\n merge(objectTypeOptions, omit(objectType.arguments, 'name'));\n if (name !== null && name !== undefined && name !== '') {\n resultArguments.unshift(name);\n }\n }\n return resultArguments.map(x => JSON5.stringify(x));\n }\n\n public fieldArguments(): Record<string, unknown> | undefined {\n const fieldItem = this.find(item => item.kind === 'Field');\n if (fieldItem) {\n return fieldItem.arguments as Record<string, unknown>;\n }\n return undefined;\n }\n}\n\nexport function createObjectSettings(args: {\n text: string;\n config: GeneratorConfiguration;\n}): { documentation: string | undefined; settings: ObjectSettings } {\n const { config, text } = args;\n const result = new ObjectSettings();\n const textLines = text.split('\\n');\n const documentationLines: string[] = [];\n\n let fieldElement = result.find(item => item.kind === 'Field');\n if (!fieldElement) {\n const newFieldElement: ObjectSetting = {\n arguments: {},\n from: '',\n input: false,\n kind: 'Field',\n model: false,\n name: '',\n output: false,\n };\n fieldElement = newFieldElement;\n }\n\n for (const line of textLines) {\n const match = /^@(?<name>\\w+(\\.(\\w+))?)\\((?<args>.*)\\)/.exec(line);\n const { documentLine, element } = createSettingElement({\n config,\n fieldElement,\n line,\n match,\n });\n\n if (element) {\n result.push(element);\n }\n\n if (documentLine) {\n documentationLines.push(line);\n }\n }\n\n return {\n documentation: documentationLines.filter(Boolean).join('\\n') || undefined,\n settings: result,\n };\n}\n\nfunction createSettingElement({\n config,\n fieldElement,\n line,\n match,\n}: {\n line: string;\n config: GeneratorConfiguration;\n fieldElement: ObjectSetting;\n match: RegExpExecArray | null;\n}): { documentLine: string; element: ObjectSetting | undefined } {\n const result = {\n documentLine: '',\n element: undefined as ObjectSetting | undefined,\n };\n if (line.startsWith('@deprecated')) {\n const DEPRECATED_PREFIX_LENGTH = 11;\n const updatedFieldElement = {\n ...fieldElement,\n arguments: {\n ...(fieldElement.arguments as Record<string, unknown>),\n deprecationReason: trim(line.slice(DEPRECATED_PREFIX_LENGTH)),\n },\n };\n\n result.element = updatedFieldElement;\n\n return result;\n }\n\n if (line.startsWith('@complexity')) {\n const COMPLEXITY_PREFIX_LENGTH = 11;\n const MIN_COMPLEXITY = 1;\n let n = Number.parseInt(trim(line.slice(COMPLEXITY_PREFIX_LENGTH)), 10);\n if (Number.isNaN(n) || n < MIN_COMPLEXITY) {\n n = MIN_COMPLEXITY;\n }\n const updatedFieldElement = {\n ...fieldElement,\n arguments: {\n ...(fieldElement.arguments as Record<string, unknown>),\n complexity: n,\n },\n };\n\n result.element = updatedFieldElement;\n\n return result;\n }\n\n const name = match?.groups?.name;\n\n if (!(match && name !== undefined && name !== '')) {\n result.documentLine = line;\n return result;\n }\n\n const element: ObjectSetting = {\n arguments: [],\n from: '',\n input: false,\n kind: 'Decorator',\n model: false,\n name: '',\n output: false,\n };\n\n result.element = element;\n\n if (name === 'TypeGraphQL.omit' || name === 'HideField') {\n Object.assign(element, hideFieldDecorator(match));\n\n return result;\n }\n\n if (\n ['FieldType', 'PropertyType'].includes(name) &&\n match.groups?.args !== undefined &&\n match.groups.args !== ''\n ) {\n const options = customType(match.groups.args);\n const namespaceConfig =\n options.namespace !== undefined && options.namespace !== ''\n ? config.fields[options.namespace]\n : undefined;\n merge(element, namespaceConfig, options, {\n kind: name,\n });\n return result;\n }\n\n if (\n name === 'ObjectType' &&\n match.groups?.args !== undefined &&\n match.groups.args !== ''\n ) {\n element.kind = 'ObjectType';\n const options = customType(match.groups.args) as Record<string, unknown>;\n if (typeof options[0] === 'string' && options[0] !== '') {\n options.name = options[0];\n }\n if (isObject(options[1])) {\n merge(options, options[1]);\n }\n element.arguments = {\n isAbstract: options.isAbstract,\n name: options.name,\n };\n\n return result;\n }\n\n if (\n name === 'Directive' &&\n match.groups?.args !== undefined &&\n match.groups.args !== ''\n ) {\n const options = customType(match.groups.args);\n merge(element, { from: '@nestjs/graphql', model: true }, options, {\n arguments: Array.isArray(options.arguments)\n ? options.arguments.map(s => JSON5.stringify(s))\n : options.arguments,\n kind: 'Decorator',\n name,\n namespace: false,\n });\n\n return result;\n }\n\n const namespace = getNamespace(name);\n element.namespaceImport = namespace;\n const args = match.groups?.args ?? '';\n const options = {\n arguments: args\n .split(',')\n .map(s => trim(s))\n .filter(Boolean),\n name,\n };\n const namespaceConfig =\n namespace !== undefined && namespace !== '' ? config.fields[namespace] : undefined;\n merge(element, namespaceConfig, options);\n\n return result;\n}\n\nfunction customType(args: string): Partial<ObjectSetting> {\n const result: Partial<ObjectSetting> = {};\n let options = parseArgs(args);\n if (typeof options === 'string') {\n options = { name: options };\n }\n Object.assign(result, options);\n const namespace = getNamespace(options.name);\n result.namespace = namespace;\n const optionsWithName = options as { name: string | undefined };\n if (\n optionsWithName.name !== undefined &&\n optionsWithName.name !== '' &&\n optionsWithName.name.includes('.')\n ) {\n result.namespaceImport = namespace;\n }\n\n if (typeof options.match === 'string' || Array.isArray(options.match)) {\n result.match = outmatch(options.match, { separator: false });\n }\n\n return result;\n}\n\nfunction hideFieldDecorator(match: RegExpExecArray): Partial<ObjectSetting> {\n const result: Partial<ObjectSetting> = {\n arguments: [],\n defaultImport: undefined,\n from: '@nestjs/graphql',\n match: undefined,\n name: 'HideField',\n namespaceImport: undefined,\n };\n const args = match.groups?.args;\n if (args === undefined || args === '') {\n result.output = true;\n return result;\n }\n\n if (args.includes('{') && args.includes('}')) {\n const options = parseArgs(args) as Record<string, unknown>;\n result.output = Boolean(options.output);\n result.input = Boolean(options.input);\n if (typeof options.match === 'string' || Array.isArray(options.match)) {\n result.match = outmatch(options.match, { separator: false });\n }\n } else {\n if (/output:\\s*true/.test(args)) {\n result.output = true;\n }\n if (/input:\\s*true/.test(args)) {\n result.input = true;\n }\n }\n\n return result;\n}\n\nfunction parseArgs(string: string): Record<string, unknown> | string {\n try {\n return JSON5.parse(string);\n } catch {\n try {\n return JSON5.parse(`[${string}]`);\n } catch {\n throw new Error(`Failed to parse: ${string}`);\n }\n }\n}\n\nfunction getNamespace(name: unknown): string | undefined {\n if (name === undefined || name === null) {\n return undefined;\n }\n if (typeof name !== 'string') {\n return undefined;\n }\n let result = name;\n if (result === '') {\n return undefined;\n }\n if (result.includes('.')) {\n const parts = result.split('.');\n result = parts[0] ?? '';\n }\n if (result === '') {\n return undefined;\n }\n return result;\n}\n","import type { EventArguments, Field, Model } from '../types.js';\n\nimport { createObjectSettings, type ObjectSettings } from '../helpers/object-settings.js';\n\nexport function modelData(model: Model, args: EventArguments): void {\n const {\n classTransformerTypeModels,\n config,\n fieldSettings,\n modelFields,\n modelNames,\n models,\n } = args;\n\n modelNames.push(model.name);\n models.set(model.name, model);\n\n const modelFieldsValue = new Map<string, Field>();\n modelFields.set(model.name, modelFieldsValue);\n\n const fieldSettingsValue = new Map<string, ObjectSettings>();\n fieldSettings.set(model.name, fieldSettingsValue);\n\n for (const field of model.fields) {\n if (\n field.documentation !== null &&\n field.documentation !== undefined &&\n field.documentation.length > 0\n ) {\n const { documentation, settings } = createObjectSettings({\n config,\n text: field.documentation,\n });\n field.documentation = documentation;\n fieldSettingsValue.set(field.name, settings);\n }\n modelFieldsValue.set(field.name, field);\n }\n\n if (model.fields.some(field => field.type === 'Decimal')) {\n classTransformerTypeModels.add(model.name);\n }\n}\n","import type { ObjectSettings } from '../types.js';\n\nexport function createComment(documentation: string, settings?: ObjectSettings): string {\n const documentationLines = documentation.split('\\n');\n const commentLines = ['/**'];\n\n for (const line of documentationLines) {\n commentLines.push(` * ${line}`);\n }\n\n const fieldArgs = settings?.fieldArguments();\n let deprecationReason: string | undefined;\n if (fieldArgs === undefined) {\n deprecationReason = undefined;\n } else {\n deprecationReason = fieldArgs.deprecationReason as string | undefined;\n }\n\n if (\n deprecationReason !== undefined &&\n deprecationReason !== null &&\n deprecationReason.length > 0\n ) {\n commentLines.push(` * @deprecated ${deprecationReason}`);\n }\n\n commentLines.push(' */\\n');\n\n return commentLines.join('\\n');\n}\n","import type { Model } from '../types.js';\n\n/**\n * Represents a dependency graph where keys are model names and values are sets of dependent model names\n */\nexport type DependencyGraph = Map<string, Set<string>>;\n\n/**\n * Represents a set of model name pairs that have circular dependencies\n * Format: \"ModelA:ModelB\" where ModelA < ModelB alphabetically\n */\nexport type CircularDependencySet = Set<string>;\n\n/**\n * Build a dependency graph from Prisma models based on their relations\n */\nexport function buildDependencyGraph(models: Model[]): DependencyGraph {\n const graph: DependencyGraph = new Map();\n\n // Initialize all models in the graph\n for (const model of models) {\n graph.set(model.name, new Set());\n }\n\n // Add edges for each relation field\n for (const model of models) {\n const dependencies = graph.get(model.name);\n if (!dependencies) {\n continue;\n }\n for (const field of model.fields) {\n // Only consider object/relation fields that reference other models\n if (field.kind === 'object' && field.type !== model.name) {\n // Check if the referenced type is actually a model\n if (graph.has(field.type)) {\n dependencies.add(field.type);\n }\n }\n }\n }\n\n return graph;\n}\n\n/**\n * Detect all circular dependencies in the dependency graph using DFS\n * Returns a set of model pairs that form cycles\n */\nexport function detectCircularDependencies(\n graph: DependencyGraph,\n): CircularDependencySet {\n const circularPairs: CircularDependencySet = new Set();\n const visited = new Set<string>();\n const recursionStack = new Set<string>();\n const path: string[] = [];\n\n function dfs(node: string): void {\n visited.add(node);\n recursionStack.add(node);\n path.push(node);\n\n const dependencies = graph.get(node) ?? new Set();\n for (const dep of dependencies) {\n if (!visited.has(dep)) {\n dfs(dep);\n } else if (recursionStack.has(dep)) {\n // Found a cycle - record all pairs in the cycle path\n const cycleStartIndex = path.indexOf(dep);\n if (cycleStartIndex !== -1) {\n const cyclePath = path.slice(cycleStartIndex);\n // Add all pairs in the cycle\n for (let i = 0; i < cyclePath.length; i++) {\n const a = cyclePath[i];\n const b = cyclePath[(i + 1) % cyclePath.length];\n // Store in alphabetical order for consistency\n const pair = a < b ? `${a}:${b}` : `${b}:${a}`;\n circularPairs.add(pair);\n }\n }\n }\n }\n\n path.pop();\n recursionStack.delete(node);\n }\n\n // Run DFS from each unvisited node\n for (const node of graph.keys()) {\n if (!visited.has(node)) {\n dfs(node);\n }\n }\n\n return circularPairs;\n}\n\n/**\n * Check if two models have a circular dependency relationship\n */\nexport function hasCircularDependency(\n circularDeps: CircularDependencySet,\n modelA: string,\n modelB: string,\n): boolean {\n const pair = modelA < modelB ? `${modelA}:${modelB}` : `${modelB}:${modelA}`;\n return circularDeps.has(pair);\n}\n\n/**\n * Get all models that are involved in any circular dependency\n */\nexport function getModelsInCircularDeps(\n circularDeps: CircularDependencySet,\n): Set<string> {\n const models = new Set<string>();\n for (const pair of circularDeps) {\n const [a, b] = pair.split(':');\n models.add(a);\n models.add(b);\n }\n return models;\n}\n","export function getOutputTypeName(name: string): string {\n return name.replace(/(?:OutputType|Output)$/, '');\n}\n","import type { EventArguments, OutputType } from '../types.js';\nimport type { PlainObject } from 'simplytyped';\n\nimport JSON5 from 'json5';\nimport { castArray } from 'lodash-es';\nimport pupa from 'pupa';\nimport {\n type ClassDeclarationStructure,\n type ExportSpecifierStructure,\n type StatementStructures,\n StructureKind,\n} from 'ts-morph';\n\nimport { createComment } from '../helpers/create-comment.js';\nimport { hasCircularDependency } from '../helpers/detect-circular-deps.js';\nimport { getGraphqlImport } from '../helpers/get-graphql-import.js';\nimport { getOutputTypeName } from '../helpers/get-output-type-name.js';\nimport { getPropertyType } from '../helpers/get-property-type.js';\nimport { ImportDeclarationMap } from '../helpers/import-declaration-map.js';\nimport { isManyAndReturnOutputType } from '../helpers/is-many-and-return.js';\nimport {\n createObjectSettings,\n type ObjectSetting,\n type ObjectSettings,\n} from '../helpers/object-settings.js';\nimport { propertyStructure } from '../helpers/property-structure.js';\nimport { relativePath } from '../helpers/relative-path.js';\nimport { ok } from '../helpers/type-safe-assert.js';\n\nconst nestjsGraphql = '@nestjs/graphql';\n\nexport function modelOutputType(outputType: OutputType, args: EventArguments): void {\n const {\n circularDependencies,\n config,\n eventEmitter,\n fieldSettings,\n getSourceFile,\n modelFields,\n models,\n output,\n } = args;\n\n if (isManyAndReturnOutputType(outputType.name)) {\n return;\n }\n\n const model = models.get(outputType.name);\n ok(model, `Cannot find model by name ${outputType.name}`);\n\n const sourceFile = getSourceFile({\n name: outputType.name,\n type: 'model',\n });\n const sourceFileStructure = sourceFile.getStructure();\n const exportDeclaration = getExportDeclaration(\n model.name,\n sourceFileStructure.statements as StatementStructures[],\n );\n const importDeclarations = new ImportDeclarationMap();\n const classStructure: ClassDeclarationStructure = {\n decorators: [\n {\n arguments: [],\n name: 'ObjectType',\n },\n ],\n isExported: true,\n kind: StructureKind.Class,\n name: outputType.name,\n properties: [],\n };\n (sourceFileStructure.statements as StatementStructures[]).push(classStructure);\n ok(classStructure.decorators, 'classStructure.decorators is undefined');\n const decorator = classStructure.decorators.find(d => d.name === 'ObjectType');\n ok(decorator, 'ObjectType decorator not found');\n\n let modelSettings: ObjectSettings | undefined;\n // Get model settings from documentation\n if (\n model.documentation !== null &&\n model.documentation !== undefined &&\n model.documentation.length > 0\n ) {\n const objectTypeOptions: PlainObject = {};\n const { documentation, settings } = createObjectSettings({\n config,\n text: model.documentation,\n });\n if (documentation !== undefined && documentation.length > 0) {\n classStructure.leadingTrivia ??= createComment(documentation);\n objectTypeOptions.description = documentation;\n }\n decorator.arguments = settings.getObjectTypeArguments(objectTypeOptions);\n modelSettings = settings;\n }\n\n importDeclarations.add('Field', nestjsGraphql);\n importDeclarations.add('ObjectType', nestjsGraphql);\n\n // Track types that need lazy loading due to circular dependencies\n const lazyTypes = new Set<string>();\n\n // Add type registry imports if ESM compatible mode is enabled\n if (config.esmCompatible) {\n let typeRegistryPath = relativePath(\n sourceFile.getFilePath(),\n `${output}/type-registry.ts`,\n );\n // Add .js extension for ESM module resolution\n if (!typeRegistryPath.endsWith('.js')) {\n typeRegistryPath += '.js';\n }\n importDeclarations.add('registerType', typeRegistryPath);\n importDeclarations.add('getType', typeRegistryPath);\n }\n\n for (const field of outputType.fields) {\n if (config.omitModelsCount && field.name === '_count') {\n continue;\n }\n\n let fileType = 'model';\n const { isList, location, namespace, type } = field.outputType;\n\n let outputTypeName = type;\n if (namespace !== 'model') {\n fileType = 'output';\n outputTypeName = getOutputTypeName(outputTypeName);\n }\n const modelField = modelFields.get(model.name)?.get(field.name);\n const settings = fieldSettings.get(model.name)?.get(field.name);\n const fieldType = settings?.getFieldType({\n name: outputType.name,\n output: true,\n });\n const propertySettings = settings?.getPropertyType({\n name: outputType.name,\n output: true,\n });\n\n const propertyType = castArray(\n propertySettings?.name ??\n getPropertyType({\n location,\n type: outputTypeName,\n }),\n );\n\n // For model we keep only one type\n propertyType.splice(1, propertyType.length);\n\n if (field.isNullable === true && !isList) {\n propertyType.push('null');\n }\n\n let graphqlType: string;\n let useGetType = false;\n\n if (fieldType === undefined) {\n const graphqlImport = getGraphqlImport({\n config,\n fileType,\n getSourceFile,\n isId: modelField?.isId,\n location,\n noTypeId: config.noTypeId,\n sourceFile,\n typeName: outputTypeName,\n });\n\n graphqlType = graphqlImport.name;\n\n if (\n graphqlImport.name !== outputType.name &&\n graphqlImport.specifier !== null &&\n graphqlImport.specifier !== undefined &&\n graphqlImport.specifier.length > 0\n ) {\n // Check for circular dependency in ESM mode\n const isCircular =\n config.esmCompatible &&\n location === 'outputObjectTypes' &&\n namespace === 'model' &&\n hasCircularDependency(circularDependencies, outputType.name, outputTypeName);\n\n if (isCircular) {\n // Use regular import (not type-only) so registerType() executes\n importDeclarations.add(graphqlImport.name, graphqlImport.specifier);\n lazyTypes.add(graphqlImport.name);\n useGetType = true;\n } else {\n importDeclarations.add(graphqlImport.name, graphqlImport.specifier);\n }\n }\n } else {\n graphqlType = fieldType.name;\n importDeclarations.create({ ...fieldType });\n }\n\n const property = propertyStructure({\n hasExclamationToken: true,\n hasQuestionToken: location === 'outputObjectTypes',\n isList,\n isNullable: field.isNullable,\n name: field.name,\n propertyType,\n });\n\n if (\n typeof property.leadingTrivia === 'string' &&\n modelField?.documentation !== null &&\n modelField?.documentation !== undefined &&\n modelField.documentation.length > 0\n ) {\n property.leadingTrivia += createComment(modelField.documentation, settings);\n }\n\n if (classStructure.properties !== undefined) {\n classStructure.properties.push(property);\n }\n\n if (propertySettings !== undefined) {\n importDeclarations.create({ ...propertySettings });\n } else if (propertyType.some(p => p.includes('Prisma.Decimal'))) {\n importDeclarations.add('Prisma', config.prismaClientImport);\n }\n\n ok(property.decorators !== undefined, 'property.decorators is undefined');\n\n const shouldHideField =\n settings?.shouldHideField({ name: outputType.name, output: true }) === true ||\n config.decorate.some(\n d =>\n d.name === 'HideField' &&\n d.from === '@nestjs/graphql' &&\n d.isMatchField(field.name) &&\n d.isMatchType(outputTypeName),\n );\n\n if (shouldHideField) {\n importDeclarations.add('HideField', nestjsGraphql);\n property.decorators.push({ arguments: [], name: 'HideField' });\n } else {\n // Generate `@Field()` decorator\n let typeExpression: string;\n if (useGetType) {\n typeExpression = isList\n ? `() => [getType('${graphqlType}')]`\n : `() => getType('${graphqlType}')`;\n } else {\n typeExpression = isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`;\n }\n\n property.decorators.push({\n arguments: [\n typeExpression,\n JSON5.stringify({\n ...settings?.fieldArguments(),\n defaultValue: ['number', 'string', 'boolean'].includes(\n typeof modelField?.default,\n )\n ? modelField?.default\n : undefined,\n description:\n modelField?.documentation !== null &&\n modelField?.documentation !== undefined &&\n modelField.documentation !== ''\n ? modelField.documentation\n : undefined,\n nullable: Boolean(field.isNullable),\n }),\n ],\n name: 'Field',\n });\n\n for (const setting of settings ?? []) {\n if (shouldBeDecorated(setting) && (setting.match?.(field.name) ?? true)) {\n property.decorators.push({\n arguments: setting.arguments as string[],\n name: setting.name,\n });\n ok(\n setting.from && setting.from.length > 0,\n \"Missed 'from' part in configuration or field setting\",\n );\n importDeclarations.create(setting);\n }\n }\n\n for (const decorate of config.decorate) {\n if (decorate.isMatchField(field.name) && decorate.isMatchType(outputTypeName)) {\n property.decorators.push({\n arguments: decorate.arguments?.map(x => pupa(x, { propertyType })),\n name: decorate.name,\n });\n importDeclarations.create(decorate);\n }\n }\n }\n\n eventEmitter.emitSync('ClassProperty', property, {\n isList,\n location,\n propertyType,\n });\n }\n\n // Generate class decorators from model settings\n for (const setting of modelSettings ?? []) {\n if (shouldBeDecorated(setting)) {\n classStructure.decorators.push({\n arguments: setting.arguments as string[],\n name: setting.name,\n });\n importDeclarations.create(setting);\n }\n }\n\n // Build statements array\n const statements: Array<StatementStructures | string> = [\n ...importDeclarations.toStatements(),\n classStructure,\n ];\n\n // Add registerType call if ESM compatible mode is enabled\n if (config.esmCompatible) {\n statements.push(`\\nregisterType('${outputType.name}', ${outputType.name});`);\n }\n\n if (exportDeclaration) {\n sourceFile.set({\n statements: [exportDeclaration, '\\n', classStructure],\n });\n const classDeclaration = sourceFile.getClassOrThrow(model.name);\n const commentedText = classDeclaration\n .getText()\n .split('\\n')\n .map(x => `// ${x}`);\n classDeclaration.remove();\n sourceFile.addStatements(['\\n', ...commentedText]);\n } else {\n sourceFile.set({\n statements,\n });\n }\n}\n\nfunction shouldBeDecorated(setting: ObjectSetting): boolean {\n return (\n setting.kind === 'Decorator' &&\n (setting.output || setting.model) &&\n !(setting.output && setting.model)\n );\n}\n\nfunction getExportDeclaration(\n name: string,\n statements: StatementStructures[],\n): StatementStructures | undefined {\n return statements.find(structure => {\n return (\n structure.kind === StructureKind.ExportDeclaration &&\n (structure.namedExports as ExportSpecifierStructure[]).some(\n o => (o.alias ?? o.name) === name,\n )\n );\n });\n}\n","import type { EventArguments, EventEmitter, InputType } from '../types.js';\n\nexport function noAtomicOperations(eventEmitter: EventEmitter): void {\n eventEmitter.on('BeforeInputType', beforeInputType);\n eventEmitter.on('BeforeGenerateFiles', beforeGenerateFiles);\n}\n\nfunction beforeInputType(args: EventArguments & { inputType: InputType }): void {\n const { getModelName, inputType } = args;\n\n for (const field of inputType.fields) {\n const fieldName = field.name;\n field.inputTypes = field.inputTypes.filter(it => {\n const inputTypeName = it.type;\n const modelName = getModelName(inputTypeName);\n\n const isModelNameValid =\n modelName !== null && modelName !== undefined && modelName.length > 0;\n if (\n isAtomicOperation(inputTypeName) ||\n (isModelNameValid && isListInput(inputTypeName, modelName, fieldName))\n ) {\n return false;\n }\n return true;\n });\n }\n}\n\nfunction beforeGenerateFiles(args: EventArguments): void {\n const { project } = args;\n\n for (const sourceFile of project.getSourceFiles()) {\n const className = sourceFile.getClass(() => true)?.getName();\n\n const isClassNameValid =\n className !== undefined && className !== null && className.length > 0;\n if (isClassNameValid && isAtomicOperation(className)) {\n project.removeSourceFile(sourceFile);\n }\n }\n}\n\nfunction isAtomicOperation(typeName: string): boolean {\n if (typeName.endsWith('FieldUpdateOperationsInput')) {\n return true;\n }\n return false;\n}\n\nfunction isListInput(typeName: string, model: string, field: string): boolean {\n return (\n typeName === `${model}Create${field}Input` ||\n typeName === `${model}Update${field}Input`\n );\n}\n","export function getEnumName(referenceName: string): string {\n // `${Role}`\n return referenceName.slice(3, -2);\n}\n","import type { EventArguments, ObjectSettings, OutputType } from '../types.js';\n\nimport JSON5 from 'json5';\nimport { castArray } from 'lodash-es';\nimport { type ClassDeclarationStructure, StructureKind } from 'ts-morph';\n\nimport { getEnumName } from '../helpers/get-enum-name.js';\nimport { getGraphqlImport } from '../helpers/get-graphql-import.js';\nimport { getOutputTypeName } from '../helpers/get-output-type-name.js';\nimport { getPropertyType } from '../helpers/get-property-type.js';\nimport { ImportDeclarationMap } from '../helpers/import-declaration-map.js';\nimport { propertyStructure } from '../helpers/property-structure.js';\nimport { ok } from '../helpers/type-safe-assert.js';\n\nconst nestjsGraphql = '@nestjs/graphql';\n\nexport function outputType(outputTypeArg: OutputType, args: EventArguments): void {\n const { config, eventEmitter, fieldSettings, getModelName, getSourceFile, models } =\n args;\n const importDeclarations = new ImportDeclarationMap();\n\n const fileType = 'output';\n const modelName = getModelName(outputTypeArg.name);\n const model = modelName === undefined ? undefined : models.get(modelName);\n const isAggregateOutput =\n model !== undefined &&\n /(?:Count|Avg|Sum|Min|Max)AggregateOutputType$/.test(outputTypeArg.name) &&\n outputTypeArg.name.startsWith(model.name);\n const isCountOutput =\n model?.name !== undefined &&\n model.name !== '' &&\n outputTypeArg.name === `${model.name}CountOutputType`;\n\n if (config.emitBlocks.outputs || isCountOutput) {\n // Continue with output generation\n } else {\n return;\n }\n\n // Get rid of bogus suffixes\n // eslint-disable-next-line no-param-reassign\n outputTypeArg.name = getOutputTypeName(outputTypeArg.name);\n\n if (isAggregateOutput) {\n eventEmitter.emitSync('AggregateOutput', { ...args, outputType: outputTypeArg });\n }\n\n const sourceFile = getSourceFile({\n name: outputTypeArg.name,\n type: fileType,\n });\n\n const classStructure: ClassDeclarationStructure = {\n decorators: [\n {\n arguments: [],\n name: 'ObjectType',\n },\n ],\n isExported: true,\n kind: StructureKind.Class,\n name: outputTypeArg.name,\n properties: [],\n };\n\n importDeclarations.add('Field', nestjsGraphql);\n importDeclarations.add('ObjectType', nestjsGraphql);\n\n for (const field of outputTypeArg.fields) {\n const { isList, location, type } = field.outputType;\n const outputTypeName = getOutputTypeName(type);\n let settings: ObjectSettings | undefined;\n if (isCountOutput) {\n settings = undefined;\n } else if (model === undefined) {\n settings = undefined;\n } else {\n settings = fieldSettings.get(model.name)?.get(field.name);\n }\n const propertySettings = settings?.getPropertyType({\n name: outputTypeArg.name,\n output: true,\n });\n\n const isCustomsApplicable =\n outputTypeName === model?.fields.find(f => f.name === field.name)?.type;\n\n field.outputType.type = outputTypeName;\n\n const propertyType = castArray(\n propertySettings?.name ??\n getPropertyType({\n location,\n type: outputTypeName,\n }),\n );\n\n const property = propertyStructure({\n hasQuestionToken: isCountOutput ? true : undefined,\n isList,\n isNullable: field.isNullable,\n name: field.name,\n propertyType,\n });\n\n classStructure.properties?.push(property);\n\n if (propertySettings !== undefined) {\n importDeclarations.create({ ...propertySettings });\n } else if (propertyType.some(p => p.includes('Prisma.Decimal'))) {\n importDeclarations.add('Prisma', config.prismaClientImport);\n }\n\n // Get graphql type\n let graphqlType: string;\n const shouldHideField =\n settings?.shouldHideField({\n name: outputTypeArg.name,\n output: true,\n }) === true ||\n config.decorate.some(\n d =>\n d.name === 'HideField' &&\n d.from === '@nestjs/graphql' &&\n d.isMatchField(field.name) &&\n d.isMatchType(outputTypeName),\n );\n\n const fieldType = settings?.getFieldType({\n name: outputTypeArg.name,\n output: true,\n });\n\n if (fieldType !== undefined && isCustomsApplicable && !shouldHideField) {\n graphqlType = fieldType.name;\n importDeclarations.create({ ...fieldType });\n } else {\n const graphqlImport = getGraphqlImport({\n config,\n fileType,\n getSourceFile,\n isId: false,\n location,\n sourceFile,\n typeName: outputTypeName,\n });\n const referenceName =\n location === 'enumTypes' ? getEnumName(propertyType[0]) : propertyType[0];\n\n graphqlType = graphqlImport.name;\n\n if (\n graphqlImport.specifier !== null &&\n graphqlImport.specifier !== undefined &&\n graphqlImport.specifier.length > 0 &&\n !importDeclarations.has(graphqlImport.name) &&\n ((graphqlImport.name !== outputTypeArg.name && !shouldHideField) ||\n (shouldHideField && referenceName === graphqlImport.name))\n ) {\n importDeclarations.set(graphqlImport.name, {\n moduleSpecifier: graphqlImport.specifier,\n namedImports: [{ name: graphqlImport.name }],\n });\n }\n }\n\n ok(property.decorators !== undefined, 'property.decorators is undefined');\n\n if (shouldHideField) {\n importDeclarations.add('HideField', nestjsGraphql);\n property.decorators.push({ arguments: [], name: 'HideField' });\n } else {\n // Generate `@Field()` decorator\n property.decorators.push({\n arguments: [\n isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`,\n JSON5.stringify({\n ...settings?.fieldArguments(),\n nullable: Boolean(field.isNullable),\n }),\n ],\n name: 'Field',\n });\n\n if (isCustomsApplicable) {\n for (const options of settings ?? []) {\n const shouldApplyDecorator =\n options.kind === 'Decorator' &&\n options.output &&\n (options.match?.(field.name) ?? true);\n\n if (shouldApplyDecorator) {\n property.decorators.push({\n arguments: options.arguments as string[],\n name: options.name,\n });\n ok(\n options.from !== null &&\n options.from !== undefined &&\n options.from.length > 0,\n \"Missed 'from' part in configuration or field setting\",\n );\n importDeclarations.create(options);\n }\n }\n }\n }\n\n eventEmitter.emitSync('ClassProperty', property, {\n isList,\n location,\n propertyType,\n });\n }\n\n sourceFile.set({\n statements: [...importDeclarations.toStatements(), classStructure],\n });\n}\n","import type { EventArguments, EventEmitter } from '../types.js';\n\nimport { rmdirSync as rmdirSyncOriginal } from 'node:fs';\n\n// Type-safe wrapper for rmdirSync\ntype RmdirFunction = (path: string) => void;\nconst rmdirTyped: RmdirFunction = rmdirSyncOriginal as RmdirFunction;\nconst rmdirSync: RmdirFunction = (path: string): void => {\n rmdirTyped(path);\n};\n\nexport function purgeOutput(emitter: EventEmitter): void {\n emitter.on('Begin', begin);\n emitter.on('End', end);\n}\n\nfunction begin({ output, project }: EventArguments): void {\n const sourceFiles = project.getDirectory(output)?.getDescendantSourceFiles();\n\n if (sourceFiles) {\n for (const sourceFile of sourceFiles) {\n sourceFile.delete();\n }\n }\n}\n\nfunction end({ output, project }: EventArguments): void {\n const directories = project\n .getDirectory(output)\n ?.getDescendantDirectories()\n .filter(directory => directory.getSourceFiles().length === 0)\n .map(directory => directory.getPath());\n\n const directoryList: string[] = directories ?? [];\n for (const directory of directoryList) {\n try {\n rmdirSync(directory);\n } catch {\n // Ignore errors\n }\n }\n}\n","import type { EventArguments, EventEmitter } from '../types.js';\n\nimport {\n type Directory,\n type ExportDeclarationStructure,\n type SourceFile,\n StructureKind,\n} from 'ts-morph';\n\nexport enum ReExport {\n None = 'None',\n Directories = 'Directories',\n Single = 'Single',\n All = 'All',\n}\n\nexport function reExport(emitter: EventEmitter): void {\n emitter.on('BeforeGenerateFiles', beforeGenerateFiles);\n}\n\nfunction beforeGenerateFiles(args: EventArguments): void {\n const { config, output, project } = args;\n const rootDirectory = project.getDirectoryOrThrow(output);\n\n if ([ReExport.Directories, ReExport.All].includes(config.reExport)) {\n // Collect all directories first to avoid iteration issues during file creation\n const directories = [...rootDirectory.getDescendantDirectories()];\n const indexFiles: Array<{ path: string; statements: ExportDeclarationStructure[] }> =\n [];\n\n for (const directory of directories) {\n const sourceFiles = directory\n .getSourceFiles()\n .filter(sourceFile => sourceFile.getBaseName() !== 'index.ts');\n\n if (sourceFiles.length > 0) {\n const exportDeclarations = sourceFiles.map(sourceFile =>\n getExportDeclaration(directory, sourceFile),\n );\n indexFiles.push({\n path: `${directory.getPath()}/index.ts`,\n statements: exportDeclarations,\n });\n } else {\n const subdirs = directory.getDirectories();\n if (subdirs.length > 0) {\n const namespaceExportDeclarations = subdirs.map(sourceDirectory =>\n getNamespaceExportDeclaration(directory, sourceDirectory),\n );\n indexFiles.push({\n path: `${directory.getPath()}/index.ts`,\n statements: namespaceExportDeclarations,\n });\n }\n }\n }\n\n // Create all index files after iteration\n for (const { path, statements } of indexFiles) {\n project.createSourceFile(path, { statements }, { overwrite: true });\n }\n }\n\n if (config.reExport === ReExport.Single) {\n const sourceFiles = project\n .getSourceFiles()\n .filter(sourceFile => sourceFile.getBaseName() !== 'index.ts');\n\n const exportDeclarations = sourceFiles.map(sourceFile =>\n getExportDeclaration(rootDirectory, sourceFile),\n );\n\n rootDirectory.createSourceFile(\n 'index.ts',\n { statements: exportDeclarations },\n { overwrite: true },\n );\n }\n\n if (config.reExport === ReExport.All) {\n const exportDeclarations: ExportDeclarationStructure[] = [];\n const directories = rootDirectory.getDirectories();\n\n for (const directory of directories) {\n if (directory.getBaseName() === 'node_modules') {\n continue;\n }\n const indexFile = directory.getSourceFile('index.ts');\n if (indexFile) {\n // For ESM, we need to explicitly reference the index.js file\n const dirName = directory.getBaseName();\n exportDeclarations.push({\n kind: StructureKind.ExportDeclaration,\n moduleSpecifier: `./${dirName}/index.js`,\n });\n }\n }\n\n if (exportDeclarations.length > 0) {\n rootDirectory.createSourceFile(\n 'index.ts',\n { statements: exportDeclarations },\n { overwrite: true },\n );\n }\n }\n}\n\nfunction getExportDeclaration(\n directory: Directory,\n sourceFile: SourceFile,\n): ExportDeclarationStructure {\n // For ESM, ensure module specifiers have .js extension\n let moduleSpecifier = directory.getRelativePathAsModuleSpecifierTo(sourceFile);\n if (!moduleSpecifier.endsWith('.js') && !moduleSpecifier.endsWith('.ts')) {\n moduleSpecifier += '.js';\n } else if (moduleSpecifier.endsWith('.ts')) {\n moduleSpecifier = `${moduleSpecifier.slice(0, -3)}.js`;\n }\n\n // Use namespace exports (export * from) instead of named exports\n // to avoid stack overflow when processing many files with complex exports\n return {\n kind: StructureKind.ExportDeclaration,\n moduleSpecifier,\n };\n}\n\nfunction getNamespaceExportDeclaration(\n directory: Directory,\n sourceDirectory: Directory,\n): ExportDeclarationStructure {\n let moduleSpecifier = directory.getRelativePathAsModuleSpecifierTo(sourceDirectory);\n if (!moduleSpecifier.endsWith('/index.js')) {\n moduleSpecifier += '/index.js';\n }\n\n return {\n kind: StructureKind.ExportDeclaration,\n moduleSpecifier,\n };\n}\n","import type { EventArguments } from '../types.js';\n\nimport { relativePath } from '../helpers/relative-path.js';\n\n/**\n * Generate the register-all-types.ts file that imports all generated types\n * to ensure their registerType() calls are executed.\n *\n * This file must be imported early in the application, before any code\n * tries to use getType() for lazy type resolution.\n *\n * This solves the ESM bundling issue where CJS would return valid bundles\n * but ESM complains about broken dependency cycles.\n */\nexport function generateRegisterAllTypes(args: EventArguments): void {\n const { config, output, project } = args;\n\n if (!config.esmCompatible) {\n return;\n }\n\n const rootDirectory = project.getDirectory(output) ?? project.createDirectory(output);\n const sourceFile = rootDirectory.createSourceFile('register-all-types.ts', undefined, {\n overwrite: true,\n });\n\n // Collect all generated source files that have registerType() calls\n const importPaths: string[] = [];\n const typeNames: string[] = [];\n\n // Get all source files in the output directory\n const allSourceFiles = project.getSourceFiles(`${output}/**/*.ts`);\n\n for (const file of allSourceFiles) {\n const filePath = file.getFilePath();\n\n // Skip utility files and the register file itself\n if (\n filePath.endsWith('type-registry.ts') ||\n filePath.endsWith('register-all-types.ts') ||\n filePath.endsWith('index.ts')\n ) {\n continue;\n }\n\n // Check if this file has a registerType() call\n const fileText = file.getText();\n const registerMatch = /registerType\\(['\"]([^'\"]+)['\"]/.exec(fileText);\n if (registerMatch) {\n // Get relative path from register-all-types.ts to this file\n let relPath = relativePath(sourceFile.getFilePath(), filePath);\n // Add .js extension for ESM module resolution\n if (!relPath.endsWith('.js')) {\n relPath += '.js';\n }\n importPaths.push(relPath);\n typeNames.push(registerMatch[1]);\n }\n }\n\n // Sort for consistent output\n importPaths.sort();\n typeNames.sort();\n\n // Generate the file content with proper ESM handling\n const fileContent = `/**\n * ESM Type Registration Module\n *\n * This file registers all generated types with the type registry to solve\n * ESM circular dependency issues. In ESM, unlike CommonJS, circular imports\n * can result in undefined values because modules are evaluated in a different order.\n *\n * IMPORTANT: Import this file at the very top of your application entry point,\n * BEFORE any other code that uses the generated types.\n *\n * Example usage in main.ts:\n *\n * // This MUST be the first import\n * import './@generated/register-all-types.js';\n *\n * // Now you can safely import and use generated types\n * import { NestFactory } from '@nestjs/core';\n * import { AppModule } from './app.module.js';\n *\n * Why this is needed:\n * - ESM uses \"live bindings\" where imports reference the actual export\n * - With circular deps (User -> Post -> User), one module isn't ready when imported\n * - CJS would give a partial object that fills in later; ESM gives undefined\n * - This registry pattern defers type resolution until runtime when all modules are loaded\n */\n\nimport { markRegistrationComplete } from './type-registry.js';\n\n// Import all generated type files to trigger their registerType() calls\n// These are side-effect imports that populate the type registry\n${importPaths.map(p => `import '${p}';`).join('\\n')}\n\n// Mark registration as complete to enable warning messages\nmarkRegistrationComplete();\n\n// Export type names for validation (optional)\nexport const registeredTypes = [\n${typeNames.map(n => ` '${n}',`).join('\\n')}\n] as const;\n\nexport type RegisteredTypeName = typeof registeredTypes[number];\n`;\n\n sourceFile.addStatements(fileContent);\n}\n","type EnumValueDocInfo = { description: string } | { deprecationReason: string };\n\nexport function extractEnumValueDocs(\n values: ReadonlyArray<{ name: string; [key: string]: unknown }>,\n): Record<string, EnumValueDocInfo> {\n return Object.fromEntries(\n values\n .map((value): [string, EnumValueDocInfo] | null => {\n const { name } = value;\n const { documentation } = value;\n\n if (typeof documentation !== 'string') {\n return null;\n }\n\n if (documentation.startsWith('@deprecated')) {\n return [name, { deprecationReason: documentation.slice(11).trim() }];\n }\n\n return [name, { description: documentation }];\n })\n .filter((entry): entry is [string, EnumValueDocInfo] => entry !== null),\n );\n}\n","import type { EventArguments, SchemaEnum } from '../types.js';\n\nimport { type EnumDeclarationStructure, StructureKind } from 'ts-morph';\n\nimport { ImportDeclarationMap } from '../helpers/import-declaration-map.js';\nimport { extractEnumValueDocs } from './prisma-enum-doc.js';\n\nexport function registerEnum(enumType: SchemaEnum, args: EventArguments): void {\n const { config, enums, getSourceFile } = args;\n\n // Type-safe extraction of enum name from SchemaEnum\n // Access the name property through unknown to avoid unsafe member access\n const enumTypeAsRecord = enumType as Record<string, unknown>;\n const rawName: unknown = enumTypeAsRecord.name;\n const enumName: string = typeof rawName === 'string' ? rawName : String(rawName);\n const enumValue = enums[enumName];\n if (!config.emitBlocks.prismaEnums && enumValue === undefined) {\n return;\n }\n\n const dataModelEnum = enumValue;\n const enumTypesData = (dataModelEnum?.values ?? []) as Array<{\n name: string;\n documentation?: string;\n }>;\n const sourceFile = getSourceFile({\n name: enumName,\n type: 'enum',\n });\n\n const importDeclarations = new ImportDeclarationMap();\n\n importDeclarations.set('registerEnumType', {\n moduleSpecifier: '@nestjs/graphql',\n namedImports: [{ name: 'registerEnumType' }],\n });\n\n // Extract valuesMap from enum documentation\n const valuesMap = extractEnumValueDocs(enumTypesData);\n\n // Remove entries with no description or deprecationReason\n const filteredValuesMap = Object.fromEntries(\n Object.entries(valuesMap).filter(([, v]) => Object.keys(v).length > 0),\n );\n\n // Format only if needed\n const hasValuesMap = Object.keys(filteredValuesMap).length > 0;\n const formattedValuesMap = hasValuesMap\n ? JSON.stringify(filteredValuesMap, null, 2).replace(/\"([^\"]+)\":/g, '$1:')\n : '';\n const valuesMapEntry = hasValuesMap ? `, valuesMap: ${formattedValuesMap}` : '';\n\n // Type-safe extraction of enum values\n // Access the values property through unknown to avoid unsafe member access\n const enumTypeRecord = enumType as Record<string, unknown>;\n const rawValues: unknown = enumTypeRecord.values;\n const enumValues: string[] = Array.isArray(rawValues)\n ? (rawValues as unknown[]).map((v: unknown) => String(v))\n : [];\n\n const enumStructure: EnumDeclarationStructure = {\n isExported: true,\n kind: StructureKind.Enum,\n members: enumValues.map((v: string) => ({\n initializer: JSON.stringify(v),\n name: v,\n })),\n name: enumName,\n };\n\n const enumTypeName = enumName;\n sourceFile.set({\n statements: [\n ...importDeclarations.toStatements(),\n enumStructure,\n '\\n',\n `registerEnumType(${enumTypeName}, { name: '${enumTypeName}', description: ${JSON.stringify(\n dataModelEnum?.documentation,\n )}${valuesMapEntry} })`,\n ],\n });\n}\n","import type { EventArguments, EventEmitter, InputType } from '../types.js';\n\nimport { isWhereUniqueInputType } from '../helpers/is-where-unique-input-type.js';\n\nexport function requireSingleFieldsInWhereUniqueInput(eventEmitter: EventEmitter): void {\n eventEmitter.on('BeforeInputType', beforeInputType);\n}\n\nfunction beforeInputType(args: EventArguments & { inputType: InputType }): void {\n const { inputType } = args;\n\n if (!isWhereUniqueInputType(inputType.name) || inputType.fields.length !== 1) {\n return;\n }\n\n for (const field of inputType.fields) {\n field.isRequired = true;\n field.isNullable = false;\n }\n}\n","import type { EventArguments } from '../types.js';\n\n/**\n * Generate the type-registry.ts file that provides lazy type resolution\n * for circular dependencies in ESM environments.\n *\n * This solves the ESM bundling issue where CJS would return valid bundles\n * but ESM complains about broken dependency cycles. In ESM, circular imports\n * can result in undefined values because module evaluation order differs from CJS.\n *\n * The registry pattern defers type resolution until runtime when all modules\n * have been fully initialized.\n */\nexport function generateTypeRegistry(args: EventArguments): void {\n const { config, output, project } = args;\n\n if (!config.esmCompatible) {\n return;\n }\n\n const rootDirectory = project.getDirectory(output) ?? project.createDirectory(output);\n\n const sourceFile = rootDirectory.createSourceFile('type-registry.ts', undefined, {\n overwrite: true,\n });\n\n // Generate a comprehensive type registry with error handling and forwardRef support\n const registryCode = `/**\n * Type Registry for ESM Circular Dependency Resolution\n *\n * In ESM, circular dependencies behave differently than CommonJS:\n * - CJS: Modules get a partial/incomplete export object that gets filled in\n * - ESM: Imports are \"live bindings\" but can be undefined if not yet initialized\n *\n * This registry solves this by:\n * 1. Deferring type resolution until runtime (after all modules are loaded)\n * 2. Providing a forwardRef pattern for GraphQL field type declarations\n * 3. Validating all types are registered before they're needed\n */\n\nconst registry = new Map<string, unknown>();\nconst pendingResolutions = new Map<string, Array<(type: unknown) => void>>();\nlet registrationComplete = false;\n\n/**\n * Register a type with the registry.\n * This should be called at module load time after the class is defined.\n */\nexport function registerType(name: string, type: unknown): void {\n if (type === undefined) {\n console.warn(\\`[nestjs-prisma-graphql] Warning: Registering undefined type for \"\\${name}\". This may indicate a circular dependency issue.\\`);\n }\n registry.set(name, type);\n\n // Resolve any pending forwardRef callbacks\n const pending = pendingResolutions.get(name);\n if (pending) {\n for (const callback of pending) {\n callback(type);\n }\n pendingResolutions.delete(name);\n }\n}\n\n/**\n * Get a type from the registry.\n * Returns the type if registered, undefined otherwise.\n *\n * For use in \\\\@Field(() => getType('TypeName')) decorators.\n */\nexport function getType<T = unknown>(name: string): T {\n const type = registry.get(name);\n if (type === undefined && registrationComplete) {\n console.warn(\\`[nestjs-prisma-graphql] Warning: Type \"\\${name}\" not found in registry. Ensure register-all-types is imported before using generated types.\\`);\n }\n return type as T;\n}\n\n/**\n * Create a forward reference to a type that may not be registered yet.\n * This is useful for handling circular dependencies where type A references type B\n * and type B references type A.\n *\n * Usage: \\\\@Field(() => forwardRef('Post'))\n */\nexport function forwardRef<T = unknown>(name: string): () => T {\n return () => {\n const type = registry.get(name);\n if (type === undefined) {\n throw new Error(\n \\`[nestjs-prisma-graphql] Type \"\\${name}\" not registered. \\\\n\\` +\n \\`This usually means:\\\\n\\` +\n \\` 1. The register-all-types.ts file was not imported early enough\\\\n\\` +\n \\` 2. There's a circular dependency that couldn't be resolved\\\\n\\` +\n \\` 3. The type file failed to load\\\\n\\\\n\\` +\n \\`Make sure to import 'register-all-types' at the top of your main.ts or app.module.ts\\`\n );\n }\n return type as T;\n };\n}\n\n/**\n * Lazily resolve a type, returning a thunk that can be called later.\n * This is the safest pattern for circular references in ESM.\n *\n * Usage: \\\\@Field(lazyType('Post'))\n */\nexport function lazyType<T = unknown>(name: string): () => T {\n return () => getType<T>(name);\n}\n\n/**\n * Mark registration as complete. Called after all types are imported.\n * This enables warning messages for missing types.\n */\nexport function markRegistrationComplete(): void {\n registrationComplete = true;\n\n // Warn about any unresolved forward refs\n if (pendingResolutions.size > 0) {\n const missing = Array.from(pendingResolutions.keys()).join(', ');\n console.warn(\\`[nestjs-prisma-graphql] Warning: Unresolved forward references: \\${missing}\\`);\n }\n}\n\n/**\n * Get all registered type names (useful for debugging)\n */\nexport function getRegisteredTypes(): string[] {\n return Array.from(registry.keys());\n}\n\n/**\n * Check if a type is registered\n */\nexport function isTypeRegistered(name: string): boolean {\n return registry.has(name);\n}\n\n/**\n * Validate that all expected types are registered.\n * Throws an error if any types are missing.\n */\nexport function validateRegistry(expectedTypes: string[]): void {\n const missing = expectedTypes.filter(name => !registry.has(name));\n if (missing.length > 0) {\n throw new Error(\n \\`[nestjs-prisma-graphql] Missing type registrations: \\${missing.join(', ')}\\\\n\\` +\n \\`Ensure register-all-types.ts is imported before using these types.\\`\n );\n }\n}\n`;\n\n sourceFile.addStatements(registryCode);\n}\n","// Type-safe console.log wrapper\ntype LogFunction = (msg: string) => void;\ntype ConsoleLogFunction = (message?: unknown, ...optionalParams: unknown[]) => void;\nconst globalConsole: { log: ConsoleLogFunction } = globalThis.console as {\n log: ConsoleLogFunction;\n};\nconst log: LogFunction = (msg: string): void => {\n globalConsole.log(msg);\n};\n\nexport function warning(message: string | string[]): void {\n if (Array.isArray(message)) {\n log('nestjs-prisma-graphql:');\n log(message.join('\\n'));\n } else {\n log(`nestjs-prisma-graphql: ${message}`);\n }\n}\n","type EmittedBlockType =\n | 'prismaEnums'\n | 'schemaEnums'\n | 'models'\n | 'inputs'\n | 'args'\n | 'outputs';\n\nexport type EmitBlocksOption = 'enums' | 'models' | 'inputs' | 'args' | 'outputs';\n\nconst allEmmittedBlocks: EmittedBlockType[] = [\n 'prismaEnums',\n 'schemaEnums',\n 'models',\n 'inputs',\n 'args',\n 'outputs',\n];\n\nconst blocksDependencyMap: Record<EmitBlocksOption, EmittedBlockType[]> = {\n args: ['args', 'inputs', 'prismaEnums'],\n enums: ['schemaEnums', 'prismaEnums'],\n inputs: ['inputs', 'prismaEnums'],\n models: ['models', 'schemaEnums'],\n outputs: ['outputs'],\n};\n\nexport function createEmitBlocks(data?: string[]): Record<EmittedBlockType, boolean> {\n if (!data) {\n const entries = allEmmittedBlocks.map(block => [block, true] as const);\n const allBlocks = Object.fromEntries(entries) as Record<EmittedBlockType, boolean>;\n return allBlocks;\n }\n\n const initialBlocks: Record<EmittedBlockType, boolean> = {};\n let currentBlocks = initialBlocks;\n\n for (const block of data) {\n if (!Object.keys(blocksDependencyMap).includes(block)) {\n continue;\n }\n\n const blockEntries = blocksDependencyMap[block as EmitBlocksOption].map(\n emittedBlock => [emittedBlock, true] as const,\n );\n const newBlocks = Object.fromEntries(blockEntries) as Record<\n EmittedBlockType,\n boolean\n >;\n currentBlocks = {\n ...currentBlocks,\n ...newBlocks,\n };\n }\n\n return currentBlocks;\n}\n","import { unflatten } from 'flat';\nimport JSON5 from 'json5';\nimport { memoize, merge, trim } from 'lodash-es';\nimport { existsSync } from 'node:fs';\nimport outmatch from 'outmatch';\n\nimport { ok } from './type-safe-assert.js';\n\ntype Dictionary<T = unknown> = Record<string, T>;\n\nimport type { ImportNameSpec, ObjectSetting } from '../types.js';\n\nimport { ReExport } from '../handlers/re-export.js';\nimport { createEmitBlocks, type EmitBlocksOption } from './create-emit-blocks.js';\n\ntype ConfigFieldSetting = Partial<Omit<ObjectSetting, 'name'>>;\ninterface DecorateElement {\n isMatchField: (s: string) => boolean;\n isMatchType: (s: string) => boolean;\n from: string;\n name: string;\n arguments?: string[];\n namedImport: boolean;\n defaultImport?: string | true;\n namespaceImport?: string;\n}\ninterface CustomImport {\n from: string;\n name: string;\n namedImport: boolean;\n defaultImport?: string | true;\n namespaceImport?: string;\n}\n\nexport function createConfig(data: Record<string, unknown>): {\n $warnings: string[];\n combineScalarFilters: boolean;\n customImport: CustomImport[];\n decorate: DecorateElement[];\n emitBlocks: Record<string, boolean>;\n emitCompiled: boolean;\n emitSingle: boolean;\n esmCompatible: boolean;\n fields: Record<string, ConfigFieldSetting | undefined>;\n graphqlScalars: Record<string, ImportNameSpec | undefined>;\n noAtomicOperations: boolean;\n noTypeId: boolean;\n omitModelsCount: boolean;\n outputFilePattern: string;\n prismaClientImport: string;\n purgeOutput: boolean;\n reExport: ReExport;\n requireSingleFieldsInWhereUniqueInput: boolean;\n tsConfigFilePath: string | undefined;\n unsafeCompatibleWhereUniqueInput: boolean;\n useInputType: ConfigInputItem[];\n} {\n const config = merge({}, unflatten(data, { delimiter: '_' })) as Record<string, unknown>;\n const $warnings: string[] = [];\n\n const defaultPattern = `{model}/{name}.{type}.ts`;\n const outputFilePatternValue: unknown = config.outputFilePattern;\n const configOutputFilePattern: string =\n typeof outputFilePatternValue === 'string' ? outputFilePatternValue : defaultPattern;\n\n // Validate and sanitize the output file pattern\n // We don't use filenamify on the template itself since it contains placeholders like {model}, {name}, {type}\n // Instead, we just normalize the path separators and trim\n const sanitizedStep1: string = configOutputFilePattern\n .replaceAll('..', '/')\n .replaceAll(/\\/+/g, '/');\n const outputFilePattern: string = trim(sanitizedStep1, '/');\n\n if (outputFilePattern !== configOutputFilePattern) {\n $warnings.push(\n `Due to invalid filepath 'outputFilePattern' changed to '${outputFilePattern}'`,\n );\n }\n\n if (\n config.reExportAll !== undefined &&\n config.reExportAll !== null &&\n config.reExportAll !== false\n ) {\n $warnings.push(`Option 'reExportAll' is deprecated, use 'reExport' instead`);\n if (toBoolean(config.reExportAll)) {\n config.reExport = 'All';\n }\n }\n\n const fields: Record<string, ConfigFieldSetting | undefined> = Object.fromEntries(\n Object.entries<Dictionary<string | undefined>>(\n (config.fields ?? {}) as Record<string, Dictionary<string | undefined>>,\n )\n .filter(({ 1: value }) => typeof value === 'object')\n .map(([name, value]) => {\n const fieldSetting: ConfigFieldSetting = {\n arguments: [],\n defaultImport: toBoolean(value.defaultImport) ? true : value.defaultImport,\n from: value.from,\n input: toBoolean(value.input),\n model: toBoolean(value.model),\n namespaceImport: value.namespaceImport,\n output: toBoolean(value.output),\n };\n return [name, fieldSetting];\n }),\n );\n\n const decorate: DecorateElement[] = [];\n const decorateConfig =\n config.decorate !== undefined && config.decorate !== null\n ? (config.decorate as Record<string, Record<string, string> | undefined>)\n : {};\n const configDecorate: Array<Record<string, string> | undefined> =\n Object.values(decorateConfig);\n\n for (const element of configDecorate) {\n if (element === undefined || element === null) {\n continue;\n }\n ok(\n element.from !== undefined &&\n element.from !== '' &&\n element.name !== undefined &&\n element.name !== '',\n `Missed 'from' or 'name' part in configuration for decorate`,\n );\n decorate.push({\n arguments:\n element.arguments !== undefined && element.arguments !== ''\n ? JSON5.parse(element.arguments)\n : undefined,\n defaultImport: toBoolean(element.defaultImport) ? true : element.defaultImport,\n from: element.from,\n isMatchField: outmatch(element.field, { separator: false }),\n isMatchType: outmatch(element.type, { separator: false }),\n name: element.name,\n namedImport: toBoolean(element.namedImport),\n namespaceImport: element.namespaceImport,\n });\n }\n\n const customImport: CustomImport[] = [];\n const customImportConfig =\n config.customImport !== undefined && config.customImport !== null\n ? (config.customImport as Record<string, Record<string, string> | undefined>)\n : {};\n const configCustomImport: Array<Record<string, string> | undefined> =\n Object.values(customImportConfig);\n for (const element of configCustomImport) {\n if (element === undefined || element === null) {\n continue;\n }\n ok(\n element.from !== undefined &&\n element.from !== '' &&\n element.name !== undefined &&\n element.name !== '',\n `Missed 'from' or 'name' part in configuration for customImport`,\n );\n customImport.push({\n defaultImport: toBoolean(element.defaultImport) ? true : element.defaultImport,\n from: element.from,\n name: element.name,\n namedImport: toBoolean(element.namedImport),\n namespaceImport: element.namespaceImport,\n });\n }\n return {\n $warnings,\n combineScalarFilters: toBoolean(config.combineScalarFilters),\n customImport,\n decorate,\n emitBlocks: createEmitBlocks(config.emitBlocks as EmitBlocksOption[]),\n emitCompiled: toBoolean(config.emitCompiled),\n emitSingle: toBoolean(config.emitSingle),\n esmCompatible: toBoolean(config.esmCompatible),\n fields,\n graphqlScalars: (config.graphqlScalars ?? {}) as Record<\n string,\n ImportNameSpec | undefined\n >,\n noAtomicOperations: toBoolean(config.noAtomicOperations),\n noTypeId: toBoolean(config.noTypeId),\n omitModelsCount: toBoolean(config.omitModelsCount),\n outputFilePattern,\n prismaClientImport: createPrismaImport(config.prismaClientImport),\n purgeOutput: toBoolean(config.purgeOutput),\n reExport: ReExport[String(config.reExport) as keyof typeof ReExport] ?? ReExport.None,\n requireSingleFieldsInWhereUniqueInput: toBoolean(\n config.requireSingleFieldsInWhereUniqueInput,\n ),\n tsConfigFilePath: createTsConfigFilePathValue(config.tsConfigFilePath),\n unsafeCompatibleWhereUniqueInput: toBoolean(config.unsafeCompatibleWhereUniqueInput),\n useInputType: createUseInputType(\n config.useInputType as Record<string, ConfigInputItem>,\n ),\n };\n}\n\ninterface ConfigInputItem {\n typeName: string;\n ALL?: string;\n [index: string]: string | undefined;\n}\n\ntype FileExistsFunction = (filePath: string) => boolean;\ntype ExistsSyncFunction = (path: string) => boolean;\nconst existsSyncTyped: ExistsSyncFunction = existsSync;\nconst tsConfigFileExistsRaw: unknown = memoize((filePath: string): boolean => {\n const exists: boolean = existsSyncTyped(filePath);\n return exists;\n});\nconst tsConfigFileExists: FileExistsFunction =\n tsConfigFileExistsRaw as FileExistsFunction;\n\nfunction createTsConfigFilePathValue(value: unknown): string | undefined {\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n const fileExists: boolean = tsConfigFileExists('tsconfig.json');\n if (fileExists) {\n return 'tsconfig.json';\n }\n return undefined;\n}\n\nfunction createPrismaImport(value: unknown): string {\n if (typeof value === 'string' && value !== '') {\n return value;\n }\n return '@prisma/client';\n}\n\nfunction createUseInputType(data?: Record<string, ConfigInputItem>): ConfigInputItem[] {\n if (data === undefined || data === null) {\n return [];\n }\n const result: ConfigInputItem[] = [];\n for (const [typeName, useInputs] of Object.entries(data)) {\n const entry: ConfigInputItem = {\n ALL: undefined,\n typeName,\n };\n if (useInputs.ALL !== undefined && useInputs.ALL !== '') {\n entry.ALL = useInputs.ALL;\n delete useInputs.ALL;\n }\n\n for (const [propertyName, pattern] of Object.entries(useInputs)) {\n entry[propertyName] = pattern;\n }\n\n result.push(entry);\n }\n return result;\n}\n\nfunction toBoolean(value: unknown): boolean {\n return ['true', '1', 'on'].includes(String(value));\n}\n","import filenamify from 'filenamify';\nimport { kebabCase } from 'lodash-es';\nimport pluralize from 'pluralize';\nimport pupa from 'pupa';\n\nexport function generateFileName(args: {\n type: string;\n name: string;\n getModelName: (name: string) => string | undefined;\n template: string;\n}): string {\n const { getModelName, name, template, type } = args;\n\n const rawPath = pupa(template, {\n get model() {\n const result = getModelName(name) ?? 'prisma';\n return kebabCase(result);\n },\n get name() {\n let result = kebabCase(name);\n\n for (const suffix of ['input', 'args', 'enum']) {\n const ending = `-${suffix}`;\n if (type === suffix && result.endsWith(ending)) {\n result = result.slice(0, -ending.length);\n }\n }\n return result;\n },\n plural: {\n get type() {\n return pluralize(type);\n },\n },\n type,\n });\n\n // Apply filenamify to each path segment after template expansion\n return rawPath\n .split('/')\n .map(segment => filenamify(segment, { replacement: '-' }))\n .join('/');\n}\n","import type { EventEmitter } from '../types.js';\nimport type { Project, SourceFile } from 'ts-morph';\n\nimport { generateFileName } from './generate-file-name.js';\n\nexport function factoryGetSourceFile(args: {\n output: string;\n outputFilePattern: string;\n project: Project;\n getModelName: (name: string) => string | undefined;\n eventEmitter: EventEmitter;\n}) {\n const { getModelName, output, outputFilePattern, project } = args;\n\n return function getSourceFile(getSourceFileArgs: {\n type: string;\n name: string;\n }): SourceFile {\n const { name, type } = getSourceFileArgs;\n let filePath = generateFileName({\n getModelName,\n name,\n template: outputFilePattern,\n type,\n });\n filePath = `${output}/${filePath}`;\n\n return (\n project.getSourceFile(filePath) ??\n project.createSourceFile(filePath, undefined, { overwrite: true })\n );\n };\n}\n","import { memoize } from 'lodash-es';\n\nconst splitKeywords = [\n 'CreateInput',\n 'CreateMany',\n 'CreateNested',\n 'CreateOneWithout',\n 'CreateOrConnect',\n 'CreateWithout',\n 'DistinctField',\n 'Filter',\n 'ManyWithout',\n 'OrderByInput',\n 'RelationFilter',\n 'NullableRelationFilter',\n 'ListRelationFilter',\n 'ScalarWhereInput',\n 'UpdateInput',\n 'UpdateMany',\n 'UpdateOneRequiredWithout',\n 'UpdateOneWithout',\n 'UpdateWith',\n 'UpsertWith',\n 'UpsertWithout',\n 'WhereInput',\n 'WhereUniqueInput',\n 'AvgAggregate',\n 'SumAggregate',\n 'MinAggregate',\n 'MaxAggregate',\n 'CountAggregate',\n 'ScalarField',\n 'GroupBy',\n 'OrderBy',\n 'UncheckedUpdate',\n 'UncheckedCreate',\n 'ScalarWhere',\n 'CountOutputType',\n 'CountOrderBy',\n 'SumOrderBy',\n 'MinOrderBy',\n 'MaxOrderBy',\n 'AvgOrderBy',\n 'Create',\n 'Update',\n 'ScalarRelationFilter',\n 'NullableScalarRelationFilter',\n].sort((a, b) => b.length - a.length);\n\nconst endsWithKeywords = [\n 'Aggregate',\n 'GroupBy',\n 'CreateOne',\n 'CreateMany',\n 'DeleteMany',\n 'DeleteOne',\n 'FindMany',\n 'FindOne',\n 'FindUnique',\n 'UpdateMany',\n 'UpdateOne',\n 'UpsertOne',\n];\n\nconst middleKeywords = [\n ['FindFirst', 'OrThrowArgs'],\n ['FindUnique', 'OrThrowArgs'],\n ['Aggregate', 'Args'],\n ['CreateOne', 'Args'],\n ['CreateMany', 'Args'],\n ['DeleteMany', 'Args'],\n ['DeleteOne', 'Args'],\n ['FindMany', 'Args'],\n ['FindFirst', 'Args'],\n ['FindOne', 'Args'],\n ['FindUnique', 'Args'],\n ['UpdateMany', 'Args'],\n ['UpdateMany', 'AndReturnOutputType'],\n ['UpdateOne', 'Args'],\n ['UpsertOne', 'Args'],\n ['GroupBy', 'Args'],\n ['OrderBy', 'Args'],\n];\n\nexport function createGetModelName(\n modelNames: string[],\n): (name: string) => string | undefined {\n return memoize(tryGetName);\n\n function tryGetName(name: string): string | undefined {\n return getModelName({ modelNames, name });\n }\n}\n\nfunction getModelName(args: { name: string; modelNames: string[] }): string | undefined {\n const { modelNames, name } = args;\n for (const keyword of splitKeywords) {\n const [test] = name.split(keyword, 1);\n if (test !== undefined && modelNames.includes(test)) {\n return test;\n }\n }\n for (const keyword of endsWithKeywords) {\n const test = name.split(keyword).at(-1);\n if (test !== undefined && modelNames.includes(test)) {\n return test;\n }\n }\n for (const [start, end] of middleKeywords) {\n let test = name.slice(start.length).slice(0, -end.length);\n if (modelNames.includes(test) && name.startsWith(start) && name.endsWith(end)) {\n return test;\n }\n test = name.slice(0, -(start + end).length);\n if (modelNames.includes(test) && name.endsWith(start + end)) {\n return test;\n }\n }\n\n // test for {Model}{UniqueName}CompoundUniqueInput\n const COMPOUND_UNIQUE_INPUT_LENGTH = 19;\n if (name.endsWith('CompoundUniqueInput')) {\n const test = name.slice(0, -COMPOUND_UNIQUE_INPUT_LENGTH);\n const models = modelNames\n .filter(x => test.startsWith(x))\n .sort((a, b) => b.length - a.length);\n return models[0];\n }\n\n // test for {Model}Count\n const COUNT_SUFFIX_LENGTH = 5;\n if (name.endsWith('Count')) {\n const test = name.slice(0, -COUNT_SUFFIX_LENGTH);\n if (modelNames.includes(test)) {\n return test;\n }\n }\n\n return undefined;\n}\n","import type { GeneratorOptions } from '@prisma/generator-helper';\n\nimport { mapKeys } from 'lodash-es';\nimport { createRequire } from 'node:module';\nimport { Project, QuoteKind } from 'ts-morph';\n\nimport { ok } from './helpers/type-safe-assert.js';\n\n// Use createRequire for CommonJS module compatibility in ESM\n// Type-safe wrapper for require to avoid 'any' type issues\ntype RequireFunction = (id: string) => unknown;\nconst createRequireTyped: (filename: string) => RequireFunction = createRequire as (\n filename: string,\n) => RequireFunction;\n// ESLint doesn't understand import.meta.url type - cast to string explicitly\nconst requireCjs: RequireFunction = createRequireTyped(String(import.meta.url));\n\n// Type for await-event-emitter's default export\ntype AwaitEventEmitterConstructor = new () => EventEmitter;\ninterface AwaitEventEmitterModule {\n default: AwaitEventEmitterConstructor;\n}\nconst AwaitEventEmitter: AwaitEventEmitterModule = requireCjs(\n 'await-event-emitter',\n) as AwaitEventEmitterModule;\nconst AwaitEventEmitterClass = AwaitEventEmitter.default;\n\nimport type {\n Document,\n EventArguments,\n EventEmitter,\n Field,\n Model,\n ObjectSettings,\n OutputType,\n} from './types.js';\n\nimport { argsType } from './handlers/args-type.js';\nimport { combineScalarFilters } from './handlers/combine-scalar-filters.js';\nimport { createAggregateInput } from './handlers/create-aggregate-input.js';\nimport { generateDecimalHelpers } from './handlers/decimal-helpers.js';\nimport { emitSingle } from './handlers/emit-single.js';\nimport { generateFiles } from './handlers/generate-files.js';\nimport { inputType } from './handlers/input-type.js';\nimport { modelData } from './handlers/model-data.js';\nimport { modelOutputType } from './handlers/model-output-type.js';\nimport { noAtomicOperations } from './handlers/no-atomic-operations.js';\nimport { outputType } from './handlers/output-type.js';\nimport { purgeOutput } from './handlers/purge-output.js';\nimport { ReExport, reExport } from './handlers/re-export.js';\nimport { generateRegisterAllTypes } from './handlers/register-all-types.js';\nimport { registerEnum } from './handlers/register-enum.js';\nimport { requireSingleFieldsInWhereUniqueInput } from './handlers/require-single-fields-in-whereunique-input.js';\nimport { generateTypeRegistry } from './handlers/type-registry.js';\nimport { warning } from './handlers/warning.js';\nimport { createConfig } from './helpers/create-config.js';\nimport {\n buildDependencyGraph,\n detectCircularDependencies,\n} from './helpers/detect-circular-deps.js';\nimport { factoryGetSourceFile } from './helpers/factory-get-source-file.js';\nimport { createGetModelName } from './helpers/get-model-name.js';\n\nexport async function generate(\n args: GeneratorOptions & {\n skipAddOutputSourceFiles?: boolean;\n connectCallback?: (\n emitter: EventEmitter,\n eventArguments: EventArguments,\n ) => void | Promise<void>;\n },\n): Promise<void> {\n const { connectCallback, dmmf, generator, skipAddOutputSourceFiles } = args;\n\n const generatorOutputValue = generator.output?.value ?? '';\n ok(generatorOutputValue !== '', 'Missing generator configuration: output');\n\n const config = createConfig(generator.config);\n\n const eventEmitter = new AwaitEventEmitterClass();\n eventEmitter.on('Warning', warning);\n if (config.emitBlocks.models) {\n eventEmitter.on('Model', modelData);\n }\n if (config.emitBlocks.prismaEnums || config.emitBlocks.schemaEnums) {\n eventEmitter.on('EnumType', registerEnum);\n }\n if (\n config.emitBlocks.outputs ||\n (config.emitBlocks.models && !config.omitModelsCount)\n ) {\n eventEmitter.on('OutputType', outputType);\n }\n if (config.emitBlocks.models) {\n eventEmitter.on('ModelOutputType', modelOutputType);\n }\n if (config.emitBlocks.outputs) {\n eventEmitter.on('AggregateOutput', createAggregateInput);\n }\n if (config.emitBlocks.inputs) {\n eventEmitter.on('InputType', inputType);\n }\n if (config.emitBlocks.args) {\n eventEmitter.on('ArgsType', argsType);\n }\n\n eventEmitter.on('GenerateFiles', generateFiles);\n\n for (const message of config.$warnings) {\n eventEmitter.emitSync('Warning', message);\n }\n\n const project = new Project({\n manipulationSettings: {\n quoteKind: QuoteKind.Single,\n },\n skipAddingFilesFromTsConfig: true,\n skipLoadingLibFiles: !config.emitCompiled,\n tsConfigFilePath: config.tsConfigFilePath,\n });\n\n if (skipAddOutputSourceFiles !== true) {\n project.addSourceFilesAtPaths([\n `${generatorOutputValue}/**/*.ts`,\n `!${generatorOutputValue}/**/*.d.ts`,\n ]);\n }\n\n if (config.combineScalarFilters) {\n combineScalarFilters(eventEmitter);\n }\n if (config.noAtomicOperations) {\n noAtomicOperations(eventEmitter);\n }\n if (config.reExport !== ReExport.None) {\n reExport(eventEmitter);\n }\n if (config.emitSingle) {\n emitSingle(eventEmitter);\n }\n if (config.purgeOutput) {\n purgeOutput(eventEmitter);\n }\n if (config.requireSingleFieldsInWhereUniqueInput) {\n requireSingleFieldsInWhereUniqueInput(eventEmitter);\n }\n\n const models = new Map<string, Model>();\n const modelNames: string[] = [];\n const modelFields = new Map<string, Map<string, Field>>();\n const fieldSettings = new Map<string, Map<string, ObjectSettings>>();\n const getModelName = createGetModelName(modelNames);\n const getSourceFile = factoryGetSourceFile({\n eventEmitter,\n getModelName,\n output: generatorOutputValue,\n outputFilePattern: config.outputFilePattern,\n project,\n });\n const { datamodel, schema } = JSON.parse(JSON.stringify(dmmf)) as Document;\n const removeTypes = new Set<string>();\n\n // Build circular dependency detection for ESM compatibility\n const datamodelTypes: Model[] = datamodel.types ?? [];\n const allModels: Model[] = [...datamodel.models, ...datamodelTypes];\n const dependencyGraph = buildDependencyGraph(allModels);\n const circularDependencies = detectCircularDependencies(dependencyGraph);\n\n const eventArguments: EventArguments = {\n circularDependencies,\n classTransformerTypeModels: new Set(),\n config,\n enums: mapKeys(datamodel.enums, x => x.name),\n eventEmitter,\n fieldSettings,\n getModelName,\n getSourceFile,\n modelFields,\n modelNames,\n models,\n output: generatorOutputValue,\n project,\n removeTypes,\n schema,\n typeNames: new Set<string>(),\n };\n\n if (connectCallback) {\n await connectCallback(eventEmitter, eventArguments);\n }\n\n await eventEmitter.emit('Begin', eventArguments);\n\n // Generate type registry file for ESM compatibility\n // Must be after 'Begin' event since purgeOutput deletes all files on Begin\n if (config.esmCompatible) {\n generateTypeRegistry(eventArguments);\n }\n\n // Generate decimal helpers for Prisma 7+ compatibility\n // This replaces the dependency on prisma-graphql-type-decimal\n generateDecimalHelpers(eventArguments);\n\n for (const model of datamodel.models) {\n await eventEmitter.emit('Model', model, eventArguments);\n }\n\n // Types behaves like model\n for (const model of datamodelTypes) {\n await eventEmitter.emit('Model', model, eventArguments);\n }\n\n const { enumTypes, inputObjectTypes, outputObjectTypes } = schema;\n\n await eventEmitter.emit('PostBegin', eventArguments);\n\n for (const enumType of enumTypes.prisma.concat(enumTypes.model ?? [])) {\n await eventEmitter.emit('EnumType', enumType, eventArguments);\n }\n\n for (const outputTypeItem of outputObjectTypes.model) {\n await eventEmitter.emit('ModelOutputType', outputTypeItem, eventArguments);\n }\n\n const queryOutputTypes: OutputType[] = [];\n\n for (const outputTypeItem of outputObjectTypes.prisma) {\n if (['Query', 'Mutation'].includes(outputTypeItem.name)) {\n queryOutputTypes.push(outputTypeItem);\n continue;\n }\n await eventEmitter.emit('OutputType', outputTypeItem, eventArguments);\n }\n\n const inputTypes = (inputObjectTypes.prisma ?? []).concat(inputObjectTypes.model ?? []);\n\n for (const inputTypeItem of inputTypes) {\n const event = {\n ...eventArguments,\n classDecoratorName: 'InputType',\n fileType: 'input',\n inputType: inputTypeItem,\n };\n if (inputTypeItem.fields.length === 0) {\n removeTypes.add(inputTypeItem.name);\n continue;\n }\n await eventEmitter.emit('BeforeInputType', event);\n await eventEmitter.emit('InputType', event);\n }\n\n for (const outputTypeItem of queryOutputTypes) {\n for (const field of outputTypeItem.fields) {\n await eventEmitter.emit('ArgsType', field, eventArguments);\n }\n }\n\n // Generate register-all-types.ts for ESM compatibility\n // Must be after all types are generated so it can find all files with registerType()\n if (config.esmCompatible) {\n generateRegisterAllTypes(eventArguments);\n }\n\n await eventEmitter.emit('BeforeGenerateFiles', eventArguments);\n await eventEmitter.emit('GenerateFiles', eventArguments);\n await eventEmitter.emit('End', eventArguments);\n\n for (const name of Object.keys(\n (eventEmitter as unknown as { _events: Record<string, unknown> })._events,\n )) {\n eventEmitter.off(name);\n }\n}\n","import type { GeneratorOptions } from '@prisma/generator-helper';\n\nimport { existsSync, readdirSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { arch, platform } from 'node:os';\n\n// Type-safe require wrapper\ntype RequireFunction = (id: string) => unknown;\ntype CreateRequireFunction = (filename: string) => RequireFunction;\nconst createRequireTyped: CreateRequireFunction = createRequire as CreateRequireFunction;\n// ESLint doesn't understand import.meta.url type - cast to string explicitly\nconst requireCjs: RequireFunction = createRequireTyped(String(import.meta.url));\n\n// Patch fs with graceful-fs to handle EMFILE errors during mass file generation.\n// This generator can produce 17k+ files; without this patch, constrained environments\n// (Docker, CI) hit file descriptor limits and fail silently.\n// Use Record<string, unknown> to avoid typeof issues with namespace imports\ninterface GracefulFs {\n gracefulify: (fs: Record<string, unknown>) => void;\n}\nconst gracefulFsRaw: unknown = requireCjs('graceful-fs');\nconst gracefulFs: GracefulFs = gracefulFsRaw as GracefulFs;\nconst nodeFsRaw: unknown = requireCjs('fs');\nconst nodeFs: Record<string, unknown> = nodeFsRaw as Record<string, unknown>;\ngracefulFs.gracefulify(nodeFs);\n\n// Catch process-level errors that would otherwise cause silent failures.\n// The Prisma generator-helper communicates via JSON-RPC over stderr; if the\n// process crashes before sending a response, Prisma may report success.\ntype LogFunction = (msg: string) => void;\ntype ConsoleLogFunction = (message?: unknown, ...optionalParams: unknown[]) => void;\nconst globalConsole: { log: ConsoleLogFunction } = globalThis.console as {\n log: ConsoleLogFunction;\n};\nconst logError: LogFunction = (msg: string): void => {\n globalConsole.log(msg);\n};\n\n// Type-safe process event handlers\ntype ProcessEventListener = (error: unknown) => void;\ninterface ProcessWithEvents {\n on: (\n event: 'unhandledRejection' | 'uncaughtException',\n listener: ProcessEventListener,\n ) => unknown;\n}\nconst processTyped = process as ProcessWithEvents;\n\nprocessTyped.on('unhandledRejection', (reason: unknown) => {\n logError(`nestjs-prisma-graphql: unhandled rejection: ${String(reason)}`);\n if (reason instanceof Error && typeof reason.stack === 'string') {\n logError(reason.stack);\n }\n});\n\nprocessTyped.on('uncaughtException', (error: unknown) => {\n const err = error as Error;\n logError(`nestjs-prisma-graphql: uncaught exception: ${err.message}`);\n if (typeof err.stack === 'string') {\n logError(err.stack);\n }\n});\n\nimport generatorHelper from '@prisma/generator-helper';\n\ninterface GeneratorHelperModule {\n generatorHandler: (config: {\n onGenerate: (options: GeneratorOptions) => Promise<void>;\n onManifest: () => { defaultOutput: string; prettyName: string };\n }) => void;\n}\nconst { generatorHandler } = generatorHelper as GeneratorHelperModule;\n\nimport { generate } from './generate.js';\n\n/**\n * Configuration for disabling the generator\n */\nexport interface GeneratorDisableConfig {\n /** Config options from the generator block in schema.prisma */\n config: Record<string, string | undefined>;\n}\n\n/**\n * Environment variables that can disable the generator:\n * - DISABLE_NESTJS_PRISMA_GRAPHQL=true - Disable this specific generator\n * - PRISMA_GENERATOR_SKIP=true - Skip all Prisma generators (common convention)\n * - SKIP_PRISMA_GENERATE=true - Alternative skip flag\n * - CI_SKIP_PRISMA_GRAPHQL=true - CI-specific skip flag\n *\n * Config options (in schema.prisma):\n * - disabled = true - Disable generation\n * - disabled = \"true\" - Disable generation (string)\n * - disabled = 1 - Disable generation (number as string)\n *\n * @param options - Generator options or minimal config object\n * @param env - Environment variables (defaults to process.env)\n * @returns true if the generator should be disabled\n */\n// Helper to get process.env in a type-safe way\n// Using Record<string, unknown> to avoid NodeJS.Process type resolution issues\nconst getProcessEnv = (): Record<string, string | undefined> => {\n const globalProcess: unknown = process;\n interface ProcessLike {\n env: Record<string, string | undefined>;\n }\n const processLike: ProcessLike = globalProcess as ProcessLike;\n return processLike.env;\n};\n\nexport function isGeneratorDisabled(\n options: GeneratorOptions | { generator: GeneratorDisableConfig },\n env: Record<string, string | undefined> = getProcessEnv(),\n): boolean {\n const envVarsToCheck = [\n 'DISABLE_NESTJS_PRISMA_GRAPHQL',\n 'CI_SKIP_PRISMA_GRAPHQL',\n 'PRISMA_GENERATOR_SKIP',\n 'SKIP_PRISMA_GENERATE',\n ] as const;\n\n for (const envVar of envVarsToCheck) {\n const value = env[envVar];\n if (value === 'true' || value === '1') {\n return true;\n }\n }\n\n const configDisabled = options.generator.config.disabled;\n if (configDisabled === 'true' || configDisabled === '1' || configDisabled === 'yes') {\n return true;\n }\n\n return false;\n}\n\ninterface DirEntry {\n name: string;\n isDirectory: () => boolean;\n}\n\nfunction countFilesRecursive(dir: string): number {\n let count = 0;\n // Type-safe wrapper for readdirSync which doesn't have proper types in this context\n type ReadDirSyncFunction = (\n path: string,\n options: { withFileTypes: boolean },\n ) => unknown;\n const readDirSyncTyped: ReadDirSyncFunction = readdirSync as ReadDirSyncFunction;\n const rawEntries: unknown = readDirSyncTyped(dir, { withFileTypes: true });\n const entries: DirEntry[] = rawEntries as DirEntry[];\n for (const entry of entries) {\n const isDir: boolean =\n typeof entry.isDirectory === 'function' ? entry.isDirectory() : false;\n if (isDir) {\n count += countFilesRecursive(`${dir}/${entry.name}`);\n } else {\n count++;\n }\n }\n return count;\n}\n\ntype LogFunc = (msg: string) => void;\ntype ConsoleLogFunc = (message?: unknown, ...optionalParams: unknown[]) => void;\nconst globalConsole2: { log: ConsoleLogFunc } = globalThis.console as {\n log: ConsoleLogFunc;\n};\nconst log: LogFunc = (msg: string): void => {\n globalConsole2.log(msg);\n};\n\ngeneratorHandler({\n async onGenerate(options: GeneratorOptions) {\n if (isGeneratorDisabled(options)) {\n log(\n 'nestjs-prisma-graphql: generation skipped (disabled via environment variable or config)',\n );\n return;\n }\n\n const outputPath = options.generator.output?.value ?? '<unknown>';\n const startTime = Date.now();\n\n // Type-safe wrappers for node:os functions\n type ArchFunction = () => unknown;\n type PlatformFunction = () => unknown;\n const archTyped: ArchFunction = arch as ArchFunction;\n const platformTyped: PlatformFunction = platform as PlatformFunction;\n\n const archValue = String(archTyped());\n const platformValue = String(platformTyped());\n const globalProcess2Raw: unknown = process;\n // Use interface to avoid NodeJS.Process type resolution issues\n interface ProcessLikeWithVersion {\n version: string;\n }\n const processWithVersion: ProcessLikeWithVersion =\n globalProcess2Raw as ProcessLikeWithVersion;\n const nodeVersion: string = processWithVersion.version;\n log(\n [\n 'nestjs-prisma-graphql: starting generation',\n `(arch=${archValue}, platform=${platformValue}, node=${nodeVersion}, output=${outputPath})`,\n ].join(' '),\n );\n\n try {\n await generate(options);\n } catch (error: unknown) {\n const elapsed = Date.now() - startTime;\n const message = error instanceof Error ? error.message : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n\n log(\n `nestjs-prisma-graphql: generation FAILED after ${String(elapsed)}ms: ${message}`,\n );\n if (typeof stack === 'string') {\n log(stack);\n }\n\n throw error;\n }\n\n const elapsed = Date.now() - startTime;\n\n // Type-safe wrapper for existsSync\n type ExistsSyncFunc = (path: string) => boolean;\n const existsSyncTyped: ExistsSyncFunc = existsSync as ExistsSyncFunc;\n const pathExists: boolean =\n typeof outputPath === 'string' &&\n outputPath !== '<unknown>' &&\n existsSyncTyped(outputPath);\n if (pathExists) {\n const fileCount: number = countFilesRecursive(outputPath);\n log(\n `nestjs-prisma-graphql: generated ${String(fileCount)} files in ${String(elapsed)}ms`,\n );\n\n if (fileCount === 0) {\n const msg =\n 'nestjs-prisma-graphql: generation produced 0 files — this likely indicates a silent failure';\n log(msg);\n throw new Error(msg);\n }\n } else {\n const msg = `nestjs-prisma-graphql: output directory not found after generation: ${outputPath}`;\n log(msg);\n throw new Error(msg);\n }\n },\n onManifest() {\n return {\n defaultOutput: '.',\n prettyName: 'NestJS Prisma GraphQL (ESM)',\n };\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/test/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAE/D,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,SAAY,GACnB,UAAU,CAEZ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Project, QuoteKind } from 'ts-morph';
|
|
2
|
+
export function createTestProject() {
|
|
3
|
+
return new Project({
|
|
4
|
+
manipulationSettings: {
|
|
5
|
+
quoteKind: QuoteKind.Single,
|
|
6
|
+
},
|
|
7
|
+
skipAddingFilesFromTsConfig: true,
|
|
8
|
+
skipLoadingLibFiles: true,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function createTestSourceFile(project, content, fileName = 'test.ts') {
|
|
12
|
+
return project.createSourceFile(fileName, content, { overwrite: true });
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/test/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAmB,MAAM,UAAU,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC;QACjB,oBAAoB,EAAE;YACpB,SAAS,EAAE,SAAS,CAAC,MAAM;SAC5B;QACD,2BAA2B,EAAE,IAAI;QACjC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,OAAe,EACf,QAAQ,GAAG,SAAS;IAEpB,OAAO,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC"}
|