@mavrykdynamics/taquito
Version:
High level functionality that builds upon the other packages in the Mavryk Typescript Library Suite.
405 lines (404 loc) • 17.2 kB
JavaScript
"use strict";
/**
* @packageDocumentation
* @module @mavrykdynamics/taquito
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MavrykToolkit = exports.TaquitoLocalForger = exports.RpcReadAdapter = exports.ObservableSubscription = exports.PollingSubscribeProvider = exports.OperationBatch = exports.RpcForger = exports.CompositeForger = exports.UnitValue = exports.MichelsonMap = exports.Token = void 0;
const taquito_rpc_1 = require("@mavrykdynamics/taquito-rpc");
const context_1 = require("./context");
const taquito_utils_1 = require("@mavrykdynamics/taquito-utils");
const noop_global_constants_provider_1 = require("./global-constants/noop-global-constants-provider");
const rpc_packer_1 = require("./packer/rpc-packer");
const rpc_read_adapter_1 = require("./read-provider/rpc-read-adapter");
const noop_1 = require("./signer/noop");
const polling_subcribe_provider_1 = require("./subscribe/polling-subcribe-provider");
const version_1 = require("./version");
const wallet_1 = require("./wallet");
const taquito_local_forger_1 = require("./forger/taquito-local-forger");
const michel_codec_parser_1 = require("./parser/michel-codec-parser");
const rpc_injector_1 = require("./injector/rpc-injector");
const taquito_michelson_encoder_1 = require("@mavrykdynamics/taquito-michelson-encoder");
var taquito_michelson_encoder_2 = require("@mavrykdynamics/taquito-michelson-encoder");
Object.defineProperty(exports, "Token", { enumerable: true, get: function () { return taquito_michelson_encoder_2.Token; } });
Object.defineProperty(exports, "MichelsonMap", { enumerable: true, get: function () { return taquito_michelson_encoder_2.MichelsonMap; } });
Object.defineProperty(exports, "UnitValue", { enumerable: true, get: function () { return taquito_michelson_encoder_2.UnitValue; } });
__exportStar(require("./constants"), exports);
__exportStar(require("./context"), exports);
__exportStar(require("./contract"), exports);
__exportStar(require("./contract/big-map"), exports);
var composite_forger_1 = require("./forger/composite-forger");
Object.defineProperty(exports, "CompositeForger", { enumerable: true, get: function () { return composite_forger_1.CompositeForger; } });
var rpc_forger_1 = require("./forger/rpc-forger");
Object.defineProperty(exports, "RpcForger", { enumerable: true, get: function () { return rpc_forger_1.RpcForger; } });
__exportStar(require("./operations"), exports);
var rpc_batch_provider_1 = require("./batch/rpc-batch-provider");
Object.defineProperty(exports, "OperationBatch", { enumerable: true, get: function () { return rpc_batch_provider_1.OperationBatch; } });
__exportStar(require("./signer/interface"), exports);
__exportStar(require("./subscribe/interface"), exports);
var polling_subcribe_provider_2 = require("./subscribe/polling-subcribe-provider");
Object.defineProperty(exports, "PollingSubscribeProvider", { enumerable: true, get: function () { return polling_subcribe_provider_2.PollingSubscribeProvider; } });
var observable_subscription_1 = require("./subscribe/observable-subscription");
Object.defineProperty(exports, "ObservableSubscription", { enumerable: true, get: function () { return observable_subscription_1.ObservableSubscription; } });
__exportStar(require("./mv/interface"), exports);
__exportStar(require("./wallet"), exports);
__exportStar(require("./injector/interface"), exports);
__exportStar(require("./injector/rpc-injector"), exports);
__exportStar(require("./parser/interface"), exports);
__exportStar(require("./parser/michel-codec-parser"), exports);
__exportStar(require("./parser/noop-parser"), exports);
__exportStar(require("./packer/interface"), exports);
__exportStar(require("./packer/michel-codec-packer"), exports);
__exportStar(require("./packer/rpc-packer"), exports);
__exportStar(require("./global-constants/default-global-constants-provider"), exports);
__exportStar(require("./global-constants/errors"), exports);
__exportStar(require("./global-constants/interface-global-constants-provider"), exports);
var rpc_read_adapter_2 = require("./read-provider/rpc-read-adapter");
Object.defineProperty(exports, "RpcReadAdapter", { enumerable: true, get: function () { return rpc_read_adapter_2.RpcReadAdapter; } });
__exportStar(require("./estimate"), exports);
var taquito_local_forger_2 = require("./forger/taquito-local-forger");
Object.defineProperty(exports, "TaquitoLocalForger", { enumerable: true, get: function () { return taquito_local_forger_2.TaquitoLocalForger; } });
__exportStar(require("./prepare"), exports);
/**
* @description Facade class that surfaces all of the libraries capability and allow it's configuration
*
* @param _rpc The RPC server to use
*/
class MavrykToolkit {
constructor(_rpc) {
this._rpc = _rpc;
this._options = {};
this.format = taquito_utils_1.format;
if (typeof this._rpc === 'string') {
this._rpcClient = new taquito_rpc_1.RpcClient(this._rpc);
}
else {
this._rpcClient = this._rpc;
}
this._context = new context_1.Context(_rpc);
this._wallet = new wallet_1.Wallet(this._context);
this.setProvider({ rpc: this._rpcClient });
this.batch = this._context.batch.batch.bind(this._context.batch);
}
/**
* @description Sets configuration on the Mavryk Taquito instance. Allows user to choose which signer, rpc client, rpc url, forger and so forth
*
* @param options rpc url or rpcClient to use to interact with the Mavryk network
*
* @example Mavryk.setProvider({rpc: 'https://mainnet.ecadinfra.com/', signer: new InMemorySigner.fromSecretKey(“edsk...”)})
* @example Mavryk.setProvider({ config: { confirmationPollingTimeoutSecond: 300 }})
*
*/
setProvider({ rpc, stream, signer, protocol, config, forger, wallet, packer, globalConstantsProvider, readProvider, parserProvider, injectorProvider, }) {
this.setRpcProvider(rpc);
this.setStreamProvider(stream);
this.setSignerProvider(signer);
this.setForgerProvider(forger);
this.setWalletProvider(wallet);
this.setPackerProvider(packer);
this.setGlobalConstantsProvider(globalConstantsProvider);
this.setReadProvider(readProvider);
this.setParserProvider(parserProvider);
this.setInjectorProvider(injectorProvider);
this._context.proto = protocol;
if (config) {
this._context.setPartialConfig(config);
}
}
/**
* @description Sets signer provider on the Mavryk Taquito instance.
*
* @param options signer to use to interact with the Mavryk network
*
* @example Mavryk.setSignerProvider(new InMemorySigner.fromSecretKey('edsk...'))
*
*/
setSignerProvider(signer) {
if (!this._options.signer && typeof signer === 'undefined') {
this._context.signer = new noop_1.NoopSigner();
this._options.signer = signer;
}
else if (typeof signer !== 'undefined') {
this._context.signer = signer;
this._options.signer = signer;
}
}
/**
* @description Sets rpc provider on the Mavryk Taquito instance
*
* @param options rpc url or rpcClient to use to interact with the Mavryk network
*
* @example Mavryk.setRpcProvider('https://mainnet.ecadinfra.com/')
*
*/
setRpcProvider(rpc) {
if (typeof rpc === 'string') {
this._rpcClient = new taquito_rpc_1.RpcClient(rpc);
}
else if (rpc === undefined) {
// do nothing, RPC is required in the constructor, do not override it
}
else {
this._rpcClient = rpc;
}
this._options.rpc = this._rpcClient;
this._context.rpc = this._rpcClient;
}
/**
* @description Sets forger provider on the Mavryk Taquito instance
* The `LocalForger` from `@mavrykdynamics/taquito-local-forging` is set by default.
*
* @param options forger to use to interact with the Mavryk network
*
* @example Mavryk.setForgerProvider(this.getFactory(RpcForger)())
*
*/
setForgerProvider(forger) {
if (typeof forger !== 'undefined') {
this._options.forger = forger;
this._context.forger = forger;
}
else if (this._options.forger === undefined) {
const f = this.getFactory(taquito_local_forger_1.TaquitoLocalForger)();
this._options.forger = f;
this._context.forger = f;
}
}
/**
* @description Sets stream provider on the Mavryk Taquito instance
*
* @param options stream to use to interact with the Mavryk network
*
* @example Mavryk.setStreamProvider(...)
*
*/
setStreamProvider(stream) {
if (typeof stream === 'string') {
const s = new polling_subcribe_provider_1.PollingSubscribeProvider(new context_1.Context(new taquito_rpc_1.RpcClient(stream)));
this._options.stream = s;
this._context.stream = s;
}
else if (typeof stream !== 'undefined') {
this._options.stream = stream;
this._context.stream = stream;
}
else if (this._options.stream === undefined) {
const s = this.getFactory(polling_subcribe_provider_1.PollingSubscribeProvider)();
this._options.stream = s;
this._context.stream = s;
}
}
/**
* @description Sets wallet provider on the Mavryk Taquito instance
*
* @param options wallet to use to interact with the Mavryk network
*
* @example Mavryk.setWalletProvider(...)
*
*/
setWalletProvider(wallet) {
if (!this._options.wallet && typeof wallet === 'undefined') {
const w = this.getFactory(wallet_1.LegacyWalletProvider)();
this._options.wallet = w;
this._context.walletProvider = w;
}
else if (typeof wallet !== 'undefined') {
this._options.wallet = wallet;
this._context.walletProvider = wallet;
}
}
/**
* @description Sets Packer provider on the Mavryk Taquito instance
*
* @param options packer to use to interact with the Mavryk network
*
* @example Mavryk.setPackerProvider(new MichelCodecPacker())
*
*/
setPackerProvider(packer) {
if (!this._options.packer && typeof packer === 'undefined') {
const p = this.getFactory(rpc_packer_1.RpcPacker)();
this._context.packer = p;
this._options.packer = p;
}
else if (typeof packer !== 'undefined') {
this._context.packer = packer;
this._options.packer = packer;
}
}
/**
* @description Sets global constants provider on the Mavryk Taquito instance
*
* @param options globalConstantsProvider to use to interact with the Mavryk network
*
* @example
* ```
* const globalConst = new DefaultGlobalConstantsProvider();
* globalConst.loadGlobalConstant({
* "expruu5BTdW7ajqJ9XPTF3kgcV78pRiaBW3Gq31mgp3WSYjjUBYxre": { prim: "int" },
* // ...
* })
* Mavryk.setGlobalConstantsProvider(globalConst);
* ```
*
*/
setGlobalConstantsProvider(globalConstantsProvider) {
if (!this._options.globalConstantsProvider && typeof globalConstantsProvider === 'undefined') {
const g = new noop_global_constants_provider_1.NoopGlobalConstantsProvider();
this._context.globalConstantsProvider = g;
this._options.globalConstantsProvider = g;
}
else if (typeof globalConstantsProvider !== 'undefined') {
this._context.globalConstantsProvider = globalConstantsProvider;
this._options.globalConstantsProvider = globalConstantsProvider;
}
}
/**
* @description Sets read provider on the Mavryk Taquito instance
* By default reads are done from the RPC usign the RpcReadAdapter class, this can be overridden to read from an indexer that implements the MvReadProvider interface
*
* @param options MvReadProvider to use to interact with the Mavryk network
*
*/
setReadProvider(readProvider) {
const readP = readProvider ? readProvider : new rpc_read_adapter_1.RpcReadAdapter(this._context.rpc);
this._options.readProvider = readP;
this._context.readProvider = readP;
}
/**
* @description Sets parser provider on the Mavryk Taquito instance
*
* @param options parserProvider to use to interact with the Mavryk network
*
*/
setParserProvider(parserProvider) {
if (!this._options.parserProvider && typeof parserProvider === 'undefined') {
const p = new michel_codec_parser_1.MichelCodecParser(this._context);
this._context.parser = p;
this._options.parserProvider = p;
}
else if (typeof parserProvider !== 'undefined') {
this._context.parser = parserProvider;
this._options.parserProvider = parserProvider;
}
}
/**
* @description Sets injector provider on the Mavryk Taquito instance
*
* @param options Injector to use to interact with the Mavryk network by default RpcInjector
*
*/
setInjectorProvider(injectorProvider) {
if (!this._options.injectorProvider && typeof injectorProvider === 'undefined') {
const i = new rpc_injector_1.RpcInjector(this._context);
this._context.injector = i;
this._options.injectorProvider = i;
}
else if (typeof injectorProvider !== 'undefined') {
this._context.injector = injectorProvider;
this._options.injectorProvider = injectorProvider;
}
}
/**
* @description Sets the strategy used for field numbering in Token execute/encode/decode to convert Michelson values to/from javascript objects
* @param strategy a value of type FieldNumberingStrategy that controls how field numbers are calculated
*/
setFieldNumberingStrategy(strategy) {
taquito_michelson_encoder_1.Token.fieldNumberingStrategy = strategy;
}
/**
* @description Provide access to mavryk account management
*/
get mv() {
return this._context.mv;
}
/**
* @description Provide access to smart contract utilities
*/
get contract() {
return this._context.contract;
}
/**
* @description Provide access to mavryk operation preparation utilities
*/
get prepare() {
return this._context.prepare;
}
get wallet() {
return this._wallet;
}
get operation() {
return this._context.operationFactory;
}
/**
* @description Provide access to operation estimation utilities
*/
get estimate() {
return this._context.estimate;
}
/**
* @description Provide access to streaming utilities backed by an streamer implementation
*/
get stream() {
return this._context.stream;
}
/**
* @description Provide access to the currently used rpc client
*/
get rpc() {
return this._context.rpc;
}
/**
* @description Provide access to the currently used signer
*/
get signer() {
return this._context.signer;
}
/**
* @description Provide access to the currently used globalConstantsProvider
*/
get globalConstants() {
return this._context.globalConstantsProvider;
}
/**
* @description Allow to add a module to the MavrykToolkit instance. This method adds the appropriate Providers(s) required by the module to the internal context.
*
* @param module extension to add to the MavrykToolkit instance
*
* @example Mavryk.addExtension(new Tzip16Module());
*/
addExtension(module) {
if (Array.isArray(module)) {
module.forEach((extension) => extension.configureContext(this._context));
}
else {
module.configureContext(this._context);
}
}
getFactory(ctor) {
return (...args) => {
return new ctor(this._context, ...args);
};
}
/**
* @description Gets an object containing the version of Taquito library and git sha of the commit this library is compiled from
*/
getVersionInfo() {
return version_1.VERSION;
}
}
exports.MavrykToolkit = MavrykToolkit;