UNPKG

@bacons/expo-metro-runtime

Version:

Tools for making experimental Metro bundler features work

57 lines 2.33 kB
"use strict"; /** * Copyright (c) Evan Bacon. * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchAsync = void 0; // @ts-expect-error: untyped const RCTNetworking_1 = __importDefault(require("react-native/Libraries/Network/RCTNetworking")); const react_native_1 = require("react-native"); function fetchAsync(url) { let id = null; let responseText = null; let headers = {}; let dataListener = null; let completeListener = null; let responseListener = null; return new Promise((resolve, reject) => { dataListener = RCTNetworking_1.default.addListener("didReceiveNetworkData", ([requestId, response]) => { if (requestId === id) { responseText = response; } }); responseListener = RCTNetworking_1.default.addListener("didReceiveNetworkResponse", ([requestId, status, responseHeaders]) => { if (requestId === id) { headers = responseHeaders; } }); completeListener = RCTNetworking_1.default.addListener("didCompleteNetworkResponse", ([requestId, error]) => { if (requestId === id) { if (error) { reject(error); } else { resolve({ body: responseText, headers }); } } }); RCTNetworking_1.default.sendRequest("GET", "asyncRequest", url, { "expo-platform": react_native_1.Platform.OS, }, "", "text", false, 0, (requestId) => { id = requestId; }, true); }).finally(() => { dataListener === null || dataListener === void 0 ? void 0 : dataListener.remove(); completeListener === null || completeListener === void 0 ? void 0 : completeListener.remove(); responseListener === null || responseListener === void 0 ? void 0 : responseListener.remove(); }); } exports.fetchAsync = fetchAsync; //# sourceMappingURL=fetchAsync.native.js.map