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,207 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.errToObj = exports.tryToTransform = exports.makeCleanId = exports.hasCoercion = exports.hasUpload = exports.hasTopLevelTransformingEffect = exports.getRoutePathParams = exports.combinations = exports.getExamples = exports.getStatusCodeFromError = exports.getMessageFromError = exports.makeErrorFromAnything = exports.isValidDate = exports.isLoggerConfig = exports.getInput = exports.getActualMethod = exports.defaultInputSources = exports.routePathParamsRegex = void 0;
4
- const http_errors_1 = require("http-errors");
5
- const zod_1 = require("zod");
6
- const config_type_1 = require("./config-type");
7
- const errors_1 = require("./errors");
8
- const metadata_1 = require("./metadata");
9
- const mime_1 = require("./mime");
10
- const upload_schema_1 = require("./upload-schema");
11
- /** @see https://expressjs.com/en/guide/routing.html */
12
- exports.routePathParamsRegex = /:([A-Za-z0-9_]+)/g;
13
- function areFilesAvailable(request) {
14
- const contentType = request.header("content-type") || "";
15
- const isMultipart = contentType.slice(0, mime_1.mimeMultipart.length).toLowerCase() === mime_1.mimeMultipart;
16
- return "files" in request && isMultipart;
17
- }
18
- exports.defaultInputSources = {
19
- get: ["query", "params"],
20
- post: ["body", "params", "files"],
21
- put: ["body", "params"],
22
- patch: ["body", "params"],
23
- delete: ["query", "params"],
24
- };
25
- const fallbackInputSource = ["body", "query", "params"];
26
- const getActualMethod = (request) => request.method.toLowerCase();
27
- exports.getActualMethod = getActualMethod;
28
- function getInput(request, inputAssignment) {
29
- const method = (0, exports.getActualMethod)(request);
30
- if (method === "options") {
31
- return {};
32
- }
33
- let props = fallbackInputSource;
34
- if (method in exports.defaultInputSources) {
35
- props = exports.defaultInputSources[method];
36
- }
37
- if (inputAssignment && method in inputAssignment) {
38
- props = inputAssignment[method] || props;
39
- }
40
- return props
41
- .filter((prop) => (prop === "files" ? areFilesAvailable(request) : true))
42
- .reduce((carry, prop) => ({
43
- ...carry,
44
- ...request[prop],
45
- }), {});
46
- }
47
- exports.getInput = getInput;
48
- function isLoggerConfig(logger) {
49
- return (typeof logger === "object" &&
50
- "level" in logger &&
51
- "color" in logger &&
52
- Object.keys(config_type_1.loggerLevels).includes(logger.level) &&
53
- typeof logger.color === "boolean");
54
- }
55
- exports.isLoggerConfig = isLoggerConfig;
56
- function isValidDate(date) {
57
- return !isNaN(date.getTime());
58
- }
59
- exports.isValidDate = isValidDate;
60
- function makeErrorFromAnything(subject) {
61
- return subject instanceof Error
62
- ? subject
63
- : new Error(typeof subject === "symbol" ? subject.toString() : `${subject}`);
64
- }
65
- exports.makeErrorFromAnything = makeErrorFromAnything;
66
- function getMessageFromError(error) {
67
- if (error instanceof zod_1.z.ZodError) {
68
- return error.issues
69
- .map(({ path, message }) => (path.length ? [path.join("/")] : []).concat(message).join(": "))
70
- .join("; ");
71
- }
72
- if (error instanceof errors_1.OutputValidationError) {
73
- const hasFirstField = error.originalError.issues[0]?.path.length > 0;
74
- return `output${hasFirstField ? "/" : ": "}${error.message}`;
75
- }
76
- return error.message;
77
- }
78
- exports.getMessageFromError = getMessageFromError;
79
- function getStatusCodeFromError(error) {
80
- if (error instanceof http_errors_1.HttpError) {
81
- return error.statusCode;
82
- }
83
- if (error instanceof errors_1.InputValidationError) {
84
- return 400;
85
- }
86
- return 500;
87
- }
88
- exports.getStatusCodeFromError = getStatusCodeFromError;
89
- const getExamples = (schema, parseToOutput) => {
90
- const examples = (0, metadata_1.getMeta)(schema, "examples");
91
- if (examples === undefined) {
92
- return [];
93
- }
94
- return examples.reduce((carry, example) => {
95
- const parsedExample = schema.safeParse(example);
96
- return carry.concat(parsedExample.success
97
- ? parseToOutput
98
- ? parsedExample.data
99
- : example
100
- : []);
101
- }, []);
102
- };
103
- exports.getExamples = getExamples;
104
- const combinations = (a, b) => {
105
- if (a.length === 0) {
106
- return { type: "single", value: b };
107
- }
108
- if (b.length === 0) {
109
- return { type: "single", value: a };
110
- }
111
- const result = [];
112
- for (const itemA of a) {
113
- for (const itemB of b) {
114
- result.push([itemA, itemB]);
115
- }
116
- }
117
- return { type: "tuple", value: result };
118
- };
119
- exports.combinations = combinations;
120
- function getRoutePathParams(path) {
121
- const match = path.match(exports.routePathParamsRegex);
122
- if (!match) {
123
- return [];
124
- }
125
- return match.map((param) => param.slice(1));
126
- }
127
- exports.getRoutePathParams = getRoutePathParams;
128
- const reduceBool = (arr) => arr.reduce((carry, bool) => carry || bool, false);
129
- function hasTopLevelTransformingEffect(schema) {
130
- if (schema instanceof zod_1.z.ZodEffects) {
131
- if (schema._def.effect.type !== "refinement") {
132
- return true;
133
- }
134
- }
135
- if (schema instanceof zod_1.z.ZodUnion) {
136
- return reduceBool(schema.options.map(hasTopLevelTransformingEffect));
137
- }
138
- if (schema instanceof zod_1.z.ZodIntersection) {
139
- return reduceBool([schema._def.left, schema._def.right].map(hasTopLevelTransformingEffect));
140
- }
141
- return false; // ZodObject left
142
- }
143
- exports.hasTopLevelTransformingEffect = hasTopLevelTransformingEffect;
144
- function hasUpload(schema) {
145
- if (schema instanceof upload_schema_1.ZodUpload) {
146
- return true;
147
- }
148
- if (schema instanceof zod_1.z.ZodObject) {
149
- return reduceBool(Object.values(schema.shape).map(hasUpload));
150
- }
151
- if (schema instanceof zod_1.z.ZodUnion) {
152
- return reduceBool(schema.options.map(hasUpload));
153
- }
154
- if (schema instanceof zod_1.z.ZodIntersection) {
155
- return reduceBool([schema._def.left, schema._def.right].map(hasUpload));
156
- }
157
- if (schema instanceof zod_1.z.ZodOptional || schema instanceof zod_1.z.ZodNullable) {
158
- return hasUpload(schema.unwrap());
159
- }
160
- if (schema instanceof zod_1.z.ZodEffects || schema instanceof zod_1.z.ZodTransformer) {
161
- return hasUpload(schema._def.schema);
162
- }
163
- if (schema instanceof zod_1.z.ZodRecord) {
164
- return hasUpload(schema._def.valueType);
165
- }
166
- if (schema instanceof zod_1.z.ZodArray) {
167
- return hasUpload(schema._def.type);
168
- }
169
- if (schema instanceof zod_1.z.ZodDefault) {
170
- return hasUpload(schema._def.innerType);
171
- }
172
- return false;
173
- }
174
- exports.hasUpload = hasUpload;
175
- /**
176
- * @desc isNullable() and isOptional() validate the schema's input
177
- * @desc They always return true in case of coercion, which should be taken into account when depicting response
178
- */
179
- const hasCoercion = (schema) => "coerce" in schema._def && typeof schema._def.coerce === "boolean"
180
- ? schema._def.coerce
181
- : false;
182
- exports.hasCoercion = hasCoercion;
183
- const makeCleanId = (path, method, suffix) => {
184
- return [method]
185
- .concat(path.split("/"))
186
- .concat(suffix || [])
187
- .flatMap((entry) => entry.split(/[^A-Z0-9]/gi))
188
- .map((entry) => entry.slice(0, 1).toUpperCase() + entry.slice(1).toLowerCase())
189
- .join("");
190
- };
191
- exports.makeCleanId = makeCleanId;
192
- const tryToTransform = ({ effect, sample, }) => {
193
- try {
194
- return typeof effect.transform(sample, {
195
- addIssue: () => { },
196
- path: [],
197
- });
198
- }
199
- catch (e) {
200
- return undefined;
201
- }
202
- };
203
- exports.tryToTransform = tryToTransform;
204
- // the copy of the private Zod errorUtil.errToObj
205
- const errToObj = (message) => typeof message === "string" ? { message } : message || {};
206
- exports.errToObj = errToObj;
207
- //# sourceMappingURL=common-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common-helpers.js","sourceRoot":"","sources":["../src/common-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- /// <reference types="node" />
2
- import compression from "compression";
3
- import { NextHandleFunction } from "connect";
4
- import { Express, Request } from "express";
5
- import fileUpload from "express-fileupload";
6
- import { ServerOptions } from "https";
7
- import { Logger } from "winston";
8
- import { AbstractEndpoint } from "./endpoint";
9
- import { Method } from "./method";
10
- import { ResultHandlerDefinition } from "./result-handler";
11
- export declare const loggerLevels: {
12
- silent: boolean;
13
- warn: boolean;
14
- debug: boolean;
15
- };
16
- export interface LoggerConfig {
17
- level: keyof typeof loggerLevels;
18
- color: boolean;
19
- }
20
- type UploadOptions = Pick<fileUpload.Options, "createParentPath" | "uriDecodeFileNames" | "safeFileNames" | "preserveExtension" | "useTempFiles" | "tempFileDir" | "debug" | "uploadTimeout">;
21
- type CompressionOptions = Pick<compression.CompressionOptions, "threshold" | "level" | "strategy" | "chunkSize" | "memLevel">;
22
- export interface ServerConfig {
23
- server: {
24
- listen: number | string;
25
- jsonParser?: NextHandleFunction;
26
- upload?: boolean | UploadOptions;
27
- compression?: boolean | CompressionOptions;
28
- };
29
- https?: {
30
- options: ServerOptions;
31
- listen: number | string;
32
- };
33
- }
34
- export interface AppConfig {
35
- app: Express;
36
- }
37
- export type InputSource = keyof Pick<Request, "query" | "body" | "files" | "params">;
38
- export type InputSources = Record<Method, InputSource[]>;
39
- type Headers = Record<string, string>;
40
- type HeadersProvider = (params: {
41
- defaultHeaders: Headers;
42
- request: Request;
43
- endpoint: AbstractEndpoint;
44
- logger: Logger;
45
- }) => Headers | Promise<Headers>;
46
- export type TagsConfig<TAG extends string> = Record<TAG, string | {
47
- description: string;
48
- url?: string;
49
- }>;
50
- export interface CommonConfig<TAG extends string = string> {
51
- cors: boolean | HeadersProvider;
52
- errorHandler?: ResultHandlerDefinition<any, any>;
53
- logger: LoggerConfig | Logger;
54
- startupLogo?: boolean;
55
- inputSources?: Partial<InputSources>;
56
- tags?: TagsConfig<TAG>;
57
- }
58
- export declare const createConfig: <TAG extends string, T extends (AppConfig | ServerConfig) & CommonConfig<TAG>>(config: T) => T;
59
- export {};
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createConfig = exports.loggerLevels = void 0;
4
- exports.loggerLevels = {
5
- silent: true,
6
- warn: true,
7
- debug: true,
8
- };
9
- const createConfig = (config) => config;
10
- exports.createConfig = createConfig;
11
- //# sourceMappingURL=config-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-type.js","sourceRoot":"","sources":["../src/config-type.ts"],"names":[],"mappings":";;;AAUa,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACZ,CAAC;AAmFK,MAAM,YAAY,GAAG,CAI1B,MAAS,EACN,EAAE,CAAC,MAAM,CAAC;AALF,QAAA,YAAY,gBAKV"}
@@ -1,11 +0,0 @@
1
- import { ParseInput, ParseReturnType, ZodType, ZodTypeDef } from "zod";
2
- export declare const isoDateRegex: RegExp;
3
- declare const zodDateInKind = "ZodDateIn";
4
- export interface ZodDateInDef extends ZodTypeDef {
5
- typeName: typeof zodDateInKind;
6
- }
7
- export declare class ZodDateIn extends ZodType<Date, ZodDateInDef, string> {
8
- _parse(input: ParseInput): ParseReturnType<Date>;
9
- static create: () => ZodDateIn;
10
- }
11
- export {};
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZodDateIn = exports.isoDateRegex = void 0;
4
- const zod_1 = require("zod");
5
- const common_helpers_1 = require("./common-helpers");
6
- // simple regex for ISO date, supports the following formats:
7
- // 2021-01-01T00:00:00.000Z
8
- // 2021-01-01T00:00:00.0Z
9
- // 2021-01-01T00:00:00Z
10
- // 2021-01-01T00:00:00
11
- // 2021-01-01
12
- exports.isoDateRegex = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?)?Z?$/;
13
- const zodDateInKind = "ZodDateIn";
14
- class ZodDateIn extends zod_1.ZodType {
15
- _parse(input) {
16
- const { status, ctx } = this._processInputParams(input);
17
- if (ctx.parsedType !== zod_1.ZodParsedType.string) {
18
- (0, zod_1.addIssueToContext)(ctx, {
19
- code: zod_1.ZodIssueCode.invalid_type,
20
- expected: zod_1.ZodParsedType.string,
21
- received: ctx.parsedType,
22
- });
23
- return zod_1.INVALID;
24
- }
25
- if (!exports.isoDateRegex.test(ctx.data)) {
26
- (0, zod_1.addIssueToContext)(ctx, {
27
- code: zod_1.ZodIssueCode.invalid_string,
28
- validation: "regex",
29
- });
30
- status.dirty();
31
- }
32
- const date = new Date(ctx.data);
33
- if (!(0, common_helpers_1.isValidDate)(date)) {
34
- (0, zod_1.addIssueToContext)(ctx, {
35
- code: zod_1.ZodIssueCode.invalid_date,
36
- });
37
- return zod_1.INVALID;
38
- }
39
- return { status: status.value, value: date };
40
- }
41
- }
42
- exports.ZodDateIn = ZodDateIn;
43
- ZodDateIn.create = () => new ZodDateIn({
44
- typeName: zodDateInKind,
45
- });
46
- //# sourceMappingURL=date-in-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-in-schema.js","sourceRoot":"","sources":["../src/date-in-schema.ts"],"names":[],"mappings":";;;AAAA,6BASa;AACb,qDAA+C;AAE/C,6DAA6D;AAC7D,2BAA2B;AAC3B,yBAAyB;AACzB,uBAAuB;AACvB,sBAAsB;AACtB,aAAa;AACA,QAAA,YAAY,GACvB,oDAAoD,CAAC;AAEvD,MAAM,aAAa,GAAG,WAAW,CAAC;AAMlC,MAAa,SAAU,SAAQ,aAAmC;IAChE,MAAM,CAAC,KAAiB;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,UAAU,KAAK,mBAAa,CAAC,MAAM,EAAE;YAC3C,IAAA,uBAAiB,EAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,kBAAY,CAAC,YAAY;gBAC/B,QAAQ,EAAE,mBAAa,CAAC,MAAM;gBAC9B,QAAQ,EAAE,GAAG,CAAC,UAAU;aACzB,CAAC,CAAC;YACH,OAAO,aAAO,CAAC;SAChB;QAED,IAAI,CAAC,oBAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAc,CAAC,EAAE;YAC1C,IAAA,uBAAiB,EAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,kBAAY,CAAC,cAAc;gBACjC,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;SAChB;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAA,4BAAW,EAAC,IAAI,CAAC,EAAE;YACtB,IAAA,uBAAiB,EAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,kBAAY,CAAC,YAAY;aAChC,CAAC,CAAC;YACH,OAAO,aAAO,CAAC;SAChB;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;;AA9BH,8BAoCC;AAJQ,gBAAM,GAAG,GAAG,EAAE,CACnB,IAAI,SAAS,CAAC;IACZ,QAAQ,EAAE,aAAa;CACxB,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { ParseInput, ParseReturnType, ZodType, ZodTypeDef } from "zod";
2
- declare const zodDateOutKind = "ZodDateOut";
3
- export interface ZodDateOutDef extends ZodTypeDef {
4
- typeName: typeof zodDateOutKind;
5
- }
6
- export declare class ZodDateOut extends ZodType<string, ZodDateOutDef, Date> {
7
- _parse(input: ParseInput): ParseReturnType<string>;
8
- static create: () => ZodDateOut;
9
- }
10
- export {};
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZodDateOut = void 0;
4
- const zod_1 = require("zod");
5
- const common_helpers_1 = require("./common-helpers");
6
- const zodDateOutKind = "ZodDateOut";
7
- class ZodDateOut extends zod_1.ZodType {
8
- _parse(input) {
9
- const { status, ctx } = this._processInputParams(input);
10
- if (ctx.parsedType !== zod_1.ZodParsedType.date) {
11
- (0, zod_1.addIssueToContext)(ctx, {
12
- code: zod_1.ZodIssueCode.invalid_type,
13
- expected: zod_1.ZodParsedType.date,
14
- received: ctx.parsedType,
15
- });
16
- return zod_1.INVALID;
17
- }
18
- if (!(0, common_helpers_1.isValidDate)(ctx.data)) {
19
- (0, zod_1.addIssueToContext)(ctx, {
20
- code: zod_1.ZodIssueCode.invalid_date,
21
- });
22
- return zod_1.INVALID;
23
- }
24
- return { status: status.value, value: ctx.data.toISOString() };
25
- }
26
- }
27
- exports.ZodDateOut = ZodDateOut;
28
- ZodDateOut.create = () => new ZodDateOut({
29
- typeName: zodDateOutKind,
30
- });
31
- //# sourceMappingURL=date-out-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-out-schema.js","sourceRoot":"","sources":["../src/date-out-schema.ts"],"names":[],"mappings":";;;AAAA,6BASa;AACb,qDAA+C;AAE/C,MAAM,cAAc,GAAG,YAAY,CAAC;AAMpC,MAAa,UAAW,SAAQ,aAAoC;IAClE,MAAM,CAAC,KAAiB;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,UAAU,KAAK,mBAAa,CAAC,IAAI,EAAE;YACzC,IAAA,uBAAiB,EAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,kBAAY,CAAC,YAAY;gBAC/B,QAAQ,EAAE,mBAAa,CAAC,IAAI;gBAC5B,QAAQ,EAAE,GAAG,CAAC,UAAU;aACzB,CAAC,CAAC;YACH,OAAO,aAAO,CAAC;SAChB;QAED,IAAI,CAAC,IAAA,4BAAW,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAA,uBAAiB,EAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,kBAAY,CAAC,YAAY;aAChC,CAAC,CAAC;YACH,OAAO,aAAO,CAAC;SAChB;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAG,GAAG,CAAC,IAAa,CAAC,WAAW,EAAE,EAAE,CAAC;IAC3E,CAAC;;AApBH,gCA0BC;AAJQ,iBAAM,GAAG,GAAG,EAAE,CACnB,IAAI,UAAU,CAAC;IACb,QAAQ,EAAE,cAAc;CACzB,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { Endpoint } from "./endpoint";
2
- import { Method } from "./method";
3
- export declare class DependsOnMethod {
4
- readonly methods: {
5
- [K in Method]?: Endpoint<any, any, any, K, any, any, any, any> | Endpoint<any, any, any, Method, any, any, any, any>;
6
- };
7
- constructor(methods: {
8
- [K in Method]?: Endpoint<any, any, any, K, any, any, any, any> | Endpoint<any, any, any, Method, any, any, any, any>;
9
- });
10
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DependsOnMethod = void 0;
4
- const errors_1 = require("./errors");
5
- class DependsOnMethod {
6
- constructor(methods) {
7
- this.methods = methods;
8
- Object.keys(methods).forEach((key) => {
9
- if (key in methods) {
10
- const endpointMethods = methods[key]?.getMethods() || [];
11
- if (!endpointMethods.includes(key)) {
12
- throw new errors_1.DependsOnMethodError(`The endpoint assigned to the '${key}' parameter must have at least this method in its specification.\n` +
13
- "This error should prevent mistakes during the development process.\n" +
14
- "Example:\n\n" +
15
- `new ${this.constructor.name}({\n` +
16
- ` ${key}: endpointsFactory.build({\n` +
17
- ` methods: ['${key}', ` +
18
- ((methods[key]?.getMethods() || [])
19
- .map((m) => `'${m}'`)
20
- .join(", ") || "...") +
21
- "]\n" +
22
- ` // or method: '${key}'\n` +
23
- " ...\n" +
24
- " })\n" +
25
- "});\n");
26
- }
27
- }
28
- });
29
- }
30
- }
31
- exports.DependsOnMethod = DependsOnMethod;
32
- //# sourceMappingURL=depends-on-method.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"depends-on-method.js","sourceRoot":"","sources":["../src/depends-on-method.ts"],"names":[],"mappings":";;;AACA,qCAAgD;AAGhD,MAAa,eAAe;IAC1B,YACkB,OAIf;QAJe,YAAO,GAAP,OAAO,CAItB;QAEA,MAAM,CAAC,IAAI,CAAC,OAAO,CAA8B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,IAAI,OAAO,EAAE;gBAClB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClC,MAAM,IAAI,6BAAoB,CAC5B,iCAAiC,GAAG,oEAAoE;wBACtG,sEAAsE;wBACtE,cAAc;wBACd,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM;wBAClC,KAAK,GAAG,8BAA8B;wBACtC,kBAAkB,GAAG,KAAK;wBAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;6BAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;6BACpB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;wBACvB,KAAK;wBACL,sBAAsB,GAAG,KAAK;wBAC9B,WAAW;wBACX,QAAQ;wBACR,OAAO,CACV,CAAC;iBACH;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhCD,0CAgCC"}
@@ -1,98 +0,0 @@
1
- import { Request, Response } from "express";
2
- import { Logger } from "winston";
3
- import { z } from "zod";
4
- import { CommonConfig } from "./config-type";
5
- import { FlatObject } from "./common-helpers";
6
- import { IOSchema } from "./io-schema";
7
- import { LogicalContainer } from "./logical-container";
8
- import { Method, MethodsDefinition } from "./method";
9
- import { AnyMiddlewareDef } from "./middleware";
10
- import { ResultHandlerDefinition } from "./result-handler";
11
- import { Security } from "./security";
12
- export type Handler<IN, OUT, OPT> = (params: {
13
- input: IN;
14
- options: OPT;
15
- logger: Logger;
16
- }) => Promise<OUT>;
17
- type DescriptionVariant = "short" | "long";
18
- type IOVariant = "input" | "output";
19
- type ResponseVariant = "positive" | "negative";
20
- type MimeVariant = Extract<IOVariant, "input"> | ResponseVariant;
21
- export declare abstract class AbstractEndpoint {
22
- abstract execute(params: {
23
- request: Request;
24
- response: Response;
25
- logger: Logger;
26
- config: CommonConfig;
27
- }): Promise<void>;
28
- abstract getDescription(variant: DescriptionVariant): string | undefined;
29
- abstract getMethods(): Method[];
30
- abstract getSchema(variant: IOVariant): IOSchema;
31
- abstract getSchema(variant: ResponseVariant): z.ZodTypeAny;
32
- abstract getMimeTypes(variant: MimeVariant): string[];
33
- abstract getStatusCode(variant: ResponseVariant): number;
34
- abstract getSecurity(): LogicalContainer<Security>;
35
- abstract getScopes(): string[];
36
- abstract getTags(): string[];
37
- abstract _setSiblingMethods(methods: Method[]): void;
38
- }
39
- type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends z.ZodTypeAny, NEG extends z.ZodTypeAny, SCO extends string, TAG extends string> = {
40
- middlewares: AnyMiddlewareDef[];
41
- inputSchema: IN;
42
- outputSchema: OUT;
43
- handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
44
- resultHandler: ResultHandlerDefinition<POS, NEG>;
45
- description?: string;
46
- shortDescription?: string;
47
- } & ({
48
- scopes?: SCO[];
49
- } | {
50
- scope?: SCO;
51
- }) & ({
52
- tags?: TAG[];
53
- } | {
54
- tag?: TAG;
55
- }) & MethodsDefinition<M>;
56
- export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends z.ZodTypeAny, NEG extends z.ZodTypeAny, SCO extends string, TAG extends string> extends AbstractEndpoint {
57
- #private;
58
- protected readonly descriptions: Record<DescriptionVariant, string | undefined>;
59
- protected readonly methods: M[];
60
- protected siblingMethods: Method[];
61
- protected readonly middlewares: AnyMiddlewareDef[];
62
- protected readonly mimeTypes: Record<MimeVariant, string[]>;
63
- protected readonly statusCodes: Record<ResponseVariant, number>;
64
- protected readonly handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
65
- protected readonly resultHandler: ResultHandlerDefinition<POS, NEG>;
66
- protected readonly schemas: {
67
- input: IN;
68
- output: OUT;
69
- positive: POS;
70
- negative: NEG;
71
- };
72
- protected readonly scopes: SCO[];
73
- protected readonly tags: TAG[];
74
- constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, shortDescription, ...rest }: EndpointProps<IN, OUT, OPT, M, POS, NEG, SCO, TAG>);
75
- /**
76
- * @desc Sets the other methods supported by the same path. Used by Routing in DependsOnMethod case, for options.
77
- * @deprecated This method is for internal needs of the library, please avoid using it.
78
- * */
79
- _setSiblingMethods(methods: Method[]): void;
80
- getDescription(variant: DescriptionVariant): string | undefined;
81
- getMethods(): M[];
82
- getSchema(variant: "input"): IN;
83
- getSchema(variant: "output"): OUT;
84
- getSchema(variant: "positive"): POS;
85
- getSchema(variant: "negative"): NEG;
86
- getMimeTypes(variant: MimeVariant): string[];
87
- getStatusCode(variant: ResponseVariant): number;
88
- getSecurity(): LogicalContainer<Security<string, string>>;
89
- getScopes(): SCO[];
90
- getTags(): TAG[];
91
- execute({ request, response, logger, config, }: {
92
- request: Request;
93
- response: Response;
94
- logger: Logger;
95
- config: CommonConfig;
96
- }): Promise<void>;
97
- }
98
- export {};