@witnet/sdk 1.0.4 → 1.0.6
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/.env_witnet +6 -6
- package/LICENSE +21 -21
- package/README.md +103 -103
- package/dist/package.json +3 -4
- package/dist/src/bin/helpers.js +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/lib/crypto/account.d.ts +3 -1
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +7 -1
- package/dist/src/lib/crypto/coinbase.js +1 -1
- package/dist/src/lib/crypto/index.js +1 -1
- package/dist/src/lib/crypto/interfaces.d.ts +2 -0
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +12 -1
- package/dist/src/lib/crypto/signer.d.ts +1 -0
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +18 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
- package/dist/src/lib/crypto/transmitters.d.ts +1 -1
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +4 -4
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +2 -1
- package/dist/src/lib/crypto/utils.js +1 -1
- package/dist/src/lib/crypto/wallet.d.ts +3 -1
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +10 -1
- package/dist/src/lib/index.js +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +1 -1
- package/dist/src/lib/radon/ccdr/index.js +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +1 -1
- package/dist/src/lib/radon/filters.js +1 -1
- package/dist/src/lib/radon/index.js +1 -1
- package/dist/src/lib/radon/reducers.js +1 -1
- package/dist/src/lib/radon/types.js +1 -1
- package/dist/src/lib/radon/utils.js +1 -1
- package/dist/src/lib/rpc/index.js +1 -1
- package/dist/src/lib/rpc/nodes.js +1 -1
- package/dist/src/lib/rpc/provider.js +1 -1
- package/dist/src/lib/rpc/types.d.ts +6 -4
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +1 -1
- package/dist/src/lib/types.d.ts +0 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/witnet/assets/index.js +1 -1
- package/dist/witnet/assets/modals/index.js +1 -1
- package/dist/witnet/assets/modals/web3/eth.js +1 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +1 -1
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +3 -4
- package/src/bin/cli/history.js +31 -31
- package/src/bin/cli/inspect.js +405 -405
- package/src/bin/cli/network.js +594 -594
- package/src/bin/cli/nodes.js +364 -364
- package/src/bin/cli/radon.js +817 -815
- package/src/bin/cli/wallet.js +1121 -1117
- package/src/bin/helpers.js +840 -840
- package/src/bin/postinstall.js +9 -9
- package/src/bin/toolkit.js +295 -295
- package/witnet/assets/_index.js +8 -8
- package/witnet/assets/_requests.js +25 -25
- package/witnet/assets/_sources.js +36 -36
- package/witnet/assets/_templates.js +36 -36
- package/witnet/assets/index.js +4 -4
- package/witnet/assets/modals/index.js +9 -9
- package/witnet/assets/modals/web3/eth.js +29 -29
- package/witnet/assets/modals/web3/ipfs.js +19 -19
- package/witnet/assets/modals/web3/wit.js +21 -21
- package/witnet/assets/requests.js +95 -95
- package/dist/bin/helpers.d.ts +0 -88
- package/dist/bin/helpers.d.ts.map +0 -1
- package/dist/bin/helpers.js +0 -866
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -42
- package/dist/lib/crypto/account.d.ts +0 -18
- package/dist/lib/crypto/account.d.ts.map +0 -1
- package/dist/lib/crypto/account.js +0 -152
- package/dist/lib/crypto/coinbase.d.ts +0 -9
- package/dist/lib/crypto/coinbase.d.ts.map +0 -1
- package/dist/lib/crypto/coinbase.js +0 -39
- package/dist/lib/crypto/index.d.ts +0 -7
- package/dist/lib/crypto/index.d.ts.map +0 -1
- package/dist/lib/crypto/index.js +0 -28
- package/dist/lib/crypto/interfaces.d.ts +0 -80
- package/dist/lib/crypto/interfaces.d.ts.map +0 -1
- package/dist/lib/crypto/interfaces.js +0 -3
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +0 -47
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/DataRequestPayload.js +0 -384
- package/dist/lib/crypto/payloads/StakePayload.d.ts +0 -27
- package/dist/lib/crypto/payloads/StakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/StakePayload.js +0 -184
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts +0 -35
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/UnstakePayload.js +0 -244
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +0 -24
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/ValueTransferPayload.js +0 -182
- package/dist/lib/crypto/payloads.d.ts +0 -54
- package/dist/lib/crypto/payloads.d.ts.map +0 -1
- package/dist/lib/crypto/payloads.js +0 -224
- package/dist/lib/crypto/signer.d.ts +0 -26
- package/dist/lib/crypto/signer.d.ts.map +0 -1
- package/dist/lib/crypto/signer.js +0 -299
- package/dist/lib/crypto/transmitters/DataRequests.d.ts +0 -14
- package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/DataRequests.js +0 -62
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +0 -11
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeDeposits.js +0 -48
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +0 -17
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeWithdrawals.js +0 -115
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +0 -10
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/ValueTransfers.js +0 -47
- package/dist/lib/crypto/transmitters.d.ts +0 -46
- package/dist/lib/crypto/transmitters.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters.js +0 -506
- package/dist/lib/crypto/types.d.ts +0 -127
- package/dist/lib/crypto/types.d.ts.map +0 -1
- package/dist/lib/crypto/types.js +0 -261
- package/dist/lib/crypto/utils.d.ts +0 -10
- package/dist/lib/crypto/utils.d.ts.map +0 -1
- package/dist/lib/crypto/utils.js +0 -97
- package/dist/lib/crypto/wallet.d.ts +0 -26
- package/dist/lib/crypto/wallet.d.ts.map +0 -1
- package/dist/lib/crypto/wallet.js +0 -327
- package/dist/lib/helpers.d.ts +0 -90
- package/dist/lib/helpers.d.ts.map +0 -1
- package/dist/lib/helpers.js +0 -1031
- package/dist/lib/index.d.ts +0 -5
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -21
- package/dist/lib/radon/artifacts.d.ts +0 -55
- package/dist/lib/radon/artifacts.d.ts.map +0 -1
- package/dist/lib/radon/artifacts.js +0 -347
- package/dist/lib/radon/ccdr/eth.d.ts +0 -100
- package/dist/lib/radon/ccdr/eth.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/eth.js +0 -237
- package/dist/lib/radon/ccdr/index.d.ts +0 -34
- package/dist/lib/radon/ccdr/index.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/index.js +0 -63
- package/dist/lib/radon/ccdr/wit.d.ts +0 -29
- package/dist/lib/radon/ccdr/wit.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/wit.js +0 -60
- package/dist/lib/radon/filters.d.ts +0 -14
- package/dist/lib/radon/filters.d.ts.map +0 -1
- package/dist/lib/radon/filters.js +0 -47
- package/dist/lib/radon/index.d.ts +0 -36
- package/dist/lib/radon/index.d.ts.map +0 -1
- package/dist/lib/radon/index.js +0 -154
- package/dist/lib/radon/reducers.d.ts +0 -29
- package/dist/lib/radon/reducers.d.ts.map +0 -1
- package/dist/lib/radon/reducers.js +0 -101
- package/dist/lib/radon/retrievals.d.ts +0 -120
- package/dist/lib/radon/retrievals.d.ts.map +0 -1
- package/dist/lib/radon/retrievals.js +0 -358
- package/dist/lib/radon/sources.d.ts +0 -102
- package/dist/lib/radon/sources.d.ts.map +0 -1
- package/dist/lib/radon/sources.js +0 -294
- package/dist/lib/radon/types.d.ts +0 -521
- package/dist/lib/radon/types.d.ts.map +0 -1
- package/dist/lib/radon/types.js +0 -1066
- package/dist/lib/radon/utils.d.ts +0 -55
- package/dist/lib/radon/utils.d.ts.map +0 -1
- package/dist/lib/radon/utils.js +0 -181
- package/dist/lib/rpc/farm.d.ts +0 -66
- package/dist/lib/rpc/farm.d.ts.map +0 -1
- package/dist/lib/rpc/farm.js +0 -808
- package/dist/lib/rpc/index.d.ts +0 -3
- package/dist/lib/rpc/index.d.ts.map +0 -1
- package/dist/lib/rpc/index.js +0 -19
- package/dist/lib/rpc/node.d.ts +0 -38
- package/dist/lib/rpc/node.d.ts.map +0 -1
- package/dist/lib/rpc/node.js +0 -335
- package/dist/lib/rpc/nodes.d.ts +0 -40
- package/dist/lib/rpc/nodes.d.ts.map +0 -1
- package/dist/lib/rpc/nodes.js +0 -531
- package/dist/lib/rpc/provider.d.ts +0 -72
- package/dist/lib/rpc/provider.d.ts.map +0 -1
- package/dist/lib/rpc/provider.js +0 -402
- package/dist/lib/rpc/reporter.d.ts +0 -18
- package/dist/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/lib/rpc/reporter.js +0 -99
- package/dist/lib/rpc/types.d.ts +0 -396
- package/dist/lib/rpc/types.d.ts.map +0 -1
- package/dist/lib/rpc/types.js +0 -81
- package/dist/lib/rpc/wallet.d.ts +0 -72
- package/dist/lib/rpc/wallet.d.ts.map +0 -1
- package/dist/lib/rpc/wallet.js +0 -41
- package/dist/lib/types.d.ts +0 -19
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -7
- package/dist/lib/utils.d.ts +0 -5
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -51
- package/dist/src/lib/rpc/reporter.d.ts +0 -17
- package/dist/src/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/src/lib/rpc/reporter.js +0 -27
package/dist/lib/index.d.ts
DELETED
package/dist/lib/index.d.ts.map
DELETED
|
@@ -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"}
|