@kattebak/openapi-generator-ts 1.0.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.
Files changed (290) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +189 -0
  3. package/dist/cli/commands/generate.d.ts +23 -0
  4. package/dist/cli/commands/generate.d.ts.map +1 -0
  5. package/dist/cli/commands/generate.js +116 -0
  6. package/dist/cli/commands/generate.js.map +1 -0
  7. package/dist/cli/commands/list.d.ts +2 -0
  8. package/dist/cli/commands/list.d.ts.map +1 -0
  9. package/dist/cli/commands/list.js +26 -0
  10. package/dist/cli/commands/list.js.map +1 -0
  11. package/dist/cli/commands/validate.d.ts +6 -0
  12. package/dist/cli/commands/validate.d.ts.map +1 -0
  13. package/dist/cli/commands/validate.js +80 -0
  14. package/dist/cli/commands/validate.js.map +1 -0
  15. package/dist/cli/convert-template.d.ts +31 -0
  16. package/dist/cli/convert-template.d.ts.map +1 -0
  17. package/dist/cli/convert-template.js +204 -0
  18. package/dist/cli/convert-template.js.map +1 -0
  19. package/dist/cli/convert-template.test.d.ts +2 -0
  20. package/dist/cli/convert-template.test.d.ts.map +1 -0
  21. package/dist/cli/convert-template.test.js +74 -0
  22. package/dist/cli/convert-template.test.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +246 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/core/config.d.ts +252 -0
  28. package/dist/core/config.d.ts.map +1 -0
  29. package/dist/core/config.js +31 -0
  30. package/dist/core/config.js.map +1 -0
  31. package/dist/core/generator.d.ts +99 -0
  32. package/dist/core/generator.d.ts.map +1 -0
  33. package/dist/core/generator.js +492 -0
  34. package/dist/core/generator.js.map +1 -0
  35. package/dist/core/index.d.ts +4 -0
  36. package/dist/core/index.d.ts.map +1 -0
  37. package/dist/core/index.js +4 -0
  38. package/dist/core/index.js.map +1 -0
  39. package/dist/core/types.d.ts +47 -0
  40. package/dist/core/types.d.ts.map +1 -0
  41. package/dist/core/types.js +5 -0
  42. package/dist/core/types.js.map +1 -0
  43. package/dist/generators/generators.test.d.ts +6 -0
  44. package/dist/generators/generators.test.d.ts.map +1 -0
  45. package/dist/generators/generators.test.js +247 -0
  46. package/dist/generators/generators.test.js.map +1 -0
  47. package/dist/generators/go.d.ts +10 -0
  48. package/dist/generators/go.d.ts.map +1 -0
  49. package/dist/generators/go.js +327 -0
  50. package/dist/generators/go.js.map +1 -0
  51. package/dist/generators/index.d.ts +29 -0
  52. package/dist/generators/index.d.ts.map +1 -0
  53. package/dist/generators/index.js +58 -0
  54. package/dist/generators/index.js.map +1 -0
  55. package/dist/generators/php.d.ts +14 -0
  56. package/dist/generators/php.d.ts.map +1 -0
  57. package/dist/generators/php.js +241 -0
  58. package/dist/generators/php.js.map +1 -0
  59. package/dist/generators/python.d.ts +10 -0
  60. package/dist/generators/python.d.ts.map +1 -0
  61. package/dist/generators/python.js +273 -0
  62. package/dist/generators/python.js.map +1 -0
  63. package/dist/generators/typescript-fetch.d.ts +14 -0
  64. package/dist/generators/typescript-fetch.d.ts.map +1 -0
  65. package/dist/generators/typescript-fetch.js +217 -0
  66. package/dist/generators/typescript-fetch.js.map +1 -0
  67. package/dist/index.d.ts +14 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +16 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/models/codegen-model.d.ts +123 -0
  72. package/dist/models/codegen-model.d.ts.map +1 -0
  73. package/dist/models/codegen-model.js +64 -0
  74. package/dist/models/codegen-model.js.map +1 -0
  75. package/dist/models/codegen-model.test.d.ts +6 -0
  76. package/dist/models/codegen-model.test.d.ts.map +1 -0
  77. package/dist/models/codegen-model.test.js +143 -0
  78. package/dist/models/codegen-model.test.js.map +1 -0
  79. package/dist/models/codegen-operation.d.ts +95 -0
  80. package/dist/models/codegen-operation.d.ts.map +1 -0
  81. package/dist/models/codegen-operation.js +54 -0
  82. package/dist/models/codegen-operation.js.map +1 -0
  83. package/dist/models/codegen-parameter.d.ts +86 -0
  84. package/dist/models/codegen-parameter.d.ts.map +1 -0
  85. package/dist/models/codegen-parameter.js +47 -0
  86. package/dist/models/codegen-parameter.js.map +1 -0
  87. package/dist/models/codegen-property.d.ts +95 -0
  88. package/dist/models/codegen-property.d.ts.map +1 -0
  89. package/dist/models/codegen-property.js +47 -0
  90. package/dist/models/codegen-property.js.map +1 -0
  91. package/dist/models/codegen-response.d.ts +64 -0
  92. package/dist/models/codegen-response.d.ts.map +1 -0
  93. package/dist/models/codegen-response.js +42 -0
  94. package/dist/models/codegen-response.js.map +1 -0
  95. package/dist/models/codegen-security.d.ts +34 -0
  96. package/dist/models/codegen-security.d.ts.map +1 -0
  97. package/dist/models/codegen-security.js +18 -0
  98. package/dist/models/codegen-security.js.map +1 -0
  99. package/dist/models/index.d.ts +8 -0
  100. package/dist/models/index.d.ts.map +1 -0
  101. package/dist/models/index.js +7 -0
  102. package/dist/models/index.js.map +1 -0
  103. package/dist/parser/index.d.ts +4 -0
  104. package/dist/parser/index.d.ts.map +1 -0
  105. package/dist/parser/index.js +4 -0
  106. package/dist/parser/index.js.map +1 -0
  107. package/dist/parser/openapi-parser.d.ts +71 -0
  108. package/dist/parser/openapi-parser.d.ts.map +1 -0
  109. package/dist/parser/openapi-parser.js +195 -0
  110. package/dist/parser/openapi-parser.js.map +1 -0
  111. package/dist/parser/openapi-parser.test.d.ts +6 -0
  112. package/dist/parser/openapi-parser.test.d.ts.map +1 -0
  113. package/dist/parser/openapi-parser.test.js +238 -0
  114. package/dist/parser/openapi-parser.test.js.map +1 -0
  115. package/dist/parser/operation-transformer.d.ts +95 -0
  116. package/dist/parser/operation-transformer.d.ts.map +1 -0
  117. package/dist/parser/operation-transformer.js +634 -0
  118. package/dist/parser/operation-transformer.js.map +1 -0
  119. package/dist/parser/schema-transformer.d.ts +134 -0
  120. package/dist/parser/schema-transformer.d.ts.map +1 -0
  121. package/dist/parser/schema-transformer.js +557 -0
  122. package/dist/parser/schema-transformer.js.map +1 -0
  123. package/dist/template/engine-adapter.d.ts +55 -0
  124. package/dist/template/engine-adapter.d.ts.map +1 -0
  125. package/dist/template/engine-adapter.js +178 -0
  126. package/dist/template/engine-adapter.js.map +1 -0
  127. package/dist/template/engine-adapter.test.d.ts +6 -0
  128. package/dist/template/engine-adapter.test.d.ts.map +1 -0
  129. package/dist/template/engine-adapter.test.js +186 -0
  130. package/dist/template/engine-adapter.test.js.map +1 -0
  131. package/dist/template/index.d.ts +5 -0
  132. package/dist/template/index.d.ts.map +1 -0
  133. package/dist/template/index.js +5 -0
  134. package/dist/template/index.js.map +1 -0
  135. package/dist/template/lambdas/indent-lambdas.d.ts +40 -0
  136. package/dist/template/lambdas/indent-lambdas.d.ts.map +1 -0
  137. package/dist/template/lambdas/indent-lambdas.js +98 -0
  138. package/dist/template/lambdas/indent-lambdas.js.map +1 -0
  139. package/dist/template/lambdas/index.d.ts +44 -0
  140. package/dist/template/lambdas/index.d.ts.map +1 -0
  141. package/dist/template/lambdas/index.js +79 -0
  142. package/dist/template/lambdas/index.js.map +1 -0
  143. package/dist/template/lambdas/string-lambdas.d.ts +78 -0
  144. package/dist/template/lambdas/string-lambdas.d.ts.map +1 -0
  145. package/dist/template/lambdas/string-lambdas.js +148 -0
  146. package/dist/template/lambdas/string-lambdas.js.map +1 -0
  147. package/dist/template/lambdas/string-lambdas.test.d.ts +6 -0
  148. package/dist/template/lambdas/string-lambdas.test.d.ts.map +1 -0
  149. package/dist/template/lambdas/string-lambdas.test.js +158 -0
  150. package/dist/template/lambdas/string-lambdas.test.js.map +1 -0
  151. package/dist/template/template-locator.d.ts +72 -0
  152. package/dist/template/template-locator.d.ts.map +1 -0
  153. package/dist/template/template-locator.js +173 -0
  154. package/dist/template/template-locator.js.map +1 -0
  155. package/dist/template/template-manager.d.ts +65 -0
  156. package/dist/template/template-manager.d.ts.map +1 -0
  157. package/dist/template/template-manager.js +185 -0
  158. package/dist/template/template-manager.js.map +1 -0
  159. package/package.json +67 -0
  160. package/templates/go/.travis.yml +8 -0
  161. package/templates/go/README.mustache +236 -0
  162. package/templates/go/api.mustache +452 -0
  163. package/templates/go/api_doc.mustache +92 -0
  164. package/templates/go/api_test.mustache +59 -0
  165. package/templates/go/client.mustache +761 -0
  166. package/templates/go/configuration.mustache +332 -0
  167. package/templates/go/git_push.sh.mustache +57 -0
  168. package/templates/go/gitignore.mustache +24 -0
  169. package/templates/go/go.mod.mustache +16 -0
  170. package/templates/go/go.sum.mustache +19 -0
  171. package/templates/go/model.mustache +21 -0
  172. package/templates/go/model_anyof.mustache +93 -0
  173. package/templates/go/model_doc.mustache +97 -0
  174. package/templates/go/model_enum.mustache +101 -0
  175. package/templates/go/model_oneof.mustache +160 -0
  176. package/templates/go/model_simple.mustache +572 -0
  177. package/templates/go/nullable_model.mustache +35 -0
  178. package/templates/go/openapi.mustache +1 -0
  179. package/templates/go/partial_header.mustache +18 -0
  180. package/templates/go/response.mustache +38 -0
  181. package/templates/go/signing.mustache +453 -0
  182. package/templates/go/utils.mustache +352 -0
  183. package/templates/php/.php-cs-fixer.dist.php +29 -0
  184. package/templates/php/.travis.yml +8 -0
  185. package/templates/php/ApiException.mustache +111 -0
  186. package/templates/php/Configuration.mustache +606 -0
  187. package/templates/php/FormDataProcessor.mustache +238 -0
  188. package/templates/php/HeaderSelector.mustache +265 -0
  189. package/templates/php/ModelInterface.mustache +103 -0
  190. package/templates/php/ObjectSerializer.mustache +591 -0
  191. package/templates/php/README.mustache +151 -0
  192. package/templates/php/api.mustache +891 -0
  193. package/templates/php/api_doc.mustache +105 -0
  194. package/templates/php/api_test.mustache +80 -0
  195. package/templates/php/composer.mustache +44 -0
  196. package/templates/php/git_push.sh.mustache +57 -0
  197. package/templates/php/gitignore +15 -0
  198. package/templates/php/libraries/psr-18/ApiException.mustache +114 -0
  199. package/templates/php/libraries/psr-18/DebugPlugin.mustache +93 -0
  200. package/templates/php/libraries/psr-18/README.mustache +161 -0
  201. package/templates/php/libraries/psr-18/api.mustache +833 -0
  202. package/templates/php/libraries/psr-18/api_doc.mustache +79 -0
  203. package/templates/php/libraries/psr-18/composer.mustache +56 -0
  204. package/templates/php/model.mustache +47 -0
  205. package/templates/php/model_doc.mustache +10 -0
  206. package/templates/php/model_enum.mustache +33 -0
  207. package/templates/php/model_generic.mustache +565 -0
  208. package/templates/php/model_test.mustache +88 -0
  209. package/templates/php/partial_header.mustache +18 -0
  210. package/templates/php/php_doc_auth_partial.mustache +23 -0
  211. package/templates/php/phpunit.xml.mustache +18 -0
  212. package/templates/python/README.mustache +60 -0
  213. package/templates/python/README_onlypackage.mustache +50 -0
  214. package/templates/python/__init__.mustache +1 -0
  215. package/templates/python/__init__api.mustache +19 -0
  216. package/templates/python/__init__model.mustache +22 -0
  217. package/templates/python/__init__package.mustache +49 -0
  218. package/templates/python/api.mustache +244 -0
  219. package/templates/python/api_client.mustache +822 -0
  220. package/templates/python/api_doc.mustache +81 -0
  221. package/templates/python/api_doc_example.mustache +38 -0
  222. package/templates/python/api_response.mustache +21 -0
  223. package/templates/python/api_test.mustache +48 -0
  224. package/templates/python/asyncio/rest.mustache +209 -0
  225. package/templates/python/common_README.mustache +85 -0
  226. package/templates/python/configuration.mustache +806 -0
  227. package/templates/python/exceptions.mustache +210 -0
  228. package/templates/python/exports_api.mustache +3 -0
  229. package/templates/python/exports_model.mustache +3 -0
  230. package/templates/python/exports_package.mustache +20 -0
  231. package/templates/python/git_push.sh.mustache +57 -0
  232. package/templates/python/github-workflow.mustache +35 -0
  233. package/templates/python/gitignore.mustache +66 -0
  234. package/templates/python/gitlab-ci.mustache +31 -0
  235. package/templates/python/httpx/rest.mustache +190 -0
  236. package/templates/python/model.mustache +16 -0
  237. package/templates/python/model_anyof.mustache +182 -0
  238. package/templates/python/model_doc.mustache +40 -0
  239. package/templates/python/model_enum.mustache +36 -0
  240. package/templates/python/model_generic.mustache +403 -0
  241. package/templates/python/model_oneof.mustache +209 -0
  242. package/templates/python/model_test.mustache +60 -0
  243. package/templates/python/partial_api.mustache +52 -0
  244. package/templates/python/partial_api_args.mustache +18 -0
  245. package/templates/python/partial_header.mustache +19 -0
  246. package/templates/python/py.typed.mustache +1 -0
  247. package/templates/python/pyproject.mustache +172 -0
  248. package/templates/python/python_doc_auth_partial.mustache +108 -0
  249. package/templates/python/requirements.mustache +23 -0
  250. package/templates/python/rest.mustache +254 -0
  251. package/templates/python/setup.mustache +60 -0
  252. package/templates/python/setup_cfg.mustache +2 -0
  253. package/templates/python/signing.mustache +422 -0
  254. package/templates/python/test-requirements.mustache +6 -0
  255. package/templates/python/tornado/rest.mustache +148 -0
  256. package/templates/python/tox.mustache +9 -0
  257. package/templates/python/travis.mustache +17 -0
  258. package/templates/typescript-fetch/ApiEntitiesRecord.mustache +26 -0
  259. package/templates/typescript-fetch/ApiEntitiesReducer.mustache +21 -0
  260. package/templates/typescript-fetch/ApiEntitiesSelectors.mustache +5 -0
  261. package/templates/typescript-fetch/README.mustache +127 -0
  262. package/templates/typescript-fetch/allSagas.mustache +19 -0
  263. package/templates/typescript-fetch/api_doc.mustache +63 -0
  264. package/templates/typescript-fetch/api_example.mustache +44 -0
  265. package/templates/typescript-fetch/apis.index.mustache +16 -0
  266. package/templates/typescript-fetch/apis.mustache +483 -0
  267. package/templates/typescript-fetch/apisAssignQueryParam.mustache +12 -0
  268. package/templates/typescript-fetch/gitignore +4 -0
  269. package/templates/typescript-fetch/index.mustache +17 -0
  270. package/templates/typescript-fetch/licenseInfo.mustache +11 -0
  271. package/templates/typescript-fetch/modelEnum.mustache +28 -0
  272. package/templates/typescript-fetch/modelEnumInterfaces.mustache +37 -0
  273. package/templates/typescript-fetch/modelGeneric.mustache +261 -0
  274. package/templates/typescript-fetch/modelGenericInterfaces.mustache +50 -0
  275. package/templates/typescript-fetch/modelOneOf.mustache +255 -0
  276. package/templates/typescript-fetch/modelOneOfInterfaces.mustache +6 -0
  277. package/templates/typescript-fetch/model_doc.mustache +41 -0
  278. package/templates/typescript-fetch/models.index.mustache +32 -0
  279. package/templates/typescript-fetch/models.mustache +24 -0
  280. package/templates/typescript-fetch/npmignore.mustache +1 -0
  281. package/templates/typescript-fetch/package.mustache +43 -0
  282. package/templates/typescript-fetch/recordGeneric.mustache +295 -0
  283. package/templates/typescript-fetch/records.mustache +17 -0
  284. package/templates/typescript-fetch/runtime.mustache +424 -0
  285. package/templates/typescript-fetch/runtimeSagasAndRecords.mustache +120 -0
  286. package/templates/typescript-fetch/sagaApiManager.mustache +28 -0
  287. package/templates/typescript-fetch/sagas.mustache +245 -0
  288. package/templates/typescript-fetch/sourceLibraryIndex.mustache +1 -0
  289. package/templates/typescript-fetch/tsconfig.esm.mustache +7 -0
  290. package/templates/typescript-fetch/tsconfig.mustache +25 -0
@@ -0,0 +1,492 @@
1
+ /**
2
+ * Default Generator
3
+ * Main orchestrator for code generation
4
+ */
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+ import { camelCase } from "es-toolkit/string";
9
+ import * as yaml from "js-yaml";
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+ // Load generator version from package.json
13
+ function getGeneratorVersion() {
14
+ try {
15
+ const packageJsonPath = path.resolve(__dirname, "../../package.json");
16
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
17
+ return packageJson.version ?? "unknown";
18
+ }
19
+ catch {
20
+ return "unknown";
21
+ }
22
+ }
23
+ const GENERATOR_VERSION = getGeneratorVersion();
24
+ import { getInfo, getPaths, getSchemas, getSecuritySchemes, getServers, getTags, parseSpec, } from "../parser/openapi-parser.js";
25
+ import { OperationTransformer } from "../parser/operation-transformer.js";
26
+ import { SchemaTransformer } from "../parser/schema-transformer.js";
27
+ import { TemplateManager, } from "../template/template-manager.js";
28
+ /**
29
+ * Default code generator
30
+ */
31
+ export class DefaultGenerator {
32
+ config;
33
+ metadata;
34
+ templateManager = null;
35
+ schemaTransformer;
36
+ operationTransformer;
37
+ embeddedTemplatesDir;
38
+ constructor(config, metadata) {
39
+ this.config = config;
40
+ this.metadata = metadata;
41
+ // Initialize transformers with type mappings
42
+ const typeMappings = {
43
+ ...metadata.defaultTypeMappings,
44
+ ...config.typeMappings,
45
+ };
46
+ this.schemaTransformer = new SchemaTransformer({
47
+ typeMappings,
48
+ reservedWords: metadata.reservedWords,
49
+ toVarName: metadata.toVarName,
50
+ postProcessProperty: metadata.postProcessProperty,
51
+ });
52
+ this.operationTransformer = new OperationTransformer({
53
+ typeMappings,
54
+ reservedWords: metadata.reservedWords,
55
+ toOperationId: metadata.toOperationId,
56
+ });
57
+ // Embedded templates directory - look in the original Java resources
58
+ this.embeddedTemplatesDir = this.findEmbeddedTemplatesDir();
59
+ }
60
+ /**
61
+ * Find the embedded templates directory
62
+ */
63
+ findEmbeddedTemplatesDir() {
64
+ // Check for templates in various locations
65
+ const candidates = [
66
+ // Relative to package
67
+ path.join(__dirname, "../../templates"),
68
+ // In node_modules
69
+ path.join(process.cwd(), "node_modules/@kattebak/openapi-generator-ts/templates"),
70
+ // Development - Java resources
71
+ path.join(process.cwd(), "modules/openapi-generator/src/main/resources"),
72
+ // Custom template dir
73
+ this.config.templateDir,
74
+ ].filter(Boolean);
75
+ for (const candidate of candidates) {
76
+ if (fs.existsSync(candidate)) {
77
+ return candidate;
78
+ }
79
+ }
80
+ // Fallback to Java resources in workspace
81
+ return path.join(process.cwd(), "modules/openapi-generator/src/main/resources");
82
+ }
83
+ /**
84
+ * Run the code generation process
85
+ */
86
+ async generate() {
87
+ const result = {
88
+ files: [],
89
+ models: new Map(),
90
+ operations: new Map(),
91
+ warnings: [],
92
+ errors: [],
93
+ };
94
+ try {
95
+ // Parse OpenAPI spec
96
+ if (this.config.verbose) {
97
+ console.log(`Parsing OpenAPI spec: ${this.config.inputSpec}`);
98
+ }
99
+ const spec = await parseSpec(this.config.inputSpec, {
100
+ validate: this.config.validateSpec,
101
+ // Use bundle mode (default) to preserve $refs for proper type resolution
102
+ });
103
+ // Initialize template manager
104
+ const templateConfig = {
105
+ options: {
106
+ minimalUpdate: this.config.minimalUpdate ?? true,
107
+ skipOverwrite: this.config.skipOverwrite ?? false,
108
+ dryRun: this.config.dryRun ?? false,
109
+ },
110
+ locatorOptions: {
111
+ customDir: this.config.templateDir,
112
+ embeddedDir: this.embeddedTemplatesDir,
113
+ generatorName: this.metadata.embeddedTemplateDir,
114
+ library: this.config.library ?? this.metadata.defaultLibrary,
115
+ },
116
+ };
117
+ this.templateManager = new TemplateManager(templateConfig);
118
+ // Process schemas into models
119
+ if (this.config.generateModels !== false) {
120
+ if (this.config.verbose) {
121
+ console.log("Processing schemas...");
122
+ }
123
+ const schemas = getSchemas(spec.document);
124
+ result.models = this.schemaTransformer.transformSchemas(schemas);
125
+ // Generate model files
126
+ const modelFiles = await this.generateModels(result.models, spec);
127
+ result.files.push(...modelFiles);
128
+ }
129
+ // Process operations
130
+ if (this.config.generateApis !== false) {
131
+ if (this.config.verbose) {
132
+ console.log("Processing operations...");
133
+ }
134
+ const paths = getPaths(spec.document);
135
+ const securitySchemes = getSecuritySchemes(spec.document);
136
+ const schemas = getSchemas(spec.document);
137
+ result.operations = this.operationTransformer.transformPaths(paths, securitySchemes, schemas);
138
+ // Post-process operations
139
+ if (this.metadata.postProcessOperation) {
140
+ for (const ops of result.operations.values()) {
141
+ for (const op of ops) {
142
+ this.metadata.postProcessOperation(op, this.config);
143
+ }
144
+ }
145
+ }
146
+ // Generate API files
147
+ const apiFiles = await this.generateApis(result.operations, result.models, spec);
148
+ result.files.push(...apiFiles);
149
+ }
150
+ // Generate supporting files
151
+ if (this.config.generateSupportingFiles !== false) {
152
+ if (this.config.verbose) {
153
+ console.log("Generating supporting files...");
154
+ }
155
+ const supportingFiles = await this.generateSupportingFiles(result.models, result.operations, spec);
156
+ result.files.push(...supportingFiles);
157
+ }
158
+ if (this.config.verbose) {
159
+ console.log(`Generated ${result.files.length} files`);
160
+ }
161
+ }
162
+ catch (error) {
163
+ result.errors.push(error instanceof Error ? error.message : String(error));
164
+ throw error;
165
+ }
166
+ return result;
167
+ }
168
+ /**
169
+ * Generate model files
170
+ */
171
+ async generateModels(models, spec) {
172
+ const files = [];
173
+ if (!this.templateManager) {
174
+ throw new Error("Template manager not initialized");
175
+ }
176
+ const globalData = this.createGlobalTemplateData(spec);
177
+ for (const [name, model] of models) {
178
+ // Apply generator-specific model post-processing
179
+ if (this.metadata.postProcessModel) {
180
+ this.metadata.postProcessModel(model, this.config);
181
+ }
182
+ // Convert model imports Set to array format expected by templates
183
+ const modelImports = Array.from(model.imports)
184
+ .sort()
185
+ .map((imp) => ({ import: imp }));
186
+ const templateData = {
187
+ ...globalData,
188
+ // Wrap model in the structure expected by models.mustache: {{#models}}{{#model}}
189
+ // The imports array must be a sibling of model (not inside it) because
190
+ // the template uses {{#models}}{{#imports}}...{{/imports}}{{#model}}...{{/model}}{{/models}}
191
+ models: [
192
+ {
193
+ // imports at the same level as model for {{#models}}{{#imports}}
194
+ imports: modelImports,
195
+ model: {
196
+ ...model,
197
+ classname: model.classname,
198
+ },
199
+ },
200
+ ],
201
+ // Also provide at top level for partials that access directly
202
+ ...model,
203
+ model,
204
+ classname: model.classname,
205
+ // Provide imports at top level for templates that access {{#imports}}
206
+ imports: modelImports,
207
+ package: this.config.modelPackage ?? this.config.packageName,
208
+ };
209
+ try {
210
+ const content = await this.templateManager.render(this.metadata.modelTemplateFile, templateData);
211
+ // Use generator-specific filename conversion if provided
212
+ const filename = this.metadata.toModelFilename
213
+ ? this.metadata.toModelFilename(model.classname)
214
+ : `${model.classname}${this.metadata.modelFileExtension}`;
215
+ // Interpolate folder path with template variables (e.g., {{packageName}})
216
+ const modelPackagePath = this.config.modelPackage?.replace(/\./g, "/") ??
217
+ this.interpolatePath(this.metadata.defaultModelPackage ?? "", templateData);
218
+ const outputPath = path.join(this.config.outputDir, modelPackagePath, filename);
219
+ const result = await this.templateManager.writeFile(outputPath, content);
220
+ files.push(result);
221
+ if (this.config.verbose && !result.skipped) {
222
+ console.log(` Generated: ${outputPath}`);
223
+ }
224
+ }
225
+ catch (error) {
226
+ if (this.config.verbose) {
227
+ console.warn(` Warning: Could not generate model ${name}: ${error}`);
228
+ }
229
+ }
230
+ }
231
+ return files;
232
+ }
233
+ /**
234
+ * Generate API files
235
+ */
236
+ async generateApis(operations, models, spec) {
237
+ console.log(`Generating APIs for ${operations.size} tags`);
238
+ const files = [];
239
+ if (!this.templateManager) {
240
+ throw new Error("Template manager not initialized");
241
+ }
242
+ const globalData = this.createGlobalTemplateData(spec);
243
+ for (const [tag, ops] of operations) {
244
+ const className = this.toApiClassName(tag);
245
+ // Sort operations by operationId for consistent output matching original generator
246
+ const sortedOps = [...ops].sort((a, b) => a.operationId.localeCompare(b.operationId));
247
+ // Enhance operations with nickname and ensure classname is accessible
248
+ // Also include template flags for proper rendering in nested contexts
249
+ const enhancedOps = sortedOps.map((op) => ({
250
+ ...op,
251
+ nickname: op.nickname ?? op.operationId,
252
+ classname: className,
253
+ useSingleRequestParameter: globalData.useSingleRequestParameter ?? true,
254
+ withInterfaces: globalData.withInterfaces ?? true,
255
+ withoutRuntimeChecks: globalData.withoutRuntimeChecks ?? false,
256
+ prefixParameterInterfaces: globalData.prefixParameterInterfaces ?? false,
257
+ }));
258
+ // Include global boolean flags in operations context for nested access
259
+ const operationContext = {
260
+ classname: className,
261
+ operation: enhancedOps,
262
+ useSingleRequestParameter: globalData.useSingleRequestParameter ?? true,
263
+ withInterfaces: globalData.withInterfaces ?? true,
264
+ withoutRuntimeChecks: globalData.withoutRuntimeChecks ?? false,
265
+ prefixParameterInterfaces: globalData.prefixParameterInterfaces ?? false,
266
+ };
267
+ const templateData = {
268
+ ...globalData,
269
+ classname: className,
270
+ baseName: tag,
271
+ operations: operationContext,
272
+ operation: enhancedOps,
273
+ models: Array.from(models.values()),
274
+ imports: this.collectImports(ops),
275
+ package: this.config.apiPackage ?? this.config.packageName,
276
+ };
277
+ try {
278
+ const content = await this.templateManager.render(this.metadata.apiTemplateFile, templateData);
279
+ // Use generator-specific filename conversion if provided
280
+ const filename = this.metadata.toApiFilename
281
+ ? this.metadata.toApiFilename(className)
282
+ : `${className}${this.metadata.apiFileExtension}`;
283
+ console.log(`Generating API: ${className} -> ${filename}`);
284
+ const outputPath = path.join(this.config.outputDir, this.config.apiPackage?.replace(/\./g, "/") ??
285
+ this.metadata.defaultApiPackage ??
286
+ "", filename);
287
+ const result = await this.templateManager.writeFile(outputPath, content);
288
+ files.push(result);
289
+ if (this.config.verbose && !result.skipped) {
290
+ console.log(` Generated: ${outputPath}`);
291
+ }
292
+ }
293
+ catch (error) {
294
+ if (this.config.verbose) {
295
+ console.warn(` Warning: Could not generate API ${tag}: ${error}`);
296
+ }
297
+ }
298
+ }
299
+ return files;
300
+ }
301
+ /**
302
+ * Generate supporting files
303
+ */
304
+ async generateSupportingFiles(models, operations, spec) {
305
+ const files = [];
306
+ if (!this.templateManager) {
307
+ throw new Error("Template manager not initialized");
308
+ }
309
+ const globalData = this.createGlobalTemplateData(spec);
310
+ // Wrap each model in { model: ... } for template compatibility
311
+ const wrappedModels = Array.from(models.values()).map((model) => ({
312
+ model,
313
+ }));
314
+ const templateData = {
315
+ ...globalData,
316
+ models: wrappedModels,
317
+ apis: Array.from(operations.entries()).map(([tag, ops]) => ({
318
+ classname: this.toApiClassName(tag),
319
+ baseName: tag,
320
+ operations: ops,
321
+ })),
322
+ apiInfo: {
323
+ apis: Array.from(operations.entries()).map(([tag, ops]) => {
324
+ const className = this.toApiClassName(tag);
325
+ // Enhance each operation with classname for template access
326
+ const enhancedOps = ops.map((op) => ({
327
+ ...op,
328
+ classname: className,
329
+ classFilename: className,
330
+ }));
331
+ return {
332
+ classname: className,
333
+ classFilename: className,
334
+ baseName: tag,
335
+ operations: {
336
+ classname: className,
337
+ classFilename: className,
338
+ operation: enhancedOps,
339
+ },
340
+ };
341
+ }),
342
+ },
343
+ };
344
+ for (const supportingFile of this.metadata.supportingFiles) {
345
+ // Check condition
346
+ if (supportingFile.condition && !supportingFile.condition(this.config)) {
347
+ continue;
348
+ }
349
+ try {
350
+ const content = await this.templateManager.render(supportingFile.templateFile, templateData);
351
+ // Interpolate folder path with template variables (e.g., {{packageName}})
352
+ const folderPath = this.interpolatePath(supportingFile.folder, templateData);
353
+ const outputPath = path.join(this.config.outputDir, folderPath, supportingFile.destinationFilename);
354
+ const result = await this.templateManager.writeFile(outputPath, content);
355
+ files.push(result);
356
+ if (this.config.verbose && !result.skipped) {
357
+ console.log(` Generated: ${outputPath}`);
358
+ }
359
+ }
360
+ catch (error) {
361
+ // Supporting files are optional - don't fail if template not found
362
+ if (this.config.debug) {
363
+ console.warn(` Could not generate supporting file ${supportingFile.templateFile}: ${error}`);
364
+ }
365
+ }
366
+ }
367
+ return files;
368
+ }
369
+ /**
370
+ * Derive a package name from the API title
371
+ * This is used when packageName is not explicitly set
372
+ */
373
+ derivePackageName(title) {
374
+ // Remove common prefixes like "Swagger", lowercase, remove non-alphanumeric
375
+ return title
376
+ .replace(/^swagger\s+/i, "")
377
+ .toLowerCase()
378
+ .replace(/[^a-z0-9]/g, "");
379
+ }
380
+ /**
381
+ * Interpolate simple template variables in folder paths
382
+ * Supports {{variableName}} syntax for path interpolation
383
+ */
384
+ interpolatePath(pathTemplate, data) {
385
+ return pathTemplate.replace(/\{\{(\w+)\}\}/g, (_, key) => {
386
+ const value = data[key];
387
+ return typeof value === "string" ? value : String(value ?? "");
388
+ });
389
+ }
390
+ /**
391
+ * Create global template data available to all templates
392
+ */
393
+ createGlobalTemplateData(spec) {
394
+ const info = getInfo(spec.document);
395
+ const servers = getServers(spec.document);
396
+ const tags = getTags(spec.document);
397
+ // Derive package name from API title if not explicitly set
398
+ const packageName = this.config.packageName ??
399
+ (info.title ? this.derivePackageName(info.title) : "openapi");
400
+ // Process description for templates that need newline formatting
401
+ const appDescription = info.description ||
402
+ "No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)";
403
+ const appDescriptionWithNewLines = appDescription
404
+ .split("\n")
405
+ .map((line) => line.trim())
406
+ .join("\n");
407
+ return {
408
+ // OpenAPI info
409
+ appName: info.title,
410
+ appVersion: info.version,
411
+ version: info.version, // Alias for templates using {{version}}
412
+ appDescription,
413
+ appDescriptionWithNewLines,
414
+ infoUrl: info.termsOfService,
415
+ infoEmail: info.contact?.email,
416
+ licenseInfo: info.license?.name,
417
+ licenseUrl: info.license?.url,
418
+ // Servers
419
+ servers,
420
+ basePath: servers[0]?.url ?? "",
421
+ // Tags
422
+ tags,
423
+ // Config
424
+ packageName: packageName,
425
+ apiPackage: this.config.apiPackage ?? packageName,
426
+ modelPackage: this.config.modelPackage ?? packageName,
427
+ invokerPackage: this.config.invokerPackage ?? packageName,
428
+ // Generator info
429
+ generatorClass: this.metadata.name,
430
+ generatorVersion: GENERATOR_VERSION,
431
+ generatedDate: new Date().toISOString(),
432
+ generatedYear: new Date().getFullYear(),
433
+ // Default template properties (can be overridden by additionalProperties)
434
+ useSingleRequestParameter: true,
435
+ withInterfaces: false,
436
+ withoutRuntimeChecks: false,
437
+ prefixParameterInterfaces: false,
438
+ importFileExtension: "", // TypeScript imports don't need extensions
439
+ // Additional properties
440
+ ...this.config.additionalProperties,
441
+ // Global properties
442
+ ...this.config.globalProperties,
443
+ // Lambda functions are registered in the template engine
444
+ lambda: {},
445
+ // OpenAPI spec in YAML format
446
+ "openapi-yaml": yaml.dump(spec.document),
447
+ };
448
+ }
449
+ /**
450
+ * Convert tag to API class name
451
+ */
452
+ toApiClassName(tag) {
453
+ const suffix = this.metadata.apiNameSuffix ?? "Api";
454
+ // Use generator-specific conversion if provided
455
+ if (this.metadata.toApiClassName) {
456
+ return this.metadata.toApiClassName(tag, suffix);
457
+ }
458
+ // Default: Remove special characters and capitalize
459
+ const cleaned = tag.replace(/[^a-zA-Z0-9]/g, " ");
460
+ const words = cleaned.split(/\s+/).filter(Boolean);
461
+ const pascalCase = words
462
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
463
+ .join("");
464
+ return `${pascalCase}${suffix}`;
465
+ }
466
+ /**
467
+ * Collect imports from operations
468
+ * Returns array of { className, classname, classVarName } objects for template
469
+ */
470
+ collectImports(operations) {
471
+ const imports = new Set();
472
+ for (const op of operations) {
473
+ for (const imp of op.imports) {
474
+ imports.add(imp);
475
+ }
476
+ }
477
+ return Array.from(imports)
478
+ .sort()
479
+ .map((name) => ({
480
+ className: name,
481
+ classname: name,
482
+ classVarName: camelCase(name),
483
+ }));
484
+ }
485
+ }
486
+ /**
487
+ * Create a generator with the given config and metadata
488
+ */
489
+ export function createGenerator(config, metadata) {
490
+ return new DefaultGenerator(config, metadata);
491
+ }
492
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./config.js";
2
+ export * from "./generator.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./config.js";
2
+ export * from "./generator.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Core type definitions for the OpenAPI Generator
3
+ */
4
+ export interface GeneratorOptions {
5
+ inputSpec: string;
6
+ outputDir: string;
7
+ generatorName: string;
8
+ templateDir?: string;
9
+ library?: string;
10
+ additionalProperties?: Record<string, unknown>;
11
+ skipOverwrite?: boolean;
12
+ minimalUpdate?: boolean;
13
+ dryRun?: boolean;
14
+ }
15
+ export interface TemplateManagerOptions {
16
+ minimalUpdate: boolean;
17
+ skipOverwrite: boolean;
18
+ dryRun: boolean;
19
+ }
20
+ export interface WriteOptions {
21
+ skipOverwrite?: boolean;
22
+ minimalUpdate?: boolean;
23
+ }
24
+ export interface TemplateData {
25
+ [key: string]: unknown;
26
+ }
27
+ export type CompiledTemplate = (data: TemplateData) => string;
28
+ export interface TemplatePathLocator {
29
+ getFullTemplatePath(name: string): string | null;
30
+ }
31
+ export interface TemplatingEngine {
32
+ compile(source: string): CompiledTemplate;
33
+ registerHelper(name: string, fn: (...args: unknown[]) => string): void;
34
+ registerPartial(name: string, source: string): void;
35
+ }
36
+ export interface SupportingFile {
37
+ templateFile: string;
38
+ folder: string;
39
+ destinationFilename: string;
40
+ }
41
+ export interface GeneratedFile {
42
+ path: string;
43
+ content: string;
44
+ skipped: boolean;
45
+ reason?: string;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IACnC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC;IACvE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core type definitions for the OpenAPI Generator
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generator tests
3
+ * Tests for generator metadata, type mappings, and reserved words
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=generators.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.test.d.ts","sourceRoot":"","sources":["../../src/generators/generators.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}