@povio/openapi-codegen-cli 2.0.8-rc.3 → 2.0.8-rc.31

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 (193) hide show
  1. package/README.md +70 -0
  2. package/dist/acl.d.mts +59 -0
  3. package/dist/acl.mjs +73 -7
  4. package/dist/auth.context-Bu5KW2sI.mjs +59 -0
  5. package/dist/config-KffSntOs.d.mts +6 -0
  6. package/dist/error-handling-CXeVTk1T.d.mts +38 -0
  7. package/dist/error-handling-DkPY7Asf.mjs +187 -0
  8. package/dist/generate.runner-CXsHkwM7.mjs +87 -0
  9. package/dist/generateCodeFromOpenAPIDoc-DkNqNy-S.mjs +4627 -0
  10. package/dist/generator.d.mts +65 -0
  11. package/dist/generator.mjs +144 -0
  12. package/dist/index.d.mts +230 -0
  13. package/dist/index.mjs +251 -24
  14. package/dist/options-D9TC-n26.d.mts +94 -0
  15. package/dist/sh.d.mts +1 -0
  16. package/dist/sh.mjs +448 -0
  17. package/dist/vite.d.mts +11 -0
  18. package/dist/vite.mjs +51 -0
  19. package/dist/zod.d.mts +20 -0
  20. package/dist/zod.mjs +33 -0
  21. package/package.json +54 -47
  22. package/dist/acl.d.ts +0 -4
  23. package/dist/assets/useCrossTabQueryInvalidation.mjs +0 -23
  24. package/dist/assets/useMutationEffects.mjs +0 -56
  25. package/dist/commands/check.command.d.ts +0 -2
  26. package/dist/commands/check.d.ts +0 -7
  27. package/dist/commands/generate.command.d.ts +0 -2
  28. package/dist/commands/generate.d.ts +0 -8
  29. package/dist/generator.d.ts +0 -3
  30. package/dist/generator.js +0 -77
  31. package/dist/generators/checkOpenAPIDoc.d.ts +0 -3
  32. package/dist/generators/const/acl.const.d.ts +0 -13
  33. package/dist/generators/const/buildConfigs.const.d.ts +0 -1
  34. package/dist/generators/const/deps.const.d.ts +0 -38
  35. package/dist/generators/const/endpoints.const.d.ts +0 -11
  36. package/dist/generators/const/js.const.d.ts +0 -1
  37. package/dist/generators/const/openapi.const.d.ts +0 -7
  38. package/dist/generators/const/options.const.d.ts +0 -2
  39. package/dist/generators/const/package.const.d.ts +0 -2
  40. package/dist/generators/const/queries.const.d.ts +0 -8
  41. package/dist/generators/const/validation.const.d.ts +0 -53
  42. package/dist/generators/const/zod.const.d.ts +0 -19
  43. package/dist/generators/core/SchemaResolver.class.d.ts +0 -71
  44. package/dist/generators/core/endpoints/getEndpointAcl.d.ts +0 -8
  45. package/dist/generators/core/endpoints/getEndpointBody.d.ts +0 -13
  46. package/dist/generators/core/endpoints/getEndpointParameter.d.ts +0 -11
  47. package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.d.ts +0 -3
  48. package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.test.d.ts +0 -1
  49. package/dist/generators/core/getDataFromOpenAPIDoc.d.ts +0 -8
  50. package/dist/generators/core/getMetadataFromOpenAPIDoc.d.ts +0 -4
  51. package/dist/generators/core/getMetadataFromOpenAPIDoc.test.d.ts +0 -1
  52. package/dist/generators/core/openapi/getOpenAPISchemaComplexity.d.ts +0 -2
  53. package/dist/generators/core/openapi/getOpenAPISchemaComplexity.test.d.ts +0 -1
  54. package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.d.ts +0 -6
  55. package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.test.d.ts +0 -1
  56. package/dist/generators/core/openapi/getSchemaRefObjs.d.ts +0 -4
  57. package/dist/generators/core/openapi/iterateSchema.d.ts +0 -22
  58. package/dist/generators/core/resolveConfig.d.ts +0 -7
  59. package/dist/generators/core/zod/ZodSchema.class.d.ts +0 -26
  60. package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaNames.d.ts +0 -2
  61. package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaTags.d.ts +0 -2
  62. package/dist/generators/core/zod/enumExtraction/updateExtractedEnumZodSchemaData.d.ts +0 -17
  63. package/dist/generators/core/zod/getZodChain.d.ts +0 -8
  64. package/dist/generators/core/zod/getZodSchema.d.ts +0 -17
  65. package/dist/generators/core/zod/getZodSchema.test.d.ts +0 -1
  66. package/dist/generators/core/zod/getZodSchemaRefs.d.ts +0 -6
  67. package/dist/generators/core/zod/getZodSchemasFromOpenAPIDoc.d.ts +0 -6
  68. package/dist/generators/core/zod/resolveZodSchemaName.d.ts +0 -10
  69. package/dist/generators/core/zod/sortZodSchemasByTopology.d.ts +0 -4
  70. package/dist/generators/generate/generateAcl.d.ts +0 -3
  71. package/dist/generators/generate/generateAclCheck.d.ts +0 -2
  72. package/dist/generators/generate/generateAppRestClient.d.ts +0 -2
  73. package/dist/generators/generate/generateConfigs.d.ts +0 -2
  74. package/dist/generators/generate/generateEndpoints.d.ts +0 -2
  75. package/dist/generators/generate/generateModels.d.ts +0 -2
  76. package/dist/generators/generate/generateQueries.d.ts +0 -2
  77. package/dist/generators/generate/generateQueryModules.d.ts +0 -2
  78. package/dist/generators/generate/generateZodExtended.d.ts +0 -2
  79. package/dist/generators/generateCodeFromOpenAPIDoc.d.ts +0 -4
  80. package/dist/generators/types/builder-config.d.ts +0 -48
  81. package/dist/generators/types/common.d.ts +0 -27
  82. package/dist/generators/types/config.d.ts +0 -2
  83. package/dist/generators/types/endpoint.d.ts +0 -50
  84. package/dist/generators/types/generate.d.ts +0 -39
  85. package/dist/generators/types/metadata.d.ts +0 -51
  86. package/dist/generators/types/openapi.d.ts +0 -22
  87. package/dist/generators/types/options.d.ts +0 -66
  88. package/dist/generators/types/validation.d.ts +0 -5
  89. package/dist/generators/utils/array.utils.d.ts +0 -1
  90. package/dist/generators/utils/endpoint.utils.d.ts +0 -12
  91. package/dist/generators/utils/endpoint.utils.test.d.ts +0 -1
  92. package/dist/generators/utils/file.utils.d.ts +0 -8
  93. package/dist/generators/utils/generate/generate.acl.utils.d.ts +0 -23
  94. package/dist/generators/utils/generate/generate.configs.utils.d.ts +0 -15
  95. package/dist/generators/utils/generate/generate.endpoints.utils.d.ts +0 -39
  96. package/dist/generators/utils/generate/generate.imports.utils.d.ts +0 -39
  97. package/dist/generators/utils/generate/generate.imports.utils.test.d.ts +0 -1
  98. package/dist/generators/utils/generate/generate.openapi.utils.d.ts +0 -2
  99. package/dist/generators/utils/generate/generate.query.utils.d.ts +0 -6
  100. package/dist/generators/utils/generate/generate.utils.d.ts +0 -18
  101. package/dist/generators/utils/generate/generate.zod.utils.d.ts +0 -13
  102. package/dist/generators/utils/generate-files.utils.d.ts +0 -6
  103. package/dist/generators/utils/hbs/hbs-template.utils.d.ts +0 -3
  104. package/dist/generators/utils/hbs/hbs.acl.utils.d.ts +0 -2
  105. package/dist/generators/utils/hbs/hbs.common.utils.d.ts +0 -1
  106. package/dist/generators/utils/hbs/hbs.endpoints.utils.d.ts +0 -2
  107. package/dist/generators/utils/hbs/hbs.imports.utils.d.ts +0 -1
  108. package/dist/generators/utils/hbs/hbs.partials.utils.d.ts +0 -2
  109. package/dist/generators/utils/hbs/hbs.query.utils.d.ts +0 -2
  110. package/dist/generators/utils/hbs/hbs.zod.utils.d.ts +0 -2
  111. package/dist/generators/utils/js.utils.d.ts +0 -2
  112. package/dist/generators/utils/js.utils.test.d.ts +0 -1
  113. package/dist/generators/utils/math.utils.d.ts +0 -1
  114. package/dist/generators/utils/namespace.utils.d.ts +0 -7
  115. package/dist/generators/utils/object.utils.d.ts +0 -13
  116. package/dist/generators/utils/object.utils.test.d.ts +0 -1
  117. package/dist/generators/utils/openapi-schema.utils.d.ts +0 -15
  118. package/dist/generators/utils/openapi.utils.d.ts +0 -23
  119. package/dist/generators/utils/openapi.utils.test.d.ts +0 -1
  120. package/dist/generators/utils/operation.utils.d.ts +0 -22
  121. package/dist/generators/utils/operation.utils.test.d.ts +0 -1
  122. package/dist/generators/utils/query.utils.d.ts +0 -7
  123. package/dist/generators/utils/sort.utils.d.ts +0 -7
  124. package/dist/generators/utils/string.utils.d.ts +0 -14
  125. package/dist/generators/utils/string.utils.test.d.ts +0 -1
  126. package/dist/generators/utils/tag.utils.d.ts +0 -7
  127. package/dist/generators/utils/ts.utils.d.ts +0 -16
  128. package/dist/generators/utils/validation.utils.d.ts +0 -17
  129. package/dist/generators/utils/zod-schema.utils.d.ts +0 -15
  130. package/dist/helpers/cli.helper.d.ts +0 -22
  131. package/dist/helpers/config.helper.d.ts +0 -3
  132. package/dist/helpers/version.helper.d.ts +0 -4
  133. package/dist/helpers/yargs.helper.d.ts +0 -10
  134. package/dist/index.d.ts +0 -16
  135. package/dist/lib/acl/AclGuard.d.ts +0 -8
  136. package/dist/lib/acl/AclGuard.mjs +0 -14
  137. package/dist/lib/acl/Can.d.ts +0 -9
  138. package/dist/lib/acl/Can.mjs +0 -11
  139. package/dist/lib/acl/ability.context.d.ts +0 -15
  140. package/dist/lib/acl/ability.context.mjs +0 -37
  141. package/dist/lib/acl/appAbility.types.d.ts +0 -3
  142. package/dist/lib/assets/locales/en/translation.json.mjs +0 -8
  143. package/dist/lib/assets/locales/sl/translation.json.mjs +0 -8
  144. package/dist/lib/auth/AuthGuard.d.ts +0 -6
  145. package/dist/lib/auth/AuthGuard.mjs +0 -26
  146. package/dist/lib/auth/auth.context.d.ts +0 -22
  147. package/dist/lib/auth/auth.context.mjs +0 -41
  148. package/dist/lib/config/i18n.d.ts +0 -32
  149. package/dist/lib/config/i18n.mjs +0 -31
  150. package/dist/lib/config/queryConfig.context.d.ts +0 -17
  151. package/dist/lib/config/queryConfig.context.mjs +0 -26
  152. package/dist/lib/config/router.context.d.ts +0 -9
  153. package/dist/lib/config/router.context.mjs +0 -20
  154. package/dist/lib/react-query.types.d.ts +0 -10
  155. package/dist/lib/rest/error-handling.d.ts +0 -30
  156. package/dist/lib/rest/error-handling.mjs +0 -132
  157. package/dist/lib/rest/rest-client.d.ts +0 -22
  158. package/dist/lib/rest/rest-client.mjs +0 -62
  159. package/dist/lib/rest/rest-client.types.d.ts +0 -23
  160. package/dist/lib/rest/rest-interceptor.d.ts +0 -8
  161. package/dist/lib/rest/rest-interceptor.mjs +0 -21
  162. package/dist/lib/rest/rest.utils.d.ts +0 -7
  163. package/dist/lib/rest/rest.utils.mjs +0 -51
  164. package/dist/sh.d.ts +0 -2
  165. package/dist/sh.js +0 -634
  166. package/src/assets/useCrossTabQueryInvalidation.ts +0 -40
  167. package/src/assets/useMutationEffects.ts +0 -89
  168. package/src/generators/templates/acl-check.hbs +0 -29
  169. package/src/generators/templates/acl.hbs +0 -19
  170. package/src/generators/templates/app-acl.hbs +0 -17
  171. package/src/generators/templates/app-rest-client.hbs +0 -7
  172. package/src/generators/templates/configs.hbs +0 -80
  173. package/src/generators/templates/endpoints.hbs +0 -44
  174. package/src/generators/templates/models.hbs +0 -23
  175. package/src/generators/templates/partials/acl-check-call.hbs +0 -1
  176. package/src/generators/templates/partials/casl-ability-function.hbs +0 -12
  177. package/src/generators/templates/partials/casl-ability-query.hbs +0 -1
  178. package/src/generators/templates/partials/casl-ability-type.hbs +0 -1
  179. package/src/generators/templates/partials/columns-config.hbs +0 -11
  180. package/src/generators/templates/partials/endpoint-config.hbs +0 -31
  181. package/src/generators/templates/partials/endpoint-param-parse.hbs +0 -1
  182. package/src/generators/templates/partials/endpoint-params.hbs +0 -1
  183. package/src/generators/templates/partials/import.hbs +0 -1
  184. package/src/generators/templates/partials/inputs-config.hbs +0 -10
  185. package/src/generators/templates/partials/model-js-docs.hbs +0 -6
  186. package/src/generators/templates/partials/query-js-docs.hbs +0 -31
  187. package/src/generators/templates/partials/query-keys.hbs +0 -11
  188. package/src/generators/templates/partials/query-use-infinite-query.hbs +0 -21
  189. package/src/generators/templates/partials/query-use-mutation.hbs +0 -54
  190. package/src/generators/templates/partials/query-use-query.hbs +0 -16
  191. package/src/generators/templates/queries.hbs +0 -54
  192. package/src/generators/templates/query-modules.hbs +0 -9
  193. package/src/generators/templates/zod-extended.hbs +0 -49
package/dist/sh.mjs ADDED
@@ -0,0 +1,448 @@
1
+ #!/usr/bin/env node
2
+ import { S as VALIDATION_ERROR_TYPE_TITLE, g as groupByType, h as GenerateType, i as getDataFromOpenAPIDoc, n as getOutputFileName, u as getTagFileName, x as Profiler } from "./generateCodeFromOpenAPIDoc-DkNqNy-S.mjs";
3
+ import { n as resolveConfig, t as runGenerate } from "./generate.runner-CXsHkwM7.mjs";
4
+ import { createRequire } from "node:module";
5
+ import yargs from "yargs";
6
+ import { hideBin } from "yargs/helpers";
7
+ import { styleText } from "node:util";
8
+ import fs, { existsSync, rmSync, writeFileSync } from "fs";
9
+ import "reflect-metadata";
10
+ import path from "path";
11
+ import SwaggerParser from "@apidevtools/swagger-parser";
12
+ import { exec } from "child_process";
13
+
14
+ //#region \0rolldown/runtime.js
15
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
16
+
17
+ //#endregion
18
+ //#region src/helpers/cli.helper.ts
19
+ function log(message) {
20
+ console.log(message);
21
+ }
22
+ function logInfo(message) {
23
+ console.log(`[INFO] ${message}`);
24
+ }
25
+ function logSuccess(message) {
26
+ console.log(styleText("green", `[SUCCESS] ${message}`));
27
+ }
28
+ function logError(error, message) {
29
+ if (error instanceof Error) console.log(styleText("red", `[ERROR] ${message || error.message}`));
30
+ else console.log(styleText("red", `[ERROR] ${error}`));
31
+ }
32
+ function logBanner(message) {
33
+ console.log(styleText("bgYellow", `==== ${message} ====`));
34
+ }
35
+
36
+ //#endregion
37
+ //#region src/helpers/version.helper.ts
38
+ /**
39
+ * Fetch the version from package.json
40
+ */
41
+ function getVersion() {
42
+ return "2.0.8-rc.31";
43
+ }
44
+
45
+ //#endregion
46
+ //#region src/helpers/yargs.helper.ts
47
+ const optionsKey = Symbol("options_key");
48
+ function YargOption(properties) {
49
+ return (target, propertyKey) => {
50
+ if (properties !== void 0 && properties !== null) {
51
+ const newMetadata = {
52
+ ...Reflect.getMetadata(optionsKey, target),
53
+ [propertyKey]: {
54
+ ...properties,
55
+ describe: properties.envAlias ? `${properties.describe || ""} [${properties.envAlias}]` : properties.describe,
56
+ type: properties.type || Reflect.getMetadata("design:type", target, propertyKey)?.name?.toLowerCase()
57
+ }
58
+ };
59
+ Reflect.defineMetadata(optionsKey, newMetadata, target);
60
+ }
61
+ };
62
+ }
63
+ function getYargsOption(target) {
64
+ const options = Reflect.getMetadata(optionsKey, target.prototype);
65
+ if (!options) throw new Error(`Options for ${target.name} were not defined`);
66
+ return options;
67
+ }
68
+ function getBuilder(options) {
69
+ return async (y) => {
70
+ return y.options(getYargsOptions(options)).middleware(async (_argv) => {
71
+ return await loadYargsConfig(options, _argv);
72
+ }, true);
73
+ };
74
+ }
75
+ function getYargsOptions(target) {
76
+ return Object.entries(getYargsOption(target)).reduce((a, [property, options]) => {
77
+ a[property] = Object.fromEntries(Object.entries(options).filter(([optionName]) => !["envAlias", "default"].includes(optionName)));
78
+ return a;
79
+ }, {});
80
+ }
81
+ async function loadYargsConfig(cls, _argv) {
82
+ const argv = new cls();
83
+ for (const [name, o] of Object.entries(getYargsOption(cls))) argv[name] = _argv[name] ?? o.default;
84
+ return argv;
85
+ }
86
+
87
+ //#endregion
88
+ //#region src/generators/checkOpenAPIDoc.ts
89
+ function checkOpenAPIDoc(openApiDoc, options) {
90
+ const { resolver, data } = getDataFromOpenAPIDoc(openApiDoc, options);
91
+ if (resolver.validationErrors.length > 0) {
92
+ const groupedErrors = groupByType(resolver.validationErrors);
93
+ Object.entries(groupedErrors).forEach(([type, errorMessages]) => {
94
+ log(`${styleText("red", `${VALIDATION_ERROR_TYPE_TITLE[type]}:`)}\n${errorMessages.map((message) => `- ${message}`).join("\n")}\n`);
95
+ });
96
+ } else {
97
+ const outputs = [...data.keys()].reduce((acc, tag) => [...acc, ...getOutputFileNames(tag, options)], []);
98
+ log(`${styleText("green", "Outputs:")}\n${outputs.map((output) => `- ${output}`).join("\n")}\n`);
99
+ }
100
+ return resolver.validationErrors;
101
+ }
102
+ function getOutputFileNames(tag, options) {
103
+ return [
104
+ GenerateType.Models,
105
+ GenerateType.Endpoints,
106
+ GenerateType.Queries
107
+ ].map((type) => getOutputFileName({
108
+ output: options.output,
109
+ fileName: getTagFileName({
110
+ tag,
111
+ type,
112
+ options
113
+ })
114
+ }));
115
+ }
116
+
117
+ //#endregion
118
+ //#region src/helpers/config.helper.ts
119
+ const CONFIG_FILE_NAMES = ["openapi-codegen.config.mjs", "openapi-codegen.config.ts"];
120
+ async function loadConfig(configPath) {
121
+ try {
122
+ if (configPath) return await loadConfigFromPath(configPath);
123
+ for (const fileName of CONFIG_FILE_NAMES) {
124
+ const filePath = path.resolve(process.cwd(), fileName);
125
+ if (fs.existsSync(filePath)) return await loadConfigFromPath(filePath);
126
+ }
127
+ return null;
128
+ } catch (error) {
129
+ logError(`Failed to load configuration: ${error instanceof Error ? error.message : error}`);
130
+ return null;
131
+ }
132
+ }
133
+ async function loadConfigFromPath(filePath) {
134
+ const absolutePath = path.resolve(process.cwd(), filePath);
135
+ if (!fs.existsSync(absolutePath)) throw new Error(`Configuration file not found: ${filePath}`);
136
+ const ext = path.extname(absolutePath).toLowerCase();
137
+ if (ext === ".mjs") return loadMjsConfig(absolutePath);
138
+ if (ext !== ".ts") throw new Error(`Only ESM (.mjs) and TypeScript (.ts) configuration files are supported. Found: ${ext}`);
139
+ return loadTsConfig(absolutePath);
140
+ }
141
+ async function loadMjsConfig(filePath) {
142
+ const imported = await import(`${pathToFileURL(filePath).href}?t=${Date.now()}`);
143
+ if (!imported.default) throw new Error(`ESM config must have a default export: ${filePath}`);
144
+ return imported.default;
145
+ }
146
+ let importFresh;
147
+ const loadJsSync = function loadJsSync(filepath) {
148
+ if (importFresh === void 0) importFresh = __require("import-fresh");
149
+ return importFresh(filepath);
150
+ };
151
+ let typescript;
152
+ async function loadTsConfig(filePath) {
153
+ if (typescript === void 0) typescript = __require("typescript");
154
+ const transpiledFilepath = `${filePath.slice(0, -2)}cjs`;
155
+ try {
156
+ const tsConfig = resolveTsConfig(path.dirname(filePath)) ?? {};
157
+ tsConfig.compilerOptions = Object.assign({}, tsConfig.compilerOptions, {
158
+ module: typescript.ModuleKind.NodeNext,
159
+ moduleResolution: typescript.ModuleResolutionKind.NodeNext,
160
+ target: typescript.ScriptTarget.ES2022,
161
+ noEmit: false
162
+ });
163
+ const fileContent = fs.readFileSync(filePath, "utf-8");
164
+ const transpiledFileContent = typescript.transpileModule(fileContent, tsConfig).outputText;
165
+ writeFileSync(transpiledFilepath, transpiledFileContent);
166
+ return loadJsSync(transpiledFilepath).default;
167
+ } catch (error) {
168
+ error.message = `TypeScript Error in ${filePath}:\n${error.message}`;
169
+ throw error;
170
+ } finally {
171
+ if (existsSync(transpiledFilepath)) rmSync(transpiledFilepath);
172
+ }
173
+ }
174
+ function resolveTsConfig(directory) {
175
+ const filePath = typescript.findConfigFile(directory, (fileName) => {
176
+ return typescript.sys.fileExists(fileName);
177
+ });
178
+ if (filePath === void 0) return;
179
+ const { config, error } = typescript.readConfigFile(filePath, (path) => typescript.sys.readFile(path));
180
+ if (error) throw new Error(`Error in ${filePath}: ${error.messageText.toString()}`);
181
+ return config;
182
+ }
183
+ function pathToFileURL(filePath) {
184
+ const normalizedPath = path.resolve(filePath).replace(/\\/g, "/");
185
+ return { href: normalizedPath.startsWith("/") ? `file://${normalizedPath}` : `file:///${normalizedPath}` };
186
+ }
187
+
188
+ //#endregion
189
+ //#region src/commands/check.ts
190
+ async function check({ verbose, config: configParam, includeTags: _includeTagsParam, excludeTags: _excludeTagsParam, ...params }) {
191
+ const start = Date.now();
192
+ if (verbose) logInfo("Resolving config...");
193
+ const config = resolveConfig({
194
+ fileConfig: await loadConfig(configParam),
195
+ params
196
+ });
197
+ if (verbose) logInfo("Parsing OpenAPI spec...");
198
+ const openApiDoc = await SwaggerParser.bundle(config.input);
199
+ if (verbose) logInfo("Running check...");
200
+ const errorMessages = checkOpenAPIDoc(openApiDoc, config);
201
+ if (errorMessages.length === 0) logSuccess(`Time: ${Date.now() - start}ms`);
202
+ else throw new Error(`Found ${errorMessages.length} issues. Time: ${Date.now() - start}ms`);
203
+ }
204
+
205
+ //#endregion
206
+ //#region \0@oxc-project+runtime@0.114.0/helpers/decorateMetadata.js
207
+ function __decorateMetadata(k, v) {
208
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
209
+ }
210
+
211
+ //#endregion
212
+ //#region \0@oxc-project+runtime@0.114.0/helpers/decorate.js
213
+ function __decorate(decorators, target, key, desc) {
214
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
215
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
216
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
217
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
218
+ }
219
+
220
+ //#endregion
221
+ //#region src/commands/check.command.ts
222
+ var CheckOptions = class {
223
+ config;
224
+ input;
225
+ splitByTags;
226
+ defaultTag;
227
+ includeTags;
228
+ excludeTags;
229
+ excludePathRegex;
230
+ excludeRedundantZodSchemas;
231
+ verbose;
232
+ };
233
+ __decorate([YargOption({ envAlias: "config" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "config", void 0);
234
+ __decorate([YargOption({ envAlias: "input" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "input", void 0);
235
+ __decorate([YargOption({
236
+ envAlias: "splitByTags",
237
+ type: "boolean"
238
+ }), __decorateMetadata("design:type", Boolean)], CheckOptions.prototype, "splitByTags", void 0);
239
+ __decorate([YargOption({ envAlias: "defaultTag" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "defaultTag", void 0);
240
+ __decorate([YargOption({ envAlias: "includeTags" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "includeTags", void 0);
241
+ __decorate([YargOption({ envAlias: "excludeTags" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "excludeTags", void 0);
242
+ __decorate([YargOption({ envAlias: "excludePathRegex" }), __decorateMetadata("design:type", String)], CheckOptions.prototype, "excludePathRegex", void 0);
243
+ __decorate([YargOption({
244
+ envAlias: "excludeRedundantZodSchemas",
245
+ type: "boolean"
246
+ }), __decorateMetadata("design:type", Boolean)], CheckOptions.prototype, "excludeRedundantZodSchemas", void 0);
247
+ __decorate([YargOption({
248
+ envAlias: "verbose",
249
+ default: false,
250
+ type: "boolean"
251
+ }), __decorateMetadata("design:type", Boolean)], CheckOptions.prototype, "verbose", void 0);
252
+ const command$1 = {
253
+ command: "check",
254
+ describe: "Check OpenAPI spec",
255
+ builder: getBuilder(CheckOptions),
256
+ handler: async (_argv) => {
257
+ const argv = await _argv;
258
+ if (argv.verbose) logBanner(`OpenAPI CodeGen ${getVersion()}`);
259
+ return check(argv);
260
+ }
261
+ };
262
+
263
+ //#endregion
264
+ //#region src/commands/generate.ts
265
+ async function generate({ prettier, verbose, config: configParam, ...params }) {
266
+ const start = Date.now();
267
+ const profiler = new Profiler(process.env.OPENAPI_CODEGEN_PROFILE === "1");
268
+ const fileConfig = await profiler.runAsync("config.load", async () => await loadConfig(configParam));
269
+ if (verbose) logInfo("Generating code...");
270
+ const result = await runGenerate({
271
+ fileConfig,
272
+ params,
273
+ profiler
274
+ });
275
+ const config = result.config;
276
+ if (result.skipped && verbose) logInfo("OpenAPI and config unchanged. Skipping generation.");
277
+ if (verbose) {
278
+ logSuccess(`Time: ${Date.now() - start}ms`);
279
+ if (profiler.enabled) {
280
+ logInfo("Profile breakdown:");
281
+ profiler.formatLines().forEach((line) => logInfo(` ${line}`));
282
+ }
283
+ }
284
+ if (prettier) execPrettier({
285
+ output: config.output,
286
+ verbose
287
+ });
288
+ }
289
+ function execPrettier({ output, verbose }) {
290
+ if (verbose) logInfo("Running Prettier...");
291
+ exec(`prettier --write ${output} `, (error) => {
292
+ if (verbose) if (error) logError(error, "Prettier error");
293
+ else logSuccess("Prettier finished.");
294
+ });
295
+ }
296
+
297
+ //#endregion
298
+ //#region src/commands/generate.command.ts
299
+ var GenerateOptions = class {
300
+ config;
301
+ input;
302
+ output;
303
+ clearOutput;
304
+ incremental;
305
+ tsNamespaces;
306
+ tsPath;
307
+ splitByTags;
308
+ defaultTag;
309
+ includeTags;
310
+ excludeTags;
311
+ excludePathRegex;
312
+ excludeRedundantZodSchemas;
313
+ importPath;
314
+ extractEnums;
315
+ modelsInCommon;
316
+ removeOperationPrefixEndingWith;
317
+ acl;
318
+ checkAcl;
319
+ baseUrl;
320
+ replaceOptionalWithNullish;
321
+ infiniteQueries;
322
+ mutationEffects;
323
+ workspaceContext;
324
+ parseRequestParams;
325
+ inlineEndpoints;
326
+ inlineEndpointsExcludeModules;
327
+ modelsOnly;
328
+ axiosRequestConfig;
329
+ builderConfigs;
330
+ format;
331
+ verbose;
332
+ };
333
+ __decorate([YargOption({ envAlias: "config" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "config", void 0);
334
+ __decorate([YargOption({ envAlias: "input" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "input", void 0);
335
+ __decorate([YargOption({ envAlias: "output" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "output", void 0);
336
+ __decorate([YargOption({
337
+ envAlias: "clearOutput",
338
+ type: "boolean"
339
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "clearOutput", void 0);
340
+ __decorate([YargOption({
341
+ envAlias: "incremental",
342
+ type: "boolean"
343
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "incremental", void 0);
344
+ __decorate([YargOption({
345
+ envAlias: "tsNamespaces",
346
+ type: "boolean"
347
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "tsNamespaces", void 0);
348
+ __decorate([YargOption({ envAlias: "tsPath" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "tsPath", void 0);
349
+ __decorate([YargOption({
350
+ envAlias: "splitByTags",
351
+ type: "boolean"
352
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "splitByTags", void 0);
353
+ __decorate([YargOption({ envAlias: "defaultTag" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "defaultTag", void 0);
354
+ __decorate([YargOption({ envAlias: "includeTags" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "includeTags", void 0);
355
+ __decorate([YargOption({ envAlias: "excludeTags" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "excludeTags", void 0);
356
+ __decorate([YargOption({ envAlias: "excludePathRegex" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "excludePathRegex", void 0);
357
+ __decorate([YargOption({
358
+ envAlias: "excludeRedundantZodSchemas",
359
+ type: "boolean"
360
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "excludeRedundantZodSchemas", void 0);
361
+ __decorate([YargOption({ envAlias: "importPath" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "importPath", void 0);
362
+ __decorate([YargOption({
363
+ envAlias: "extractEnums",
364
+ type: "boolean"
365
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "extractEnums", void 0);
366
+ __decorate([YargOption({
367
+ envAlias: "modelsInCommon",
368
+ type: "boolean"
369
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "modelsInCommon", void 0);
370
+ __decorate([YargOption({ envAlias: "removeOperationPrefixEndingWith" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "removeOperationPrefixEndingWith", void 0);
371
+ __decorate([YargOption({
372
+ envAlias: "acl",
373
+ type: "boolean"
374
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "acl", void 0);
375
+ __decorate([YargOption({
376
+ envAlias: "checkAcl",
377
+ type: "boolean"
378
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "checkAcl", void 0);
379
+ __decorate([YargOption({ envAlias: "baseUrl" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "baseUrl", void 0);
380
+ __decorate([YargOption({
381
+ envAlias: "replaceOptionalWithNullish",
382
+ type: "boolean"
383
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "replaceOptionalWithNullish", void 0);
384
+ __decorate([YargOption({
385
+ envAlias: "infiniteQueries",
386
+ type: "boolean"
387
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "infiniteQueries", void 0);
388
+ __decorate([YargOption({
389
+ envAlias: "mutationEffects",
390
+ type: "boolean"
391
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "mutationEffects", void 0);
392
+ __decorate([YargOption({
393
+ envAlias: "workspaceContext",
394
+ type: "boolean"
395
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "workspaceContext", void 0);
396
+ __decorate([YargOption({
397
+ envAlias: "parseRequestParams",
398
+ type: "boolean"
399
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "parseRequestParams", void 0);
400
+ __decorate([YargOption({
401
+ envAlias: "inlineEndpoints",
402
+ type: "boolean"
403
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "inlineEndpoints", void 0);
404
+ __decorate([YargOption({ envAlias: "inlineEndpointsExcludeModules" }), __decorateMetadata("design:type", String)], GenerateOptions.prototype, "inlineEndpointsExcludeModules", void 0);
405
+ __decorate([YargOption({
406
+ envAlias: "modelsOnly",
407
+ type: "boolean"
408
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "modelsOnly", void 0);
409
+ __decorate([YargOption({
410
+ envAlias: "axiosRequestConfig",
411
+ type: "boolean"
412
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "axiosRequestConfig", void 0);
413
+ __decorate([YargOption({
414
+ envAlias: "builderConfigs",
415
+ type: "boolean"
416
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "builderConfigs", void 0);
417
+ __decorate([YargOption({
418
+ envAlias: "format",
419
+ default: true,
420
+ type: "boolean"
421
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "format", void 0);
422
+ __decorate([YargOption({
423
+ envAlias: "verbose",
424
+ default: false,
425
+ type: "boolean"
426
+ }), __decorateMetadata("design:type", Boolean)], GenerateOptions.prototype, "verbose", void 0);
427
+ const command = {
428
+ command: "generate",
429
+ describe: "Generate code from OpenAPI spec",
430
+ builder: getBuilder(GenerateOptions),
431
+ handler: async (_argv) => {
432
+ const argv = await _argv;
433
+ if (argv.verbose) logBanner(`OpenAPI CodeGen ${getVersion()}`);
434
+ return generate(argv);
435
+ }
436
+ };
437
+
438
+ //#endregion
439
+ //#region src/sh.ts
440
+ yargs(hideBin(process.argv)).version(getVersion() || "unknown").scriptName("openapi-codegen").command(command).command(command$1).help().demandCommand(1).strictCommands(true).showHelpOnFail(true).fail((msg, err) => {
441
+ if (msg) logError(msg);
442
+ if (err) logError(err);
443
+ logInfo("Use '--help' for more info");
444
+ process.exit(1);
445
+ }).parse();
446
+
447
+ //#endregion
448
+ export { };
@@ -0,0 +1,11 @@
1
+ import { r as GenerateFileFormatter } from "./options-D9TC-n26.mjs";
2
+ import { t as OpenAPICodegenConfig } from "./config-KffSntOs.mjs";
3
+ import { Plugin } from "vite";
4
+
5
+ //#region src/vite/openapi-codegen.plugin.d.ts
6
+ type OpenApiCodegenViteConfig = OpenAPICodegenConfig & {
7
+ formatGeneratedFile?: GenerateFileFormatter;
8
+ };
9
+ declare function openApiCodegen(config: OpenApiCodegenViteConfig): Plugin;
10
+ //#endregion
11
+ export { type OpenAPICodegenConfig, type OpenApiCodegenViteConfig, openApiCodegen };
package/dist/vite.mjs ADDED
@@ -0,0 +1,51 @@
1
+ import { x as Profiler } from "./generateCodeFromOpenAPIDoc-DkNqNy-S.mjs";
2
+ import { t as runGenerate } from "./generate.runner-CXsHkwM7.mjs";
3
+ import path from "path";
4
+
5
+ //#region src/vite/openapi-codegen.plugin.ts
6
+ function openApiCodegen(config) {
7
+ let resolvedViteConfig;
8
+ let queue = Promise.resolve();
9
+ const isLocalInput = typeof config.input === "string" && !/^https?:\/\//i.test(config.input);
10
+ const { formatGeneratedFile, ...normalizedConfig } = config;
11
+ const enqueueGenerate = () => {
12
+ queue = queue.then(async () => {
13
+ const currentConfig = resolvedViteConfig;
14
+ if (!currentConfig) return;
15
+ await runGenerate({
16
+ fileConfig: normalizePaths(normalizedConfig, currentConfig.root),
17
+ formatGeneratedFile,
18
+ profiler: new Profiler(process.env.OPENAPI_CODEGEN_PROFILE === "1")
19
+ });
20
+ });
21
+ };
22
+ const setupWatcher = (server) => {
23
+ if (!isLocalInput || !config.input) return;
24
+ const openApiPath = path.resolve(server.config.root, config.input);
25
+ server.watcher.add(openApiPath);
26
+ server.watcher.on("change", (changedPath) => {
27
+ if (path.resolve(changedPath) === openApiPath) enqueueGenerate();
28
+ });
29
+ };
30
+ return {
31
+ name: "openapi-codegen",
32
+ configResolved(config) {
33
+ resolvedViteConfig = config;
34
+ },
35
+ buildStart() {
36
+ enqueueGenerate();
37
+ },
38
+ configureServer(server) {
39
+ setupWatcher(server);
40
+ }
41
+ };
42
+ }
43
+ function normalizePaths(config, root) {
44
+ const normalized = { ...config };
45
+ if (typeof normalized.output === "string" && !path.isAbsolute(normalized.output)) normalized.output = path.resolve(root, normalized.output);
46
+ if (typeof normalized.input === "string" && !path.isAbsolute(normalized.input) && !/^https?:\/\//i.test(normalized.input)) normalized.input = path.resolve(root, normalized.input);
47
+ return normalized;
48
+ }
49
+
50
+ //#endregion
51
+ export { openApiCodegen };
package/dist/zod.d.mts ADDED
@@ -0,0 +1,20 @@
1
+ import { r as ErrorHandler } from "./error-handling-CXeVTk1T.mjs";
2
+ import { z } from "zod";
3
+
4
+ //#region src/zod.d.ts
5
+ declare namespace ZodExtended {
6
+ interface ParseOptions {
7
+ type: "body" | "query";
8
+ name?: string;
9
+ errorHandler?: ErrorHandler<never>;
10
+ }
11
+ export function parse<ZOutput, ZInput>(schema: z.ZodType<ZOutput, ZInput>, data: unknown, {
12
+ type,
13
+ name,
14
+ errorHandler
15
+ }?: ParseOptions): ZOutput;
16
+ export const sortExp: (enumSchema: z.ZodEnum) => z.ZodString;
17
+ export {};
18
+ }
19
+ //#endregion
20
+ export { ZodExtended };
package/dist/zod.mjs ADDED
@@ -0,0 +1,33 @@
1
+ import { r as SharedErrorHandler } from "./error-handling-DkPY7Asf.mjs";
2
+ import { z } from "zod";
3
+
4
+ //#region src/zod.ts
5
+ let ZodExtended;
6
+ (function(_ZodExtended) {
7
+ function parse(schema, data, { type, name, errorHandler } = { type: "body" }) {
8
+ try {
9
+ return schema.parse(data);
10
+ } catch (e) {
11
+ if (e instanceof z.ZodError) e.name = `FE Request ${type === "body" ? "body" : "query param"}${name ? ` ("${name}")` : ""} schema mismatch - ZodError`;
12
+ (errorHandler ?? SharedErrorHandler).rethrowError(e);
13
+ throw e;
14
+ }
15
+ }
16
+ _ZodExtended.parse = parse;
17
+ function isSortExpValid(enumSchema, data) {
18
+ if (data === void 0 || data === "" || enumSchema.options.length === 0) return true;
19
+ const prefixedEnumOptions = `([+-]?(${enumSchema.options.join("|")}))`;
20
+ const commaSeparatedOptions = `(${prefixedEnumOptions})(\\s*,\\s*${prefixedEnumOptions})*`;
21
+ return new RegExp(`^${commaSeparatedOptions}$`).test(data);
22
+ }
23
+ _ZodExtended.sortExp = (enumSchema) => z.string().superRefine((arg, ctx) => {
24
+ if (!isSortExpValid(enumSchema, arg)) ctx.addIssue({
25
+ code: "invalid_value",
26
+ message: "Invalid sorting string.",
27
+ values: []
28
+ });
29
+ });
30
+ })(ZodExtended || (ZodExtended = {}));
31
+
32
+ //#endregion
33
+ export { ZodExtended };