express-zod-api 9.2.1 → 10.0.0-beta2

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 (183) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +28 -20
  3. package/SECURITY.md +14 -13
  4. package/dist/esm/index.js +58 -0
  5. package/dist/esm/index.js.map +1 -0
  6. package/dist/esm/package.json +1 -0
  7. package/dist/index.d.ts +776 -21
  8. package/dist/index.js +55 -69
  9. package/dist/index.js.map +1 -1
  10. package/package.json +31 -25
  11. package/dist/api-response.d.ts +0 -16
  12. package/dist/api-response.js +0 -3
  13. package/dist/api-response.js.map +0 -1
  14. package/dist/client-helpers.d.ts +0 -23
  15. package/dist/client-helpers.js +0 -71
  16. package/dist/client-helpers.js.map +0 -1
  17. package/dist/client.d.ts +0 -15
  18. package/dist/client.js +0 -120
  19. package/dist/client.js.map +0 -1
  20. package/dist/common-helpers.d.ts +0 -46
  21. package/dist/common-helpers.js +0 -207
  22. package/dist/common-helpers.js.map +0 -1
  23. package/dist/config-type.d.ts +0 -59
  24. package/dist/config-type.js +0 -11
  25. package/dist/config-type.js.map +0 -1
  26. package/dist/date-in-schema.d.ts +0 -11
  27. package/dist/date-in-schema.js +0 -46
  28. package/dist/date-in-schema.js.map +0 -1
  29. package/dist/date-out-schema.d.ts +0 -10
  30. package/dist/date-out-schema.js +0 -31
  31. package/dist/date-out-schema.js.map +0 -1
  32. package/dist/depends-on-method.d.ts +0 -10
  33. package/dist/depends-on-method.js +0 -32
  34. package/dist/depends-on-method.js.map +0 -1
  35. package/dist/endpoint.d.ts +0 -98
  36. package/dist/endpoint.js +0 -261
  37. package/dist/endpoint.js.map +0 -1
  38. package/dist/endpoints-factory.d.ts +0 -161
  39. package/dist/endpoints-factory.js +0 -68
  40. package/dist/endpoints-factory.js.map +0 -1
  41. package/dist/errors.d.ts +0 -35
  42. package/dist/errors.js +0 -64
  43. package/dist/errors.js.map +0 -1
  44. package/dist/extend-zod.d.ts +0 -22
  45. package/dist/extend-zod.js +0 -33
  46. package/dist/extend-zod.js.map +0 -1
  47. package/dist/file-schema.d.ts +0 -23
  48. package/dist/file-schema.js +0 -55
  49. package/dist/file-schema.js.map +0 -1
  50. package/dist/io-schema.d.ts +0 -16
  51. package/dist/io-schema.js +0 -21
  52. package/dist/io-schema.js.map +0 -1
  53. package/dist/logger.d.ts +0 -3
  54. package/dist/logger.js +0 -54
  55. package/dist/logger.js.map +0 -1
  56. package/dist/logical-container.d.ts +0 -16
  57. package/dist/logical-container.js +0 -85
  58. package/dist/logical-container.js.map +0 -1
  59. package/dist/metadata.d.ts +0 -27
  60. package/dist/metadata.js +0 -58
  61. package/dist/metadata.js.map +0 -1
  62. package/dist/method.d.ts +0 -8
  63. package/dist/method.js +0 -5
  64. package/dist/method.js.map +0 -1
  65. package/dist/middleware.d.ts +0 -32
  66. package/dist/middleware.js +0 -16
  67. package/dist/middleware.js.map +0 -1
  68. package/dist/mime.d.ts +0 -2
  69. package/dist/mime.js +0 -10
  70. package/dist/mime.js.map +0 -1
  71. package/dist/mock.d.ts +0 -38
  72. package/dist/mock.js +0 -66
  73. package/dist/mock.js.map +0 -1
  74. package/dist/open-api-helpers.d.ts +0 -83
  75. package/dist/open-api-helpers.js +0 -621
  76. package/dist/open-api-helpers.js.map +0 -1
  77. package/dist/open-api.d.ts +0 -25
  78. package/dist/open-api.js +0 -98
  79. package/dist/open-api.js.map +0 -1
  80. package/dist/result-handler.d.ts +0 -151
  81. package/dist/result-handler.js +0 -71
  82. package/dist/result-handler.js.map +0 -1
  83. package/dist/routing-walker.d.ts +0 -12
  84. package/dist/routing-walker.js +0 -55
  85. package/dist/routing-walker.js.map +0 -1
  86. package/dist/routing.d.ts +0 -15
  87. package/dist/routing.js +0 -25
  88. package/dist/routing.js.map +0 -1
  89. package/dist/schema-walker.d.ts +0 -23
  90. package/dist/schema-walker.js +0 -26
  91. package/dist/schema-walker.js.map +0 -1
  92. package/dist/security.d.ts +0 -72
  93. package/dist/security.js +0 -3
  94. package/dist/security.js.map +0 -1
  95. package/dist/serve-static.d.ts +0 -9
  96. package/dist/serve-static.js +0 -17
  97. package/dist/serve-static.js.map +0 -1
  98. package/dist/server.d.ts +0 -20
  99. package/dist/server.js +0 -131
  100. package/dist/server.js.map +0 -1
  101. package/dist/startup-logo.d.ts +0 -1
  102. package/dist/startup-logo.js +0 -27
  103. package/dist/startup-logo.js.map +0 -1
  104. package/dist/upload-schema.d.ts +0 -11
  105. package/dist/upload-schema.js +0 -42
  106. package/dist/upload-schema.js.map +0 -1
  107. package/dist/zts-helpers.d.ts +0 -37
  108. package/dist/zts-helpers.js +0 -60
  109. package/dist/zts-helpers.js.map +0 -1
  110. package/dist/zts.d.ts +0 -31
  111. package/dist/zts.js +0 -147
  112. package/dist/zts.js.map +0 -1
  113. package/dist-esm/api-response.js +0 -2
  114. package/dist-esm/api-response.js.map +0 -1
  115. package/dist-esm/client-helpers.js +0 -48
  116. package/dist-esm/client-helpers.js.map +0 -1
  117. package/dist-esm/client.js +0 -113
  118. package/dist-esm/client.js.map +0 -1
  119. package/dist-esm/common-helpers.js +0 -188
  120. package/dist-esm/common-helpers.js.map +0 -1
  121. package/dist-esm/config-type.js +0 -7
  122. package/dist-esm/config-type.js.map +0 -1
  123. package/dist-esm/date-in-schema.js +0 -42
  124. package/dist-esm/date-in-schema.js.map +0 -1
  125. package/dist-esm/date-out-schema.js +0 -27
  126. package/dist-esm/date-out-schema.js.map +0 -1
  127. package/dist-esm/depends-on-method.js +0 -28
  128. package/dist-esm/depends-on-method.js.map +0 -1
  129. package/dist-esm/endpoint.js +0 -256
  130. package/dist-esm/endpoint.js.map +0 -1
  131. package/dist-esm/endpoints-factory.js +0 -64
  132. package/dist-esm/endpoints-factory.js.map +0 -1
  133. package/dist-esm/errors.js +0 -54
  134. package/dist-esm/errors.js.map +0 -1
  135. package/dist-esm/extend-zod.js +0 -16
  136. package/dist-esm/extend-zod.js.map +0 -1
  137. package/dist-esm/file-schema.js +0 -51
  138. package/dist-esm/file-schema.js.map +0 -1
  139. package/dist-esm/index.js +0 -19
  140. package/dist-esm/index.js.map +0 -1
  141. package/dist-esm/io-schema.js +0 -17
  142. package/dist-esm/io-schema.js.map +0 -1
  143. package/dist-esm/logger.js +0 -47
  144. package/dist-esm/logger.js.map +0 -1
  145. package/dist-esm/logical-container.js +0 -78
  146. package/dist-esm/logical-container.js.map +0 -1
  147. package/dist-esm/metadata.js +0 -51
  148. package/dist-esm/metadata.js.map +0 -1
  149. package/dist-esm/method.js +0 -2
  150. package/dist-esm/method.js.map +0 -1
  151. package/dist-esm/middleware.js +0 -12
  152. package/dist-esm/middleware.js.map +0 -1
  153. package/dist-esm/mime.js +0 -4
  154. package/dist-esm/mime.js.map +0 -1
  155. package/dist-esm/mock.js +0 -57
  156. package/dist-esm/mock.js.map +0 -1
  157. package/dist-esm/open-api-helpers.js +0 -575
  158. package/dist-esm/open-api-helpers.js.map +0 -1
  159. package/dist-esm/open-api.js +0 -94
  160. package/dist-esm/open-api.js.map +0 -1
  161. package/dist-esm/package.json +0 -1
  162. package/dist-esm/result-handler.js +0 -66
  163. package/dist-esm/result-handler.js.map +0 -1
  164. package/dist-esm/routing-walker.js +0 -51
  165. package/dist-esm/routing-walker.js.map +0 -1
  166. package/dist-esm/routing.js +0 -21
  167. package/dist-esm/routing.js.map +0 -1
  168. package/dist-esm/schema-walker.js +0 -22
  169. package/dist-esm/schema-walker.js.map +0 -1
  170. package/dist-esm/security.js +0 -2
  171. package/dist-esm/security.js.map +0 -1
  172. package/dist-esm/serve-static.js +0 -10
  173. package/dist-esm/serve-static.js.map +0 -1
  174. package/dist-esm/server.js +0 -98
  175. package/dist-esm/server.js.map +0 -1
  176. package/dist-esm/startup-logo.js +0 -23
  177. package/dist-esm/startup-logo.js.map +0 -1
  178. package/dist-esm/upload-schema.js +0 -38
  179. package/dist-esm/upload-schema.js.map +0 -1
  180. package/dist-esm/zts-helpers.js +0 -50
  181. package/dist-esm/zts-helpers.js.map +0 -1
  182. package/dist-esm/zts.js +0 -140
  183. package/dist-esm/zts.js.map +0 -1
@@ -1,621 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureShortDescription = exports.depictTags = exports.depictRequest = exports.depictSecurityRefs = exports.depictSecurity = exports.depictResponse = exports.excludeExampleFromDepiction = exports.excludeParamsFromDepiction = exports.onMissing = exports.onEach = exports.depicters = exports.depictRequestParams = exports.extractObjectSchema = exports.depictParamExamples = exports.depictExamples = exports.depictBranded = exports.depictPipeline = exports.depictEffect = exports.depictObjectProperties = exports.depictNumber = exports.depictString = exports.depictTuple = exports.depictArray = exports.depictRecord = exports.depictBigInt = exports.depictBoolean = exports.depictDate = exports.depictDateOut = exports.depictDateIn = exports.depictNull = exports.depictObject = exports.depictLiteral = exports.depictEnum = exports.depictNullable = exports.depictOptional = exports.depictIntersection = exports.depictDiscriminatedUnion = exports.depictUnion = exports.depictFile = exports.depictUpload = exports.depictAny = exports.depictCatch = exports.depictDefault = exports.reformatParamsInPath = void 0;
4
- const ramda_1 = require("ramda");
5
- const zod_1 = require("zod");
6
- const common_helpers_1 = require("./common-helpers");
7
- const date_in_schema_1 = require("./date-in-schema");
8
- const errors_1 = require("./errors");
9
- const logical_container_1 = require("./logical-container");
10
- const metadata_1 = require("./metadata");
11
- const schema_walker_1 = require("./schema-walker");
12
- const shortDescriptionLimit = 50;
13
- const isoDateDocumentationUrl = "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString";
14
- const samples = {
15
- integer: 0,
16
- number: 0,
17
- string: "",
18
- boolean: false,
19
- object: {},
20
- null: null,
21
- array: [],
22
- };
23
- /* eslint-disable @typescript-eslint/no-use-before-define */
24
- const reformatParamsInPath = (path) => path.replace(common_helpers_1.routePathParamsRegex, (param) => `{${param.slice(1)}}`);
25
- exports.reformatParamsInPath = reformatParamsInPath;
26
- const depictDefault = ({ schema: { _def: { innerType, defaultValue }, }, next, }) => ({
27
- ...next({ schema: innerType }),
28
- default: defaultValue(),
29
- });
30
- exports.depictDefault = depictDefault;
31
- const depictCatch = ({ schema: { _def: { innerType }, }, next, }) => next({ schema: innerType });
32
- exports.depictCatch = depictCatch;
33
- const depictAny = () => ({
34
- format: "any",
35
- });
36
- exports.depictAny = depictAny;
37
- const depictUpload = ({ isResponse }) => {
38
- if (isResponse) {
39
- throw new errors_1.OpenAPIError("Please use z.upload() only for input.");
40
- }
41
- return {
42
- type: "string",
43
- format: "binary",
44
- };
45
- };
46
- exports.depictUpload = depictUpload;
47
- const depictFile = ({ schema: { isBinary, isBase64 }, isResponse, }) => {
48
- if (!isResponse) {
49
- throw new errors_1.OpenAPIError("Please use z.file() only within ResultHandler.");
50
- }
51
- return {
52
- type: "string",
53
- format: isBinary ? "binary" : isBase64 ? "byte" : "file",
54
- };
55
- };
56
- exports.depictFile = depictFile;
57
- const depictUnion = ({ schema: { options }, next }) => ({
58
- oneOf: options.map((option) => next({ schema: option })),
59
- });
60
- exports.depictUnion = depictUnion;
61
- const depictDiscriminatedUnion = ({ schema: { options, discriminator }, next }) => {
62
- return {
63
- discriminator: { propertyName: discriminator },
64
- oneOf: Array.from(options.values()).map((option) => next({ schema: option })),
65
- };
66
- };
67
- exports.depictDiscriminatedUnion = depictDiscriminatedUnion;
68
- const depictIntersection = ({ schema: { _def: { left, right }, }, next, }) => ({
69
- allOf: [left, right].map((entry) => next({ schema: entry })),
70
- });
71
- exports.depictIntersection = depictIntersection;
72
- const depictOptional = ({ schema, next, }) => next({ schema: schema.unwrap() });
73
- exports.depictOptional = depictOptional;
74
- const depictNullable = ({ schema, next, }) => ({
75
- nullable: true,
76
- ...next({ schema: schema.unwrap() }),
77
- });
78
- exports.depictNullable = depictNullable;
79
- const depictEnum = ({ schema, }) => ({
80
- type: typeof Object.values(schema.enum)[0],
81
- enum: Object.values(schema.enum),
82
- });
83
- exports.depictEnum = depictEnum;
84
- const depictLiteral = ({ schema: { value }, }) => ({
85
- type: typeof value,
86
- enum: [value],
87
- });
88
- exports.depictLiteral = depictLiteral;
89
- const depictObject = ({ schema, isResponse, next, }) => {
90
- const required = Object.keys(schema.shape).filter((key) => {
91
- const prop = schema.shape[key];
92
- const isOptional = isResponse && (0, common_helpers_1.hasCoercion)(prop)
93
- ? prop instanceof zod_1.z.ZodOptional
94
- : prop.isOptional();
95
- return !isOptional;
96
- });
97
- return {
98
- type: "object",
99
- properties: (0, exports.depictObjectProperties)({ schema, isResponse, next }),
100
- ...(required.length ? { required } : {}),
101
- };
102
- };
103
- exports.depictObject = depictObject;
104
- /**
105
- * @see https://swagger.io/docs/specification/data-models/data-types/
106
- * @todo use type:"null" for OpenAPI 3.1
107
- * */
108
- const depictNull = () => ({
109
- type: "string",
110
- nullable: true,
111
- format: "null",
112
- });
113
- exports.depictNull = depictNull;
114
- const depictDateIn = ({ isResponse }) => {
115
- if (isResponse) {
116
- throw new errors_1.OpenAPIError("Please use z.dateOut() for output.");
117
- }
118
- return {
119
- description: "YYYY-MM-DDTHH:mm:ss.sssZ",
120
- type: "string",
121
- format: "date-time",
122
- pattern: date_in_schema_1.isoDateRegex.source,
123
- externalDocs: {
124
- url: isoDateDocumentationUrl,
125
- },
126
- };
127
- };
128
- exports.depictDateIn = depictDateIn;
129
- const depictDateOut = ({ isResponse }) => {
130
- if (!isResponse) {
131
- throw new errors_1.OpenAPIError("Please use z.dateIn() for input.");
132
- }
133
- return {
134
- description: "YYYY-MM-DDTHH:mm:ss.sssZ",
135
- type: "string",
136
- format: "date-time",
137
- externalDocs: {
138
- url: isoDateDocumentationUrl,
139
- },
140
- };
141
- };
142
- exports.depictDateOut = depictDateOut;
143
- /** @throws OpenAPIError */
144
- const depictDate = ({ isResponse }) => {
145
- throw new errors_1.OpenAPIError(`Using z.date() within ${isResponse ? "output" : "input"} schema is forbidden. Please use z.date${isResponse ? "Out" : "In"}() instead. Check out the documentation for details.`);
146
- };
147
- exports.depictDate = depictDate;
148
- const depictBoolean = () => ({
149
- type: "boolean",
150
- });
151
- exports.depictBoolean = depictBoolean;
152
- const depictBigInt = () => ({
153
- type: "integer",
154
- format: "bigint",
155
- });
156
- exports.depictBigInt = depictBigInt;
157
- const depictRecord = ({ schema: { keySchema, valueSchema }, isResponse, next, }) => {
158
- if (keySchema instanceof zod_1.z.ZodEnum || keySchema instanceof zod_1.z.ZodNativeEnum) {
159
- const keys = Object.values(keySchema.enum);
160
- const shape = keys.reduce((carry, key) => ({
161
- ...carry,
162
- [key]: valueSchema,
163
- }), {});
164
- return {
165
- type: "object",
166
- properties: (0, exports.depictObjectProperties)({
167
- schema: zod_1.z.object(shape),
168
- isResponse,
169
- next,
170
- }),
171
- ...(keys.length ? { required: keys } : {}),
172
- };
173
- }
174
- if (keySchema instanceof zod_1.z.ZodLiteral) {
175
- return {
176
- type: "object",
177
- properties: (0, exports.depictObjectProperties)({
178
- schema: zod_1.z.object({
179
- [keySchema.value]: valueSchema,
180
- }),
181
- isResponse,
182
- next,
183
- }),
184
- required: [keySchema.value],
185
- };
186
- }
187
- if (keySchema instanceof zod_1.z.ZodUnion) {
188
- const areOptionsLiteral = keySchema.options.reduce((carry, option) => carry && option instanceof zod_1.z.ZodLiteral, true);
189
- if (areOptionsLiteral) {
190
- const shape = keySchema.options.reduce((carry, option) => ({
191
- ...carry,
192
- [option.value]: valueSchema,
193
- }), {});
194
- return {
195
- type: "object",
196
- properties: (0, exports.depictObjectProperties)({
197
- schema: zod_1.z.object(shape),
198
- isResponse,
199
- next,
200
- }),
201
- required: keySchema.options.map((option) => option.value),
202
- };
203
- }
204
- }
205
- return {
206
- type: "object",
207
- additionalProperties: next({ schema: valueSchema }),
208
- };
209
- };
210
- exports.depictRecord = depictRecord;
211
- const depictArray = ({ schema: { _def: def, element }, next, }) => ({
212
- type: "array",
213
- items: next({ schema: element }),
214
- ...(def.minLength !== null && { minItems: def.minLength.value }),
215
- ...(def.maxLength !== null && { maxItems: def.maxLength.value }),
216
- });
217
- exports.depictArray = depictArray;
218
- /** @todo improve it when OpenAPI 3.1.0 will be released */
219
- const depictTuple = ({ schema: { items }, next, }) => {
220
- const types = items.map((item) => next({ schema: item }));
221
- return {
222
- type: "array",
223
- minItems: types.length,
224
- maxItems: types.length,
225
- items: {
226
- oneOf: types,
227
- format: "tuple",
228
- ...(types.length > 0 && {
229
- description: types
230
- .map((item, index) => `${index}: ${item.type}`)
231
- .join(", "),
232
- }),
233
- },
234
- };
235
- };
236
- exports.depictTuple = depictTuple;
237
- const depictString = ({ schema: { isEmail, isURL, minLength, maxLength, isUUID, isCUID, isCUID2, isULID, isIP, isEmoji, isDatetime, _def: { checks }, }, }) => {
238
- const regexCheck = checks.find((check) => check.kind === "regex");
239
- const datetimeCheck = checks.find((check) => check.kind === "datetime");
240
- const regex = regexCheck
241
- ? regexCheck.regex
242
- : datetimeCheck
243
- ? datetimeCheck.offset
244
- ? new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}:\\d{2})|Z)$`)
245
- : new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$`)
246
- : undefined;
247
- return {
248
- type: "string",
249
- ...(isDatetime && { format: "date-time" }),
250
- ...(isEmail && { format: "email" }),
251
- ...(isURL && { format: "url" }),
252
- ...(isUUID && { format: "uuid" }),
253
- ...(isCUID && { format: "cuid" }),
254
- ...(isCUID2 && { format: "cuid2" }),
255
- ...(isULID && { format: "ulid" }),
256
- ...(isIP && { format: "ip" }),
257
- ...(isEmoji && { format: "emoji" }),
258
- ...(minLength !== null && { minLength }),
259
- ...(maxLength !== null && { maxLength }),
260
- ...(regex && { pattern: `/${regex.source}/${regex.flags}` }),
261
- };
262
- };
263
- exports.depictString = depictString;
264
- /** @todo support exclusive min/max as numbers in case of OpenAPI v3.1.x */
265
- const depictNumber = ({ schema }) => {
266
- const minCheck = schema._def.checks.find(({ kind }) => kind === "min");
267
- const isMinInclusive = minCheck ? minCheck.inclusive : true;
268
- const maxCheck = schema._def.checks.find(({ kind }) => kind === "max");
269
- const isMaxInclusive = maxCheck ? maxCheck.inclusive : true;
270
- return {
271
- type: schema.isInt ? "integer" : "number",
272
- format: schema.isInt ? "int64" : "double",
273
- minimum: schema.minValue === null
274
- ? schema.isInt
275
- ? Number.MIN_SAFE_INTEGER
276
- : Number.MIN_VALUE
277
- : schema.minValue,
278
- exclusiveMinimum: !isMinInclusive,
279
- maximum: schema.maxValue === null
280
- ? schema.isInt
281
- ? Number.MAX_SAFE_INTEGER
282
- : Number.MAX_VALUE
283
- : schema.maxValue,
284
- exclusiveMaximum: !isMaxInclusive,
285
- };
286
- };
287
- exports.depictNumber = depictNumber;
288
- const depictObjectProperties = ({ schema: { shape }, next, }) => {
289
- return Object.keys(shape).reduce((carry, key) => ({
290
- ...carry,
291
- [key]: next({ schema: shape[key] }),
292
- }), {});
293
- };
294
- exports.depictObjectProperties = depictObjectProperties;
295
- const makeSample = (depicted) => {
296
- const type = (Array.isArray(depicted.type) ? depicted.type[0] : depicted.type);
297
- return samples?.[type];
298
- };
299
- const depictEffect = ({ schema, isResponse, next, }) => {
300
- const input = next({ schema: schema.innerType() });
301
- const { effect } = schema._def;
302
- if (isResponse && effect.type === "transform") {
303
- const outputType = (0, common_helpers_1.tryToTransform)({ effect, sample: makeSample(input) });
304
- if (outputType && ["number", "string", "boolean"].includes(outputType)) {
305
- return { type: outputType };
306
- }
307
- else {
308
- return next({ schema: zod_1.z.any() });
309
- }
310
- }
311
- if (!isResponse && effect.type === "preprocess") {
312
- const { type: inputType, ...rest } = input;
313
- return {
314
- ...rest,
315
- format: `${rest.format || inputType} (preprocessed)`,
316
- };
317
- }
318
- return input;
319
- };
320
- exports.depictEffect = depictEffect;
321
- const depictPipeline = ({ schema, isResponse, next, }) => next({ schema: schema._def[isResponse ? "out" : "in"] });
322
- exports.depictPipeline = depictPipeline;
323
- const depictBranded = ({ schema, next, }) => next({ schema: schema.unwrap() });
324
- exports.depictBranded = depictBranded;
325
- const depictExamples = (schema, isResponse, omitProps = []) => {
326
- const examples = (0, common_helpers_1.getExamples)(schema, isResponse);
327
- if (examples.length === 0) {
328
- return {};
329
- }
330
- return {
331
- examples: examples.reduce((carry, example, index) => ({
332
- ...carry,
333
- [`example${index + 1}`]: {
334
- value: (0, ramda_1.omit)(omitProps, example),
335
- },
336
- }), {}),
337
- };
338
- };
339
- exports.depictExamples = depictExamples;
340
- const depictParamExamples = (schema, isResponse, param) => {
341
- const examples = (0, common_helpers_1.getExamples)(schema, isResponse);
342
- if (examples.length === 0) {
343
- return {};
344
- }
345
- return {
346
- examples: examples.reduce((carry, example, index) => param in example
347
- ? {
348
- ...carry,
349
- [`example${index + 1}`]: {
350
- value: example[param],
351
- },
352
- }
353
- : carry, {}),
354
- };
355
- };
356
- exports.depictParamExamples = depictParamExamples;
357
- function extractObjectSchema(subject) {
358
- if (subject instanceof zod_1.z.ZodObject) {
359
- return subject;
360
- }
361
- let objectSchema;
362
- if (subject instanceof zod_1.z.ZodUnion ||
363
- subject instanceof zod_1.z.ZodDiscriminatedUnion) {
364
- objectSchema = Array.from(subject.options.values())
365
- .map((option) => extractObjectSchema(option))
366
- .reduce((acc, option) => acc.merge(option.partial()), zod_1.z.object({}));
367
- }
368
- else if (subject instanceof zod_1.z.ZodEffects) {
369
- if ((0, common_helpers_1.hasTopLevelTransformingEffect)(subject)) {
370
- throw new errors_1.OpenAPIError("Using transformations on the top level of input schema is not allowed.");
371
- }
372
- objectSchema = extractObjectSchema(subject._def.schema); // object refinement
373
- }
374
- else {
375
- // intersection
376
- objectSchema = extractObjectSchema(subject._def.left).merge(extractObjectSchema(subject._def.right));
377
- }
378
- return (0, metadata_1.copyMeta)(subject, objectSchema);
379
- }
380
- exports.extractObjectSchema = extractObjectSchema;
381
- const depictRequestParams = ({ path, method, endpoint, inputSources, }) => {
382
- const schema = endpoint.getSchema("input");
383
- const shape = extractObjectSchema(schema).shape;
384
- const pathParams = (0, common_helpers_1.getRoutePathParams)(path);
385
- const isQueryEnabled = inputSources.includes("query");
386
- const isParamsEnabled = inputSources.includes("params");
387
- const isPathParam = (name) => isParamsEnabled && pathParams.includes(name);
388
- return Object.keys(shape)
389
- .filter((name) => isQueryEnabled || isPathParam(name))
390
- .map((name) => ({
391
- name,
392
- in: isPathParam(name) ? "path" : "query",
393
- required: !shape[name].isOptional(),
394
- schema: {
395
- description: `${method.toUpperCase()} ${path} parameter`,
396
- ...(0, schema_walker_1.walkSchema)({
397
- schema: shape[name],
398
- isResponse: false,
399
- rules: exports.depicters,
400
- onEach: exports.onEach,
401
- onMissing: exports.onMissing,
402
- }),
403
- },
404
- ...(0, exports.depictParamExamples)(schema, false, name),
405
- }));
406
- };
407
- exports.depictRequestParams = depictRequestParams;
408
- exports.depicters = {
409
- ZodString: exports.depictString,
410
- ZodNumber: exports.depictNumber,
411
- ZodBigInt: exports.depictBigInt,
412
- ZodBoolean: exports.depictBoolean,
413
- ZodDateIn: exports.depictDateIn,
414
- ZodDateOut: exports.depictDateOut,
415
- ZodNull: exports.depictNull,
416
- ZodArray: exports.depictArray,
417
- ZodTuple: exports.depictTuple,
418
- ZodRecord: exports.depictRecord,
419
- ZodObject: exports.depictObject,
420
- ZodLiteral: exports.depictLiteral,
421
- ZodIntersection: exports.depictIntersection,
422
- ZodUnion: exports.depictUnion,
423
- ZodFile: exports.depictFile,
424
- ZodUpload: exports.depictUpload,
425
- ZodAny: exports.depictAny,
426
- ZodDefault: exports.depictDefault,
427
- ZodEnum: exports.depictEnum,
428
- ZodNativeEnum: exports.depictEnum,
429
- ZodEffects: exports.depictEffect,
430
- ZodOptional: exports.depictOptional,
431
- ZodNullable: exports.depictNullable,
432
- ZodDiscriminatedUnion: exports.depictDiscriminatedUnion,
433
- ZodBranded: exports.depictBranded,
434
- ZodDate: exports.depictDate,
435
- ZodCatch: exports.depictCatch,
436
- ZodPipeline: exports.depictPipeline,
437
- };
438
- const onEach = ({ schema, isResponse, }) => {
439
- const { description } = schema;
440
- const examples = (0, common_helpers_1.getExamples)(schema, isResponse);
441
- return {
442
- ...(description && { description }),
443
- ...(schema.isNullable() &&
444
- !(isResponse && (0, common_helpers_1.hasCoercion)(schema)) && { nullable: true }),
445
- ...(examples.length > 0 && { example: examples[0] }),
446
- };
447
- };
448
- exports.onEach = onEach;
449
- const onMissing = (schema) => {
450
- throw new errors_1.OpenAPIError(`Zod type ${schema.constructor.name} is unsupported`);
451
- };
452
- exports.onMissing = onMissing;
453
- const excludeParamsFromDepiction = (depicted, pathParams) => {
454
- const properties = depicted.properties
455
- ? (0, ramda_1.omit)(pathParams, depicted.properties)
456
- : undefined;
457
- const example = depicted.example
458
- ? (0, ramda_1.omit)(pathParams, depicted.example)
459
- : undefined;
460
- const required = depicted.required
461
- ? depicted.required.filter((name) => !pathParams.includes(name))
462
- : undefined;
463
- const allOf = depicted.allOf
464
- ? depicted.allOf.map((entry) => (0, exports.excludeParamsFromDepiction)(entry, pathParams))
465
- : undefined;
466
- const oneOf = depicted.oneOf
467
- ? depicted.oneOf.map((entry) => (0, exports.excludeParamsFromDepiction)(entry, pathParams))
468
- : undefined;
469
- return (0, ramda_1.omit)(Object.entries({ properties, required, example, allOf, oneOf })
470
- .filter(([{}, value]) => value === undefined)
471
- .map(([key]) => key), {
472
- ...depicted,
473
- properties,
474
- required,
475
- example,
476
- allOf,
477
- oneOf,
478
- });
479
- };
480
- exports.excludeParamsFromDepiction = excludeParamsFromDepiction;
481
- const excludeExampleFromDepiction = (depicted) => (0, ramda_1.omit)(["example"], depicted);
482
- exports.excludeExampleFromDepiction = excludeExampleFromDepiction;
483
- const depictResponse = ({ method, path, description, endpoint, isPositive, }) => {
484
- const schema = isPositive
485
- ? endpoint.getSchema("positive")
486
- : endpoint.getSchema("negative");
487
- const mimeTypes = isPositive
488
- ? endpoint.getMimeTypes("positive")
489
- : endpoint.getMimeTypes("negative");
490
- const depictedSchema = (0, exports.excludeExampleFromDepiction)((0, schema_walker_1.walkSchema)({
491
- schema,
492
- isResponse: true,
493
- rules: exports.depicters,
494
- onEach: exports.onEach,
495
- onMissing: exports.onMissing,
496
- }));
497
- const examples = (0, exports.depictExamples)(schema, true);
498
- return {
499
- description: `${method.toUpperCase()} ${path} ${description}`,
500
- content: mimeTypes.reduce((carry, mimeType) => ({
501
- ...carry,
502
- [mimeType]: {
503
- schema: depictedSchema,
504
- ...examples,
505
- },
506
- }), {}),
507
- };
508
- };
509
- exports.depictResponse = depictResponse;
510
- const depictBasicSecurity = () => ({
511
- type: "http",
512
- scheme: "basic",
513
- });
514
- const depictBearerSecurity = ({ format: bearerFormat, }) => ({
515
- type: "http",
516
- scheme: "bearer",
517
- ...(bearerFormat && { bearerFormat }),
518
- });
519
- // @todo add description on actual input placement
520
- const depictInputSecurity = ({ name }) => ({
521
- type: "apiKey",
522
- in: "query",
523
- name,
524
- });
525
- const depictHeaderSecurity = ({ name }) => ({
526
- type: "apiKey",
527
- in: "header",
528
- name,
529
- });
530
- const depictCookieSecurity = ({ name }) => ({
531
- type: "apiKey",
532
- in: "cookie",
533
- name,
534
- });
535
- const depictOpenIdSecurity = ({ url: openIdConnectUrl, }) => ({
536
- type: "openIdConnect",
537
- openIdConnectUrl,
538
- });
539
- const depictOAuth2Security = ({ flows = {} }) => ({
540
- type: "oauth2",
541
- flows: Object.keys(flows).reduce((acc, key) => {
542
- const flow = flows[key];
543
- if (!flow) {
544
- return acc;
545
- }
546
- const { scopes = {}, ...rest } = flow;
547
- return { ...acc, [key]: { ...rest, scopes } };
548
- }, {}),
549
- });
550
- const depictSecurity = (container) => {
551
- const methods = {
552
- basic: depictBasicSecurity,
553
- bearer: depictBearerSecurity,
554
- input: depictInputSecurity,
555
- header: depictHeaderSecurity,
556
- cookie: depictCookieSecurity,
557
- openid: depictOpenIdSecurity,
558
- oauth2: depictOAuth2Security,
559
- };
560
- return (0, logical_container_1.mapLogicalContainer)(container, (security) => methods[security.type](security));
561
- };
562
- exports.depictSecurity = depictSecurity;
563
- const depictSecurityRefs = (container) => {
564
- if (typeof container === "object") {
565
- if ("or" in container) {
566
- return container.or.map((entry) => ("and" in entry
567
- ? entry.and
568
- : [entry]).reduce((agg, { name, scopes }) => ({
569
- ...agg,
570
- [name]: scopes,
571
- }), {}));
572
- }
573
- if ("and" in container) {
574
- return (0, exports.depictSecurityRefs)((0, logical_container_1.andToOr)(container));
575
- }
576
- }
577
- return (0, exports.depictSecurityRefs)({ or: [container] });
578
- };
579
- exports.depictSecurityRefs = depictSecurityRefs;
580
- const depictRequest = ({ method, path, endpoint, }) => {
581
- const pathParams = (0, common_helpers_1.getRoutePathParams)(path);
582
- const bodyDepiction = (0, exports.excludeExampleFromDepiction)((0, exports.excludeParamsFromDepiction)((0, schema_walker_1.walkSchema)({
583
- schema: endpoint.getSchema("input"),
584
- isResponse: false,
585
- rules: exports.depicters,
586
- onEach: exports.onEach,
587
- onMissing: exports.onMissing,
588
- }), pathParams));
589
- const bodyExamples = (0, exports.depictExamples)(endpoint.getSchema("input"), false, pathParams);
590
- return {
591
- content: endpoint.getMimeTypes("input").reduce((carry, mimeType) => ({
592
- ...carry,
593
- [mimeType]: {
594
- schema: {
595
- description: `${method.toUpperCase()} ${path} request body`,
596
- ...bodyDepiction,
597
- },
598
- ...bodyExamples,
599
- },
600
- }), {}),
601
- };
602
- };
603
- exports.depictRequest = depictRequest;
604
- const depictTags = (tags) => Object.keys(tags).map((tag) => {
605
- const def = tags[tag];
606
- return {
607
- name: tag,
608
- description: typeof def === "string" ? def : def.description,
609
- ...(typeof def === "object" &&
610
- def.url && { externalDocs: { url: def.url } }),
611
- };
612
- });
613
- exports.depictTags = depictTags;
614
- const ensureShortDescription = (description) => {
615
- if (description.length <= shortDescriptionLimit) {
616
- return description;
617
- }
618
- return description.slice(0, shortDescriptionLimit - 1) + "…";
619
- };
620
- exports.ensureShortDescription = ensureShortDescription;
621
- //# sourceMappingURL=open-api-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-api-helpers.js","sourceRoot":"","sources":["../src/open-api-helpers.ts"],"names":[],"mappings":"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"}