swapable
Version:
Swapable: Automated Liquidity Pools
86 lines (85 loc) • 2.19 kB
JavaScript
;
/**
* 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;