@taquito/taquito 11.2.0 → 12.0.0-beta-RC.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/lib/batch/rpc-batch-provider.js.map +1 -1
- package/dist/lib/constants.js +1 -13
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/context.js +25 -45
- package/dist/lib/context.js.map +1 -1
- package/dist/lib/contract/contract-methods/contract-method-factory.js +2 -2
- package/dist/lib/contract/contract-methods/contract-method-factory.js.map +1 -1
- package/dist/lib/contract/contract-methods/contract-on-chain-view.js +6 -5
- package/dist/lib/contract/contract-methods/contract-on-chain-view.js.map +1 -1
- package/dist/lib/contract/contract.js +40 -66
- package/dist/lib/contract/contract.js.map +1 -1
- package/dist/lib/contract/lambda-view.js +4 -0
- package/dist/lib/contract/lambda-view.js.map +1 -1
- package/dist/lib/contract/rpc-contract-provider.js +12 -14
- package/dist/lib/contract/rpc-contract-provider.js.map +1 -1
- package/dist/lib/estimate/error.js +11 -0
- package/dist/lib/estimate/error.js.map +1 -0
- package/dist/lib/estimate/estimate-provider-interface.js +3 -0
- package/dist/lib/estimate/estimate-provider-interface.js.map +1 -0
- package/dist/lib/{contract → estimate}/estimate.js +4 -3
- package/dist/lib/estimate/estimate.js.map +1 -0
- package/dist/lib/estimate/index.js +18 -0
- package/dist/lib/estimate/index.js.map +1 -0
- package/dist/lib/{contract → estimate}/naive-estimate-provider.js +0 -0
- package/dist/lib/estimate/naive-estimate-provider.js.map +1 -0
- package/dist/lib/{contract → estimate}/rpc-estimate-provider.js +54 -35
- package/dist/lib/estimate/rpc-estimate-provider.js.map +1 -0
- package/dist/lib/forger/taquito-local-forger.js +35 -0
- package/dist/lib/forger/taquito-local-forger.js.map +1 -0
- package/dist/lib/operations/operation-emitter.js +10 -22
- package/dist/lib/operations/operation-emitter.js.map +1 -1
- package/dist/lib/operations/operations.js +11 -37
- package/dist/lib/operations/operations.js.map +1 -1
- package/dist/lib/operations/origination-operation.js +2 -2
- package/dist/lib/operations/origination-operation.js.map +1 -1
- package/dist/lib/parser/michel-codec-parser.js +5 -2
- package/dist/lib/parser/michel-codec-parser.js.map +1 -1
- package/dist/lib/{forger → read-provider}/interface.js +0 -0
- package/dist/lib/read-provider/interface.js.map +1 -0
- package/dist/lib/read-provider/rpc-read-adapter.js +199 -0
- package/dist/lib/read-provider/rpc-read-adapter.js.map +1 -0
- package/dist/lib/subscribe/create-observable-from-subscription.js +22 -0
- package/dist/lib/subscribe/create-observable-from-subscription.js.map +1 -0
- package/dist/lib/subscribe/polling-subcribe-provider.js +94 -0
- package/dist/lib/subscribe/polling-subcribe-provider.js.map +1 -0
- package/dist/lib/taquito.js +63 -26
- package/dist/lib/taquito.js.map +1 -1
- package/dist/lib/tz/rpc-tz-provider.js +2 -2
- package/dist/lib/tz/rpc-tz-provider.js.map +1 -1
- package/dist/lib/version.js +2 -2
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/wallet/delegation-operation.js +2 -2
- package/dist/lib/wallet/delegation-operation.js.map +1 -1
- package/dist/lib/wallet/operation-factory.js +10 -24
- package/dist/lib/wallet/operation-factory.js.map +1 -1
- package/dist/lib/wallet/operation.js +4 -4
- package/dist/lib/wallet/operation.js.map +1 -1
- package/dist/lib/wallet/wallet.js +4 -8
- package/dist/lib/wallet/wallet.js.map +1 -1
- package/dist/taquito.es6.js +745 -664
- package/dist/taquito.es6.js.map +1 -1
- package/dist/taquito.min.js +2 -0
- package/dist/taquito.min.js.LICENSE.txt +27 -0
- package/dist/taquito.umd.js +749 -665
- package/dist/taquito.umd.js.map +1 -1
- package/dist/types/batch/rpc-batch-provider.d.ts +2 -1
- package/dist/types/constants.d.ts +0 -11
- package/dist/types/context.d.ts +16 -23
- package/dist/types/contract/contract-methods/contract-method-factory.d.ts +2 -1
- package/dist/types/contract/contract-methods/contract-on-chain-view.d.ts +3 -2
- package/dist/types/contract/contract.d.ts +9 -15
- package/dist/types/contract/interface.d.ts +0 -58
- package/dist/types/contract/lambda-view.d.ts +4 -0
- package/dist/types/contract/rpc-contract-provider.d.ts +2 -1
- package/dist/types/estimate/error.d.ts +4 -0
- package/dist/types/estimate/estimate-provider-interface.d.ts +60 -0
- package/dist/types/{contract → estimate}/estimate.d.ts +0 -0
- package/dist/types/estimate/index.d.ts +5 -0
- package/dist/types/{contract → estimate}/naive-estimate-provider.d.ts +1 -1
- package/dist/types/{contract → estimate}/rpc-estimate-provider.d.ts +2 -1
- package/dist/types/forger/composite-forger.d.ts +1 -1
- package/dist/types/forger/rpc-forger.d.ts +1 -1
- package/dist/types/forger/taquito-local-forger.d.ts +8 -0
- package/dist/types/operations/operation-emitter.d.ts +2 -2
- package/dist/types/operations/operations.d.ts +1 -4
- package/dist/types/operations/origination-operation.d.ts +1 -1
- package/dist/types/operations/types.d.ts +1 -1
- package/dist/types/read-provider/interface.d.ts +113 -0
- package/dist/types/read-provider/rpc-read-adapter.d.ts +112 -0
- package/dist/types/signer/interface.d.ts +1 -1
- package/dist/types/subscribe/create-observable-from-subscription.d.ts +4 -0
- package/dist/types/subscribe/interface.d.ts +2 -1
- package/dist/types/subscribe/polling-subcribe-provider.d.ts +22 -0
- package/dist/types/taquito.d.ts +23 -9
- package/dist/types/wallet/delegation-operation.d.ts +2 -2
- package/dist/types/wallet/operation-factory.d.ts +2 -3
- package/dist/types/wallet/operation.d.ts +2 -1
- package/package.json +8 -7
- package/dist/lib/contract/estimate.js.map +0 -1
- package/dist/lib/contract/naive-estimate-provider.js.map +0 -1
- package/dist/lib/contract/rpc-estimate-provider.js.map +0 -1
- package/dist/lib/forger/interface.js.map +0 -1
- package/dist/lib/subscribe/polling-provider.js +0 -40
- package/dist/lib/subscribe/polling-provider.js.map +0 -1
- package/dist/types/forger/interface.d.ts +0 -9
- package/dist/types/subscribe/polling-provider.d.ts +0 -10
|
@@ -14,6 +14,7 @@ const rxjs_1 = require("rxjs");
|
|
|
14
14
|
const operators_1 = require("rxjs/operators");
|
|
15
15
|
const types_1 = require("./types");
|
|
16
16
|
const utils_1 = require("@taquito/utils");
|
|
17
|
+
const create_observable_from_subscription_1 = require("../subscribe/create-observable-from-subscription");
|
|
17
18
|
/**
|
|
18
19
|
* @description Utility class to interact with Tezos operations
|
|
19
20
|
*/
|
|
@@ -30,35 +31,11 @@ class Operation {
|
|
|
30
31
|
this.results = results;
|
|
31
32
|
this.context = context;
|
|
32
33
|
this._pollingConfig$ = new rxjs_1.ReplaySubject(1);
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (!this._currentHeadPromise) {
|
|
37
|
-
this._currentHeadPromise = this.context.rpc.getBlock();
|
|
38
|
-
rxjs_1.timer(1000)
|
|
39
|
-
.pipe(operators_1.first())
|
|
40
|
-
.subscribe(() => {
|
|
41
|
-
this._currentHeadPromise = undefined;
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return rxjs_1.from(this._currentHeadPromise);
|
|
45
|
-
});
|
|
46
|
-
// Polling observable that emit until timeout is reached
|
|
47
|
-
this.polling$ = rxjs_1.defer(() => this._pollingConfig$.pipe(operators_1.tap(({ timeout, interval }) => {
|
|
48
|
-
if (timeout <= 0) {
|
|
49
|
-
throw new Error('Timeout must be more than 0');
|
|
50
|
-
}
|
|
51
|
-
if (interval <= 0) {
|
|
52
|
-
throw new Error('Interval must be more than 0');
|
|
53
|
-
}
|
|
54
|
-
}), operators_1.map((config) => (Object.assign(Object.assign({}, config), { timeoutAt: Math.ceil(config.timeout / config.interval) + 1, count: 0 }))), operators_1.switchMap((config) => rxjs_1.timer(0, config.interval * 1000).pipe(operators_1.mapTo(config))), operators_1.tap((config) => {
|
|
55
|
-
config.count++;
|
|
56
|
-
if (config.count > config.timeoutAt) {
|
|
57
|
-
throw new Error(`Confirmation polling timed out`);
|
|
58
|
-
}
|
|
59
|
-
})));
|
|
34
|
+
this.currentHead$ = this._pollingConfig$.pipe(operators_1.switchMap((config) => {
|
|
35
|
+
return rxjs_1.defer(() => create_observable_from_subscription_1.createObservableFromSubscription(this.context.stream.subscribeBlock('head'))).pipe(operators_1.timeoutWith(config.timeout * 1000, rxjs_1.throwError(new Error('Confirmation polling timed out'))));
|
|
36
|
+
}), operators_1.shareReplay({ refCount: true }));
|
|
60
37
|
// Observable that emit once operation is seen in a block
|
|
61
|
-
this.confirmed$ = this.
|
|
38
|
+
this.confirmed$ = this.currentHead$.pipe(operators_1.map((head) => {
|
|
62
39
|
for (let i = 3; i >= 0; i--) {
|
|
63
40
|
head.operations[i].forEach((op) => {
|
|
64
41
|
if (op.hash === this.hash) {
|
|
@@ -74,9 +51,11 @@ class Operation {
|
|
|
74
51
|
if (utils_1.validateOperation(this.hash) !== utils_1.ValidationResult.VALID) {
|
|
75
52
|
throw new utils_1.InvalidOperationHashError(`Invalid Operation Hash: ${this.hash}`);
|
|
76
53
|
}
|
|
77
|
-
this.confirmed
|
|
54
|
+
this.confirmed$
|
|
55
|
+
.pipe(operators_1.first(), operators_1.catchError(() => {
|
|
78
56
|
return rxjs_1.of(rxjs_1.EMPTY);
|
|
79
|
-
}))
|
|
57
|
+
}))
|
|
58
|
+
.subscribe();
|
|
80
59
|
}
|
|
81
60
|
get includedInBlock() {
|
|
82
61
|
return this._foundAt;
|
|
@@ -106,26 +85,21 @@ class Operation {
|
|
|
106
85
|
/**
|
|
107
86
|
*
|
|
108
87
|
* @param confirmations [0] Number of confirmation to wait for
|
|
109
|
-
* @param interval [10] Polling interval
|
|
110
88
|
* @param timeout [180] Timeout
|
|
111
89
|
*/
|
|
112
|
-
confirmation(confirmations,
|
|
90
|
+
confirmation(confirmations, timeout) {
|
|
113
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
92
|
if (typeof confirmations !== 'undefined' && confirmations < 1) {
|
|
115
93
|
throw new Error('Confirmation count must be at least 1');
|
|
116
94
|
}
|
|
117
|
-
const confirmationPollingIntervalSecond = this.context.config.confirmationPollingIntervalSecond !== undefined
|
|
118
|
-
? this.context.config.confirmationPollingIntervalSecond
|
|
119
|
-
: yield this.context.getConfirmationPollingInterval();
|
|
120
95
|
const { defaultConfirmationCount, confirmationPollingTimeoutSecond } = this.context.config;
|
|
121
96
|
this._pollingConfig$.next({
|
|
122
|
-
interval: interval || confirmationPollingIntervalSecond,
|
|
123
97
|
timeout: timeout || confirmationPollingTimeoutSecond,
|
|
124
98
|
});
|
|
125
99
|
const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;
|
|
126
100
|
return new Promise((resolve, reject) => {
|
|
127
101
|
this.confirmed$
|
|
128
|
-
.pipe(operators_1.switchMap(() => this.
|
|
102
|
+
.pipe(operators_1.switchMap(() => this.currentHead$), operators_1.filter((head) => head.header.level - this._foundAt >= conf - 1), operators_1.first())
|
|
129
103
|
.subscribe((_) => {
|
|
130
104
|
resolve(this._foundAt + (conf - 1));
|
|
131
105
|
}, reject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/operations/operations.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/operations/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,12 +71,12 @@ class OriginationOperation extends operations_1.Operation {
|
|
|
71
71
|
/**
|
|
72
72
|
* @description Provide the contract abstract of the newly originated contract
|
|
73
73
|
*/
|
|
74
|
-
contract(confirmations,
|
|
74
|
+
contract(confirmations, timeout) {
|
|
75
75
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
76
|
if (!this.contractAddress) {
|
|
77
77
|
throw new Error('No contract was originated in this operation');
|
|
78
78
|
}
|
|
79
|
-
yield this.confirmation(confirmations,
|
|
79
|
+
yield this.confirmation(confirmations, timeout);
|
|
80
80
|
return this.contractProvider.at(this.contractAddress);
|
|
81
81
|
});
|
|
82
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origination-operation.js","sourceRoot":"","sources":["../../../src/operations/origination-operation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,6CAAyC;AACzC,mCAOiB;AAEjB;;;;GAIG;AACH,MAAa,oBACX,SAAQ,sBAAS;
|
|
1
|
+
{"version":3,"file":"origination-operation.js","sourceRoot":"","sources":["../../../src/operations/origination-operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,11 @@ class MichelCodecParser {
|
|
|
19
19
|
}
|
|
20
20
|
getNextProto() {
|
|
21
21
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
if (!this.context.proto) {
|
|
23
|
+
const nextProto = yield this.context.readProvider.getNextProtocol('head');
|
|
24
|
+
this.context.proto = nextProto;
|
|
25
|
+
}
|
|
26
|
+
return this.context.proto;
|
|
24
27
|
});
|
|
25
28
|
}
|
|
26
29
|
parseScript(src) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"michel-codec-parser.js","sourceRoot":"","sources":["../../../src/parser/michel-codec-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,wDAAmG;AAEnG,+CAAgF;AAChF,kEAAoD;
|
|
1
|
+
{"version":3,"file":"michel-codec-parser.js","sourceRoot":"","sources":["../../../src/parser/michel-codec-parser.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/read-provider/interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RpcReadAdapter = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* @description Converts calls from TzReadProvider into calls to the wrapped RpcClient in a format it can understand.
|
|
15
|
+
*/
|
|
16
|
+
class RpcReadAdapter {
|
|
17
|
+
constructor(context) {
|
|
18
|
+
this.context = context;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @description Access the balance of a contract.
|
|
22
|
+
* @param address address from which we want to retrieve the balance
|
|
23
|
+
* @param block from which we want to retrieve the balance
|
|
24
|
+
* @returns the balance in mutez
|
|
25
|
+
*/
|
|
26
|
+
getBalance(address, block) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
return this.context.rpc.getBalance(address, { block: String(block) });
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @description Access the delegate of a contract, if any.
|
|
33
|
+
* @param address contract address from which we want to retrieve the delegate (baker)
|
|
34
|
+
* @param block from which we want to retrieve the delegate
|
|
35
|
+
* @returns the public key hash of the delegate or null if no delegate
|
|
36
|
+
*/
|
|
37
|
+
getDelegate(address, block) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
return this.context.rpc.getDelegate(address, { block: String(block) });
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @description Access the next protocol hash
|
|
44
|
+
* @param block from which we want to retrieve the next protocol hash
|
|
45
|
+
*/
|
|
46
|
+
getNextProtocol(block) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const protocols = yield this.context.rpc.getProtocols({ block: String(block) });
|
|
49
|
+
return protocols.next_protocol;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @description Access protocol constants used in Taquito
|
|
54
|
+
* @param block from which we want to retrieve the constants
|
|
55
|
+
*/
|
|
56
|
+
getProtocolConstants(block) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
const { time_between_blocks, minimal_block_delay, hard_gas_limit_per_operation, hard_gas_limit_per_block, hard_storage_limit_per_operation, cost_per_byte, } = yield this.context.rpc.getConstants({ block: String(block) });
|
|
59
|
+
return {
|
|
60
|
+
time_between_blocks,
|
|
61
|
+
minimal_block_delay,
|
|
62
|
+
hard_gas_limit_per_operation,
|
|
63
|
+
hard_gas_limit_per_block,
|
|
64
|
+
hard_storage_limit_per_operation,
|
|
65
|
+
cost_per_byte,
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @description Access the script (code and storage) of a smart contract
|
|
71
|
+
* @param contract contract address from which we want to retrieve the script
|
|
72
|
+
* @param block from which we want to retrieve the storage value
|
|
73
|
+
* @returns Note: The code must be in the JSON format and not contain global constant
|
|
74
|
+
*/
|
|
75
|
+
getScript(contract, block) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
return this.context.rpc.getNormalizedScript(contract, { unparsing_mode: 'Readable' }, { block: String(block) });
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @description Access the storage value of a contract
|
|
82
|
+
* @param contract contract address from which we want to retrieve the storage
|
|
83
|
+
* @param block from which we want to retrieve the storage value
|
|
84
|
+
*/
|
|
85
|
+
getStorage(contract, block) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
return this.context.rpc.getStorage(contract, { block: String(block) });
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Access the block hash
|
|
92
|
+
*/
|
|
93
|
+
getBlockHash(block) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const { hash } = yield this.context.rpc.getBlockHeader({ block: String(block) });
|
|
96
|
+
return hash;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @description Access the block level
|
|
101
|
+
*/
|
|
102
|
+
getBlockLevel(block) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
const { level } = yield this.context.rpc.getBlockHeader({ block: String(block) });
|
|
105
|
+
return level;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @description Access the counter of an address
|
|
110
|
+
* @param pkh from which we want to retrieve the counter
|
|
111
|
+
* @param block from which we want to retrieve the counter
|
|
112
|
+
*/
|
|
113
|
+
getCounter(pkh, block) {
|
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
const { counter } = yield this.context.rpc.getContract(pkh, { block: String(block) });
|
|
116
|
+
return counter || '0';
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @description Access the timestamp of a block
|
|
121
|
+
* @param block from which we want to retrieve the timestamp
|
|
122
|
+
* @returns date ISO format zero UTC offset ("2022-01-19T22:37:07Z")
|
|
123
|
+
*/
|
|
124
|
+
getBlockTimestamp(block) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
const { timestamp } = yield this.context.rpc.getBlockHeader({ block: String(block) });
|
|
127
|
+
return timestamp;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @description Access the value associated with a key in a big map.
|
|
132
|
+
* @param bigMapQuery Big Map ID and Expression hash to query (A b58check encoded Blake2b hash of the expression)
|
|
133
|
+
* @param block from which we want to retrieve the big map value
|
|
134
|
+
*/
|
|
135
|
+
getBigMapValue(bigMapQuery, block) {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
return this.context.rpc.getBigMapExpr(bigMapQuery.id, bigMapQuery.expr, {
|
|
138
|
+
block: String(block),
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @description Access the value associated with a sapling state ID.
|
|
144
|
+
* @param id Sapling state ID
|
|
145
|
+
* @param block from which we want to retrieve the sapling state
|
|
146
|
+
*/
|
|
147
|
+
getSaplingDiffById(saplingStateQuery, block) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
return this.context.rpc.getSaplingDiffById(saplingStateQuery.id, { block: String(block) });
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @description Return the list of entrypoints of the contract
|
|
154
|
+
* @param contract address of the contract we want to get the entrypoints of
|
|
155
|
+
*/
|
|
156
|
+
getEntrypoints(contract) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
return this.context.rpc.getEntrypoints(contract);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* @description Access the chain id
|
|
163
|
+
*/
|
|
164
|
+
getChainId() {
|
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
+
return this.context.rpc.getChainId();
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @description Indicate if an account is revealed
|
|
171
|
+
* @param publicKeyHash of the account
|
|
172
|
+
* @param block from which we want to know if the account is revealed
|
|
173
|
+
*/
|
|
174
|
+
isAccountRevealed(publicKeyHash, block) {
|
|
175
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
176
|
+
const manager = yield this.context.rpc.getManagerKey(publicKeyHash, { block: String(block) });
|
|
177
|
+
const haveManager = manager && typeof manager === 'object' ? !!manager.key : !!manager;
|
|
178
|
+
return haveManager;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @description Return all the information about a block
|
|
183
|
+
* @param block from which we want to retrieve the information
|
|
184
|
+
*/
|
|
185
|
+
getBlock(block) {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
return this.context.rpc.getBlock({ block: String(block) });
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @description Return a list of the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.
|
|
192
|
+
* @param block from which we want to retrieve the information
|
|
193
|
+
*/
|
|
194
|
+
getLiveBlocks(block) {
|
|
195
|
+
return this.context.rpc.getLiveBlocks({ block: String(block) });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.RpcReadAdapter = RpcReadAdapter;
|
|
199
|
+
//# sourceMappingURL=rpc-read-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-read-adapter.js","sourceRoot":"","sources":["../../../src/read-provider/rpc-read-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA;;GAEG;AACH,MAAa,cAAc;IACzB,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAExC;;;;;OAKG;IACG,UAAU,CAAC,OAAe,EAAE,KAAsB;;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;KAAA;IAED;;;;;OAKG;IACG,WAAW,CAAC,OAAe,EAAE,KAAsB;;YACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;KAAA;IAED;;;OAGG;IACG,eAAe,CAAC,KAAsB;;YAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC,aAAa,CAAC;QACjC,CAAC;KAAA;IAED;;;OAGG;IACG,oBAAoB,CAAC,KAAsB;;YAQ/C,MAAM,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,gCAAgC,EAChC,aAAa,GACd,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,mBAAmB;gBACnB,mBAAmB;gBACnB,4BAA4B;gBAC5B,wBAAwB;gBACxB,gCAAgC;gBAChC,aAAa;aACd,CAAC;QACJ,CAAC;KAAA;IAED;;;;;OAKG;IACG,SAAS,CAAC,QAAgB,EAAE,KAAsB;;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CACzC,QAAQ,EACR,EAAE,cAAc,EAAE,UAAU,EAAE,EAC9B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CACzB,CAAC;QACJ,CAAC;KAAA;IAED;;;;OAIG;IACG,UAAU,CAAC,QAAgB,EAAE,KAAsB;;YACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;KAAA;IAED;;OAEG;IACG,YAAY,CAAC,KAAsB;;YACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;OAEG;IACG,aAAa,CAAC,KAAsB;;YACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED;;;;OAIG;IACG,UAAU,CAAC,GAAW,EAAE,KAAsB;;YAClD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtF,OAAO,OAAO,IAAI,GAAG,CAAC;QACxB,CAAC;KAAA;IAED;;;;OAIG;IACG,iBAAiB,CAAC,KAAsB;;YAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtF,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IAED;;;;OAIG;IACG,cAAc,CAClB,WAAwB,EACxB,KAAsB;;YAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE;gBACtE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACrB,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;;;OAIG;IACG,kBAAkB,CACtB,iBAAoC,EACpC,KAAsB;;YAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;KAAA;IAED;;;OAGG;IACG,cAAc,CAAC,QAAgB;;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;KAAA;IAED;;OAEG;IACG,UAAU;;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC;KAAA;IAED;;;;OAIG;IACG,iBAAiB,CAAC,aAAqB,EAAE,KAAsB;;YACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACvF,OAAO,WAAW,CAAC;QACrB,CAAC;KAAA;IAED;;;OAGG;IACG,QAAQ,CAAC,KAAsB;;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;KAAA;IAED;;;OAGG;IACH,aAAa,CAAC,KAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;CACF;AA5LD,wCA4LC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createObservableFromSubscription = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
function createObservableFromSubscription(sub) {
|
|
6
|
+
return new rxjs_1.Observable((subscriber) => {
|
|
7
|
+
sub.on('data', (data) => {
|
|
8
|
+
subscriber.next(data);
|
|
9
|
+
});
|
|
10
|
+
sub.on('error', (error) => {
|
|
11
|
+
subscriber.error(error);
|
|
12
|
+
});
|
|
13
|
+
sub.on('close', () => {
|
|
14
|
+
subscriber.complete();
|
|
15
|
+
});
|
|
16
|
+
return () => {
|
|
17
|
+
sub.close();
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.createObservableFromSubscription = createObservableFromSubscription;
|
|
22
|
+
//# sourceMappingURL=create-observable-from-subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-observable-from-subscription.js","sourceRoot":"","sources":["../../../src/subscribe/create-observable-from-subscription.ts"],"names":[],"mappings":";;;AACA,+BAAkC;AAGlC,SAAgB,gCAAgC,CAE9C,GAAoB;IACpB,OAAO,IAAI,iBAAU,CAAI,CAAC,UAAU,EAAE,EAAE;QACtC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAO,EAAE,EAAE;YACzB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YAC/B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,4EAoBC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PollingSubscribeProvider = exports.defaultConfigStreamer = void 0;
|
|
13
|
+
const rxjs_1 = require("rxjs");
|
|
14
|
+
const operators_1 = require("rxjs/operators");
|
|
15
|
+
const filters_1 = require("./filters");
|
|
16
|
+
const observable_subscription_1 = require("./observable-subscription");
|
|
17
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
18
|
+
exports.defaultConfigStreamer = {
|
|
19
|
+
shouldObservableSubscriptionRetry: false,
|
|
20
|
+
observableSubscriptionRetryFunction: operators_1.retry(),
|
|
21
|
+
};
|
|
22
|
+
const getLastBlock = (context) => {
|
|
23
|
+
return rxjs_1.from(context.rpc.getBlock()).pipe(operators_1.first());
|
|
24
|
+
};
|
|
25
|
+
const applyFilter = (filter) => operators_1.concatMap((block) => {
|
|
26
|
+
return new rxjs_1.Observable((sub) => {
|
|
27
|
+
for (const ops of block.operations) {
|
|
28
|
+
for (const op of ops) {
|
|
29
|
+
for (const content of op.contents) {
|
|
30
|
+
if (filters_1.evaluateFilter(Object.assign({ hash: op.hash }, content), filter)) {
|
|
31
|
+
sub.next(Object.assign({ hash: op.hash }, content));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
sub.complete();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
class PollingSubscribeProvider {
|
|
40
|
+
constructor(context, config = {}) {
|
|
41
|
+
this.context = context;
|
|
42
|
+
this._config$ = new rxjs_1.BehaviorSubject(Object.assign(Object.assign({}, exports.defaultConfigStreamer), config));
|
|
43
|
+
this.timer$ = this._config$.pipe(operators_1.pluck('pollingIntervalMilliseconds'), operators_1.switchMap((pollingIntervalMilliseconds) => {
|
|
44
|
+
if (!pollingIntervalMilliseconds) {
|
|
45
|
+
return rxjs_1.from(this.getConfirmationPollingInterval()).pipe(operators_1.switchMap((interval) => {
|
|
46
|
+
return rxjs_1.timer(0, interval);
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return rxjs_1.timer(0, pollingIntervalMilliseconds);
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
53
|
+
this.newBlock$ = this.timer$.pipe(operators_1.switchMap(() => getLastBlock(this.context)), operators_1.distinctUntilKeyChanged('hash'), operators_1.publish(), operators_1.refCount());
|
|
54
|
+
}
|
|
55
|
+
get config() {
|
|
56
|
+
return this._config$.getValue();
|
|
57
|
+
}
|
|
58
|
+
getConfirmationPollingInterval() {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
if (!this.config.pollingIntervalMilliseconds) {
|
|
61
|
+
const defaultIntervalTestnetsMainnet = 5000;
|
|
62
|
+
const defaultIntervalSandbox = 1000;
|
|
63
|
+
try {
|
|
64
|
+
const constants = yield this.context.readProvider.getProtocolConstants('head');
|
|
65
|
+
const blockTime = constants.minimal_block_delay
|
|
66
|
+
? constants.minimal_block_delay.multipliedBy(1000)
|
|
67
|
+
: constants.time_between_blocks
|
|
68
|
+
? constants.time_between_blocks[0].multipliedBy(1000)
|
|
69
|
+
: new bignumber_js_1.default(defaultIntervalTestnetsMainnet);
|
|
70
|
+
const confirmationPollingInterval = blockTime.dividedBy(3);
|
|
71
|
+
this.config.pollingIntervalMilliseconds =
|
|
72
|
+
confirmationPollingInterval.toNumber() === 0
|
|
73
|
+
? defaultIntervalSandbox
|
|
74
|
+
: confirmationPollingInterval.toNumber();
|
|
75
|
+
}
|
|
76
|
+
catch (exception) {
|
|
77
|
+
return defaultIntervalTestnetsMainnet;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return this.config.pollingIntervalMilliseconds;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
subscribeBlock(_filter) {
|
|
84
|
+
return new observable_subscription_1.ObservableSubscription(this.newBlock$, this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
85
|
+
}
|
|
86
|
+
subscribe(_filter) {
|
|
87
|
+
return new observable_subscription_1.ObservableSubscription(this.newBlock$.pipe(operators_1.pluck('hash')), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
88
|
+
}
|
|
89
|
+
subscribeOperation(filter) {
|
|
90
|
+
return new observable_subscription_1.ObservableSubscription(this.newBlock$.pipe(applyFilter(filter)), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.PollingSubscribeProvider = PollingSubscribeProvider;
|
|
94
|
+
//# sourceMappingURL=polling-subcribe-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling-subcribe-provider.js","sourceRoot":"","sources":["../../../src/subscribe/polling-subcribe-provider.ts"],"names":[],"mappings":"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"}
|