@sdkgen/typescript-generator 0.0.0-dev.20231002144112 → 0.0.0-dev.20231002191238
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/dist/browser-client.js +41 -0
- package/dist/helpers.js +107 -0
- package/dist/index.js +5 -0
- package/dist/interfaces.js +14 -0
- package/dist/node-client.js +47 -0
- package/dist/node-server.js +48 -0
- package/package.json +12 -5
- package/.eslintrc.json +0 -3
- package/.prettierrc +0 -12
- package/dist/spec/helpers.spec.d.ts +0 -1
- package/dist/spec/helpers.spec.js +0 -140
- package/dist/src/browser-client.js +0 -44
- package/dist/src/helpers.js +0 -114
- package/dist/src/index.js +0 -20
- package/dist/src/interfaces.js +0 -17
- package/dist/src/node-client.js +0 -50
- package/dist/src/node-server.js +0 -51
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/browser-client.ts +0 -56
- package/src/helpers.ts +0 -168
- package/src/index.ts +0 -4
- package/src/interfaces.ts +0 -20
- package/src/node-client.ts +0 -65
- package/src/node-server.ts +0 -64
- /package/dist/{src/browser-client.d.ts → browser-client.d.ts} +0 -0
- /package/dist/{src/helpers.d.ts → helpers.d.ts} +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/interfaces.d.ts → interfaces.d.ts} +0 -0
- /package/dist/{src/node-client.d.ts → node-client.d.ts} +0 -0
- /package/dist/{src/node-server.d.ts → node-server.d.ts} +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { astToJson, DecimalPrimitiveType, HiddenAnnotation, VoidPrimitiveType, hasType } from "@sdkgen/parser";
|
|
2
|
+
import { generateTypescriptEnum, generateTypescriptErrorClass, generateTypescriptInterface, generateTypescriptTypeName } from "./helpers";
|
|
3
|
+
export function generateBrowserClientSource(ast) {
|
|
4
|
+
let code = "";
|
|
5
|
+
const hasErrorWithData = ast.errors.some(err => !(err.dataType instanceof VoidPrimitiveType));
|
|
6
|
+
code += `/* eslint-disable */
|
|
7
|
+
import { SdkgenError${hasErrorWithData ? ", SdkgenErrorWithData" : ""}, SdkgenHttpClient } from "@sdkgen/browser-runtime";
|
|
8
|
+
`;
|
|
9
|
+
if (hasType(ast, DecimalPrimitiveType)) {
|
|
10
|
+
code += `import { Decimal } from "decimal.js-light";\n`;
|
|
11
|
+
}
|
|
12
|
+
code += "\n";
|
|
13
|
+
for (const type of ast.enumTypes) {
|
|
14
|
+
code += generateTypescriptEnum(type);
|
|
15
|
+
code += "\n";
|
|
16
|
+
}
|
|
17
|
+
for (const type of ast.structTypes) {
|
|
18
|
+
code += generateTypescriptInterface(type, true);
|
|
19
|
+
code += "\n";
|
|
20
|
+
}
|
|
21
|
+
for (const error of ast.errors) {
|
|
22
|
+
code += generateTypescriptErrorClass(error, true);
|
|
23
|
+
code += "\n";
|
|
24
|
+
}
|
|
25
|
+
code += `export class ApiClient extends SdkgenHttpClient {
|
|
26
|
+
constructor(baseUrl: string) {
|
|
27
|
+
super(baseUrl, astJson, errClasses);
|
|
28
|
+
}
|
|
29
|
+
${ast.operations
|
|
30
|
+
.filter(op => op.annotations.every(ann => !(ann instanceof HiddenAnnotation)))
|
|
31
|
+
.map(op => `
|
|
32
|
+
${op.name}(args${op.args.length === 0 ? "?" : ""}: {${op.args
|
|
33
|
+
.map(arg => `${arg.name}${arg.type.name.endsWith("?") ? "?" : ""}: ${generateTypescriptTypeName(arg.type, true)}`)
|
|
34
|
+
.join(", ")}}): Promise<${generateTypescriptTypeName(op.returnType, true)}> { return this.makeRequest("${op.name}", args || {}); }`)
|
|
35
|
+
.join("")}
|
|
36
|
+
}\n\n`;
|
|
37
|
+
code += `const errClasses = {\n${ast.errors.map(err => ` ${err.name}`).join(",\n")}\n};\n\n`;
|
|
38
|
+
code += `const astJson = ${JSON.stringify(astToJson(ast), null, 4).replace(/"(?<key>\w+)":/gu, "$<key>:")} as const;\n`;
|
|
39
|
+
return code;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJvd3Nlci1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUksTUFBTSxVQUFVLDJCQUEyQixDQUFDLEdBQVk7SUFDdEQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUU5RixJQUFJLElBQUk7c0JBQ1ksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFO0NBQ3BFLENBQUM7SUFFQSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtRQUN0QyxJQUFJLElBQUksK0NBQStDLENBQUM7S0FDekQ7SUFFRCxJQUFJLElBQUksSUFBSSxDQUFDO0lBRWIsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO1FBQ2hDLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLElBQUksSUFBSSxDQUFDO0tBQ2Q7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFDbEMsSUFBSSxJQUFJLDJCQUEyQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksSUFBSSxDQUFDO0tBQ2Q7SUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDOUIsSUFBSSxJQUFJLDRCQUE0QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLElBQUksSUFBSSxDQUFDO0tBQ2Q7SUFFRCxJQUFJLElBQUk7Ozs7RUFJUixHQUFHLENBQUMsVUFBVTtTQUNiLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDN0UsR0FBRyxDQUNGLEVBQUUsQ0FBQyxFQUFFLENBQUM7TUFDSixFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUk7U0FDMUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssMEJBQTBCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSwwQkFBMEIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQ3RJO1NBQ0EsSUFBSSxDQUFDLEVBQUUsQ0FBQztNQUNMLENBQUM7SUFFTCxJQUFJLElBQUkseUJBQXlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUVoRyxJQUFJLElBQUksbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQztJQUV4SCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ArrayType, Base64PrimitiveType, BigIntPrimitiveType, BoolPrimitiveType, BytesPrimitiveType, CnpjPrimitiveType, CpfPrimitiveType, DatePrimitiveType, DateTimePrimitiveType, DecimalPrimitiveType, EmailPrimitiveType, EnumType, FloatPrimitiveType, HexPrimitiveType, HtmlPrimitiveType, IntPrimitiveType, JsonPrimitiveType, MoneyPrimitiveType, OptionalType, StringPrimitiveType, StructType, TypeReference, UIntPrimitiveType, UrlPrimitiveType, UuidPrimitiveType, VoidPrimitiveType, XmlPrimitiveType, } from "@sdkgen/parser";
|
|
2
|
+
export function generateTypescriptTypeName(type, isBrowser) {
|
|
3
|
+
switch (type.constructor) {
|
|
4
|
+
case IntPrimitiveType:
|
|
5
|
+
case UIntPrimitiveType:
|
|
6
|
+
case MoneyPrimitiveType:
|
|
7
|
+
case FloatPrimitiveType:
|
|
8
|
+
return "number";
|
|
9
|
+
case BigIntPrimitiveType:
|
|
10
|
+
return "bigint";
|
|
11
|
+
case DecimalPrimitiveType:
|
|
12
|
+
return "Decimal";
|
|
13
|
+
case DatePrimitiveType:
|
|
14
|
+
case DateTimePrimitiveType:
|
|
15
|
+
return "Date";
|
|
16
|
+
case BoolPrimitiveType:
|
|
17
|
+
return "boolean";
|
|
18
|
+
case BytesPrimitiveType:
|
|
19
|
+
return isBrowser ? "ArrayBuffer" : "Buffer";
|
|
20
|
+
case StringPrimitiveType:
|
|
21
|
+
case CpfPrimitiveType:
|
|
22
|
+
case CnpjPrimitiveType:
|
|
23
|
+
case EmailPrimitiveType:
|
|
24
|
+
case HtmlPrimitiveType:
|
|
25
|
+
case UrlPrimitiveType:
|
|
26
|
+
case UuidPrimitiveType:
|
|
27
|
+
case HexPrimitiveType:
|
|
28
|
+
case Base64PrimitiveType:
|
|
29
|
+
case XmlPrimitiveType:
|
|
30
|
+
return "string";
|
|
31
|
+
case VoidPrimitiveType:
|
|
32
|
+
return "void";
|
|
33
|
+
case JsonPrimitiveType:
|
|
34
|
+
return "any";
|
|
35
|
+
case OptionalType:
|
|
36
|
+
return `${generateTypescriptTypeName(type.base, isBrowser)} | null`;
|
|
37
|
+
case ArrayType: {
|
|
38
|
+
const { base } = type;
|
|
39
|
+
const baseGen = generateTypescriptTypeName(base, isBrowser);
|
|
40
|
+
if (base instanceof OptionalType) {
|
|
41
|
+
return `(${baseGen})[]`;
|
|
42
|
+
}
|
|
43
|
+
return `${baseGen}[]`;
|
|
44
|
+
}
|
|
45
|
+
case StructType:
|
|
46
|
+
case EnumType:
|
|
47
|
+
return type.name;
|
|
48
|
+
case TypeReference:
|
|
49
|
+
return generateTypescriptTypeName(type.type, isBrowser);
|
|
50
|
+
default:
|
|
51
|
+
throw new Error(`BUG: generateTypescriptTypeName with ${type.constructor.name}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function generateTypescriptInterface(type, isBrowser) {
|
|
55
|
+
return `export interface ${type.name} {
|
|
56
|
+
${type.fields.map(field => ` ${field.name}: ${generateTypescriptTypeName(field.type, isBrowser)}`).join("\n")}
|
|
57
|
+
}\n`;
|
|
58
|
+
}
|
|
59
|
+
export function generateTypescriptEnum(type) {
|
|
60
|
+
if (type.hasStructValues) {
|
|
61
|
+
return `export type ${type.name} = ${type.values
|
|
62
|
+
.map(x => (x.struct ? `({tag: "${x.value}"} & ${x.struct.name})` : `{tag: "${x.value}"}`))
|
|
63
|
+
.join(" | ")};\n`;
|
|
64
|
+
}
|
|
65
|
+
return `export type ${type.name} = ${type.values.map(x => `"${x.value}"`).join(" | ")};\n`;
|
|
66
|
+
}
|
|
67
|
+
export function generateTypescriptErrorClass(error, isBrowser) {
|
|
68
|
+
return `export class ${error.name} extends ${error.dataType instanceof VoidPrimitiveType ? "SdkgenError" : `SdkgenErrorWithData<${generateTypescriptTypeName(error.dataType, isBrowser)}>`} {}\n`;
|
|
69
|
+
}
|
|
70
|
+
export function clearForLogging(path, type) {
|
|
71
|
+
switch (type.constructor) {
|
|
72
|
+
case TypeReference:
|
|
73
|
+
return clearForLogging(path, type.type);
|
|
74
|
+
case OptionalType: {
|
|
75
|
+
const code = clearForLogging(path, type.base);
|
|
76
|
+
if (code) {
|
|
77
|
+
return `if (${path} !== null && ${path} !== undefined) { ${code} }`;
|
|
78
|
+
}
|
|
79
|
+
return "";
|
|
80
|
+
}
|
|
81
|
+
case ArrayType: {
|
|
82
|
+
const code = clearForLogging("el", type.base);
|
|
83
|
+
if (code) {
|
|
84
|
+
return `for (const el of ${path}) { ${code} }`;
|
|
85
|
+
}
|
|
86
|
+
return "";
|
|
87
|
+
}
|
|
88
|
+
case StructType: {
|
|
89
|
+
const codes = [];
|
|
90
|
+
for (const field of type.fields) {
|
|
91
|
+
if (field.secret) {
|
|
92
|
+
codes.push(`${path}.${field.name} = "<secret>";`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const code = clearForLogging(`${path}.${field.name}`, field.type);
|
|
96
|
+
if (code) {
|
|
97
|
+
codes.push(code);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return codes.join(" ");
|
|
102
|
+
}
|
|
103
|
+
default:
|
|
104
|
+
return "";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxJQUFVLEVBQUUsU0FBa0I7SUFDdkUsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3hCLEtBQUssZ0JBQWdCLENBQUM7UUFDdEIsS0FBSyxpQkFBaUIsQ0FBQztRQUN2QixLQUFLLGtCQUFrQixDQUFDO1FBQ3hCLEtBQUssa0JBQWtCO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1FBRWxCLEtBQUssbUJBQW1CO1lBQ3RCLE9BQU8sUUFBUSxDQUFDO1FBRWxCLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBRW5CLEtBQUssaUJBQWlCLENBQUM7UUFDdkIsS0FBSyxxQkFBcUI7WUFDeEIsT0FBTyxNQUFNLENBQUM7UUFFaEIsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFFbkIsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENB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
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./browser-client";
|
|
2
|
+
export * from "./interfaces";
|
|
3
|
+
export * from "./node-client";
|
|
4
|
+
export * from "./node-server";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQyJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { generateTypescriptEnum, generateTypescriptInterface } from "./helpers";
|
|
2
|
+
export function generateTypescriptInterfaces(ast) {
|
|
3
|
+
let code = "";
|
|
4
|
+
for (const type of ast.enumTypes) {
|
|
5
|
+
code += generateTypescriptEnum(type);
|
|
6
|
+
}
|
|
7
|
+
code += "\n";
|
|
8
|
+
for (const type of ast.structTypes) {
|
|
9
|
+
code += generateTypescriptInterface(type, false);
|
|
10
|
+
code += "\n";
|
|
11
|
+
}
|
|
12
|
+
return code;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRixNQUFNLFVBQVUsNEJBQTRCLENBQUMsR0FBWTtJQUN2RCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFFZCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDaEMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsSUFBSSxJQUFJLElBQUksQ0FBQztJQUViLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNsQyxJQUFJLElBQUksMkJBQTJCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DecimalPrimitiveType, astToJson, HiddenAnnotation, VoidPrimitiveType, hasType } from "@sdkgen/parser";
|
|
2
|
+
import { generateTypescriptEnum, generateTypescriptErrorClass, generateTypescriptInterface, generateTypescriptTypeName } from "./helpers";
|
|
3
|
+
export function generateNodeClientSource(ast) {
|
|
4
|
+
let code = "";
|
|
5
|
+
const hasErrorWithData = ast.errors.some(err => !(err.dataType instanceof VoidPrimitiveType));
|
|
6
|
+
const hasErrorWithoutData = ast.errors.filter(err => err.name !== "Fatal").some(err => err.dataType instanceof VoidPrimitiveType);
|
|
7
|
+
code += `/* eslint-disable */
|
|
8
|
+
import { Context, Fatal${hasErrorWithoutData ? ", SdkgenError" : ""}${hasErrorWithData ? ", SdkgenErrorWithData" : ""}, SdkgenHttpClient } from "@sdkgen/node-runtime";
|
|
9
|
+
import { PartialDeep } from "type-fest";
|
|
10
|
+
export { Fatal } from "@sdkgen/node-runtime";
|
|
11
|
+
`;
|
|
12
|
+
if (hasType(ast, DecimalPrimitiveType)) {
|
|
13
|
+
code += `import { Decimal } from "decimal.js";\n`;
|
|
14
|
+
}
|
|
15
|
+
code += "\n";
|
|
16
|
+
for (const type of ast.enumTypes) {
|
|
17
|
+
code += generateTypescriptEnum(type);
|
|
18
|
+
code += "\n";
|
|
19
|
+
}
|
|
20
|
+
for (const type of ast.structTypes) {
|
|
21
|
+
code += generateTypescriptInterface(type, false);
|
|
22
|
+
code += "\n";
|
|
23
|
+
}
|
|
24
|
+
for (const error of ast.errors) {
|
|
25
|
+
if (error.name === "Fatal") {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
code += generateTypescriptErrorClass(error, false);
|
|
29
|
+
code += "\n";
|
|
30
|
+
}
|
|
31
|
+
code += `export class ApiClient extends SdkgenHttpClient {
|
|
32
|
+
constructor(baseUrl: string) {
|
|
33
|
+
super(baseUrl, astJson, errClasses);
|
|
34
|
+
}
|
|
35
|
+
${ast.operations
|
|
36
|
+
.filter(op => op.annotations.every(ann => !(ann instanceof HiddenAnnotation)))
|
|
37
|
+
.map(op => `
|
|
38
|
+
${op.name}(ctx: PartialDeep<Context> | null, args: {${op.args
|
|
39
|
+
.map(arg => `${arg.name}${arg.type.name.endsWith("?") ? "?" : ""}: ${generateTypescriptTypeName(arg.type, false)}`)
|
|
40
|
+
.join(", ")}}): Promise<${generateTypescriptTypeName(op.returnType, false)}> { return this.makeRequest(ctx, "${op.name}", args); }`)
|
|
41
|
+
.join("")}
|
|
42
|
+
}\n\n`;
|
|
43
|
+
code += `const errClasses = {\n${ast.errors.map(err => ` ${err.name}`).join(",\n")}\n};\n\n`;
|
|
44
|
+
code += `const astJson = ${JSON.stringify(astToJson(ast), null, 4).replace(/"(?<key>\w+)":/gu, "$<key>:")} as const;\n`;
|
|
45
|
+
return code;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUksTUFBTSxVQUFVLHdCQUF3QixDQUFDLEdBQVk7SUFDbkQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM5RixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxZQUFZLGlCQUFpQixDQUFDLENBQUM7SUFFbEksSUFBSSxJQUFJO3lCQUNlLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FDL0QsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUMvQzs7O0NBR0QsQ0FBQztJQUVBLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO1FBQ3RDLElBQUksSUFBSSx5Q0FBeUMsQ0FBQztLQUNuRDtJQUVELElBQUksSUFBSSxJQUFJLENBQUM7SUFFYixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDaEMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNsQyxJQUFJLElBQUksMkJBQTJCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELEtBQUssTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtRQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQzFCLFNBQVM7U0FDVjtRQUVELElBQUksSUFBSSw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksQ0FBQztLQUNkO0lBRUQsSUFBSSxJQUFJOzs7O0VBSVIsR0FBRyxDQUFDLFVBQVU7U0FDYixNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1NBQzdFLEdBQUcsQ0FDRixFQUFFLENBQUMsRUFBRSxDQUFDO01BQ0osRUFBRSxDQUFDLElBQUksNkNBQTZDLEVBQUUsQ0FBQyxJQUFJO1NBQzFELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNsSCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsMEJBQTBCLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMscUNBQXFDLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FDdEk7U0FDQSxJQUFJLENBQUMsRUFBRSxDQUFDO01BQ0wsQ0FBQztJQUVMLElBQUksSUFBSSx5QkFBeUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBRWhHLElBQUksSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDO0lBRXhILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DecimalPrimitiveType, astToJson, VoidPrimitiveType, hasType } from "@sdkgen/parser";
|
|
2
|
+
import { generateTypescriptEnum, generateTypescriptErrorClass, generateTypescriptInterface, generateTypescriptTypeName } from "./helpers";
|
|
3
|
+
export function generateNodeServerSource(ast) {
|
|
4
|
+
let code = "";
|
|
5
|
+
const hasErrorWithData = ast.errors.some(err => !(err.dataType instanceof VoidPrimitiveType));
|
|
6
|
+
const hasErrorWithoutData = ast.errors.filter(err => err.name !== "Fatal").some(err => err.dataType instanceof VoidPrimitiveType);
|
|
7
|
+
code += `/* eslint-disable */
|
|
8
|
+
import { BaseApiConfig, Context, Fatal${hasErrorWithoutData ? ", SdkgenError" : ""}${hasErrorWithData ? ", SdkgenErrorWithData" : ""} } from "@sdkgen/node-runtime";
|
|
9
|
+
export { Fatal } from "@sdkgen/node-runtime";
|
|
10
|
+
`;
|
|
11
|
+
if (hasType(ast, DecimalPrimitiveType)) {
|
|
12
|
+
code += `import { Decimal } from "decimal.js";\n`;
|
|
13
|
+
}
|
|
14
|
+
code += "\n";
|
|
15
|
+
for (const type of ast.enumTypes) {
|
|
16
|
+
code += generateTypescriptEnum(type);
|
|
17
|
+
code += "\n";
|
|
18
|
+
}
|
|
19
|
+
for (const type of ast.structTypes) {
|
|
20
|
+
code += generateTypescriptInterface(type, false);
|
|
21
|
+
code += "\n";
|
|
22
|
+
}
|
|
23
|
+
for (const error of ast.errors) {
|
|
24
|
+
if (error.name === "Fatal") {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
code += generateTypescriptErrorClass(error, false);
|
|
28
|
+
code += "\n";
|
|
29
|
+
}
|
|
30
|
+
code += `export class ApiConfig<ExtraContextT> extends BaseApiConfig<ExtraContextT> {
|
|
31
|
+
declare fn: {${ast.operations
|
|
32
|
+
.map(op => `
|
|
33
|
+
${op.name}: (ctx: Context & ExtraContextT, args: {${op.args
|
|
34
|
+
.map(arg => `${arg.name}: ${generateTypescriptTypeName(arg.type, false)}`)
|
|
35
|
+
.join(", ")}}) => Promise<${generateTypescriptTypeName(op.returnType, false)}>`)
|
|
36
|
+
.join("")}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
astJson = ${JSON.stringify(astToJson(ast), null, 4)
|
|
40
|
+
.replace(/"(?<key>\w+)":/gu, "$<key>:")
|
|
41
|
+
.replace(/\n/gu, "\n ")} as const
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const api = new ApiConfig<{}>();
|
|
45
|
+
`;
|
|
46
|
+
return code;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUksTUFBTSxVQUFVLHdCQUF3QixDQUFDLEdBQVk7SUFDbkQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM5RixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxZQUFZLGlCQUFpQixDQUFDLENBQUM7SUFFbEksSUFBSSxJQUFJO3dDQUM4QixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQzlFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFDL0M7O0NBRUQsQ0FBQztJQUVBLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO1FBQ3RDLElBQUksSUFBSSx5Q0FBeUMsQ0FBQztLQUNuRDtJQUVELElBQUksSUFBSSxJQUFJLENBQUM7SUFFYixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDaEMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNsQyxJQUFJLElBQUksMkJBQTJCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksSUFBSSxJQUFJLENBQUM7S0FDZDtJQUVELEtBQUssTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtRQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQzFCLFNBQVM7U0FDVjtRQUVELElBQUksSUFBSSw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksQ0FBQztLQUNkO0lBRUQsSUFBSSxJQUFJO21CQUNTLEdBQUcsQ0FBQyxVQUFVO1NBQzFCLEdBQUcsQ0FDRixFQUFFLENBQUMsRUFBRSxDQUFDO1VBQ0osRUFBRSxDQUFDLElBQUksMkNBQTJDLEVBQUUsQ0FBQyxJQUFJO1NBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsMEJBQTBCLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUNsRjtTQUNBLElBQUksQ0FBQyxFQUFFLENBQUM7OztnQkFHQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hELE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUM7U0FDdEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7Ozs7Q0FJL0IsQ0FBQztJQUVBLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdkgen/typescript-generator",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.20231002191238",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"directories": {
|
|
8
|
+
"lib": "dist"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
6
13
|
"scripts": {
|
|
7
14
|
"test": "jest --passWithNoTests",
|
|
8
15
|
"eslint:fix": "eslint --fix '{src,spec}/**/*.ts'",
|
|
@@ -23,7 +30,7 @@
|
|
|
23
30
|
},
|
|
24
31
|
"homepage": "https://github.com/sdkgen/sdkgen#readme",
|
|
25
32
|
"dependencies": {
|
|
26
|
-
"@sdkgen/parser": "^0.0.0-dev.
|
|
33
|
+
"@sdkgen/parser": "^0.0.0-dev.20231002191238"
|
|
27
34
|
},
|
|
28
35
|
"devDependencies": {
|
|
29
36
|
"@cubos/eslint-config": "^2.2.0",
|
|
@@ -32,7 +39,7 @@
|
|
|
32
39
|
"jest": "^29.0.0",
|
|
33
40
|
"ts-jest": "^29.0.0",
|
|
34
41
|
"type-fest": "^3.0.0",
|
|
35
|
-
"typescript": "^
|
|
42
|
+
"typescript": "^5.2.2"
|
|
36
43
|
},
|
|
37
44
|
"jest": {
|
|
38
45
|
"transform": {
|
|
@@ -52,5 +59,5 @@
|
|
|
52
59
|
"/node_modules/"
|
|
53
60
|
]
|
|
54
61
|
},
|
|
55
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "88f1c400863a2188f29318573284d5d428572433"
|
|
56
63
|
}
|
package/.eslintrc.json
DELETED
package/.prettierrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const parser = __importStar(require("@sdkgen/parser"));
|
|
27
|
-
const helpers_1 = require("../src/helpers");
|
|
28
|
-
describe("helpers.ts", () => {
|
|
29
|
-
test("generateTypescriptInterface", () => {
|
|
30
|
-
const structType = new parser.StructType([]);
|
|
31
|
-
structType.fields = [
|
|
32
|
-
new parser.Field("int", new parser.IntPrimitiveType()),
|
|
33
|
-
new parser.Field("bigint", new parser.BigIntPrimitiveType()),
|
|
34
|
-
new parser.Field("date", new parser.DatePrimitiveType()),
|
|
35
|
-
new parser.Field("bool", new parser.BoolPrimitiveType()),
|
|
36
|
-
new parser.Field("bytes", new parser.BytesPrimitiveType()),
|
|
37
|
-
new parser.Field("uuid", new parser.UuidPrimitiveType()),
|
|
38
|
-
new parser.Field("void", new parser.VoidPrimitiveType()),
|
|
39
|
-
new parser.Field("json", new parser.JsonPrimitiveType()),
|
|
40
|
-
new parser.Field("optionalStrArray", new parser.OptionalType(new parser.ArrayType(new parser.StringPrimitiveType()))),
|
|
41
|
-
];
|
|
42
|
-
structType.name = "awesomeInterface";
|
|
43
|
-
expect((0, helpers_1.generateTypescriptInterface)(structType, false)).toBe(`export interface awesomeInterface {
|
|
44
|
-
int: number
|
|
45
|
-
bigint: bigint
|
|
46
|
-
date: Date
|
|
47
|
-
bool: boolean
|
|
48
|
-
bytes: Buffer
|
|
49
|
-
uuid: string
|
|
50
|
-
void: void
|
|
51
|
-
json: any
|
|
52
|
-
optionalStrArray: string[] | null
|
|
53
|
-
}
|
|
54
|
-
`);
|
|
55
|
-
});
|
|
56
|
-
test("generateTypescriptTypeName: IntPrimitiveType", () => {
|
|
57
|
-
const type = new parser.IntPrimitiveType();
|
|
58
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("number");
|
|
59
|
-
});
|
|
60
|
-
test("generateTypescriptTypeName: UIntPrimitiveType", () => {
|
|
61
|
-
const type = new parser.UIntPrimitiveType();
|
|
62
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("number");
|
|
63
|
-
});
|
|
64
|
-
test("generateTypescriptTypeName: MoneyPrimitiveType", () => {
|
|
65
|
-
const type = new parser.MoneyPrimitiveType();
|
|
66
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("number");
|
|
67
|
-
});
|
|
68
|
-
test("generateTypescriptTypeName: FloatPrimitiveType", () => {
|
|
69
|
-
const type = new parser.FloatPrimitiveType();
|
|
70
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("number");
|
|
71
|
-
});
|
|
72
|
-
test("generateTypescriptTypeName: DateTimePrimitiveType", () => {
|
|
73
|
-
const type = new parser.DateTimePrimitiveType();
|
|
74
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("Date");
|
|
75
|
-
});
|
|
76
|
-
test("generateTypescriptTypeName: StringPrimitiveType", () => {
|
|
77
|
-
const type = new parser.StringPrimitiveType();
|
|
78
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
79
|
-
});
|
|
80
|
-
test("generateTypescriptTypeName: CpfPrimitiveType", () => {
|
|
81
|
-
const type = new parser.CpfPrimitiveType();
|
|
82
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
83
|
-
});
|
|
84
|
-
test("generateTypescriptTypeName: CnpjPrimitiveType", () => {
|
|
85
|
-
const type = new parser.CnpjPrimitiveType();
|
|
86
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
87
|
-
});
|
|
88
|
-
test("generateTypescriptTypeName: EmailPrimitiveType", () => {
|
|
89
|
-
const type = new parser.EmailPrimitiveType();
|
|
90
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
91
|
-
});
|
|
92
|
-
test("generateTypescriptTypeName: HtmlPrimitiveType", () => {
|
|
93
|
-
const type = new parser.HtmlPrimitiveType();
|
|
94
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
95
|
-
});
|
|
96
|
-
test("generateTypescriptTypeName: UrlPrimitiveType", () => {
|
|
97
|
-
const type = new parser.UrlPrimitiveType();
|
|
98
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
99
|
-
});
|
|
100
|
-
test("generateTypescriptTypeName: HexPrimitiveType", () => {
|
|
101
|
-
const type = new parser.HexPrimitiveType();
|
|
102
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
103
|
-
});
|
|
104
|
-
test("generateTypescriptTypeName: Base64PrimitiveType", () => {
|
|
105
|
-
const type = new parser.Base64PrimitiveType();
|
|
106
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
107
|
-
});
|
|
108
|
-
test("generateTypescriptTypeName: XmlPrimitiveType", () => {
|
|
109
|
-
const type = new parser.XmlPrimitiveType();
|
|
110
|
-
expect((0, helpers_1.generateTypescriptTypeName)(type, false)).toBe("string");
|
|
111
|
-
});
|
|
112
|
-
test("generateTypescriptTypeName: StructType", () => {
|
|
113
|
-
const structType = new parser.StructType([
|
|
114
|
-
new parser.Field("int", new parser.IntPrimitiveType()),
|
|
115
|
-
new parser.Field("bigint", new parser.BigIntPrimitiveType()),
|
|
116
|
-
]);
|
|
117
|
-
structType.name = "simpleInterface";
|
|
118
|
-
expect((0, helpers_1.generateTypescriptTypeName)(structType, false)).toBe(structType.name);
|
|
119
|
-
});
|
|
120
|
-
test("generateTypescriptTypeName: EnumType", () => {
|
|
121
|
-
const enumType = new parser.EnumType([new parser.EnumValue("value1")]);
|
|
122
|
-
enumType.name = "simpleEnum";
|
|
123
|
-
expect((0, helpers_1.generateTypescriptTypeName)(enumType, false)).toBe(enumType.name);
|
|
124
|
-
});
|
|
125
|
-
test("generateTypescriptTypeName: TypeReference", () => {
|
|
126
|
-
const enumType = new parser.TypeReference("typeRef");
|
|
127
|
-
enumType.type = new parser.HexPrimitiveType();
|
|
128
|
-
expect((0, helpers_1.generateTypescriptTypeName)(enumType, false)).toBe("string");
|
|
129
|
-
});
|
|
130
|
-
test("generateTypescriptTypeName: unknown PrimitiveType error", () => {
|
|
131
|
-
class UnknownType extends parser.Type {
|
|
132
|
-
constructor() {
|
|
133
|
-
super(...arguments);
|
|
134
|
-
this.name = "UnknownType";
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
const newUnknownType = new UnknownType();
|
|
138
|
-
expect(() => (0, helpers_1.generateTypescriptTypeName)(newUnknownType, false)).toThrowError(`BUG: generateTypescriptTypeName with ${newUnknownType.name}`);
|
|
139
|
-
});
|
|
140
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateBrowserClientSource = void 0;
|
|
4
|
-
const parser_1 = require("@sdkgen/parser");
|
|
5
|
-
const helpers_1 = require("./helpers");
|
|
6
|
-
function generateBrowserClientSource(ast) {
|
|
7
|
-
let code = "";
|
|
8
|
-
const hasErrorWithData = ast.errors.some(err => !(err.dataType instanceof parser_1.VoidPrimitiveType));
|
|
9
|
-
code += `/* eslint-disable */
|
|
10
|
-
import { SdkgenError${hasErrorWithData ? ", SdkgenErrorWithData" : ""}, SdkgenHttpClient } from "@sdkgen/browser-runtime";
|
|
11
|
-
`;
|
|
12
|
-
if ((0, parser_1.hasType)(ast, parser_1.DecimalPrimitiveType)) {
|
|
13
|
-
code += `import { Decimal } from "decimal.js-light";\n`;
|
|
14
|
-
}
|
|
15
|
-
code += "\n";
|
|
16
|
-
for (const type of ast.enumTypes) {
|
|
17
|
-
code += (0, helpers_1.generateTypescriptEnum)(type);
|
|
18
|
-
code += "\n";
|
|
19
|
-
}
|
|
20
|
-
for (const type of ast.structTypes) {
|
|
21
|
-
code += (0, helpers_1.generateTypescriptInterface)(type, true);
|
|
22
|
-
code += "\n";
|
|
23
|
-
}
|
|
24
|
-
for (const error of ast.errors) {
|
|
25
|
-
code += (0, helpers_1.generateTypescriptErrorClass)(error, true);
|
|
26
|
-
code += "\n";
|
|
27
|
-
}
|
|
28
|
-
code += `export class ApiClient extends SdkgenHttpClient {
|
|
29
|
-
constructor(baseUrl: string) {
|
|
30
|
-
super(baseUrl, astJson, errClasses);
|
|
31
|
-
}
|
|
32
|
-
${ast.operations
|
|
33
|
-
.filter(op => op.annotations.every(ann => !(ann instanceof parser_1.HiddenAnnotation)))
|
|
34
|
-
.map(op => `
|
|
35
|
-
${op.name}(args${op.args.length === 0 ? "?" : ""}: {${op.args
|
|
36
|
-
.map(arg => `${arg.name}${arg.type.name.endsWith("?") ? "?" : ""}: ${(0, helpers_1.generateTypescriptTypeName)(arg.type, true)}`)
|
|
37
|
-
.join(", ")}}): Promise<${(0, helpers_1.generateTypescriptTypeName)(op.returnType, true)}> { return this.makeRequest("${op.name}", args || {}); }`)
|
|
38
|
-
.join("")}
|
|
39
|
-
}\n\n`;
|
|
40
|
-
code += `const errClasses = {\n${ast.errors.map(err => ` ${err.name}`).join(",\n")}\n};\n\n`;
|
|
41
|
-
code += `const astJson = ${JSON.stringify((0, parser_1.astToJson)(ast), null, 4).replace(/"(?<key>\w+)":/gu, "$<key>:")} as const;\n`;
|
|
42
|
-
return code;
|
|
43
|
-
}
|
|
44
|
-
exports.generateBrowserClientSource = generateBrowserClientSource;
|
package/dist/src/helpers.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.clearForLogging = exports.generateTypescriptErrorClass = exports.generateTypescriptEnum = exports.generateTypescriptInterface = exports.generateTypescriptTypeName = void 0;
|
|
4
|
-
const parser_1 = require("@sdkgen/parser");
|
|
5
|
-
function generateTypescriptTypeName(type, isBrowser) {
|
|
6
|
-
switch (type.constructor) {
|
|
7
|
-
case parser_1.IntPrimitiveType:
|
|
8
|
-
case parser_1.UIntPrimitiveType:
|
|
9
|
-
case parser_1.MoneyPrimitiveType:
|
|
10
|
-
case parser_1.FloatPrimitiveType:
|
|
11
|
-
return "number";
|
|
12
|
-
case parser_1.BigIntPrimitiveType:
|
|
13
|
-
return "bigint";
|
|
14
|
-
case parser_1.DecimalPrimitiveType:
|
|
15
|
-
return "Decimal";
|
|
16
|
-
case parser_1.DatePrimitiveType:
|
|
17
|
-
case parser_1.DateTimePrimitiveType:
|
|
18
|
-
return "Date";
|
|
19
|
-
case parser_1.BoolPrimitiveType:
|
|
20
|
-
return "boolean";
|
|
21
|
-
case parser_1.BytesPrimitiveType:
|
|
22
|
-
return isBrowser ? "ArrayBuffer" : "Buffer";
|
|
23
|
-
case parser_1.StringPrimitiveType:
|
|
24
|
-
case parser_1.CpfPrimitiveType:
|
|
25
|
-
case parser_1.CnpjPrimitiveType:
|
|
26
|
-
case parser_1.EmailPrimitiveType:
|
|
27
|
-
case parser_1.HtmlPrimitiveType:
|
|
28
|
-
case parser_1.UrlPrimitiveType:
|
|
29
|
-
case parser_1.UuidPrimitiveType:
|
|
30
|
-
case parser_1.HexPrimitiveType:
|
|
31
|
-
case parser_1.Base64PrimitiveType:
|
|
32
|
-
case parser_1.XmlPrimitiveType:
|
|
33
|
-
return "string";
|
|
34
|
-
case parser_1.VoidPrimitiveType:
|
|
35
|
-
return "void";
|
|
36
|
-
case parser_1.JsonPrimitiveType:
|
|
37
|
-
return "any";
|
|
38
|
-
case parser_1.OptionalType:
|
|
39
|
-
return `${generateTypescriptTypeName(type.base, isBrowser)} | null`;
|
|
40
|
-
case parser_1.ArrayType: {
|
|
41
|
-
const { base } = type;
|
|
42
|
-
const baseGen = generateTypescriptTypeName(base, isBrowser);
|
|
43
|
-
if (base instanceof parser_1.OptionalType) {
|
|
44
|
-
return `(${baseGen})[]`;
|
|
45
|
-
}
|
|
46
|
-
return `${baseGen}[]`;
|
|
47
|
-
}
|
|
48
|
-
case parser_1.StructType:
|
|
49
|
-
case parser_1.EnumType:
|
|
50
|
-
return type.name;
|
|
51
|
-
case parser_1.TypeReference:
|
|
52
|
-
return generateTypescriptTypeName(type.type, isBrowser);
|
|
53
|
-
default:
|
|
54
|
-
throw new Error(`BUG: generateTypescriptTypeName with ${type.constructor.name}`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.generateTypescriptTypeName = generateTypescriptTypeName;
|
|
58
|
-
function generateTypescriptInterface(type, isBrowser) {
|
|
59
|
-
return `export interface ${type.name} {
|
|
60
|
-
${type.fields.map(field => ` ${field.name}: ${generateTypescriptTypeName(field.type, isBrowser)}`).join("\n")}
|
|
61
|
-
}\n`;
|
|
62
|
-
}
|
|
63
|
-
exports.generateTypescriptInterface = generateTypescriptInterface;
|
|
64
|
-
function generateTypescriptEnum(type) {
|
|
65
|
-
if (type.hasStructValues) {
|
|
66
|
-
return `export type ${type.name} = ${type.values
|
|
67
|
-
.map(x => (x.struct ? `({tag: "${x.value}"} & ${x.struct.name})` : `{tag: "${x.value}"}`))
|
|
68
|
-
.join(" | ")};\n`;
|
|
69
|
-
}
|
|
70
|
-
return `export type ${type.name} = ${type.values.map(x => `"${x.value}"`).join(" | ")};\n`;
|
|
71
|
-
}
|
|
72
|
-
exports.generateTypescriptEnum = generateTypescriptEnum;
|
|
73
|
-
function generateTypescriptErrorClass(error, isBrowser) {
|
|
74
|
-
return `export class ${error.name} extends ${error.dataType instanceof parser_1.VoidPrimitiveType ? "SdkgenError" : `SdkgenErrorWithData<${generateTypescriptTypeName(error.dataType, isBrowser)}>`} {}\n`;
|
|
75
|
-
}
|
|
76
|
-
exports.generateTypescriptErrorClass = generateTypescriptErrorClass;
|
|
77
|
-
function clearForLogging(path, type) {
|
|
78
|
-
switch (type.constructor) {
|
|
79
|
-
case parser_1.TypeReference:
|
|
80
|
-
return clearForLogging(path, type.type);
|
|
81
|
-
case parser_1.OptionalType: {
|
|
82
|
-
const code = clearForLogging(path, type.base);
|
|
83
|
-
if (code) {
|
|
84
|
-
return `if (${path} !== null && ${path} !== undefined) { ${code} }`;
|
|
85
|
-
}
|
|
86
|
-
return "";
|
|
87
|
-
}
|
|
88
|
-
case parser_1.ArrayType: {
|
|
89
|
-
const code = clearForLogging("el", type.base);
|
|
90
|
-
if (code) {
|
|
91
|
-
return `for (const el of ${path}) { ${code} }`;
|
|
92
|
-
}
|
|
93
|
-
return "";
|
|
94
|
-
}
|
|
95
|
-
case parser_1.StructType: {
|
|
96
|
-
const codes = [];
|
|
97
|
-
for (const field of type.fields) {
|
|
98
|
-
if (field.secret) {
|
|
99
|
-
codes.push(`${path}.${field.name} = "<secret>";`);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
const code = clearForLogging(`${path}.${field.name}`, field.type);
|
|
103
|
-
if (code) {
|
|
104
|
-
codes.push(code);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return codes.join(" ");
|
|
109
|
-
}
|
|
110
|
-
default:
|
|
111
|
-
return "";
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
exports.clearForLogging = clearForLogging;
|