UNPKG

eosjs-signature-provider-interface

Version:

An abstract class that implements the EOSJS SignatureProvider interface, and provides helper methods for interacting with an authenticator using the EOSIO Authentication Transport Protocol Specification.

79 lines 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var interfaces_1 = require("./interfaces"); exports.instanceOfRequestEnvelope = function (data) { if (!instanceOfObject(data)) { return false; } var requestEnvelope = data; return hasRequiredKeys(requestEnvelope, ['id', 'declaredDomain', 'returnUrl', 'request']) && hasAtLeastOneKey(requestEnvelope.request, ['transactionSignature', 'selectiveDisclosure']); }; // tslint:disable-next-line:max-line-length exports.instanceOfSelectiveDisclosureRequest = function (request) { return interfaces_1.EnvelopeDataType.SELECTIVE_DISCLOSURE in request; }; // tslint:disable-next-line:max-line-length exports.instanceOfTransactionSignatureRequest = function (request) { return interfaces_1.EnvelopeDataType.TRANSACTION_SIGNATURE in request; }; exports.instanceOfResponseEnvelope = function (data) { if (!instanceOfObject(data)) { return false; } var responseEnvelope = data; return hasRequiredKeys(responseEnvelope, ['id', 'response']) && hasAtLeastOneKey(responseEnvelope.response, ['transactionSignature', 'selectiveDisclosure']); }; // tslint:disable-next-line:max-line-length exports.instanceOfSelectiveDisclosureResponse = function (response) { return interfaces_1.EnvelopeDataType.SELECTIVE_DISCLOSURE in response; }; // tslint:disable-next-line:max-line-length exports.instanceOfTransactionSignatureResponse = function (response) { return interfaces_1.EnvelopeDataType.TRANSACTION_SIGNATURE in response; }; exports.instanceOfAppManifest = function (object) { var hasValidChainManifests = isValidArray(object.manifests) ? object.manifests.every(function (chainManifest) { return exports.instanceOfChainManifest(chainManifest); }) : false; return hasRequiredKeys(object, ['spec_version', 'manifests']) && hasValidChainManifests; }; exports.instanceOfChainManifest = function (object) { return hasRequiredKeys(object, ['chainId', 'manifest']) && exports.instanceOfManifest(object.manifest); }; exports.instanceOfManifest = function (object) { var hasValidWhitelist = isValidArray(object.whitelist) ? object.whitelist.every(function (contractAction) { return instanceOfContractAction(contractAction); }) : false; return hasRequiredKeys(object, ['account', 'domain', 'appmeta', 'whitelist']) && hasValidWhitelist; }; exports.instanceOfAppMetadata = function (object) { var hasValidChainInfo = isValidArray(object.chains) ? object.chains.every(function (chainInfo) { return instanceOfChainInfo(chainInfo); }) : false; return hasRequiredKeys(object, ['spec_version', 'name', 'shortname', 'scope', 'apphome', 'icon', 'chains']) && hasValidChainInfo; }; var instanceOfChainInfo = function (object) { return hasRequiredKeys(object, ['chainId', 'chainName', 'icon']); }; var instanceOfContractAction = function (object) { return hasRequiredKeys(object, ['contract', 'action']); }; var instanceOfObject = function (data) { return typeof data === 'object' && data != null; }; var isValidArray = function (array) { return Array.isArray(array) && array.length; }; var hasRequiredKeys = function (object, keys) { return keys.every(function (key) { return key in object; }); }; var hasAtLeastOneKey = function (object, keys) { return keys.reduce(function (valid, key) { return valid || key in object; }, false); }; //# sourceMappingURL=instanceOf.js.map