UNPKG

swapable

Version:
86 lines (85 loc) 2.19 kB
"use strict"; /** * This file is part of Swapable shared under AGPL-3.0 * Copyright (C) 2021 Using Blockchain Ltd, Reg No.: 12658136, United Kingdom * * @package Swapable * @author Grégory Saive for Using Blockchain Ltd <greg@ubc.digital> * @license AGPL-3.0 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Context = void 0; // internal dependencies const index_1 = require("../../index"); /** * @class Context * @package Swapable * @subpackage Contracts * @since v1.0.0 * @description Class that describes a digital asset command execution context. */ class Context { constructor( /** * @description Standard revision */ revision, /** * @description Execution actor */ actor, /** * @description Blockchain reader adapter. */ reader, /** * @description Blockchain key provider. */ signer, /** * @description Transaction parameters */ parameters, /** * @description Execution parameters */ argv) { this.revision = revision; this.actor = actor; this.reader = reader; this.signer = signer; this.parameters = parameters; this.argv = argv; } /** * Read an input by its' `name` in `argv` options. * * @param {string} name * @param {Array<CommandOption>} argv * @param {any} defaultValue * @return {CommandOption|undefined} */ getInput(name, defaultValue) { if (undefined === this.argv || !this.argv.length) { return defaultValue; } // find by name and return value const it = this.argv.find(opt => opt.name === name); return it ? it.value : defaultValue; } /** * Set the value of an input by its' `name` in `argv` options. * * @param {string} name * @param {ValueType} value * @return {Context} */ setInput(name, value) { if (undefined === this.argv) { this.argv = []; } this.argv.push(new index_1.CommandOption(name, value)); return this; } } exports.Context = Context;