UNPKG

@react-native-firebase/app

Version:

A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto

72 lines (69 loc) 2.05 kB
import cmp from './lib/cmp.js'; import { DataError } from './lib/errors.js'; import valueToKey from './lib/valueToKey.js'; // http://www.w3.org/TR/2015/REC-IndexedDB-20150108/#range-concept class FDBKeyRange { static only(value) { if (arguments.length === 0) { throw new TypeError(); } value = valueToKey(value); return new FDBKeyRange(value, value, false, false); } static lowerBound(lower, open = false) { if (arguments.length === 0) { throw new TypeError(); } lower = valueToKey(lower); return new FDBKeyRange(lower, undefined, open, true); } static upperBound(upper, open = false) { if (arguments.length === 0) { throw new TypeError(); } upper = valueToKey(upper); return new FDBKeyRange(undefined, upper, true, open); } static bound(lower, upper, lowerOpen = false, upperOpen = false) { if (arguments.length < 2) { throw new TypeError(); } const cmpResult = cmp(lower, upper); if (cmpResult === 1 || (cmpResult === 0 && (lowerOpen || upperOpen))) { throw new DataError(); } lower = valueToKey(lower); upper = valueToKey(upper); return new FDBKeyRange(lower, upper, lowerOpen, upperOpen); } constructor(lower, upper, lowerOpen, upperOpen) { this.lower = lower; this.upper = upper; this.lowerOpen = lowerOpen; this.upperOpen = upperOpen; } // https://w3c.github.io/IndexedDB/#dom-idbkeyrange-includes includes(key) { if (arguments.length === 0) { throw new TypeError(); } key = valueToKey(key); if (this.lower !== undefined) { const cmpResult = cmp(this.lower, key); if (cmpResult === 1 || (cmpResult === 0 && this.lowerOpen)) { return false; } } if (this.upper !== undefined) { const cmpResult = cmp(this.upper, key); if (cmpResult === -1 || (cmpResult === 0 && this.upperOpen)) { return false; } } return true; } toString() { return '[object IDBKeyRange]'; } } export default FDBKeyRange;