UNPKG

@splitsoftware/splitio-commons

Version:
35 lines (34 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.segmentChangesFetcherFactory = void 0; var tslib_1 = require("tslib"); function greedyFetch(fetchSegmentChanges, since, segmentName, noCache, targetTill) { return fetchSegmentChanges(since, segmentName, noCache, targetTill) .then(function (resp) { return resp.json(); }) .then(function (json) { var since = json.since, till = json.till; if (since === till) { return [json]; } else { return Promise.all([json, greedyFetch(fetchSegmentChanges, till, segmentName, noCache, targetTill)]).then(function (flatMe) { return (0, tslib_1.__spreadArray)([flatMe[0]], flatMe[1], true); }); } }); } /** * Factory of SegmentChanges fetcher. * SegmentChanges fetcher is a wrapper around `segmentChanges` API service that parses the response and handle errors and retries. */ function segmentChangesFetcherFactory(fetchSegmentChanges) { return function segmentChangesFetcher(since, segmentName, noCache, till, // Optional decorator for `fetchSegmentChanges` promise, such as timeout or time tracker decorator) { var segmentsPromise = greedyFetch(fetchSegmentChanges, since, segmentName, noCache, till); if (decorator) segmentsPromise = decorator(segmentsPromise); return segmentsPromise; }; } exports.segmentChangesFetcherFactory = segmentChangesFetcherFactory;