UNPKG

baqend

Version:

Baqend JavaScript SDK

157 lines 12.1 kB
"use strict"; /* this connector will only be choose in browser compatible environments */ /* eslint no-restricted-globals: ["off", "location", "addEventListener"] */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.IFrameConnector = void 0; var Connector_1 = require("./Connector"); var XMLHttpConnector_1 = require("./XMLHttpConnector"); var IFrameConnector = /** @class */ (function (_super) { __extends(IFrameConnector, _super); function IFrameConnector(host, port, secure, basePath) { var _this = _super.call(this, host, port, secure, basePath) || this; _this.queue = null; _this.connected = false; _this.mid = 0; _this.messages = {}; _this.doReceive = _this.doReceive.bind(_this); addEventListener('message', _this.doReceive, false); return _this; } /** * Indicates if this connector implementation is usable for the given host and port * @param host * @param port * @param secure * @return */ IFrameConnector.isUsable = function (host, port, secure) { // we use location directly here, since there exists environments, which provide a location and a document but // no window object if (typeof location === 'undefined' || typeof document === 'undefined') { return false; } var locationSecure = location.protocol === 'https:'; var locationPort = location.port || (locationSecure ? 443 : 80); return location.hostname !== host || locationPort !== port || locationSecure !== secure; }; IFrameConnector.prototype.load = function (message) { var _a; var url = this.origin + this.basePath + message.path(); var name = "baqend-sdk-connect-".concat(Math.floor(Math.random() * 100000)); this.iframe = document.createElement('iframe'); this.iframe.name = name; this.iframe.setAttribute('style', IFrameConnector.style); document.body.appendChild(this.iframe); var form = document.createElement('form'); form.target = name; form.method = 'post'; form.action = url; form.setAttribute('style', IFrameConnector.style); var token = (_a = message.tokenStorage()) === null || _a === void 0 ? void 0 : _a.token; if (token) { var input = document.createElement('input'); input.type = 'hidden'; input.name = 'BAT'; input.value = token; form.appendChild(input); } document.body.appendChild(form); this.queue = []; this.iframe.addEventListener('load', this.onLoad.bind(this), false); form.submit(); }; IFrameConnector.prototype.onLoad = function () { if (!this.queue) { return; } var queue = this.queue; for (var i = 0; i < queue.length; i += 1) { this.postMessage(queue[i]); } this.queue = null; }; /** * @inheritDoc */ IFrameConnector.prototype.doSend = function (message, request, receive) { var _this = this; // binary data will be send and received directly if (message.isBinary) { _super.prototype.doSend.call(this, message, request, receive); return; } if (!this.iframe) { // ensure that we get a local resource cache hit // eslint-disable-next-line no-param-reassign message.request.path = '/connect'; this.load(message); } var msg = { mid: this.mid += 1, method: request.method, path: request.path, headers: request.headers, entity: request.entity, responseHeaders: Connector_1.Connector.RESPONSE_HEADERS, }; this.messages[msg.mid] = receive; var strMsg = JSON.stringify(msg); if (this.queue) { this.queue.push(strMsg); } else { this.postMessage(strMsg); } if (!this.connected) { setTimeout(function () { if (_this.messages[msg.mid]) { delete _this.messages[msg.mid]; receive({ status: 0, error: new Error('Connection refused.'), headers: {}, }); } }, 10000); } }; IFrameConnector.prototype.postMessage = function (msg) { this.iframe.contentWindow.postMessage(msg, this.origin); }; IFrameConnector.prototype.doReceive = function (event) { if (event.origin !== this.origin || event.data[0] !== '{') { return; } var msg = JSON.parse(event.data); var receive = this.messages[msg.mid]; if (receive) { delete this.messages[msg.mid]; this.connected = true; receive({ status: msg.status, headers: msg.headers, entity: msg.entity, }); } }; IFrameConnector.style = 'width:1px;height:1px;position:absolute;top:-10px;left:-10px;'; return IFrameConnector; }(XMLHttpConnector_1.XMLHttpConnector)); exports.IFrameConnector = IFrameConnector; Connector_1.Connector.connectors.push(IFrameConnector); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUZyYW1lQ29ubmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2Nvbm5lY3Rvci9JRnJhbWVDb25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJFQUEyRTtBQUMzRSwyRUFBMkU7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRSx5Q0FBMkQ7QUFDM0QsdURBQXNEO0FBSXREO0lBQXFDLG1DQUFnQjtJQWlDbkQseUJBQVksSUFBWSxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsUUFBZ0I7UUFBekUsWUFDRSxrQkFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FPcEM7UUFoQ08sV0FBSyxHQUFpQixJQUFJLENBQUM7UUFFM0IsZUFBUyxHQUFZLEtBQUssQ0FBQztRQXlCakMsS0FBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDYixLQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBRTNDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxLQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDOztJQUNyRCxDQUFDO0lBNUJEOzs7Ozs7T0FNRztJQUNJLHdCQUFRLEdBQWYsVUFBZ0IsSUFBWSxFQUFFLElBQVksRUFBRSxNQUFlO1FBQ3pELDhHQUE4RztRQUM5RyxtQkFBbUI7UUFDbkIsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQ3RFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztRQUN0RCxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxH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