UNPKG

@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
"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;