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}}>.
-
-