{"record":{"id":"4594af14bd4f0434","repo":"OpenAPITools/openapi-generator","slug":"invalid-file-naming-must-be-pascalcase-c","errorCode":null,"errorMessage":"Invalid file naming '{}'. Must be 'PascalCase', 'camelCase' or 'kebab-case'","messagePattern":"Invalid file naming '(.+?)'\\. Must be 'PascalCase', 'camelCase' or 'kebab-case'","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java","lineNumber":242,"sourceCode":"\n    public Boolean getStringEnums() {\n        return this.stringEnums;\n    }\n\n    public void setStringEnums(Boolean stringEnums) {\n        this.stringEnums = stringEnums;\n    }\n\n    /**\n     * Set the file naming type.\n     *\n     * @param fileNaming the file naming to use\n     */\n    public void setFileNaming(String fileNaming) {\n        if (PASCAL_CASE.equals(fileNaming) || CAMEL_CASE.equals(fileNaming) || KEBAB_CASE.equals(fileNaming)) {\n            this.fileNaming = fileNaming;\n        } else {\n            throw new IllegalArgumentException(\"Invalid file naming '\" +\n                    fileNaming + \"'. Must be 'PascalCase', 'camelCase' or 'kebab-case'\");\n        }\n    }\n\n    public Boolean getSagasAndRecords() {\n        return sagasAndRecords;\n    }\n\n    public void setSagasAndRecords(Boolean sagasAndRecords) {\n        this.sagasAndRecords = sagasAndRecords;\n    }\n\n    public String getPassthroughSuffix() {\n        return detectPassthroughModelsWithSuffixAndField != null ? detectPassthroughModelsWithSuffixAndField.split(\"\\\\.\")[0] : null;\n    }\n\n    public String getPassthroughField() {\n        return detectPassthroughModelsWithSuffixAndField != null ? detectPassthroughModelsWithSuffixAndField.split(\"\\\\.\")[1] : null;","sourceCodeStart":224,"sourceCodeEnd":260,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java#L224-L260","documentation":"The typescript-fetch generator's fileNaming option accepts 'PascalCase', 'camelCase' or 'kebab-case' and throws on anything else during option processing. Its accepted set differs from the Angular generator (which has no PascalCase), so copying options between TypeScript generators is a common trigger.","triggerScenarios":"-DfileNaming=snake_case, 'UPPER', or any value other than PascalCase/camelCase/kebab-case when using -g typescript-fetch.","commonSituations":"Reusing an options block across generators with different accepted sets; assuming snake_case support because other tools in the pipeline use it; typos like 'Kebab-Case'.","solutions":["Set fileNaming to one of 'PascalCase', 'camelCase' or 'kebab-case'.","Keep per-generator option sets instead of one shared blob to avoid cross-generator mismatches."],"exampleFix":"# before\nopenapi-generator generate -g typescript-fetch -i api.yaml -DfileNaming=snake_case\n\n# after\nopenapi-generator generate -g typescript-fetch -i api.yaml -DfileNaming=camelCase","handlingStrategy":"validation","validationCode":"// node: fetch generator naming allowlist\nconst NAMING = ['PascalCase', 'camelCase', 'kebab-case'];\nif (opts.fileNaming && !NAMING.includes(opts.fileNaming))\n  throw new Error(`fileNaming must be one of ${NAMING.join('|')}`);","typeGuard":"const isFetchFileNaming = (v: string): v is 'PascalCase' | 'camelCase' | 'kebab-case' =>\n  ['PascalCase', 'camelCase', 'kebab-case'].includes(v);","tryCatchPattern":"// Java\ntry { new DefaultGenerator().opts(input).generate(); }\ncatch (IllegalArgumentException e) {\n    // pick a supported naming value and rerun; note PascalCase is valid here but not in Angular\n}","preventionTips":["Keep per-generator option sets; do not copy fileNaming between generators.","Maintain an allowlist per generator in the pipeline config.","Run generation in CI so invalid values fail the build, not a local run."],"tags":["typescript","fetch","configuration","naming"],"backgroundTag":"invalid-option-value","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}