UNPKG

@builder.io/sdk

Version:
74 lines 3.35 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetch = exports.tinyFetch = void 0; var promise_class_1 = __importDefault(require("../classes/promise.class")); var server_only_require_function_1 = __importDefault(require("./server-only-require.function")); function promiseResolve(value) { return new promise_class_1.default(function (resolve) { return resolve(value); }); } // Adapted from https://raw.githubusercontent.com/developit/unfetch/master/src/index.mjs function tinyFetch(url, options) { if (options === void 0) { options = {}; } return new promise_class_1.default(function (resolve, reject) { var request = new XMLHttpRequest(); request.open(options.method || 'get', url, true); if (options.headers) { for (var i in options.headers) { request.setRequestHeader(i, options.headers[i]); } } request.withCredentials = options.credentials === 'include'; request.onload = function () { resolve(response()); }; request.onerror = reject; request.send(options.body); function response() { var keys = []; var all = []; var headers = {}; var header = undefined; request .getAllResponseHeaders() .replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (_match, _key, value) { var key = _key; keys.push((key = key.toLowerCase())); all.push([key, value]); header = headers[key]; headers[key] = header ? "".concat(header, ",").concat(value) : value; return ''; }); return { ok: ((request.status / 100) | 0) === 2, status: request.status, statusText: request.statusText, url: request.responseURL, clone: response, text: function () { return promiseResolve(request.responseText); }, json: function () { return promiseResolve(request.responseText).then(JSON.parse); }, blob: function () { return promiseResolve(new Blob([request.response])); }, headers: { keys: function () { return keys; }, entries: function () { return all; }, get: function (n) { return headers[n.toLowerCase()]; }, has: function (n) { return n.toLowerCase() in headers; }, }, }; } }); } exports.tinyFetch = tinyFetch; // If fetch is defined, in the browser, via polyfill, or in a Cloudflare worker, use it. if (globalThis.fetch) { exports.fetch = globalThis.fetch; } // If fetch is not defined, in a Node.js environment, use node-fetch. if (typeof window === 'undefined') { exports.fetch !== null && exports.fetch !== void 0 ? exports.fetch : (exports.fetch = (0, server_only_require_function_1.default)('node-fetch')); } // Otherwise, use tiny-fetch. exports.fetch !== null && exports.fetch !== void 0 ? exports.fetch : (exports.fetch = tinyFetch); //# sourceMappingURL=fetch.function.js.map