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/package.json CHANGED
@@ -1,27 +1,26 @@
1
1
  {
2
2
  "name": "express-zod-api",
3
- "version": "9.2.1",
3
+ "version": "10.0.0-beta2",
4
4
  "description": "A Typescript library to help you get an API server up and running with I/O schema validation and custom middlewares in minutes.",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
7
  "start": "ts-node example/index.ts",
8
- "build": "yarn build:cleanup && yarn build:compile && yarn build:esm && yarn build:swagger && yarn build:client && yarn build:license",
9
- "build:cleanup": "rm -rf ./dist ./dist-esm example/example.swagger.yaml example/example.client.ts ./LICENSE",
10
- "build:compile": "tsc --build tsconfig.build.json",
11
- "build:esm": "tsc --build tsconfig.esm.json && ts-node tools/esm-package.ts && ts-node tools/esm-extensions.ts",
8
+ "build": "yarn build:compile && yarn build:swagger && yarn build:client && yarn build:license",
9
+ "build:compile": "tsup",
12
10
  "build:swagger": "ts-node example/generate-open-api-schema.ts > example/example.swagger.yaml",
13
11
  "build:client": "ts-node example/generate-client.ts > example/example.client.ts && yarn prettier example/example.client.ts --write",
14
12
  "build:license": "ts-node tools/license.ts > ./LICENSE",
15
- "build:intTest": "ts-node tools/integration-test.ts && yarn install --cwd ./tests/integration",
13
+ "build:intTest": "ts-node tools/integration-test.ts && yarn install --cwd ./tests/integration && ts-node tools/int-test-package.ts",
16
14
  "build:esmTest": "ts-node tools/esm-test.ts && yarn install --cwd ./tests/esm && ts-node tools/esm-test-package.ts",
17
- "test": "yarn test:jest && yarn test:badge",
18
- "test:int": "yarn jest ./tests/integration",
19
- "test:esm": "yarn jest ./tests/esm",
15
+ "test": "yarn test:types && yarn test:jest && yarn test:badge",
16
+ "test:int": "jest ./tests/integration",
17
+ "test:esm": "jest ./tests/esm",
20
18
  "test:u": "yarn test:jest -u && yarn test:badge",
21
- "test:jest": "yarn jest --detectOpenHandles ./tests/unit ./tests/system",
22
- "test:badge": "yarn make-coverage-badge --output-path ./coverage.svg",
23
- "lint": "yarn eslint ./src ./example ./tests && yarn prettier *.md --check",
24
- "mdfix": "yarn prettier *.md --write",
19
+ "test:types": "tsc --noEmit",
20
+ "test:jest": "jest --detectOpenHandles ./tests/unit ./tests/system",
21
+ "test:badge": "make-coverage-badge --output-path ./coverage.svg",
22
+ "lint": "eslint ./src ./example ./tests && yarn prettier *.md --check",
23
+ "mdfix": "prettier *.md --write",
25
24
  "precommit": "yarn lint && yarn test && yarn build && git add example/example.swagger.yaml example/example.client.ts ./LICENSE ./coverage.svg",
26
25
  "prepublishOnly": "yarn lint && yarn test && yarn build",
27
26
  "postversion": "git push && git push --tags",
@@ -29,42 +28,44 @@
29
28
  },
30
29
  "main": "dist/index.js",
31
30
  "types": "dist/index.d.ts",
32
- "module": "dist-esm/index.js",
31
+ "module": "dist/esm/index.js",
33
32
  "exports": {
34
- "types": "./dist/index.d.ts",
33
+ "types": "./dist/dts/index.d.ts",
35
34
  "require": "./dist/index.js",
36
- "import": "./dist-esm/index.js"
35
+ "import": "./dist/esm/index.js"
37
36
  },
38
37
  "dependencies": {
39
38
  "@types/compression": "^1.7.2",
40
- "@types/express": "^4.17.13",
41
39
  "@types/express-fileupload": "^1.2.2",
42
40
  "@types/http-errors": "^2.0.0",
43
41
  "@types/node": "*",
44
42
  "compression": "1.7.4",
45
- "express": "4.18.2",
46
43
  "express-fileupload": "1.4.0",
47
44
  "http-errors": "2.0.0",
48
45
  "mime": "3.0.0",
49
46
  "openapi3-ts": "3.2.0",
50
47
  "ramda": "0.28.0",
51
48
  "triple-beam": "1.3.0",
52
- "typescript": "4.9.5",
53
- "winston": "3.8.2",
54
- "zod": "3.21.4"
49
+ "winston": "3.8.2"
55
50
  },
56
51
  "peerDependencies": {
52
+ "@types/express": "^4.17.13",
57
53
  "@types/jest": "*",
54
+ "express": "^4.18.2",
58
55
  "jest": ">=25 <30",
59
- "typescript": "^4.1"
56
+ "typescript": "^4.9.3",
57
+ "zod": "^3.21.4"
60
58
  },
61
59
  "peerDependenciesMeta": {
62
- "jest": {
60
+ "@types/express": {
63
61
  "optional": true
64
62
  },
65
63
  "@types/jest": {
66
64
  "optional": true
67
65
  },
66
+ "jest": {
67
+ "optional": true
68
+ },
68
69
  "typescript": {
69
70
  "optional": true
70
71
  }
@@ -72,6 +73,7 @@
72
73
  "devDependencies": {
73
74
  "@tsconfig/node14": "^1.0.3",
74
75
  "@types/cors": "^2.8.12",
76
+ "@types/express": "^4.17.13",
75
77
  "@types/has-ansi": "^5.0.0",
76
78
  "@types/jest": "^29.0.0",
77
79
  "@types/mime": "^3.0.1",
@@ -88,6 +90,7 @@
88
90
  "eslint-config-prettier": "^8.5.0",
89
91
  "eslint-plugin-import": "^2.26.0",
90
92
  "eslint-plugin-prettier": "^4.2.1",
93
+ "express": "^4.18.2",
91
94
  "form-data": "^4.0.0",
92
95
  "has-ansi": "^4.0.1",
93
96
  "husky": "^8.0.1",
@@ -99,10 +102,13 @@
99
102
  "strip-ansi": "^6.0.1",
100
103
  "ts-jest": "^29.0.0",
101
104
  "ts-node": "^10.9.1",
102
- "tsd": "^0.26.0"
105
+ "tsd": "^0.26.0",
106
+ "tsup": "^6.6.3",
107
+ "typescript": "^4.9.5",
108
+ "zod": "^3.21.4"
103
109
  },
104
110
  "engines": {
105
- "node": "^14.17.0 || ^16.10.0 || ^18.0.0 || ^19.0.0"
111
+ "node": "^14.18.0 || ^16.10.0 || ^18.0.0 || ^19.0.0"
106
112
  },
107
113
  "repository": {
108
114
  "type": "git",
@@ -1,16 +0,0 @@
1
- import { z } from "zod";
2
- export interface ApiResponse<S extends z.ZodTypeAny> {
3
- schema: S;
4
- /**
5
- * @default 200 for a positive response
6
- * @default 400 for a negative response
7
- * */
8
- statusCode?: number;
9
- /**
10
- * @default "application/json"
11
- * @override mimeTypes
12
- * */
13
- mimeType?: string;
14
- /** @default [ "application/json" ] */
15
- mimeTypes?: [string, ...string[]];
16
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=api-response.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-response.js","sourceRoot":"","sources":["../src/api-response.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- import ts from "typescript";
2
- export declare const f: ts.NodeFactory;
3
- export declare const exportModifier: ts.ModifierToken<ts.SyntaxKind.ExportKeyword>[];
4
- export declare const publicReadonlyModifier: (ts.ModifierToken<ts.SyntaxKind.PublicKeyword> | ts.ModifierToken<ts.SyntaxKind.ReadonlyKeyword>)[];
5
- export declare const protectedReadonlyModifier: (ts.ModifierToken<ts.SyntaxKind.ReadonlyKeyword> | ts.ModifierToken<ts.SyntaxKind.ProtectedKeyword>)[];
6
- export declare const makeTemplate: (names: (ts.Identifier | string)[]) => ts.TemplateLiteralTypeNode;
7
- export declare const parametricIndexNode: ts.TemplateLiteralTypeNode;
8
- export declare const makeParam: (name: string, type?: ts.TypeNode, mod?: ts.Modifier[]) => ts.ParameterDeclaration;
9
- export declare const makeParams: (params: Record<string, ts.TypeNode | undefined>, mod?: ts.Modifier[]) => ts.ParameterDeclaration[];
10
- export declare const makeRecord: (key: ts.Identifier | ts.KeywordTypeSyntaxKind, value: ts.KeywordTypeSyntaxKind) => ts.ExpressionWithTypeArguments;
11
- export declare const makeEmptyInitializingConstructor: (params: ts.ParameterDeclaration[]) => ts.ConstructorDeclaration;
12
- export declare const makeQuotedProp: (name: string, ref: string) => ts.PropertySignature;
13
- export declare const makeConst: (name: string, value: ts.Expression) => ts.VariableDeclarationList;
14
- export declare const makePublicLiteralType: (name: string, literals: string[]) => ts.TypeAliasDeclaration;
15
- export declare const makePublicType: (name: string, value: ts.TypeNode) => ts.TypeAliasDeclaration;
16
- export declare const makePublicReadonlyProp: (name: string, type: ts.TypeNode, exp: ts.Expression) => ts.PropertyDeclaration;
17
- export declare const makePublicClass: (name: string, constructor: ts.ConstructorDeclaration, props?: ts.PropertyDeclaration[]) => ts.ClassDeclaration;
18
- export declare const makeIndexedPromise: (type: ts.Identifier, index: ts.TypeNode) => ts.TypeReferenceNode;
19
- export declare const makeAnyPromise: () => ts.TypeReferenceNode;
20
- export declare const makePublicExtendedInterface: (name: string, extender: ts.HeritageClause[], props: ts.PropertySignature[]) => ts.InterfaceDeclaration;
21
- export declare const makeTypeParams: (params: Record<string, ts.Identifier>) => ts.TypeParameterDeclaration[];
22
- export declare const makeImplementationCallFn: (params: string[], args: ts.Expression[]) => ts.ArrowFunction;
23
- export declare const makeObjectKeysReducer: (obj: string, exp: ts.Expression, initial: ts.Expression) => ts.CallExpression;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeObjectKeysReducer = exports.makeImplementationCallFn = exports.makeTypeParams = exports.makePublicExtendedInterface = exports.makeAnyPromise = exports.makeIndexedPromise = exports.makePublicClass = exports.makePublicReadonlyProp = exports.makePublicType = exports.makePublicLiteralType = exports.makeConst = exports.makeQuotedProp = exports.makeEmptyInitializingConstructor = exports.makeRecord = exports.makeParams = exports.makeParam = exports.parametricIndexNode = exports.makeTemplate = exports.protectedReadonlyModifier = exports.publicReadonlyModifier = exports.exportModifier = exports.f = void 0;
7
- const typescript_1 = __importDefault(require("typescript"));
8
- exports.f = typescript_1.default.factory;
9
- exports.exportModifier = [exports.f.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)];
10
- exports.publicReadonlyModifier = [
11
- exports.f.createModifier(typescript_1.default.SyntaxKind.PublicKeyword),
12
- exports.f.createModifier(typescript_1.default.SyntaxKind.ReadonlyKeyword),
13
- ];
14
- exports.protectedReadonlyModifier = [
15
- exports.f.createModifier(typescript_1.default.SyntaxKind.ProtectedKeyword),
16
- exports.f.createModifier(typescript_1.default.SyntaxKind.ReadonlyKeyword),
17
- ];
18
- const emptyPrefix = exports.f.createTemplateHead("");
19
- const emptyEnding = exports.f.createTemplateTail("");
20
- const spacingSuffix = exports.f.createTemplateMiddle(" ");
21
- const makeTemplate = (names) => exports.f.createTemplateLiteralType(emptyPrefix, names.map((name, index) => exports.f.createTemplateLiteralTypeSpan(exports.f.createTypeReferenceNode(name), index === names.length - 1 ? emptyEnding : spacingSuffix)));
22
- exports.makeTemplate = makeTemplate;
23
- exports.parametricIndexNode = (0, exports.makeTemplate)(["M", "P"]);
24
- const makeParam = (name, type, mod) => exports.f.createParameterDeclaration(mod, undefined, name, undefined, type);
25
- exports.makeParam = makeParam;
26
- const makeParams = (params, mod) => Object.keys(params).reduce((acc, name) => acc.concat((0, exports.makeParam)(name, params[name], mod)), []);
27
- exports.makeParams = makeParams;
28
- const makeRecord = (key, value) => exports.f.createExpressionWithTypeArguments(exports.f.createIdentifier("Record"), [
29
- typeof key === "number"
30
- ? exports.f.createKeywordTypeNode(key)
31
- : exports.f.createTypeReferenceNode(key),
32
- exports.f.createKeywordTypeNode(value),
33
- ]);
34
- exports.makeRecord = makeRecord;
35
- const makeEmptyInitializingConstructor = (params) => exports.f.createConstructorDeclaration(undefined, params, exports.f.createBlock([]));
36
- exports.makeEmptyInitializingConstructor = makeEmptyInitializingConstructor;
37
- const makeQuotedProp = (name, ref) => exports.f.createPropertySignature(undefined, `"${name}"`, undefined, exports.f.createTypeReferenceNode(ref));
38
- exports.makeQuotedProp = makeQuotedProp;
39
- const makeConst = (name, value) => exports.f.createVariableDeclarationList([exports.f.createVariableDeclaration(name, undefined, undefined, value)], typescript_1.default.NodeFlags.Const);
40
- exports.makeConst = makeConst;
41
- const makePublicLiteralType = (name, literals) => exports.f.createTypeAliasDeclaration(exports.exportModifier, name, undefined, exports.f.createUnionTypeNode(literals.map((option) => exports.f.createLiteralTypeNode(exports.f.createStringLiteral(option)))));
42
- exports.makePublicLiteralType = makePublicLiteralType;
43
- const makePublicType = (name, value) => exports.f.createTypeAliasDeclaration(exports.exportModifier, name, undefined, value);
44
- exports.makePublicType = makePublicType;
45
- const makePublicReadonlyProp = (name, type, exp) => exports.f.createPropertyDeclaration(exports.publicReadonlyModifier, name, undefined, type, exp);
46
- exports.makePublicReadonlyProp = makePublicReadonlyProp;
47
- const makePublicClass = (name, constructor, props = []) => exports.f.createClassDeclaration(exports.exportModifier, name, undefined, undefined, [
48
- constructor,
49
- ...props,
50
- ]);
51
- exports.makePublicClass = makePublicClass;
52
- const makeIndexedPromise = (type, index) => exports.f.createTypeReferenceNode("Promise", [
53
- exports.f.createIndexedAccessTypeNode(exports.f.createTypeReferenceNode(type), index),
54
- ]);
55
- exports.makeIndexedPromise = makeIndexedPromise;
56
- const makeAnyPromise = () => exports.f.createTypeReferenceNode("Promise", [
57
- exports.f.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword),
58
- ]);
59
- exports.makeAnyPromise = makeAnyPromise;
60
- const makePublicExtendedInterface = (name, extender, props) => exports.f.createInterfaceDeclaration(exports.exportModifier, name, undefined, extender, props);
61
- exports.makePublicExtendedInterface = makePublicExtendedInterface;
62
- const makeTypeParams = (params) => Object.keys(params).reduce((acc, name) => acc.concat(exports.f.createTypeParameterDeclaration([], name, exports.f.createTypeReferenceNode(params[name]))), []);
63
- exports.makeTypeParams = makeTypeParams;
64
- const makeImplementationCallFn = (params, args) => exports.f.createArrowFunction(undefined, undefined, params.map((key) => (0, exports.makeParam)(key)), undefined, undefined, exports.f.createCallExpression(exports.f.createPropertyAccessExpression(exports.f.createThis(), "implementation"), undefined, args));
65
- exports.makeImplementationCallFn = makeImplementationCallFn;
66
- const makeObjectKeysReducer = (obj, exp, initial) => exports.f.createCallExpression(exports.f.createPropertyAccessExpression(exports.f.createCallExpression(exports.f.createPropertyAccessExpression(exports.f.createIdentifier("Object"), "keys"), undefined, [exports.f.createIdentifier(obj)]), "reduce"), undefined, [
67
- exports.f.createArrowFunction(undefined, undefined, (0, exports.makeParams)({ acc: undefined, key: undefined }), undefined, undefined, exp),
68
- initial,
69
- ]);
70
- exports.makeObjectKeysReducer = makeObjectKeysReducer;
71
- //# sourceMappingURL=client-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAEf,QAAA,CAAC,GAAG,oBAAE,CAAC,OAAO,CAAC;AAEf,QAAA,cAAc,GAAG,CAAC,SAAC,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAEjE,QAAA,sBAAsB,GAAG;IACpC,SAAC,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC;IAC7C,SAAC,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;CAChD,CAAC;AAEW,QAAA,yBAAyB,GAAG;IACvC,SAAC,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;IAChD,SAAC,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;CAChD,CAAC;AAEF,MAAM,WAAW,GAAG,SAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE7C,MAAM,WAAW,GAAG,SAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE7C,MAAM,aAAa,GAAG,SAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAE3C,MAAM,YAAY,GAAG,CAAC,KAAiC,EAAE,EAAE,CAChE,SAAC,CAAC,yBAAyB,CACzB,WAAW,EACX,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACxB,SAAC,CAAC,6BAA6B,CAC7B,SAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAC/B,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CACzD,CACF,CACF,CAAC;AATS,QAAA,YAAY,gBASrB;AAES,QAAA,mBAAmB,GAAG,IAAA,oBAAY,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAErD,MAAM,SAAS,GAAG,CACvB,IAAY,EACZ,IAAkB,EAClB,GAAmB,EACnB,EAAE,CAAC,SAAC,CAAC,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAJ5D,QAAA,SAAS,aAImD;AAElE,MAAM,UAAU,GAAG,CACxB,MAA+C,EAC/C,GAAmB,EACnB,EAAE,CACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAA,iBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAC7D,EAA+B,CAChC,CAAC;AAPS,QAAA,UAAU,cAOnB;AAEG,MAAM,UAAU,GAAG,CACxB,GAA6C,EAC7C,KAA+B,EAC/B,EAAE,CACF,SAAC,CAAC,iCAAiC,CAAC,SAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;IAChE,OAAO,GAAG,KAAK,QAAQ;QACrB,CAAC,CAAC,SAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAC9B,CAAC,CAAC,SAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC;IAClC,SAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC;CAC/B,CAAC,CAAC;AATQ,QAAA,UAAU,cASlB;AAEE,MAAM,gCAAgC,GAAG,CAC9C,MAAiC,EACjC,EAAE,CAAC,SAAC,CAAC,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAF7D,QAAA,gCAAgC,oCAE6B;AAEnE,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAC1D,SAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,IAAI,IAAI,GAAG,EACX,SAAS,EACT,SAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAC/B,CAAC;AANS,QAAA,cAAc,kBAMvB;AAEG,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAoB,EAAE,EAAE,CAC9D,SAAC,CAAC,6BAA6B,CAC7B,CAAC,SAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAChE,oBAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CAAC;AAJS,QAAA,SAAS,aAIlB;AAEG,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,EAAE,CACxE,SAAC,CAAC,0BAA0B,CAC1B,sBAAc,EACd,IAAI,EACJ,SAAS,EACT,SAAC,CAAC,mBAAmB,CACnB,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtB,SAAC,CAAC,qBAAqB,CAAC,SAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CACvD,CACF,CACF,CAAC;AAVS,QAAA,qBAAqB,yBAU9B;AAEG,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAkB,EAAE,EAAE,CACjE,SAAC,CAAC,0BAA0B,CAAC,sBAAc,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAD1D,QAAA,cAAc,kBAC4C;AAEhE,MAAM,sBAAsB,GAAG,CACpC,IAAY,EACZ,IAAiB,EACjB,GAAkB,EAClB,EAAE,CACF,SAAC,CAAC,yBAAyB,CACzB,8BAAsB,EACtB,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,GAAG,CACJ,CAAC;AAXS,QAAA,sBAAsB,0BAW/B;AAEG,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,WAAsC,EACtC,QAAkC,EAAE,EACpC,EAAE,CACF,SAAC,CAAC,sBAAsB,CAAC,sBAAc,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE;IACnE,WAAW;IACX,GAAG,KAAK;CACT,CAAC,CAAC;AARQ,QAAA,eAAe,mBAQvB;AAEE,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAE,KAAkB,EAAE,EAAE,CAC5E,SAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE;IACnC,SAAC,CAAC,2BAA2B,CAAC,SAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;CACtE,CAAC,CAAC;AAHQ,QAAA,kBAAkB,sBAG1B;AAEE,MAAM,cAAc,GAAG,GAAG,EAAE,CACjC,SAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE;IACnC,SAAC,CAAC,qBAAqB,CAAC,oBAAE,CAAC,UAAU,CAAC,UAAU,CAAC;CAClD,CAAC,CAAC;AAHQ,QAAA,cAAc,kBAGtB;AAEE,MAAM,2BAA2B,GAAG,CACzC,IAAY,EACZ,QAA6B,EAC7B,KAA6B,EAC7B,EAAE,CACF,SAAC,CAAC,0BAA0B,CAC1B,sBAAc,EACd,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,CACN,CAAC;AAXS,QAAA,2BAA2B,+BAWpC;AAEG,MAAM,cAAc,GAAG,CAAC,MAAqC,EAAE,EAAE,CACtE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACZ,GAAG,CAAC,MAAM,CACR,SAAC,CAAC,8BAA8B,CAC9B,EAAE,EACF,IAAI,EACJ,SAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACxC,CACF,EACH,EAAmC,CACpC,CAAC;AAXS,QAAA,cAAc,kBAWvB;AAEG,MAAM,wBAAwB,GAAG,CACtC,MAAgB,EAChB,IAAqB,EACrB,EAAE,CACF,SAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,EACnC,SAAS,EACT,SAAS,EACT,SAAC,CAAC,oBAAoB,CACpB,SAAC,CAAC,8BAA8B,CAAC,SAAC,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,EAClE,SAAS,EACT,IAAI,CACL,CACF,CAAC;AAfS,QAAA,wBAAwB,4BAejC;AAEG,MAAM,qBAAqB,GAAG,CACnC,GAAW,EACX,GAAkB,EAClB,OAAsB,EACtB,EAAE,CACF,SAAC,CAAC,oBAAoB,CACpB,SAAC,CAAC,8BAA8B,CAC9B,SAAC,CAAC,oBAAoB,CACpB,SAAC,CAAC,8BAA8B,CAAC,SAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EACtE,SAAS,EACT,CAAC,SAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC1B,EACD,QAAQ,CACT,EACD,SAAS,EACT;IACE,SAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,IAAA,kBAAU,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAC9C,SAAS,EACT,SAAS,EACT,GAAG,CACJ;IACD,OAAO;CACR,CACF,CAAC;AA1BS,QAAA,qBAAqB,yBA0B9B"}
package/dist/client.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import ts from "typescript";
2
- import { Routing } from "./routing";
3
- interface Registry {
4
- [METHOD_PATH: string]: Record<"in" | "out", string> & {
5
- isJson: boolean;
6
- };
7
- }
8
- export declare class Client {
9
- protected agg: ts.Node[];
10
- protected registry: Registry;
11
- protected paths: string[];
12
- constructor(routing: Routing);
13
- print(printerOptions?: ts.PrinterOptions): string;
14
- }
15
- export {};
package/dist/client.js DELETED
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Client = void 0;
7
- const typescript_1 = __importDefault(require("typescript"));
8
- const client_helpers_1 = require("./client-helpers");
9
- const common_helpers_1 = require("./common-helpers");
10
- const method_1 = require("./method");
11
- const mime_1 = require("./mime");
12
- const routing_walker_1 = require("./routing-walker");
13
- const zts_1 = require("./zts");
14
- const zts_helpers_1 = require("./zts-helpers");
15
- class Client {
16
- constructor(routing) {
17
- this.agg = [];
18
- this.registry = {};
19
- this.paths = [];
20
- (0, routing_walker_1.walkRouting)({
21
- routing,
22
- onEndpoint: (endpoint, path, method) => {
23
- const inputId = (0, common_helpers_1.makeCleanId)(path, method, "input");
24
- const responseId = (0, common_helpers_1.makeCleanId)(path, method, "response");
25
- const input = (0, zts_1.zodToTs)({
26
- schema: endpoint.getSchema("input"),
27
- isResponse: false,
28
- });
29
- const response = (0, zts_1.zodToTs)({
30
- isResponse: true,
31
- schema: endpoint
32
- .getSchema("positive")
33
- .or(endpoint.getSchema("negative")),
34
- });
35
- const inputAlias = (0, zts_helpers_1.createTypeAlias)(input, inputId);
36
- const responseAlias = (0, zts_helpers_1.createTypeAlias)(response, responseId);
37
- this.agg.push(inputAlias);
38
- this.agg.push(responseAlias);
39
- if (method !== "options") {
40
- this.paths.push(path);
41
- this.registry[`${method} ${path}`] = {
42
- in: inputId,
43
- out: responseId,
44
- isJson: endpoint.getMimeTypes("positive").includes(mime_1.mimeJson),
45
- };
46
- }
47
- },
48
- });
49
- const pathNode = (0, client_helpers_1.makePublicLiteralType)("Path", this.paths);
50
- const methodNode = (0, client_helpers_1.makePublicLiteralType)("Method", method_1.methods);
51
- const methodPathNode = (0, client_helpers_1.makePublicType)("MethodPath", (0, client_helpers_1.makeTemplate)([methodNode.name, pathNode.name]));
52
- const extenderClause = [
53
- client_helpers_1.f.createHeritageClause(typescript_1.default.SyntaxKind.ExtendsKeyword, [
54
- (0, client_helpers_1.makeRecord)(methodPathNode.name, typescript_1.default.SyntaxKind.AnyKeyword),
55
- ]),
56
- ];
57
- const inputNode = (0, client_helpers_1.makePublicExtendedInterface)("Input", extenderClause, Object.keys(this.registry).map((methodPath) => (0, client_helpers_1.makeQuotedProp)(methodPath, this.registry[methodPath].in)));
58
- const responseNode = (0, client_helpers_1.makePublicExtendedInterface)("Response", extenderClause, Object.keys(this.registry).map((methodPath) => (0, client_helpers_1.makeQuotedProp)(methodPath, this.registry[methodPath].out)));
59
- const jsonEndpointsNode = client_helpers_1.f.createVariableStatement(client_helpers_1.exportModifier, (0, client_helpers_1.makeConst)("jsonEndpoints", client_helpers_1.f.createObjectLiteralExpression(Object.keys(this.registry)
60
- .filter((methodPath) => this.registry[methodPath].isJson)
61
- .map((methodPath) => client_helpers_1.f.createPropertyAssignment(`"${methodPath}"`, client_helpers_1.f.createTrue())))));
62
- const providerNode = (0, client_helpers_1.makePublicType)("Provider", client_helpers_1.f.createFunctionTypeNode((0, client_helpers_1.makeTypeParams)({ M: methodNode.name, P: pathNode.name }), (0, client_helpers_1.makeParams)({
63
- method: client_helpers_1.f.createTypeReferenceNode("M"),
64
- path: client_helpers_1.f.createTypeReferenceNode("P"),
65
- params: client_helpers_1.f.createIndexedAccessTypeNode(client_helpers_1.f.createTypeReferenceNode(inputNode.name), client_helpers_1.parametricIndexNode),
66
- }), (0, client_helpers_1.makeIndexedPromise)(responseNode.name, client_helpers_1.parametricIndexNode)));
67
- const implementationNode = (0, client_helpers_1.makePublicType)("Implementation", client_helpers_1.f.createFunctionTypeNode(undefined, (0, client_helpers_1.makeParams)({
68
- method: client_helpers_1.f.createTypeReferenceNode(methodNode.name),
69
- path: client_helpers_1.f.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),
70
- params: (0, client_helpers_1.makeRecord)(typescript_1.default.SyntaxKind.StringKeyword, typescript_1.default.SyntaxKind.AnyKeyword),
71
- }), (0, client_helpers_1.makeAnyPromise)()));
72
- const keyParamExpression = client_helpers_1.f.createTemplateExpression(client_helpers_1.f.createTemplateHead(":"), [
73
- client_helpers_1.f.createTemplateSpan(client_helpers_1.f.createIdentifier("key"), client_helpers_1.f.createTemplateTail("")),
74
- ]);
75
- const clientNode = (0, client_helpers_1.makePublicClass)("ExpressZodAPIClient", (0, client_helpers_1.makeEmptyInitializingConstructor)([
76
- (0, client_helpers_1.makeParam)("implementation", client_helpers_1.f.createTypeReferenceNode(implementationNode.name), client_helpers_1.protectedReadonlyModifier),
77
- ]), [
78
- (0, client_helpers_1.makePublicReadonlyProp)("provide", client_helpers_1.f.createTypeReferenceNode(providerNode.name), (0, client_helpers_1.makeImplementationCallFn)(["method", "path", "params"], [
79
- client_helpers_1.f.createIdentifier("method"),
80
- (0, client_helpers_1.makeObjectKeysReducer)("params", client_helpers_1.f.createCallExpression(client_helpers_1.f.createPropertyAccessExpression(client_helpers_1.f.createIdentifier("acc"), "replace"), undefined, [
81
- keyParamExpression,
82
- client_helpers_1.f.createElementAccessExpression(client_helpers_1.f.createIdentifier("params"), client_helpers_1.f.createIdentifier("key")),
83
- ]), client_helpers_1.f.createIdentifier("path")),
84
- (0, client_helpers_1.makeObjectKeysReducer)("params", client_helpers_1.f.createConditionalExpression(client_helpers_1.f.createBinaryExpression(client_helpers_1.f.createCallExpression(client_helpers_1.f.createPropertyAccessExpression(client_helpers_1.f.createIdentifier("path"), "indexOf"), undefined, [keyParamExpression]), typescript_1.default.SyntaxKind.GreaterThanEqualsToken, client_helpers_1.f.createNumericLiteral(0)), undefined, client_helpers_1.f.createIdentifier("acc"), undefined, client_helpers_1.f.createObjectLiteralExpression([
85
- client_helpers_1.f.createSpreadAssignment(client_helpers_1.f.createIdentifier("acc")),
86
- client_helpers_1.f.createPropertyAssignment("[key]", // @todo is there a better way to do it?
87
- client_helpers_1.f.createElementAccessExpression(client_helpers_1.f.createIdentifier("params"), client_helpers_1.f.createIdentifier("key"))),
88
- ])), client_helpers_1.f.createObjectLiteralExpression()),
89
- ])),
90
- ]);
91
- typescript_1.default.addSyntheticLeadingComment(clientNode, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, "\n" +
92
- "export const exampleImplementation: Implementation = async (\n" +
93
- " method,\n" +
94
- " path,\n" +
95
- " params\n" +
96
- ") => {\n" +
97
- " const searchParams =\n" +
98
- ' method === "get" ? `?${new URLSearchParams(params)}` : "";\n' +
99
- " const response = await fetch(`https://example.com${path}${searchParams}`, {\n" +
100
- " method: method.toUpperCase(),\n" +
101
- " headers:\n" +
102
- ' method === "get" ? undefined : { "Content-Type": "application/json" },\n' +
103
- ' body: method === "get" ? undefined : JSON.stringify(params),\n' +
104
- " });\n" +
105
- " if (`${method} ${path}` in jsonEndpoints) {\n" +
106
- " return response.json();\n" +
107
- " }\n" +
108
- " return response.text();\n" +
109
- "};\n" +
110
- "\n" +
111
- "const client = new ExpressZodAPIClient(exampleImplementation);\n" +
112
- 'client.provide("get", "/v1/user/retrieve", { id: "10" });\n', true);
113
- this.agg.push(pathNode, methodNode, methodPathNode, inputNode, responseNode, jsonEndpointsNode, providerNode, implementationNode, clientNode);
114
- }
115
- print(printerOptions) {
116
- return this.agg.map((node) => (0, zts_helpers_1.printNode)(node, printerOptions)).join("\n\n");
117
- }
118
- }
119
- exports.Client = Client;
120
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { Request } from "express";
2
- import { z } from "zod";
3
- import { CommonConfig, InputSources, LoggerConfig } from "./config-type";
4
- import { IOSchema } from "./io-schema";
5
- import { Method } from "./method";
6
- export type FlatObject = Record<string, any>;
7
- /** @see https://expressjs.com/en/guide/routing.html */
8
- export declare const routePathParamsRegex: RegExp;
9
- export declare const defaultInputSources: InputSources;
10
- export declare const getActualMethod: (request: Request) => Method | "options";
11
- export declare function getInput(request: Request, inputAssignment: CommonConfig["inputSources"]): any;
12
- export declare function isLoggerConfig(logger: any): logger is LoggerConfig;
13
- export declare function isValidDate(date: Date): boolean;
14
- export declare function makeErrorFromAnything<T extends Error>(subject: T): T;
15
- export declare function makeErrorFromAnything(subject: any): Error;
16
- export declare function getMessageFromError(error: Error): string;
17
- export declare function getStatusCodeFromError(error: Error): number;
18
- type Examples<T extends z.ZodTypeAny> = Readonly<z.input<T>[] | z.output<T>[]>;
19
- export declare const getExamples: <T extends z.ZodTypeAny>(schema: T, parseToOutput: boolean) => Examples<T>;
20
- export declare const combinations: <T extends unknown>(a: T[], b: T[]) => {
21
- type: "single";
22
- value: T[];
23
- } | {
24
- type: "tuple";
25
- value: [T, T][];
26
- };
27
- export declare function getRoutePathParams(path: string): string[];
28
- export declare function hasTopLevelTransformingEffect(schema: IOSchema): boolean;
29
- export declare function hasUpload(schema: z.ZodTypeAny): boolean;
30
- /**
31
- * @desc isNullable() and isOptional() validate the schema's input
32
- * @desc They always return true in case of coercion, which should be taken into account when depicting response
33
- */
34
- export declare const hasCoercion: (schema: z.ZodTypeAny) => boolean;
35
- export declare const makeCleanId: (path: string, method: string, suffix?: string) => string;
36
- export declare const tryToTransform: ({ effect, sample, }: {
37
- effect: z.Effect<any> & {
38
- type: "transform";
39
- };
40
- sample: any;
41
- }) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | undefined;
42
- export type ErrMessage = Exclude<Parameters<typeof z.ZodString.prototype.email>[0], undefined>;
43
- export declare const errToObj: (message: ErrMessage | undefined) => {
44
- message?: string | undefined;
45
- };
46
- export {};