@sdkgen/node-runtime 0.0.0-dev.20231008160426 → 0.0.0-dev.20231221180829
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/.eslintignore +1 -0
- package/.eslintrc.json +3 -0
- package/.prettierrc +12 -0
- package/.vscode/settings.json +14 -0
- package/dist/spec/error.spec.d.ts +1 -0
- package/dist/spec/error.spec.js +15 -0
- package/dist/spec/rest/rest.spec.d.ts +1 -0
- package/dist/spec/rest/rest.spec.js +353 -0
- package/dist/spec/runtime/errors.spec.d.ts +1 -0
- package/dist/spec/runtime/errors.spec.js +43 -0
- package/dist/spec/runtime/middleware.spec.d.ts +1 -0
- package/dist/spec/runtime/middleware.spec.js +100 -0
- package/dist/spec/simple/legacyNodeClient.d.ts +17 -0
- package/dist/spec/simple/legacyNodeClient.js +128 -0
- package/dist/spec/simple/simple.spec.d.ts +1 -0
- package/dist/spec/simple/simple.spec.js +113 -0
- package/dist/spec/types.d.ts +1 -0
- package/dist/spec/types.js +60 -0
- package/dist/spec/types.spec.d.ts +1 -0
- package/dist/spec/types.spec.js +128 -0
- package/dist/src/api-config.js +19 -0
- package/dist/src/context.js +2 -0
- package/dist/src/encode-decode.js +376 -0
- package/dist/src/error.js +32 -0
- package/dist/src/execute.js +56 -0
- package/dist/src/http-client.js +105 -0
- package/dist/src/http-server.js +941 -0
- package/dist/src/index.js +18 -0
- package/dist/src/swagger.js +439 -0
- package/dist/src/test-wrapper.js +52 -0
- package/dist/src/utils.js +7 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +26 -42
- package/dist/api-config.js +0 -15
- package/dist/context.js +0 -2
- package/dist/encode-decode.js +0 -338
- package/dist/error.js +0 -27
- package/dist/execute.js +0 -53
- package/dist/http-client.js +0 -103
- package/dist/http-server.js +0 -930
- package/dist/index.js +0 -7
- package/dist/swagger.js +0 -448
- package/dist/test-wrapper.js +0 -53
- package/dist/utils.js +0 -4
- /package/dist/{api-config.d.ts → src/api-config.d.ts} +0 -0
- /package/dist/{context.d.ts → src/context.d.ts} +0 -0
- /package/dist/{encode-decode.d.ts → src/encode-decode.d.ts} +0 -0
- /package/dist/{error.d.ts → src/error.d.ts} +0 -0
- /package/dist/{execute.d.ts → src/execute.d.ts} +0 -0
- /package/dist/{http-client.d.ts → src/http-client.d.ts} +0 -0
- /package/dist/{http-server.d.ts → src/http-server.d.ts} +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{swagger.d.ts → src/swagger.d.ts} +0 -0
- /package/dist/{test-wrapper.d.ts → src/test-wrapper.d.ts} +0 -0
- /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
package/dist/encode-decode.js
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
import * as CNPJ from "@fnando/cnpj";
|
|
2
|
-
import * as CPF from "@fnando/cpf";
|
|
3
|
-
import { Decimal } from "decimal.js";
|
|
4
|
-
const simpleStringTypes = ["string", "email", "html", "xml"];
|
|
5
|
-
const simpleTypes = ["json", "bool", "url", "int", "uint", "float", "money", "hex", "uuid", "base64", "void", ...simpleStringTypes];
|
|
6
|
-
class ParseError extends Error {
|
|
7
|
-
constructor(path, type, value) {
|
|
8
|
-
let str;
|
|
9
|
-
try {
|
|
10
|
-
str = JSON.stringify(value);
|
|
11
|
-
}
|
|
12
|
-
catch (err) {
|
|
13
|
-
str = String(value);
|
|
14
|
-
}
|
|
15
|
-
super(`Invalid type at '${path}', expected ${String(type)}, got ${str}`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function simpleEncodeDecode(path, type, value) {
|
|
19
|
-
if (type === "json") {
|
|
20
|
-
if (value === null || value === undefined) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return JSON.parse(JSON.stringify(value));
|
|
24
|
-
}
|
|
25
|
-
else if (type === "bool") {
|
|
26
|
-
if (typeof value !== "boolean") {
|
|
27
|
-
throw new ParseError(path, type, value);
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
else if (simpleStringTypes.includes(type)) {
|
|
32
|
-
if (typeof value !== "string") {
|
|
33
|
-
throw new ParseError(path, type, value);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
else if (type === "hex") {
|
|
38
|
-
if (typeof value !== "string" || !/^(?:[A-Fa-f0-9]{2})*$/u.test(value)) {
|
|
39
|
-
throw new ParseError(path, type, value);
|
|
40
|
-
}
|
|
41
|
-
return value.toLowerCase();
|
|
42
|
-
}
|
|
43
|
-
else if (type === "uuid") {
|
|
44
|
-
if (typeof value !== "string" || !/^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$/u.test(value)) {
|
|
45
|
-
throw new ParseError(path, type, value);
|
|
46
|
-
}
|
|
47
|
-
return value.toLowerCase();
|
|
48
|
-
}
|
|
49
|
-
else if (type === "base64") {
|
|
50
|
-
if (typeof value !== "string" || Buffer.from(value, "base64").toString("base64") !== value) {
|
|
51
|
-
throw new ParseError(path, type, value);
|
|
52
|
-
}
|
|
53
|
-
return value;
|
|
54
|
-
}
|
|
55
|
-
else if (type === "int") {
|
|
56
|
-
if (typeof value !== "number" || (value | 0) !== value) {
|
|
57
|
-
throw new ParseError(path, type, value);
|
|
58
|
-
}
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
else if (type === "uint") {
|
|
62
|
-
if (typeof value !== "number" || (value | 0) !== value || value < 0) {
|
|
63
|
-
throw new ParseError(path, type, value);
|
|
64
|
-
}
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
else if (type === "float") {
|
|
68
|
-
if (typeof value !== "number") {
|
|
69
|
-
throw new ParseError(path, type, value);
|
|
70
|
-
}
|
|
71
|
-
return value;
|
|
72
|
-
}
|
|
73
|
-
else if (type === "money") {
|
|
74
|
-
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
75
|
-
throw new ParseError(path, type, value);
|
|
76
|
-
}
|
|
77
|
-
return value;
|
|
78
|
-
}
|
|
79
|
-
else if (type === "url") {
|
|
80
|
-
let url;
|
|
81
|
-
if (typeof value === "string") {
|
|
82
|
-
try {
|
|
83
|
-
url = new URL(value);
|
|
84
|
-
}
|
|
85
|
-
catch (e) {
|
|
86
|
-
// ignore
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (!url) {
|
|
90
|
-
throw new ParseError(path, type, value);
|
|
91
|
-
}
|
|
92
|
-
return url.toString();
|
|
93
|
-
}
|
|
94
|
-
else if (type === "void") {
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
98
|
-
}
|
|
99
|
-
export function encode(typeTable, path, type, value) {
|
|
100
|
-
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
101
|
-
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
102
|
-
}
|
|
103
|
-
else if (Array.isArray(type)) {
|
|
104
|
-
if (type.every(tag => typeof tag === "string")) {
|
|
105
|
-
for (const tag of type) {
|
|
106
|
-
if (tag === value) {
|
|
107
|
-
return tag;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
else if (typeof value === "object" && value && "tag" in value) {
|
|
112
|
-
const { tag: tagValue, ...restValue } = value;
|
|
113
|
-
for (const entry of type) {
|
|
114
|
-
if (typeof entry === "string") {
|
|
115
|
-
if (entry === tagValue) {
|
|
116
|
-
return entry;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
const [tag, valueType] = entry;
|
|
121
|
-
if (tag === tagValue) {
|
|
122
|
-
const encodedValues = encode(typeTable, `${path}.${tag}`, valueType, restValue);
|
|
123
|
-
// eslint-disable-next-line max-depth
|
|
124
|
-
if (Object.values(encodedValues).every(v => v === null)) {
|
|
125
|
-
return tag;
|
|
126
|
-
}
|
|
127
|
-
return [tag, encodedValues];
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
throw new ParseError(path, type, value);
|
|
133
|
-
}
|
|
134
|
-
else if (typeof type === "object") {
|
|
135
|
-
if (typeof value !== "object") {
|
|
136
|
-
throw new ParseError(path, type, value);
|
|
137
|
-
}
|
|
138
|
-
const obj = {};
|
|
139
|
-
for (const key of Object.keys(type)) {
|
|
140
|
-
obj[key] = encode(typeTable, `${path}.${key}`, type[key], value[key]);
|
|
141
|
-
}
|
|
142
|
-
return obj;
|
|
143
|
-
}
|
|
144
|
-
else if (typeof type === "string" && type.endsWith("?")) {
|
|
145
|
-
if (value === null || value === undefined) {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
return encode(typeTable, path, type.slice(0, type.length - 1), value);
|
|
149
|
-
}
|
|
150
|
-
else if (typeof type === "string" && type.endsWith("[]")) {
|
|
151
|
-
if (!Array.isArray(value)) {
|
|
152
|
-
throw new ParseError(path, type, value);
|
|
153
|
-
}
|
|
154
|
-
return value.map((entry, index) => encode(typeTable, `${path}[${index}]`, type.slice(0, type.length - 2), entry));
|
|
155
|
-
}
|
|
156
|
-
else if (typeof type === "string" && simpleTypes.includes(type)) {
|
|
157
|
-
return simpleEncodeDecode(path, type, value);
|
|
158
|
-
}
|
|
159
|
-
else if (type === "bytes") {
|
|
160
|
-
if (!(value instanceof Buffer)) {
|
|
161
|
-
throw new ParseError(path, type, value);
|
|
162
|
-
}
|
|
163
|
-
return value.toString("base64");
|
|
164
|
-
}
|
|
165
|
-
else if (type === "bigint") {
|
|
166
|
-
if (!(typeof value === "bigint")) {
|
|
167
|
-
throw new ParseError(path, type, value);
|
|
168
|
-
}
|
|
169
|
-
return value.toString();
|
|
170
|
-
}
|
|
171
|
-
else if (type === "cpf") {
|
|
172
|
-
if (typeof value !== "string" || !CPF.isValid(value)) {
|
|
173
|
-
throw new ParseError(path, type, value);
|
|
174
|
-
}
|
|
175
|
-
return CPF.strip(value);
|
|
176
|
-
}
|
|
177
|
-
else if (type === "cnpj") {
|
|
178
|
-
if (typeof value !== "string" || !CNPJ.isValid(value)) {
|
|
179
|
-
throw new ParseError(path, type, value);
|
|
180
|
-
}
|
|
181
|
-
return CNPJ.strip(value);
|
|
182
|
-
}
|
|
183
|
-
else if (type === "date") {
|
|
184
|
-
if (!(value instanceof Date && !isNaN(value.getTime())) && !(typeof value === "string" && /^[0-9]{4}-[01][0-9]-[0123][0-9]$/u.test(value))) {
|
|
185
|
-
throw new ParseError(path, type, value);
|
|
186
|
-
}
|
|
187
|
-
const dateValue = value instanceof Date ? value : new Date(value);
|
|
188
|
-
return `${dateValue.getFullYear().toString().padStart(4, "0")}-${(dateValue.getMonth() + 1).toString().padStart(2, "0")}-${dateValue
|
|
189
|
-
.getDate()
|
|
190
|
-
.toString()
|
|
191
|
-
.padStart(2, "0")}`;
|
|
192
|
-
}
|
|
193
|
-
else if (type === "datetime") {
|
|
194
|
-
if (!(value instanceof Date && !isNaN(value.getTime())) &&
|
|
195
|
-
!(typeof value === "string" &&
|
|
196
|
-
/^[0-9]{4}-[01][0-9]-[0123][0-9]T[012][0-9]:[0123456][0-9]:[0123456][0-9](?:\.[0-9]{1,6})?(?:Z|[+-][012][0-9]:[0123456][0-9])?$/u.test(value))) {
|
|
197
|
-
throw new ParseError(path, type, value);
|
|
198
|
-
}
|
|
199
|
-
return (typeof value === "string" ? new Date(value) : value).toISOString().replace("Z", "");
|
|
200
|
-
}
|
|
201
|
-
else if (type === "decimal") {
|
|
202
|
-
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !Decimal.isDecimal(value)) {
|
|
203
|
-
throw new ParseError(path, type, value);
|
|
204
|
-
}
|
|
205
|
-
return new Decimal(value).toString();
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
209
|
-
const resolved = typeTable[type];
|
|
210
|
-
if (resolved) {
|
|
211
|
-
return encode(typeTable, path, resolved, value);
|
|
212
|
-
}
|
|
213
|
-
throw new Error(`Unknown type '${String(type)}' at '${path}'`);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
export function decode(typeTable, path, type, value) {
|
|
217
|
-
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
218
|
-
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
219
|
-
}
|
|
220
|
-
else if (Array.isArray(type)) {
|
|
221
|
-
if (type.every(tag => typeof tag === "string")) {
|
|
222
|
-
for (const tag of type) {
|
|
223
|
-
if (tag === value) {
|
|
224
|
-
return tag;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
for (const entry of type) {
|
|
230
|
-
if (typeof entry === "string") {
|
|
231
|
-
if (entry === value) {
|
|
232
|
-
return { tag: entry };
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
const [tag, valueType] = entry;
|
|
237
|
-
if (tag === value) {
|
|
238
|
-
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, {});
|
|
239
|
-
return { ...decodedValues, tag };
|
|
240
|
-
}
|
|
241
|
-
else if (Array.isArray(value) && value.length === 2 && tag === value[0]) {
|
|
242
|
-
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, value[1]);
|
|
243
|
-
return { ...decodedValues, tag };
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
throw new ParseError(path, type, value);
|
|
249
|
-
}
|
|
250
|
-
else if (typeof type === "object") {
|
|
251
|
-
if (typeof value !== "object") {
|
|
252
|
-
throw new ParseError(path, type, value);
|
|
253
|
-
}
|
|
254
|
-
const obj = {};
|
|
255
|
-
for (const key of Object.keys(type)) {
|
|
256
|
-
obj[key] = decode(typeTable, `${path}.${key}`, type[key], value[key]);
|
|
257
|
-
}
|
|
258
|
-
return obj;
|
|
259
|
-
}
|
|
260
|
-
else if (typeof type === "string" && type.endsWith("?")) {
|
|
261
|
-
if (value === null || value === undefined) {
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
return decode(typeTable, path, type.slice(0, type.length - 1), value);
|
|
265
|
-
}
|
|
266
|
-
else if (typeof type === "string" && type.endsWith("[]")) {
|
|
267
|
-
if (!Array.isArray(value)) {
|
|
268
|
-
throw new ParseError(path, type, value);
|
|
269
|
-
}
|
|
270
|
-
return value.map((entry, index) => decode(typeTable, `${path}[${index}]`, type.slice(0, type.length - 2), entry));
|
|
271
|
-
}
|
|
272
|
-
else if (typeof type === "string" && simpleTypes.includes(type)) {
|
|
273
|
-
return simpleEncodeDecode(path, type, value);
|
|
274
|
-
}
|
|
275
|
-
else if (type === "bytes") {
|
|
276
|
-
if (typeof value !== "string") {
|
|
277
|
-
throw new ParseError(path, `${String(type)} (base 64)`, value);
|
|
278
|
-
}
|
|
279
|
-
const buffer = Buffer.from(value, "base64");
|
|
280
|
-
if (buffer.toString("base64") !== value) {
|
|
281
|
-
throw new ParseError(path, `${String(type)} (base 64)`, value);
|
|
282
|
-
}
|
|
283
|
-
return buffer;
|
|
284
|
-
}
|
|
285
|
-
else if (type === "bigint") {
|
|
286
|
-
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+$/u.test(value))) {
|
|
287
|
-
throw new ParseError(path, type, value);
|
|
288
|
-
}
|
|
289
|
-
return BigInt(value);
|
|
290
|
-
}
|
|
291
|
-
else if (type === "cpf") {
|
|
292
|
-
if (typeof value !== "string" || !CPF.isValid(value)) {
|
|
293
|
-
throw new ParseError(path, type, value);
|
|
294
|
-
}
|
|
295
|
-
return CPF.format(value);
|
|
296
|
-
}
|
|
297
|
-
else if (type === "cnpj") {
|
|
298
|
-
if (typeof value !== "string" || !CNPJ.isValid(value)) {
|
|
299
|
-
throw new ParseError(path, type, value);
|
|
300
|
-
}
|
|
301
|
-
return CNPJ.format(value);
|
|
302
|
-
}
|
|
303
|
-
else if (type === "date") {
|
|
304
|
-
if (typeof value !== "string" || !/^[0-9]{4}-[01][0-9]-[0123][0-9]$/u.test(value)) {
|
|
305
|
-
throw new ParseError(path, type, value);
|
|
306
|
-
}
|
|
307
|
-
const day = parseInt(value.split("-")[2], 10);
|
|
308
|
-
const month = parseInt(value.split("-")[1], 10) - 1;
|
|
309
|
-
const year = parseInt(value.split("-")[0], 10);
|
|
310
|
-
const date = new Date(year, month, day);
|
|
311
|
-
if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {
|
|
312
|
-
throw new ParseError(path, type, value);
|
|
313
|
-
}
|
|
314
|
-
return date;
|
|
315
|
-
}
|
|
316
|
-
else if (type === "datetime") {
|
|
317
|
-
if (typeof value !== "string" || !/^[0-9]{4}-[01][0-9]-[0123][0-9]T[012][0-9]:[0123456][0-9]:[0123456][0-9](?:\.[0-9]{1,6})?Z?$/u.test(value)) {
|
|
318
|
-
throw new ParseError(path, type, value);
|
|
319
|
-
}
|
|
320
|
-
return new Date(`${value.endsWith("Z") ? value : value.concat("Z")}`);
|
|
321
|
-
}
|
|
322
|
-
else if (type === "decimal") {
|
|
323
|
-
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value))) {
|
|
324
|
-
throw new ParseError(path, type, value);
|
|
325
|
-
}
|
|
326
|
-
return new Decimal(value);
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
330
|
-
const resolved = typeTable[type];
|
|
331
|
-
if (resolved) {
|
|
332
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
333
|
-
return decode(typeTable, path, resolved, value);
|
|
334
|
-
}
|
|
335
|
-
throw new Error(`Unknown type '${String(type)}' at '${path}'`);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLWRlY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbmNvZGUtZGVjb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNckMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFDLENBQUM7QUFrR3BJLE1BQU0sVUFBVyxTQUFRLEtBQUs7SUFDNUIsWUFBWSxJQUFZLEVBQUUsSUFBbUMsRUFBRSxLQUFjO1FBQzNFLElBQUksR0FBVyxDQUFDO1FBRWhCLElBQUk7WUFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjtRQUVELEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxlQUFlLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxLQUFjO0lBQ3BFLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZ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
|
package/dist/error.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class SdkgenError extends Error {
|
|
2
|
-
get type() {
|
|
3
|
-
return this.constructor.name;
|
|
4
|
-
}
|
|
5
|
-
toJSON() {
|
|
6
|
-
return {
|
|
7
|
-
message: this.message,
|
|
8
|
-
type: this.type,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class SdkgenErrorWithData extends SdkgenError {
|
|
13
|
-
constructor(message, data) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.data = data;
|
|
16
|
-
}
|
|
17
|
-
toJSON() {
|
|
18
|
-
return {
|
|
19
|
-
data: this.data,
|
|
20
|
-
message: this.message,
|
|
21
|
-
type: this.type,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export class Fatal extends SdkgenError {
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixXQUFZLFNBQVEsS0FBSztJQUM3QyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBZ0IsbUJBQThCLFNBQVEsV0FBVztJQUNyRSxZQUNFLE9BQWUsRUFDUixJQUFjO1FBRXJCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUZSLFNBQUksR0FBSixJQUFJLENBQVU7SUFHdkIsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLEtBQU0sU0FBUSxXQUFXO0NBQUcifQ==
|
package/dist/execute.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ThrowsAnnotation } from "@sdkgen/parser";
|
|
2
|
-
import { decode, encode } from "./encode-decode";
|
|
3
|
-
import { Fatal } from "./error";
|
|
4
|
-
import { has } from "./utils";
|
|
5
|
-
export async function executeRequest(ctx, apiConfig) {
|
|
6
|
-
// eslint-disable-next-line func-style
|
|
7
|
-
let next = async () => {
|
|
8
|
-
try {
|
|
9
|
-
const functionDescription = apiConfig.astJson.functionTable[ctx.request.name];
|
|
10
|
-
const functionImplementation = apiConfig.fn[ctx.request.name];
|
|
11
|
-
if (!functionDescription || !functionImplementation) {
|
|
12
|
-
throw new Fatal(`Function does not exist: ${ctx.request.name}`);
|
|
13
|
-
}
|
|
14
|
-
const args = decode(apiConfig.astJson.typeTable, `${ctx.request.name}.args`, functionDescription.args, ctx.request.args);
|
|
15
|
-
const ret = (await functionImplementation(ctx, args));
|
|
16
|
-
const encodedRet = encode(apiConfig.astJson.typeTable, `${ctx.request.name}.ret`, functionDescription.ret, ret);
|
|
17
|
-
return { result: encodedRet };
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
return { error };
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
for (let i = apiConfig.middlewares.length - 1; i >= 0; --i) {
|
|
24
|
-
const middleware = apiConfig.middlewares[i];
|
|
25
|
-
const previousNext = next;
|
|
26
|
-
next = async () => {
|
|
27
|
-
try {
|
|
28
|
-
return await middleware(ctx, previousNext);
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
return { error };
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
const reply = await next();
|
|
36
|
-
// If errors, check if the error type is one of the @throws annotation. If it isn't, change to Fatal
|
|
37
|
-
if (reply.error) {
|
|
38
|
-
const functionAst = apiConfig.ast.operations.find(op => op.name === ctx.request.name);
|
|
39
|
-
if (functionAst) {
|
|
40
|
-
const allowedErrors = functionAst.annotations.filter(ann => ann instanceof ThrowsAnnotation).map(ann => ann.error);
|
|
41
|
-
if (typeof reply.error !== "object" ||
|
|
42
|
-
reply.error === null ||
|
|
43
|
-
!has(reply.error, "type") ||
|
|
44
|
-
typeof reply.error.type !== "string" ||
|
|
45
|
-
(allowedErrors.length > 0 && !allowedErrors.includes(reply.error.type)) ||
|
|
46
|
-
!apiConfig.astJson.errors.map(error => (typeof error === "string" ? error : error[0])).includes(reply.error.type)) {
|
|
47
|
-
Object.defineProperty(reply.error, "type", { value: "Fatal" });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return reply;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leGVjdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFnQixHQUE0QixFQUFFLFNBQXVDO0lBQ3ZILHNDQUFzQztJQUN0QyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtRQUNwQixJQUFJO1lBQ0YsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTlELElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7YUFDakU7WUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLG1CQUFtQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpILE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsSUFB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
|
package/dist/http-client.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
/* eslint-disable prefer-promise-reject-errors */
|
|
3
|
-
import { randomBytes } from "crypto";
|
|
4
|
-
import { request as httpRequest } from "http";
|
|
5
|
-
import { request as httpsRequest } from "https";
|
|
6
|
-
import { hostname } from "os";
|
|
7
|
-
import { URL } from "url";
|
|
8
|
-
import { decode, encode } from "./encode-decode";
|
|
9
|
-
import { has } from "./utils";
|
|
10
|
-
export class SdkgenHttpClient {
|
|
11
|
-
constructor(baseUrl, astJson, errClasses) {
|
|
12
|
-
this.astJson = astJson;
|
|
13
|
-
this.errClasses = errClasses;
|
|
14
|
-
this.extra = new Map();
|
|
15
|
-
this.baseUrl = new URL(baseUrl);
|
|
16
|
-
}
|
|
17
|
-
async makeRequest(ctx, functionName, args) {
|
|
18
|
-
const func = this.astJson.functionTable[functionName];
|
|
19
|
-
if (!func) {
|
|
20
|
-
throw new Error(`Unknown function ${functionName}`);
|
|
21
|
-
}
|
|
22
|
-
const extra = {};
|
|
23
|
-
for (const [key, value] of this.extra) {
|
|
24
|
-
extra[key] = value;
|
|
25
|
-
}
|
|
26
|
-
const requestBody = JSON.stringify({
|
|
27
|
-
args: encode(this.astJson.typeTable, `${functionName}.args`, func.args, args),
|
|
28
|
-
deviceInfo: ctx?.request?.deviceInfo ?? { id: hostname(), type: "node" },
|
|
29
|
-
extra: {
|
|
30
|
-
...extra,
|
|
31
|
-
...ctx?.request?.extra,
|
|
32
|
-
},
|
|
33
|
-
name: functionName,
|
|
34
|
-
requestId: ctx?.request?.id ? ctx.request.id + randomBytes(6).toString("hex") : randomBytes(16).toString("hex"),
|
|
35
|
-
version: 3,
|
|
36
|
-
});
|
|
37
|
-
const options = {
|
|
38
|
-
hostname: this.baseUrl.hostname,
|
|
39
|
-
method: "POST",
|
|
40
|
-
path: this.baseUrl.pathname,
|
|
41
|
-
port: this.baseUrl.port,
|
|
42
|
-
headers: {
|
|
43
|
-
"content-type": "application/sdkgen",
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
const encodedRet = await new Promise((resolve, reject) => {
|
|
47
|
-
const req = (this.baseUrl.protocol === "http:" ? httpRequest : httpsRequest)(options, res => {
|
|
48
|
-
let data = "";
|
|
49
|
-
res.on("data", chunk => {
|
|
50
|
-
data += chunk;
|
|
51
|
-
});
|
|
52
|
-
res.on("end", () => {
|
|
53
|
-
try {
|
|
54
|
-
const response = JSON.parse(data);
|
|
55
|
-
if (has(response, "error") && response.error) {
|
|
56
|
-
reject(response.error);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
resolve(has(response, "result") ? response.result : null);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
reject({ message: `${error}`, type: "Fatal" });
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
res.on("error", error => {
|
|
67
|
-
reject({ message: `${error}`, type: "Fatal" });
|
|
68
|
-
});
|
|
69
|
-
res.on("aborted", () => {
|
|
70
|
-
reject({ message: "Request aborted", type: "Fatal" });
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
req.on("error", error => {
|
|
74
|
-
reject({ message: `${error}`, type: "Fatal" });
|
|
75
|
-
});
|
|
76
|
-
req.write(requestBody);
|
|
77
|
-
req.end();
|
|
78
|
-
}).catch((error) => {
|
|
79
|
-
if (has(error, "type") && has(error, "message") && typeof error.type === "string" && typeof error.message === "string") {
|
|
80
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
81
|
-
const errClass = this.errClasses[error.type] ?? this.errClasses.Fatal;
|
|
82
|
-
const errType = errClass.name;
|
|
83
|
-
const errorJson = this.astJson.errors.find(err => (Array.isArray(err) ? err[0] === errType : err === errType));
|
|
84
|
-
let newError;
|
|
85
|
-
if (errorJson && Array.isArray(errorJson) && has(error, "data")) {
|
|
86
|
-
newError = new errClass(error.message, decode(this.astJson.typeTable, `${errClass.name}.data`, errorJson[1], error.data));
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
newError = new errClass(error.message, undefined);
|
|
90
|
-
}
|
|
91
|
-
if (!newError.type) {
|
|
92
|
-
newError.type = errType;
|
|
93
|
-
}
|
|
94
|
-
throw newError;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return decode(this.astJson.typeTable, `${functionName}.ret`, func.ret, encodedRet);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLElBQUksWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWhELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQU0xQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFJOUIsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUNFLE9BQWUsRUFDUCxPQUE4QixFQUM5QixVQUFzQjtRQUR0QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBTGhDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztRQU9qQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQWdDLEVBQUUsWUFBb0IsRUFBRSxJQUFhO1FBQ3JGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsTUFBTSxLQUFLLEdBQTRCLEVB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
|