express-zod-api 6.1.0-beta1 → 6.1.0-beta4
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 +34 -0
- package/dist/client-helpers.d.ts +10 -7
- package/dist/client-helpers.js +23 -7
- package/dist/client-helpers.js.map +1 -1
- package/dist/client.js +32 -9
- package/dist/client.js.map +1 -1
- package/dist-esm/client-helpers.js +17 -4
- package/dist-esm/client-helpers.js.map +1 -1
- package/dist-esm/client.js +33 -10
- package/dist-esm/client.js.map +1 -1
- package/dist-esm/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 6
|
|
4
4
|
|
|
5
|
+
### v6.1.0-beta4
|
|
6
|
+
|
|
7
|
+
- Feature #403 improvements (API Client Generator):
|
|
8
|
+
- Path params are excluded from `params` after being substituted.
|
|
9
|
+
|
|
10
|
+
### v6.1.0-beta3
|
|
11
|
+
|
|
12
|
+
- Feature #403 improvements (API Client Generator):
|
|
13
|
+
- `ExpressZodAPIClient` now accepts a function parameter of `Implementation` type.
|
|
14
|
+
- Its parameter `path` now contains substitutions of path params.
|
|
15
|
+
- Path params are being substituted by `ExpressZodAPIClient.provide()`.
|
|
16
|
+
- Call signature remains.
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// example frontend using the most simple Implementation based on fetch
|
|
20
|
+
import { ExpressZodAPIClient } from "./client.ts";
|
|
21
|
+
|
|
22
|
+
const client = new ExpressZodAPIClient(async (method, path, params) => {
|
|
23
|
+
const searchParams =
|
|
24
|
+
method === "get" ? `?${new URLSearchParams(params)}` : "";
|
|
25
|
+
const response = await fetch(`https://example.com${path}${searchParams}`, {
|
|
26
|
+
method,
|
|
27
|
+
body: method === "get" ? undefined : JSON.stringify(params),
|
|
28
|
+
});
|
|
29
|
+
return response.json();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
client.provide("get", "/v1/user/retrieve", { id: "10" });
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### v6.1.0-beta2
|
|
36
|
+
|
|
37
|
+
- Fixing bugs and taking into account path params for feature #403 (API Client Generator).
|
|
38
|
+
|
|
5
39
|
### v6.1.0-beta1
|
|
6
40
|
|
|
7
41
|
- This is a beta release of a new feature for public testing.
|
package/dist/client-helpers.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
export declare const f: ts.NodeFactory;
|
|
3
3
|
export declare const exportModifier: ts.ModifierToken<ts.SyntaxKind.ExportKeyword>[];
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
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
6
|
export declare const makeTemplate: (names: (ts.Identifier | string)[]) => ts.TemplateLiteralTypeNode;
|
|
7
7
|
export declare const parametricIndexNode: ts.TemplateLiteralTypeNode;
|
|
8
|
-
export declare const makeParam: (name: string, type
|
|
9
|
-
export declare const makeParams: (params: Record<string, ts.TypeNode>, mod?: ts.Modifier[] | undefined) => ts.ParameterDeclaration[];
|
|
10
|
-
export declare const makeRecord: (key: ts.Identifier, value: ts.KeywordTypeSyntaxKind) => ts.ExpressionWithTypeArguments;
|
|
11
|
-
export declare const
|
|
8
|
+
export declare const makeParam: (name: string, type?: ts.TypeNode | undefined, mod?: ts.Modifier[] | undefined) => ts.ParameterDeclaration;
|
|
9
|
+
export declare const makeParams: (params: Record<string, ts.TypeNode | undefined>, mod?: ts.Modifier[] | undefined) => 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
12
|
export declare const makeQuotedProp: (name: string, ref: string) => ts.PropertySignature;
|
|
13
13
|
export declare const makeConst: (name: string, value: ts.Expression) => ts.VariableDeclarationList;
|
|
14
14
|
export declare const makePublicLiteralType: (name: string, literals: string[]) => ts.TypeAliasDeclaration;
|
|
15
15
|
export declare const makePublicType: (name: string, value: ts.TypeNode) => ts.TypeAliasDeclaration;
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const makePublicReadonlyProp: (name: string, type: ts.TypeNode, exp: ts.Expression) => ts.PropertyDeclaration;
|
|
17
17
|
export declare const makePublicClass: (name: string, constructor: ts.ConstructorDeclaration, props?: ts.PropertyDeclaration[]) => ts.ClassDeclaration;
|
|
18
18
|
export declare const makeIndexedPromise: (type: ts.Identifier, index: ts.TypeNode) => ts.TypeReferenceNode;
|
|
19
|
+
export declare const makeAnyPromise: () => ts.TypeReferenceNode;
|
|
19
20
|
export declare const makePublicExtendedInterface: (name: string, extender: ts.HeritageClause[], props: ts.PropertySignature[]) => ts.InterfaceDeclaration;
|
|
20
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;
|
|
21
24
|
export declare const cleanId: (path: string, method: string, suffix: string) => string;
|
package/dist/client-helpers.js
CHANGED
|
@@ -3,15 +3,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.cleanId = exports.makeTypeParams = exports.makePublicExtendedInterface = exports.makeIndexedPromise = exports.makePublicClass = exports.
|
|
6
|
+
exports.cleanId = 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
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
8
|
exports.f = typescript_1.default.factory;
|
|
9
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
|
+
];
|
|
10
14
|
exports.protectedReadonlyModifier = [
|
|
11
15
|
exports.f.createModifier(typescript_1.default.SyntaxKind.ProtectedKeyword),
|
|
12
16
|
exports.f.createModifier(typescript_1.default.SyntaxKind.ReadonlyKeyword),
|
|
13
17
|
];
|
|
14
|
-
exports.publicModifier = [exports.f.createModifier(typescript_1.default.SyntaxKind.PublicKeyword)];
|
|
15
18
|
const emptyPrefix = exports.f.createTemplateHead("");
|
|
16
19
|
const emptyEnding = exports.f.createTemplateTail("");
|
|
17
20
|
const spacingSuffix = exports.f.createTemplateMiddle(" ");
|
|
@@ -23,12 +26,14 @@ exports.makeParam = makeParam;
|
|
|
23
26
|
const makeParams = (params, mod) => Object.keys(params).reduce((acc, name) => acc.concat((0, exports.makeParam)(name, params[name], mod)), []);
|
|
24
27
|
exports.makeParams = makeParams;
|
|
25
28
|
const makeRecord = (key, value) => exports.f.createExpressionWithTypeArguments(exports.f.createIdentifier("Record"), [
|
|
26
|
-
|
|
29
|
+
typeof key === "number"
|
|
30
|
+
? exports.f.createKeywordTypeNode(key)
|
|
31
|
+
: exports.f.createTypeReferenceNode(key),
|
|
27
32
|
exports.f.createKeywordTypeNode(value),
|
|
28
33
|
]);
|
|
29
34
|
exports.makeRecord = makeRecord;
|
|
30
|
-
const
|
|
31
|
-
exports.
|
|
35
|
+
const makeEmptyInitializingConstructor = (params) => exports.f.createConstructorDeclaration(undefined, undefined, params, exports.f.createBlock([]));
|
|
36
|
+
exports.makeEmptyInitializingConstructor = makeEmptyInitializingConstructor;
|
|
32
37
|
const makeQuotedProp = (name, ref) => exports.f.createPropertySignature(undefined, `"${name}"`, undefined, exports.f.createTypeReferenceNode(ref));
|
|
33
38
|
exports.makeQuotedProp = makeQuotedProp;
|
|
34
39
|
const makeConst = (name, value) => exports.f.createVariableDeclarationList([exports.f.createVariableDeclaration(name, undefined, undefined, value)], typescript_1.default.NodeFlags.Const);
|
|
@@ -37,18 +42,29 @@ const makePublicLiteralType = (name, literals) => exports.f.createTypeAliasDecla
|
|
|
37
42
|
exports.makePublicLiteralType = makePublicLiteralType;
|
|
38
43
|
const makePublicType = (name, value) => exports.f.createTypeAliasDeclaration(undefined, exports.exportModifier, name, undefined, value);
|
|
39
44
|
exports.makePublicType = makePublicType;
|
|
40
|
-
const
|
|
41
|
-
exports.
|
|
45
|
+
const makePublicReadonlyProp = (name, type, exp) => exports.f.createPropertyDeclaration(undefined, exports.publicReadonlyModifier, name, undefined, type, exp);
|
|
46
|
+
exports.makePublicReadonlyProp = makePublicReadonlyProp;
|
|
42
47
|
const makePublicClass = (name, constructor, props = []) => exports.f.createClassDeclaration(undefined, exports.exportModifier, name, undefined, undefined, [constructor, ...props]);
|
|
43
48
|
exports.makePublicClass = makePublicClass;
|
|
44
49
|
const makeIndexedPromise = (type, index) => exports.f.createTypeReferenceNode("Promise", [
|
|
45
50
|
exports.f.createIndexedAccessTypeNode(exports.f.createTypeReferenceNode(type), index),
|
|
46
51
|
]);
|
|
47
52
|
exports.makeIndexedPromise = makeIndexedPromise;
|
|
53
|
+
const makeAnyPromise = () => exports.f.createTypeReferenceNode("Promise", [
|
|
54
|
+
exports.f.createKeywordTypeNode(typescript_1.default.SyntaxKind.AnyKeyword),
|
|
55
|
+
]);
|
|
56
|
+
exports.makeAnyPromise = makeAnyPromise;
|
|
48
57
|
const makePublicExtendedInterface = (name, extender, props) => exports.f.createInterfaceDeclaration(undefined, exports.exportModifier, name, undefined, extender, props);
|
|
49
58
|
exports.makePublicExtendedInterface = makePublicExtendedInterface;
|
|
50
59
|
const makeTypeParams = (params) => Object.keys(params).reduce((acc, name) => acc.concat(exports.f.createTypeParameterDeclaration(name, exports.f.createTypeReferenceNode(params[name]))), []);
|
|
51
60
|
exports.makeTypeParams = makeTypeParams;
|
|
61
|
+
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));
|
|
62
|
+
exports.makeImplementationCallFn = makeImplementationCallFn;
|
|
63
|
+
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, [
|
|
64
|
+
exports.f.createArrowFunction(undefined, undefined, (0, exports.makeParams)({ acc: undefined, key: undefined }), undefined, undefined, exp),
|
|
65
|
+
initial,
|
|
66
|
+
]);
|
|
67
|
+
exports.makeObjectKeysReducer = makeObjectKeysReducer;
|
|
52
68
|
const cleanId = (path, method, suffix) => {
|
|
53
69
|
return [method]
|
|
54
70
|
.concat(path.split("/"))
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -59,16 +59,39 @@ class Client {
|
|
|
59
59
|
path: client_helpers_1.f.createTypeReferenceNode("P"),
|
|
60
60
|
params: client_helpers_1.f.createIndexedAccessTypeNode(client_helpers_1.f.createTypeReferenceNode(inputNode.name), client_helpers_1.parametricIndexNode),
|
|
61
61
|
}), (0, client_helpers_1.makeIndexedPromise)(responseNode.name, client_helpers_1.parametricIndexNode)));
|
|
62
|
-
const
|
|
63
|
-
|
|
62
|
+
const implementationNode = (0, client_helpers_1.makePublicType)("Implementation", client_helpers_1.f.createFunctionTypeNode(undefined, (0, client_helpers_1.makeParams)({
|
|
63
|
+
method: client_helpers_1.f.createTypeReferenceNode(methodNode.name),
|
|
64
|
+
path: client_helpers_1.f.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),
|
|
65
|
+
params: (0, client_helpers_1.makeRecord)(typescript_1.default.SyntaxKind.StringKeyword, typescript_1.default.SyntaxKind.AnyKeyword),
|
|
66
|
+
}), (0, client_helpers_1.makeAnyPromise)()));
|
|
67
|
+
const keyParamExpression = client_helpers_1.f.createTemplateExpression(client_helpers_1.f.createTemplateHead(":"), [
|
|
68
|
+
client_helpers_1.f.createTemplateSpan(client_helpers_1.f.createIdentifier("key"), client_helpers_1.f.createTemplateTail("")),
|
|
69
|
+
]);
|
|
70
|
+
const clientNode = (0, client_helpers_1.makePublicClass)("ExpressZodAPIClient", (0, client_helpers_1.makeEmptyInitializingConstructor)([
|
|
71
|
+
(0, client_helpers_1.makeParam)("implementation", client_helpers_1.f.createTypeReferenceNode(implementationNode.name), client_helpers_1.protectedReadonlyModifier),
|
|
64
72
|
]), [
|
|
65
|
-
(0, client_helpers_1.
|
|
73
|
+
(0, client_helpers_1.makePublicReadonlyProp)("provide", client_helpers_1.f.createTypeReferenceNode(providerNode.name), (0, client_helpers_1.makeImplementationCallFn)(["method", "path", "params"], [
|
|
74
|
+
client_helpers_1.f.createIdentifier("method"),
|
|
75
|
+
(0, client_helpers_1.makeObjectKeysReducer)("params", client_helpers_1.f.createCallExpression(client_helpers_1.f.createPropertyAccessExpression(client_helpers_1.f.createIdentifier("acc"), "replace"), undefined, [
|
|
76
|
+
keyParamExpression,
|
|
77
|
+
client_helpers_1.f.createElementAccessExpression(client_helpers_1.f.createIdentifier("params"), client_helpers_1.f.createIdentifier("key")),
|
|
78
|
+
]), client_helpers_1.f.createIdentifier("path")),
|
|
79
|
+
(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([
|
|
80
|
+
client_helpers_1.f.createSpreadAssignment(client_helpers_1.f.createIdentifier("acc")),
|
|
81
|
+
client_helpers_1.f.createPropertyAssignment("[key]", // @todo is there a better way to do it?
|
|
82
|
+
client_helpers_1.f.createElementAccessExpression(client_helpers_1.f.createIdentifier("params"), client_helpers_1.f.createIdentifier("key"))),
|
|
83
|
+
])), client_helpers_1.f.createObjectLiteralExpression()),
|
|
84
|
+
])),
|
|
66
85
|
]);
|
|
67
86
|
typescript_1.default.addSyntheticLeadingComment(clientNode, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, "\n" +
|
|
68
|
-
"export const
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
"
|
|
87
|
+
"export const exampleImplementation: Implementation = async (\n" +
|
|
88
|
+
" method,\n" +
|
|
89
|
+
" path,\n" +
|
|
90
|
+
" params\n" +
|
|
91
|
+
") => {\n" +
|
|
92
|
+
" const searchParams =\n" +
|
|
93
|
+
' method === "get" ? `?${new URLSearchParams(params)}` : "";\n' +
|
|
94
|
+
" const response = await fetch(`https://example.com${path}${searchParams}`, {\n" +
|
|
72
95
|
" method,\n" +
|
|
73
96
|
' body: method === "get" ? undefined : JSON.stringify(params),\n' +
|
|
74
97
|
" });\n" +
|
|
@@ -78,9 +101,9 @@ class Client {
|
|
|
78
101
|
" return response.text();\n" +
|
|
79
102
|
"};\n" +
|
|
80
103
|
"\n" +
|
|
81
|
-
|
|
104
|
+
"const client = new ExpressZodAPIClient(exampleImplementation);\n" +
|
|
82
105
|
'client.provide("get", "/v1/user/retrieve", { id: "10" });\n', true);
|
|
83
|
-
this.agg.push(pathNode, methodNode, methodPathNode, inputNode, responseNode, jsonEndpointsNode, providerNode, clientNode);
|
|
106
|
+
this.agg.push(pathNode, methodNode, methodPathNode, inputNode, responseNode, jsonEndpointsNode, providerNode, implementationNode, clientNode);
|
|
84
107
|
}
|
|
85
108
|
print(printerOptions) {
|
|
86
109
|
return this.agg.map((node) => (0, zod_to_ts_1.printNode)(node, printerOptions)).join("\n\n");
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,yCAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
export const f = ts.factory;
|
|
3
3
|
export const exportModifier = [f.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
4
|
+
export const publicReadonlyModifier = [
|
|
5
|
+
f.createModifier(ts.SyntaxKind.PublicKeyword),
|
|
6
|
+
f.createModifier(ts.SyntaxKind.ReadonlyKeyword),
|
|
7
|
+
];
|
|
4
8
|
export const protectedReadonlyModifier = [
|
|
5
9
|
f.createModifier(ts.SyntaxKind.ProtectedKeyword),
|
|
6
10
|
f.createModifier(ts.SyntaxKind.ReadonlyKeyword),
|
|
7
11
|
];
|
|
8
|
-
export const publicModifier = [f.createModifier(ts.SyntaxKind.PublicKeyword)];
|
|
9
12
|
const emptyPrefix = f.createTemplateHead("");
|
|
10
13
|
const emptyEnding = f.createTemplateTail("");
|
|
11
14
|
const spacingSuffix = f.createTemplateMiddle(" ");
|
|
@@ -14,21 +17,31 @@ export const parametricIndexNode = makeTemplate(["M", "P"]);
|
|
|
14
17
|
export const makeParam = (name, type, mod) => f.createParameterDeclaration(undefined, mod, undefined, name, undefined, type);
|
|
15
18
|
export const makeParams = (params, mod) => Object.keys(params).reduce((acc, name) => acc.concat(makeParam(name, params[name], mod)), []);
|
|
16
19
|
export const makeRecord = (key, value) => f.createExpressionWithTypeArguments(f.createIdentifier("Record"), [
|
|
17
|
-
|
|
20
|
+
typeof key === "number"
|
|
21
|
+
? f.createKeywordTypeNode(key)
|
|
22
|
+
: f.createTypeReferenceNode(key),
|
|
18
23
|
f.createKeywordTypeNode(value),
|
|
19
24
|
]);
|
|
20
|
-
export const
|
|
25
|
+
export const makeEmptyInitializingConstructor = (params) => f.createConstructorDeclaration(undefined, undefined, params, f.createBlock([]));
|
|
21
26
|
export const makeQuotedProp = (name, ref) => f.createPropertySignature(undefined, `"${name}"`, undefined, f.createTypeReferenceNode(ref));
|
|
22
27
|
export const makeConst = (name, value) => f.createVariableDeclarationList([f.createVariableDeclaration(name, undefined, undefined, value)], ts.NodeFlags.Const);
|
|
23
28
|
export const makePublicLiteralType = (name, literals) => f.createTypeAliasDeclaration(undefined, exportModifier, name, undefined, f.createUnionTypeNode(literals.map((option) => f.createLiteralTypeNode(f.createStringLiteral(option)))));
|
|
24
29
|
export const makePublicType = (name, value) => f.createTypeAliasDeclaration(undefined, exportModifier, name, undefined, value);
|
|
25
|
-
export const
|
|
30
|
+
export const makePublicReadonlyProp = (name, type, exp) => f.createPropertyDeclaration(undefined, publicReadonlyModifier, name, undefined, type, exp);
|
|
26
31
|
export const makePublicClass = (name, constructor, props = []) => f.createClassDeclaration(undefined, exportModifier, name, undefined, undefined, [constructor, ...props]);
|
|
27
32
|
export const makeIndexedPromise = (type, index) => f.createTypeReferenceNode("Promise", [
|
|
28
33
|
f.createIndexedAccessTypeNode(f.createTypeReferenceNode(type), index),
|
|
29
34
|
]);
|
|
35
|
+
export const makeAnyPromise = () => f.createTypeReferenceNode("Promise", [
|
|
36
|
+
f.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
|
|
37
|
+
]);
|
|
30
38
|
export const makePublicExtendedInterface = (name, extender, props) => f.createInterfaceDeclaration(undefined, exportModifier, name, undefined, extender, props);
|
|
31
39
|
export const makeTypeParams = (params) => Object.keys(params).reduce((acc, name) => acc.concat(f.createTypeParameterDeclaration(name, f.createTypeReferenceNode(params[name]))), []);
|
|
40
|
+
export const makeImplementationCallFn = (params, args) => f.createArrowFunction(undefined, undefined, params.map((key) => makeParam(key)), undefined, undefined, f.createCallExpression(f.createPropertyAccessExpression(f.createThis(), "implementation"), undefined, args));
|
|
41
|
+
export const makeObjectKeysReducer = (obj, exp, initial) => f.createCallExpression(f.createPropertyAccessExpression(f.createCallExpression(f.createPropertyAccessExpression(f.createIdentifier("Object"), "keys"), undefined, [f.createIdentifier(obj)]), "reduce"), undefined, [
|
|
42
|
+
f.createArrowFunction(undefined, undefined, makeParams({ acc: undefined, key: undefined }), undefined, undefined, exp),
|
|
43
|
+
initial,
|
|
44
|
+
]);
|
|
32
45
|
export const cleanId = (path, method, suffix) => {
|
|
33
46
|
return [method]
|
|
34
47
|
.concat(path.split("/"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"client-helpers.js","sourceRoot":"","sources":["../src/client-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist-esm/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { createTypeAlias, printNode, zodToTs } from "zod-to-ts";
|
|
3
|
-
import { cleanId, exportModifier, f, makeConst,
|
|
3
|
+
import { cleanId, exportModifier, f, makeAnyPromise, makeConst, makeEmptyInitializingConstructor, makeImplementationCallFn, makeIndexedPromise, makeObjectKeysReducer, makeParam, makeParams, makePublicClass, makePublicExtendedInterface, makePublicLiteralType, makePublicReadonlyProp, makePublicType, makeQuotedProp, makeRecord, makeTemplate, makeTypeParams, parametricIndexNode, protectedReadonlyModifier, } from "./client-helpers.js";
|
|
4
4
|
import { methods } from "./method.js";
|
|
5
5
|
import { mimeJson } from "./mime.js";
|
|
6
6
|
import { routingCycle } from "./routing.js";
|
|
@@ -53,16 +53,39 @@ export class Client {
|
|
|
53
53
|
path: f.createTypeReferenceNode("P"),
|
|
54
54
|
params: f.createIndexedAccessTypeNode(f.createTypeReferenceNode(inputNode.name), parametricIndexNode),
|
|
55
55
|
}), makeIndexedPromise(responseNode.name, parametricIndexNode)));
|
|
56
|
-
const
|
|
57
|
-
|
|
56
|
+
const implementationNode = makePublicType("Implementation", f.createFunctionTypeNode(undefined, makeParams({
|
|
57
|
+
method: f.createTypeReferenceNode(methodNode.name),
|
|
58
|
+
path: f.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
59
|
+
params: makeRecord(ts.SyntaxKind.StringKeyword, ts.SyntaxKind.AnyKeyword),
|
|
60
|
+
}), makeAnyPromise()));
|
|
61
|
+
const keyParamExpression = f.createTemplateExpression(f.createTemplateHead(":"), [
|
|
62
|
+
f.createTemplateSpan(f.createIdentifier("key"), f.createTemplateTail("")),
|
|
63
|
+
]);
|
|
64
|
+
const clientNode = makePublicClass("ExpressZodAPIClient", makeEmptyInitializingConstructor([
|
|
65
|
+
makeParam("implementation", f.createTypeReferenceNode(implementationNode.name), protectedReadonlyModifier),
|
|
58
66
|
]), [
|
|
59
|
-
|
|
67
|
+
makePublicReadonlyProp("provide", f.createTypeReferenceNode(providerNode.name), makeImplementationCallFn(["method", "path", "params"], [
|
|
68
|
+
f.createIdentifier("method"),
|
|
69
|
+
makeObjectKeysReducer("params", f.createCallExpression(f.createPropertyAccessExpression(f.createIdentifier("acc"), "replace"), undefined, [
|
|
70
|
+
keyParamExpression,
|
|
71
|
+
f.createElementAccessExpression(f.createIdentifier("params"), f.createIdentifier("key")),
|
|
72
|
+
]), f.createIdentifier("path")),
|
|
73
|
+
makeObjectKeysReducer("params", f.createConditionalExpression(f.createBinaryExpression(f.createCallExpression(f.createPropertyAccessExpression(f.createIdentifier("path"), "indexOf"), undefined, [keyParamExpression]), ts.SyntaxKind.GreaterThanEqualsToken, f.createNumericLiteral(0)), undefined, f.createIdentifier("acc"), undefined, f.createObjectLiteralExpression([
|
|
74
|
+
f.createSpreadAssignment(f.createIdentifier("acc")),
|
|
75
|
+
f.createPropertyAssignment("[key]", // @todo is there a better way to do it?
|
|
76
|
+
f.createElementAccessExpression(f.createIdentifier("params"), f.createIdentifier("key"))),
|
|
77
|
+
])), f.createObjectLiteralExpression()),
|
|
78
|
+
])),
|
|
60
79
|
]);
|
|
61
80
|
ts.addSyntheticLeadingComment(clientNode, ts.SyntaxKind.MultiLineCommentTrivia, "\n" +
|
|
62
|
-
"export const
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
"
|
|
81
|
+
"export const exampleImplementation: Implementation = async (\n" +
|
|
82
|
+
" method,\n" +
|
|
83
|
+
" path,\n" +
|
|
84
|
+
" params\n" +
|
|
85
|
+
") => {\n" +
|
|
86
|
+
" const searchParams =\n" +
|
|
87
|
+
' method === "get" ? `?${new URLSearchParams(params)}` : "";\n' +
|
|
88
|
+
" const response = await fetch(`https://example.com${path}${searchParams}`, {\n" +
|
|
66
89
|
" method,\n" +
|
|
67
90
|
' body: method === "get" ? undefined : JSON.stringify(params),\n' +
|
|
68
91
|
" });\n" +
|
|
@@ -72,9 +95,9 @@ export class Client {
|
|
|
72
95
|
" return response.text();\n" +
|
|
73
96
|
"};\n" +
|
|
74
97
|
"\n" +
|
|
75
|
-
|
|
98
|
+
"const client = new ExpressZodAPIClient(exampleImplementation);\n" +
|
|
76
99
|
'client.provide("get", "/v1/user/retrieve", { id: "10" });\n', true);
|
|
77
|
-
this.agg.push(pathNode, methodNode, methodPathNode, inputNode, responseNode, jsonEndpointsNode, providerNode, clientNode);
|
|
100
|
+
this.agg.push(pathNode, methodNode, methodPathNode, inputNode, responseNode, jsonEndpointsNode, providerNode, implementationNode, clientNode);
|
|
78
101
|
}
|
|
79
102
|
print(printerOptions) {
|
|
80
103
|
return this.agg.map((node) => printNode(node, printerOptions)).join("\n\n");
|
package/dist-esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EACL,OAAO,EACP,cAAc,EACd,CAAC,EACD,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist-esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"module","version":"6.1.0-
|
|
1
|
+
{"type":"module","version":"6.1.0-beta4"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-zod-api",
|
|
3
|
-
"version": "6.1.0-
|
|
3
|
+
"version": "6.1.0-beta4",
|
|
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": {
|