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
JavaScript
;
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