@sdkgen/node-runtime 0.0.0-dev.20230106165109 → 0.0.0-dev.20230109134521
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 +3 -4
- package/dist/spec/rest/rest.spec.js +24 -24
- package/dist/spec/runtime/errors.spec.js +15 -14
- package/dist/spec/runtime/middleware.spec.js +15 -14
- package/dist/spec/simple/legacyNodeClient.js +6 -32
- package/dist/spec/simple/simple.spec.js +27 -28
- package/dist/spec/types.js +27 -28
- package/dist/spec/types.spec.js +54 -55
- package/dist/src/api-config.js +4 -8
- package/dist/src/context.js +2 -2
- package/dist/src/encode-decode.js +12 -50
- package/dist/src/error.js +4 -9
- package/dist/src/execute.js +12 -14
- package/dist/src/http-client.js +25 -27
- package/dist/src/http-server.js +160 -170
- package/dist/src/index.js +8 -18
- package/dist/src/new-interface.js +200 -0
- package/dist/src/swagger.js +126 -115
- package/dist/src/test-wrapper.js +25 -23
- package/dist/src/utils.js +2 -5
- package/package.json +27 -22
- package/dist/spec/error.spec.d.ts +0 -1
- package/dist/spec/rest/rest.spec.d.ts +0 -1
- package/dist/spec/runtime/errors.spec.d.ts +0 -1
- package/dist/spec/runtime/middleware.spec.d.ts +0 -1
- package/dist/spec/simple/legacyNodeClient.d.ts +0 -17
- package/dist/spec/simple/simple.spec.d.ts +0 -1
- package/dist/spec/types.d.ts +0 -1
- package/dist/spec/types.spec.d.ts +0 -1
- package/dist/src/api-config.d.ts +0 -15
- package/dist/src/context.d.ts +0 -38
- package/dist/src/encode-decode.d.ts +0 -32
- package/dist/src/error.d.ts +0 -18
- package/dist/src/execute.d.ts +0 -3
- package/dist/src/http-client.d.ts +0 -17
- package/dist/src/http-server.d.ts +0 -37
- package/dist/src/index.d.ts +0 -7
- package/dist/src/swagger.d.ts +0 -2
- package/dist/src/test-wrapper.d.ts +0 -3
- package/dist/src/utils.d.ts +0 -6
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/spec/types.spec.js
CHANGED
|
@@ -1,116 +1,114 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
4
2
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
5
|
-
|
|
3
|
+
import { decode, encode } from "../src/index.js";
|
|
6
4
|
describe("Encode/Decode", () => {
|
|
7
5
|
test("Process CPF", () => {
|
|
8
|
-
expect(
|
|
9
|
-
expect(
|
|
6
|
+
expect(encode({}, "", "cpf", "067.183.145-36")).toBe("06718314536");
|
|
7
|
+
expect(decode({}, "", "cpf", "06718314536")).toBe("067.183.145-36");
|
|
10
8
|
expect(() => {
|
|
11
|
-
|
|
9
|
+
encode({}, "", "cpf", "067.183.145-35");
|
|
12
10
|
}).toThrow();
|
|
13
11
|
expect(() => {
|
|
14
|
-
|
|
12
|
+
decode({}, "", "cpf", "06718314535");
|
|
15
13
|
}).toThrow();
|
|
16
14
|
});
|
|
17
15
|
test("Process CNPJ", () => {
|
|
18
|
-
expect(
|
|
19
|
-
expect(
|
|
16
|
+
expect(encode({}, "", "cnpj", "18.571.767/0001-36")).toBe("18571767000136");
|
|
17
|
+
expect(decode({}, "", "cnpj", "18571767000136")).toBe("18.571.767/0001-36");
|
|
20
18
|
expect(() => {
|
|
21
|
-
|
|
19
|
+
encode({}, "", "cnpj", "18.571.767/0001-35");
|
|
22
20
|
}).toThrow();
|
|
23
21
|
expect(() => {
|
|
24
|
-
|
|
22
|
+
decode({}, "", "cnpj", "18571767000135");
|
|
25
23
|
}).toThrow();
|
|
26
24
|
});
|
|
27
25
|
test("Process URL", () => {
|
|
28
|
-
expect(
|
|
29
|
-
expect(
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
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/");
|
|
32
30
|
expect(() => {
|
|
33
|
-
|
|
31
|
+
encode({}, "", "url", "dfbdfb");
|
|
34
32
|
}).toThrow();
|
|
35
33
|
expect(() => {
|
|
36
|
-
|
|
34
|
+
decode({}, "", "url", "hhh.com");
|
|
37
35
|
}).toThrow();
|
|
38
36
|
});
|
|
39
37
|
test("Process Base64", () => {
|
|
40
|
-
expect(
|
|
41
|
-
expect(
|
|
38
|
+
expect(encode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
39
|
+
expect(encode({}, "", "base64", "")).toBe("");
|
|
42
40
|
expect(() => {
|
|
43
|
-
|
|
41
|
+
encode({}, "", "base64", "c3VyZS4");
|
|
44
42
|
}).toThrow();
|
|
45
43
|
expect(() => {
|
|
46
|
-
|
|
44
|
+
encode({}, "", "base64", " c3VyZS4=");
|
|
47
45
|
}).toThrow();
|
|
48
|
-
expect(
|
|
49
|
-
expect(
|
|
46
|
+
expect(decode({}, "", "base64", "c3VyZS4=")).toBe("c3VyZS4=");
|
|
47
|
+
expect(decode({}, "", "base64", "")).toBe("");
|
|
50
48
|
expect(() => {
|
|
51
|
-
|
|
49
|
+
decode({}, "", "base64", "c3VyZS4");
|
|
52
50
|
}).toThrow();
|
|
53
51
|
expect(() => {
|
|
54
|
-
|
|
52
|
+
decode({}, "", "base64", " c3VyZS4=");
|
|
55
53
|
}).toThrow();
|
|
56
54
|
});
|
|
57
55
|
test("Process Date", () => {
|
|
58
|
-
expect(
|
|
59
|
-
expect(
|
|
60
|
-
expect(
|
|
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");
|
|
61
59
|
expect(() => {
|
|
62
|
-
|
|
60
|
+
encode({}, "", "date", "2020-11-10T15:34:50Z");
|
|
63
61
|
}).toThrow();
|
|
64
62
|
expect(() => {
|
|
65
|
-
|
|
63
|
+
encode({}, "", "date", "hello world");
|
|
66
64
|
}).toThrow();
|
|
67
65
|
expect(() => {
|
|
68
|
-
|
|
66
|
+
decode({}, "", "date", "2020-02-30");
|
|
69
67
|
}).toThrow();
|
|
70
68
|
expect(() => {
|
|
71
|
-
|
|
69
|
+
encode({}, "", "date", new Date(""));
|
|
72
70
|
}).toThrow();
|
|
73
71
|
});
|
|
74
72
|
test("Process Datetime", () => {
|
|
75
|
-
expect(
|
|
76
|
-
expect(
|
|
77
|
-
expect(
|
|
78
|
-
expect(
|
|
79
|
-
expect(
|
|
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");
|
|
80
78
|
expect(() => {
|
|
81
|
-
|
|
79
|
+
encode({}, "", "datetime", "2020-11-10");
|
|
82
80
|
}).toThrow();
|
|
83
81
|
expect(() => {
|
|
84
|
-
|
|
82
|
+
encode({}, "", "datetime", "hello world");
|
|
85
83
|
}).toThrow();
|
|
86
84
|
expect(() => {
|
|
87
|
-
|
|
85
|
+
encode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
88
86
|
}).toThrow();
|
|
89
87
|
expect(() => {
|
|
90
|
-
|
|
88
|
+
decode({}, "", "datetime", "2020-11-10T15:34:50.999$01:00");
|
|
91
89
|
}).toThrow();
|
|
92
|
-
expect(
|
|
93
|
-
expect(
|
|
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());
|
|
94
92
|
expect(() => {
|
|
95
|
-
|
|
93
|
+
encode({}, "", "datetime", new Date(""));
|
|
96
94
|
}).toThrow();
|
|
97
95
|
});
|
|
98
96
|
test("Process BigInt", () => {
|
|
99
|
-
expect(
|
|
97
|
+
expect(encode({}, "", "bigint", BigInt(10))).toBe("10");
|
|
100
98
|
expect(() => {
|
|
101
|
-
|
|
99
|
+
encode({}, "", "bigint", 10);
|
|
102
100
|
}).toThrow();
|
|
103
101
|
expect(() => {
|
|
104
|
-
|
|
102
|
+
encode({}, "", "bigint", "10");
|
|
105
103
|
}).toThrow();
|
|
106
|
-
expect(
|
|
107
|
-
expect(
|
|
104
|
+
expect(decode({}, "", "bigint", 10)).toBe(BigInt(10));
|
|
105
|
+
expect(decode({}, "", "bigint", "10")).toBe(BigInt(10));
|
|
108
106
|
expect(() => {
|
|
109
|
-
|
|
107
|
+
decode({}, "", "bigint", "hello world");
|
|
110
108
|
}).toThrow();
|
|
111
109
|
});
|
|
112
110
|
test("Process Enum", () => {
|
|
113
|
-
for (const func of [
|
|
111
|
+
for (const func of [encode, decode]) {
|
|
114
112
|
expect(func({}, "", ["a", "b"], "a")).toBe("a");
|
|
115
113
|
expect(func({}, "", ["a", "b"], "b")).toBe("b");
|
|
116
114
|
expect(() => {
|
|
@@ -120,9 +118,10 @@ describe("Encode/Decode", () => {
|
|
|
120
118
|
func({ X: { v: "int" } }, "", ["a", ["b", "X"]], "b");
|
|
121
119
|
}).toThrow();
|
|
122
120
|
}
|
|
123
|
-
expect(
|
|
124
|
-
expect(
|
|
125
|
-
expect(
|
|
126
|
-
expect(
|
|
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 });
|
|
127
125
|
});
|
|
128
126
|
});
|
|
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.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.BaseApiConfig = void 0;
|
|
4
|
-
const parser_1 = require("@sdkgen/parser");
|
|
5
|
-
class BaseApiConfig {
|
|
1
|
+
import { jsonToAst } from "@sdkgen/parser";
|
|
2
|
+
export class BaseApiConfig {
|
|
6
3
|
constructor() {
|
|
7
4
|
this.fn = {};
|
|
8
5
|
this.middlewares = [];
|
|
9
6
|
}
|
|
10
7
|
get ast() {
|
|
11
|
-
|
|
12
|
-
return ((_a = this._ast) !== null && _a !== void 0 ? _a : (this._ast = (0, parser_1.jsonToAst)(this.astJson)));
|
|
8
|
+
return (this._ast ??= jsonToAst(this.astJson));
|
|
13
9
|
}
|
|
14
10
|
use(middleware) {
|
|
15
11
|
this.middlewares.push(middleware);
|
|
16
12
|
}
|
|
17
13
|
}
|
|
18
|
-
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU8zQyxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQVNFLE9BQUUsR0FHRSxFQUFFLENBQUM7UUFFRSxnQkFBVyxHQUFxQyxFQUFFLENBQUM7SUFLOUQsQ0FBQztJQWhCQyxJQUFJLEdBQUc7UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQVdELEdBQUcsQ0FBQyxVQUFxQztRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFzdEpzb24sIEFzdFJvb3QgfSBmcm9tIFwiQHNka2dlbi9wYXJzZXJcIjtcbmltcG9ydCB7IGpzb25Ub0FzdCB9IGZyb20gXCJAc2RrZ2VuL3BhcnNlclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIENvbnRleHRSZXBseSB9IGZyb20gXCIuL2NvbnRleHQuanNcIjtcbmltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZTxFeHRyYUNvbnRleHRUPiA9IChjdHg6IENvbnRleHQgJiBFeHRyYUNvbnRleHRULCBuZXh0OiAoKSA9PiBQcm9taXNlPENvbnRleHRSZXBseT4pID0+IFByb21pc2U8Q29udGV4dFJlcGx5PjtcblxuZXhwb3J0IGNsYXNzIEJhc2VBcGlDb25maWc8RXh0cmFDb250ZXh0VCA9IHVua25vd24+IHtcbiAgcHJpdmF0ZSBfYXN0OiBBc3RSb290IHwgdW5kZWZpbmVkO1xuXG4gIGdldCBhc3QoKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hc3QgPz89IGpzb25Ub0FzdCh0aGlzLmFzdEpzb24pKTtcbiAgfVxuXG4gIGFzdEpzb24hOiBEZWVwUmVhZG9ubHk8QXN0SnNvbj47XG5cbiAgZm46IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIFtuYW1lOiBzdHJpbmddOiAoKGN0eDogQ29udGV4dCAmIEV4dHJhQ29udGV4dFQsIGFyZ3M6IGFueSkgPT4gUHJvbWlzZTxhbnk+KSB8IHVuZGVmaW5lZDtcbiAgfSA9IHt9O1xuXG4gIHJlYWRvbmx5IG1pZGRsZXdhcmVzOiBBcnJheTxNaWRkbGV3YXJlPEV4dHJhQ29udGV4dFQ+PiA9IFtdO1xuXG4gIHVzZShtaWRkbGV3YXJlOiBNaWRkbGV3YXJlPEV4dHJhQ29udGV4dFQ+KTogdm9pZCB7XG4gICAgdGhpcy5taWRkbGV3YXJlcy5wdXNoKG1pZGRsZXdhcmUpO1xuICB9XG59XG4iXX0=
|
package/dist/src/context.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEluY29taW5nSHR0cEhlYWRlcnMsIE91dGdvaW5nSHR0cEhlYWRlciB9IGZyb20gXCJodHRwXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRSZXF1ZXN0IHtcbiAgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGRldmljZUluZm86IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsO1xuICAgIHBsYXRmb3JtOiB1bmtub3duO1xuICAgIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIGZpbmdlcnByaW50OiBzdHJpbmcgfCBudWxsO1xuICB9O1xuICBleHRyYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGhlYWRlcnM6IEluY29taW5nSHR0cEhlYWRlcnM7XG4gIGlkOiBzdHJpbmc7XG4gIGlwOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBmaWxlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb250ZW50czogUmVhZGFibGU7XG4gIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRSZXBseSB7XG4gIGVycm9yPzogdW5rbm93bjtcbiAgcmVzdWx0PzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0UmVzcG9uc2Uge1xuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xuICBoZWFkZXJzOiBNYXA8c3RyaW5nLCBPdXRnb2luZ0h0dHBIZWFkZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHQge1xuICByZXF1ZXN0OiBDb250ZXh0UmVxdWVzdDtcbiAgcmVzcG9uc2U6IENvbnRleHRSZXNwb25zZTtcbn1cbiJdfQ==
|
|
@@ -1,43 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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");
|
|
1
|
+
import * as CNPJ from "@fnando/cnpj";
|
|
2
|
+
import * as CPF from "@fnando/cpf";
|
|
3
|
+
import { Decimal } from "decimal.js";
|
|
41
4
|
const simpleStringTypes = ["string", "email", "html", "xml"];
|
|
42
5
|
const simpleTypes = ["json", "bool", "url", "int", "uint", "float", "money", "hex", "uuid", "base64", "void", ...simpleStringTypes];
|
|
43
6
|
class ParseError extends Error {
|
|
@@ -133,7 +96,7 @@ function simpleEncodeDecode(path, type, value) {
|
|
|
133
96
|
}
|
|
134
97
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
135
98
|
}
|
|
136
|
-
function encode(typeTable, path, type, value) {
|
|
99
|
+
export function encode(typeTable, path, type, value) {
|
|
137
100
|
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
138
101
|
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
139
102
|
}
|
|
@@ -146,7 +109,7 @@ function encode(typeTable, path, type, value) {
|
|
|
146
109
|
}
|
|
147
110
|
}
|
|
148
111
|
else if (typeof value === "object" && value && "tag" in value) {
|
|
149
|
-
const
|
|
112
|
+
const { tag: tagValue, ...restValue } = value;
|
|
150
113
|
for (const entry of type) {
|
|
151
114
|
if (typeof entry === "string") {
|
|
152
115
|
if (entry === tagValue) {
|
|
@@ -232,10 +195,10 @@ function encode(typeTable, path, type, value) {
|
|
|
232
195
|
return (typeof value === "string" ? new Date(value) : value).toISOString().replace("Z", "");
|
|
233
196
|
}
|
|
234
197
|
else if (type === "decimal") {
|
|
235
|
-
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof
|
|
198
|
+
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value)) && !(value instanceof Decimal)) {
|
|
236
199
|
throw new ParseError(path, type, value);
|
|
237
200
|
}
|
|
238
|
-
return new
|
|
201
|
+
return new Decimal(value).toString();
|
|
239
202
|
}
|
|
240
203
|
else {
|
|
241
204
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
@@ -246,8 +209,7 @@ function encode(typeTable, path, type, value) {
|
|
|
246
209
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
247
210
|
}
|
|
248
211
|
}
|
|
249
|
-
|
|
250
|
-
function decode(typeTable, path, type, value) {
|
|
212
|
+
export function decode(typeTable, path, type, value) {
|
|
251
213
|
if (typeof type === "string" && !type.endsWith("?") && type !== "void" && (value === null || value === undefined)) {
|
|
252
214
|
throw new Error(`Invalid type at '${path}', cannot be null`);
|
|
253
215
|
}
|
|
@@ -270,11 +232,11 @@ function decode(typeTable, path, type, value) {
|
|
|
270
232
|
const [tag, valueType] = entry;
|
|
271
233
|
if (tag === value) {
|
|
272
234
|
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, {});
|
|
273
|
-
return
|
|
235
|
+
return { ...decodedValues, tag };
|
|
274
236
|
}
|
|
275
237
|
else if (Array.isArray(value) && value.length === 2 && tag === value[0]) {
|
|
276
238
|
const decodedValues = decode(typeTable, `${path}.${tag}`, valueType, value[1]);
|
|
277
|
-
return
|
|
239
|
+
return { ...decodedValues, tag };
|
|
278
240
|
}
|
|
279
241
|
}
|
|
280
242
|
}
|
|
@@ -357,7 +319,7 @@ function decode(typeTable, path, type, value) {
|
|
|
357
319
|
if (typeof value !== "number" && (typeof value !== "string" || !/^-?[0-9]+(?:\.[0-9]+)?$/u.test(value))) {
|
|
358
320
|
throw new ParseError(path, type, value);
|
|
359
321
|
}
|
|
360
|
-
return new
|
|
322
|
+
return new Decimal(value);
|
|
361
323
|
}
|
|
362
324
|
else {
|
|
363
325
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
@@ -369,4 +331,4 @@ function decode(typeTable, path, type, value) {
|
|
|
369
331
|
throw new Error(`Unknown type '${type}' at '${path}'`);
|
|
370
332
|
}
|
|
371
333
|
}
|
|
372
|
-
exports.decode = decode;
|
|
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==
|
package/dist/src/error.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Fatal = exports.SdkgenErrorWithData = exports.SdkgenError = void 0;
|
|
4
|
-
class SdkgenError extends Error {
|
|
1
|
+
export class SdkgenError extends Error {
|
|
5
2
|
get type() {
|
|
6
3
|
return this.constructor.name;
|
|
7
4
|
}
|
|
@@ -12,8 +9,7 @@ class SdkgenError extends Error {
|
|
|
12
9
|
};
|
|
13
10
|
}
|
|
14
11
|
}
|
|
15
|
-
|
|
16
|
-
class SdkgenErrorWithData extends SdkgenError {
|
|
12
|
+
export class SdkgenErrorWithData extends SdkgenError {
|
|
17
13
|
constructor(message, data) {
|
|
18
14
|
super(message);
|
|
19
15
|
this.data = data;
|
|
@@ -26,7 +22,6 @@ class SdkgenErrorWithData extends SdkgenError {
|
|
|
26
22
|
};
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
|
-
|
|
30
|
-
class Fatal extends SdkgenError {
|
|
25
|
+
export class Fatal extends SdkgenError {
|
|
31
26
|
}
|
|
32
|
-
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixXQUFZLFNBQVEsS0FBSztJQUM3QyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBZ0IsbUJBQThCLFNBQVEsV0FBVztJQUNyRSxZQUFZLE9BQWUsRUFBUyxJQUFjO1FBQ2hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURtQixTQUFJLEdBQUosSUFBSSxDQUFVO0lBRWxELENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxLQUFNLFNBQVEsV0FBVztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNka2dlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHsgbWVzc2FnZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG59XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2RrZ2VuRXJyb3JXaXRoRGF0YTxEYXRhVHlwZT4gZXh0ZW5kcyBTZGtnZW5FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGRhdGE6IERhdGFUeXBlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IHsgZGF0YTogRGF0YVR5cGU7IG1lc3NhZ2U6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmF0YWwgZXh0ZW5kcyBTZGtnZW5FcnJvciB7fVxuIl19
|
package/dist/src/execute.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const error_1 = require("./error");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
async function executeRequest(ctx, apiConfig) {
|
|
1
|
+
import { ThrowsAnnotation } from "@sdkgen/parser";
|
|
2
|
+
import { decode, encode } from "./encode-decode.js";
|
|
3
|
+
import { Fatal } from "./error.js";
|
|
4
|
+
import { has } from "./utils.js";
|
|
5
|
+
export async function executeRequest(ctx, apiConfig) {
|
|
9
6
|
// eslint-disable-next-line func-style
|
|
10
7
|
let next = async () => {
|
|
11
8
|
try {
|
|
12
9
|
const functionDescription = apiConfig.astJson.functionTable[ctx.request.name];
|
|
13
10
|
const functionImplementation = apiConfig.fn[ctx.request.name];
|
|
14
11
|
if (!functionDescription || !functionImplementation) {
|
|
15
|
-
throw new
|
|
12
|
+
throw new Fatal(`Function does not exist: ${ctx.request.name}`);
|
|
16
13
|
}
|
|
17
|
-
const args =
|
|
14
|
+
const args = decode(apiConfig.astJson.typeTable, `${ctx.request.name}.args`, functionDescription.args, ctx.request.args);
|
|
18
15
|
const ret = (await functionImplementation(ctx, args));
|
|
19
|
-
const encodedRet =
|
|
16
|
+
const encodedRet = encode(apiConfig.astJson.typeTable, `${ctx.request.name}.ret`, functionDescription.ret, ret);
|
|
20
17
|
return { result: encodedRet };
|
|
21
18
|
}
|
|
22
19
|
catch (error) {
|
|
@@ -40,10 +37,11 @@ async function executeRequest(ctx, apiConfig) {
|
|
|
40
37
|
if (reply.error) {
|
|
41
38
|
const functionAst = apiConfig.ast.operations.find(op => op.name === ctx.request.name);
|
|
42
39
|
if (functionAst) {
|
|
43
|
-
const allowedErrors = functionAst.annotations.filter(ann => ann instanceof
|
|
40
|
+
const allowedErrors = functionAst.annotations.filter(ann => ann instanceof ThrowsAnnotation).map(ann => ann.error);
|
|
44
41
|
if (typeof reply.error !== "object" ||
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
45
43
|
reply.error === null ||
|
|
46
|
-
!
|
|
44
|
+
!has(reply.error, "type") ||
|
|
47
45
|
typeof reply.error.type !== "string" ||
|
|
48
46
|
(allowedErrors.length > 0 && !allowedErrors.includes(reply.error.type)) ||
|
|
49
47
|
!apiConfig.astJson.errors.map(error => (typeof error === "string" ? error : error[0])).includes(reply.error.type)) {
|
|
@@ -53,4 +51,4 @@ async function executeRequest(ctx, apiConfig) {
|
|
|
53
51
|
}
|
|
54
52
|
return reply;
|
|
55
53
|
}
|
|
56
|
-
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGVjdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFnQixHQUE0QixFQUFFLFNBQXVDO0lBQ3ZILHNDQUFzQztJQUN0QyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtRQUNwQixJQUFJO1lBQ0YsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTlELElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7YUFDakU7WUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLG1CQUFtQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpILE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQVksQ0FBQztZQUNqRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVoSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBa0IsQ0FBQztTQUMvQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLEtBQUssRUFBa0IsQ0FBQztTQUNsQztJQUNILENBQUMsQ0FBQztJQUVGLEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDMUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLElBQUk7Z0JBQ0YsT0FBTyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDNUM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLEVBQUUsS0FBSyxFQUFrQixDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDO0tBQ0g7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRTNCLG9HQUFvRztJQUNwRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDZixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLEdBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekksSUFDRSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUTtnQkFDL0IsdUVBQXVFO2dCQUN2RSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUk7Z0JBQ3BCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO2dCQUN6QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7Z0JBQ3BDLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDakg7Z0JBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ2hFO1NBQ0Y7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRocm93c0Fubm90YXRpb24gfSBmcm9tIFwiQHNka2dlbi9wYXJzZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBCYXNlQXBpQ29uZmlnIH0gZnJvbSBcIi4vYXBpLWNvbmZpZy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0LCBDb250ZXh0UmVwbHkgfSBmcm9tIFwiLi9jb250ZXh0LmpzXCI7XG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuL2VuY29kZS1kZWNvZGUuanNcIjtcbmltcG9ydCB7IEZhdGFsIH0gZnJvbSBcIi4vZXJyb3IuanNcIjtcbmltcG9ydCB7IGhhcyB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlUmVxdWVzdDxFeHRyYUNvbnRleHRUPihjdHg6IENvbnRleHQgJiBFeHRyYUNvbnRleHRULCBhcGlDb25maWc6IEJhc2VBcGlDb25maWc8RXh0cmFDb250ZXh0VD4pIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtc3R5bGVcbiAgbGV0IG5leHQgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uRGVzY3JpcHRpb24gPSBhcGlDb25maWcuYXN0SnNvbi5mdW5jdGlvblRhYmxlW2N0eC5yZXF1ZXN0Lm5hbWVdO1xuICAgICAgY29uc3QgZnVuY3Rpb25JbXBsZW1lbnRhdGlvbiA9IGFwaUNvbmZpZy5mbltjdHgucmVxdWVzdC5uYW1lXTtcblxuICAgICAgaWYgKCFmdW5jdGlvbkRlc2NyaXB0aW9uIHx8ICFmdW5jdGlvbkltcGxlbWVudGF0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBGYXRhbChgRnVuY3Rpb24gZG9lcyBub3QgZXhpc3Q6ICR7Y3R4LnJlcXVlc3QubmFtZX1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IGRlY29kZShhcGlDb25maWcuYXN0SnNvbi50eXBlVGFibGUsIGAke2N0eC5yZXF1ZXN0Lm5hbWV9LmFyZ3NgLCBmdW5jdGlvbkRlc2NyaXB0aW9uLmFyZ3MsIGN0eC5yZXF1ZXN0LmFyZ3MpO1xuXG4gICAgICBjb25zdCByZXQgPSAoYXdhaXQgZnVuY3Rpb25JbXBsZW1lbnRhdGlvbihjdHgsIGFyZ3MpKSBhcyB1bmtub3duO1xuICAgICAgY29uc3QgZW5jb2RlZFJldCA9IGVuY29kZShhcGlDb25maWcuYXN0SnNvbi50eXBlVGFibGUsIGAke2N0eC5yZXF1ZXN0Lm5hbWV9LnJldGAsIGZ1bmN0aW9uRGVzY3JpcHRpb24ucmV0LCByZXQpO1xuXG4gICAgICByZXR1cm4geyByZXN1bHQ6IGVuY29kZWRSZXQgfSBhcyBDb250ZXh0UmVwbHk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7IGVycm9yIH0gYXMgQ29udGV4dFJlcGx5O1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGxldCBpID0gYXBpQ29uZmlnLm1pZGRsZXdhcmVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgY29uc3QgbWlkZGxld2FyZSA9IGFwaUNvbmZpZy5taWRkbGV3YXJlc1tpXTtcbiAgICBjb25zdCBwcmV2aW91c05leHQgPSBuZXh0O1xuXG4gICAgbmV4dCA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBtaWRkbGV3YXJlKGN0eCwgcHJldmlvdXNOZXh0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yIH0gYXMgQ29udGV4dFJlcGx5O1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCByZXBseSA9IGF3YWl0IG5leHQoKTtcblxuICAvLyBJZiBlcnJvcnMsIGNoZWNrIGlmIHRoZSBlcnJvciB0eXBlIGlzIG9uZSBvZiB0aGUgQHRocm93cyBhbm5vdGF0aW9uLiBJZiBpdCBpc24ndCwgY2hhbmdlIHRvIEZhdGFsXG4gIGlmIChyZXBseS5lcnJvcikge1xuICAgIGNvbnN0IGZ1bmN0aW9uQXN0ID0gYXBpQ29uZmlnLmFzdC5vcGVyYXRpb25zLmZpbmQob3AgPT4gb3AubmFtZSA9PT0gY3R4LnJlcXVlc3QubmFtZSk7XG5cbiAgICBpZiAoZnVuY3Rpb25Bc3QpIHtcbiAgICAgIGNvbnN0IGFsbG93ZWRFcnJvcnMgPSBmdW5jdGlvbkFzdC5hbm5vdGF0aW9ucy5maWx0ZXIoYW5uID0+IGFubiBpbnN0YW5jZW9mIFRocm93c0Fubm90YXRpb24pLm1hcChhbm4gPT4gKGFubiBhcyBUaHJvd3NBbm5vdGF0aW9uKS5lcnJvcik7XG5cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHJlcGx5LmVycm9yICE9PSBcIm9iamVjdFwiIHx8XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgIHJlcGx5LmVycm9yID09PSBudWxsIHx8XG4gICAgICAgICFoYXMocmVwbHkuZXJyb3IsIFwidHlwZVwiKSB8fFxuICAgICAgICB0eXBlb2YgcmVwbHkuZXJyb3IudHlwZSAhPT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAoYWxsb3dlZEVycm9ycy5sZW5ndGggPiAwICYmICFhbGxvd2VkRXJyb3JzLmluY2x1ZGVzKHJlcGx5LmVycm9yLnR5cGUpKSB8fFxuICAgICAgICAhYXBpQ29uZmlnLmFzdEpzb24uZXJyb3JzLm1hcChlcnJvciA9PiAodHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiID8gZXJyb3IgOiBlcnJvclswXSkpLmluY2x1ZGVzKHJlcGx5LmVycm9yLnR5cGUpXG4gICAgICApIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcGx5LmVycm9yLCBcInR5cGVcIiwgeyB2YWx1ZTogXCJGYXRhbFwiIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXBseTtcbn1cbiJdfQ==
|