UNPKG

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
"use strict"; 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