@origins-digital/zod-openapi-utils 0.0.2

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.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # Origins Digital Zod API Utils
@@ -0,0 +1,4 @@
1
+ export * from './openapi/zod.extension';
2
+ export * from './openapi/zod-to-openapi';
3
+ export * from './openapi/make-open-api';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./openapi/zod.extension"), exports);
18
+ __exportStar(require("./openapi/zod-to-openapi"), exports);
19
+ __exportStar(require("./openapi/make-open-api"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,2DAAyC;AACzC,0DAAwC"}
@@ -0,0 +1,3 @@
1
+ import { ZodTypeAny } from 'zod';
2
+ export declare const makeOpenAPIComponents: (components: ZodTypeAny[]) => {};
3
+ //# sourceMappingURL=make-open-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-open-api.d.ts","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC,eAAO,MAAM,qBAAqB,GAAI,YAAY,UAAU,EAAE,OAS7D,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeOpenAPIComponents = void 0;
4
+ const zod_to_openapi_1 = require("./zod-to-openapi");
5
+ const makeOpenAPIComponents = (components) => {
6
+ return components.reduce((components, item) => {
7
+ if (item._def.schemaName) {
8
+ if (!components[item._def.schemaName]) {
9
+ components[item._def.schemaName] = (0, zod_to_openapi_1.zodToOpenAPI)(item);
10
+ }
11
+ }
12
+ return components;
13
+ }, {});
14
+ };
15
+ exports.makeOpenAPIComponents = makeOpenAPIComponents;
16
+ //# sourceMappingURL=make-open-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-open-api.js","sourceRoot":"","sources":["../../src/openapi/make-open-api.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEzC,MAAM,qBAAqB,GAAG,CAAC,UAAwB,EAAE,EAAE;IAChE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;QAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAA,6BAAY,EAAC,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AATW,QAAA,qBAAqB,yBAShC"}
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
3
+ import { z } from 'zod';
4
+ export declare function is<T extends Type<z.ZodTypeAny>>(input: z.ZodTypeAny, factory: T): input is InstanceType<T>;
5
+ export declare function zodToOpenAPI(zodType: z.ZodTypeAny, visited?: Set<any>, child?: boolean): SchemaObject;
6
+ //# sourceMappingURL=zod-to-openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-to-openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAEL,YAAY,EACb,MAAM,yDAAyD,CAAC;AAGjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,wBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAC7C,KAAK,EAAE,CAAC,CAAC,UAAU,EACnB,OAAO,EAAE,CAAC,GACT,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAG1B;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,CAAC,CAAC,UAAU,EACrB,OAAO,GAAE,GAAG,CAAC,GAAG,CAAa,EAC7B,KAAK,GAAE,OAAe,gBAoPvB"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.is = is;
7
+ exports.zodToOpenAPI = zodToOpenAPI;
8
+ const deepmerge_1 = __importDefault(require("deepmerge"));
9
+ const zod_1 = require("zod");
10
+ function is(input, factory) {
11
+ const factories = zod_1.z;
12
+ return factory === factories[input._def.typeName];
13
+ }
14
+ function zodToOpenAPI(zodType, visited = new Set(), child = false) {
15
+ var _a, _b;
16
+ const object = {};
17
+ if (zodType.description) {
18
+ object.description = zodType.description;
19
+ }
20
+ if (child && ((_a = zodType._def) === null || _a === void 0 ? void 0 : _a.schemaName)) {
21
+ object['$ref'] = `#/components/schemas/${zodType._def.schemaName}`;
22
+ return object;
23
+ }
24
+ if (is(zodType, zod_1.z.ZodString)) {
25
+ const { checks } = zodType._def;
26
+ object.type = 'string';
27
+ for (const check of checks) {
28
+ if (check.kind === 'min') {
29
+ object.minLength = check.value;
30
+ }
31
+ else if (check.kind === 'max') {
32
+ object.maxLength = check.value;
33
+ }
34
+ else if (check.kind === 'email') {
35
+ object.format = 'email';
36
+ }
37
+ else if (check.kind === 'url') {
38
+ object.format = 'uri';
39
+ }
40
+ else if (check.kind === 'uuid') {
41
+ object.format = 'uuid';
42
+ }
43
+ else if (check.kind === 'cuid') {
44
+ object.format = 'cuid';
45
+ }
46
+ else if (check.kind === 'regex') {
47
+ object.pattern = check.regex.source;
48
+ }
49
+ else if (check.kind === 'datetime') {
50
+ object.format = 'date-time';
51
+ }
52
+ else if (check.kind === 'date') {
53
+ object.format = 'date';
54
+ }
55
+ else if (check.kind === 'time') {
56
+ object.pattern = '^[0-9]{2}:[0-9]{2}:[0-9]{2}$';
57
+ }
58
+ else if (check.kind === 'password') {
59
+ object.format = 'password';
60
+ }
61
+ }
62
+ }
63
+ if (is(zodType, zod_1.z.ZodBoolean)) {
64
+ object.type = 'boolean';
65
+ }
66
+ if (is(zodType, zod_1.z.ZodNumber)) {
67
+ const { checks } = zodType._def;
68
+ object.type = 'number';
69
+ for (const check of checks) {
70
+ if (check.kind === 'int') {
71
+ object.type = 'integer';
72
+ }
73
+ else if (check.kind === 'min') {
74
+ object.minimum = check.value;
75
+ object.exclusiveMinimum = !check.inclusive;
76
+ }
77
+ else if (check.kind === 'max') {
78
+ object.maximum = check.value;
79
+ object.exclusiveMaximum = !check.inclusive;
80
+ }
81
+ else if (check.kind === 'multipleOf') {
82
+ object.multipleOf = check.value;
83
+ }
84
+ }
85
+ }
86
+ if (is(zodType, zod_1.z.ZodDate)) {
87
+ const { checks } = zodType._def;
88
+ object.type = 'string';
89
+ for (const check of checks) {
90
+ object.format = 'data-time';
91
+ }
92
+ }
93
+ if (is(zodType, zod_1.z.ZodBigInt)) {
94
+ object.type = 'integer';
95
+ object.format = 'int64';
96
+ }
97
+ if (is(zodType, zod_1.z.ZodArray)) {
98
+ const { minLength, maxLength, type } = zodType._def;
99
+ object.type = 'array';
100
+ if (minLength)
101
+ object.minItems = minLength.value;
102
+ if (maxLength)
103
+ object.maxItems = maxLength.value;
104
+ object.items = zodToOpenAPI(type, visited, true);
105
+ }
106
+ if (is(zodType, zod_1.z.ZodTuple)) {
107
+ const { items } = zodType._def;
108
+ object.type = 'array';
109
+ object.items = {
110
+ oneOf: items.map((item) => zodToOpenAPI(item, visited, true)),
111
+ };
112
+ }
113
+ if (is(zodType, zod_1.z.ZodSet)) {
114
+ const { valueType, minSize, maxSize } = zodType._def;
115
+ object.type = 'array';
116
+ if (minSize)
117
+ object.minItems = minSize.value;
118
+ if (maxSize)
119
+ object.maxItems = maxSize.value;
120
+ object.items = zodToOpenAPI(valueType, visited, true);
121
+ object.uniqueItems = true;
122
+ }
123
+ if (is(zodType, zod_1.z.ZodUnion)) {
124
+ const { options } = zodType._def;
125
+ object.oneOf = options.map((option) => zodToOpenAPI(option, visited, true));
126
+ }
127
+ if (is(zodType, zod_1.z.ZodDiscriminatedUnion)) {
128
+ const { options } = zodType._def;
129
+ object.discriminator = {
130
+ propertyName: zodType._def.discriminator,
131
+ };
132
+ object.oneOf = [];
133
+ for (const schema of options.values()) {
134
+ object.oneOf.push(zodToOpenAPI(schema, visited, true));
135
+ }
136
+ }
137
+ if (is(zodType, zod_1.z.ZodLiteral)) {
138
+ const { value } = zodType._def;
139
+ if (typeof value === 'string') {
140
+ object.type = 'string';
141
+ object.enum = [value];
142
+ }
143
+ if (typeof value === 'number') {
144
+ object.type = 'number';
145
+ object.minimum = value;
146
+ object.maximum = value;
147
+ }
148
+ if (typeof value === 'boolean') {
149
+ // currently there is no way to completely describe boolean literal
150
+ object.type = 'boolean';
151
+ }
152
+ }
153
+ if (is(zodType, zod_1.z.ZodEnum)) {
154
+ const { values } = zodType._def;
155
+ object.type = 'string';
156
+ object.enum = values;
157
+ }
158
+ if (is(zodType, zod_1.z.ZodNativeEnum)) {
159
+ const { values } = zodType._def;
160
+ // this only supports enums with string literal values
161
+ object.type = 'string';
162
+ object.enum = Object.values(values);
163
+ object['x-enumNames'] = Object.keys(values);
164
+ }
165
+ if (is(zodType, zod_1.z.ZodTransformer)) {
166
+ const { schema } = zodType._def;
167
+ Object.assign(object, zodToOpenAPI(schema, visited, true));
168
+ }
169
+ if (is(zodType, zod_1.z.ZodNullable)) {
170
+ const { innerType } = zodType._def;
171
+ Object.assign(object, zodToOpenAPI(innerType, visited, true));
172
+ object.nullable = true;
173
+ }
174
+ if (is(zodType, zod_1.z.ZodOptional)) {
175
+ const { innerType } = zodType._def;
176
+ Object.assign(object, zodToOpenAPI(innerType, visited, true));
177
+ }
178
+ if (is(zodType, zod_1.z.ZodDefault)) {
179
+ const { defaultValue, innerType } = zodType._def;
180
+ Object.assign(object, zodToOpenAPI(innerType, visited, true));
181
+ object.default = defaultValue();
182
+ }
183
+ if (is(zodType, zod_1.z.ZodObject)) {
184
+ // If mergedSchemas exists, reference the original schemas
185
+ if ((_b = zodType._def.mergedSchemas) === null || _b === void 0 ? void 0 : _b.length) {
186
+ object.allOf = zodType._def.mergedSchemas.map((schema) => zodToOpenAPI(schema, visited, true));
187
+ }
188
+ else {
189
+ const { shape } = zodType._def;
190
+ object.type = 'object';
191
+ object.properties = {};
192
+ object.required = [];
193
+ for (const [key, schema] of Object.entries(shape())) {
194
+ object.properties[key] = zodToOpenAPI(schema, visited, true);
195
+ const optionalTypes = [zod_1.z.ZodOptional.name, zod_1.z.ZodDefault.name];
196
+ const isOptional = optionalTypes.includes(schema.constructor.name);
197
+ if (!isOptional)
198
+ object.required.push(key);
199
+ }
200
+ if (object.required.length === 0) {
201
+ delete object.required;
202
+ }
203
+ }
204
+ }
205
+ if (is(zodType, zod_1.z.ZodRecord)) {
206
+ const { valueType } = zodType._def;
207
+ object.type = 'object';
208
+ object.additionalProperties = zodToOpenAPI(valueType, visited, true);
209
+ }
210
+ if (is(zodType, zod_1.z.ZodIntersection)) {
211
+ const { left, right } = zodType._def;
212
+ const leftSchema = zodToOpenAPI(left, visited, true);
213
+ const rightSchema = zodToOpenAPI(right, visited, true);
214
+ let merged;
215
+ if ('$ref' in leftSchema || '$ref' in rightSchema) {
216
+ merged = { allOf: [leftSchema, rightSchema] }; // Use OpenAPI's `allOf`
217
+ }
218
+ else {
219
+ merged = (0, deepmerge_1.default)(leftSchema, rightSchema, {
220
+ arrayMerge: (target, source) => Array.from(new Set([...target, ...source])),
221
+ });
222
+ }
223
+ Object.assign(object, merged);
224
+ }
225
+ if (is(zodType, zod_1.z.ZodEffects)) {
226
+ const { schema } = zodType._def;
227
+ Object.assign(object, zodToOpenAPI(schema, visited, true));
228
+ }
229
+ if (is(zodType, zod_1.z.ZodLazy)) {
230
+ const { getter } = zodType._def;
231
+ if (visited.has(getter))
232
+ return object;
233
+ visited.add(getter);
234
+ Object.assign(object, zodToOpenAPI(getter(), visited, true));
235
+ }
236
+ return object;
237
+ }
238
+ //# sourceMappingURL=zod-to-openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-to-openapi.js","sourceRoot":"","sources":["../../src/openapi/zod-to-openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { UnknownKeysParam, z, ZodStringCheck } from 'zod';
2
+ import { objectOutputType } from 'zod';
3
+ import { objectUtil } from 'zod';
4
+ import { objectInputType } from 'zod';
5
+ import { ZodTypeAny } from 'zod';
6
+ import { AnyZodObject, ZodRawShape } from 'zod';
7
+ export type ZodStringCheckAugmented = ZodStringCheck | {
8
+ kind: 'password';
9
+ message?: string;
10
+ };
11
+ declare module 'zod' {
12
+ interface ZodTypeDef {
13
+ schemaName?: string;
14
+ }
15
+ interface ZodObjectDef {
16
+ schemaName?: string;
17
+ mergedSchemas?: ZodType<any, any, any>[];
18
+ }
19
+ interface ZodType<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = Output> {
20
+ dto(name: string): this;
21
+ }
22
+ interface ZodObject<T extends ZodRawShape, UnknownKeys extends UnknownKeysParam = UnknownKeysParam, Catchall extends ZodTypeAny = ZodTypeAny, Output = objectOutputType<T, Catchall, UnknownKeys>, Input = objectInputType<T, Catchall, UnknownKeys>> {
23
+ merge<Incoming extends AnyZodObject, Augmentation extends Incoming['shape']>(this: this, other: Incoming): ZodObject<objectUtil.extendShape<T, Augmentation>, Incoming['_def']['unknownKeys'], Incoming['_def']['catchall']>;
24
+ }
25
+ interface ZodString {
26
+ password(): this;
27
+ _addCheck(check: ZodStringCheckAugmented): this;
28
+ }
29
+ }
30
+ export declare const ZodRecord: <KeyType extends string, ZodValueType extends z.ZodTypeAny>(keys: KeyType[], zodValueType: ZodValueType) => z.ZodObject<Record<KeyType, ZodValueType>, "strip", z.ZodTypeAny, objectUtil.addQuestionMarks<z.baseObjectOutputType<Record<KeyType, ZodValueType>>, any> extends infer T ? { [k in keyof T]: objectUtil.addQuestionMarks<z.baseObjectOutputType<Record<KeyType, ZodValueType>>, any>[k]; } : never, z.baseObjectInputType<Record<KeyType, ZodValueType>> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<Record<KeyType, ZodValueType>>[k_1]; } : never>;
31
+ //# sourceMappingURL=zod.extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.extension.d.ts","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,MAAM,KAAK,CAAC;AAGpE,MAAM,MAAM,uBAAuB,GAC/B,cAAc,GACd;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAU,UAAU;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAED,UAAU,YAAY;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;KAC1C;IAED,UAAU,OAAO,CACf,MAAM,GAAG,GAAG,EACZ,GAAG,SAAS,UAAU,GAAG,UAAU,EACnC,KAAK,GAAG,MAAM;QAEd,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB;IAED,UAAU,SAAS,CACjB,CAAC,SAAS,WAAW,EACrB,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EACvD,QAAQ,SAAS,UAAU,GAAG,UAAU,EACxC,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EACnD,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC;QAEjD,KAAK,CACH,QAAQ,SAAS,YAAY,EAC7B,YAAY,SAAS,QAAQ,CAAC,OAAO,CAAC,EAEtC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,QAAQ,GACd,SAAS,CACV,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,EACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAC/B,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAC7B,CAAC;KACH;IAED,UAAU,SAAS;QACjB,QAAQ,IAAI,IAAI,CAAC;QACjB,SAAS,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;KACjD;CACF;AA4CD,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,MAAM,EACtB,YAAY,SAAS,CAAC,CAAC,UAAU,EAEjC,MAAM,OAAO,EAAE,EACf,cAAc,YAAY,8cAUzB,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZodRecord = void 0;
4
+ /* eslint-disable @typescript-eslint/no-unused-vars */
5
+ const zod_1 = require("zod");
6
+ const zod_2 = require("zod");
7
+ const zod_3 = require("zod");
8
+ zod_2.ZodType.prototype.dto = function (name) {
9
+ this._def.schemaName = name;
10
+ return this;
11
+ };
12
+ const originalMerge = zod_3.ZodObject.prototype.merge;
13
+ zod_3.ZodObject.prototype.merge = function (other) {
14
+ const merged = originalMerge.apply(this, [other]);
15
+ merged._def.mergedSchemas = [this, other];
16
+ return merged;
17
+ };
18
+ const originalStringCheck = zod_2.ZodString.prototype._addCheck;
19
+ zod_2.ZodString.prototype._addCheck = function (check) {
20
+ return originalStringCheck.call(this, check);
21
+ };
22
+ zod_2.ZodString.prototype.password = function () {
23
+ return this._addCheck({ kind: 'password' });
24
+ };
25
+ const ZodRecord = (keys, zodValueType) => zod_1.z.object(keys.reduce((agg, k) => (Object.assign(Object.assign({}, agg), { [k]: zodValueType })), {}));
26
+ exports.ZodRecord = ZodRecord;
27
+ //# sourceMappingURL=zod.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.extension.js","sourceRoot":"","sources":["../../src/openapi/zod.extension.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6BAA0D;AAK1D,6BAAoE;AACpE,6BAAgC;AAqDhC,aAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAwC,IAAY;IAC1E,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,eAAS,CAAC,SAAS,CAAC,KAAK,CAAC;AAChD,eAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAM1B,KAAe;IAMf,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAElD,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,eAAS,CAAC,SAAS,CAAC,SAAS,CAAC;AAC1D,eAAS,CAAC,SAAS,CAAC,SAAS,GAAG,UAE9B,KAKK;IAEL,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,eAAS,CAAC,SAAS,CAAC,QAAQ,GAAG;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEK,MAAM,SAAS,GAAG,CAIvB,IAAe,EACf,YAA0B,EAC1B,EAAE,CACF,OAAC,CAAC,MAAM,CACN,IAAI,CAAC,MAAM,CACT,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iCACP,GAAG,KACN,CAAC,CAAC,CAAC,EAAE,YAAY,IACjB,EACF,EAAmC,CACpC,CACF,CAAC;AAfS,QAAA,SAAS,aAelB"}
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "@origins-digital/zod-openapi-utils",
3
+ "version": "0.0.2",
4
+ "description": "Origins Zod OpenAPI Utils",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.d.ts",
7
+ "types": "./dist/index.d.ts",
8
+ "author": "Origins Digital (https://www.origins-digital.com/)",
9
+ "license": "MIT",
10
+ "exports": {
11
+ ".": "./dist/index.js"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
18
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
19
+ "test": "jest --passWithNoTests",
20
+ "test:watch": "jest --watch",
21
+ "test:cov": "jest --coverage",
22
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
23
+ "test:e2e": "jest --config ./test/jest-e2e.json",
24
+ "build": "rimraf dist && tsc",
25
+ "release:patch": "release-it patch --ci",
26
+ "release:minor": "release-it minor --ci",
27
+ "release:major": "release-it major --ci",
28
+ "commit": "git-cz",
29
+ "prepublish": "yarn build"
30
+ },
31
+ "dependencies": {
32
+ "webpack": "^5.88.1"
33
+ },
34
+ "peerDependencies": {
35
+ "zod": ">=3.23.8"
36
+ },
37
+ "devDependencies": {
38
+ "@commitlint/cli": "^17.6.6",
39
+ "@commitlint/config-conventional": "^17.6.6",
40
+ "@faker-js/faker": "^8.3.1",
41
+ "@types/node": "^20.3.1",
42
+ "commitizen": "^4.3.0",
43
+ "conventional-recommended-bump": "^7.0.1",
44
+ "cz-conventional-changelog": "^3.3.0",
45
+ "eslint": "^8.42.0",
46
+ "eslint-config-prettier": "^9.0.0",
47
+ "eslint-plugin-prettier": "^5.0.0",
48
+ "jest": "^29.5.0",
49
+ "prettier": "^3.0.0",
50
+ "rimraf": "^5.0.5",
51
+ "supertest": "^6.3.3",
52
+ "ts-jest": "^29.1.0",
53
+ "ts-loader": "^9.4.3",
54
+ "ts-node": "^10.9.1",
55
+ "tsconfig-paths": "^4.2.0",
56
+ "typescript": "^5.3.2"
57
+ },
58
+ "jest": {
59
+ "moduleFileExtensions": [
60
+ "js",
61
+ "json",
62
+ "ts"
63
+ ],
64
+ "rootDir": "src",
65
+ "testRegex": ".*\\.spec\\.ts$",
66
+ "transform": {
67
+ "^.+\\.(t|j)s$": "ts-jest"
68
+ },
69
+ "collectCoverageFrom": [
70
+ "**/*.(t|j)s"
71
+ ],
72
+ "coverageDirectory": "../coverage",
73
+ "testEnvironment": "node"
74
+ },
75
+ "publishConfig": {
76
+ "registry": "https://registry.npmjs.org",
77
+ "access": "public"
78
+ },
79
+ "release-it": {
80
+ "git": {
81
+ "requireCleanWorkingDir": false,
82
+ "commitMessage": "chore(release): bump zod-openapi-utils ${version}",
83
+ "tagName": "${npm.name}-v${version}",
84
+ "tagAnnotation": "zod-openapi-utils-${version}",
85
+ "push": false,
86
+ "commit": true,
87
+ "addUntrackedFiles": false
88
+ },
89
+ "npm": {
90
+ "publish": true
91
+ },
92
+ "hooks": {
93
+ "before:init": [
94
+ "yarn test",
95
+ "yarn build"
96
+ ]
97
+ }
98
+ }
99
+ }