@povio/openapi-codegen-cli 2.0.8-rc.8 → 2.0.8

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 (162) hide show
  1. package/README.md +0 -63
  2. package/dist/acl.d.ts +4 -0
  3. package/dist/acl.mjs +7 -62
  4. package/dist/commands/check.command.d.ts +2 -0
  5. package/dist/commands/check.d.ts +7 -0
  6. package/dist/commands/generate.command.d.ts +2 -0
  7. package/dist/commands/generate.d.ts +8 -0
  8. package/dist/generator.d.ts +3 -0
  9. package/dist/generator.js +78 -0
  10. package/dist/generators/checkOpenAPIDoc.d.ts +3 -0
  11. package/dist/generators/const/acl.const.d.ts +13 -0
  12. package/dist/generators/const/buildConfigs.const.d.ts +1 -0
  13. package/dist/generators/const/deps.const.d.ts +38 -0
  14. package/dist/generators/const/endpoints.const.d.ts +11 -0
  15. package/dist/generators/const/js.const.d.ts +1 -0
  16. package/dist/generators/const/openapi.const.d.ts +7 -0
  17. package/dist/generators/const/options.const.d.ts +2 -0
  18. package/dist/generators/const/package.const.d.ts +2 -0
  19. package/dist/generators/const/queries.const.d.ts +8 -0
  20. package/dist/generators/const/validation.const.d.ts +53 -0
  21. package/dist/generators/const/zod.const.d.ts +19 -0
  22. package/dist/generators/core/SchemaResolver.class.d.ts +71 -0
  23. package/dist/generators/core/endpoints/getEndpointAcl.d.ts +8 -0
  24. package/dist/generators/core/endpoints/getEndpointBody.d.ts +13 -0
  25. package/dist/generators/core/endpoints/getEndpointParameter.d.ts +11 -0
  26. package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.d.ts +3 -0
  27. package/dist/generators/core/endpoints/getEndpointsFromOpenAPIDoc.test.d.ts +1 -0
  28. package/dist/generators/core/getDataFromOpenAPIDoc.d.ts +8 -0
  29. package/dist/generators/core/getMetadataFromOpenAPIDoc.d.ts +4 -0
  30. package/dist/generators/core/getMetadataFromOpenAPIDoc.test.d.ts +1 -0
  31. package/dist/generators/core/openapi/getOpenAPISchemaComplexity.d.ts +2 -0
  32. package/dist/generators/core/openapi/getOpenAPISchemaComplexity.test.d.ts +1 -0
  33. package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.d.ts +6 -0
  34. package/dist/generators/core/openapi/getOpenAPISchemaDependencyGraph.test.d.ts +1 -0
  35. package/dist/generators/core/openapi/getSchemaRefObjs.d.ts +4 -0
  36. package/dist/generators/core/openapi/iterateSchema.d.ts +22 -0
  37. package/dist/generators/core/resolveConfig.d.ts +7 -0
  38. package/dist/generators/core/zod/ZodSchema.class.d.ts +26 -0
  39. package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaNames.d.ts +2 -0
  40. package/dist/generators/core/zod/enumExtraction/resolveExtractedEnumZodSchemaTags.d.ts +2 -0
  41. package/dist/generators/core/zod/enumExtraction/updateExtractedEnumZodSchemaData.d.ts +17 -0
  42. package/dist/generators/core/zod/getZodChain.d.ts +8 -0
  43. package/dist/generators/core/zod/getZodSchema.d.ts +17 -0
  44. package/dist/generators/core/zod/getZodSchema.test.d.ts +1 -0
  45. package/dist/generators/core/zod/getZodSchemaRefs.d.ts +6 -0
  46. package/dist/generators/core/zod/getZodSchemasFromOpenAPIDoc.d.ts +6 -0
  47. package/dist/generators/core/zod/resolveZodSchemaName.d.ts +10 -0
  48. package/dist/generators/core/zod/sortZodSchemasByTopology.d.ts +4 -0
  49. package/dist/generators/generate/generateAcl.d.ts +3 -0
  50. package/dist/generators/generate/generateAclCheck.d.ts +2 -0
  51. package/dist/generators/generate/generateAppRestClient.d.ts +2 -0
  52. package/dist/generators/generate/generateConfigs.d.ts +2 -0
  53. package/dist/generators/generate/generateEndpoints.d.ts +2 -0
  54. package/dist/generators/generate/generateModels.d.ts +2 -0
  55. package/dist/generators/generate/generateQueries.d.ts +2 -0
  56. package/dist/generators/generate/generateQueryModules.d.ts +2 -0
  57. package/dist/generators/generate/generateZodExtended.d.ts +2 -0
  58. package/dist/generators/generateCodeFromOpenAPIDoc.d.ts +4 -0
  59. package/dist/generators/types/builder-config.d.ts +48 -0
  60. package/dist/generators/types/common.d.ts +27 -0
  61. package/dist/generators/types/config.d.ts +2 -0
  62. package/dist/generators/types/endpoint.d.ts +50 -0
  63. package/dist/generators/types/generate.d.ts +39 -0
  64. package/dist/generators/types/metadata.d.ts +51 -0
  65. package/dist/generators/types/openapi.d.ts +22 -0
  66. package/dist/generators/types/options.d.ts +66 -0
  67. package/dist/generators/types/validation.d.ts +5 -0
  68. package/dist/generators/utils/array.utils.d.ts +1 -0
  69. package/dist/generators/utils/endpoint.utils.d.ts +12 -0
  70. package/dist/generators/utils/endpoint.utils.test.d.ts +1 -0
  71. package/dist/generators/utils/file.utils.d.ts +8 -0
  72. package/dist/generators/utils/generate/generate.acl.utils.d.ts +23 -0
  73. package/dist/generators/utils/generate/generate.configs.utils.d.ts +15 -0
  74. package/dist/generators/utils/generate/generate.endpoints.utils.d.ts +41 -0
  75. package/dist/generators/utils/generate/generate.imports.utils.d.ts +39 -0
  76. package/dist/generators/utils/generate/generate.imports.utils.test.d.ts +1 -0
  77. package/dist/generators/utils/generate/generate.openapi.utils.d.ts +2 -0
  78. package/dist/generators/utils/generate/generate.query.utils.d.ts +6 -0
  79. package/dist/generators/utils/generate/generate.utils.d.ts +18 -0
  80. package/dist/generators/utils/generate/generate.zod.utils.d.ts +13 -0
  81. package/dist/generators/utils/generate-files.utils.d.ts +6 -0
  82. package/dist/generators/utils/hbs/hbs-template.utils.d.ts +3 -0
  83. package/dist/generators/utils/hbs/hbs.acl.utils.d.ts +2 -0
  84. package/dist/generators/utils/hbs/hbs.common.utils.d.ts +1 -0
  85. package/dist/generators/utils/hbs/hbs.endpoints.utils.d.ts +2 -0
  86. package/dist/generators/utils/hbs/hbs.imports.utils.d.ts +1 -0
  87. package/dist/generators/utils/hbs/hbs.partials.utils.d.ts +2 -0
  88. package/dist/generators/utils/hbs/hbs.query.utils.d.ts +2 -0
  89. package/dist/generators/utils/hbs/hbs.zod.utils.d.ts +2 -0
  90. package/dist/generators/utils/js.utils.d.ts +2 -0
  91. package/dist/generators/utils/js.utils.test.d.ts +1 -0
  92. package/dist/generators/utils/math.utils.d.ts +1 -0
  93. package/dist/generators/utils/namespace.utils.d.ts +7 -0
  94. package/dist/generators/utils/object.utils.d.ts +13 -0
  95. package/dist/generators/utils/object.utils.test.d.ts +1 -0
  96. package/dist/generators/utils/openapi-schema.utils.d.ts +15 -0
  97. package/dist/generators/utils/openapi.utils.d.ts +23 -0
  98. package/dist/generators/utils/openapi.utils.test.d.ts +1 -0
  99. package/dist/generators/utils/operation.utils.d.ts +22 -0
  100. package/dist/generators/utils/operation.utils.test.d.ts +1 -0
  101. package/dist/generators/utils/query.utils.d.ts +7 -0
  102. package/dist/generators/utils/sort.utils.d.ts +7 -0
  103. package/dist/generators/utils/string.utils.d.ts +14 -0
  104. package/dist/generators/utils/string.utils.test.d.ts +1 -0
  105. package/dist/generators/utils/tag.utils.d.ts +7 -0
  106. package/dist/generators/utils/ts.utils.d.ts +16 -0
  107. package/dist/generators/utils/validation.utils.d.ts +17 -0
  108. package/dist/generators/utils/zod-schema.utils.d.ts +15 -0
  109. package/dist/helpers/cli.helper.d.ts +22 -0
  110. package/dist/helpers/config.helper.d.ts +3 -0
  111. package/dist/helpers/version.helper.d.ts +4 -0
  112. package/dist/helpers/yargs.helper.d.ts +10 -0
  113. package/dist/index.d.ts +15 -0
  114. package/dist/index.mjs +22 -365
  115. package/dist/lib/acl/AclGuard.d.ts +8 -0
  116. package/dist/lib/acl/AclGuard.mjs +14 -0
  117. package/dist/lib/acl/Can.d.ts +9 -0
  118. package/dist/lib/acl/Can.mjs +11 -0
  119. package/dist/lib/acl/ability.context.d.ts +15 -0
  120. package/dist/lib/acl/ability.context.mjs +37 -0
  121. package/dist/lib/acl/appAbility.types.d.ts +3 -0
  122. package/dist/lib/assets/locales/en/translation.json.mjs +8 -0
  123. package/dist/lib/assets/locales/sl/translation.json.mjs +8 -0
  124. package/dist/lib/auth/AuthGuard.d.ts +6 -0
  125. package/dist/lib/auth/AuthGuard.mjs +26 -0
  126. package/dist/lib/auth/auth.context.d.ts +22 -0
  127. package/dist/lib/auth/auth.context.mjs +41 -0
  128. package/dist/lib/config/i18n.d.ts +32 -0
  129. package/dist/lib/config/i18n.mjs +31 -0
  130. package/dist/lib/config/queryConfig.context.d.ts +17 -0
  131. package/dist/lib/config/queryConfig.context.mjs +26 -0
  132. package/dist/lib/config/router.context.d.ts +9 -0
  133. package/dist/lib/config/router.context.mjs +20 -0
  134. package/dist/lib/react-query.types.d.ts +10 -0
  135. package/dist/lib/rest/error-handling.d.ts +30 -0
  136. package/dist/lib/rest/error-handling.mjs +132 -0
  137. package/dist/lib/rest/rest-client.d.ts +22 -0
  138. package/dist/lib/rest/rest-client.mjs +62 -0
  139. package/dist/lib/rest/rest-client.types.d.ts +23 -0
  140. package/dist/lib/rest/rest-interceptor.d.ts +8 -0
  141. package/dist/lib/rest/rest-interceptor.mjs +21 -0
  142. package/dist/lib/rest/rest.utils.d.ts +7 -0
  143. package/dist/lib/rest/rest.utils.mjs +51 -0
  144. package/dist/sh.d.ts +2 -0
  145. package/dist/sh.js +635 -0
  146. package/package.json +41 -47
  147. package/src/generators/templates/endpoints.hbs +1 -0
  148. package/src/generators/templates/partials/query-use-infinite-query.hbs +7 -5
  149. package/src/generators/templates/partials/query-use-query.hbs +4 -3
  150. package/dist/acl.d.mts +0 -48
  151. package/dist/auth.context-DKjzWiaA.mjs +0 -59
  152. package/dist/config-Cu_GYfai.d.mts +0 -6
  153. package/dist/generate.runner-DNldmk0f.mjs +0 -98
  154. package/dist/generateCodeFromOpenAPIDoc-B5lnFNGB.mjs +0 -4522
  155. package/dist/generator.d.mts +0 -65
  156. package/dist/generator.mjs +0 -144
  157. package/dist/index.d.mts +0 -246
  158. package/dist/options-DBz5YE3s.d.mts +0 -90
  159. package/dist/sh.d.mts +0 -1
  160. package/dist/sh.mjs +0 -439
  161. package/dist/vite.d.mts +0 -8
  162. package/dist/vite.mjs +0 -50
package/README.md CHANGED
@@ -69,7 +69,6 @@ yarn openapi-codegen generate --config my-config.ts
69
69
  --config Path to TS config file (default: 'openapi-codegen.config.ts')
70
70
  --input Path/URL to OpenAPI JSON/YAML document
71
71
  --output Output directory path (default: 'output')
72
- --incremental Skip generation when OpenAPI and config are unchanged (default: true)
73
72
  --format Format the generated code using Oxfmt (default: true)
74
73
  --verbose Display detailed log messages during execution (default: false)
75
74
 
@@ -85,16 +84,11 @@ yarn openapi-codegen generate --config my-config.ts
85
84
  --tsPath (Requires `--importPath` to be 'ts') Typescript import path (default: '@/data')
86
85
  --removeOperationPrefixEndingWith Remove operation name prefixes that end with the specified string (default: 'Controller_')
87
86
  --extractEnums Extract enums into separate Zod schemas (default: true)
88
- --modelsInCommon Keep all schema declarations in defaultTag models and emit per-module proxy exports (default: false)
89
87
  --replaceOptionalWithNullish Replace `.optional()` chains with `.nullish()` in generated Zod schemas (default: false)
90
88
 
91
89
  --axiosRequestConfig Include Axios request config parameters in query hooks (default: false)
92
90
  --infiniteQueries Generate infinite queries for paginated API endpoints (default: false)
93
91
  --mutationEffects Add mutation effects options to mutation hooks (default: true)
94
- --workspaceContext Allow generated hooks to resolve path/ACL params from OpenApiWorkspaceContext (default: false)
95
- --inlineEndpoints Inline endpoint implementations into generated query files (default: false)
96
- --inlineEndpointsExcludeModules Comma-separated modules/tags to keep as separate API files while inlineEndpoints=true
97
- --modelsOnly Generate only model files (default: false)
98
92
  --parseRequestParams Add Zod parsing to API endpoints (default: true)
99
93
 
100
94
  --acl Generate ACL related files (default: true)
@@ -192,63 +186,6 @@ const config: OpenAPICodegenConfig = {
192
186
  export default config;
193
187
  ```
194
188
 
195
- ### OpenApiWorkspaceContext (Path + ACL defaults)
196
-
197
- Enable `workspaceContext: true` in codegen config (or pass `--workspaceContext`) and wrap your app subtree with `OpenApiWorkspaceContext.Provider` if generated hooks frequently repeat workspace-scoped params (for example `officeId`).
198
-
199
- ```tsx
200
- import { OpenApiWorkspaceContext } from "@povio/openapi-codegen-cli";
201
- // openapi-codegen.config.ts -> { workspaceContext: true }
202
-
203
- <OpenApiWorkspaceContext.Provider values={{ officeId: "office_123" }}>
204
- <MyWorkspacePages />
205
- </OpenApiWorkspaceContext.Provider>;
206
- ```
207
-
208
- Generated query/mutation hooks can then omit matching path/ACL params and resolve them from `OpenApiWorkspaceContext`.
209
-
210
- ### Generation Modes
211
-
212
- You can control whether API endpoint files are emitted, inlined into query files, or skipped entirely.
213
-
214
- ```ts
215
- import type { OpenAPICodegenConfig } from "@povio/openapi-codegen-cli";
216
-
217
- const config: OpenAPICodegenConfig = {
218
- // 1) Default mode: separate *.api.ts files are generated
219
- // 2) Inline mode: endpoint logic is generated inside *.queries.ts
220
- // and can be used without separate api files:
221
- // inlineEndpoints: true,
222
- // inlineEndpointsExcludeModules: ["Users", "Billing"],
223
- // 3) Models-only mode: generate only *.models.ts files
224
- // modelsOnly: true,
225
- // 4) Keep all model declarations in common.models and generate per-module model proxies
226
- // modelsInCommon: true,
227
- };
228
- ```
229
-
230
- ### Vite Plugin
231
-
232
- You can run codegen directly from Vite config (without CLI config file):
233
-
234
- ```ts
235
- import { defineConfig } from "vite";
236
- import { openApiCodegen } from "@povio/openapi-codegen-cli/vite";
237
-
238
- export default defineConfig({
239
- plugins: [
240
- openApiCodegen({
241
- input: "./openapi.yaml",
242
- output: "./src/data",
243
- inlineEndpoints: true,
244
- incremental: true,
245
- }),
246
- ],
247
- });
248
- ```
249
-
250
- The plugin runs on both `vite serve` and `vite build`, and watches local OpenAPI files in dev mode.
251
-
252
189
  ### Enums
253
190
 
254
191
  If you're using Enums in your backend DTOs with `@Expose()` and `@IsEnum`, they may still not appear correctly in the OpenAPI schema unless you also provide both `enum` **and** `enumName` to `@ApiProperty`.
package/dist/acl.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { AbilityContext } from './lib/acl/ability.context';
2
+ export { createAclGuard } from './lib/acl/AclGuard';
3
+ export { Can } from './lib/acl/Can';
4
+ export type { AppAbilities, AppAbility } from './lib/acl/appAbility.types';
package/dist/acl.mjs CHANGED
@@ -1,63 +1,8 @@
1
- import { n as OpenApiRouter, t as AuthContext } from "./auth.context-DKjzWiaA.mjs";
2
- import { createContext, useEffect, useState } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- import { AbilityBuilder, createMongoAbility } from "@casl/ability";
5
- import { unpackRules } from "@casl/ability/extra";
6
- import { createContextualCan, useAbility } from "@casl/react";
7
-
8
- //#region src/lib/acl/ability.context.tsx
9
- let AbilityContext;
10
- (function(_AbilityContext) {
11
- const createAppAbilityBuilder = () => new AbilityBuilder(createMongoAbility);
12
- const initialAppAbility = createAppAbilityBuilder().build();
13
- const Context = createContext({});
14
- const { Consumer } = Context;
15
- _AbilityContext.Consumer = Consumer;
16
- _AbilityContext.Provider = ({ children }) => {
17
- const [ability, setAbility] = useState(initialAppAbility);
18
- const { user } = AuthContext.useAuth();
19
- useEffect(() => {
20
- if (!user || !("aclRules" in user)) return;
21
- const { can, build } = createAppAbilityBuilder();
22
- const packedRules = user.aclRules;
23
- unpackRules(packedRules).forEach(({ action, subject, conditions }) => {
24
- can(action, subject, conditions);
25
- });
26
- setAbility(build());
27
- }, [user]);
28
- return /* @__PURE__ */ jsx(Context.Provider, {
29
- value: ability,
30
- children
31
- });
32
- };
33
- _AbilityContext.useAbility = () => {
34
- return useAbility(Context);
35
- };
36
- })(AbilityContext || (AbilityContext = {}));
37
-
38
- //#endregion
39
- //#region src/lib/acl/AclGuard.tsx
40
- const createAclGuard = () => ({ canUse, redirectTo = "/", children }) => {
41
- const ability = AbilityContext.useAbility();
42
- const { replace } = OpenApiRouter.useRouter();
43
- if (!ability.can(canUse[0], canUse[1])) {
44
- replace(redirectTo);
45
- return null;
46
- }
47
- return children;
1
+ import { AbilityContext } from "./lib/acl/ability.context.mjs";
2
+ import { createAclGuard } from "./lib/acl/AclGuard.mjs";
3
+ import { Can } from "./lib/acl/Can.mjs";
4
+ export {
5
+ AbilityContext,
6
+ Can,
7
+ createAclGuard
48
8
  };
49
-
50
- //#endregion
51
- //#region src/lib/acl/Can.tsx
52
- const ContextualCan = createContextualCan(AbilityContext.Consumer);
53
- const Can = ({ use, ...props }) => {
54
- const [action, subject] = use;
55
- return /* @__PURE__ */ jsx(ContextualCan, {
56
- ...props,
57
- do: action,
58
- on: subject
59
- });
60
- };
61
-
62
- //#endregion
63
- export { AbilityContext, Can, createAclGuard };
@@ -0,0 +1,2 @@
1
+ import { default as yargs } from 'yargs';
2
+ export declare const command: yargs.CommandModule;
@@ -0,0 +1,7 @@
1
+ import { GenerateOptions } from '../generators/types/options';
2
+ export type CheckParams = {
3
+ config?: string;
4
+ excludeTags?: string;
5
+ verbose?: boolean;
6
+ } & Partial<Pick<GenerateOptions, "input" | "splitByTags" | "defaultTag">>;
7
+ export declare function check({ verbose, config: configParam, excludeTags: _excludeTagsParam, ...params }: CheckParams): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import { default as yargs } from 'yargs';
2
+ export declare const command: yargs.CommandModule;
@@ -0,0 +1,8 @@
1
+ import { GenerateOptions } from '../generators/types/options';
2
+ export type GenerateParams = {
3
+ config?: string;
4
+ excludeTags?: string;
5
+ format?: boolean;
6
+ verbose?: boolean;
7
+ } & Partial<Pick<GenerateOptions, "input" | "output" | "tsNamespaces" | "tsPath" | "splitByTags" | "defaultTag" | "removeOperationPrefixEndingWith" | "importPath" | "extractEnums" | "acl" | "checkAcl" | "baseUrl" | "replaceOptionalWithNullish" | "infiniteQueries" | "axiosRequestConfig" | "mutationEffects" | "parseRequestParams" | "builderConfigs">>;
8
+ export declare function generate({ format, verbose, config: configParam, ...params }: GenerateParams): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import { GenerateParams } from './generators/types/metadata';
2
+ export declare function getGenerateMetadata({ input, options: genOptions }: GenerateParams): Promise<import('./generators/types/metadata').GenerateMetadata>;
3
+ export declare function getGenerateFilesData({ input, options: genOptions }: GenerateParams): Promise<import('./generators/types/generate').GenerateFileData[]>;