@@ -11,6 +11,45 @@ package org.scalajs.dom.raw
1111
1212import scala .scalajs .js
1313import scala .scalajs .js .annotation ._
14+ import scala .scalajs .js .|
15+
16+ /**
17+ * IndexedDB transaction mode
18+ * Provides constants for IDB Transaction modes
19+ * These constants have been removed from browser support
20+ * and replaced by String values
21+ */
22+ @ js.native
23+ sealed trait IDBTransactionMode extends js.Any
24+
25+ object IDBTransactionMode {
26+
27+ /**
28+ * Allows data to be read but not changed.
29+ * It is the default transaction mode.
30+ *
31+ * MDN
32+ */
33+ val READ_ONLY = " readonly" .asInstanceOf [IDBTransactionMode ]
34+
35+ /**
36+ * Allows any operation to be performed, including ones that delete and create object
37+ * stores and indexes. This mode is for updating the version number of transactions
38+ * that were started using the setVersion() method of IDBDatabase objects.
39+ * Transactions of this mode cannot run concurrently with other transactions.
40+ *
41+ * MDN
42+ */
43+ val VERSION_CHANGE = " versionchange" .asInstanceOf [IDBTransactionMode ]
44+
45+ /**
46+ * Allows reading and writing of data in existing data stores to be changed.
47+ *
48+ * MDN
49+ */
50+ val READ_WRITE = " readwrite" .asInstanceOf [IDBTransactionMode ]
51+
52+ }
1453
1554/**
1655 * The IDBObjectStore interface of the IndexedDB API represents an object store in
@@ -86,8 +125,25 @@ class IDBObjectStore extends js.Object {
86125 */
87126 def put (value : js.Any , key : js.Any = js.native): IDBRequest = js.native
88127
89- def openCursor (range : js.Any = js.native,
90- direction : String = js.native): IDBRequest = js.native
128+ /**
129+ * The method sets the position of the cursor to the appropriate record,
130+ * based on the specified direction.
131+ *
132+ * MDN
133+ */
134+ def openCursor (range : js.UndefOr [IDBKeyRange | js.Any ] = js.undefined,
135+ direction : js.UndefOr [
136+ IDBCursorDirection ] = js.undefined): IDBRequest = js.native
137+
138+ /**
139+ * The method sets the position of the cursor to the appropriate key,
140+ * based on the specified direction.
141+ *
142+ * MDN
143+ */
144+ def openKeyCursor (range : js.UndefOr [IDBKeyRange | js.Any ] = js.undefined,
145+ direction : js.UndefOr [
146+ IDBCursorDirection ] = js.undefined): IDBRequest = js.native
91147
92148 /**
93149 * Note that this method must be called only from a VersionChange transaction mode
@@ -113,6 +169,32 @@ class IDBObjectStore extends js.Object {
113169 */
114170 def get (key : js.Any ): IDBRequest = js.native
115171
172+ /**
173+ * If a value is successfully found, then a structured clone of it is created and set as
174+ * the result of the request object.
175+ *
176+ * MDN
177+ */
178+ def getAll (query : js.UndefOr [IDBKeyRange | js.Any ] = js.undefined,
179+ count : js.UndefOr [Int ] = js.undefined): IDBRequest = js.native
180+
181+ /**
182+ * If a value is successfully found, then a structured clone of it is created and set as
183+ * the result of the request object.
184+ *
185+ * MDN
186+ */
187+ def getAllKeys (query : js.UndefOr [IDBKeyRange | js.Any ] = js.undefined,
188+ count : js.UndefOr [Int ] = js.undefined): IDBRequest = js.native
189+
190+ /**
191+ * If a value is successfully found, then a structured clone of it is created and set as
192+ * the result of the request object.
193+ *
194+ * MDN
195+ */
196+ def getKey (key : js.Any ): IDBRequest = js.native
197+
116198 /**
117199 * returns an IDBRequest object, and, in a separate thread, deletes the current
118200 * object store.
@@ -230,7 +312,7 @@ class IDBIndex extends js.Object {
230312 * MDN
231313 */
232314 def openKeyCursor (range : IDBKeyRange = js.native,
233- direction : String = js.native): IDBRequest = js.native
315+ direction : IDBCursorDirection = js.native): IDBRequest = js.native
234316
235317 /**
236318 * Returns an IDBRequest object, and, in a separate thread, finds either the value in
@@ -248,7 +330,7 @@ class IDBIndex extends js.Object {
248330 * MDN
249331 */
250332 def openCursor (range : IDBKeyRange = js.native,
251- direction : String = js.native): IDBRequest = js.native
333+ direction : IDBCursorDirection = js.native): IDBRequest = js.native
252334}
253335
254336/**
@@ -282,7 +364,7 @@ class IDBCursor extends js.Object {
282364 *
283365 * MDN
284366 */
285- def direction : String = js.native
367+ def direction : IDBCursorDirection = js.native
286368
287369 /**
288370 * Returns the key for the record at the cursor's position. If the cursor is outside its
@@ -336,13 +418,45 @@ class IDBCursor extends js.Object {
336418}
337419
338420@ js.native
339- @ JSGlobal
340- object IDBCursor extends js.Object {
421+ sealed trait IDBCursorDirection extends js.Any
422+
423+ object IDBCursorDirection {
424+
425+ /**
426+ * The cursor shows all records, including duplicates.
427+ * It starts at the upper bound of the key range and moves downwards
428+ * (monotonically decreasing in the order of keys).
429+ *
430+ * MDN
431+ */
432+ val PREV = " prev" .asInstanceOf [IDBCursorDirection ]
341433
342- val PREV : String = js.native
343- val PREV_NO_DUPLICATE : String = js.native
344- val NEXT : String = js.native
345- val NEXT_NO_DUPLICATE : String = js.native
434+ /**
435+ * The cursor shows all records, excluding duplicates.
436+ * If multiple records exist with the same key, only the first one iterated is retrieved.
437+ * It starts at the upper bound of the key range and moves downwards.
438+ *
439+ * MDN
440+ */
441+ val PREV_UNIQUE = " prevunique" .asInstanceOf [IDBCursorDirection ]
442+
443+ /**
444+ * The cursor shows all records, including duplicates.
445+ * It starts at the lower bound of the key range and moves upwards
446+ * (monotonically increasing in the order of keys).
447+ *
448+ * MDN
449+ */
450+ val NEXT = " next" .asInstanceOf [IDBCursorDirection ]
451+
452+ /**
453+ * The cursor shows all records, excluding duplicates.
454+ * If multiple records exist with the same key, only the first one iterated is retrieved.
455+ * It starts at the lower bound of the key range and moves upwards.
456+ *
457+ * MDN
458+ */
459+ val NEXT_UNIQUE = " nextunique" .asInstanceOf [IDBCursorDirection ]
346460}
347461
348462/**
@@ -476,7 +590,7 @@ class IDBTransaction extends EventTarget {
476590 *
477591 * MDN
478592 */
479- def mode : String = js.native
593+ def mode : IDBTransactionMode = js.native
480594
481595 /**
482596 * Returns a DOMException indicating the type of error that occured when there is an
@@ -520,35 +634,6 @@ class IDBTransaction extends EventTarget {
520634 def objectStore (name : String ): IDBObjectStore = js.native
521635}
522636
523- @ js.native
524- @ JSGlobal
525- object IDBTransaction extends js.Object {
526-
527- /**
528- * Allows data to be read but not changed.
529- *
530- * MDN
531- */
532- val READ_ONLY : String = js.native
533-
534- /**
535- * Allows any operation to be performed, including ones that delete and create object
536- * stores and indexes. This mode is for updating the version number of transactions
537- * that were started using the setVersion() method of IDBDatabase objects.
538- * Transactions of this mode cannot run concurrently with other transactions.
539- *
540- * MDN
541- */
542- val VERSION_CHANGE : String = js.native
543-
544- /**
545- * Allows reading and writing of data in existing data stores to be changed.
546- *
547- * MDN
548- */
549- val READ_WRITE : String = js.native
550- }
551-
552637/**
553638 * The IDBDatabase interface of the IndexedDB API provides asynchronous access
554639 * to a connection to a database. Use it to create, manipulate, and delete
@@ -643,7 +728,7 @@ class IDBDatabase extends EventTarget {
643728 * MDN
644729 */
645730 def transaction (storeNames : js.Any ,
646- mode : String = js.native): IDBTransaction = js.native
731+ mode : IDBTransactionMode = js.native): IDBTransaction = js.native
647732
648733 /**
649734 * As with createObjectStore, this method can be called only within a versionchange
0 commit comments