eosjs-window-message-signature-provider-interface
Version:
A Signature Provider Interface for communicating with an authenticator over the Window Messaging API using the EOSIO Auth Transport Protocol.
51 lines • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var eosjs_signature_provider_interface_1 = require("eosjs-signature-provider-interface");
var ExpiringLocalStorageProvider_1 = require("./ExpiringLocalStorageProvider");
var SignatureProvider = /** @class */ (function (_super) {
tslib_1.__extends(SignatureProvider, _super);
function SignatureProvider(params) {
var _this = _super.call(this, params) || this;
_this.onWindowMessage = function (event) {
var packedResponseEnvelope = event.data;
var responseEnvelope;
try {
responseEnvelope = eosjs_signature_provider_interface_1.unpackEnvelope(packedResponseEnvelope);
}
catch (e) {
// Data coming over message event was from some other source; ignore it
return;
}
if (!eosjs_signature_provider_interface_1.instanceOfResponseEnvelope(responseEnvelope)) {
return;
}
_this.handleResponse(responseEnvelope);
};
_this.localStorage = new ExpiringLocalStorageProvider_1.ExpiringLocalStorageProvider();
_this.expiryMs = 100 * 60 * 1000; // Cache for 100 minutes
window.addEventListener('message', _this.onWindowMessage);
return _this;
}
SignatureProvider.prototype.sendRequest = function (requestEnvelope) {
var packedRequestEnvelope = eosjs_signature_provider_interface_1.packEnvelope(requestEnvelope);
// TODO: Allow '*' origin if on a development env, and only tighten down to declaredDomain if on production env.
window.postMessage(packedRequestEnvelope, requestEnvelope.declaredDomain);
};
SignatureProvider.prototype.getCachedKeys = function () {
var keys = this.localStorage.get('publicKeys');
return keys || [];
};
SignatureProvider.prototype.setCachedKeys = function (keys) {
this.localStorage.set('publicKeys', keys, this.expiryMs);
};
SignatureProvider.prototype.clearCachedKeys = function () {
this.localStorage.remove('publicKeys');
};
SignatureProvider.prototype.cleanUp = function () {
window.removeEventListener('message', this.onWindowMessage);
};
return SignatureProvider;
}(eosjs_signature_provider_interface_1.SignatureProviderInterface));
exports.SignatureProvider = SignatureProvider;
//# sourceMappingURL=SignatureProvider.js.map