UNPKG

5.47 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.getImage = exports.getArrayBuffer = exports.getJSON = void 0;
9
10var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
12var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
14var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
16var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
18var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
20var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
21
22function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
24function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
25
26var AJAXError = function (_Error) {
27 (0, _inherits2.default)(AJAXError, _Error);
28
29 var _super = _createSuper(AJAXError);
30
31 function AJAXError(message, status, url) {
32 var _this;
33
34 (0, _classCallCheck2.default)(this, AJAXError);
35 _this = _super.call(this, message);
36 _this.status = void 0;
37 _this.url = void 0;
38 _this.status = status;
39 _this.url = url;
40 _this.name = _this.constructor.name;
41 _this.message = message;
42 return _this;
43 }
44
45 (0, _createClass2.default)(AJAXError, [{
46 key: "toString",
47 value: function toString() {
48 return "".concat(this.name, ": ").concat(this.message, " (").concat(this.status, "): ").concat(this.url);
49 }
50 }]);
51 return AJAXError;
52}((0, _wrapNativeSuper2.default)(Error));
53
54function makeRequest(requestParameters) {
55 var xhr = new XMLHttpRequest();
56 xhr.open('GET', requestParameters.url, true);
57
58 for (var k in requestParameters.headers) {
59 if (requestParameters.headers.hasOwnProperty(k)) {
60 xhr.setRequestHeader(k, requestParameters.headers[k]);
61 }
62 }
63
64 xhr.withCredentials = requestParameters.credentials === 'include';
65 return xhr;
66}
67
68var getJSON = function getJSON(requestParameters, callback) {
69 var xhr = makeRequest(requestParameters);
70 xhr.setRequestHeader('Accept', 'application/json');
71
72 xhr.onerror = function () {
73 callback(new Error(xhr.statusText));
74 };
75
76 xhr.onload = function () {
77 if (xhr.status >= 200 && xhr.status < 300 && xhr.response) {
78 var data;
79
80 try {
81 data = JSON.parse(xhr.response);
82 } catch (err) {
83 return callback(err);
84 }
85
86 callback(null, data);
87 } else {
88 if (xhr.status === 401) {
89 callback(new AJAXError("".concat(xhr.statusText), xhr.status, requestParameters.url));
90 } else {
91 callback(new AJAXError(xhr.statusText, xhr.status, requestParameters.url));
92 }
93 }
94 };
95
96 xhr.send();
97 return xhr;
98};
99
100exports.getJSON = getJSON;
101
102var getArrayBuffer = function getArrayBuffer(requestParameters, callback) {
103 var xhr = makeRequest(requestParameters);
104 xhr.responseType = 'arraybuffer';
105
106 xhr.onerror = function () {
107 callback(new Error(xhr.statusText));
108 };
109
110 xhr.onload = function () {
111 var response = xhr.response;
112
113 if (response.byteLength === 0 && xhr.status === 200) {
114 return callback(new Error('http status 200 returned without content.'));
115 }
116
117 if (xhr.status >= 200 && xhr.status < 300 && xhr.response) {
118 callback(null, {
119 data: response,
120 cacheControl: xhr.getResponseHeader('Cache-Control'),
121 expires: xhr.getResponseHeader('Expires')
122 });
123 } else {
124 callback(new AJAXError(xhr.statusText, xhr.status, requestParameters.url));
125 }
126 };
127
128 xhr.send();
129 return xhr;
130};
131
132exports.getArrayBuffer = getArrayBuffer;
133
134function sameOrigin(url) {
135 var a = window.document.createElement('a');
136 a.href = url;
137 return a.protocol === window.document.location.protocol && a.host === window.document.location.host;
138}
139
140var transparentPngUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=';
141
142var getImage = function getImage(requestParameters, callback) {
143 return getArrayBuffer(requestParameters, function (err, imgData) {
144 if (err) {
145 callback(err);
146 } else if (imgData) {
147 var img = new window.Image();
148 img.crossOrigin = 'anonymous';
149 var URL = window.URL || window.webkitURL;
150
151 img.onload = function () {
152 callback(null, img);
153 URL.revokeObjectURL(img.src);
154 };
155
156 var blob = new window.Blob([new Uint8Array(imgData.data)], {
157 type: 'image/png'
158 });
159 img.src = imgData.data.byteLength ? URL.createObjectURL(blob) : transparentPngUrl;
160 }
161 });
162};
163
164exports.getImage = getImage;
165//# sourceMappingURL=fetchData.js.map
\No newline at end of file