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
package/dist-esm/zts.js DELETED
@@ -1,140 +0,0 @@
1
- /**
2
- * This file is based on https://github.com/sachinraja/zod-to-ts
3
- *
4
- * MIT License
5
- *
6
- * Copyright (c) 2021 Sachin Raja
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
10
- * in the Software without restriction, including without limitation the rights
11
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
- * copies of the Software, and to permit persons to whom the Software is
13
- * furnished to do so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
- * SOFTWARE.
25
- */
26
- import ts from "typescript";
27
- import { z } from "zod";
28
- import { hasCoercion, tryToTransform } from "./common-helpers.js";
29
- import { walkSchema } from "./schema-walker.js";
30
- import { addJsDocComment, makePropertyIdentifier, } from "./zts-helpers.js";
31
- const { factory: f } = ts;
32
- const samples = {
33
- [ts.SyntaxKind.AnyKeyword]: "",
34
- [ts.SyntaxKind.BigIntKeyword]: BigInt(0),
35
- [ts.SyntaxKind.BooleanKeyword]: false,
36
- [ts.SyntaxKind.NumberKeyword]: 0,
37
- [ts.SyntaxKind.ObjectKeyword]: {},
38
- [ts.SyntaxKind.StringKeyword]: "",
39
- [ts.SyntaxKind.UndefinedKeyword]: undefined,
40
- };
41
- const onLiteral = ({ schema: { value }, }) => f.createLiteralTypeNode(typeof value === "number"
42
- ? f.createNumericLiteral(value)
43
- : typeof value === "boolean"
44
- ? value
45
- ? f.createTrue()
46
- : f.createFalse()
47
- : f.createStringLiteral(value));
48
- const onObject = ({ schema: { shape }, isResponse, next, }) => {
49
- const members = Object.entries(shape).map(([key, value]) => {
50
- const isOptional = isResponse && hasCoercion(value)
51
- ? value instanceof z.ZodOptional
52
- : value.isOptional();
53
- const propertySignature = f.createPropertySignature(undefined, makePropertyIdentifier(key), isOptional ? f.createToken(ts.SyntaxKind.QuestionToken) : undefined, next({ schema: value }));
54
- if (value.description) {
55
- addJsDocComment(propertySignature, value.description);
56
- }
57
- return propertySignature;
58
- });
59
- return f.createTypeLiteralNode(members);
60
- };
61
- const onArray = ({ schema: { element }, next, }) => f.createArrayTypeNode(next({ schema: element }));
62
- const onEnum = ({ schema: { options }, }) => f.createUnionTypeNode(options.map((option) => f.createLiteralTypeNode(f.createStringLiteral(option))));
63
- const onSomeUnion = ({ schema: { options }, next }) => f.createUnionTypeNode(options.map((option) => next({ schema: option })));
64
- const makeSample = (produced) => samples?.[produced.kind];
65
- const onEffects = ({ schema, next, isResponse, }) => {
66
- const input = next({ schema: schema.innerType() });
67
- const effect = schema._def.effect;
68
- if (isResponse && effect.type === "transform") {
69
- const outputType = tryToTransform({ effect, sample: makeSample(input) });
70
- const resolutions = {
71
- number: ts.SyntaxKind.NumberKeyword,
72
- bigint: ts.SyntaxKind.BigIntKeyword,
73
- boolean: ts.SyntaxKind.BooleanKeyword,
74
- string: ts.SyntaxKind.StringKeyword,
75
- undefined: ts.SyntaxKind.UndefinedKeyword,
76
- object: ts.SyntaxKind.ObjectKeyword,
77
- };
78
- return f.createKeywordTypeNode((outputType && resolutions[outputType]) || ts.SyntaxKind.AnyKeyword);
79
- }
80
- return input;
81
- };
82
- const onNativeEnum = ({ schema }) => f.createUnionTypeNode(Object.values(schema.enum).map((value) => f.createLiteralTypeNode(typeof value === "number"
83
- ? f.createNumericLiteral(value)
84
- : f.createStringLiteral(value))));
85
- const onOptional = ({ next, schema }) => f.createUnionTypeNode([
86
- next({ schema: schema.unwrap() }),
87
- f.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),
88
- ]);
89
- const onNullable = ({ next, schema }) => f.createUnionTypeNode([
90
- next({ schema: schema.unwrap() }),
91
- f.createLiteralTypeNode(f.createNull()),
92
- ]);
93
- const onTuple = ({ next, schema: { items } }) => f.createTupleTypeNode(items.map((option) => next({ schema: option })));
94
- const onRecord = ({ next, schema: { keySchema, valueSchema }, }) => f.createExpressionWithTypeArguments(f.createIdentifier("Record"), [
95
- next({ schema: keySchema }),
96
- next({ schema: valueSchema }),
97
- ]);
98
- const onIntersection = ({ next, schema }) => f.createIntersectionTypeNode([schema._def.left, schema._def.right].map((entry) => next({ schema: entry })));
99
- const onDefault = ({ next, schema }) => next({ schema: schema._def.innerType });
100
- const onPrimitive = (syntaxKind) => () => f.createKeywordTypeNode(syntaxKind);
101
- const onBranded = ({ next, schema, }) => next({ schema: schema.unwrap() });
102
- const onCatch = ({ next, schema }) => next({ schema: schema._def.innerType });
103
- const onPipeline = ({ schema, next, isResponse, }) => next({ schema: schema._def[isResponse ? "out" : "in"] });
104
- const onNull = () => f.createLiteralTypeNode(f.createNull());
105
- const producers = {
106
- ZodString: onPrimitive(ts.SyntaxKind.StringKeyword),
107
- ZodNumber: onPrimitive(ts.SyntaxKind.NumberKeyword),
108
- ZodBigInt: onPrimitive(ts.SyntaxKind.BigIntKeyword),
109
- ZodBoolean: onPrimitive(ts.SyntaxKind.BooleanKeyword),
110
- ZodDateIn: onPrimitive(ts.SyntaxKind.StringKeyword),
111
- ZodDateOut: onPrimitive(ts.SyntaxKind.StringKeyword),
112
- ZodNull: onNull,
113
- ZodArray: onArray,
114
- ZodTuple: onTuple,
115
- ZodRecord: onRecord,
116
- ZodObject: onObject,
117
- ZodLiteral: onLiteral,
118
- ZodIntersection: onIntersection,
119
- ZodUnion: onSomeUnion,
120
- ZodFile: onPrimitive(ts.SyntaxKind.StringKeyword),
121
- // ZodUpload:
122
- ZodAny: onPrimitive(ts.SyntaxKind.AnyKeyword),
123
- ZodDefault: onDefault,
124
- ZodEnum: onEnum,
125
- ZodNativeEnum: onNativeEnum,
126
- ZodEffects: onEffects,
127
- ZodOptional: onOptional,
128
- ZodNullable: onNullable,
129
- ZodDiscriminatedUnion: onSomeUnion,
130
- ZodBranded: onBranded,
131
- ZodCatch: onCatch,
132
- ZodPipeline: onPipeline,
133
- };
134
- export const zodToTs = ({ schema, ...context }) => walkSchema({
135
- schema,
136
- rules: producers,
137
- onMissing: () => f.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
138
- ...context,
139
- });
140
- //# sourceMappingURL=zts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zts.js","sourceRoot":"","sources":["../src/zts.ts"],"names":[],"mappings":"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"}