@@ -1,3 +1,4 @@
1+-- | A key has an associated type which is one of: number, date, string, binary, or array.
12module Database.IndexedDB.IDBKeyRange
23 ( class IDBKeyRange, includes
34 , only
@@ -25,25 +26,56 @@ import Database.IndexedDB.IDBKey.Internal (class IDBKey, Key(..), toKey, extract
2526--------------------
2627-- INTERFACES
2728--
29+-- | The IDBKeyRange interface represents a key range.
2830class IDBKeyRange range where
31+ -- | Returns true if key is included in the range, and false otherwise.
2932 includes :: range -> Key -> Boolean
3033
3134
32−only :: forall a. (IDBKey a) => a -> KeyRange
35+-- | Type alias for open
36+type Open = Boolean
37+
38+
39+-- | Returns a new IDBKeyRange spanning only key.
40+only
41+ :: forall a. (IDBKey a)
42+ => a
43+ -> KeyRange
3344only key =
3445 _only (extractForeign $ toKey key)
3546
3647
37−lowerBound :: forall a. (IDBKey a) => a -> Boolean -> KeyRange
48+-- | Returns a new IDBKeyRange starting at key with no upper bound.
49+-- | If `Open` is `true`, key is not included in the range.
50+lowerBound
51+ :: forall a. (IDBKey a)
52+ => a
53+ -> Open
54+ -> KeyRange
3855lowerBound key open =
3956 Fn.runFn2 _lowerBound (extractForeign $ toKey key) open
4057
4158
42−upperBound :: forall a. (IDBKey a) => a -> Boolean -> KeyRange
59+-- | Returns a new IDBKeyRange with no lower bound and ending at key.
60+-- | If `Open` is `true`, key is not included in the range.
61+upperBound
62+ :: forall a. (IDBKey a)
63+ => a
64+ -> Open
65+ -> KeyRange
4366upperBound key open =
4467 Fn.runFn2 _upperBound (extractForeign $ toKey key) open
4568
46−bound :: forall a. (IDBKey a) => { lower :: a, upper :: a, lowerOpen :: Boolean, upperOpen :: Boolean } -> Maybe KeyRange
69+
70+-- | Returns a new IDBKeyRange spanning from `lower` to `upper`.
71+-- | If `lowerOpen` is `true`, `lower` is not included in the range.
72+-- | If `upperOpen` is `true`, `upper` is not included in the range.
73+-- |
74+-- | It throws a `DataError` if the bound is invalid.
75+bound
76+ :: forall a. (IDBKey a)
77+ => { lower :: a, upper :: a, lowerOpen :: Boolean, upperOpen :: Boolean }
78+ -> Maybe KeyRange
4779bound { lower: key1, upper: key2, lowerOpen: open1, upperOpen: open2 } =
4880 toMaybe
4981 $ Fn.runFn4 _bound (extractForeign $ toKey key1) (extractForeign $ toKey key2) open1 open2
@@ -52,22 +84,34 @@ bound { lower: key1, upper: key2, lowerOpen: open1, upperOpen: open2 } =
5284--------------------
5385-- ATTRIBUTES
5486--
55−lower :: KeyRange -> Maybe Key
87+-- | Returns lower bound if any.
88+lower
89+ :: KeyRange
90+ -> Maybe Key
5691lower =
5792 _lower >>> toMaybe >>> map Key
5893
5994
60−upper :: KeyRange -> Maybe Key
95+-- | Returns upper bound if any.
96+upper
97+ :: KeyRange
98+ -> Maybe Key
6199upper =
62100 _upper >>> toMaybe >>> map Key
63101
64102
65−lowerOpen :: KeyRange -> Boolean
103+-- | Returns true if the lower open flag is set, false otherwise.
104+lowerOpen
105+ :: KeyRange
106+ -> Boolean
66107lowerOpen =
67108 _lowerOpen
68109
69110
70−upperOpen :: KeyRange -> Boolean
111+-- | Returns true if the upper open flag is set, false otherwise.
112+upperOpen
113+ :: KeyRange
114+ -> Boolean
71115upperOpen =
72116 _upperOpen
73117