UNPKG

baqend

Version:

Baqend JavaScript SDK

190 lines 14.4 kB
"use strict"; /* this connector will only be choose in browser compatible environments */ /* eslint no-restricted-globals: ["off", "addEventListener", "removeEventListener"] */ 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.XMLHttpConnector = void 0; var Connector_1 = require("./Connector"); var util_1 = require("../util"); var XMLHttpConnector = /** @class */ (function (_super) { __extends(XMLHttpConnector, _super); function XMLHttpConnector() { return _super !== null && _super.apply(this, arguments) || this; } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-unused-vars XMLHttpConnector.isUsable = function (host, port, secure, basePath) { return typeof XMLHttpRequest !== 'undefined'; }; /** * @inheritDoc */ XMLHttpConnector.prototype.doSend = function (message, request, receive) { var _this = this; if (request.method === 'OAUTH') { if (this.oAuthHandle) { this.oAuthHandle({ status: 409, headers: {}, entity: '{"message": "A new OAuth request was sent."}' }); } localStorage.removeItem('oauth-response'); var handler_1 = function (event) { if (event.key === 'oauth-response' && _this.oAuthHandle && event.newValue) { _this.oAuthHandle(JSON.parse(event.newValue)); } }; this.oAuthHandle = function (msg) { receive(msg); localStorage.removeItem('oauth-response'); removeEventListener('storage', handler_1, false); }; addEventListener('storage', handler_1, false); return; } var xhr = new XMLHttpRequest(); var url = this.origin + this.basePath + request.path; xhr.onreadystatechange = function () { // if we receive an error switch the response type to json if (xhr.responseType && xhr.readyState === 2 && xhr.status >= 400) { xhr.responseType = 'text'; } if (xhr.readyState === 4) { var response_1 = { headers: {}, status: xhr.status, entity: xhr.response || xhr.responseText, }; Connector_1.Connector.RESPONSE_HEADERS.forEach(function (name) { response_1.headers[name] = xhr.getResponseHeader(name) || ''; }); receive(response_1); } }; // Set the message progress callback if (xhr.upload && message.progress()) { xhr.upload.onprogress = message.progress(); } xhr.onerror = function (e) { receive({ status: 0, headers: {}, error: new Error("Fetch of ".concat(url, " failed with a network error ").concat(e)), }); }; xhr.open(request.method, url, true); var entity = request.entity; var headers = request.headers; var headerNames = Object.keys(headers); for (var i = 0, len = headerNames.length; i < len; i += 1) { var headerName = headerNames[i]; xhr.setRequestHeader(headerName, headers[headerName]); } xhr.withCredentials = message.withCredentials; switch (message.responseType()) { case 'arraybuffer': xhr.responseType = 'arraybuffer'; break; case 'blob': case 'data-url': case 'base64': xhr.responseType = 'blob'; break; default: // ignore } xhr.send(entity); }; /** * @inheritDoc */ XMLHttpConnector.prototype.fromFormat = function (response, entity, type) { if (type === 'json') { return JSON.parse(entity); } if (type === 'data-url' || type === 'base64') { var reader_1 = new FileReader(); reader_1.readAsDataURL(entity); return new Promise(function (resolve, reject) { reader_1.onload = resolve; reader_1.onerror = reject; }).then(function () { var result = reader_1.result; if (type === 'base64' && typeof result === 'string') { result = result.substring(result.indexOf(',') + 1); } return result; }); } return entity; }; /** * @inheritDoc */ XMLHttpConnector.prototype.toFormat = function (message) { var type = message.request.type; if (type) { var entity = message.request.entity; var mimeType = message.mimeType(); switch (type) { case 'blob': mimeType = mimeType || entity.type; break; case 'arraybuffer': case 'form': break; case 'data-url': { var match = entity.match(/^data:(.+?)(;base64)?,(.*)$/); var isBase64 = match[2]; // eslint-disable-next-line prefer-destructuring entity = match[3]; type = 'blob'; mimeType = mimeType || match[1]; if (!isBase64) { entity = decodeURIComponent(entity); break; } } // fallthrough case 'base64': { var binaryStr = (0, util_1.atob)(entity); var len = binaryStr.length; var array = new Uint8Array(len); for (var i = 0; i < len; i += 1) { array[i] = binaryStr.charCodeAt(i); } type = 'blob'; entity = new Blob([array], { type: mimeType }); break; } case 'json': if (typeof entity !== 'string') { entity = JSON.stringify(entity); } break; case 'text': break; default: throw new Error("Supported request format:".concat(type)); } message.entity(entity, type).mimeType(mimeType); } }; return XMLHttpConnector; }(Connector_1.Connector)); exports.XMLHttpConnector = XMLHttpConnector; Connector_1.Connector.connectors.push(XMLHttpConnector); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MSHR0cENvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb25uZWN0b3IvWE1MSHR0cENvbm5lY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkVBQTJFO0FBQzNFLHNGQUFzRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRGLHlDQUVxQjtBQUNyQixnQ0FBK0I7QUFHL0I7SUFBc0Msb0NBQVM7SUFBL0M7O0lBNExBLENBQUM7SUF6TEM7O09BRUc7SUFDSCw2REFBNkQ7SUFDdEQseUJBQVEsR0FBZixVQUFnQixJQUFZLEVBQUUsSUFBWSxFQUFFLE1BQWUsRUFBRSxRQUFnQjtRQUMzRSxPQUFPLE9BQU8sY0FBYyxLQUFLLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQ0FBTSxHQUFOLFVBQU8sT0FBZ0IsRUFBRSxPQUFnQixFQUFFLE9BQWlCO1FBQTVELGlCQXdGQztRQXZGQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsOENBQThDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hHO1lBRUQsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTFDLElBQU0sU0FBTyxHQUFHLFVBQUMsS0FBbUI7Z0JBQ2xDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsSUFBSSxLQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0JBQ3hFLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDOUM7WUFDSCxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMs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