koilib 2.8.0 → 3.1.1
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/README.md +75 -12
- package/dist/koinos.js +8535 -284
- package/dist/koinos.min.js +1 -1
- package/lib/Contract.d.ts +66 -18
- package/lib/Contract.js +103 -40
- package/lib/Contract.js.map +1 -1
- package/lib/Provider.d.ts +22 -7
- package/lib/Provider.js +60 -21
- package/lib/Provider.js.map +1 -1
- package/lib/Serializer.d.ts +3 -1
- package/lib/Serializer.js +103 -83
- package/lib/Serializer.js.map +1 -1
- package/lib/Signer.d.ts +54 -42
- package/lib/Signer.js +305 -114
- package/lib/Signer.js.map +1 -1
- package/lib/browser/Contract.d.ts +66 -18
- package/lib/browser/Contract.js +103 -40
- package/lib/browser/Contract.js.map +1 -1
- package/lib/browser/Provider.d.ts +22 -7
- package/lib/browser/Provider.js +60 -21
- package/lib/browser/Provider.js.map +1 -1
- package/lib/browser/Serializer.d.ts +3 -1
- package/lib/browser/Serializer.js +103 -83
- package/lib/browser/Serializer.js.map +1 -1
- package/lib/browser/Signer.d.ts +54 -42
- package/lib/browser/Signer.js +305 -114
- package/lib/browser/Signer.js.map +1 -1
- package/lib/browser/index.d.ts +1 -1
- package/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/indexUtils.d.ts +2 -0
- package/lib/browser/indexUtils.js +15 -0
- package/lib/browser/indexUtils.js.map +1 -0
- package/lib/browser/interface.d.ts +242 -46
- package/lib/browser/jsonDescriptors/chain-proto.json +676 -0
- package/lib/browser/jsonDescriptors/{krc20-proto.json → token-proto.json} +47 -4
- package/lib/browser/protoModules/protocol-proto.d.ts +2 -0
- package/lib/browser/protoModules/protocol-proto.js +6336 -0
- package/lib/browser/protoModules/protocol-proto.js.map +1 -0
- package/lib/browser/utils.d.ts +19 -255
- package/lib/browser/utils.js +170 -15
- package/lib/browser/utils.js.map +1 -1
- package/lib/browser/utilsNode.d.ts +1021 -0
- package/lib/browser/utilsNode.js +346 -0
- package/lib/browser/utilsNode.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/indexUtils.d.ts +2 -0
- package/lib/indexUtils.js +15 -0
- package/lib/indexUtils.js.map +1 -0
- package/lib/interface.d.ts +242 -46
- package/lib/jsonDescriptors/chain-proto.json +676 -0
- package/lib/jsonDescriptors/{krc20-proto.json → token-proto.json} +47 -4
- package/lib/protoModules/protocol-proto.d.ts +2 -0
- package/lib/protoModules/protocol-proto.js +6336 -0
- package/lib/protoModules/protocol-proto.js.map +1 -0
- package/lib/utils.d.ts +19 -255
- package/lib/utils.js +170 -15
- package/lib/utils.js.map +1 -1
- package/lib/utilsNode.d.ts +1021 -0
- package/lib/utilsNode.js +346 -0
- package/lib/utilsNode.js.map +1 -0
- package/package.json +1 -1
- package/lib/browser/jsonDescriptors/protocol-proto.json +0 -246
- package/lib/jsonDescriptors/protocol-proto.json +0 -246
package/lib/browser/Provider.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Provider = void 0;
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
const protocol_proto_js_1 = require("./protoModules/protocol-proto.js");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */
|
|
4
9
|
async function sleep(ms) {
|
|
5
10
|
return new Promise((r) => setTimeout(r, ms));
|
|
6
11
|
}
|
|
@@ -26,7 +31,7 @@ class Provider {
|
|
|
26
31
|
else
|
|
27
32
|
this.rpcNodes = [rpcNodes];
|
|
28
33
|
this.currentNodeId = 0;
|
|
29
|
-
this.onError = () =>
|
|
34
|
+
this.onError = () => true;
|
|
30
35
|
}
|
|
31
36
|
/**
|
|
32
37
|
* Function to make jsonrpc requests to the RPC node
|
|
@@ -39,7 +44,7 @@ class Provider {
|
|
|
39
44
|
// eslint-disable-next-line no-constant-condition
|
|
40
45
|
while (true) {
|
|
41
46
|
try {
|
|
42
|
-
const
|
|
47
|
+
const body = {
|
|
43
48
|
id: Math.round(Math.random() * 1000),
|
|
44
49
|
jsonrpc: "2.0",
|
|
45
50
|
method,
|
|
@@ -48,18 +53,27 @@ class Provider {
|
|
|
48
53
|
const url = this.rpcNodes[this.currentNodeId];
|
|
49
54
|
const response = await fetch(url, {
|
|
50
55
|
method: "POST",
|
|
51
|
-
body: JSON.stringify(
|
|
56
|
+
body: JSON.stringify(body),
|
|
52
57
|
});
|
|
53
58
|
const json = (await response.json());
|
|
54
|
-
if (json.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
throw
|
|
59
|
+
if (json.result !== undefined)
|
|
60
|
+
return json.result;
|
|
61
|
+
if (!json.error)
|
|
62
|
+
throw new Error("undefined error");
|
|
63
|
+
const { message, data } = json.error;
|
|
64
|
+
if (!data)
|
|
65
|
+
throw new Error(message);
|
|
66
|
+
let dataJson;
|
|
67
|
+
try {
|
|
68
|
+
dataJson = JSON.parse(data);
|
|
61
69
|
}
|
|
62
|
-
|
|
70
|
+
catch (e) {
|
|
71
|
+
dataJson = { data };
|
|
72
|
+
}
|
|
73
|
+
throw new Error(JSON.stringify({
|
|
74
|
+
...(message && { error: message }),
|
|
75
|
+
...dataJson,
|
|
76
|
+
}));
|
|
63
77
|
}
|
|
64
78
|
catch (e) {
|
|
65
79
|
const currentNode = this.rpcNodes[this.currentNodeId];
|
|
@@ -76,13 +90,24 @@ class Provider {
|
|
|
76
90
|
* transactions for a particular account. This call is used
|
|
77
91
|
* when creating new transactions.
|
|
78
92
|
* @param account - account address
|
|
93
|
+
* @param deserialize - If set true it will deserialize the nonce
|
|
94
|
+
* and return it as number (default). If set false it will return
|
|
95
|
+
* the nonce encoded as received from the RPC.
|
|
79
96
|
* @returns Nonce
|
|
80
97
|
*/
|
|
81
|
-
async getNonce(account) {
|
|
82
|
-
const { nonce } = await this.call("chain.get_account_nonce", { account });
|
|
83
|
-
if (!
|
|
84
|
-
return
|
|
85
|
-
|
|
98
|
+
async getNonce(account, deserialize = true) {
|
|
99
|
+
const { nonce: nonceBase64url } = await this.call("chain.get_account_nonce", { account });
|
|
100
|
+
if (!deserialize) {
|
|
101
|
+
return nonceBase64url;
|
|
102
|
+
}
|
|
103
|
+
const valueBuffer = (0, utils_1.decodeBase64url)(nonceBase64url);
|
|
104
|
+
const message = protocol_proto_js_1.koinos.chain.value_type.decode(valueBuffer);
|
|
105
|
+
const object = protocol_proto_js_1.koinos.chain.value_type.toObject(message, {
|
|
106
|
+
longs: String,
|
|
107
|
+
defaults: true,
|
|
108
|
+
});
|
|
109
|
+
// todo: consider the case where nonce is greater than max safe integer
|
|
110
|
+
return Number(object.uint64_value);
|
|
86
111
|
}
|
|
87
112
|
async getAccountRc(account) {
|
|
88
113
|
const { rc } = await this.call("chain.get_account_rc", {
|
|
@@ -102,7 +127,7 @@ class Provider {
|
|
|
102
127
|
}
|
|
103
128
|
async getBlocksById(blockIds) {
|
|
104
129
|
return this.call("block_store.get_blocks_by_id", {
|
|
105
|
-
|
|
130
|
+
block_ids: blockIds,
|
|
106
131
|
return_block: true,
|
|
107
132
|
return_receipt: false,
|
|
108
133
|
});
|
|
@@ -113,6 +138,13 @@ class Provider {
|
|
|
113
138
|
async getHeadInfo() {
|
|
114
139
|
return this.call("chain.get_head_info", {});
|
|
115
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Function to get the chain
|
|
143
|
+
*/
|
|
144
|
+
async getChainId() {
|
|
145
|
+
const { chain_id: chainId } = await this.call("chain.get_chain_id", {});
|
|
146
|
+
return chainId;
|
|
147
|
+
}
|
|
116
148
|
/**
|
|
117
149
|
* Function to get consecutive blocks in descending order
|
|
118
150
|
* @param height - Starting block height
|
|
@@ -155,16 +187,16 @@ class Provider {
|
|
|
155
187
|
*
|
|
156
188
|
* When _byTransactionId_ is used it returns the block id.
|
|
157
189
|
*
|
|
158
|
-
* @param timeout - Timeout in milliseconds. By default it is
|
|
190
|
+
* @param timeout - Timeout in milliseconds. By default it is 60000
|
|
159
191
|
* @example
|
|
160
192
|
* ```ts
|
|
161
193
|
* const blockNumber = await provider.wait(txId);
|
|
162
|
-
* // const blockNumber = await provider.wait(txId, "byBlock",
|
|
163
|
-
* // const blockId = await provider.wait(txId, "byTransactionId",
|
|
194
|
+
* // const blockNumber = await provider.wait(txId, "byBlock", 60000);
|
|
195
|
+
* // const blockId = await provider.wait(txId, "byTransactionId", 60000);
|
|
164
196
|
* console.log("Transaction mined")
|
|
165
197
|
* ```
|
|
166
198
|
*/
|
|
167
|
-
async wait(txId, type = "byBlock", timeout =
|
|
199
|
+
async wait(txId, type = "byBlock", timeout = 60000) {
|
|
168
200
|
const iniTime = Date.now();
|
|
169
201
|
if (type === "byTransactionId") {
|
|
170
202
|
while (Date.now() < iniTime + timeout) {
|
|
@@ -232,6 +264,13 @@ class Provider {
|
|
|
232
264
|
async sendTransaction(transaction) {
|
|
233
265
|
return this.call("chain.submit_transaction", { transaction });
|
|
234
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Function to call "chain.submit_block" to send a signed
|
|
269
|
+
* block to the blockchain.
|
|
270
|
+
*/
|
|
271
|
+
async submitBlock(block) {
|
|
272
|
+
return this.call("chain.submit_block", { block });
|
|
273
|
+
}
|
|
235
274
|
/**
|
|
236
275
|
* Function to call "chain.read_contract" to read a contract.
|
|
237
276
|
* This function is used by [[Contract]] class when read methods
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../src/Provider.ts"],"names":[],"mappings":";;;AAMA,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAa,QAAQ;IAwCnB;;;;;;;;;;;OAWG;IACH,YAAY,QAA2B;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;YACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../src/Provider.ts"],"names":[],"mappings":";;;AAMA,6DAA6D;AAC7D,aAAa;AACb,wEAA0D;AAC1D,mCAA0C;AAE1C,2IAA2I;AAE3I,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAa,QAAQ;IAwCnB;;;;;;;;;;;OAWG;IACH,YAAY,QAA2B;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;YACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAc,MAAc,EAAE,MAAe;QACrD,qCAAqC;QACrC,iDAAiD;QACjD,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,MAAM,IAAI,GAAG;oBACX,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;oBACpC,OAAO,EAAE,KAAK;oBACd,MAAM;oBACN,MAAM;iBACP,CAAC;gBAEF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;gBAEF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;gBAElD,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACpD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,QAAiC,CAAC;gBACtC,IAAI;oBACF,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC7B;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC;iBACrB;gBACD,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,SAAS,CAAC;oBACb,GAAG,CAAC,OAAO,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;oBAClC,GAAG,QAAQ;iBACZ,CAAC,CACH,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC7D,IAAI,KAAK;oBAAE,MAAM,CAAC,CAAC;aACpB;SACF;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAe,EACf,WAAW,GAAG,IAAI;QAElB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/C,yBAAyB,EACzB,EAAE,OAAO,EAAE,CACZ,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,cAAc,CAAC;SACvB;QAED,MAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,cAAc,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,0BAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,0BAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE;YACvD,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,IAAI;SACf,CAA6B,CAAC;QAC/B,uEAAuE;QACvE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAiB,sBAAsB,EAAE;YACrE,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,cAAwB;QAMhD,OAAO,IAAI,CAAC,IAAI,CAKb,0CAA0C,EAAE;YAC7C,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAkB;QAOpC,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC/C,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QASf,OAAO,IAAI,CAAC,IAAI,CAQb,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3C,oBAAoB,EACpB,EAAE,CACH,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CACb,MAAc,EACd,SAAS,GAAG,CAAC,EACb,KAAc;QAWd,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;SACpC;QACD,OAAO,CACL,MAAM,IAAI,CAAC,IAAI,CASZ,kCAAkC,EAAE;YACrC,aAAa,EAAE,UAAU;YACzB,qBAAqB,EAAE,MAAM;YAC7B,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,KAAK;SACtB,CAAC,CACH,CAAC,WAAW,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc;QAQ3B,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,OAAsC,SAAS,EAC/C,OAAO,GAAG,KAAK;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,iBAAiB,EAAE;YAC9B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,OAAO,EAAE;gBACrC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChE,IACE,YAAY;oBACZ,YAAY,CAAC,CAAC,CAAC;oBACf,YAAY,CAAC,CAAC,CAAC,CAAC,iBAAiB;oBAEjC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAC/C;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,KAAK,CAAC,CAAC;SAC9D;QAED,UAAU;QACV,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAW,EACX,SAAiB,EACjB,KAAa,EACc,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3D,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,IACE,CAAC,KAAK;oBACN,CAAC,KAAK,CAAC,KAAK;oBACZ,CAAC,KAAK,CAAC,QAAQ;oBACf,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;oBAEzB,OAAO;gBACT,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;gBAC/D,IAAI,EAAE;oBAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YAClD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,OAAO,EAAE;YACrC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACjE,IAAI,WAAW,KAAK,CAAC,EAAE;gBACrB,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1C,QAAQ,GAAG,WAAW,CAAC;aACxB;YACD,IACE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,WAAW,GAAG,CAAC;gBAC/C,UAAU;gBACV,UAAU,KAAK,YAAY,CAAC,EAAE,EAC9B;gBACA,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,cAAc,CACzC,QAAQ,EACR,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,EAC1C,YAAY,CAAC,EAAE,CAChB,CAAC;gBACF,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACtB,UAAU,GAAG,MAAM,CAAC;gBACpB,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC/C;YACD,uCAAuC;YACvC,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;gBAAE,SAAS;YACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,cAAc,CACzC,WAAW,EACX,CAAC,EACD,YAAY,CAAC,EAAE,CAChB,CAAC;YACF,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU;gBAAE,UAAU,GAAG,MAAM,CAAC;YACrC,WAAW,IAAI,CAAC,CAAC;SAClB;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,4BAA4B,QAAQ,OAAO,WAAW,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,WAA4B;QAGhD,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,KAAgB;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,SAAoC;QAIrD,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AAvaD,4BAuaC;AAED,kBAAe,QAAQ,CAAC"}
|
|
@@ -49,7 +49,7 @@ export declare class Serializer {
|
|
|
49
49
|
*/
|
|
50
50
|
defaultType?: Type;
|
|
51
51
|
/**
|
|
52
|
-
* Preformat bytes for
|
|
52
|
+
* Preformat bytes for base64url, base58 or hex string
|
|
53
53
|
*/
|
|
54
54
|
bytesConversion: boolean;
|
|
55
55
|
constructor(types: INamespace, opts?: {
|
|
@@ -65,6 +65,8 @@ export declare class Serializer {
|
|
|
65
65
|
*/
|
|
66
66
|
bytesConversion?: boolean;
|
|
67
67
|
});
|
|
68
|
+
btypeDecode(valueBtypeEncoded: Record<string, unknown> | unknown[], protobufType: Type): Record<string, unknown>;
|
|
69
|
+
btypeEncode(valueBtypeDecoded: Record<string, unknown> | unknown[], protobufType: Type): Record<string, unknown>;
|
|
68
70
|
/**
|
|
69
71
|
* Function to encode a type using the protobuffer definitions
|
|
70
72
|
* It also prepares the bytes for special cases (base58, hex string)
|
|
@@ -4,22 +4,25 @@ exports.Serializer = void 0;
|
|
|
4
4
|
/* eslint-disable @typescript-eslint/require-await */
|
|
5
5
|
const light_1 = require("protobufjs/light");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
const OP_BYTES_1 = "(btype)";
|
|
8
|
+
const OP_BYTES_2 = "(koinos.btype)";
|
|
9
|
+
const nativeTypes = [
|
|
10
|
+
"double",
|
|
11
|
+
"float",
|
|
12
|
+
"int32",
|
|
13
|
+
"int64",
|
|
14
|
+
"uint32",
|
|
15
|
+
"uint64",
|
|
16
|
+
"sint32",
|
|
17
|
+
"sint64",
|
|
18
|
+
"fixed32",
|
|
19
|
+
"fixed64",
|
|
20
|
+
"sfixed32",
|
|
21
|
+
"sfixed64",
|
|
22
|
+
"bool",
|
|
23
|
+
"string",
|
|
24
|
+
"bytes",
|
|
25
|
+
];
|
|
23
26
|
/**
|
|
24
27
|
* The serializer class serialize and deserialize data using
|
|
25
28
|
* protocol buffers.
|
|
@@ -58,7 +61,7 @@ function copyValue(value) {
|
|
|
58
61
|
class Serializer {
|
|
59
62
|
constructor(types, opts) {
|
|
60
63
|
/**
|
|
61
|
-
* Preformat bytes for
|
|
64
|
+
* Preformat bytes for base64url, base58 or hex string
|
|
62
65
|
*/
|
|
63
66
|
this.bytesConversion = true;
|
|
64
67
|
this.types = types;
|
|
@@ -68,6 +71,80 @@ class Serializer {
|
|
|
68
71
|
if (opts && typeof opts.bytesConversion !== "undefined")
|
|
69
72
|
this.bytesConversion = opts.bytesConversion;
|
|
70
73
|
}
|
|
74
|
+
btypeDecode(valueBtypeEncoded, protobufType) {
|
|
75
|
+
const valueBtypeDecoded = {};
|
|
76
|
+
Object.keys(protobufType.fields).forEach((fieldName) => {
|
|
77
|
+
const { options, name, type, rule } = protobufType.fields[fieldName];
|
|
78
|
+
if (!valueBtypeEncoded[name])
|
|
79
|
+
return;
|
|
80
|
+
const typeField = { type };
|
|
81
|
+
if (options) {
|
|
82
|
+
if (options[OP_BYTES_1])
|
|
83
|
+
typeField.btype = options[OP_BYTES_1];
|
|
84
|
+
else if (options[OP_BYTES_2])
|
|
85
|
+
typeField.btype = options[OP_BYTES_2];
|
|
86
|
+
}
|
|
87
|
+
// arrays
|
|
88
|
+
if (rule === "repeated") {
|
|
89
|
+
valueBtypeDecoded[name] = valueBtypeEncoded[name].map((itemEncoded) => {
|
|
90
|
+
// custom objects
|
|
91
|
+
if (!nativeTypes.includes(type)) {
|
|
92
|
+
const protoBuf = this.root.lookupType(type);
|
|
93
|
+
return this.btypeDecode(itemEncoded, protoBuf);
|
|
94
|
+
}
|
|
95
|
+
// native types
|
|
96
|
+
return (0, utils_1.btypeDecodeValue)(itemEncoded, typeField);
|
|
97
|
+
});
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// custom objects
|
|
101
|
+
if (!nativeTypes.includes(type)) {
|
|
102
|
+
const protoBuf = this.root.lookupType(type);
|
|
103
|
+
valueBtypeDecoded[name] = this.btypeDecode(valueBtypeEncoded[name], protoBuf);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// native types
|
|
107
|
+
valueBtypeDecoded[name] = (0, utils_1.btypeDecodeValue)(valueBtypeEncoded[name], typeField);
|
|
108
|
+
});
|
|
109
|
+
return valueBtypeDecoded;
|
|
110
|
+
}
|
|
111
|
+
btypeEncode(valueBtypeDecoded, protobufType) {
|
|
112
|
+
const valueBtypeEncoded = {};
|
|
113
|
+
Object.keys(protobufType.fields).forEach((fieldName) => {
|
|
114
|
+
const { options, name, type, rule } = protobufType.fields[fieldName];
|
|
115
|
+
if (!valueBtypeDecoded[name])
|
|
116
|
+
return;
|
|
117
|
+
const typeField = { type };
|
|
118
|
+
if (options) {
|
|
119
|
+
if (options[OP_BYTES_1])
|
|
120
|
+
typeField.btype = options[OP_BYTES_1];
|
|
121
|
+
else if (options[OP_BYTES_2])
|
|
122
|
+
typeField.btype = options[OP_BYTES_2];
|
|
123
|
+
}
|
|
124
|
+
// arrays
|
|
125
|
+
if (rule === "repeated") {
|
|
126
|
+
valueBtypeEncoded[name] = valueBtypeDecoded[name].map((itemDecoded) => {
|
|
127
|
+
// custom objects
|
|
128
|
+
if (!nativeTypes.includes(type)) {
|
|
129
|
+
const protoBuf = this.root.lookupType(type);
|
|
130
|
+
return this.btypeEncode(itemDecoded, protoBuf);
|
|
131
|
+
}
|
|
132
|
+
// native types
|
|
133
|
+
return (0, utils_1.btypeEncodeValue)(itemDecoded, typeField);
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// custom objects
|
|
138
|
+
if (!nativeTypes.includes(type)) {
|
|
139
|
+
const protoBuf = this.root.lookupType(type);
|
|
140
|
+
valueBtypeEncoded[name] = this.btypeEncode(valueBtypeDecoded[name], protoBuf);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// native types
|
|
144
|
+
valueBtypeEncoded[name] = (0, utils_1.btypeEncodeValue)(valueBtypeDecoded[name], typeField);
|
|
145
|
+
});
|
|
146
|
+
return valueBtypeEncoded;
|
|
147
|
+
}
|
|
71
148
|
/**
|
|
72
149
|
* Function to encode a type using the protobuffer definitions
|
|
73
150
|
* It also prepares the bytes for special cases (base58, hex string)
|
|
@@ -80,38 +157,7 @@ class Serializer {
|
|
|
80
157
|
? this.bytesConversion
|
|
81
158
|
: opts.bytesConversion;
|
|
82
159
|
if (bytesConversion) {
|
|
83
|
-
|
|
84
|
-
Object.keys(protobufType.fields).forEach((fieldName) => {
|
|
85
|
-
const { options, name, type } = protobufType.fields[fieldName];
|
|
86
|
-
// No byte conversion
|
|
87
|
-
if (type !== "bytes") {
|
|
88
|
-
object[name] = copyValue(valueDecoded[name]);
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
// Default byte conversion
|
|
92
|
-
if (!options || !options[OP_BYTES]) {
|
|
93
|
-
object[name] = (0, utils_1.decodeBase64)(valueDecoded[name]);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Specific byte conversion
|
|
97
|
-
switch (options[OP_BYTES]) {
|
|
98
|
-
case "BASE58":
|
|
99
|
-
case "CONTRACT_ID":
|
|
100
|
-
case "ADDRESS":
|
|
101
|
-
object[name] = (0, utils_1.decodeBase58)(valueDecoded[name]);
|
|
102
|
-
break;
|
|
103
|
-
case "BASE64":
|
|
104
|
-
object[name] = (0, utils_1.decodeBase64)(valueDecoded[name]);
|
|
105
|
-
break;
|
|
106
|
-
case "HEX":
|
|
107
|
-
case "BLOCK_ID":
|
|
108
|
-
case "TRANSACTION_ID":
|
|
109
|
-
object[name] = (0, utils_1.toUint8Array)(valueDecoded[name].replace("0x", ""));
|
|
110
|
-
break;
|
|
111
|
-
default:
|
|
112
|
-
throw new Error(`unknown koinos_byte_type ${options[OP_BYTES]}`);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
160
|
+
object = this.btypeDecode(valueDecoded, protobufType);
|
|
115
161
|
}
|
|
116
162
|
else {
|
|
117
163
|
object = valueDecoded;
|
|
@@ -127,46 +173,20 @@ class Serializer {
|
|
|
127
173
|
*/
|
|
128
174
|
async deserialize(valueEncoded, typeName, opts) {
|
|
129
175
|
const valueBuffer = typeof valueEncoded === "string"
|
|
130
|
-
? (0, utils_1.
|
|
176
|
+
? (0, utils_1.decodeBase64url)(valueEncoded)
|
|
131
177
|
: valueEncoded;
|
|
132
178
|
const protobufType = this.defaultType || this.root.lookupType(typeName);
|
|
133
179
|
const message = protobufType.decode(valueBuffer);
|
|
134
|
-
const object = protobufType.toObject(message, {
|
|
180
|
+
const object = protobufType.toObject(message, {
|
|
181
|
+
longs: String,
|
|
182
|
+
defaults: true,
|
|
183
|
+
});
|
|
135
184
|
const bytesConversion = (opts === null || opts === void 0 ? void 0 : opts.bytesConversion) === undefined
|
|
136
185
|
? this.bytesConversion
|
|
137
186
|
: opts.bytesConversion;
|
|
138
|
-
if (
|
|
139
|
-
return object;
|
|
140
|
-
|
|
141
|
-
Object.keys(protobufType.fields).forEach((fieldName) => {
|
|
142
|
-
const { options, name, type } = protobufType.fields[fieldName];
|
|
143
|
-
// No byte conversion
|
|
144
|
-
if (type !== "bytes")
|
|
145
|
-
return;
|
|
146
|
-
// Default byte conversion
|
|
147
|
-
if (!options || !options[OP_BYTES]) {
|
|
148
|
-
object[name] = (0, utils_1.encodeBase64)(object[name]);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
// Specific byte conversion
|
|
152
|
-
switch (options[OP_BYTES]) {
|
|
153
|
-
case "BASE58":
|
|
154
|
-
case "CONTRACT_ID":
|
|
155
|
-
case "ADDRESS":
|
|
156
|
-
object[name] = (0, utils_1.encodeBase58)(object[name]);
|
|
157
|
-
break;
|
|
158
|
-
case "BASE64":
|
|
159
|
-
object[name] = (0, utils_1.encodeBase64)(object[name]);
|
|
160
|
-
break;
|
|
161
|
-
case "HEX":
|
|
162
|
-
case "BLOCK_ID":
|
|
163
|
-
case "TRANSACTION_ID":
|
|
164
|
-
object[name] = `0x${(0, utils_1.toHexString)(object[name])}`;
|
|
165
|
-
break;
|
|
166
|
-
default:
|
|
167
|
-
throw new Error(`unknown koinos_byte_type ${options[OP_BYTES]}`);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
187
|
+
if (bytesConversion) {
|
|
188
|
+
return this.btypeEncode(object, protobufType);
|
|
189
|
+
}
|
|
170
190
|
return object;
|
|
171
191
|
}
|
|
172
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../../src/Serializer.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,4CAA0D;
|
|
1
|
+
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../../src/Serializer.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,4CAA0D;AAE1D,mCAA8E;AAE9E,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,MAAM,WAAW,GAAG;IAClB,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;CACR,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAa,UAAU;IAsBrB,YACE,KAAiB,EACjB,IAaC;QApBH;;WAEG;QACH,oBAAe,GAAG,IAAI,CAAC;QAmBrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,YAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAChD,CAAC;IAED,WAAW,CACT,iBAAsD,EACtD,YAAkB;QAElB,MAAM,iBAAiB,GAAG,EAA6B,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAErC,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,CAAC;YACtC,IAAI,OAAO,EAAE;gBACX,IAAI,OAAO,CAAC,UAAU,CAAC;oBACrB,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAW,CAAC;qBAC7C,IAAI,OAAO,CAAC,UAAU,CAAC;oBAC1B,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAW,CAAC;aACnD;YAED,SAAS;YACT,IAAI,IAAI,KAAK,UAAU,EAAE;gBACvB,iBAAiB,CAAC,IAAI,CAAC,GAAI,iBAAiB,CAAC,IAAI,CAAe,CAAC,GAAG,CAClE,CAAC,WAAW,EAAE,EAAE;oBACd,iBAAiB;oBACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC5C,OAAO,IAAI,CAAC,WAAW,CACrB,WAAsC,EACtC,QAAQ,CACT,CAAC;qBACH;oBACD,eAAe;oBACf,OAAO,IAAA,wBAAgB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAClD,CAAC,CACF,CAAC;gBACF,OAAO;aACR;YAED,iBAAiB;YACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5C,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CACxC,iBAAiB,CAAC,IAAI,CAA4B,EAClD,QAAQ,CACT,CAAC;gBACF,OAAO;aACR;YAED,eAAe;YACf,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAgB,EACxC,iBAAiB,CAAC,IAAI,CAAC,EACvB,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,WAAW,CACT,iBAAsD,EACtD,YAAkB;QAElB,MAAM,iBAAiB,GAAG,EAA6B,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAErC,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,CAAC;YACtC,IAAI,OAAO,EAAE;gBACX,IAAI,OAAO,CAAC,UAAU,CAAC;oBACrB,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAW,CAAC;qBAC7C,IAAI,OAAO,CAAC,UAAU,CAAC;oBAC1B,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAW,CAAC;aACnD;YAED,SAAS;YACT,IAAI,IAAI,KAAK,UAAU,EAAE;gBACvB,iBAAiB,CAAC,IAAI,CAAC,GAAI,iBAAiB,CAAC,IAAI,CAAe,CAAC,GAAG,CAClE,CAAC,WAAW,EAAE,EAAE;oBACd,iBAAiB;oBACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC5C,OAAO,IAAI,CAAC,WAAW,CACrB,WAAsC,EACtC,QAAQ,CACT,CAAC;qBACH;oBACD,eAAe;oBACf,OAAO,IAAA,wBAAgB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAClD,CAAC,CACF,CAAC;gBACF,OAAO;aACR;YAED,iBAAiB;YACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5C,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CACxC,iBAAiB,CAAC,IAAI,CAA4B,EAClD,QAAQ,CACT,CAAC;gBACF,OAAO;aACR;YAED,eAAe;YACf,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAgB,EACxC,iBAAiB,CAAC,IAAI,CAAC,EACvB,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CACb,YAAqC,EACrC,QAAiB,EACjB,IAAoC;QAEpC,MAAM,YAAY,GAChB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAkB,CAAC,CAAC;QAC/D,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,MAAM,eAAe,GACnB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,MAAK,SAAS;YACjC,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3B,IAAI,eAAe,EAAE;YACnB,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;SACvD;aAAM;YACL,MAAM,GAAG,YAAY,CAAC;SACvB;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,YAAiC,EACjC,QAAiB,EACjB,IAAoC;QAEpC,MAAM,WAAW,GACf,OAAO,YAAY,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAA,uBAAe,EAAC,YAAY,CAAC;YAC/B,CAAC,CAAC,YAAY,CAAC;QACnB,MAAM,YAAY,GAChB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAkB,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC5C,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,eAAe,GACnB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,MAAK,SAAS;YACjC,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3B,IAAI,eAAe,EAAE;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAM,CAAC;SACpD;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;CACF;AA1ND,gCA0NC;AAED,kBAAe,UAAU,CAAC"}
|