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,94 +0,0 @@
1
- import { OpenApiBuilder, } from "openapi3-ts";
2
- import { defaultInputSources, makeCleanId } from "./common-helpers.js";
3
- import { mapLogicalContainer } from "./logical-container.js";
4
- import { depictRequest, depictRequestParams, depictResponse, depictSecurity, depictSecurityRefs, depictTags, ensureShortDescription, reformatParamsInPath, } from "./open-api-helpers.js";
5
- import { walkRouting } from "./routing-walker.js";
6
- export class OpenAPI extends OpenApiBuilder {
7
- ensureUniqOperationId(path, method) {
8
- const operationId = makeCleanId(path, method);
9
- if (operationId in this.lastOperationIdSuffixes) {
10
- this.lastOperationIdSuffixes[operationId]++;
11
- return `${operationId}${this.lastOperationIdSuffixes[operationId]}`;
12
- }
13
- this.lastOperationIdSuffixes[operationId] = 1;
14
- return operationId;
15
- }
16
- ensureUniqSecuritySchemaName(subject) {
17
- for (const name in this.rootDoc.components?.securitySchemes || {}) {
18
- if (JSON.stringify(subject) ===
19
- JSON.stringify(this.rootDoc.components?.securitySchemes?.[name])) {
20
- return name;
21
- }
22
- }
23
- this.lastSecuritySchemaIds[subject.type] =
24
- (this.lastSecuritySchemaIds?.[subject.type] || 0) + 1;
25
- return `${subject.type.toUpperCase()}_${this.lastSecuritySchemaIds[subject.type]}`;
26
- }
27
- constructor({ routing, config, title, version, serverUrl, successfulResponseDescription = "Successful response", errorResponseDescription = "Error response", hasSummaryFromDescription = true, }) {
28
- super();
29
- this.lastSecuritySchemaIds = {};
30
- this.lastOperationIdSuffixes = {};
31
- this.addInfo({ title, version }).addServer({ url: serverUrl });
32
- const onEndpoint = (endpoint, path, _method) => {
33
- const method = _method;
34
- const commonParams = { path, method, endpoint };
35
- const [shortDesc, longDesc] = ["short", "long"].map(endpoint.getDescription.bind(endpoint));
36
- const inputSources = config.inputSources?.[method] || defaultInputSources[method];
37
- const depictedParams = depictRequestParams({
38
- ...commonParams,
39
- inputSources,
40
- });
41
- const operation = {
42
- operationId: this.ensureUniqOperationId(path, method),
43
- responses: {
44
- [endpoint.getStatusCode("positive")]: depictResponse({
45
- ...commonParams,
46
- description: successfulResponseDescription,
47
- isPositive: true,
48
- }),
49
- [endpoint.getStatusCode("negative")]: depictResponse({
50
- ...commonParams,
51
- description: errorResponseDescription,
52
- isPositive: false,
53
- }),
54
- },
55
- };
56
- if (longDesc) {
57
- operation.description = longDesc;
58
- if (hasSummaryFromDescription && shortDesc === undefined) {
59
- operation.summary = ensureShortDescription(longDesc);
60
- }
61
- }
62
- if (shortDesc) {
63
- operation.summary = ensureShortDescription(shortDesc);
64
- }
65
- if (endpoint.getTags().length > 0) {
66
- operation.tags = endpoint.getTags();
67
- }
68
- if (depictedParams.length > 0) {
69
- operation.parameters = depictedParams;
70
- }
71
- if (inputSources.includes("body")) {
72
- operation.requestBody = depictRequest(commonParams);
73
- }
74
- const securityRefs = depictSecurityRefs(mapLogicalContainer(depictSecurity(endpoint.getSecurity()), (securitySchema) => {
75
- const name = this.ensureUniqSecuritySchemaName(securitySchema);
76
- const scopes = ["oauth2", "openIdConnect"].includes(securitySchema.type)
77
- ? endpoint.getScopes()
78
- : [];
79
- this.addSecurityScheme(name, securitySchema);
80
- return { name, scopes };
81
- }));
82
- if (securityRefs.length > 0) {
83
- operation.security = securityRefs;
84
- }
85
- const swaggerCompatiblePath = reformatParamsInPath(path);
86
- this.addPath(swaggerCompatiblePath, {
87
- [method]: operation,
88
- });
89
- };
90
- walkRouting({ routing, onEndpoint });
91
- this.rootDoc.tags = config.tags ? depictTags(config.tags) : [];
92
- }
93
- }
94
- //# sourceMappingURL=open-api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-api.js","sourceRoot":"","sources":["../src/open-api.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"type":"module","version":"9.2.1"}
@@ -1,66 +0,0 @@
1
- import { z } from "zod";
2
- import { getMessageFromError, getStatusCodeFromError } from "./common-helpers.js";
3
- import { getMeta, withMeta } from "./metadata.js";
4
- export const defaultStatusCodes = {
5
- positive: 200,
6
- negative: 400,
7
- };
8
- export const createResultHandler = (definition) => definition;
9
- export const defaultResultHandler = createResultHandler({
10
- getPositiveResponse: (output) => {
11
- const examples = getMeta(output, "examples") || [];
12
- const responseSchema = withMeta(z.object({
13
- status: z.literal("success"),
14
- data: output,
15
- }));
16
- for (const example of examples) {
17
- // forwarding output examples to response schema
18
- responseSchema.example({
19
- status: "success",
20
- data: example,
21
- });
22
- }
23
- return responseSchema;
24
- },
25
- getNegativeResponse: () => withMeta(z.object({
26
- status: z.literal("error"),
27
- error: z.object({
28
- message: z.string(),
29
- }),
30
- })).example({
31
- status: "error",
32
- error: {
33
- message: getMessageFromError(new Error("Sample error message")),
34
- },
35
- }),
36
- handler: ({ error, input, output, request, response, logger }) => {
37
- if (!error) {
38
- response.status(defaultStatusCodes.positive).json({
39
- status: "success",
40
- data: output,
41
- });
42
- return;
43
- }
44
- const statusCode = getStatusCodeFromError(error);
45
- if (statusCode === 500) {
46
- logger.error(`Internal server error\n${error.stack}\n`, {
47
- url: request.url,
48
- payload: input,
49
- });
50
- }
51
- response.status(statusCode).json({
52
- status: "error",
53
- error: { message: getMessageFromError(error) },
54
- });
55
- },
56
- });
57
- export const lastResortHandler = ({ error, logger, response, }) => {
58
- logger.error(`Result handler failure: ${error.message}.`);
59
- response
60
- .status(500)
61
- .end(`An error occurred while serving the result: ${error.message}.` +
62
- (error.originalError
63
- ? `\nOriginal error: ${error.originalError.message}.`
64
- : ""));
65
- };
66
- //# sourceMappingURL=result-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"result-handler.js","sourceRoot":"","sources":["../src/result-handler.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { DependsOnMethod } from "./depends-on-method.js";
2
- import { AbstractEndpoint } from "./endpoint.js";
3
- import { RoutingError } from "./errors.js";
4
- import { ServeStatic } from "./serve-static.js";
5
- export const walkRouting = ({ routing, onEndpoint, onStatic, parentPath, hasCors, }) => {
6
- Object.entries(routing).forEach(([segment, element]) => {
7
- segment = segment.trim();
8
- if (segment.match(/\//)) {
9
- throw new RoutingError("Routing elements should not contain '/' character.\n" +
10
- `The error caused by ${parentPath
11
- ? `'${parentPath}' route that has a '${segment}'`
12
- : `'${segment}'`} entry.`);
13
- }
14
- const path = `${parentPath || ""}${segment ? `/${segment}` : ""}`;
15
- if (element instanceof AbstractEndpoint) {
16
- const methods = element.getMethods().slice();
17
- if (hasCors) {
18
- methods.push("options");
19
- }
20
- methods.forEach((method) => {
21
- onEndpoint(element, path, method);
22
- });
23
- }
24
- else if (element instanceof ServeStatic) {
25
- if (onStatic) {
26
- element.apply(path, onStatic);
27
- }
28
- }
29
- else if (element instanceof DependsOnMethod) {
30
- Object.entries(element.methods).forEach(([method, endpoint]) => {
31
- onEndpoint(endpoint, path, method);
32
- });
33
- if (hasCors && Object.keys(element.methods).length > 0) {
34
- const [firstMethod, ...siblingMethods] = Object.keys(element.methods);
35
- const firstEndpoint = element.methods[firstMethod];
36
- firstEndpoint._setSiblingMethods(siblingMethods);
37
- onEndpoint(firstEndpoint, path, "options");
38
- }
39
- }
40
- else {
41
- walkRouting({
42
- onEndpoint,
43
- onStatic,
44
- hasCors,
45
- routing: element,
46
- parentPath: path,
47
- });
48
- }
49
- });
50
- };
51
- //# sourceMappingURL=routing-walker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing-walker.js","sourceRoot":"","sources":["../src/routing-walker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AAc5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,GACa,EAAE,EAAE;IACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;QACrD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,IAAI,YAAY,CACpB,sDAAsD;gBACpD,uBACE,UAAU;oBACR,CAAC,CAAC,IAAI,UAAU,uBAAuB,OAAO,GAAG;oBACjD,CAAC,CAAC,IAAI,OAAO,GACjB,SAAS,CACZ,CAAC;SACH;QACD,MAAM,IAAI,GAAG,GAAG,UAAU,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClE,IAAI,OAAO,YAAY,gBAAgB,EAAE;YACvC,MAAM,OAAO,GAA2B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;YACrE,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;YACD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,OAAO,YAAY,WAAW,EAAE;YACzC,IAAI,QAAQ,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC/B;SACF;aAAM,IAAI,OAAO,YAAY,eAAe,EAAE;YAC7C,MAAM,CAAC,OAAO,CAAmB,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CACvD,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACrB,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAgB,CAAC,CAAC;YAC/C,CAAC,CACF,CAAC;YACF,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtD,MAAM,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAClD,OAAO,CAAC,OAAO,CACJ,CAAC;gBACd,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAE,CAAC;gBACpD,aAAa,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACjD,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aAC5C;SACF;aAAM;YACL,WAAW,CAAC;gBACV,UAAU;gBACV,QAAQ;gBACR,OAAO;gBACP,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,21 +0,0 @@
1
- import { walkRouting } from "./routing-walker.js";
2
- import { getStartupLogo } from "./startup-logo.js";
3
- export const initRouting = ({ app, logger, config, routing, }) => {
4
- if (config.startupLogo !== false) {
5
- console.log(getStartupLogo());
6
- }
7
- walkRouting({
8
- routing,
9
- hasCors: !!config.cors,
10
- onEndpoint: (endpoint, path, method) => {
11
- app[method](path, async (request, response) => {
12
- logger.info(`${request.method}: ${path}`);
13
- await endpoint.execute({ request, response, logger, config });
14
- });
15
- },
16
- onStatic: (path, handler) => {
17
- app.use(path, handler);
18
- },
19
- });
20
- };
21
- //# sourceMappingURL=routing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,MAAM,EACN,OAAO,GAMR,EAAE,EAAE;IACH,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;KAC/B;IACD,WAAW,CAAC;QACV,OAAO;QACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QACtB,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YACrC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,22 +0,0 @@
1
- export const walkSchema = ({ schema, onEach, rules, onMissing, ...context }) => {
2
- const overrides = onEach && onEach({ schema, ...context });
3
- const handler = "typeName" in schema._def
4
- ? rules[schema._def.typeName]
5
- : undefined;
6
- const next = (params) => walkSchema({
7
- ...params,
8
- ...context,
9
- onEach,
10
- rules: rules,
11
- onMissing,
12
- });
13
- const result = handler
14
- ? handler({
15
- schema,
16
- ...context,
17
- next,
18
- })
19
- : onMissing(schema);
20
- return overrides ? { ...result, ...overrides } : result;
21
- };
22
- //# sourceMappingURL=schema-walker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-walker.js","sourceRoot":"","sources":["../src/schema-walker.ts"],"names":[],"mappings":"AA8CA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAiC,EACzD,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,GAAG,OAAO,EAKX,EAAK,EAAE;IACN,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,GAAI,OAAmB,EAAE,CAAC,CAAC;IACxE,MAAM,OAAO,GACX,UAAU,IAAI,MAAM,CAAC,IAAI;QACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAA8B,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAA+C,CAAC,MAAM,EAAE,EAAE,CAClE,UAAU,CAAC;QACT,GAAG,MAAM;QACT,GAAI,OAAmB;QACvB,MAAM;QACN,KAAK,EAAE,KAAK;QACZ,SAAS;KACV,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,OAAO;QACpB,CAAC,CAAC,OAAO,CAAC;YACN,MAAM;YACN,GAAI,OAAmB;YACvB,IAAI;SACL,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1D,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=security.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import express from "express";
2
- export class ServeStatic {
3
- constructor(...params) {
4
- this.params = params;
5
- }
6
- apply(path, cb) {
7
- return cb(path, express.static(...this.params));
8
- }
9
- }
10
- //# sourceMappingURL=serve-static.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve-static.js","sourceRoot":"","sources":["../src/serve-static.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,MAAM,OAAO,WAAW;IAGtB,YAAY,GAAG,MAAkC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CACV,IAAY,EACZ,EAAkD;QAElD,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -1,98 +0,0 @@
1
- import express, { json } from "express";
2
- import compression from "compression";
3
- import fileUpload from "express-fileupload";
4
- import https from "https";
5
- import { ResultHandlerError } from "./errors.js";
6
- import { isLoggerConfig, makeErrorFromAnything } from "./common-helpers.js";
7
- import { createLogger } from "./logger.js";
8
- import { defaultResultHandler, lastResortHandler } from "./result-handler.js";
9
- import { initRouting } from "./routing.js";
10
- import createHttpError from "http-errors";
11
- export const createParserFailureHandler = (errorHandler, logger) => (error, request, response, next) => {
12
- if (!error) {
13
- return next();
14
- }
15
- errorHandler.handler({
16
- error,
17
- request,
18
- response,
19
- logger,
20
- input: request.body,
21
- output: null,
22
- });
23
- };
24
- export const createNotFoundHandler = (errorHandler, logger) => (request, response) => {
25
- const error = createHttpError(404, `Can not ${request.method} ${request.path}`);
26
- try {
27
- errorHandler.handler({
28
- request,
29
- response,
30
- logger,
31
- error,
32
- input: null,
33
- output: null,
34
- });
35
- }
36
- catch (e) {
37
- lastResortHandler({
38
- response,
39
- logger,
40
- error: new ResultHandlerError(makeErrorFromAnything(e).message, error),
41
- });
42
- }
43
- };
44
- export function attachRouting(config, routing) {
45
- const logger = isLoggerConfig(config.logger)
46
- ? createLogger(config.logger)
47
- : config.logger;
48
- initRouting({ app: config.app, routing, logger, config });
49
- const errorHandler = config.errorHandler || defaultResultHandler;
50
- const notFoundHandler = createNotFoundHandler(errorHandler, logger);
51
- return { notFoundHandler, logger };
52
- }
53
- export function createServer(config, routing) {
54
- const logger = isLoggerConfig(config.logger)
55
- ? createLogger(config.logger)
56
- : config.logger;
57
- const app = express();
58
- app.disable("x-powered-by");
59
- const errorHandler = config.errorHandler || defaultResultHandler;
60
- const compressor = config.server.compression
61
- ? compression({
62
- ...(typeof config.server.compression === "object"
63
- ? config.server.compression
64
- : {}),
65
- })
66
- : undefined;
67
- const jsonParser = config.server.jsonParser || json();
68
- const multipartParser = config.server.upload
69
- ? fileUpload({
70
- ...(typeof config.server.upload === "object"
71
- ? config.server.upload
72
- : {}),
73
- abortOnLimit: false,
74
- parseNested: true,
75
- })
76
- : undefined;
77
- const middlewares = []
78
- .concat(compressor || [])
79
- .concat(jsonParser)
80
- .concat(multipartParser || []);
81
- app.use(middlewares);
82
- app.use(createParserFailureHandler(errorHandler, logger));
83
- initRouting({ app, routing, logger, config });
84
- app.use(createNotFoundHandler(errorHandler, logger));
85
- const httpServer = app.listen(config.server.listen, () => {
86
- logger.info(`Listening ${config.server.listen}`);
87
- });
88
- let httpsServer;
89
- if (config.https) {
90
- httpsServer = https
91
- .createServer(config.https.options, app)
92
- .listen(config.https.listen, () => {
93
- logger.info(`Listening ${config.https.listen}`);
94
- });
95
- }
96
- return { app, httpServer, httpsServer, logger };
97
- }
98
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- // ANSI font attribution
2
- // Colossal.flf (Jonathon - jon@mq.edu.au), 8 June 1994
3
- export const getStartupLogo = () => {
4
- return `
5
- 
6
- 
7
- 8888888888 8888888888P 888 d8888 8888888b. 8888888 
8
- 888 d88P 888 d88888 888 Y88b 888
9
- 888 d88P 888 d88P888 888 888 888
10
- 8888888 888 888 88888b. 888d888 .d88b. .d8888b .d8888b d88P .d88b. .d88888 d88P 888 888 d88P 888
11
- 888 \`Y8bd8P' 888 "88b 888P" d8P Y8b 88K 88K d88P d88""88b d88" 888 d88P 888 8888888P" 888 
12
- 888 X88K 888 888 888 88888888 "Y8888b. "Y8888b. d88P 888 888 888 888 d88P 888 888 888
13
- 888 .d8""8b. 888 d88P 888 Y8b. X88 X88 d88P Y88..88P Y88b 888 d8888888888 888 888 
14
- 8888888888 888 888 88888P" 888 "Y8888 88888P' 88888P' d8888888888 "Y88P" "Y88888 d88P 888 888 8888888
15
-  888
16
-  888 Proudly supports transgender community.
17
- for Brianna  888 Start your API server with I/O schema validation and custom middlewares in minutes.
18
-  Thank you for choosing Express Zod API for your project.
19
- 
20
- 
21
- `.trim();
22
- };
23
- //# sourceMappingURL=startup-logo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup-logo.js","sourceRoot":"","sources":["../src/startup-logo.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,uDAAuD;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- import { INVALID, OK, ZodIssueCode, ZodParsedType, ZodType, addIssueToContext, } from "zod";
2
- const zodUploadKind = "ZodUpload";
3
- const isUploadedFile = (data) => typeof data === "object" &&
4
- data !== null &&
5
- "name" in data &&
6
- "encoding" in data &&
7
- "mimetype" in data &&
8
- "data" in data &&
9
- "tempFilePath" in data &&
10
- "truncated" in data &&
11
- "size" in data &&
12
- "md5" in data &&
13
- "mv" in data &&
14
- typeof data.name === "string" &&
15
- typeof data.mimetype === "string" &&
16
- typeof data.data === "object" &&
17
- typeof data.tempFilePath === "string" &&
18
- typeof data.truncated === "boolean" &&
19
- typeof data.size === "number" &&
20
- typeof data.md5 === "string" &&
21
- typeof data.mv === "function";
22
- export class ZodUpload extends ZodType {
23
- _parse(input) {
24
- const { ctx } = this._processInputParams(input);
25
- if (ctx.parsedType !== ZodParsedType.object || !isUploadedFile(ctx.data)) {
26
- addIssueToContext(ctx, {
27
- code: ZodIssueCode.custom,
28
- message: `Expected file upload, received ${ctx.parsedType}`,
29
- });
30
- return INVALID;
31
- }
32
- return OK(ctx.data);
33
- }
34
- }
35
- ZodUpload.create = () => new ZodUpload({
36
- typeName: zodUploadKind,
37
- });
38
- //# sourceMappingURL=upload-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-schema.js","sourceRoot":"","sources":["../src/upload-schema.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,EAAE,EAGF,YAAY,EACZ,aAAa,EACb,OAAO,EAEP,iBAAiB,GAClB,MAAM,KAAK,CAAC;AAEb,MAAM,aAAa,GAAG,WAAW,CAAC;AAMlC,MAAM,cAAc,GAAG,CAAC,IAAS,EAAwB,EAAE,CACzD,OAAO,IAAI,KAAK,QAAQ;IACxB,IAAI,KAAK,IAAI;IACb,MAAM,IAAI,IAAI;IACd,UAAU,IAAI,IAAI;IAClB,UAAU,IAAI,IAAI;IAClB,MAAM,IAAI,IAAI;IACd,cAAc,IAAI,IAAI;IACtB,WAAW,IAAI,IAAI;IACnB,MAAM,IAAI,IAAI;IACd,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;IACZ,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;IAC7B,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;IACjC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;IAC7B,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;IACrC,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS;IACnC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;IAC7B,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;IAC5B,OAAO,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC;AAEhC,MAAM,OAAO,SAAU,SAAQ,OAAmC;IAChE,MAAM,CAAC,KAAiB;QACtB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,UAAU,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxE,iBAAiB,CAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,YAAY,CAAC,MAAM;gBACzB,OAAO,EAAE,kCAAkC,GAAG,CAAC,UAAU,EAAE;aAC5D,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;;AAEM,gBAAM,GAAG,GAAG,EAAE,CACnB,IAAI,SAAS,CAAC;IACZ,QAAQ,EAAE,aAAa;CACxB,CAAC,CAAC"}
@@ -1,50 +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
- const { factory: f } = ts;
28
- export const addJsDocComment = (node, text) => {
29
- ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, `* ${text} `, true);
30
- };
31
- export const createTypeAlias = (node, identifier, comment) => {
32
- const typeAlias = f.createTypeAliasDeclaration(undefined, f.createIdentifier(identifier), undefined, node);
33
- if (comment) {
34
- addJsDocComment(typeAlias, comment);
35
- }
36
- return typeAlias;
37
- };
38
- export const printNode = (node, printerOptions) => {
39
- const sourceFile = ts.createSourceFile("print.ts", "", ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
40
- const printer = ts.createPrinter(printerOptions);
41
- return printer.printNode(ts.EmitHint.Unspecified, node, sourceFile);
42
- };
43
- const safePropRegex = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
44
- export const makePropertyIdentifier = (name) => {
45
- if (safePropRegex.test(name)) {
46
- return f.createIdentifier(name);
47
- }
48
- return f.createStringLiteral(name);
49
- };
50
- //# sourceMappingURL=zts-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zts-helpers.js","sourceRoot":"","sources":["../src/zts-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AAY1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAa,EAAE,IAAY,EAAE,EAAE;IAC7D,EAAE,CAAC,0BAA0B,CAC3B,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,sBAAsB,EACpC,KAAK,IAAI,GAAG,EACZ,IAAI,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAiB,EACjB,UAAkB,EAClB,OAAgB,EAChB,EAAE;IACF,MAAM,SAAS,GAAG,CAAC,CAAC,0BAA0B,CAC5C,SAAS,EACT,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAC9B,SAAS,EACT,IAAI,CACL,CAAC;IACF,IAAI,OAAO,EAAE;QACX,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACrC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAAa,EACb,cAAkC,EAClC,EAAE;IACF,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,UAAU,EACV,EAAE,EACF,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,KAAK,EACL,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,EAAE;IACrD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,OAAO,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC"}