@witnet/sdk 1.0.4 → 1.0.5

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.
Files changed (211) hide show
  1. package/.env_witnet +6 -6
  2. package/LICENSE +21 -21
  3. package/README.md +103 -103
  4. package/dist/package.json +3 -4
  5. package/dist/src/bin/helpers.js +1 -1
  6. package/dist/src/index.js +1 -1
  7. package/dist/src/lib/crypto/account.d.ts +3 -1
  8. package/dist/src/lib/crypto/account.d.ts.map +1 -1
  9. package/dist/src/lib/crypto/account.js +7 -1
  10. package/dist/src/lib/crypto/coinbase.js +1 -1
  11. package/dist/src/lib/crypto/index.js +1 -1
  12. package/dist/src/lib/crypto/interfaces.d.ts +2 -0
  13. package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
  14. package/dist/src/lib/crypto/interfaces.js +1 -1
  15. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
  16. package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
  17. package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
  18. package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
  19. package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
  20. package/dist/src/lib/crypto/payloads.js +12 -1
  21. package/dist/src/lib/crypto/signer.d.ts +1 -0
  22. package/dist/src/lib/crypto/signer.d.ts.map +1 -1
  23. package/dist/src/lib/crypto/signer.js +18 -1
  24. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
  25. package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
  26. package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
  27. package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
  28. package/dist/src/lib/crypto/transmitters.js +4 -4
  29. package/dist/src/lib/crypto/types.d.ts.map +1 -1
  30. package/dist/src/lib/crypto/types.js +2 -1
  31. package/dist/src/lib/crypto/utils.js +1 -1
  32. package/dist/src/lib/crypto/wallet.d.ts +3 -1
  33. package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
  34. package/dist/src/lib/crypto/wallet.js +10 -1
  35. package/dist/src/lib/index.js +1 -1
  36. package/dist/src/lib/radon/ccdr/eth.js +1 -1
  37. package/dist/src/lib/radon/ccdr/index.js +1 -1
  38. package/dist/src/lib/radon/ccdr/wit.js +1 -1
  39. package/dist/src/lib/radon/filters.js +1 -1
  40. package/dist/src/lib/radon/index.js +1 -1
  41. package/dist/src/lib/radon/reducers.js +1 -1
  42. package/dist/src/lib/radon/types.js +1 -1
  43. package/dist/src/lib/radon/utils.js +1 -1
  44. package/dist/src/lib/rpc/index.js +1 -1
  45. package/dist/src/lib/rpc/nodes.js +1 -1
  46. package/dist/src/lib/rpc/provider.js +1 -1
  47. package/dist/src/lib/rpc/types.d.ts +6 -4
  48. package/dist/src/lib/rpc/types.d.ts.map +1 -1
  49. package/dist/src/lib/rpc/types.js +1 -1
  50. package/dist/src/lib/types.d.ts +0 -1
  51. package/dist/src/lib/types.d.ts.map +1 -1
  52. package/dist/src/lib/types.js +1 -1
  53. package/dist/src/lib/utils.js +1 -1
  54. package/dist/witnet/assets/index.js +1 -1
  55. package/dist/witnet/assets/modals/index.js +1 -1
  56. package/dist/witnet/assets/modals/web3/eth.js +1 -1
  57. package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
  58. package/dist/witnet/assets/modals/web3/wit.js +1 -1
  59. package/dist/witnet/assets/requests.js +1 -1
  60. package/package.json +3 -4
  61. package/src/bin/cli/history.js +31 -31
  62. package/src/bin/cli/inspect.js +405 -405
  63. package/src/bin/cli/network.js +594 -594
  64. package/src/bin/cli/nodes.js +364 -364
  65. package/src/bin/cli/radon.js +817 -815
  66. package/src/bin/cli/wallet.js +1121 -1117
  67. package/src/bin/helpers.js +840 -840
  68. package/src/bin/postinstall.js +9 -9
  69. package/src/bin/toolkit.js +295 -295
  70. package/witnet/assets/_index.js +8 -8
  71. package/witnet/assets/_requests.js +25 -25
  72. package/witnet/assets/_sources.js +36 -36
  73. package/witnet/assets/_templates.js +36 -36
  74. package/witnet/assets/index.js +4 -4
  75. package/witnet/assets/modals/index.js +9 -9
  76. package/witnet/assets/modals/web3/eth.js +29 -29
  77. package/witnet/assets/modals/web3/ipfs.js +19 -19
  78. package/witnet/assets/modals/web3/wit.js +21 -21
  79. package/witnet/assets/requests.js +95 -95
  80. package/dist/bin/helpers.d.ts +0 -88
  81. package/dist/bin/helpers.d.ts.map +0 -1
  82. package/dist/bin/helpers.js +0 -866
  83. package/dist/index.d.ts +0 -4
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js +0 -42
  86. package/dist/lib/crypto/account.d.ts +0 -18
  87. package/dist/lib/crypto/account.d.ts.map +0 -1
  88. package/dist/lib/crypto/account.js +0 -152
  89. package/dist/lib/crypto/coinbase.d.ts +0 -9
  90. package/dist/lib/crypto/coinbase.d.ts.map +0 -1
  91. package/dist/lib/crypto/coinbase.js +0 -39
  92. package/dist/lib/crypto/index.d.ts +0 -7
  93. package/dist/lib/crypto/index.d.ts.map +0 -1
  94. package/dist/lib/crypto/index.js +0 -28
  95. package/dist/lib/crypto/interfaces.d.ts +0 -80
  96. package/dist/lib/crypto/interfaces.d.ts.map +0 -1
  97. package/dist/lib/crypto/interfaces.js +0 -3
  98. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +0 -47
  99. package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +0 -1
  100. package/dist/lib/crypto/payloads/DataRequestPayload.js +0 -384
  101. package/dist/lib/crypto/payloads/StakePayload.d.ts +0 -27
  102. package/dist/lib/crypto/payloads/StakePayload.d.ts.map +0 -1
  103. package/dist/lib/crypto/payloads/StakePayload.js +0 -184
  104. package/dist/lib/crypto/payloads/UnstakePayload.d.ts +0 -35
  105. package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +0 -1
  106. package/dist/lib/crypto/payloads/UnstakePayload.js +0 -244
  107. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +0 -24
  108. package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +0 -1
  109. package/dist/lib/crypto/payloads/ValueTransferPayload.js +0 -182
  110. package/dist/lib/crypto/payloads.d.ts +0 -54
  111. package/dist/lib/crypto/payloads.d.ts.map +0 -1
  112. package/dist/lib/crypto/payloads.js +0 -224
  113. package/dist/lib/crypto/signer.d.ts +0 -26
  114. package/dist/lib/crypto/signer.d.ts.map +0 -1
  115. package/dist/lib/crypto/signer.js +0 -299
  116. package/dist/lib/crypto/transmitters/DataRequests.d.ts +0 -14
  117. package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +0 -1
  118. package/dist/lib/crypto/transmitters/DataRequests.js +0 -62
  119. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +0 -11
  120. package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +0 -1
  121. package/dist/lib/crypto/transmitters/StakeDeposits.js +0 -48
  122. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +0 -17
  123. package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +0 -1
  124. package/dist/lib/crypto/transmitters/StakeWithdrawals.js +0 -115
  125. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +0 -10
  126. package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +0 -1
  127. package/dist/lib/crypto/transmitters/ValueTransfers.js +0 -47
  128. package/dist/lib/crypto/transmitters.d.ts +0 -46
  129. package/dist/lib/crypto/transmitters.d.ts.map +0 -1
  130. package/dist/lib/crypto/transmitters.js +0 -506
  131. package/dist/lib/crypto/types.d.ts +0 -127
  132. package/dist/lib/crypto/types.d.ts.map +0 -1
  133. package/dist/lib/crypto/types.js +0 -261
  134. package/dist/lib/crypto/utils.d.ts +0 -10
  135. package/dist/lib/crypto/utils.d.ts.map +0 -1
  136. package/dist/lib/crypto/utils.js +0 -97
  137. package/dist/lib/crypto/wallet.d.ts +0 -26
  138. package/dist/lib/crypto/wallet.d.ts.map +0 -1
  139. package/dist/lib/crypto/wallet.js +0 -327
  140. package/dist/lib/helpers.d.ts +0 -90
  141. package/dist/lib/helpers.d.ts.map +0 -1
  142. package/dist/lib/helpers.js +0 -1031
  143. package/dist/lib/index.d.ts +0 -5
  144. package/dist/lib/index.d.ts.map +0 -1
  145. package/dist/lib/index.js +0 -21
  146. package/dist/lib/radon/artifacts.d.ts +0 -55
  147. package/dist/lib/radon/artifacts.d.ts.map +0 -1
  148. package/dist/lib/radon/artifacts.js +0 -347
  149. package/dist/lib/radon/ccdr/eth.d.ts +0 -100
  150. package/dist/lib/radon/ccdr/eth.d.ts.map +0 -1
  151. package/dist/lib/radon/ccdr/eth.js +0 -237
  152. package/dist/lib/radon/ccdr/index.d.ts +0 -34
  153. package/dist/lib/radon/ccdr/index.d.ts.map +0 -1
  154. package/dist/lib/radon/ccdr/index.js +0 -63
  155. package/dist/lib/radon/ccdr/wit.d.ts +0 -29
  156. package/dist/lib/radon/ccdr/wit.d.ts.map +0 -1
  157. package/dist/lib/radon/ccdr/wit.js +0 -60
  158. package/dist/lib/radon/filters.d.ts +0 -14
  159. package/dist/lib/radon/filters.d.ts.map +0 -1
  160. package/dist/lib/radon/filters.js +0 -47
  161. package/dist/lib/radon/index.d.ts +0 -36
  162. package/dist/lib/radon/index.d.ts.map +0 -1
  163. package/dist/lib/radon/index.js +0 -154
  164. package/dist/lib/radon/reducers.d.ts +0 -29
  165. package/dist/lib/radon/reducers.d.ts.map +0 -1
  166. package/dist/lib/radon/reducers.js +0 -101
  167. package/dist/lib/radon/retrievals.d.ts +0 -120
  168. package/dist/lib/radon/retrievals.d.ts.map +0 -1
  169. package/dist/lib/radon/retrievals.js +0 -358
  170. package/dist/lib/radon/sources.d.ts +0 -102
  171. package/dist/lib/radon/sources.d.ts.map +0 -1
  172. package/dist/lib/radon/sources.js +0 -294
  173. package/dist/lib/radon/types.d.ts +0 -521
  174. package/dist/lib/radon/types.d.ts.map +0 -1
  175. package/dist/lib/radon/types.js +0 -1066
  176. package/dist/lib/radon/utils.d.ts +0 -55
  177. package/dist/lib/radon/utils.d.ts.map +0 -1
  178. package/dist/lib/radon/utils.js +0 -181
  179. package/dist/lib/rpc/farm.d.ts +0 -66
  180. package/dist/lib/rpc/farm.d.ts.map +0 -1
  181. package/dist/lib/rpc/farm.js +0 -808
  182. package/dist/lib/rpc/index.d.ts +0 -3
  183. package/dist/lib/rpc/index.d.ts.map +0 -1
  184. package/dist/lib/rpc/index.js +0 -19
  185. package/dist/lib/rpc/node.d.ts +0 -38
  186. package/dist/lib/rpc/node.d.ts.map +0 -1
  187. package/dist/lib/rpc/node.js +0 -335
  188. package/dist/lib/rpc/nodes.d.ts +0 -40
  189. package/dist/lib/rpc/nodes.d.ts.map +0 -1
  190. package/dist/lib/rpc/nodes.js +0 -531
  191. package/dist/lib/rpc/provider.d.ts +0 -72
  192. package/dist/lib/rpc/provider.d.ts.map +0 -1
  193. package/dist/lib/rpc/provider.js +0 -402
  194. package/dist/lib/rpc/reporter.d.ts +0 -18
  195. package/dist/lib/rpc/reporter.d.ts.map +0 -1
  196. package/dist/lib/rpc/reporter.js +0 -99
  197. package/dist/lib/rpc/types.d.ts +0 -396
  198. package/dist/lib/rpc/types.d.ts.map +0 -1
  199. package/dist/lib/rpc/types.js +0 -81
  200. package/dist/lib/rpc/wallet.d.ts +0 -72
  201. package/dist/lib/rpc/wallet.d.ts.map +0 -1
  202. package/dist/lib/rpc/wallet.js +0 -41
  203. package/dist/lib/types.d.ts +0 -19
  204. package/dist/lib/types.d.ts.map +0 -1
  205. package/dist/lib/types.js +0 -7
  206. package/dist/lib/utils.d.ts +0 -5
  207. package/dist/lib/utils.d.ts.map +0 -1
  208. package/dist/lib/utils.js +0 -51
  209. package/dist/src/lib/rpc/reporter.d.ts +0 -17
  210. package/dist/src/lib/rpc/reporter.d.ts.map +0 -1
  211. package/dist/src/lib/rpc/reporter.js +0 -27
@@ -1,5 +0,0 @@
1
- export * from "./crypto";
2
- export * from "./radon";
3
- export * from "./rpc";
4
- export * from "./types";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA"}
package/dist/lib/index.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./crypto"), exports);
18
- __exportStar(require("./radon"), exports);
19
- __exportStar(require("./rpc"), exports);
20
- __exportStar(require("./types"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0I7QUFDeEIsMENBQXVCO0FBQ3ZCLHdDQUFxQjtBQUNyQiwwQ0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jcnlwdG9cIlxuZXhwb3J0ICogZnJvbSBcIi4vcmFkb25cIlxuZXhwb3J0ICogZnJvbSBcIi4vcnBjXCJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCJcbiJdfQ==
@@ -1,55 +0,0 @@
1
- import { RadonReducer } from "./reducers";
2
- import { RadonCCDR, RadonRetrieval } from "./retrievals";
3
- export type Args = string[] | string[][];
4
- export interface Specs {
5
- retrieve: RadonRetrieval[];
6
- aggregate: RadonReducer;
7
- tally: RadonReducer;
8
- }
9
- declare class Class {
10
- readonly retrieve: RadonRetrieval[];
11
- readonly aggregate: RadonReducer;
12
- readonly tally: RadonReducer;
13
- constructor(specs: Specs);
14
- opsCount(): number;
15
- }
16
- export declare class RadonRequest extends Class {
17
- /**
18
- * Decodes a RadonRequest artifact out from a Protobuf-serialized bytecode.
19
- * @param bytecode Radon request bytecode.
20
- * @returns RadonRequest object.
21
- */
22
- static fromBytecode(bytecode: any): RadonRequest;
23
- static fromCCDR(ccdr: RadonCCDR, providers: string[], args: string[], tally?: RadonReducer): RadonRequest;
24
- constructor(specs: {
25
- retrieve: RadonRetrieval | RadonRetrieval[];
26
- aggregate?: RadonReducer;
27
- tally?: RadonReducer;
28
- });
29
- protected _encode(): Buffer;
30
- execDryRun(): Promise<string>;
31
- radHash(): string;
32
- toBytecode(): string;
33
- toJSON(humanize?: boolean): any;
34
- toProtobuf(): any;
35
- weight(): number;
36
- }
37
- export declare class RadonTemplate extends Class {
38
- readonly argsCount: number;
39
- readonly homogeneous: boolean;
40
- readonly samples?: Record<string, Args>;
41
- static fromCCDR(specs: {
42
- ccdr: RadonCCDR;
43
- providers: string[];
44
- tally?: RadonReducer;
45
- }, samples?: Record<string, Args>): RadonTemplate;
46
- constructor(specs: {
47
- retrieve: RadonRetrieval | RadonRetrieval[];
48
- aggregate?: RadonReducer;
49
- tally?: RadonReducer;
50
- }, samples?: Record<string, Args>);
51
- buildRequest(...args: string[][]): RadonRequest;
52
- buildRequestModal(...args: string[]): RadonRequest;
53
- }
54
- export {};
55
- //# sourceMappingURL=artifacts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/radon/artifacts.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAQ,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAKxD,MAAM,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;AAEzC,MAAM,WAAW,KAAK;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,cAAM,KAAK;IAEP,SAAgB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3C,SAAgB,SAAS,EAAE,YAAY,CAAC;IACxC,SAAgB,KAAK,EAAE,YAAY,CAAC;gBAExB,KAAK,EAAE,KAAK;IAgBjB,QAAQ,IAAI,MAAM;CAK5B;AAED,qBAAa,YAAa,SAAQ,KAAK;IAEnC;;;;OAIG;WACW,YAAY,CAAC,QAAQ,EAAE,GAAG;WAsC1B,QAAQ,CACd,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,CAAC,EAAE,YAAY,GACrB,YAAY;gBAaP,KAAK,EAAE;QACf,QAAQ,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;QAC5C,SAAS,CAAC,EAAE,YAAY,CAAC;QACzB,KAAK,CAAC,EAAE,YAAY,CAAC;KACxB;IAaD,SAAS,CAAC,OAAO,IAAI,MAAM;IAWd,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,OAAO,IAAI,MAAM;IAIjB,UAAU,IAAI,MAAM;IAIpB,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,GAAG;IAS/B,UAAU,IAAI,GAAG;IASjB,MAAM,IAAI,MAAM;CAG1B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACpC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;WAEjC,QAAQ,CACd,KAAK,EAAE;QACH,IAAI,EAAE,SAAS,CAAC;QAChB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,YAAY,CAAA;KACvB,EACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC/B,aAAa;gBA0BhB,KAAK,EAAE;QACH,QAAQ,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;QAC5C,SAAS,CAAC,EAAE,YAAY,CAAC;QACzB,KAAK,CAAC,EAAE,YAAY,CAAC;KACxB,EACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IAqC3B,YAAY,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY;IAkB/C,iBAAiB,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY;CAc5D"}
@@ -1,347 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
- return new (P || (P = Promise))(function (resolve, reject) {
31
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
- step((generator = generator.apply(thisArg, _arguments || [])).next());
35
- });
36
- };
37
- var __generator = (this && this.__generator) || function (thisArg, body) {
38
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
39
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
- function verb(n) { return function (v) { return step([n, v]); }; }
41
- function step(op) {
42
- if (f) throw new TypeError("Generator is already executing.");
43
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
- if (y = 0, t) op = [op[0] & 2, t.value];
46
- switch (op[0]) {
47
- case 0: case 1: t = op; break;
48
- case 4: _.label++; return { value: op[1], done: false };
49
- case 5: _.label++; y = op[1]; op = [0]; continue;
50
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
- default:
52
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
- if (t[2]) _.ops.pop();
57
- _.trys.pop(); continue;
58
- }
59
- op = body.call(thisArg, _);
60
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
- }
63
- };
64
- var __read = (this && this.__read) || function (o, n) {
65
- var m = typeof Symbol === "function" && o[Symbol.iterator];
66
- if (!m) return o;
67
- var i = m.call(o), r, ar = [], e;
68
- try {
69
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
70
- }
71
- catch (error) { e = { error: error }; }
72
- finally {
73
- try {
74
- if (r && !r.done && (m = i["return"])) m.call(i);
75
- }
76
- finally { if (e) throw e.error; }
77
- }
78
- return ar;
79
- };
80
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
81
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
82
- if (ar || !(i in from)) {
83
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
84
- ar[i] = from[i];
85
- }
86
- }
87
- return to.concat(ar || Array.prototype.slice.call(from));
88
- };
89
- Object.defineProperty(exports, "__esModule", { value: true });
90
- exports.RadonTemplate = exports.RadonRequest = void 0;
91
- var cbor_1 = require("cbor");
92
- var helpers_1 = require("../../bin/helpers");
93
- var utils_1 = require("../crypto/utils");
94
- var utils_2 = require("./utils");
95
- var filters_1 = require("./filters");
96
- var reducers_1 = require("./reducers");
97
- var retrievals_1 = require("./retrievals");
98
- var protoBuf = require("protobufjs").Root.fromJSON(require("../../../witnet/witnet.proto.json"));
99
- var RADRequest = protoBuf.lookupType("RADRequest");
100
- var Class = /** @class */ (function () {
101
- function Class(specs) {
102
- var _a;
103
- if (!specs.retrieve || !Array.isArray(specs.retrieve) || specs.retrieve.length == 0) {
104
- throw TypeError("RadonArtifact: cannot build if no retrievals are passed");
105
- }
106
- (_a = specs.retrieve) === null || _a === void 0 ? void 0 : _a.forEach(function (retrieval, index) {
107
- if (retrieval === undefined) {
108
- throw TypeError("RadonArtifact: retrieval #".concat(index, " is undefined"));
109
- }
110
- else if (!(retrieval instanceof retrievals_1.RadonRetrieval)) {
111
- throw TypeError("RadonArtifact: retrieval #".concat(index, ": invalid type"));
112
- }
113
- });
114
- this.retrieve = specs.retrieve;
115
- this.aggregate = specs.aggregate;
116
- this.tally = specs.tally;
117
- }
118
- Class.prototype.opsCount = function () {
119
- var _a, _b, _c;
120
- return (((_a = this.retrieve) === null || _a === void 0 ? void 0 : _a.map(function (retrieval) { return retrieval.opsCount(); }).reduce(function (sum, a) { return sum + a; })) || 0)
121
- + ((_b = this.aggregate) === null || _b === void 0 ? void 0 : _b.opsCount())
122
- + ((_c = this.tally) === null || _c === void 0 ? void 0 : _c.opsCount());
123
- };
124
- return Class;
125
- }());
126
- var RadonRequest = /** @class */ (function (_super) {
127
- __extends(RadonRequest, _super);
128
- function RadonRequest(specs) {
129
- var _this = this;
130
- var retrieve = Array.isArray(specs.retrieve) ? specs.retrieve : [specs.retrieve];
131
- _this = _super.call(this, {
132
- retrieve: retrieve,
133
- aggregate: (specs === null || specs === void 0 ? void 0 : specs.aggregate) || (0, reducers_1.Mode)(),
134
- tally: (specs === null || specs === void 0 ? void 0 : specs.tally) || (0, reducers_1.Mode)(),
135
- }) || this;
136
- var argsCount = retrieve.map(function (retrieval) { return retrieval.argsCount; }).reduce(function (prev, curr) { return prev + curr; });
137
- if (argsCount > 0) {
138
- throw TypeError("RadonRequest: parameterized retrievals were passed");
139
- }
140
- return _this;
141
- }
142
- /**
143
- * Decodes a RadonRequest artifact out from a Protobuf-serialized bytecode.
144
- * @param bytecode Radon request bytecode.
145
- * @returns RadonRequest object.
146
- */
147
- RadonRequest.fromBytecode = function (bytecode) {
148
- var _a, _b;
149
- var buffer;
150
- if ((0, helpers_1.isHexString)(bytecode)) {
151
- buffer = (0, helpers_1.fromHexString)(bytecode);
152
- }
153
- else if (bytecode instanceof Uint8Array) {
154
- buffer = Buffer.from(bytecode);
155
- }
156
- else if (bytecode instanceof Buffer) {
157
- buffer = bytecode;
158
- }
159
- else {
160
- throw new TypeError("RadonRequest: unsupported bytecode format: ".concat(bytecode));
161
- }
162
- var obj = RADRequest.decode(buffer);
163
- var retrieve = obj.retrieve.map(function (retrieval) {
164
- var specs = {};
165
- if (retrieval === null || retrieval === void 0 ? void 0 : retrieval.url) {
166
- specs.url = retrieval.url;
167
- }
168
- if (retrieval === null || retrieval === void 0 ? void 0 : retrieval.headers) {
169
- specs.headers = Object.fromEntries(retrieval.headers.map(function (stringPair) { return [
170
- stringPair.left,
171
- stringPair.right
172
- ]; }));
173
- }
174
- if ((retrieval === null || retrieval === void 0 ? void 0 : retrieval.body) && retrieval.body.length > 0) {
175
- specs.body = (0, helpers_1.utf8ArrayToStr)(Object.values(retrieval.body));
176
- }
177
- if (retrieval === null || retrieval === void 0 ? void 0 : retrieval.script)
178
- specs.script = (0, utils_2.parseRadonScript)((0, helpers_1.toHexString)(retrieval.script));
179
- return new retrievals_1.RadonRetrieval(retrieval.kind, specs);
180
- });
181
- var decodeFilter = function (f) {
182
- if ((f === null || f === void 0 ? void 0 : f.args) && f.args.length > 0)
183
- return new filters_1.RadonFilter(f.op, (0, cbor_1.decode)(f.args));
184
- else
185
- return new filters_1.RadonFilter(f.op);
186
- };
187
- return new RadonRequest({
188
- retrieve: retrieve,
189
- aggregate: new reducers_1.RadonReducer(obj.aggregate.reducer, (_a = obj.aggregate.filters) === null || _a === void 0 ? void 0 : _a.map(decodeFilter)),
190
- tally: new reducers_1.RadonReducer(obj.tally.reducer, (_b = obj.tally.filters) === null || _b === void 0 ? void 0 : _b.map(decodeFilter))
191
- });
192
- };
193
- RadonRequest.fromCCDR = function (ccdr, providers, args, tally) {
194
- if (!(ccdr instanceof retrievals_1.RadonCCDR)) {
195
- throw new TypeError("RadonRequest: cannot create from ".concat((ccdr === null || ccdr === void 0 ? void 0 : ccdr.constructor) ? "instance of ".concat(ccdr.constructor.name, ".") : "object: ".concat(ccdr)));
196
- }
197
- var template = RadonTemplate.fromCCDR({ ccdr: ccdr, providers: providers, tally: tally });
198
- return template.buildRequestModal.apply(template, __spreadArray([], __read(args), false));
199
- };
200
- RadonRequest.prototype._encode = function () {
201
- var payload = this.toProtobuf();
202
- var errMsg = RADRequest.verify(payload);
203
- if (errMsg) {
204
- throw Error(errMsg);
205
- }
206
- else {
207
- var message = RADRequest.fromObject(payload);
208
- return RADRequest.encode(message).finish();
209
- }
210
- };
211
- RadonRequest.prototype.execDryRun = function () {
212
- return __awaiter(this, void 0, void 0, function () {
213
- return __generator(this, function (_a) {
214
- switch (_a.label) {
215
- case 0: return [4 /*yield*/, (0, helpers_1.execRadonBytecode)(this.toBytecode(), '--json')];
216
- case 1: return [2 /*return*/, (_a.sent()).trim()];
217
- }
218
- });
219
- });
220
- };
221
- RadonRequest.prototype.radHash = function () {
222
- return (0, helpers_1.toHexString)((0, utils_1.sha256)(this._encode())); //.slice(0, 40)
223
- };
224
- RadonRequest.prototype.toBytecode = function () {
225
- return (0, helpers_1.toHexString)(this._encode()); //encodeRADRequest(this.toProtobuf()), true)
226
- };
227
- RadonRequest.prototype.toJSON = function (humanize) {
228
- return __assign({ retrieve: this.retrieve.map(function (retrieval) { return retrieval.toJSON(humanize); }), aggregate: this.aggregate.toJSON(humanize), tally: this.tally.toJSON(humanize) }, (humanize ? {} : { time_lock: 0 }));
229
- };
230
- RadonRequest.prototype.toProtobuf = function () {
231
- return {
232
- //timeLock: 0,
233
- retrieve: this.retrieve.map(function (retrieval) { return retrieval.toProtobuf(); }),
234
- aggregate: this.aggregate.toProtobuf(),
235
- tally: this.tally.toProtobuf(),
236
- };
237
- };
238
- RadonRequest.prototype.weight = function () {
239
- return this.toBytecode().slice(2).length / 2;
240
- };
241
- return RadonRequest;
242
- }(Class));
243
- exports.RadonRequest = RadonRequest;
244
- var RadonTemplate = /** @class */ (function (_super) {
245
- __extends(RadonTemplate, _super);
246
- function RadonTemplate(specs, samples) {
247
- var _this = this;
248
- var retrieve = Array.isArray(specs.retrieve) ? specs.retrieve : [specs.retrieve];
249
- _this = _super.call(this, {
250
- retrieve: retrieve,
251
- aggregate: (specs === null || specs === void 0 ? void 0 : specs.aggregate) || (0, reducers_1.Mode)(),
252
- tally: (specs === null || specs === void 0 ? void 0 : specs.tally) || (0, reducers_1.Mode)(),
253
- }) || this;
254
- _this.argsCount = retrieve.map(function (retrieval) { return retrieval === null || retrieval === void 0 ? void 0 : retrieval.argsCount; }).reduce(function (prev, curr) { return Math.max(prev, curr); }, 0);
255
- if (_this.argsCount == 0) {
256
- throw TypeError("RadonTemplate: no parameterized retrievals were passed");
257
- }
258
- _this.homogeneous = !retrieve.find(function (retrieval) { return retrieval.argsCount !== _this.argsCount; });
259
- if (samples) {
260
- Object.keys(samples).forEach(function (sample) {
261
- var sampleArgs = Object(samples)[sample];
262
- if (typeof sampleArgs === "string") {
263
- sampleArgs = [sampleArgs];
264
- }
265
- if (sampleArgs.length > 0) {
266
- if (!Array.isArray(sampleArgs[0])) {
267
- Object(samples)[sample] = Array(retrieve.length).fill(sampleArgs);
268
- sampleArgs = Object(samples)[sample];
269
- }
270
- else if ((sampleArgs === null || sampleArgs === void 0 ? void 0 : sampleArgs.length) != retrieve.length) {
271
- throw TypeError("RadonTemplate: arguments mismatch in sample \"".concat(sample, "\": ").concat(sampleArgs === null || sampleArgs === void 0 ? void 0 : sampleArgs.length, " samples given vs. ").concat(retrieve.length, " expected"));
272
- }
273
- sampleArgs === null || sampleArgs === void 0 ? void 0 : sampleArgs.forEach(function (subargs, index) {
274
- if (subargs.length < retrieve[index].argsCount) {
275
- throw TypeError("\u001B[1;33mRadonRequestTemplate: arguments mismatch in test \u001B[1;31m'".concat(sample, "'\u001B[1;33m: \u001B[1;37mRetrieval #").concat(index, "\u001B[1;33m: ").concat(subargs === null || subargs === void 0 ? void 0 : subargs.length, " parameters given vs. ").concat(retrieve[index].argsCount, " expected\u001B[0m"));
276
- }
277
- });
278
- }
279
- });
280
- _this.samples = samples;
281
- }
282
- return _this;
283
- }
284
- RadonTemplate.fromCCDR = function (specs, samples) {
285
- var _a;
286
- var _b;
287
- if (!(specs.ccdr instanceof retrievals_1.RadonCCDR)) {
288
- throw new TypeError("RadonRequest: cannot create from ".concat(((_b = specs.ccdr) === null || _b === void 0 ? void 0 : _b.constructor) ? "instance of ".concat(specs.ccdr.constructor.name, ".") : "from object: ".concat(specs.ccdr)));
289
- }
290
- if (specs.ccdr.argsCount < 2) {
291
- throw TypeError("RadonTemplate.fromCCDR: requires parameterized CCDR.");
292
- }
293
- specs.providers.forEach(function (provider) {
294
- var _a = __read((0, helpers_1.parseURL)(provider), 1), schema = _a[0];
295
- if (!schema.startsWith("http://") && !schema.startsWith("https://")) {
296
- throw TypeError("RadonTemplate.fromCCDR: invalid provider: ".concat(provider));
297
- }
298
- });
299
- return new RadonTemplate({
300
- retrieve: (_a = specs.ccdr).spawnRetrievals.apply(_a, __spreadArray([], __read(specs.providers), false)),
301
- aggregate: (0, reducers_1.Mode)(),
302
- tally: specs.tally || (0, reducers_1.Mode)(),
303
- }, samples);
304
- };
305
- RadonTemplate.prototype.buildRequest = function () {
306
- var args = [];
307
- for (var _i = 0; _i < arguments.length; _i++) {
308
- args[_i] = arguments[_i];
309
- }
310
- var retrieve = [];
311
- if (args.length !== this.retrieve.length) {
312
- throw new TypeError("RadonRequest: mismatching args vectors (".concat(args.length, " != ").concat(this.retrieve.length, "): [").concat(args, "]}"));
313
- }
314
- this.retrieve.forEach(function (retrieval, index) {
315
- if (retrieval.argsCount !== args[index].length) {
316
- throw new TypeError("RadonRequest: mismatching args passed to retrieval #".concat(index + 1, " (").concat(args[index].length, " != ").concat(retrieval.argsCount, "): [").concat(args[index], "]"));
317
- }
318
- retrieve.push(retrieval.foldArgs.apply(retrieval, __spreadArray([], __read(args[index]), false)));
319
- });
320
- return new RadonRequest({
321
- retrieve: retrieve,
322
- aggregate: this.aggregate,
323
- tally: this.tally,
324
- });
325
- };
326
- RadonTemplate.prototype.buildRequestModal = function () {
327
- var args = [];
328
- for (var _i = 0; _i < arguments.length; _i++) {
329
- args[_i] = arguments[_i];
330
- }
331
- var retrieve = [];
332
- this.retrieve.forEach(function (retrieval, index) {
333
- if (retrieval.argsCount !== args.length) {
334
- throw new TypeError("RadonRequest: mismatching args passed to retrieval #".concat(index + 1, " (").concat(args.length, " != ").concat(retrieval.argsCount, "): [").concat(args, "]"));
335
- }
336
- retrieve.push(retrieval.foldArgs.apply(retrieval, __spreadArray([], __read(args), false)));
337
- });
338
- return new RadonRequest({
339
- retrieve: retrieve,
340
- aggregate: this.aggregate,
341
- tally: this.tally,
342
- });
343
- };
344
- return RadonTemplate;
345
- }(Class));
346
- exports.RadonTemplate = RadonTemplate;
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yYWRvbi9hcnRpZmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTJDO0FBRTNDLDZDQU8wQjtBQUUxQix5Q0FBd0M7QUFDeEMsaUNBQTBDO0FBRTFDLHFDQUF1QztBQUN2Qyx1Q0FBK0M7QUFDL0MsMkNBQXdEO0FBRXhELElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUE7QUFDbEcsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQVVwRDtJQU1JLGVBQVksS0FBWTs7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsRixNQUFNLFNBQVMsQ0FBQyx5REFBeUQsQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFDRCxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxVQUFDLFNBQVMsRUFBRSxLQUFLO1lBQ3JDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLFNBQVMsQ0FBQyxvQ0FBNkIsS0FBSyxrQkFBZSxDQUFDLENBQUE7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksMkJBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sU0FBUyxDQUFDLG9DQUE2QixL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QUFTLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksU0FBUyxDQUFDLDhEQUF1RCxLQUFLLEdBQUcsQ0FBQyxlQUFLLElBQUksQ0FBQyxNQUFNLGlCQUFPLFNBQVMsQ0FBQyxTQUFTLGlCQUFPLElBQUksTUFBRyxDQUFDLENBQUE7WUFDakosQ0FBQztZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsT0FBbEIsU0FBUywyQkFBYSxJQUFJLFdBQUUsQ0FBQTtRQUM5QyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDcEIsUUFBUSxVQUFBO1lBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBaEhELENBQW1DLEtBQUssR0FnSHZDO0FBaEhZLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIGFzIGNib3JEZWNvZGUgfSBmcm9tICdjYm9yJ1xuXG5pbXBvcnQge1xuICAgIGV4ZWNSYWRvbkJ5dGVjb2RlLFxuICAgIGZyb21IZXhTdHJpbmcsXG4gICAgaXNIZXhTdHJpbmcsXG4gICAgcGFyc2VVUkwsXG4gICAgdG9IZXhTdHJpbmcsXG4gICAgdXRmOEFycmF5VG9TdHIsXG59IGZyb20gXCIuLi8uLi9iaW4vaGVscGVyc1wiXG5cbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuLi9jcnlwdG8vdXRpbHNcIlxuaW1wb3J0IHsgcGFyc2VSYWRvblNjcmlwdCB9IGZyb20gXCIuL3V0aWxzXCJcblxuaW1wb3J0IHsgUmFkb25GaWx0ZXIgfSBmcm9tIFwiLi9maWx0ZXJzXCJcbmltcG9ydCB7IFJhZG9uUmVkdWNlciwgTW9kZSB9IGZyb20gXCIuL3JlZHVjZXJzXCJcbmltcG9ydCB7IFJhZG9uQ0NEUiwgUmFkb25SZXRyaWV2YWwgfSBmcm9tIFwiLi9yZXRyaWV2YWxzXCJcblxuY29uc3QgcHJvdG9CdWYgPSByZXF1aXJlKFwicHJvdG9idWZqc1wiKS5Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXG5jb25zdCBSQURSZXF1ZXN0ID0gcHJvdG9CdWYubG9va3VwVHlwZShcIlJBRFJlcXVlc3RcIilcblxuZXhwb3J0IHR5cGUgQXJncyA9IHN0cmluZ1tdIHwgc3RyaW5nW11bXTtcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjcyB7XG4gICAgcmV0cmlldmU6IFJhZG9uUmV0cmlldmFsW107XG4gICAgYWdncmVnYXRlOiBSYWRvblJlZHVjZXI7XG4gICAgdGFsbHk6IFJhZG9uUmVkdWNlcjtcbn1cblxuY2xhc3MgQ2xhc3MgeyAgICBcbiAgICBcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmV0cmlldmU6IFJhZG9uUmV0cmlldmFsW107XG4gICAgcHVibGljIHJlYWRvbmx5IGFnZ3JlZ2F0ZTogUmFkb25SZWR1Y2VyO1xuICAgIHB1YmxpYyByZWFkb25seSB0YWxseTogUmFkb25SZWR1Y2VyO1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKHNwZWNzOiBTcGVjcykge1xuICAgICAgICBpZiAoIXNwZWNzLnJldHJpZXZlIHx8ICFBcnJheS5pc0FycmF5KHNwZWNzLnJldHJpZXZlKSB8fCBzcGVjcy5yZXRyaWV2ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiUmFkb25BcnRpZmFjdDogY2Fubm90IGJ1aWxkIGlmIG5vIHJldHJpZXZhbHMgYXJlIHBhc3NlZFwiKVxuICAgICAgICB9XG4gICAgICAgIHNwZWNzLnJldHJpZXZlPy5mb3JFYWNoKChyZXRyaWV2YWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAocmV0cmlldmFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFJhZG9uQXJ0aWZhY3Q6IHJldHJpZXZhbCAjJHtpbmRleH0gaXMgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIShyZXRyaWV2YWwgaW5zdGFuY2VvZiBSYWRvblJldHJpZXZhbCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYFJhZG9uQXJ0aWZhY3Q6IHJldHJpZXZhbCAjJHtpbmRleH06IGludmFsaWQgdHlwZWApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMucmV0cmlldmUgPSBzcGVjcy5yZXRyaWV2ZTtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGUgPSBzcGVjcy5hZ2dyZWdhdGU7XG4gICAgICAgIHRoaXMudGFsbHkgPSBzcGVjcy50YWxseTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnJldHJpZXZlPy5tYXAocmV0cmlldmFsID0+IHJldHJpZXZhbC5vcHNDb3VudCgpKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgfHwgMClcbiAgICAgICAgICAgICsgdGhpcy5hZ2dyZWdhdGU/Lm9wc0NvdW50KClcbiAgICAgICAgICAgICsgdGhpcy50YWxseT8ub3BzQ291bnQoKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uUmVxdWVzdCBleHRlbmRzIENsYXNzIHsgICBcbiAgIFxuICAgIC8qKlxuICAgICAqIERlY29kZXMgYSBSYWRvblJlcXVlc3QgYXJ0aWZhY3Qgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxuICAgICAqIEBwYXJhbSBieXRlY29kZSBSYWRvbiByZXF1ZXN0IGJ5dGVjb2RlLlxuICAgICAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQnl0ZWNvZGUoYnl0ZWNvZGU6IGFueSkge1xuICAgICAgICBsZXQgYnVmZmVyXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IGZyb21IZXhTdHJpbmcoYnl0ZWNvZGUpXG4gICAgICAgIH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgICBidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSlcbiAgICAgICAgfSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgYnVmZmVyID0gYnl0ZWNvZGVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmVxdWVzdDogdW5zdXBwb3J0ZWQgYnl0ZWNvZGUgZm9ybWF0OiAke2J5dGVjb2RlfWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSBSQURSZXF1ZXN0LmRlY29kZShidWZmZXIpXG4gICAgICAgIGNvbnN0IHJldHJpZXZlID0gb2JqLnJldHJpZXZlLm1hcCgocmV0cmlldmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwZWNzOiBhbnkgPSB7fVxuICAgICAgICAgICAgaWYgKHJldHJpZXZhbD8udXJsKSB7IHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmwgfVxuICAgICAgICAgICAgaWYgKHJldHJpZXZhbD8uaGVhZGVycykge1xuICAgICAgICAgICAgICAgIHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMocmV0cmlldmFsLmhlYWRlcnMubWFwKChzdHJpbmdQYWlyOiBhbnkpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nUGFpci5sZWZ0LFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdQYWlyLnJpZ2h0XG4gICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmV0cmlldmFsPy5ib2R5ICYmIHJldHJpZXZhbC5ib2R5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzcGVjcy5ib2R5ID0gdXRmOEFycmF5VG9TdHIoT2JqZWN0LnZhbHVlcyhyZXRyaWV2YWwuYm9keSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmV0cmlldmFsPy5zY3JpcHQpIHNwZWNzLnNjcmlwdCA9IHBhcnNlUmFkb25TY3JpcHQodG9IZXhTdHJpbmcocmV0cmlldmFsLnNjcmlwdCkpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKHJldHJpZXZhbC5raW5kLCBzcGVjcylcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGVjb2RlRmlsdGVyID0gKGY6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGY/LmFyZ3MgJiYgZi5hcmdzLmxlbmd0aCA+IDApIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCwgY2JvckRlY29kZShmLmFyZ3MpKVxuICAgICAgICAgICAgZWxzZSByZXR1cm4gbmV3IFJhZG9uRmlsdGVyKGYub3ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcbiAgICAgICAgICAgIHJldHJpZXZlLFxuICAgICAgICAgICAgYWdncmVnYXRlOiBuZXcgUmFkb25SZWR1Y2VyKG9iai5hZ2dyZWdhdGUucmVkdWNlciwgb2JqLmFnZ3JlZ2F0ZS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSksXG4gICAgICAgICAgICB0YWxseTogbmV3IFJhZG9uUmVkdWNlcihvYmoudGFsbHkucmVkdWNlciwgb2JqLnRhbGx5LmZpbHRlcnM/Lm1hcChkZWNvZGVGaWx0ZXIpKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNDRFIoXG4gICAgICAgICAgICBjY2RyOiBSYWRvbkNDRFIsIFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBzdHJpbmdbXSwgXG4gICAgICAgICAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgIHRhbGx5PzogUmFkb25SZWR1Y2VyXG4gICAgICAgICk6IFJhZG9uUmVxdWVzdFxuICAgIHtcbiAgICAgICAgaWYgKCEoY2NkciBpbnN0YW5jZW9mIFJhZG9uQ0NEUikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgYFJhZG9uUmVxdWVzdDogY2Fubm90IGNyZWF0ZSBmcm9tICR7XG4gICAgICAgICAgICAgICAgICAgIChjY2RyIGFzIGFueSk/LmNvbnN0cnVjdG9yID8gYGluc3RhbmNlIG9mICR7KGNjZHIgYXMgYW55KS5jb25zdHJ1Y3Rvci5uYW1lfS5gIDogYG9iamVjdDogJHtjY2RyfWBcbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gUmFkb25UZW1wbGF0ZS5mcm9tQ0NEUih7IGNjZHIsIHByb3ZpZGVycywgdGFsbHkgfSlcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlLmJ1aWxkUmVxdWVzdE1vZGFsKC4uLmFyZ3MpXG4gICAgfVxuICAgIFxuICAgIGNvbnN0cnVjdG9yKHNwZWNzOiB7IFxuICAgICAgICByZXRyaWV2ZTogUmFkb25SZXRyaWV2YWwgfCBSYWRvblJldHJpZXZhbFtdLCBcbiAgICAgICAgYWdncmVnYXRlPzogUmFkb25SZWR1Y2VyLCBcbiAgICAgICAgdGFsbHk/OiBSYWRvblJlZHVjZXIsXG4gICAgfSkge1xuICAgICAgICBjb25zdCByZXRyaWV2ZSA9IEFycmF5LmlzQXJyYXkoc3BlY3MucmV0cmlldmUpID8gc3BlY3MucmV0cmlldmUgYXMgUmFkb25SZXRyaWV2YWxbXSA6IFsgc3BlY3MucmV0cmlldmUgXVxuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICByZXRyaWV2ZSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZTogc3BlY3M/LmFnZ3JlZ2F0ZSB8fCBNb2RlKCksXG4gICAgICAgICAgICB0YWxseTogc3BlY3M/LnRhbGx5IHx8IE1vZGUoKSxcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGFyZ3NDb3VudCA9IHJldHJpZXZlLm1hcChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VycilcbiAgICAgICAgaWYgKGFyZ3NDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmVxdWVzdDogcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzIHdlcmUgcGFzc2VkXCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VuY29kZSgpOiBCdWZmZXIge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy50b1Byb3RvYnVmKClcbiAgICAgICAgY29uc3QgZXJyTXNnID0gUkFEUmVxdWVzdC52ZXJpZnkocGF5bG9hZClcbiAgICAgICAgaWYgKGVyck1zZykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoZXJyTXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XG4gICAgICAgICAgICByZXR1cm4gUkFEUmVxdWVzdC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKClcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgYXN5bmMgZXhlY0RyeVJ1bigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IGV4ZWNSYWRvbkJ5dGVjb2RlKHRoaXMudG9CeXRlY29kZSgpLCAnLS1qc29uJykpLnRyaW0oKVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgcmFkSGFzaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KHRoaXMuX2VuY29kZSgpKSkvLy5zbGljZSgwLCA0MClcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHRvQnl0ZWNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuX2VuY29kZSgpKS8vZW5jb2RlUkFEUmVxdWVzdCh0aGlzLnRvUHJvdG9idWYoKSksIHRydWUpXG4gICAgfVxuXG4gICAgcHVibGljIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4pOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmV0cmlldmU6IHRoaXMucmV0cmlldmUubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWwudG9KU09OKGh1bWFuaXplKSksXG4gICAgICAgICAgICBhZ2dyZWdhdGU6IHRoaXMuYWdncmVnYXRlLnRvSlNPTihodW1hbml6ZSksXG4gICAgICAgICAgICB0YWxseTogdGhpcy50YWxseS50b0pTT04oaHVtYW5pemUpLFxuICAgICAgICAgICAgLi4uKGh1bWFuaXplID8ge30gOiB7IHRpbWVfbG9jazogMCB9KSxcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy90aW1lTG9jazogMCxcbiAgICAgICAgICAgIHJldHJpZXZlOiB0aGlzLnJldHJpZXZlLm1hcChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLnRvUHJvdG9idWYoKSksXG4gICAgICAgICAgICBhZ2dyZWdhdGU6IHRoaXMuYWdncmVnYXRlLnRvUHJvdG9idWYoKSxcbiAgICAgICAgICAgIHRhbGx5OiB0aGlzLnRhbGx5LnRvUHJvdG9idWYoKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3ZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9CeXRlY29kZSgpLnNsaWNlKDIpLmxlbmd0aCAvIDI7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25UZW1wbGF0ZSBleHRlbmRzIENsYXNzIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXJnc0NvdW50OiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGhvbW9nZW5lb3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgQXJncz47XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DQ0RSKFxuICAgICAgICAgICAgc3BlY3M6IHtcbiAgICAgICAgICAgICAgICBjY2RyOiBSYWRvbkNDRFIsIFxuICAgICAgICAgICAgICAgIHByb3ZpZGVyczogc3RyaW5nW10sIFxuICAgICAgICAgICAgICAgIHRhbGx5PzogUmFkb25SZWR1Y2VyXG4gICAgICAgICAgICB9LCBcbiAgICAgICAgICAgIHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBBcmdzPixcbiAgICAgICAgKTogUmFkb25UZW1wbGF0ZVxuICAgIHtcbiAgICAgICAgaWYgKCEoc3BlY3MuY2NkciBpbnN0YW5jZW9mIFJhZG9uQ0NEUikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgYFJhZG9uUmVxdWVzdDogY2Fubm90IGNyZWF0ZSBmcm9tICR7XG4gICAgICAgICAgICAgICAgICAgIChzcGVjcy5jY2RyIGFzIGFueSk/LmNvbnN0cnVjdG9yID8gYGluc3RhbmNlIG9mICR7KHNwZWNzLmNjZHIgYXMgYW55KS5jb25zdHJ1Y3Rvci5uYW1lfS5gIDogYGZyb20gb2JqZWN0OiAke3NwZWNzLmNjZHJ9YFxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNwZWNzLmNjZHIuYXJnc0NvdW50IDwgMikge1xuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBSYWRvblRlbXBsYXRlLmZyb21DQ0RSOiByZXF1aXJlcyBwYXJhbWV0ZXJpemVkIENDRFIuYClcbiAgICAgICAgfVxuICAgICAgICBzcGVjcy5wcm92aWRlcnMuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgICAgICAgICBjb25zdCBbc2NoZW1hLCBdID0gcGFyc2VVUkwocHJvdmlkZXIpXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xuICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZS5mcm9tQ0NEUjogaW52YWxpZCBwcm92aWRlcjogJHtwcm92aWRlcn1gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gbmV3IFJhZG9uVGVtcGxhdGUoe1xuICAgICAgICAgICAgcmV0cmlldmU6IHNwZWNzLmNjZHIuc3Bhd25SZXRyaWV2YWxzKC4uLnNwZWNzLnByb3ZpZGVycyksXG4gICAgICAgICAgICBhZ2dyZWdhdGU6IE1vZGUoKSxcbiAgICAgICAgICAgIHRhbGx5OiBzcGVjcy50YWxseSB8fCBNb2RlKCksXG4gICAgICAgIH0sIHNhbXBsZXMpXG4gICAgfVxuICAgIFxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBzcGVjczogeyBcbiAgICAgICAgICAgIHJldHJpZXZlOiBSYWRvblJldHJpZXZhbCB8IFJhZG9uUmV0cmlldmFsW10sIFxuICAgICAgICAgICAgYWdncmVnYXRlPzogUmFkb25SZWR1Y2VyLCBcbiAgICAgICAgICAgIHRhbGx5PzogUmFkb25SZWR1Y2VyLFxuICAgICAgICB9LFxuICAgICAgICBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgQXJncz5cbiAgICApIHtcbiAgICAgICAgY29uc3QgcmV0cmlldmUgPSBBcnJheS5pc0FycmF5KHNwZWNzLnJldHJpZXZlKSA/IHNwZWNzLnJldHJpZXZlIGFzIFJhZG9uUmV0cmlldmFsW10gOiBbIHNwZWNzLnJldHJpZXZlIF1cbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgcmV0cmlldmUsXG4gICAgICAgICAgICBhZ2dyZWdhdGU6IHNwZWNzPy5hZ2dyZWdhdGUgfHwgTW9kZSgpLFxuICAgICAgICAgICAgdGFsbHk6IHNwZWNzPy50YWxseSB8fCBNb2RlKCksXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuYXJnc0NvdW50ID0gcmV0cmlldmUubWFwKHJldHJpZXZhbCA9PiByZXRyaWV2YWw/LmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLm1heChwcmV2LCBjdXJyKSwgMClcbiAgICAgICAgaWYgKHRoaXMuYXJnc0NvdW50ID09IDApIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uVGVtcGxhdGU6IG5vIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaG9tb2dlbmVvdXMgPSAhcmV0cmlldmUuZmluZChyZXRyaWV2YWwgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCAhPT0gdGhpcy5hcmdzQ291bnQpXG4gICAgICAgIGlmIChzYW1wbGVzKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhzYW1wbGVzKS5mb3JFYWNoKHNhbXBsZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNhbXBsZUFyZ3M6IEFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2FtcGxlQXJncyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBzYW1wbGVBcmdzID0gIFsgc2FtcGxlQXJncyBdIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2FtcGxlQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShzYW1wbGVBcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV0gPSBBcnJheShyZXRyaWV2ZS5sZW5ndGgpLmZpbGwoc2FtcGxlQXJncylcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZUFyZ3M/Lmxlbmd0aCAhPSByZXRyaWV2ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogYXJndW1lbnRzIG1pc21hdGNoIGluIHNhbXBsZSBcIiR7c2FtcGxlfVwiOiAke3NhbXBsZUFyZ3M/Lmxlbmd0aH0gc2FtcGxlcyBnaXZlbiB2cy4gJHtyZXRyaWV2ZS5sZW5ndGh9IGV4cGVjdGVkYClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzYW1wbGVBcmdzPy5mb3JFYWNoKChzdWJhcmdzLCBpbmRleCk9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViYXJncy5sZW5ndGggPCByZXRyaWV2ZVtpbmRleF0uYXJnc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGBcXHgxYlsxOzMzbVJhZG9uUmVxdWVzdFRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gdGVzdCBcXHgxYlsxOzMxbScke3NhbXBsZX0nXFx4MWJbMTszM206IFxceDFiWzE7MzdtUmV0cmlldmFsICMke2luZGV4fVxceDFiWzE7MzNtOiAke3N1YmFyZ3M/Lmxlbmd0aH0gcGFyYW1ldGVycyBnaXZlbiB2cy4gJHtyZXRyaWV2ZVtpbmRleF0uYXJnc0NvdW50fSBleHBlY3RlZFxceDFiWzBtYClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5zYW1wbGVzID0gc2FtcGxlc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkUmVxdWVzdCguLi5hcmdzOiBzdHJpbmdbXVtdKTogUmFkb25SZXF1ZXN0IHtcbiAgICAgICAgY29uc3QgcmV0cmlldmU6IFJhZG9uUmV0cmlldmFsW10gPSBbXVxuICAgICAgICBpZiAoYXJncy5sZW5ndGggIT09IHRoaXMucmV0cmlldmUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJlcXVlc3Q6IG1pc21hdGNoaW5nIGFyZ3MgdmVjdG9ycyAoJHthcmdzLmxlbmd0aH0gIT0gJHt0aGlzLnJldHJpZXZlLmxlbmd0aH0pOiBbJHthcmdzfV19YClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJldHJpZXZlLmZvckVhY2goKHJldHJpZXZhbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXRyaWV2YWwuYXJnc0NvdW50ICE9PSBhcmdzW2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJlcXVlc3Q6IG1pc21hdGNoaW5nIGFyZ3MgcGFzc2VkIHRvIHJldHJpZXZhbCAjJHtpbmRleCArIDF9ICgke2FyZ3NbaW5kZXhdLmxlbmd0aH0gIT0gJHtyZXRyaWV2YWwuYXJnc0NvdW50fSk6IFske2FyZ3NbaW5kZXhdfV1gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0cmlldmUucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoLi4uYXJnc1tpbmRleF0pKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gbmV3IFJhZG9uUmVxdWVzdCh7XG4gICAgICAgICAgICByZXRyaWV2ZSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZTogdGhpcy5hZ2dyZWdhdGUsXG4gICAgICAgICAgICB0YWxseTogdGhpcy50YWxseSxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRSZXF1ZXN0TW9kYWwoLi4uYXJnczogc3RyaW5nW10pOiBSYWRvblJlcXVlc3Qge1xuICAgICAgICBjb25zdCByZXRyaWV2ZTogUmFkb25SZXRyaWV2YWxbXSA9IFtdXG4gICAgICAgIHRoaXMucmV0cmlldmUuZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJldHJpZXZhbC5hcmdzQ291bnQgIT09IGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXF1ZXN0OiBtaXNtYXRjaGluZyBhcmdzIHBhc3NlZCB0byByZXRyaWV2YWwgIyR7aW5kZXggKyAxfSAoJHthcmdzLmxlbmd0aH0gIT0gJHtyZXRyaWV2YWwuYXJnc0NvdW50fSk6IFske2FyZ3N9XWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXRyaWV2ZS5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyguLi5hcmdzKSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xuICAgICAgICAgICAgcmV0cmlldmUsXG4gICAgICAgICAgICBhZ2dyZWdhdGU6IHRoaXMuYWdncmVnYXRlLFxuICAgICAgICAgICAgdGFsbHk6IHRoaXMudGFsbHksXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19
@@ -1,100 +0,0 @@
1
- import { CrossChainRPC, BlockNumber, Bytes, Bytes32, HexString, HexStringOfLength } from ".";
2
- export type EthAddress = HexStringOfLength<40>;
3
- export type EthBlockHead = BlockNumber | EthBlockTag;
4
- export type EthBlockTag = "latest" | "earliest" | "pending" | "finalized";
5
- /**
6
- * Retrieve the number of most recent block.
7
- */
8
- export declare const blockNumber: () => CrossChainRPC;
9
- /**
10
- * Invoke message call immediately without creating a transaction
11
- * on the remote block chain. Often used for executing read-only smart contract
12
- * functions, for example the balanceOf for an ERC-20 contract.
13
- * @param tx The transaction call object.
14
- */
15
- export declare const call: (tx: {
16
- from?: EthAddress;
17
- to: EthAddress;
18
- gas?: number | HexString;
19
- gasPrice?: number | HexString;
20
- value?: number | HexString;
21
- data?: HexString;
22
- }) => CrossChainRPC;
23
- /**
24
- * Generates and returns an estimate of how much gas is necessary
25
- * to allow the transaction to complete. The transaction will not be
26
- * added to the blockchain. Note that the estimate may be significantly
27
- * more than the amount of gas actually used by the transaction, for a
28
- * variety of reasons including EVM mechanics and node performance.
29
- * @param tx The transaction call object.
30
- */
31
- export declare const estimateGas: (tx: {
32
- from?: EthAddress;
33
- to: EthAddress;
34
- gas?: number | HexString;
35
- gasPrice?: number | HexString;
36
- value?: number | HexString;
37
- data?: HexString;
38
- }) => CrossChainRPC;
39
- /**
40
- * Retrieve the balance of the account of given address.
41
- * @param address Web3 address on remote EVM chain.
42
- */
43
- export declare const getBalance: (address: EthAddress, block?: EthBlockHead) => CrossChainRPC;
44
- /**
45
- * Retrieve code at a given address.
46
- * @param address EthAddress from where to get the code.
47
- */
48
- export declare const getCode: (address: EthAddress) => CrossChainRPC;
49
- /**
50
- * Retrieve an array of all logs matching a given filter object.
51
- * @param filter The filter options.
52
- */
53
- export declare const getLogs: (filter: {
54
- fromBlock?: EthBlockHead;
55
- toBlock?: EthBlockHead;
56
- address?: EthAddress | EthAddress[];
57
- topics?: Bytes32[];
58
- blockHash?: Bytes32;
59
- }) => CrossChainRPC;
60
- /**
61
- * Retrieve an estimate of the current price per gas in wei.
62
- */
63
- export declare const gasPrice: () => CrossChainRPC;
64
- /**
65
- * Retrieve the value from a storage position at a given address.
66
- * @param address EthAddress of the storage.
67
- * @param offset Offset within storage address.
68
- */
69
- export declare const getStorageAt: (address: EthAddress, offset: Bytes32) => CrossChainRPC;
70
- /**
71
- * Retrieve the information about a remote transaction given a block hash and a transaction index.
72
- * @param txHash Hash of the remote transaction.
73
- */
74
- export declare const getTransactionByBlockHashAndIndex: (blockHash: Bytes32, txIndex: number | Bytes32) => CrossChainRPC;
75
- /**
76
- * Retrieve the information about a remote transaction given a block number and a transaction index.
77
- * @param txHash Hash of the remote transaction.
78
- */
79
- export declare const getTransactionByBlockNumberAndIndex: (blockNumber: EthBlockHead, txIndex: number | Bytes32) => CrossChainRPC;
80
- /**
81
- * Retrieve the information about a remote transaction given its transaction hash.
82
- * @param txHash Hash of the remote transaction.
83
- */
84
- export declare const getTransactionByHash: (txHash: Bytes32) => CrossChainRPC;
85
- /**
86
- * Retrieve the number of transactions sent from an address.
87
- * @param address EthAddress from where to get transaction count.
88
- */
89
- export declare const getTransactionCount: (address: EthAddress) => CrossChainRPC;
90
- /**
91
- * Retrieve the receipt of a remote transaction given its transaction hash.
92
- * @param txHash Hash of the remote transaction.
93
- */
94
- export declare const getTransactionReceipt: (txHash: Bytes32) => CrossChainRPC;
95
- /**
96
- * Invoke remote call transaction, or remote contract creation.
97
- * @param data The signed transaction data.
98
- */
99
- export declare const sendRawTransaction: (data: Bytes) => CrossChainRPC;
100
- //# sourceMappingURL=eth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eth.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/ccdr/eth.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,aAAa,EACb,WAAW,EACX,KAAK,EACL,OAAO,EACP,SAAS,EACT,iBAAiB,EACpB,MAAM,GAAG,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAA;AAWzE;;GAEG;AACH,eAAO,MAAM,WAAW,qBAA6C,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,IAAI,OAAQ;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,UAAU,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAA;CACnB,kBAiBA,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,OAAQ;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,UAAU,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAA;CACnB,kBAiBA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,YAAa,UAAU,UAAU,YAAY,kBAMnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,YAAa,UAAU,kBAM1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,WAAY;IAC5B,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,kBA6BA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,qBAA0C,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,YAAY,YAAa,UAAU,UAAU,OAAO,kBAQhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,cAAe,OAAO,WAAW,MAAM,GAAG,OAAO,kBAQ9F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mCAAmC,gBAC/B,YAAY,WAChB,MAAM,GAAG,OAAO,kBAa5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WAAY,OAAO,kBAMnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAa,UAAU,kBAMtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,OAAO,kBAMpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAU,KAAK,kBAM7C,CAAC"}