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.
- package/CHANGELOG.md +62 -0
- package/README.md +28 -20
- package/SECURITY.md +14 -13
- package/dist/esm/index.js +58 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/index.d.ts +776 -21
- package/dist/index.js +55 -69
- package/dist/index.js.map +1 -1
- package/package.json +31 -25
- package/dist/api-response.d.ts +0 -16
- package/dist/api-response.js +0 -3
- package/dist/api-response.js.map +0 -1
- package/dist/client-helpers.d.ts +0 -23
- package/dist/client-helpers.js +0 -71
- package/dist/client-helpers.js.map +0 -1
- package/dist/client.d.ts +0 -15
- package/dist/client.js +0 -120
- package/dist/client.js.map +0 -1
- package/dist/common-helpers.d.ts +0 -46
- package/dist/common-helpers.js +0 -207
- package/dist/common-helpers.js.map +0 -1
- package/dist/config-type.d.ts +0 -59
- package/dist/config-type.js +0 -11
- package/dist/config-type.js.map +0 -1
- package/dist/date-in-schema.d.ts +0 -11
- package/dist/date-in-schema.js +0 -46
- package/dist/date-in-schema.js.map +0 -1
- package/dist/date-out-schema.d.ts +0 -10
- package/dist/date-out-schema.js +0 -31
- package/dist/date-out-schema.js.map +0 -1
- package/dist/depends-on-method.d.ts +0 -10
- package/dist/depends-on-method.js +0 -32
- package/dist/depends-on-method.js.map +0 -1
- package/dist/endpoint.d.ts +0 -98
- package/dist/endpoint.js +0 -261
- package/dist/endpoint.js.map +0 -1
- package/dist/endpoints-factory.d.ts +0 -161
- package/dist/endpoints-factory.js +0 -68
- package/dist/endpoints-factory.js.map +0 -1
- package/dist/errors.d.ts +0 -35
- package/dist/errors.js +0 -64
- package/dist/errors.js.map +0 -1
- package/dist/extend-zod.d.ts +0 -22
- package/dist/extend-zod.js +0 -33
- package/dist/extend-zod.js.map +0 -1
- package/dist/file-schema.d.ts +0 -23
- package/dist/file-schema.js +0 -55
- package/dist/file-schema.js.map +0 -1
- package/dist/io-schema.d.ts +0 -16
- package/dist/io-schema.js +0 -21
- package/dist/io-schema.js.map +0 -1
- package/dist/logger.d.ts +0 -3
- package/dist/logger.js +0 -54
- package/dist/logger.js.map +0 -1
- package/dist/logical-container.d.ts +0 -16
- package/dist/logical-container.js +0 -85
- package/dist/logical-container.js.map +0 -1
- package/dist/metadata.d.ts +0 -27
- package/dist/metadata.js +0 -58
- package/dist/metadata.js.map +0 -1
- package/dist/method.d.ts +0 -8
- package/dist/method.js +0 -5
- package/dist/method.js.map +0 -1
- package/dist/middleware.d.ts +0 -32
- package/dist/middleware.js +0 -16
- package/dist/middleware.js.map +0 -1
- package/dist/mime.d.ts +0 -2
- package/dist/mime.js +0 -10
- package/dist/mime.js.map +0 -1
- package/dist/mock.d.ts +0 -38
- package/dist/mock.js +0 -66
- package/dist/mock.js.map +0 -1
- package/dist/open-api-helpers.d.ts +0 -83
- package/dist/open-api-helpers.js +0 -621
- package/dist/open-api-helpers.js.map +0 -1
- package/dist/open-api.d.ts +0 -25
- package/dist/open-api.js +0 -98
- package/dist/open-api.js.map +0 -1
- package/dist/result-handler.d.ts +0 -151
- package/dist/result-handler.js +0 -71
- package/dist/result-handler.js.map +0 -1
- package/dist/routing-walker.d.ts +0 -12
- package/dist/routing-walker.js +0 -55
- package/dist/routing-walker.js.map +0 -1
- package/dist/routing.d.ts +0 -15
- package/dist/routing.js +0 -25
- package/dist/routing.js.map +0 -1
- package/dist/schema-walker.d.ts +0 -23
- package/dist/schema-walker.js +0 -26
- package/dist/schema-walker.js.map +0 -1
- package/dist/security.d.ts +0 -72
- package/dist/security.js +0 -3
- package/dist/security.js.map +0 -1
- package/dist/serve-static.d.ts +0 -9
- package/dist/serve-static.js +0 -17
- package/dist/serve-static.js.map +0 -1
- package/dist/server.d.ts +0 -20
- package/dist/server.js +0 -131
- package/dist/server.js.map +0 -1
- package/dist/startup-logo.d.ts +0 -1
- package/dist/startup-logo.js +0 -27
- package/dist/startup-logo.js.map +0 -1
- package/dist/upload-schema.d.ts +0 -11
- package/dist/upload-schema.js +0 -42
- package/dist/upload-schema.js.map +0 -1
- package/dist/zts-helpers.d.ts +0 -37
- package/dist/zts-helpers.js +0 -60
- package/dist/zts-helpers.js.map +0 -1
- package/dist/zts.d.ts +0 -31
- package/dist/zts.js +0 -147
- package/dist/zts.js.map +0 -1
- package/dist-esm/api-response.js +0 -2
- package/dist-esm/api-response.js.map +0 -1
- package/dist-esm/client-helpers.js +0 -48
- package/dist-esm/client-helpers.js.map +0 -1
- package/dist-esm/client.js +0 -113
- package/dist-esm/client.js.map +0 -1
- package/dist-esm/common-helpers.js +0 -188
- package/dist-esm/common-helpers.js.map +0 -1
- package/dist-esm/config-type.js +0 -7
- package/dist-esm/config-type.js.map +0 -1
- package/dist-esm/date-in-schema.js +0 -42
- package/dist-esm/date-in-schema.js.map +0 -1
- package/dist-esm/date-out-schema.js +0 -27
- package/dist-esm/date-out-schema.js.map +0 -1
- package/dist-esm/depends-on-method.js +0 -28
- package/dist-esm/depends-on-method.js.map +0 -1
- package/dist-esm/endpoint.js +0 -256
- package/dist-esm/endpoint.js.map +0 -1
- package/dist-esm/endpoints-factory.js +0 -64
- package/dist-esm/endpoints-factory.js.map +0 -1
- package/dist-esm/errors.js +0 -54
- package/dist-esm/errors.js.map +0 -1
- package/dist-esm/extend-zod.js +0 -16
- package/dist-esm/extend-zod.js.map +0 -1
- package/dist-esm/file-schema.js +0 -51
- package/dist-esm/file-schema.js.map +0 -1
- package/dist-esm/index.js +0 -19
- package/dist-esm/index.js.map +0 -1
- package/dist-esm/io-schema.js +0 -17
- package/dist-esm/io-schema.js.map +0 -1
- package/dist-esm/logger.js +0 -47
- package/dist-esm/logger.js.map +0 -1
- package/dist-esm/logical-container.js +0 -78
- package/dist-esm/logical-container.js.map +0 -1
- package/dist-esm/metadata.js +0 -51
- package/dist-esm/metadata.js.map +0 -1
- package/dist-esm/method.js +0 -2
- package/dist-esm/method.js.map +0 -1
- package/dist-esm/middleware.js +0 -12
- package/dist-esm/middleware.js.map +0 -1
- package/dist-esm/mime.js +0 -4
- package/dist-esm/mime.js.map +0 -1
- package/dist-esm/mock.js +0 -57
- package/dist-esm/mock.js.map +0 -1
- package/dist-esm/open-api-helpers.js +0 -575
- package/dist-esm/open-api-helpers.js.map +0 -1
- package/dist-esm/open-api.js +0 -94
- package/dist-esm/open-api.js.map +0 -1
- package/dist-esm/package.json +0 -1
- package/dist-esm/result-handler.js +0 -66
- package/dist-esm/result-handler.js.map +0 -1
- package/dist-esm/routing-walker.js +0 -51
- package/dist-esm/routing-walker.js.map +0 -1
- package/dist-esm/routing.js +0 -21
- package/dist-esm/routing.js.map +0 -1
- package/dist-esm/schema-walker.js +0 -22
- package/dist-esm/schema-walker.js.map +0 -1
- package/dist-esm/security.js +0 -2
- package/dist-esm/security.js.map +0 -1
- package/dist-esm/serve-static.js +0 -10
- package/dist-esm/serve-static.js.map +0 -1
- package/dist-esm/server.js +0 -98
- package/dist-esm/server.js.map +0 -1
- package/dist-esm/startup-logo.js +0 -23
- package/dist-esm/startup-logo.js.map +0 -1
- package/dist-esm/upload-schema.js +0 -38
- package/dist-esm/upload-schema.js.map +0 -1
- package/dist-esm/zts-helpers.js +0 -50
- package/dist-esm/zts-helpers.js.map +0 -1
- package/dist-esm/zts.js +0 -140
- 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": "
|
|
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:
|
|
9
|
-
"build:
|
|
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": "
|
|
19
|
-
"test: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:
|
|
22
|
-
"test:
|
|
23
|
-
"
|
|
24
|
-
"
|
|
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
|
|
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
|
|
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
|
-
"
|
|
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.
|
|
56
|
+
"typescript": "^4.9.3",
|
|
57
|
+
"zod": "^3.21.4"
|
|
60
58
|
},
|
|
61
59
|
"peerDependenciesMeta": {
|
|
62
|
-
"
|
|
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.
|
|
111
|
+
"node": "^14.18.0 || ^16.10.0 || ^18.0.0 || ^19.0.0"
|
|
106
112
|
},
|
|
107
113
|
"repository": {
|
|
108
114
|
"type": "git",
|
package/dist/api-response.d.ts
DELETED
|
@@ -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
|
-
}
|
package/dist/api-response.js
DELETED
package/dist/api-response.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-response.js","sourceRoot":"","sources":["../src/api-response.ts"],"names":[],"mappings":""}
|
package/dist/client-helpers.d.ts
DELETED
|
@@ -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;
|
package/dist/client-helpers.js
DELETED
|
@@ -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":"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"}
|
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
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/common-helpers.d.ts
DELETED
|
@@ -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 {};
|