@jameshclrk/rxdb-hooks
Version:
React hooks for integrating with RxDB
46 lines (45 loc) • 1.41 kB
JavaScript
;
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;