UNPKG

@typed/http

Version:

HTTP requests for node and browsers

32 lines 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.http = void 0; const disposable_1 = require("@typed/disposable"); const either_1 = require("@typed/either"); const env_1 = require("@typed/env"); const isValidStatus_1 = require("./isValidStatus"); function* http(url, options = {}) { return yield ({ http }) => env_1.Resume.create((f) => { let hasLoaded = false; const ifNotLoaded = (f) => (...args) => { if (!hasLoaded) { hasLoaded = true; return f(...args); } return disposable_1.Disposable.None; }; return http(url, options, { success: ifNotLoaded((response) => f(handleSuccess(response))), failure: ifNotLoaded((error) => f(either_1.Left.of(error))), }); }); } exports.http = http; function handleSuccess(response) { if (isValidStatus_1.isValidStatus(response)) { return either_1.Right.of(response); } const errorMessage = response.responseText || response.statusText; return either_1.Left.of(new Error(errorMessage)); } //# sourceMappingURL=http.js.map