klasik 2.4.2 โ†’ 2.5.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 (52) hide show
  1. package/README.md +400 -3
  2. package/dist/bin/go-schema-gen +0 -0
  3. package/dist/builders/class-builder.d.ts +2 -0
  4. package/dist/builders/class-builder.d.ts.map +1 -1
  5. package/dist/builders/class-builder.js.map +1 -1
  6. package/dist/cli/commands/generate-crd.d.ts +2 -0
  7. package/dist/cli/commands/generate-crd.d.ts.map +1 -1
  8. package/dist/cli/commands/generate-crd.js +43 -0
  9. package/dist/cli/commands/generate-crd.js.map +1 -1
  10. package/dist/cli/commands/generate-go.d.ts +2 -0
  11. package/dist/cli/commands/generate-go.d.ts.map +1 -1
  12. package/dist/cli/commands/generate-go.js +43 -0
  13. package/dist/cli/commands/generate-go.js.map +1 -1
  14. package/dist/cli/commands/generate-jsonschema.d.ts +2 -0
  15. package/dist/cli/commands/generate-jsonschema.d.ts.map +1 -1
  16. package/dist/cli/commands/generate-jsonschema.js +10 -0
  17. package/dist/cli/commands/generate-jsonschema.js.map +1 -1
  18. package/dist/cli/commands/generate.d.ts +3 -0
  19. package/dist/cli/commands/generate.d.ts.map +1 -1
  20. package/dist/cli/commands/generate.js +55 -2
  21. package/dist/cli/commands/generate.js.map +1 -1
  22. package/dist/cli/utils/options.d.ts +12 -0
  23. package/dist/cli/utils/options.d.ts.map +1 -1
  24. package/dist/cli/utils/options.js +23 -0
  25. package/dist/cli/utils/options.js.map +1 -1
  26. package/dist/converters/swagger-converter.d.ts +46 -0
  27. package/dist/converters/swagger-converter.d.ts.map +1 -0
  28. package/dist/converters/swagger-converter.js +79 -0
  29. package/dist/converters/swagger-converter.js.map +1 -0
  30. package/dist/generator/generator.d.ts.map +1 -1
  31. package/dist/generator/generator.js +6 -2
  32. package/dist/generator/generator.js.map +1 -1
  33. package/dist/generators/api-client-generator.d.ts +16 -0
  34. package/dist/generators/api-client-generator.d.ts.map +1 -1
  35. package/dist/generators/api-client-generator.js +508 -57
  36. package/dist/generators/api-client-generator.js.map +1 -1
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +5 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/ir/types.d.ts +2 -0
  42. package/dist/ir/types.d.ts.map +1 -1
  43. package/dist/ir/types.js.map +1 -1
  44. package/dist/parsers/openapi-parser.d.ts +17 -0
  45. package/dist/parsers/openapi-parser.d.ts.map +1 -1
  46. package/dist/parsers/openapi-parser.js +72 -4
  47. package/dist/parsers/openapi-parser.js.map +1 -1
  48. package/dist/plugins/zod-validator-plugin.d.ts +85 -0
  49. package/dist/plugins/zod-validator-plugin.d.ts.map +1 -0
  50. package/dist/plugins/zod-validator-plugin.js +446 -0
  51. package/dist/plugins/zod-validator-plugin.js.map +1 -0
  52. package/package.json +2 -1
package/README.md CHANGED
@@ -16,13 +16,15 @@ Perfect for:
16
16
  ๐Ÿ”„ **class-transformer** - Automatic serialization/deserialization
17
17
  โœ… **class-validator** - Built-in validation decorators
18
18
  ๐Ÿ“‹ **Ajv JSON Schema** - Draft 2020-12 validation with deep nesting support
19
+ ๐Ÿ›ก๏ธ **Zod Schemas** - Generate Zod validation schemas for runtime type safety
19
20
  ๐ŸŽจ **NestJS Ready** - @ApiProperty decorators out of the box
20
- ๐Ÿ“ฆ **Multiple Formats** - OpenAPI, Kubernetes CRDs, JSON Schema, Go structs
21
+ ๐Ÿ“ฆ **Multiple Formats** - OpenAPI 3.x, Swagger 2.0 (auto-converted), Kubernetes CRDs, JSON Schema, Go structs
21
22
  ๐ŸŒ **ESM Support** - Modern JavaScript modules with .js extensions
22
23
  ๐Ÿ”— **External $refs** - Automatic resolution of external schemas
23
24
  ๐ŸŽญ **Custom Templates** - Mustache-based customization
24
25
  โš™๏ธ **Flexible Output** - Multiple export styles (namespace, direct, both)
25
- ๐Ÿงช **Well Tested** - Comprehensive test coverage (797 passing tests)
26
+ ๐ŸŒ **HTTP Client Choice** - Generate with Axios (default) or native Fetch API
27
+ ๐Ÿงช **Well Tested** - Comprehensive test coverage (1073+ passing tests)
26
28
  ๐Ÿš€ **Production Ready** - Used in real-world projects
27
29
  ๐Ÿ“ **Full CLI** - Rich command-line interface with 4 commands
28
30
  ๐Ÿ” **Authentication** - Custom headers including Bearer tokens
@@ -40,12 +42,18 @@ npx klasik <command>
40
42
 
41
43
  ### CLI Usage
42
44
 
43
- Generate from OpenAPI spec:
45
+ Generate from OpenAPI 3.x spec:
44
46
 
45
47
  ```bash
46
48
  klasik generate --url https://api.example.com/openapi.json --output ./src/generated
47
49
  ```
48
50
 
51
+ Generate from Swagger 2.0 spec (auto-converted to OpenAPI 3.0):
52
+
53
+ ```bash
54
+ klasik generate --url https://petstore.swagger.io/v2/swagger.json --output ./src/generated
55
+ ```
56
+
49
57
  Generate from Kubernetes CRDs:
50
58
 
51
59
  ```bash
@@ -661,12 +669,287 @@ validate(data);
661
669
  - Custom validation workflows
662
670
  - Schema introspection
663
671
 
672
+ ## Zod Schema Generation
673
+
674
+ Klasik can generate Zod validation schemas alongside your TypeScript models. Zod provides powerful runtime type validation with excellent TypeScript integration and a modern API.
675
+
676
+ ### Why Zod Validation?
677
+
678
+ **Advantages:**
679
+ - โœ… **TypeScript-first** - Excellent type inference with `z.infer<typeof Schema>`
680
+ - โœ… **Modern API** - Fluent, chainable validation methods
681
+ - โœ… **Lightweight** - Small bundle size (~12kb gzipped)
682
+ - โœ… **Composable** - Easy to extend and combine schemas
683
+ - โœ… **Parse, don't validate** - Returns typed, validated data
684
+ - โœ… **No decorators** - Works with plain objects, no class instances needed
685
+
686
+ **When to use:**
687
+ - Frontend applications with React, Vue, or Svelte
688
+ - API request/response validation
689
+ - Form validation
690
+ - Configuration file validation
691
+ - Projects preferring functional over decorator-based approach
692
+
693
+ ### Basic Usage
694
+
695
+ Enable with the `--use-zod` flag:
696
+
697
+ ```bash
698
+ klasik generate \
699
+ --url https://api.example.com/openapi.json \
700
+ --output ./generated \
701
+ --use-zod
702
+ ```
703
+
704
+ ### Generated Code Structure
705
+
706
+ For each model, Klasik generates a separate `.zod.ts` file:
707
+
708
+ ```
709
+ models/
710
+ โ”œโ”€โ”€ user.ts # Class with decorators
711
+ โ”œโ”€โ”€ user.zod.ts # Zod schema
712
+ โ”œโ”€โ”€ address.ts
713
+ โ”œโ”€โ”€ address.zod.ts
714
+ โ”œโ”€โ”€ index.ts # Class exports
715
+ โ””โ”€โ”€ index.zod.ts # Zod schema exports
716
+ ```
717
+
718
+ **Example generated Zod file (`user.zod.ts`):**
719
+
720
+ ```typescript
721
+ import { z } from 'zod';
722
+
723
+ /**
724
+ * User schema
725
+ */
726
+ export const UserSchema = z.object({
727
+ id: z.string().uuid(),
728
+ name: z.string().min(1).max(100),
729
+ email: z.string().email(),
730
+ age: z.number().int().min(0).max(150).optional(),
731
+ role: z.enum(['admin', 'user', 'guest']).optional(),
732
+ });
733
+
734
+ export type User = z.infer<typeof UserSchema>;
735
+ ```
736
+
737
+ ### Using Zod Schemas
738
+
739
+ **Validate data:**
740
+
741
+ ```typescript
742
+ import { UserSchema } from './generated/models/user.zod';
743
+
744
+ const result = UserSchema.safeParse({
745
+ id: '123e4567-e89b-12d3-a456-426614174000',
746
+ name: 'John Doe',
747
+ email: 'john@example.com',
748
+ });
749
+
750
+ if (result.success) {
751
+ console.log('Valid user:', result.data);
752
+ // result.data is fully typed as User
753
+ } else {
754
+ console.error('Validation errors:', result.error.issues);
755
+ }
756
+ ```
757
+
758
+ **Parse with error throwing:**
759
+
760
+ ```typescript
761
+ try {
762
+ const user = UserSchema.parse(data);
763
+ // user is fully typed
764
+ } catch (error) {
765
+ if (error instanceof z.ZodError) {
766
+ console.error('Validation failed:', error.issues);
767
+ }
768
+ }
769
+ ```
770
+
771
+ ### Type Mapping
772
+
773
+ | OpenAPI/IR Type | Zod Output |
774
+ |-----------------|------------|
775
+ | `string` | `z.string()` |
776
+ | `number` | `z.number()` |
777
+ | `integer` | `z.number().int()` |
778
+ | `boolean` | `z.boolean()` |
779
+ | `array` | `z.array(elementSchema)` |
780
+ | `object` | `z.object({...})` |
781
+ | `enum` | `z.enum([...values])` |
782
+ | `union` | `z.union([...])` |
783
+ | `dictionary` | `z.record(z.string(), valueSchema)` |
784
+ | `unknown` | `z.unknown()` |
785
+
786
+ ### Format Validations
787
+
788
+ | Format | Zod Method |
789
+ |--------|------------|
790
+ | `email` | `.email()` |
791
+ | `url` / `uri` | `.url()` |
792
+ | `uuid` | `.uuid()` |
793
+ | `date-time` | `.datetime()` |
794
+ | `date` | `.date()` |
795
+ | `ipv4` | `.ip({ version: 'v4' })` |
796
+ | `ipv6` | `.ip({ version: 'v6' })` |
797
+
798
+ ### Constraint Validations
799
+
800
+ | Constraint | Zod Method |
801
+ |------------|------------|
802
+ | `minLength` | `.min(length)` |
803
+ | `maxLength` | `.max(length)` |
804
+ | `pattern` | `.regex(pattern)` |
805
+ | `minimum` | `.min(value)` or `.gte(value)` |
806
+ | `maximum` | `.max(value)` or `.lte(value)` |
807
+ | `exclusiveMinimum` | `.gt(value)` |
808
+ | `exclusiveMaximum` | `.lt(value)` |
809
+ | `minItems` | `.min(length)` on array |
810
+ | `maxItems` | `.max(length)` on array |
811
+
812
+ ### Optional and Nullable Handling
813
+
814
+ | Property | Zod Output |
815
+ |----------|------------|
816
+ | Optional (not required) | `.optional()` |
817
+ | Nullable | `.nullable()` |
818
+ | Both optional and nullable | `.nullish()` |
819
+
820
+ ### Reference Handling
821
+
822
+ Zod schemas import and use referenced types directly:
823
+
824
+ ```typescript
825
+ // address.zod.ts
826
+ import { z } from 'zod';
827
+
828
+ export const AddressSchema = z.object({
829
+ street: z.string(),
830
+ city: z.string(),
831
+ zipCode: z.string(),
832
+ });
833
+
834
+ // user.zod.ts
835
+ import { z } from 'zod';
836
+ import { AddressSchema } from './address.zod';
837
+
838
+ export const UserSchema = z.object({
839
+ name: z.string(),
840
+ homeAddress: AddressSchema,
841
+ workAddress: AddressSchema.optional(),
842
+ });
843
+ ```
844
+
845
+ ### Combining with Class-based Models
846
+
847
+ You can use both class-based models and Zod schemas together:
848
+
849
+ ```bash
850
+ klasik generate \
851
+ --url https://api.example.com/openapi.json \
852
+ --output ./generated \
853
+ --class-validator \
854
+ --use-zod
855
+ ```
856
+
857
+ **Use case:** Use class-based models with decorators for NestJS backend validation, and Zod schemas for frontend form validation.
858
+
859
+ ### Dependencies
860
+
861
+ When using `--use-zod`, the following dependency is automatically added to `package.json`:
862
+
863
+ ```json
864
+ {
865
+ "dependencies": {
866
+ "zod": "^3.23.0"
867
+ }
868
+ }
869
+ ```
870
+
871
+ Install it in your project:
872
+
873
+ ```bash
874
+ cd generated
875
+ npm install
876
+ ```
877
+
878
+ ### Complete Example
879
+
880
+ ```bash
881
+ # Generate models with Zod validation
882
+ klasik generate-jsonschema \
883
+ --url ./schemas/user.json \
884
+ --output ./src/models \
885
+ --use-zod
886
+
887
+ # Use in your code
888
+ cat > example.ts << 'EOF'
889
+ import { UserSchema, User } from './src/models/user.zod';
890
+
891
+ // Valid user
892
+ const validResult = UserSchema.safeParse({
893
+ name: 'Alice Smith',
894
+ email: 'alice@example.com',
895
+ age: 30
896
+ });
897
+
898
+ if (validResult.success) {
899
+ const user: User = validResult.data;
900
+ console.log('Valid user:', user.name);
901
+ }
902
+
903
+ // Invalid user
904
+ const invalidResult = UserSchema.safeParse({
905
+ name: '',
906
+ email: 'invalid-email',
907
+ age: -5
908
+ });
909
+
910
+ if (!invalidResult.success) {
911
+ console.log('Errors:', invalidResult.error.issues);
912
+ // [
913
+ // { path: ['name'], message: 'String must contain at least 1 character(s)' },
914
+ // { path: ['email'], message: 'Invalid email' },
915
+ // { path: ['age'], message: 'Number must be greater than or equal to 0' }
916
+ // ]
917
+ }
918
+ EOF
919
+
920
+ npx ts-node example.ts
921
+ ```
922
+
664
923
  ## CLI Commands
665
924
 
666
925
  ### `klasik generate`
667
926
 
668
927
  Generate TypeScript client from OpenAPI specification.
669
928
 
929
+ **Supported formats:**
930
+ - OpenAPI 3.x (native support)
931
+ - Swagger 2.0 (automatically converted to OpenAPI 3.0)
932
+
933
+ **Swagger 2.0 Auto-Conversion:**
934
+
935
+ Klasik automatically detects Swagger 2.0 specifications and converts them to OpenAPI 3.0 before generation. This is transparent - you don't need to do anything special:
936
+
937
+ ```bash
938
+ # Works with Swagger 2.0 specs
939
+ klasik generate \
940
+ --url https://petstore.swagger.io/v2/swagger.json \
941
+ --output ./generated
942
+
943
+ # Output: "Converting Swagger 2.0 to OpenAPI 3.0..."
944
+ ```
945
+
946
+ The conversion handles:
947
+ - Path and operation migration
948
+ - Parameter format changes
949
+ - Security scheme updates
950
+ - Response object structure
951
+ - Schema definitions to components
952
+
670
953
  **Usage:**
671
954
 
672
955
  ```bash
@@ -680,17 +963,20 @@ klasik generate [options]
680
963
  | `-u, --url <url>` | OpenAPI spec URL or file path (required) | - |
681
964
  | `-o, --output <dir>` | Output directory (required) | - |
682
965
  | `-m, --mode <mode>` | Generation mode: `full` or `models-only` | `full` |
966
+ | `--http-client <client>` | HTTP client: `axios` or `fetch` | `axios` |
683
967
  | `--resolve-refs` | Resolve external $ref files | `false` |
684
968
  | `--esm` | Add .js extensions for ESM compatibility | `false` |
685
969
  | `--skip-js-extensions` | Skip .js extensions (for bundlers) | `false` |
686
970
  | `--nestjs-swagger` | Add @ApiProperty decorators | `false` |
687
971
  | `--class-validator` | Add class-validator decorators | `false` |
688
972
  | `--use-ajv` | Add Ajv JSON Schema validation methods | `false` |
973
+ | `--use-zod` | Generate Zod validation schemas | `false` |
689
974
  | `--header <header>` | Custom header (repeatable) | - |
690
975
  | `--timeout <ms>` | Request timeout | `30000` |
691
976
  | `--template <dir>` | Custom template directory | - |
692
977
  | `--keep-spec` | Keep downloaded spec file(s) | `false` |
693
978
  | `--export-style <style>` | Export style: `namespace`, `direct`, `both`, `none` | `namespace` |
979
+ | `--clean` | Remove output directory before generation | `false` |
694
980
 
695
981
  **Examples:**
696
982
 
@@ -747,6 +1033,12 @@ klasik generate \
747
1033
  --url ./openapi.yaml \
748
1034
  --output ./generated \
749
1035
  --template ./my-templates
1036
+
1037
+ # With native fetch instead of Axios
1038
+ klasik generate \
1039
+ --url ./openapi.yaml \
1040
+ --output ./generated \
1041
+ --http-client fetch
750
1042
  ```
751
1043
 
752
1044
  ### `klasik download`
@@ -812,12 +1104,14 @@ klasik generate-crd [options]
812
1104
  | `--nestjs-swagger` | Add @ApiProperty decorators | `false` |
813
1105
  | `--class-validator` | Add class-validator decorators | `false` |
814
1106
  | `--use-ajv` | Add Ajv JSON Schema validation methods | `false` |
1107
+ | `--use-zod` | Generate Zod validation schemas | `false` |
815
1108
  | `--esm` | Add .js extensions for ESM | `false` |
816
1109
  | `--header <header>` | Custom header (repeatable) | - |
817
1110
  | `--resolve-refs` | Resolve external $ref files | `false` |
818
1111
  | `--template <dir>` | Custom template directory | - |
819
1112
  | `--keep-spec` | Keep downloaded spec file(s) | `false` |
820
1113
  | `--timeout <ms>` | Request timeout | `30000` |
1114
+ | `--clean` | Remove output directory before generation | `false` |
821
1115
 
822
1116
  **Examples:**
823
1117
 
@@ -882,12 +1176,14 @@ klasik generate-jsonschema [options]
882
1176
  | `--nestjs-swagger` | Add @ApiProperty decorators | `false` |
883
1177
  | `--class-validator` | Add class-validator decorators | `false` |
884
1178
  | `--use-ajv` | Add Ajv JSON Schema validation methods | `false` |
1179
+ | `--use-zod` | Generate Zod validation schemas | `false` |
885
1180
  | `--esm` | Add .js extensions for ESM | `false` |
886
1181
  | `--header <header>` | Custom header (repeatable) | - |
887
1182
  | `--resolve-refs` | Resolve external $ref files | `false` |
888
1183
  | `--template <dir>` | Custom template directory | - |
889
1184
  | `--keep-spec` | Keep intermediate OpenAPI specs | `false` |
890
1185
  | `--timeout <ms>` | Request timeout | `30000` |
1186
+ | `--clean` | Remove output directory before generation | `false` |
891
1187
 
892
1188
  **Examples:**
893
1189
 
@@ -936,12 +1232,14 @@ klasik generate-go [options]
936
1232
  | `--nestjs-swagger` | Add @ApiProperty decorators | `false` |
937
1233
  | `--class-validator` | Add class-validator decorators | `false` |
938
1234
  | `--use-ajv` | Add Ajv JSON Schema validation methods | `false` |
1235
+ | `--use-zod` | Generate Zod validation schemas | `false` |
939
1236
  | `--esm` | Add .js extensions for ESM | `false` |
940
1237
  | `--template <dir>` | Custom template directory | - |
941
1238
  | `--export-style <style>` | Export style: `namespace`, `direct`, `both`, `none` | `namespace` |
942
1239
  | `--bare` | Generate models directly in output dir | `false` |
943
1240
  | `--go-tool-path <path>` | Path to go-schema-gen binary | auto-detected |
944
1241
  | `--allow-additional-properties` | Allow additional properties in JSON Schema | `false` |
1242
+ | `--clean` | Remove output directory before generation | `false` |
945
1243
 
946
1244
  **Prerequisites:**
947
1245
  - Go 1.21+ must be installed (first-time setup is automatic)
@@ -1514,6 +1812,103 @@ klasik generate \
1514
1812
  --skip-js-extensions
1515
1813
  ```
1516
1814
 
1815
+ ### HTTP Client Options
1816
+
1817
+ Klasik supports two HTTP clients for generated API classes: **Axios** (default) and **native Fetch API**.
1818
+
1819
+ #### Axios (Default)
1820
+
1821
+ The default HTTP client uses Axios, which provides:
1822
+ - Automatic request/response transformation
1823
+ - Request cancellation
1824
+ - Interceptors for request/response manipulation
1825
+ - Wide browser and Node.js compatibility
1826
+
1827
+ ```bash
1828
+ klasik generate \
1829
+ --url ./openapi.yaml \
1830
+ --output ./generated
1831
+ # --http-client axios (default)
1832
+ ```
1833
+
1834
+ **Generated code uses:**
1835
+ ```typescript
1836
+ import { AxiosInstance, AxiosResponse } from 'axios';
1837
+
1838
+ export class UsersApi {
1839
+ constructor(configuration: Configuration, axios: AxiosInstance) {
1840
+ this.configuration = configuration;
1841
+ this.axios = axios;
1842
+ }
1843
+
1844
+ async getUser(id: string): Promise<AxiosResponse<User>> {
1845
+ // Uses this.axios.request()
1846
+ }
1847
+ }
1848
+ ```
1849
+
1850
+ #### Native Fetch
1851
+
1852
+ For projects that prefer native APIs or want to minimize dependencies, use the `--http-client fetch` option:
1853
+
1854
+ ```bash
1855
+ klasik generate \
1856
+ --url ./openapi.yaml \
1857
+ --output ./generated \
1858
+ --http-client fetch
1859
+ ```
1860
+
1861
+ **Benefits:**
1862
+ - No external HTTP dependencies (no Axios)
1863
+ - Smaller bundle size
1864
+ - Native browser API
1865
+ - Works in modern Node.js (18+), Deno, Bun, and edge runtimes
1866
+ - Built-in timeout support using AbortController
1867
+
1868
+ **Generated code uses:**
1869
+ ```typescript
1870
+ import { HttpResponse, RequestConfig, httpRequest } from './base';
1871
+
1872
+ export class UsersApi {
1873
+ constructor(configuration: Configuration) {
1874
+ this.configuration = configuration;
1875
+ }
1876
+
1877
+ async getUser(id: string): Promise<HttpResponse<User>> {
1878
+ // Uses httpRequest() wrapper around native fetch
1879
+ }
1880
+ }
1881
+ ```
1882
+
1883
+ **HttpResponse interface:**
1884
+ ```typescript
1885
+ interface HttpResponse<T> {
1886
+ data: T;
1887
+ status: number;
1888
+ statusText: string;
1889
+ headers: Record<string, string>;
1890
+ }
1891
+ ```
1892
+
1893
+ **Configuration options for fetch:**
1894
+ ```typescript
1895
+ const config = new Configuration({
1896
+ basePath: 'https://api.example.com',
1897
+ headers: { 'Authorization': 'Bearer token' },
1898
+ timeout: 30000, // Request timeout in ms
1899
+ credentials: 'include', // Fetch credentials mode
1900
+ mode: 'cors', // Fetch request mode
1901
+ });
1902
+
1903
+ const api = new UsersApi(config);
1904
+ ```
1905
+
1906
+ **Response handling:**
1907
+ - JSON responses (`application/json`, `*+json`) are automatically parsed
1908
+ - Text responses (`text/*`) are returned as strings
1909
+ - Binary responses are returned as `ArrayBuffer`
1910
+ - Empty responses (204 No Content) are handled gracefully
1911
+
1517
1912
  ### Custom Templates
1518
1913
 
1519
1914
  Klasik uses Mustache templates for code generation. You can provide custom templates:
@@ -1646,6 +2041,8 @@ Built with:
1646
2041
  - [class-validator](https://github.com/typestack/class-validator) - Runtime validation
1647
2042
  - [ajv](https://github.com/ajv-validator/ajv) - JSON Schema validator
1648
2043
  - [ajv-formats](https://github.com/ajv-validator/ajv-formats) - Format validation for Ajv
2044
+ - [zod](https://github.com/colinhacks/zod) - TypeScript-first schema validation
2045
+ - [swagger2openapi](https://github.com/Mermade/oas-kit/tree/main/packages/swagger2openapi) - Swagger 2.0 to OpenAPI 3.0 conversion
1649
2046
  - [mustache](https://github.com/janl/mustache.js) - Template engine
1650
2047
  - [commander](https://github.com/tj/commander.js) - CLI framework
1651
2048
 
Binary file
@@ -24,11 +24,13 @@ export interface GeneratorOptions {
24
24
  nestJsSwagger?: boolean;
25
25
  classValidator?: boolean;
26
26
  useAjv?: boolean;
27
+ useZod?: boolean;
27
28
  crdKindCase?: 'kebab' | 'snake' | 'pascal' | 'camel' | 'none';
28
29
  exportStyle?: 'namespace' | 'direct' | 'both' | 'none';
29
30
  templateDir?: string;
30
31
  skipJsExtensions?: boolean;
31
32
  bare?: boolean;
33
+ httpClient?: 'axios' | 'fetch';
32
34
  }
33
35
  /**
34
36
  * Builds a TypeScript class from a schema definition
@@ -1 +1 @@
1
- {"version":3,"file":"class-builder.d.ts","sourceRoot":"","sources":["../../src/builders/class-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9D,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,cAAc,CAAiB;gBAGrC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAWnB;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;IAIvC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,kBAAkB,GAAG,mBAAmB;IA0BjE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAsDnD;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,KAAK,IAAI,UAAU;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;CAcxB"}
1
+ {"version":3,"file":"class-builder.d.ts","sourceRoot":"","sources":["../../src/builders/class-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9D,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,cAAc,CAAiB;gBAGrC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAWnB;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;IAIvC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,kBAAkB,GAAG,mBAAmB;IA0BjE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAsDnD;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,KAAK,IAAI,UAAU;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;CAcxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"class-builder.js","sourceRoot":"","sources":["../../src/builders/class-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-builder.js","sourceRoot":"","sources":["../../src/builders/class-builder.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface GenerateCrdOptions {
11
11
  nestjsSwagger?: boolean;
12
12
  classValidator?: boolean;
13
13
  useAjv?: boolean;
14
+ useZod?: boolean;
14
15
  esm?: boolean;
15
16
  header?: string[];
16
17
  resolveRefs?: boolean;
@@ -21,6 +22,7 @@ export interface GenerateCrdOptions {
21
22
  bare?: boolean;
22
23
  timeout?: number;
23
24
  include?: string[];
25
+ clean?: boolean;
24
26
  }
25
27
  export declare function generateCrdAction(options: GenerateCrdOptions): Promise<void>;
26
28
  export declare const generateCrdCommand: Command;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-crd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-crd.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAgCD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8HlF;AAED,eAAO,MAAM,kBAAkB,SAkBH,CAAC"}
1
+ {"version":3,"file":"generate-crd.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-crd.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgCD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsIlF;AAED,eAAO,MAAM,kBAAkB,SAoBH,CAAC"}
@@ -4,6 +4,39 @@
4
4
  *
5
5
  * Generates TypeScript models from Kubernetes CRDs
6
6
  */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
7
40
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
42
  };
@@ -20,6 +53,7 @@ const types_1 = require("../../ir/types");
20
53
  const ir_filter_1 = require("../../ir/ir-filter");
21
54
  const ora_1 = __importDefault(require("ora"));
22
55
  const options_1 = require("../utils/options");
56
+ const fs = __importStar(require("fs"));
23
57
  /**
24
58
  * Merge multiple SchemaIRs into one
25
59
  */
@@ -47,6 +81,12 @@ function mergeIRs(irs) {
47
81
  async function generateCrdAction(options) {
48
82
  const spinner = (0, ora_1.default)('Loading CRD specifications...').start();
49
83
  try {
84
+ // Clean output directory if requested
85
+ if (options.clean && fs.existsSync(options.output)) {
86
+ spinner.text = 'Cleaning output directory...';
87
+ fs.rmSync(options.output, { recursive: true, force: true });
88
+ logger_1.Logger.debug(`Cleaned output directory: ${options.output}`);
89
+ }
50
90
  // Parse headers
51
91
  const headers = options.header ? (0, options_1.parseHeaders)(options.header) : {};
52
92
  logger_1.Logger.debug(`Headers: ${JSON.stringify(headers)}`);
@@ -133,6 +173,7 @@ async function generateCrdAction(options) {
133
173
  nestJsSwagger: options.nestjsSwagger,
134
174
  classValidator: options.classValidator,
135
175
  useAjv: options.useAjv,
176
+ useZod: options.useZod,
136
177
  crdKindCase: options.crdKindCase,
137
178
  exportStyle: options.exportStyle,
138
179
  bare: options.bare,
@@ -162,6 +203,7 @@ exports.generateCrdCommand = new commander_1.Command('generate-crd')
162
203
  .addOption((0, options_1.nestjsSwaggerOption)())
163
204
  .addOption((0, options_1.classValidatorOption)())
164
205
  .addOption((0, options_1.useAjvOption)())
206
+ .addOption((0, options_1.useZodOption)())
165
207
  .addOption((0, options_1.esmOption)())
166
208
  .addOption((0, options_1.headerOption)())
167
209
  .addOption((0, options_1.resolveRefsOption)())
@@ -171,5 +213,6 @@ exports.generateCrdCommand = new commander_1.Command('generate-crd')
171
213
  .addOption((0, options_1.exportStyleOption)())
172
214
  .addOption((0, options_1.bareOption)())
173
215
  .addOption((0, options_1.timeoutOption)())
216
+ .addOption((0, options_1.cleanOption)())
174
217
  .action(generateCrdAction);
175
218
  //# sourceMappingURL=generate-crd.js.map