{"record":{"id":"64ea99a1927d1aa7","repo":"OpenAPITools/openapi-generator","slug":"invalid-file-naming-must-be-camelcase-or-64ea99","errorCode":null,"errorMessage":"Invalid file naming '{}'. Must be 'camelCase' or 'kebab-case'","messagePattern":"Invalid file naming '(.+?)'\\. Must be 'camelCase' or 'kebab-case'","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsServerCodegen.java","lineNumber":598,"sourceCode":"     */\n    private void validateClassSuffixArgument(String argument, String value) {\n        if (value != null && !value.matches(CLASS_NAME_SUFFIX_PATTERN)) {\n            throw new IllegalArgumentException(\n                    String.format(Locale.ROOT, \"%s class suffix only allows alphanumeric characters.\", argument)\n            );\n        }\n    }\n\n    /**\n     * Set the file naming type.\n     *\n     * @param fileNaming the file naming to use\n     */\n    private void setFileNaming(String fileNaming) {\n        if (\"camelCase\".equals(fileNaming) || \"kebab-case\".equals(fileNaming)) {\n            this.fileNaming = fileNaming;\n        } else {\n            throw new IllegalArgumentException(\"Invalid file naming '\" +\n                    fileNaming + \"'. Must be 'camelCase' or 'kebab-case'\");\n        }\n    }\n\n    /**\n     * Converts the original name according to the current <code>fileNaming</code> strategy.\n     *\n     * @param originalName the original name to transform\n     * @return the transformed name\n     */\n    private String convertUsingFileNamingConvention(String originalName) {\n        String name = this.removeModelPrefixSuffix(originalName);\n        if (\"kebab-case\".equals(fileNaming)) {\n            name = dashize(underscore(name));\n        } else {\n            name = camelize(name, LOWERCASE_FIRST_LETTER);\n        }\n        return name;","sourceCodeStart":580,"sourceCodeEnd":616,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsServerCodegen.java#L580-L616","documentation":"The typescript-nestjs server generator's setFileNaming (TypeScriptNestjsServerCodegen.java:594) accepts only 'camelCase' or 'kebab-case' for the 'fileNaming' option, which controls model file name derivation. Any other string throws this IllegalArgumentException during processOpts because the generator has no implementation for other naming strategies.","triggerScenarios":"Generating with -DfileNaming=snake_case, -DfileNaming=camelcase (wrong casing), or a value copy-pasted from another generator's docs. Exact string match is required.","commonSituations":"Reusing a shared options file between typescript-nestjs (client) and other language generators; spec files that embed a fileNaming vendor extension with a value valid elsewhere; CI templates parameterizing naming style.","solutions":["Set -DfileNaming=camelCase or -DfileNaming=kebab-case exactly.","Remove the fileNaming key entirely if the default behavior is fine."],"exampleFix":"# before\nopenapi-generator-cli generate -g typescript-nestjs-server -DfileNaming=PascalCase\n\n# after\nopenapi-generator-cli generate -g typescript-nestjs-server -DfileNaming=camelCase","handlingStrategy":"validation","validationCode":"case \"$FILE_NAMING\" in\n  camelCase|kebab-case|\"\") ;;\n  *) echo \"ERROR: fileNaming must be 'camelCase' or 'kebab-case'\" >&2; exit 1;;\nesac","typeGuard":"const isFileNaming = (v: string): v is 'camelCase' | 'kebab-case' =>\n  v === 'camelCase' || v === 'kebab-case';","tryCatchPattern":null,"preventionTips":["Pin fileNaming to one of the two literals in a shared config; fail CI on any other value."],"tags":["typescript","nestjs","server","codegen","file-naming","config-validation"],"backgroundTag":"invalid-option-value","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}