diff --git a/index.bs b/index.bs index 6b76e40..889daaf 100644 --- a/index.bs +++ b/index.bs @@ -2726,6 +2726,7 @@ interface IDBObjectStore { optional [EnforceRange] unsigned long count); [NewObject] IDBRequest getAllKeys(optional any query, optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest getAllEntries(optional IDBGetAllEntriesOptions options = {}); [NewObject] IDBRequest count(optional any query); [NewObject] IDBRequest openCursor(optional any query, @@ -2745,6 +2746,12 @@ dictionary IDBIndexParameters { boolean unique = false; boolean multiEntry = false; }; + +dictionary IDBGetAllEntriesOptions { + any query = null; + [EnforceRange] unsigned long count; + IDBCursorDirection direction = "next"; +};
@@ -3097,6 +3104,14 @@ The clear() method steps are: If successful, |request|'s {{IDBRequest/result}} will be an {{Array}} of the [=/keys=]. + : |request| = |store| . {{IDBObjectStore/getAllEntries()|getAllEntries}}(|options|) + :: + Retrieves multiple [=/keys=] and [=/values=] of [=object-store/records=]. + + The |query| option specifies a [=/key=] or [=key range=] to match. The |count| option limits the number or records matched. Set the |direction| option to "{{IDBCursorDirection/next}}" to retrieve the first |count| records, or "{{IDBCursorDirection/prev}}" to return the last |count| records. + + If successful, |request|'s {{IDBRequest/result}} will be an {{Array}}, with each member being an {{Array}} with a [=/key=] [=/value=] pair. + : |request| = |store| . {{IDBObjectStore/count()|count}}(|query|) :: @@ -3193,8 +3208,7 @@ The getAll(|query|, |count|) method steps a [=/converting a value to a key range=] with |query|. Rethrow any exceptions. -1. Let |operation| be an algorithm to run [=retrieve multiple values from an object store=] with [=ECMAScript/the current Realm record=], |store|, |range|, and |count| if given. - +1. Let |operation| be an algorithm to run [=retrieve multiple items from an object store=] with [=ECMAScript/the current Realm record=], |store|, |range|, "value", and |count| if given. 1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. @@ -3227,7 +3241,7 @@ The getAllKeys(|query|, |count|) method ste [=/converting a value to a key range=] with |query|. Rethrow any exceptions. -1. Let |operation| be an algorithm to run [=retrieve multiple keys from an object store=] with |store|, |range|, and |count| if given. +1. Let |operation| be an algorithm to run [=retrieve multiple items from an object store=] with [=ECMAScript/the current Realm record=], |store|, |range|, "key", and |count| if given. 1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. @@ -3242,6 +3256,37 @@ will be retrieved. +
+ +The getAllEntries(|query|, |count|) method steps are: + +1. Let |transaction| be [=/this=]'s [=object-store-handle/transaction=]. + +1. Let |store| be [=/this=]'s [=object-store-handle/object store=]. + +1. If |store| has been deleted, then [=exception/throw=] an "{{InvalidStateError}}" {{DOMException}}. + +1. If |transaction|'s [=transaction/state=] is not [=transaction/active=], then [=exception/throw=] a "{{TransactionInactiveError}}" {{DOMException}}. + +1. Let |range| be the result of [=/converting a value to a key range=] with |query|. Rethrow any exceptions. + +1. Let |operation| be an algorithm to run [=retrieve multiple items from an object store=] with [=ECMAScript/the current Realm record=], |store|, |range|, "key+value", and |count| if given. + +1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. + +
+ + + + + +
The count(|query|) method steps are: @@ -3617,6 +3662,7 @@ interface IDBIndex { optional [EnforceRange] unsigned long count); [NewObject] IDBRequest getAllKeys(optional any query, optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest getAllEntries(optional IDBGetAllEntriesOptions options = {}); [NewObject] IDBRequest count(optional any query); [NewObject] IDBRequest openCursor(optional any query, @@ -3765,6 +3811,13 @@ return [=/this=]'s [=index-handle/index=]'s [=index/unique flag=]. If successful, |request|'s {{IDBRequest/result}} will be an {{Array}} of the [=/keys=]. + + : |request| = |index| . {{IDBIndex/getAllEntries()|getAllEntries}}(|query| [, |count|]) + :: + Retrieves the [=/keys=], [=/values=], and index [=/keys=] of [=object-store/records=] matching the given [=/key=] or [=key range=] in |query| (up to |count| if given). + + If successful, |request|'s {{IDBRequest/result}} will be an {{Array}}, with each member being an {{Array}} with [=/key=], [=/value=], and index [=/key=]. + : |request| = |index| . {{IDBIndex/count()|count}}(|query|) :: @@ -3862,7 +3915,7 @@ The getAll(|query|, |count|) method steps are: [=/converting a value to a key range=] with |query|. Rethrow any exceptions. -1. Let |operation| be an algorithm to run [=retrieve multiple referenced values from an index=] with [=ECMAScript/the current Realm record=], |index|, |range|, and |count| if given. +1. Let |operation| be an algorithm to run [=retrieve multiple items from an index=] with [=ECMAScript/the current Realm record=], |index|, |range|, "value", and |count| if given. 1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. @@ -3895,7 +3948,7 @@ The getAllKeys(|query|, |count|) method steps are [=/converting a value to a key range=] with |query|. Rethrow any exceptions. -1. Let |operation| be an algorithm to run [=retrieve multiple values from an index=] with |index|, |range|, and |count| if given. +1. Let |operation| be an algorithm to run [=retrieve multiple items from an index=] with [=ECMAScript/the current Realm record=], |index|, |range|, "key", and |count| if given. 1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. @@ -3910,6 +3963,37 @@ will be retrieved. +
+ +The getAllEntries(|query|, |count|) method steps are: + +1. Let |transaction| be [=/this=]'s [=index-handle/transaction=]. + +1. Let |index| be [=/this=]'s [=index-handle/index=]. + +1. If |index| or |index|'s [=/object store=] has been deleted, then [=exception/throw=] an "{{InvalidStateError}}" {{DOMException}}. + +1. If |transaction|'s [=transaction/state=] is not [=transaction/active=], then [=exception/throw=] a "{{TransactionInactiveError}}" {{DOMException}}. + +1. Let |range| be the result of [=/converting a value to a key range=] with |query|. Rethrow any exceptions. + +1. Let |operation| be an algorithm to run [=retrieve multiple items from an index=] with [=ECMAScript/the current Realm record=], |index|, |range|, "key+value+indexKey", and |count| if given. + +1. Return the result (an {{IDBRequest}}) of running [=asynchronously execute a request=] with [=/this=] and |operation|. + +
+ + + + + +
The count(|query|) method steps are: @@ -5717,30 +5801,6 @@ To retrieve a value from an object store with
-
- -To retrieve multiple values from an object -store with |targetRealm|, |store|, |range| and optional |count|, run these steps: - -1. If |count| is not given or is 0 (zero), let |count| be infinity. - -1. Let |records| be a [=/list=] containing the first |count| [=object-store/records=] - in |store|'s [=object-store/list of records=] whose [=/key=] is - [=in=] |range|. - -1. Let |list| be an empty [=/list=]. - -1. [=list/For each=] |record| of |records|: - - 1. Let |serialized| be |record|'s [=/value=]. - 1. Let |entry| be [=ECMAScript/!=] [$StructuredDeserialize$](|serialized|, |targetRealm|). - 1. Append |entry| to |list|. - -1. Return |list| converted to a [=/sequence=]<{{any}}>. - -
- -
To retrieve a key from an object store @@ -5760,24 +5820,38 @@ with |store| and |range|, run these steps:
-To retrieve multiple keys from an object store -with |store|, |range| and optional |count|, run these steps: +To retrieve multiple items from an object store with |targetRealm|, |store|, |range|, |kind| and optional |count|, run these steps: 1. If |count| is not given or is 0 (zero), let |count| be infinity. -1. Let |records| be a list containing the first |count| [=object-store/records=] - in |store|'s [=object-store/list of records=] whose [=/key=] is - [=in=] |range|. +1. Let |records| be a list containing the first |count| [=object-store/records=] in |store|'s [=object-store/list of records=] whose [=/key=] is [=in=] |range|. 1. Let |list| be an empty [=/list=]. -1. [=list/For each=] |record| of |records|: +1. [=list/For each=] |record| of |records|, switching on |kind|: - 1. Let |entry| be the result of [=/converting a - key to a value=] with |record|'s key. - 1. Append |entry| to |list|. +
+ : "key" + :: + 1. Let |key| be the result of [=/converting a key to a value=] with |record|'s key. + 1. [=list/Append=] |key| to |list|. + + : "value" + :: + 1. Let |serialized| be |record|'s [=/value=]. + 1. Let |value| be [=ECMAScript/!=] [$StructuredDeserialize$](|serialized|, |targetRealm|). + 1. [=list/Append=] |value| to |list|. -1. Return |list| converted to a [=/sequence=]<{{any}}>. + : "key+value" + :: + 1. Let |key| be the result of [=/converting a key to a value=] with |record|'s key. + 1. Let |serialized| be |record|'s [=/value=]. + 1. Let |value| be [=ECMAScript/!=] [$StructuredDeserialize$](|serialized|, |targetRealm|). + 1. [=list/Append=] « |key|, |value| » to |list|. + +
+ +1. Return |list|.
@@ -5802,29 +5876,6 @@ with |targetRealm|, |index| and |range|, run these steps:
- -
- -To retrieve multiple referenced values from an -index with |targetRealm|, |index|, |range| and optional |count|, run these steps: - -1. If |count| is not given or is 0 (zero), let |count| be infinity. - -1. Let |records| be a list containing the first |count| [=object-store/records=] - in |index|'s [=index/list of records=] whose [=index/key=] is [=in=] |range|. - -1. Let |list| be an empty [=/list=]. - -1. [=list/For each=] |record| of |records|: - - 1. Let |serialized| be |record|'s [=index/referenced value=]. - 1. Let |entry| be [=ECMAScript/!=] [$StructuredDeserialize$](|serialized|, |targetRealm|). - 1. Append |entry| to |list|. - -1. Return |list| converted to a [=/sequence=]<{{any}}>. - -
-