UNPKG

angular-in-memory-web-api

Version:

An in-memory web api for Angular demos and tests

34 lines 4.08 kB
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { Observable } from 'rxjs'; // Replaces use of RxJS delay. See v0.5.4. /** adds specified delay (in ms) to both next and error channels of the response observable */ export function delayResponse(response$, delayMs) { return new Observable((observer) => { let completePending = false; let nextPending = false; const subscription = response$.subscribe((value) => { nextPending = true; setTimeout(() => { observer.next(value); if (completePending) { observer.complete(); } }, delayMs); }, (error) => setTimeout(() => observer.error(error), delayMs), () => { completePending = true; if (!nextPending) { observer.complete(); } }); return () => { return subscription.unsubscribe(); }; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXktcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taXNjL2FuZ3VsYXItaW4tbWVtb3J5LXdlYi1hcGkvc3JjL2RlbGF5LXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsMENBQTBDO0FBQzFDLDhGQUE4RjtBQUM5RixNQUFNLFVBQVUsYUFBYSxDQUFJLFNBQXdCLEVBQUUsT0FBZTtJQUN4RSxPQUFPLElBQUksVUFBVSxDQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDcEMsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUN0QyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNkLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQzNELEdBQUcsRUFBRTtZQUNILGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxHQUFHLEVBQUU7WUFDVixPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuLy8gUmVwbGFjZXMgdXNlIG9mIFJ4SlMgZGVsYXkuIFNlZSB2MC41LjQuXG4vKiogYWRkcyBzcGVjaWZpZWQgZGVsYXkgKGluIG1zKSB0byBib3RoIG5leHQgYW5kIGVycm9yIGNoYW5uZWxzIG9mIHRoZSByZXNwb25zZSBvYnNlcnZhYmxlICovXG5leHBvcnQgZnVuY3Rpb24gZGVsYXlSZXNwb25zZTxUPihyZXNwb25zZSQ6IE9ic2VydmFibGU8VD4sIGRlbGF5TXM6IG51bWJlcik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKG9ic2VydmVyKSA9PiB7XG4gICAgbGV0IGNvbXBsZXRlUGVuZGluZyA9IGZhbHNlO1xuICAgIGxldCBuZXh0UGVuZGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHJlc3BvbnNlJC5zdWJzY3JpYmUoXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgbmV4dFBlbmRpbmcgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICBpZiAoY29tcGxldGVQZW5kaW5nKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZGVsYXlNcyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiBzZXRUaW1lb3V0KCgpID0+IG9ic2VydmVyLmVycm9yKGVycm9yKSwgZGVsYXlNcyksXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXBsZXRlUGVuZGluZyA9IHRydWU7XG4gICAgICAgIGlmICghbmV4dFBlbmRpbmcpIHtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJldHVybiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==