@sdkgen/node-runtime 0.0.0-dev.20230109212108 → 0.0.0-dev.20230120140203
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/spec/error.spec.js +4 -3
- package/dist/spec/rest/rest.spec.js +24 -24
- package/dist/spec/runtime/errors.spec.js +14 -15
- package/dist/spec/runtime/middleware.spec.js +14 -15
- package/dist/spec/simple/legacyNodeClient.js +32 -6
- package/dist/spec/simple/simple.spec.js +28 -27
- package/dist/spec/types.js +28 -27
- package/dist/spec/types.spec.js +55 -54
- package/dist/src/api-config.d.ts +4 -3
- package/dist/src/api-config.js +8 -4
- package/dist/src/context.d.ts +3 -3
- package/dist/src/context.js +2 -2
- package/dist/src/encode-decode.d.ts +2 -2
- package/dist/src/encode-decode.js +50 -12
- package/dist/src/error.js +9 -4
- package/dist/src/execute.d.ts +2 -2
- package/dist/src/execute.js +14 -12
- package/dist/src/http-client.d.ts +3 -3
- package/dist/src/http-client.js +27 -25
- package/dist/src/http-server.d.ts +3 -3
- package/dist/src/http-server.js +182 -168
- package/dist/src/index.d.ts +7 -11
- package/dist/src/index.js +18 -8
- package/dist/src/swagger.d.ts +1 -1
- package/dist/src/swagger.js +159 -146
- package/dist/src/test-wrapper.d.ts +2 -2
- package/dist/src/test-wrapper.js +23 -25
- package/dist/src/utils.js +5 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -26
- package/dist/src/new-interface.d.ts +0 -156
- package/dist/src/new-interface.js +0 -200
package/dist/spec/types.spec.js
CHANGED
|
@@ -1,114 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
3
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
4
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
3
|
-
|
|
5
|
+
const src_1 = require("../src");
|
|
4
6
|
describe("Encode/Decode", () => {
|
|
5
7
|
test("Process CPF", () => {
|
|
6
|
-
expect(encode({}, "", "cpf", "067.183.145-36")).toBe("06718314536");
|
|
7
|
-
expect(decode({}, "", "cpf", "06718314536")).toBe("067.183.145-36");
|
|
8
|
+
expect((0, src_1.encode)({}, "", "cpf", "067.183.145-36")).toBe("06718314536");
|
|
9
|
+
expect((0, src_1.decode)({}, "", "cpf", "06718314536")).toBe("067.183.145-36");
|
|
8
10
|
expect(() => {
|
|
9
|
-
encode({}, "", "cpf", "067.183.145-35");
|
|
11
|
+
(0, src_1.encode)({}, "", "cpf", "067.183.145-35");
|
|
10
12
|
}).toThrow();
|
|
11
13
|
expect(() => {
|
|
12
|
-
decode({}, "", "cpf", "06718314535");
|
|
14
|
+
(0, src_1.decode)({}, "", "cpf", "06718314535");
|
|
13
15
|
}).toThrow();
|
|
14
16
|
});
|
|
15
17
|
test("Process CNPJ", () => {
|
|
16
|
-
expect(encode({}, "", "cnpj", "18.571.767/0001-36")).toBe("18571767000136");
|
|
17
|
-
expect(decode({}, "", "cnpj", "18571767000136")).toBe("18.571.767/0001-36");
|
|
18
|
+
expect((0, src_1.encode)({}, "", "cnpj", "18.571.767/0001-36")).toBe("18571767000136");
|
|
19
|
+
expect((0, src_1.decode)({}, "", "cnpj", "18571767000136")).toBe("18.571.767/0001-36");
|
|
18
20
|
expect(() => {
|
|
19
|
-
encode({}, "", "cnpj", "18.571.767/0001-35");
|
|
21
|
+
(0, src_1.encode)({}, "", "cnpj", "18.571.767/0001-35");
|
|
20
22
|
}).toThrow();
|
|
21
23
|
expect(() => {
|
|
22
|
-
decode({}, "", "cnpj", "18571767000135");
|
|
24
|
+
(0, src_1.decode)({}, "", "cnpj", "18571767000135");
|
|
23
25
|
}).toThrow();
|
|
24
26
|
});
|
|
25
27
|
test("Process URL", () => {
|
|
26
|
-
expect(encode({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
|
|
27
|
-
expect(decode({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
|
|
28
|
-
expect(encode({}, "", "url", " https:cubos.io/ ")).toBe("https://cubos.io/");
|
|
29
|
-
expect(encode({}, "", "url", " https:cubos.io ")).toBe("https://cubos.io/");
|
|
28
|
+
expect((0, src_1.encode)({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
|
|
29
|
+
expect((0, src_1.decode)({}, "", "url", "https://cubos.io/")).toBe("https://cubos.io/");
|
|
30
|
+
expect((0, src_1.encode)({}, "", "url", " https:cubos.io/ ")).toBe("https://cubos.io/");
|
|
31
|
+
expect((0, src_1.encode)({}, "", "url", " https:cubos.io ")).toBe("https://cubos.io/");
|
|
30
32
|
expect(() => {
|
|
31
|
-
encode({}, "", "url", "dfbdfb");
|
|
33
|
+
(0, src_1.encode)({}, "", "url", "dfbdfb");
|
|
32
34
|
}).toThrow();
|
|
33
35
|
expect(() => {
|
|
34
|
-
decode({}, "", "url", "hhh.com");
|
|
36
|
+
(0, src_1.decode)({}, "", "url", "hhh.com");
|
|
35
37
|
}).toThrow();
|
|
36
38
|
});
|
|
37
39
|
test("Process Base64", () => {
|
|
38
|
-
expect(encode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
39
|
-
expect(encode({}, "", "base64", "")).toBe("");
|
|
40
|
+
expect((0, src_1.encode)({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
41
|
+
expect((0, src_1.encode)({}, "", "base64", "")).toBe("");
|
|
40
42
|
expect(() => {
|
|
41
|
-
encode({}, "", "base64", "c3VyZS4");
|
|
43
|
+
(0, src_1.encode)({}, "", "base64", "c3VyZS4");
|
|
42
44
|
}).toThrow();
|
|
43
45
|
expect(() => {
|
|
44
|
-
encode({}, "", "base64", " c3VyZS4=");
|
|
46
|
+
(0, src_1.encode)({}, "", "base64", " c3VyZS4=");
|
|
45
47
|
}).toThrow();
|
|
46
|
-
expect(decode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
47
|
-
expect(decode({}, "", "base64", "")).toBe("");
|
|
48
|
+
expect((0, src_1.decode)({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
49
|
+
expect((0, src_1.decode)({}, "", "base64", "")).toBe("");
|
|
48
50
|
expect(() => {
|
|
49
|
-
decode({}, "", "base64", "c3VyZS4");
|
|
51
|
+
(0, src_1.decode)({}, "", "base64", "c3VyZS4");
|
|
50
52
|
}).toThrow();
|
|
51
53
|
expect(() => {
|
|
52
|
-
decode({}, "", "base64", " c3VyZS4=");
|
|
54
|
+
(0, src_1.decode)({}, "", "base64", " c3VyZS4=");
|
|
53
55
|
}).toThrow();
|
|
54
56
|
});
|
|
55
57
|
test("Process Date", () => {
|
|
56
|
-
expect(encode({}, "", "date", new Date("2020-11-10T00:00:00Z"))).toBe("2020-11-10");
|
|
57
|
-
expect(encode({}, "", "date", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10");
|
|
58
|
-
expect(encode({}, "", "date", "2020-11-10")).toBe("2020-11-10");
|
|
58
|
+
expect((0, src_1.encode)({}, "", "date", new Date("2020-11-10T00:00:00Z"))).toBe("2020-11-10");
|
|
59
|
+
expect((0, src_1.encode)({}, "", "date", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10");
|
|
60
|
+
expect((0, src_1.encode)({}, "", "date", "2020-11-10")).toBe("2020-11-10");
|
|
59
61
|
expect(() => {
|
|
60
|
-
encode({}, "", "date", "2020-11-10T15:34:50Z");
|
|
62
|
+
(0, src_1.encode)({}, "", "date", "2020-11-10T15:34:50Z");
|
|
61
63
|
}).toThrow();
|
|
62
64
|
expect(() => {
|
|
63
|
-
encode({}, "", "date", "hello world");
|
|
65
|
+
(0, src_1.encode)({}, "", "date", "hello world");
|
|
64
66
|
}).toThrow();
|
|
65
67
|
expect(() => {
|
|
66
|
-
decode({}, "", "date", "2020-02-30");
|
|
68
|
+
(0, src_1.decode)({}, "", "date", "2020-02-30");
|
|
67
69
|
}).toThrow();
|
|
68
70
|
expect(() => {
|
|
69
|
-
encode({}, "", "date", new Date(""));
|
|
71
|
+
(0, src_1.encode)({}, "", "date", new Date(""));
|
|
70
72
|
}).toThrow();
|
|
71
73
|
});
|
|
72
74
|
test("Process Datetime", () => {
|
|
73
|
-
expect(encode({}, "", "datetime", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10T15:34:50.000");
|
|
74
|
-
expect(encode({}, "", "datetime", "2020-11-10T15:34:50Z")).toBe("2020-11-10T15:34:50.000");
|
|
75
|
-
expect(encode({}, "", "datetime", "2020-11-10T15:34:50.999")).toBe("2020-11-10T15:34:50.999");
|
|
76
|
-
expect(encode({}, "", "datetime", "2020-11-10T15:34:50+01:00")).toBe("2020-11-10T14:34:50.000");
|
|
77
|
-
expect(encode({}, "", "datetime", "2020-11-10T15:34:50.999+01:00")).toBe("2020-11-10T14:34:50.999");
|
|
75
|
+
expect((0, src_1.encode)({}, "", "datetime", new Date("2020-11-10T15:34:50Z"))).toBe("2020-11-10T15:34:50.000");
|
|
76
|
+
expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50Z")).toBe("2020-11-10T15:34:50.000");
|
|
77
|
+
expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999")).toBe("2020-11-10T15:34:50.999");
|
|
78
|
+
expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50+01:00")).toBe("2020-11-10T14:34:50.000");
|
|
79
|
+
expect((0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999+01:00")).toBe("2020-11-10T14:34:50.999");
|
|
78
80
|
expect(() => {
|
|
79
|
-
encode({}, "", "datetime", "2020-11-10");
|
|
81
|
+
(0, src_1.encode)({}, "", "datetime", "2020-11-10");
|
|
80
82
|
}).toThrow();
|
|
81
83
|
expect(() => {
|
|
82
|
-
encode({}, "", "datetime", "hello world");
|
|
84
|
+
(0, src_1.encode)({}, "", "datetime", "hello world");
|
|
83
85
|
}).toThrow();
|
|
84
86
|
expect(() => {
|
|
85
|
-
encode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
87
|
+
(0, src_1.encode)({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
86
88
|
}).toThrow();
|
|
87
89
|
expect(() => {
|
|
88
|
-
decode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
90
|
+
(0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
89
91
|
}).toThrow();
|
|
90
|
-
expect(decode({}, "", "datetime", "2020-11-10T15:34:50Z").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
|
|
91
|
-
expect(decode({}, "", "datetime", "2020-11-10T15:34:50.000").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
|
|
92
|
+
expect((0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50Z").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
|
|
93
|
+
expect((0, src_1.decode)({}, "", "datetime", "2020-11-10T15:34:50.000").getTime()).toBe(new Date("2020-11-10T15:34:50Z").getTime());
|
|
92
94
|
expect(() => {
|
|
93
|
-
encode({}, "", "datetime", new Date(""));
|
|
95
|
+
(0, src_1.encode)({}, "", "datetime", new Date(""));
|
|
94
96
|
}).toThrow();
|
|
95
97
|
});
|
|
96
98
|
test("Process BigInt", () => {
|
|
97
|
-
expect(encode({}, "", "bigint", BigInt(10))).toBe("10");
|
|
99
|
+
expect((0, src_1.encode)({}, "", "bigint", BigInt(10))).toBe("10");
|
|
98
100
|
expect(() => {
|
|
99
|
-
encode({}, "", "bigint", 10);
|
|
101
|
+
(0, src_1.encode)({}, "", "bigint", 10);
|
|
100
102
|
}).toThrow();
|
|
101
103
|
expect(() => {
|
|
102
|
-
encode({}, "", "bigint", "10");
|
|
104
|
+
(0, src_1.encode)({}, "", "bigint", "10");
|
|
103
105
|
}).toThrow();
|
|
104
|
-
expect(decode({}, "", "bigint", 10)).toBe(BigInt(10));
|
|
105
|
-
expect(decode({}, "", "bigint", "10")).toBe(BigInt(10));
|
|
106
|
+
expect((0, src_1.decode)({}, "", "bigint", 10)).toBe(BigInt(10));
|
|
107
|
+
expect((0, src_1.decode)({}, "", "bigint", "10")).toBe(BigInt(10));
|
|
106
108
|
expect(() => {
|
|
107
|
-
decode({}, "", "bigint", "hello world");
|
|
109
|
+
(0, src_1.decode)({}, "", "bigint", "hello world");
|
|
108
110
|
}).toThrow();
|
|
109
111
|
});
|
|
110
112
|
test("Process Enum", () => {
|
|
111
|
-
for (const func of [encode, decode]) {
|
|
113
|
+
for (const func of [src_1.encode, src_1.decode]) {
|
|
112
114
|
expect(func({}, "", ["a", "b"], "a")).toBe("a");
|
|
113
115
|
expect(func({}, "", ["a", "b"], "b")).toBe("b");
|
|
114
116
|
expect(() => {
|
|
@@ -118,10 +120,9 @@ describe("Encode/Decode", () => {
|
|
|
118
120
|
func({ X: { v: "int" } }, "", ["a", ["b", "X"]], "b");
|
|
119
121
|
}).toThrow();
|
|
120
122
|
}
|
|
121
|
-
expect(encode({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "a" })).toBe("a");
|
|
122
|
-
expect(encode({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "b", v: 4 })).toEqual(["b", { v: 4 }]);
|
|
123
|
-
expect(decode({ X: { v: "int" } }, "", ["a", ["b", "X"]], "a")).toEqual({ tag: "a" });
|
|
124
|
-
expect(decode({ X: { v: "int" } }, "", ["a", ["b", "X"]], ["b", { v: 4 }])).toEqual({ tag: "b", v: 4 });
|
|
123
|
+
expect((0, src_1.encode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "a" })).toBe("a");
|
|
124
|
+
expect((0, src_1.encode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], { tag: "b", v: 4 })).toEqual(["b", { v: 4 }]);
|
|
125
|
+
expect((0, src_1.decode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], "a")).toEqual({ tag: "a" });
|
|
126
|
+
expect((0, src_1.decode)({ X: { v: "int" } }, "", ["a", ["b", "X"]], ["b", { v: 4 }])).toEqual({ tag: "b", v: 4 });
|
|
125
127
|
});
|
|
126
128
|
});
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NwZWMvdHlwZXMuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0Qsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFD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Q0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsICovXG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuLi9zcmMvaW5kZXguanNcIjtcblxuZGVzY3JpYmUoXCJFbmNvZGUvRGVjb2RlXCIsICgpID0+IHtcbiAgdGVzdChcIlByb2Nlc3MgQ1BGXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImNwZlwiLCBcIjA2Ny4xODMuMTQ1LTM2XCIpKS50b0JlKFwiMDY3MTgzMTQ1MzZcIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJjcGZcIiwgXCIwNjcxODMxNDUzNlwiKSkudG9CZShcIjA2Ny4xODMuMTQ1LTM2XCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiY3BmXCIsIFwiMDY3LjE4My4xNDUtMzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiY3BmXCIsIFwiMDY3MTgzMTQ1MzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBDTlBKXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxOC41NzEuNzY3LzAwMDEtMzZcIikpLnRvQmUoXCIxODU3MTc2NzAwMDEzNlwiKTtcbiAgICBleHBlY3QoZGVjb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxODU3MTc2NzAwMDEzNlwiKSkudG9CZShcIjE4LjU3MS43NjcvMDAwMS0zNlwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImNucGpcIiwgXCIxOC41NzEuNzY3LzAwMDEtMzVcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiY25walwiLCBcIjE4NTcxNzY3MDAwMTM1XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgdGVzdChcIlByb2Nlc3MgVVJMXCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcInVybFwiLCBcImh0dHBzOi8vY3Vib3MuaW8vXCIpKS50b0JlKFwiaHR0cHM6Ly9jdWJvcy5pby9cIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJ1cmxcIiwgXCJodHRwczovL2N1Ym9zLmlvL1wiKSkudG9CZShcImh0dHBzOi8vY3Vib3MuaW8vXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwidXJsXCIsIFwiIGh0dHBzOmN1Ym9zLmlvLyAgXCIpKS50b0JlKFwiaHR0cHM6Ly9jdWJvcy5pby9cIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJ1cmxcIiwgXCIgaHR0cHM6Y3Vib3MuaW8gIFwiKSkudG9CZShcImh0dHBzOi8vY3Vib3MuaW8vXCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwidXJsXCIsIFwiZGZiZGZiXCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcInVybFwiLCBcImhoaC5jb21cIik7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBCYXNlNjRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiYmFzZTY0XCIsIFwiYzNWeVpTND1cIikpLnRvQmUoXCJjM1Z5WlM0PVwiKTtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcIlwiKSkudG9CZShcIlwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcImMzVnlaUzRcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiYmFzZTY0XCIsIFwiIGMzVnlaUzQ9XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoZGVjb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcImMzVnlaUzQ9XCIpKS50b0JlKFwiYzNWeVpTND1cIik7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJiYXNlNjRcIiwgXCJcIikpLnRvQmUoXCJcIik7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGRlY29kZSh7fSwgXCJcIiwgXCJiYXNlNjRcIiwgXCJjM1Z5WlM0XCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcImJhc2U2NFwiLCBcIiBjM1Z5WlM0PVwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJQcm9jZXNzIERhdGVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBuZXcgRGF0ZShcIjIwMjAtMTEtMTBUMDA6MDA6MDBaXCIpKSkudG9CZShcIjIwMjAtMTEtMTBcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRlXCIsIG5ldyBEYXRlKFwiMjAyMC0xMS0xMFQxNTozNDo1MFpcIikpKS50b0JlKFwiMjAyMC0xMS0xMFwiKTtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImRhdGVcIiwgXCIyMDIwLTExLTEwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFwiKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZW5jb2RlKHt9LCBcIlwiLCBcImRhdGVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRlXCIsIFwiaGVsbG8gd29ybGRcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBcIjIwMjAtMDItMzBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZVwiLCBuZXcgRGF0ZShcIlwiKSk7XG4gICAgfSkudG9UaHJvdygpO1xuICB9KTtcblxuICB0ZXN0KFwiUHJvY2VzcyBEYXRldGltZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBuZXcgRGF0ZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTBaXCIpKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuMDAwXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuMDAwXCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwLjk5OVwiKSkudG9CZShcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5XCIpO1xuICAgIGV4cGVjdChlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwKzAxOjAwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFQxNDozNDo1MC4wMDBcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5KzAxOjAwXCIpKS50b0JlKFwiMjAyMC0xMS0xMFQxNDozNDo1MC45OTlcIik7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCJoZWxsbyB3b3JsZFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJkYXRldGltZVwiLCBcIjIwMjAtMTEtMTBUMTU6MzQ6NTAuOTk5JDAxOjAwXCIpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgZGVjb2RlKHt9LCBcIlwiLCBcImRhdGV0aW1lXCIsIFwiMjAyMC0xMS0xMFQxNTozNDo1MC45OTkkMDE6MDBcIik7XG4gICAgfSkudG9UaHJvdygpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpLnRvQmUobmV3IERhdGUoXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgXCIyMDIwLTExLTEwVDE1OjM0OjUwLjAwMFwiKS5nZXRUaW1lKCkpLnRvQmUobmV3IERhdGUoXCIyMDIwLTExLTEwVDE1OjM0OjUwWlwiKS5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiZGF0ZXRpbWVcIiwgbmV3IERhdGUoXCJcIikpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgdGVzdChcIlByb2Nlc3MgQmlnSW50XCIsICgpID0+IHtcbiAgICBleHBlY3QoZW5jb2RlKHt9LCBcIlwiLCBcImJpZ2ludFwiLCBCaWdJbnQoMTApKSkudG9CZShcIjEwXCIpO1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBlbmNvZGUoe30sIFwiXCIsIFwiYmlnaW50XCIsIDEwKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGVuY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgXCIxMFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gICAgZXhwZWN0KGRlY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgMTApKS50b0JlKEJpZ0ludCgxMCkpO1xuICAgIGV4cGVjdChkZWNvZGUoe30sIFwiXCIsIFwiYmlnaW50XCIsIFwiMTBcIikpLnRvQmUoQmlnSW50KDEwKSk7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGRlY29kZSh7fSwgXCJcIiwgXCJiaWdpbnRcIiwgXCJoZWxsbyB3b3JsZFwiKTtcbiAgICB9KS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIHRlc3QoXCJQcm9jZXNzIEVudW1cIiwgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgZnVuYyBvZiBbZW5jb2RlLCBkZWNvZGVdKSB7XG4gICAgICBleHBlY3QoZnVuYyh7fSwgXCJcIiwgW1wiYVwiLCBcImJcIl0sIFwiYVwiKSkudG9CZShcImFcIik7XG4gICAgICBleHBlY3QoZnVuYyh7fSwgXCJcIiwgW1wiYVwiLCBcImJcIl0sIFwiYlwiKSkudG9CZShcImJcIik7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBmdW5jKHt9LCBcIlwiLCBbXCJhXCIsIFwiYlwiXSwgXCJjXCIpO1xuICAgICAgfSkudG9UaHJvdygpO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBmdW5jKHsgWDogeyB2OiBcImludFwiIH0gfSwgXCJcIiwgW1wiYVwiLCBbXCJiXCIsIFwiWFwiXV0sIFwiYlwiKTtcbiAgICAgIH0pLnRvVGhyb3coKTtcbiAgICB9XG5cbiAgICBleHBlY3QoZW5jb2RlKHsgWDogeyB2OiBcImludFwiIH0gfSwgXCJcIiwgW1wiYVwiLCBbXCJiXCIsIFwiWFwiXV0sIHsgdGFnOiBcImFcIiB9KSkudG9CZShcImFcIik7XG4gICAgZXhwZWN0KGVuY29kZSh7IFg6IHsgdjogXCJpbnRcIiB9IH0sIFwiXCIsIFtcImFcIiwgW1wiYlwiLCBcIlhcIl1dLCB7IHRhZzogXCJiXCIsIHY6IDQgfSkpLnRvRXF1YWwoW1wiYlwiLCB7IHY6IDQgfV0pO1xuXG4gICAgZXhwZWN0KGRlY29kZSh7IFg6IHsgdjogXCJpbnRcIiB9IH0sIFwiXCIsIFtcImFcIiwgW1wiYlwiLCBcIlhcIl1dLCBcImFcIikpLnRvRXF1YWwoeyB0YWc6IFwiYVwiIH0pO1xuICAgIGV4cGVjdChkZWNvZGUoeyBYOiB7IHY6IFwiaW50XCIgfSB9LCBcIlwiLCBbXCJhXCIsIFtcImJcIiwgXCJYXCJdXSwgW1wiYlwiLCB7IHY6IDQgfV0pKS50b0VxdWFsKHsgdGFnOiBcImJcIiwgdjogNCB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/dist/src/api-config.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AstJson, AstRoot } from "@sdkgen/parser";
|
|
2
|
-
import type { Context, ContextReply } from "./context
|
|
3
|
-
import type { DeepReadonly } from "./utils
|
|
4
|
-
|
|
2
|
+
import type { Context, ContextReply } from "./context";
|
|
3
|
+
import type { DeepReadonly } from "./utils";
|
|
4
|
+
type Middleware<ExtraContextT> = (ctx: Context & ExtraContextT, next: () => Promise<ContextReply>) => Promise<ContextReply>;
|
|
5
5
|
export declare class BaseApiConfig<ExtraContextT = unknown> {
|
|
6
6
|
private _ast;
|
|
7
7
|
get ast(): AstRoot;
|
|
@@ -12,3 +12,4 @@ export declare class BaseApiConfig<ExtraContextT = unknown> {
|
|
|
12
12
|
readonly middlewares: Array<Middleware<ExtraContextT>>;
|
|
13
13
|
use(middleware: Middleware<ExtraContextT>): void;
|
|
14
14
|
}
|
|
15
|
+
export {};
|
package/dist/src/api-config.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseApiConfig = void 0;
|
|
4
|
+
const parser_1 = require("@sdkgen/parser");
|
|
5
|
+
class BaseApiConfig {
|
|
3
6
|
constructor() {
|
|
4
7
|
this.fn = {};
|
|
5
8
|
this.middlewares = [];
|
|
6
9
|
}
|
|
7
10
|
get ast() {
|
|
8
|
-
|
|
11
|
+
var _a;
|
|
12
|
+
return ((_a = this._ast) !== null && _a !== void 0 ? _a : (this._ast = (0, parser_1.jsonToAst)(this.astJson)));
|
|
9
13
|
}
|
|
10
14
|
use(middleware) {
|
|
11
15
|
this.middlewares.push(middleware);
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
|
-
|
|
18
|
+
exports.BaseApiConfig = BaseApiConfig;
|
package/dist/src/context.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/// <reference types="node"
|
|
2
|
-
/// <reference types="node"
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
3
|
import type { IncomingHttpHeaders, OutgoingHttpHeader } from "http";
|
|
4
4
|
import type { Readable } from "stream";
|
|
5
5
|
export interface ContextRequest {
|
|
@@ -25,7 +25,7 @@ export interface ContextRequest {
|
|
|
25
25
|
}>;
|
|
26
26
|
}
|
|
27
27
|
export interface ContextReply {
|
|
28
|
-
error?:
|
|
28
|
+
error?: any;
|
|
29
29
|
result?: unknown;
|
|
30
30
|
}
|
|
31
31
|
export interface ContextResponse {
|
package/dist/src/context.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/// <reference types="node"
|
|
1
|
+
/// <reference types="node" />
|
|
2
2
|
import type { AstJson, TypeDescription } from "@sdkgen/parser";
|
|
3
3
|
import { Decimal } from "decimal.js";
|
|
4
|
-
import type { DeepReadonly } from "./utils
|
|
4
|
+
import type { DeepReadonly } from "./utils";
|
|
5
5
|
type TypeTable = AstJson["typeTable"];
|
|
6
6
|
type ExpandRecursively<T> = T extends object ? (T extends infer O ? {
|
|
7
7
|
[K in keyof O]: ExpandRecursively<O[K]>;
|
|
@@ -1,6 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.decode = exports.encode = void 0;
|
|
38
|
+
const CNPJ = __importStar(require("@fnando/cnpj"));
|
|
39
|
+
const CPF = __importStar(require("@fnando/cpf"));
|
|
40
|
+
const decimal_js_1 = require("decimal.js");
|
|
4
41
|
const simpleStringTypes = ["string", "email", "html", "xml"];
|
|
5
42
|
const simpleTypes = ["json", "bool", "url", "int", "uint", "float", "money", "hex", "uuid", "base64", "void", ...simpleStringTypes];
|
|
6
43
|
class ParseError extends Error {
|
|
@@ -96,7 +133,7 @@ function simpleEncodeDecode(path, type, value) {
|
|
|
96
133
|
}
|
|
97
134
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
98
135
|
}
|
|
99
|
-
|
|
136
|
+
function encode(typeTable, path, type, value) {
|
|
100
137
|
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
101
138
|
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
102
139
|
}
|
|
@@ -109,7 +146,7 @@ export function encode(typeTable, path, type, value) {
|
|
|
109
146
|
}
|
|
110
147
|
}
|
|
111
148
|
else if (typeof value === "object" && value && "tag" in value) {
|
|
112
|
-
const { tag: tagValue,
|
|
149
|
+
const _a = value, { tag: tagValue } = _a, restValue = __rest(_a, ["tag"]);
|
|
113
150
|
for (const entry of type) {
|
|
114
151
|
if (typeof entry === "string") {
|
|
115
152
|
if (entry === tagValue) {
|
|
@@ -195,10 +232,10 @@ export function encode(typeTable, path, type, value) {
|
|
|
195
232
|
return (typeof value === "string" ? new Date(value) : value).toISOString().replace("Z", "");
|
|
196
233
|
}
|
|
197
234
|
else if (type === "decimal") {
|
|
198
|
-
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof Decimal)) {
|
|
235
|
+
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof decimal_js_1.Decimal)) {
|
|
199
236
|
throw new ParseError(path, type, value);
|
|
200
237
|
}
|
|
201
|
-
return new Decimal(value).toString();
|
|
238
|
+
return new decimal_js_1.Decimal(value).toString();
|
|
202
239
|
}
|
|
203
240
|
else {
|
|
204
241
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
@@ -209,7 +246,8 @@ export function encode(typeTable, path, type, value) {
|
|
|
209
246
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
210
247
|
}
|
|
211
248
|
}
|
|
212
|
-
|
|
249
|
+
exports.encode = encode;
|
|
250
|
+
function decode(typeTable, path, type, value) {
|
|
213
251
|
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
214
252
|
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
215
253
|
}
|
|
@@ -232,11 +270,11 @@ export function decode(typeTable, path, type, value) {
|
|
|
232
270
|
const [tag, valueType] = entry;
|
|
233
271
|
if (tag === value) {
|
|
234
272
|
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, {});
|
|
235
|
-
return {
|
|
273
|
+
return Object.assign(Object.assign({}, decodedValues), { tag });
|
|
236
274
|
}
|
|
237
275
|
else if (Array.isArray(value) && value.length === 2 && tag === value[0]) {
|
|
238
276
|
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, value[1]);
|
|
239
|
-
return {
|
|
277
|
+
return Object.assign(Object.assign({}, decodedValues), { tag });
|
|
240
278
|
}
|
|
241
279
|
}
|
|
242
280
|
}
|
|
@@ -319,7 +357,7 @@ export function decode(typeTable, path, type, value) {
|
|
|
319
357
|
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value))) {
|
|
320
358
|
throw new ParseError(path, type, value);
|
|
321
359
|
}
|
|
322
|
-
return new Decimal(value);
|
|
360
|
+
return new decimal_js_1.Decimal(value);
|
|
323
361
|
}
|
|
324
362
|
else {
|
|
325
363
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
@@ -331,4 +369,4 @@ export function decode(typeTable, path, type, value) {
|
|
|
331
369
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
332
370
|
}
|
|
333
371
|
}
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLWRlY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmNvZGUtZGVjb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNckMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFDLENBQUM7QUFrR3BJLE1BQU0sVUFBVyxTQUFRLEtBQUs7SUFDNUIsWUFBWSxJQUFZLEVBQUUsSUFBbUMsRUFBRSxLQUFjO1FBQzNFLElBQUksR0FBVyxDQUFDO1FBRWhCLElBQUk7WUFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjtRQUVELEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxlQUFlLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxLQUFjO0lBQ3BFLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLElB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QVMsRUFBRTtRQUM3QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3ZHLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUE2QixDQUFDO0tBQ3ZEO1NBQU07UUFDTCw0RUFBNEU7UUFDNUUsTUFBTSxRQUFRLEdBQUksU0FBNkMsQ0FBQyxJQUFjLENBQUMsQ0FBQztRQUVoRixJQUFJLFFBQVEsRUFBRTtZQUNaLCtEQUErRDtZQUMvRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQXdDLENBQUM7U0FDeEY7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsQ0FBQztLQUN4RDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBDTlBKIGZyb20gXCJAZm5hbmRvL2NucGpcIjtcbmltcG9ydCAqIGFzIENQRiBmcm9tIFwiQGZuYW5kby9jcGZcIjtcbmltcG9ydCB0eXBlIHsgQXN0SnNvbiwgVHlwZURlc2NyaXB0aW9uIH0gZnJvbSBcIkBzZGtnZW4vcGFyc2VyXCI7XG5pbXBvcnQgeyBEZWNpbWFsIH0gZnJvbSBcImRlY2ltYWwuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHkgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG50eXBlIFR5cGVUYWJsZSA9IEFzdEpzb25bXCJ0eXBlVGFibGVcIl07XG5cbmNvbnN0IHNpbXBsZVN0cmluZ1R5cGVzID0gW1wic3RyaW5nXCIsIFwiZW1haWxcIiwgXCJodG1sXCIsIFwieG1sXCJdO1xuY29uc3Qgc2ltcGxlVHlwZXMgPSBbXCJqc29uXCIsIFwiYm9vbFwiLCBcInVybFwiLCBcImludFwiLCBcInVpbnRcIiwgXCJmbG9hdFwiLCBcIm1vbmV5XCIsIFwiaGV4XCIsIFwidXVpZFwiLCBcImJhc2U2NFwiLCBcInZvaWRcIiwgLi4uc2ltcGxlU3RyaW5nVHlwZXNdO1xuXG50eXBlIEV4cGFuZFJlY3Vyc2l2ZWx5PFQ+ID0gVCBleHRlbmRzIG9iamVjdCA/IChUIGV4dGVuZHMgaW5mZXIgTyA/IHsgW0sgaW4ga2V5b2YgT106IEV4cGFuZFJlY3Vyc2l2ZWx5PE9bS10+IH0gOiBuZXZlcikgOiBUO1xuXG50eXBlIEpzb25UeXBlID0gbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBKc29uVHlwZVtdIHwgeyBbS2V5IGluIHN0cmluZ106IEpzb25UeXBlIH07XG5cbnR5cGUgQW55RGVjb2RlZFR5cGUgPSBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCB8IGJpZ2ludCB8IERlY2ltYWwgfCBCdWZmZXIgfCBEYXRlIHwgQW55RGVjb2RlZFR5cGVbXSB8IHsgW0tleSBpbiBzdHJpbmddOiBBbnlEZWNvZGVkVHlwZSB9O1xuXG50eXBlIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFR5cGVEZXNjcmlwdGlvbiBleHRlbmRzIFR5cGVcbiAgPyBBbnlEZWNvZGVkVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcInN0cmluZ1wiIHwgXCJlbWFpbFwiIHwgXCJodG1sXCIgfCBcInhtbFwiIHwgXCJ1cmxcIiB8IFwiaGV4XCIgfCBcInV1aWRcIiB8IFwiYmFzZTY0XCIgfCBcImNwZlwiIHwgXCJjbnBqXCJcbiAgPyBzdHJpbmdcbiAgOiBUeXBlIGV4dGVuZHMgXCJqc29uXCJcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcImJvb2xcIlxuICA/IGJvb2xlYW5cbiAgOiBUeXBlIGV4dGVuZHMgXCJ2b2lkXCJcbiAgPyBudWxsXG4gIDogVHlwZSBleHRlbmRzIFwiaW50XCIgfCBcInVpbnRcIiB8IFwiZmxvYXRcIiB8IFwibW9uZXlcIlxuICA/IG51bWJlclxuICA6IFR5cGUgZXh0ZW5kcyBcImJpZ2ludFwiXG4gID8gYmlnaW50XG4gIDogVHlwZSBleHRlbmRzIFwiYnl0ZXNcIlxuICA/IEJ1ZmZlclxuICA6IFR5cGUgZXh0ZW5kcyBcImRlY2ltYWxcIlxuICA/IERlY2ltYWxcbiAgOiBUeXBlIGV4dGVuZHMgXCJkYXRlXCIgfCBcImRhdGV0aW1lXCJcbiAgPyBEYXRlXG4gIDogVHlwZSBleHRlbmRzIGAke2luZmVyIFh9P2BcbiAgPyBEZWNvZGVkVHlwZTxYLCBUYWJsZT4gfCBudWxsXG4gIDogVHlwZSBleHRlbmRzIGAke2luZmVyIFh9W11gXG4gID8gQXJyYXk8RGVjb2RlZFR5cGU8WCwgVGFibGU+PlxuICA6IFR5cGUgZXh0ZW5kcyBBcnJheTxzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddPlxuICA/IERlY29kZWRFbnVtVHlwZTxUeXBlLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCByZWFkb25seSBbc3RyaW5nLCBzdHJpbmddPlxuICA/IERlY29kZWRFbnVtVHlwZTxUeXBlLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgb2JqZWN0XG4gID8geyAtcmVhZG9ubHkgW0tleSBpbiBrZXlvZiBUeXBlXTogRGVjb2RlZFR5cGU8VHlwZVtLZXldLCBUYWJsZT4gfVxuICA6IG9iamVjdCBleHRlbmRzIFRhYmxlXG4gID8gbmV2ZXJcbiAgOiBUeXBlIGV4dGVuZHMga2V5b2YgVGFibGVcbiAgPyBEZWNvZGVkVHlwZTxUYWJsZVtUeXBlXSwgVGFibGU+XG4gIDogbmV2ZXI7XG5cbnR5cGUgRGVjb2RlZEVudW1UeXBlPFxuICBUeXBlIGV4dGVuZHMgQXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+LFxuICBUYWJsZSBleHRlbmRzIG9iamVjdCxcbj4gPSBUeXBlW251bWJlcl0gZXh0ZW5kcyBzdHJpbmcgPyBUeXBlW251bWJlcl0gOiBEZWNvZGVUYWdnZWRFbnVtVmFsdWVUeXBlPFR5cGVbbnVtYmVyXSwgVGFibGU+O1xuXG50eXBlIERlY29kZVRhZ2dlZEVudW1WYWx1ZVR5cGU8XG4gIFZhbHVlVHlwZSBleHRlbmRzIHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ10gfCByZWFkb25seSBbc3RyaW5nLCBzdHJpbmddLFxuICBUYWJsZSBleHRlbmRzIG9iamVjdCxcbj4gPSBWYWx1ZVR5cGUgZXh0ZW5kcyBzdHJpbmdcbiAgPyB7IHRhZzogVmFsdWVUeXBlIH1cbiAgOiBWYWx1ZVR5cGUgZXh0ZW5kcyBbaW5mZXIgVGFnLCBpbmZlciBTdHJ1Y3RdXG4gID8gRXhwYW5kUmVjdXJzaXZlbHk8eyB0YWc6IFRhZyB9ICYgRGVjb2RlZFR5cGU8U3RydWN0LCBUYWJsZT4+XG4gIDogVmFsdWVUeXBlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIFRhZywgaW5mZXIgU3RydWN0XVxuICA/IEV4cGFuZFJlY3Vyc2l2ZWx5PHsgdGFnOiBUYWcgfSAmIERlY29kZWRUeXBlPFN0cnVjdCwgVGFibGU+PlxuICA6IG5ldmVyO1xuXG50eXBlIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFR5cGVEZXNjcmlwdGlvbiBleHRlbmRzIFR5cGVcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcInN0cmluZ1wiIHwgXCJlbWFpbFwiIHwgXCJodG1sXCIgfCBcInhtbFwiIHwgXCJ1cmxcIiB8IFwiaGV4XCIgfCBcInV1aWRcIiB8IFwiYmFzZTY0XCIgfCBcImNwZlwiIHwgXCJjbnBqXCJcbiAgPyBzdHJpbmdcbiAgOiBUeXBlIGV4dGVuZHMgXCJqc29uXCJcbiAgPyBKc29uVHlwZVxuICA6IFR5cGUgZXh0ZW5kcyBcImJvb2xcIlxuICA/IGJvb2xlYW5cbiAgOiBUeXBlIGV4dGVuZHMgXCJ2b2lkXCJcbiAgPyBudWxsXG4gIDogVHlwZSBleHRlbmRzIFwiaW50XCIgfCBcInVpbnRcIiB8IFwiZmxvYXRcIiB8IFwibW9uZXlcIlxuICA/IG51bWJlclxuICA6IFR5cGUgZXh0ZW5kcyBcImJpZ2ludFwiIHwgXCJieXRlc1wiIHwgXCJkYXRlXCIgfCBcImRhdGV0aW1lXCIgfCBcImRlY2ltYWxcIlxuICA/IHN0cmluZ1xuICA6IFR5cGUgZXh0ZW5kcyBgJHtpbmZlciBYfT9gXG4gID8gRW5jb2RlZFR5cGU8WCwgVGFibGU+IHwgbnVsbFxuICA6IFR5cGUgZXh0ZW5kcyBgJHtpbmZlciBYfVtdYFxuICA/IEFycmF5PEVuY29kZWRUeXBlPFgsIFRhYmxlPj5cbiAgOiBUeXBlIGV4dGVuZHMgQXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT5cbiAgPyBFbnVtRW5jb2RlZFZhbHVlVHlwZTxUeXBlW251bWJlcl0sIFRhYmxlPlxuICA6IFR5cGUgZXh0ZW5kcyBSZWFkb25seUFycmF5PHN0cmluZyB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10+XG4gID8gRW51bUVuY29kZWRWYWx1ZVR5cGU8VHlwZVtudW1iZXJdLCBUYWJsZT5cbiAgOiBUeXBlIGV4dGVuZHMgb2JqZWN0XG4gID8geyAtcmVhZG9ubHkgW0tleSBpbiBrZXlvZiBUeXBlXTogRW5jb2RlZFR5cGU8VHlwZVtLZXldLCBUYWJsZT4gfVxuICA6IG9iamVjdCBleHRlbmRzIFRhYmxlXG4gID8gbmV2ZXJcbiAgOiBUeXBlIGV4dGVuZHMga2V5b2YgVGFibGVcbiAgPyBFbmNvZGVkVHlwZTxUYWJsZVtUeXBlXSwgVGFibGU+XG4gIDogbmV2ZXI7XG5cbnR5cGUgRW51bUVuY29kZWRWYWx1ZVR5cGU8VmFsdWVUeXBlIGV4dGVuZHMgc3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXSB8IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZ10sIFRhYmxlIGV4dGVuZHMgb2JqZWN0PiA9IFZhbHVlVHlwZSBleHRlbmRzIHN0cmluZ1xuICA/IFZhbHVlVHlwZVxuICA6IFZhbHVlVHlwZSBleHRlbmRzIFtpbmZlciBUYWcsIGluZmVyIFN0cnVjdF1cbiAgPyBbVGFnLCBFbmNvZGVkVHlwZTxTdHJ1Y3QsIFRhYmxlPl1cbiAgOiBWYWx1ZVR5cGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgVGFnLCBpbmZlciBTdHJ1Y3RdXG4gID8gW1RhZywgRW5jb2RlZFR5cGU8U3RydWN0LCBUYWJsZT5dXG4gIDogbmV2ZXI7XG5cbmNsYXNzIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZywgdHlwZTogRGVlcFJlYWRvbmx5PFR5cGVEZXNjcmlwdGlvbj4sIHZhbHVlOiB1bmtub3duKSB7XG4gICAgbGV0IHN0cjogc3RyaW5nO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHN0ciA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc3VwZXIoYEludmFsaWQgdHlwZSBhdCAnJHtwYXRofScsIGV4cGVjdGVkICR7dHlwZX0sIGdvdCAke3N0cn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmNvZGVEZWNvZGUocGF0aDogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gIGlmICh0eXBlID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIHVua25vd247XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJib29sXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmIChzaW1wbGVTdHJpbmdUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJoZXhcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eKD86W0EtRmEtZjAtOV17Mn0pKiQvdS50ZXN0KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwidXVpZFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bQS1GYS1mMC05XXs4fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXs0fS1bQS1GYS1mMC05XXsxMn0kL3UudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImJhc2U2NFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJiYXNlNjRcIikgIT09IHZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaW50XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiIHx8ICh2YWx1ZSB8IDApICE9PSB2YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcInVpbnRcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgfHwgKHZhbHVlIHwgMCkgIT09IHZhbHVlIHx8IHZhbHVlIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImZsb2F0XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwibW9uZXlcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwidXJsXCIpIHtcbiAgICBsZXQgdXJsOiBVUkwgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1cmwgPSBuZXcgVVJMKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ2b2lkXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlICcke3R5cGV9JyBhdCAnJHtwYXRofSdgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZTxUYWJsZSBleHRlbmRzIERlZXBSZWFkb25seTxUeXBlVGFibGU+LCBUeXBlIGV4dGVuZHMgRGVlcFJlYWRvbmx5PFR5cGVEZXNjcmlwdGlvbj4+KFxuICB0eXBlVGFibGU6IFRhYmxlLFxuICBwYXRoOiBzdHJpbmcsXG4gIHR5cGU6IFR5cGUsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+IHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSBcInN0cmluZ1wiICYmICF0eXBlLmVuZHNXaXRoKFwiP1wiKSAmJiB0eXBlICE9PSBcInZvaWRcIiAmJiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBhdCAnJHtwYXRofScsIGNhbm5vdCBiZSBudWxsYCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgIGlmICh0eXBlLmV2ZXJ5KHRhZyA9PiB0eXBlb2YgdGFnID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgZm9yIChjb25zdCB0YWcgb2YgdHlwZSkge1xuICAgICAgICBpZiAodGFnID09PSB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB0YWcgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgJiYgXCJ0YWdcIiBpbiB2YWx1ZSkge1xuICAgICAgY29uc3QgeyB0YWc6IHRhZ1ZhbHVlLCAuLi5yZXN0VmFsdWUgfSA9IHZhbHVlIGFzIG9iamVjdCAmIHsgdGFnOiB1bmtub3duIH07XG5cbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdHlwZSkge1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgaWYgKGVudHJ5ID09PSB0YWdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5IGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgW3RhZywgdmFsdWVUeXBlXSA9IGVudHJ5IGFzIFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAgICAgICBpZiAodGFnID09PSB0YWdWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFZhbHVlcyA9IGVuY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7dGFnfWAsIHZhbHVlVHlwZSwgcmVzdFZhbHVlKSBhcyBvYmplY3Q7XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtZGVwdGhcbiAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGVuY29kZWRWYWx1ZXMpLmV2ZXJ5KHYgPT4gdiA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhZyBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbdGFnLCBlbmNvZGVkVmFsdWVzXSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHR5cGUpKSB7XG4gICAgICBvYmpba2V5XSA9IGVuY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7a2V5fWAsICh0eXBlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW2tleV0sICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iaiBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIj9cIikpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGwgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgIH1cblxuICAgIHJldHVybiBlbmNvZGUodHlwZVRhYmxlLCBwYXRoLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMSksIHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIltdXCIpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS5tYXAoKGVudHJ5LCBpbmRleCkgPT4gZW5jb2RlKHR5cGVUYWJsZSwgYCR7cGF0aH1bJHtpbmRleH1dYCwgdHlwZS5zbGljZSgwLCB0eXBlLmxlbmd0aCAtIDIpLCBlbnRyeSkpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiBzaW1wbGVUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBzaW1wbGVFbmNvZGVEZWNvZGUocGF0aCwgdHlwZSwgdmFsdWUpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImJ5dGVzXCIpIHtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoXCJiYXNlNjRcIikgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYmlnaW50XCIpIHtcbiAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY3BmXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDUEYuaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ1BGLnN0cmlwKHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjbnBqXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDTlBKLmlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENOUEouc3RyaXAodmFsdWUpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImRhdGVcIikge1xuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkgJiYgISh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV0kL3UudGVzdCh2YWx1ZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF0gOiB2YWx1ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIGlmIChcbiAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpKSAmJlxuICAgICAgIShcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgIC9eWzAtOV17NH0tWzAxXVswLTldLVswMTIzXVswLTldVFswMTJdWzAtOV06WzAxMjM0NTZdWzAtOV06WzAxMjM0NTZdWzAtOV0oPzpcXC5bMC05XXsxLDZ9KT8oPzpafFsrLV1bMDEyXVswLTldOlswMTIzNDU2XVswLTldKT8kL3UudGVzdCh2YWx1ZSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpIGFzIEVuY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcImRlY2ltYWxcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIgJiYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL14tP1swLTldKyg/OlxcLlswLTldKyk/JC91LnRlc3QodmFsdWUpKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGVjaW1hbCkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlY2ltYWwodmFsdWUpLnRvU3RyaW5nKCkgYXMgRW5jb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1hc3NlcnRpb25cbiAgICBjb25zdCByZXNvbHZlZCA9ICh0eXBlVGFibGUgYXMgUmVjb3JkPHN0cmluZywgVHlwZURlc2NyaXB0aW9uPilbdHlwZSBhcyBzdHJpbmddO1xuXG4gICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICByZXR1cm4gZW5jb2RlKHR5cGVUYWJsZSwgcGF0aCwgcmVzb2x2ZWQsIHZhbHVlKSBhcyBFbmNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgJyR7dHlwZX0nIGF0ICcke3BhdGh9J2ApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGU8VGFibGUgZXh0ZW5kcyBEZWVwUmVhZG9ubHk8VHlwZVRhYmxlPiwgVHlwZSBleHRlbmRzIERlZXBSZWFkb25seTxUeXBlRGVzY3JpcHRpb24+PihcbiAgdHlwZVRhYmxlOiBUYWJsZSxcbiAgcGF0aDogc3RyaW5nLFxuICB0eXBlOiBUeXBlLFxuICB2YWx1ZTogdW5rbm93bixcbik6IERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPiB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAhdHlwZS5lbmRzV2l0aChcIj9cIikgJiYgdHlwZSAhPT0gXCJ2b2lkXCIgJiYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR5cGUgYXQgJyR7cGF0aH0nLCBjYW5ub3QgYmUgbnVsbGApO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICBpZiAodHlwZS5ldmVyeSh0YWcgPT4gdHlwZW9mIHRhZyA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgIGZvciAoY29uc3QgdGFnIG9mIHR5cGUpIHtcbiAgICAgICAgaWYgKHRhZyA9PT0gdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdGFnIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGlmIChlbnRyeSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHRhZzogZW50cnkgfSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IFt0YWcsIHZhbHVlVHlwZV0gPSBlbnRyeSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuXG4gICAgICAgICAgaWYgKHRhZyA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRWYWx1ZXMgPSBkZWNvZGUodHlwZVRhYmxlLCBgJHtwYXRofS4ke3RhZ31gLCB2YWx1ZVR5cGUsIHt9KSBhcyBvYmplY3Q7XG5cbiAgICAgICAgICAgIHJldHVybiB7IC4uLmRlY29kZWRWYWx1ZXMsIHRhZyB9IGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMiAmJiB0YWcgPT09IHZhbHVlWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVmFsdWVzID0gZGVjb2RlKHR5cGVUYWJsZSwgYCR7cGF0aH0uJHt0YWd9YCwgdmFsdWVUeXBlLCB2YWx1ZVsxXSkgYXMgb2JqZWN0O1xuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5kZWNvZGVkVmFsdWVzLCB0YWcgfSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHR5cGUpKSB7XG4gICAgICBvYmpba2V5XSA9IGRlY29kZSh0eXBlVGFibGUsIGAke3BhdGh9LiR7a2V5fWAsICh0eXBlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW2tleV0sICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iaiBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZS5lbmRzV2l0aChcIj9cIikpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGwgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICAgIH1cblxuICAgIHJldHVybiBkZWNvZGUodHlwZVRhYmxlLCBwYXRoLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMSksIHZhbHVlKSBhcyB1bmtub3duIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlLmVuZHNXaXRoKFwiW11cIikpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLm1hcCgoZW50cnksIGluZGV4KSA9PiBkZWNvZGUodHlwZVRhYmxlLCBgJHtwYXRofVske2luZGV4fV1gLCB0eXBlLnNsaWNlKDAsIHR5cGUubGVuZ3RoIC0gMiksIGVudHJ5KSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSBcInN0cmluZ1wiICYmIHNpbXBsZVR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuIHNpbXBsZUVuY29kZURlY29kZShwYXRoLCB0eXBlLCB2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYnl0ZXNcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIGAke3R5cGV9IChiYXNlIDY0KWAsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJiYXNlNjRcIik7XG5cbiAgICBpZiAoYnVmZmVyLnRvU3RyaW5nKFwiYmFzZTY0XCIpICE9PSB2YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgYCR7dHlwZX0gKGJhc2UgNjQpYCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXIgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYmlnaW50XCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eLT9bMC05XSskL3UudGVzdCh2YWx1ZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJpZ0ludCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY3BmXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICFDUEYuaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ1BGLmZvcm1hdCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiY25walwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhQ05QSi5pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IocGF0aCwgdHlwZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBDTlBKLmZvcm1hdCh2YWx1ZSkgYXMgRGVjb2RlZFR5cGU8VHlwZSwgVGFibGU+O1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV0kL3UudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXkgPSBwYXJzZUludCh2YWx1ZS5zcGxpdChcIi1cIilbMl0sIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHZhbHVlLnNwbGl0KFwiLVwiKVsxXSwgMTApIC0gMTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQodmFsdWUuc3BsaXQoXCItXCIpWzBdLCAxMCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fCBkYXRlLmdldE1vbnRoKCkgIT09IG1vbnRoIHx8IGRhdGUuZ2V0RGF0ZSgpICE9PSBkYXkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCAhL15bMC05XXs0fS1bMDFdWzAtOV0tWzAxMjNdWzAtOV1UWzAxMl1bMC05XTpbMDEyMzQ1Nl1bMC05XTpbMDEyMzQ1Nl1bMC05XSg/OlxcLlswLTldezEsNn0pP1o/JC91LnRlc3QodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihwYXRoLCB0eXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKGAke3ZhbHVlLmVuZHNXaXRoKFwiWlwiKSA/IHZhbHVlIDogdmFsdWUuY29uY2F0KFwiWlwiKX1gKSBhcyBEZWNvZGVkVHlwZTxUeXBlLCBUYWJsZT47XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJkZWNpbWFsXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIS9eLT9bMC05XSsoPzpcXC5bMC05XSspPyQvdS50ZXN0KHZhbHVlKSkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKHBhdGgsIHR5cGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlY2ltYWwodmFsdWUpIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtYXNzZXJ0aW9uXG4gICAgY29uc3QgcmVzb2x2ZWQgPSAodHlwZVRhYmxlIGFzIFJlY29yZDxzdHJpbmcsIFR5cGVEZXNjcmlwdGlvbj4pW3R5cGUgYXMgc3RyaW5nXTtcblxuICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICByZXR1cm4gZGVjb2RlKHR5cGVUYWJsZSwgcGF0aCwgcmVzb2x2ZWQsIHZhbHVlKSBhcyB1bmtub3duIGFzIERlY29kZWRUeXBlPFR5cGUsIFRhYmxlPjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSAnJHt0eXBlfScgYXQgJyR7cGF0aH0nYCk7XG4gIH1cbn1cbiJdfQ==
|
|
372
|
+
exports.decode = decode;
|
package/dist/src/error.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Fatal = exports.SdkgenErrorWithData = exports.SdkgenError = void 0;
|
|
4
|
+
class SdkgenError extends Error {
|
|
2
5
|
get type() {
|
|
3
6
|
return this.constructor.name;
|
|
4
7
|
}
|
|
@@ -9,7 +12,8 @@ export class SdkgenError extends Error {
|
|
|
9
12
|
};
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
|
|
15
|
+
exports.SdkgenError = SdkgenError;
|
|
16
|
+
class SdkgenErrorWithData extends SdkgenError {
|
|
13
17
|
constructor(message, data) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.data = data;
|
|
@@ -22,6 +26,7 @@ export class SdkgenErrorWithData extends SdkgenError {
|
|
|
22
26
|
};
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
|
-
|
|
29
|
+
exports.SdkgenErrorWithData = SdkgenErrorWithData;
|
|
30
|
+
class Fatal extends SdkgenError {
|
|
26
31
|
}
|
|
27
|
-
|
|
32
|
+
exports.Fatal = Fatal;
|
package/dist/src/execute.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { BaseApiConfig } from "./api-config
|
|
2
|
-
import type { Context, ContextReply } from "./context
|
|
1
|
+
import type { BaseApiConfig } from "./api-config";
|
|
2
|
+
import type { Context, ContextReply } from "./context";
|
|
3
3
|
export declare function executeRequest<ExtraContextT>(ctx: Context & ExtraContextT, apiConfig: BaseApiConfig<ExtraContextT>): Promise<ContextReply>;
|