@ng-openapi/zod 0.0.2-pr-26-feature-zod-d67a0ae.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 (6) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +118 -0
  3. package/index.cjs +3573 -0
  4. package/index.d.ts +191 -0
  5. package/index.js +3538 -0
  6. package/package.json +84 -0
package/index.d.ts ADDED
@@ -0,0 +1,191 @@
1
+ import { ScriptTarget, ModuleKind, Project } from 'ts-morph';
2
+ import { Info, ExternalDocs, Path, ParameterType, XML, BodyParameter, QueryParameter, Security, Tag } from 'swagger-schema-official';
3
+
4
+ interface SwaggerResponse {
5
+ description?: string;
6
+ content?: Record<string, {
7
+ schema?: any;
8
+ }>;
9
+ }
10
+ interface SwaggerDefinition {
11
+ type?: ParameterType | undefined;
12
+ format?: string | undefined;
13
+ title?: string | undefined;
14
+ description?: string | undefined;
15
+ default?: any;
16
+ multipleOf?: number | undefined;
17
+ maximum?: number | undefined;
18
+ exclusiveMaximum?: boolean | undefined;
19
+ minimum?: number | undefined;
20
+ exclusiveMinimum?: boolean | undefined;
21
+ maxLength?: number | undefined;
22
+ minLength?: number | undefined;
23
+ pattern?: string | undefined;
24
+ maxItems?: number | undefined;
25
+ minItems?: number | undefined;
26
+ uniqueItems?: boolean | undefined;
27
+ maxProperties?: number | undefined;
28
+ minProperties?: number | undefined;
29
+ enum?: any[] | undefined;
30
+ items?: SwaggerDefinition | SwaggerDefinition[] | undefined;
31
+ $ref?: string | undefined;
32
+ allOf?: SwaggerDefinition[] | undefined;
33
+ additionalProperties?: SwaggerDefinition | boolean | undefined;
34
+ properties?: {
35
+ [propertyName: string]: SwaggerDefinition;
36
+ } | undefined;
37
+ discriminator?: string | undefined;
38
+ readOnly?: boolean | undefined;
39
+ nullable?: boolean | undefined;
40
+ xml?: XML | undefined;
41
+ externalDocs?: ExternalDocs | undefined;
42
+ example?: any;
43
+ required?: string[] | undefined;
44
+ oneOf?: SwaggerDefinition[];
45
+ anyOf?: SwaggerDefinition[];
46
+ }
47
+ interface SwaggerSpec {
48
+ openapi: string;
49
+ swagger: string;
50
+ info: Info;
51
+ externalDocs?: ExternalDocs | undefined;
52
+ host?: string | undefined;
53
+ basePath?: string | undefined;
54
+ schemes?: string[] | undefined;
55
+ consumes?: string[] | undefined;
56
+ produces?: string[] | undefined;
57
+ paths: {
58
+ [pathName: string]: Path;
59
+ };
60
+ definitions?: {
61
+ [definitionsName: string]: SwaggerDefinition;
62
+ } | undefined;
63
+ parameters?: {
64
+ [parameterName: string]: BodyParameter | QueryParameter;
65
+ } | undefined;
66
+ responses?: {
67
+ [responseName: string]: SwaggerResponse;
68
+ } | undefined;
69
+ security?: Array<{
70
+ [securityDefinitionName: string]: string[];
71
+ }> | undefined;
72
+ securityDefinitions?: {
73
+ [securityDefinitionName: string]: Security;
74
+ } | undefined;
75
+ tags?: Tag[] | undefined;
76
+ components?: {
77
+ schemas?: Record<string, SwaggerDefinition>;
78
+ };
79
+ }
80
+
81
+ declare class SwaggerParser {
82
+ private readonly spec;
83
+ private constructor();
84
+ static create(swaggerPathOrUrl: string, config: GeneratorConfig): Promise<SwaggerParser>;
85
+ private static loadContent;
86
+ private static fetchUrlContent;
87
+ private static parseSpecContent;
88
+ private static detectFormat;
89
+ getDefinitions(): Record<string, SwaggerDefinition>;
90
+ getDefinition(name: string): SwaggerDefinition | undefined;
91
+ resolveReference(ref: string): SwaggerDefinition | undefined;
92
+ getAllDefinitionNames(): string[];
93
+ getSpec(): SwaggerSpec;
94
+ getPaths(): Record<string, any>;
95
+ isValidSpec(): boolean;
96
+ getSpecVersion(): {
97
+ type: "swagger" | "openapi";
98
+ version: string;
99
+ } | null;
100
+ }
101
+
102
+ /**
103
+ * Interface for generator instances
104
+ */
105
+ interface IPluginGenerator {
106
+ /**
107
+ * Generate code files
108
+ */
109
+ generate(outputRoot: string): Promise<void>;
110
+ }
111
+
112
+ interface GeneratorConfig {
113
+ input: string;
114
+ output: string;
115
+ clientName?: string;
116
+ validateInput?: (spec: SwaggerSpec) => boolean;
117
+ options: {
118
+ dateType: "string" | "Date";
119
+ enumStyle: "enum" | "union";
120
+ validation?: {
121
+ response?: boolean;
122
+ };
123
+ generateServices?: boolean;
124
+ generateEnumBasedOnDescription?: boolean;
125
+ customHeaders?: Record<string, string>;
126
+ responseTypeMapping?: {
127
+ [contentType: string]: "json" | "blob" | "arraybuffer" | "text";
128
+ };
129
+ customizeMethodName?: (operationId: string) => string;
130
+ };
131
+ compilerOptions?: {
132
+ declaration?: boolean;
133
+ target?: ScriptTarget;
134
+ module?: ModuleKind;
135
+ strict?: boolean;
136
+ };
137
+ plugins?: (new (...args: any) => IPluginGenerator)[];
138
+ }
139
+
140
+ interface ZodPluginOptions {
141
+ strict?: boolean | {
142
+ param?: boolean;
143
+ query?: boolean;
144
+ header?: boolean;
145
+ body?: boolean;
146
+ response?: boolean;
147
+ };
148
+ coerce?: boolean | {
149
+ param?: boolean;
150
+ query?: boolean;
151
+ header?: boolean;
152
+ body?: boolean;
153
+ response?: boolean;
154
+ };
155
+ generate?: {
156
+ param?: boolean;
157
+ query?: boolean;
158
+ header?: boolean;
159
+ body?: boolean;
160
+ response?: boolean;
161
+ };
162
+ dateTime?: {
163
+ offset?: boolean;
164
+ local?: boolean;
165
+ precision?: number;
166
+ };
167
+ time?: {
168
+ precision?: -1 | 0 | 1 | 2 | 3;
169
+ };
170
+ }
171
+ declare class ZodGenerator implements IPluginGenerator {
172
+ private project;
173
+ private parser;
174
+ private spec;
175
+ private config;
176
+ private options;
177
+ private schemaGenerator;
178
+ private indexGenerator;
179
+ constructor(parser: SwaggerParser, project: Project, config: GeneratorConfig, options?: ZodPluginOptions);
180
+ generate(outputRoot: string): Promise<void>;
181
+ private groupPathsByController;
182
+ private generateValidatorFile;
183
+ private generateHeaderComment;
184
+ private addImports;
185
+ private generateOperationValidators;
186
+ private generateParameterValidators;
187
+ private shouldGenerate;
188
+ private getOperationName;
189
+ }
190
+
191
+ export { ZodGenerator as ZodPlugin, type ZodPluginOptions };