UNPKG

@jameshclrk/rxdb-hooks

Version:

React hooks for integrating with RxDB

46 lines (45 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isRxQuery = exports.isObject = exports.getCancelablePromise = void 0; /** * Makes promise cancelable. * Wraps original promise in an object that exposes said promise * and also exposes a cancel() method for canceling the promise. * Canceling the promise will prevent it from resolving/rejecting once the * the underlying promise resolves/reject. */ var getCancelablePromise = function (promise) { var hasCanceled = false; var wrappedPromise = new Promise(function (resolve, reject) { promise.then(function (val) { if (!hasCanceled) { resolve(val); } }, function (error) { if (!hasCanceled) { reject(error); } }); }); return [ wrappedPromise, function () { hasCanceled = true; }, ]; }; exports.getCancelablePromise = getCancelablePromise; var isObject = function (val) { return typeof val === 'object' && val !== null; }; exports.isObject = isObject; var isRxQuery = function (val) { return ((0, exports.isObject)(val) && 'skip' in val && 'limit' in val && '$' in val && (0, exports.isObject)(val.$) && 'subscribe' in val.$ && typeof val.$.subscribe === 'function'); }; exports.isRxQuery = isRxQuery;