lib0 0.2.41 → 0.2.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +127 -72
  2. package/bin/gendocs.js +1 -1
  3. package/cache.d.ts +50 -0
  4. package/cache.d.ts.map +1 -0
  5. package/cache.js +178 -0
  6. package/cache.test.d.ts +3 -0
  7. package/cache.test.d.ts.map +1 -0
  8. package/component.d.ts +4 -1
  9. package/component.d.ts.map +1 -1
  10. package/component.js +4 -1
  11. package/diff.d.ts +5 -0
  12. package/diff.d.ts.map +1 -1
  13. package/diff.js +47 -10
  14. package/diff.test.d.ts +1 -0
  15. package/diff.test.d.ts.map +1 -1
  16. package/dist/{broadcastchannel-8a61b21a.cjs → broadcastchannel-7da37795.cjs} +2 -2
  17. package/dist/{broadcastchannel-8a61b21a.cjs.map → broadcastchannel-7da37795.cjs.map} +1 -1
  18. package/dist/broadcastchannel.cjs +5 -5
  19. package/dist/{buffer-ac2cdedf.cjs → buffer-b0dea3b0.cjs} +4 -4
  20. package/dist/{buffer-ac2cdedf.cjs.map → buffer-b0dea3b0.cjs.map} +1 -1
  21. package/dist/buffer.cjs +4 -4
  22. package/dist/cache.cjs +185 -0
  23. package/dist/cache.cjs.map +1 -0
  24. package/dist/cache.d.ts +50 -0
  25. package/dist/cache.d.ts.map +1 -0
  26. package/dist/cache.test.d.ts +3 -0
  27. package/dist/cache.test.d.ts.map +1 -0
  28. package/dist/component.cjs +7 -4
  29. package/dist/component.cjs.map +1 -1
  30. package/dist/component.d.ts +4 -1
  31. package/dist/component.d.ts.map +1 -1
  32. package/dist/decoding.cjs +4 -4
  33. package/dist/{diff-75787d87.cjs → diff-233747fa.cjs} +51 -12
  34. package/dist/diff-233747fa.cjs.map +1 -0
  35. package/dist/diff.cjs +2 -1
  36. package/dist/diff.cjs.map +1 -1
  37. package/dist/diff.d.ts +5 -0
  38. package/dist/diff.d.ts.map +1 -1
  39. package/dist/diff.test.d.ts +1 -0
  40. package/dist/diff.test.d.ts.map +1 -1
  41. package/dist/dom.d.ts.map +1 -1
  42. package/dist/encoding.cjs +4 -4
  43. package/dist/{environment-7e2ffaea.cjs → environment-60b83194.cjs} +2 -2
  44. package/dist/{environment-7e2ffaea.cjs.map → environment-60b83194.cjs.map} +1 -1
  45. package/dist/environment.cjs +2 -2
  46. package/dist/{error-55a9a8c8.cjs → error-873c9cbf.cjs} +4 -4
  47. package/dist/error-873c9cbf.cjs.map +1 -0
  48. package/dist/error.cjs +1 -1
  49. package/dist/error.d.ts.map +1 -1
  50. package/dist/index.cjs +13 -13
  51. package/dist/{indexeddb-44227700.cjs → indexeddb-5b4b0e13.cjs} +27 -25
  52. package/dist/indexeddb-5b4b0e13.cjs.map +1 -0
  53. package/dist/indexeddb.cjs +3 -3
  54. package/dist/indexeddb.d.ts +2 -2
  55. package/dist/indexeddb.d.ts.map +1 -1
  56. package/dist/isomorphic.cjs +2 -6
  57. package/dist/isomorphic.cjs.map +1 -1
  58. package/dist/list.cjs +172 -0
  59. package/dist/list.cjs.map +1 -0
  60. package/dist/list.d.ts +33 -0
  61. package/dist/list.d.ts.map +1 -0
  62. package/dist/list.test.d.ts +4 -0
  63. package/dist/list.test.d.ts.map +1 -0
  64. package/dist/{logging-7cc36806.cjs → logging-f6d41f58.cjs} +2 -2
  65. package/dist/{logging-7cc36806.cjs.map → logging-f6d41f58.cjs.map} +1 -1
  66. package/dist/logging.cjs +3 -3
  67. package/dist/{number-24f1eabe.cjs → number-e62129bc.cjs} +5 -2
  68. package/dist/number-e62129bc.cjs.map +1 -0
  69. package/dist/number.cjs +2 -1
  70. package/dist/number.cjs.map +1 -1
  71. package/dist/number.d.ts +1 -0
  72. package/dist/number.d.ts.map +1 -1
  73. package/dist/observable.cjs +1 -1
  74. package/dist/{prng-695120cc.cjs → prng-25602bac.cjs} +3 -3
  75. package/dist/{prng-695120cc.cjs.map → prng-25602bac.cjs.map} +1 -1
  76. package/dist/prng.cjs +5 -5
  77. package/dist/{promise-f0a086b2.cjs → promise-1a9fe712.cjs} +10 -1
  78. package/dist/{promise-f0a086b2.cjs.map → promise-1a9fe712.cjs.map} +1 -1
  79. package/dist/promise.cjs +2 -1
  80. package/dist/promise.cjs.map +1 -1
  81. package/dist/promise.d.ts +1 -0
  82. package/dist/promise.d.ts.map +1 -1
  83. package/dist/queue.cjs +3 -0
  84. package/dist/queue.cjs.map +1 -1
  85. package/dist/queue.d.ts.map +1 -1
  86. package/dist/queue.test.d.ts.map +1 -1
  87. package/dist/set-b596ef38.cjs +49 -0
  88. package/dist/set-b596ef38.cjs.map +1 -0
  89. package/dist/set.cjs +3 -1
  90. package/dist/set.cjs.map +1 -1
  91. package/dist/set.d.ts +2 -0
  92. package/dist/set.d.ts.map +1 -1
  93. package/dist/set.test.d.ts +2 -0
  94. package/dist/set.test.d.ts.map +1 -1
  95. package/dist/{string-f3c3d805.cjs → string-ad04f734.cjs} +12 -2
  96. package/dist/{string-f3c3d805.cjs.map → string-ad04f734.cjs.map} +1 -1
  97. package/dist/string.cjs +3 -4
  98. package/dist/string.cjs.map +1 -1
  99. package/dist/string.d.ts +1 -0
  100. package/dist/string.d.ts.map +1 -1
  101. package/dist/string.test.d.ts +1 -0
  102. package/dist/string.test.d.ts.map +1 -1
  103. package/dist/test.cjs +750 -125
  104. package/dist/test.cjs.map +1 -1
  105. package/dist/test.js +751 -126
  106. package/dist/test.js.map +1 -1
  107. package/dist/testing.cjs +12 -9
  108. package/dist/testing.cjs.map +1 -1
  109. package/dist/testing.d.ts.map +1 -1
  110. package/dist/{websocket-bfe7f545.cjs → websocket-08bd4c7b.cjs} +1 -1
  111. package/dist/{websocket-bfe7f545.cjs.map → websocket-08bd4c7b.cjs.map} +1 -1
  112. package/dist/websocket.cjs +2 -2
  113. package/dist/websocket.d.ts +1 -1
  114. package/dist/websocket.d.ts.map +1 -1
  115. package/dom.d.ts.map +1 -1
  116. package/error.d.ts.map +1 -1
  117. package/error.js +3 -3
  118. package/indexeddb.d.ts +2 -2
  119. package/indexeddb.d.ts.map +1 -1
  120. package/indexeddb.js +25 -23
  121. package/list.d.ts +33 -0
  122. package/list.d.ts.map +1 -0
  123. package/list.js +155 -0
  124. package/list.test.d.ts +4 -0
  125. package/list.test.d.ts.map +1 -0
  126. package/number.d.ts +1 -0
  127. package/number.d.ts.map +1 -1
  128. package/number.js +1 -0
  129. package/package.json +16 -4
  130. package/promise.d.ts +1 -0
  131. package/promise.d.ts.map +1 -1
  132. package/promise.js +7 -0
  133. package/queue.d.ts.map +1 -1
  134. package/queue.js +3 -0
  135. package/queue.test.d.ts.map +1 -1
  136. package/set.d.ts +2 -0
  137. package/set.d.ts.map +1 -1
  138. package/set.js +18 -0
  139. package/set.test.d.ts +2 -0
  140. package/set.test.d.ts.map +1 -1
  141. package/string.d.ts +1 -0
  142. package/string.d.ts.map +1 -1
  143. package/string.js +8 -0
  144. package/string.test.d.ts +1 -0
  145. package/string.test.d.ts.map +1 -1
  146. package/test.js +7 -1
  147. package/testing.d.ts.map +1 -1
  148. package/testing.js +5 -2
  149. package/websocket.d.ts +1 -1
  150. package/websocket.d.ts.map +1 -1
  151. package/dist/diff-75787d87.cjs.map +0 -1
  152. package/dist/error-55a9a8c8.cjs.map +0 -1
  153. package/dist/indexeddb-44227700.cjs.map +0 -1
  154. package/dist/number-24f1eabe.cjs.map +0 -1
  155. package/dist/set-7ae96d21.cjs +0 -27
  156. package/dist/set-7ae96d21.cjs.map +0 -1
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var promise = require('./promise-f0a086b2.cjs');
4
- var error = require('./error-55a9a8c8.cjs');
3
+ var promise = require('./promise-1a9fe712.cjs');
4
+ var error = require('./error-873c9cbf.cjs');
5
5
 
6
6
  /* eslint-env browser */
7
7
 
8
+ /* istanbul ignore next */
8
9
  /**
9
10
  * IDB Request to Promise transformer
10
11
  *
11
12
  * @param {IDBRequest} request
12
13
  * @return {Promise<any>}
13
14
  */
14
- /* istanbul ignore next */
15
15
  const rtop = request => promise.create((resolve, reject) => {
16
16
  /* istanbul ignore next */
17
17
  // @ts-ignore
@@ -23,12 +23,12 @@ const rtop = request => promise.create((resolve, reject) => {
23
23
  request.onsuccess = event => resolve(event.target.result);
24
24
  });
25
25
 
26
+ /* istanbul ignore next */
26
27
  /**
27
28
  * @param {string} name
28
29
  * @param {function(IDBDatabase):any} initDB Called when the database is first created
29
30
  * @return {Promise<IDBDatabase>}
30
31
  */
31
- /* istanbul ignore next */
32
32
  const openDB = (name, initDB) => promise.create((resolve, reject) => {
33
33
  const request = indexedDB.open(name);
34
34
  /**
@@ -60,17 +60,17 @@ const openDB = (name, initDB) => promise.create((resolve, reject) => {
60
60
  };
61
61
  });
62
62
 
63
+ /* istanbul ignore next */
63
64
  /**
64
65
  * @param {string} name
65
66
  */
66
- /* istanbul ignore next */
67
67
  const deleteDB = name => rtop(indexedDB.deleteDatabase(name));
68
68
 
69
+ /* istanbul ignore next */
69
70
  /**
70
71
  * @param {IDBDatabase} db
71
72
  * @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions
72
73
  */
73
- /* istanbul ignore next */
74
74
  const createStores = (db, definitions) => definitions.forEach(d =>
75
75
  // @ts-ignore
76
76
  db.createObjectStore.apply(db, d)
@@ -87,75 +87,75 @@ const transact = (db, stores, access = 'readwrite') => {
87
87
  return stores.map(store => getStore(transaction, store))
88
88
  };
89
89
 
90
+ /* istanbul ignore next */
90
91
  /**
91
92
  * @param {IDBObjectStore} store
92
93
  * @param {IDBKeyRange} [range]
93
94
  * @return {Promise<number>}
94
95
  */
95
- /* istanbul ignore next */
96
96
  const count = (store, range) =>
97
97
  rtop(store.count(range));
98
98
 
99
+ /* istanbul ignore next */
99
100
  /**
100
101
  * @param {IDBObjectStore} store
101
102
  * @param {String | number | ArrayBuffer | Date | Array<any> } key
102
103
  * @return {Promise<String | number | ArrayBuffer | Date | Array<any>>}
103
104
  */
104
- /* istanbul ignore next */
105
105
  const get = (store, key) =>
106
106
  rtop(store.get(key));
107
107
 
108
+ /* istanbul ignore next */
108
109
  /**
109
110
  * @param {IDBObjectStore} store
110
111
  * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key
111
112
  */
112
- /* istanbul ignore next */
113
113
  const del = (store, key) =>
114
114
  rtop(store.delete(key));
115
115
 
116
+ /* istanbul ignore next */
116
117
  /**
117
118
  * @param {IDBObjectStore} store
118
119
  * @param {String | number | ArrayBuffer | Date | boolean} item
119
120
  * @param {String | number | ArrayBuffer | Date | Array<any>} [key]
120
121
  */
121
- /* istanbul ignore next */
122
122
  const put = (store, item, key) =>
123
123
  rtop(store.put(item, key));
124
124
 
125
+ /* istanbul ignore next */
125
126
  /**
126
127
  * @param {IDBObjectStore} store
127
128
  * @param {String | number | ArrayBuffer | Date | boolean} item
128
129
  * @param {String | number | ArrayBuffer | Date | Array<any>} key
129
130
  * @return {Promise<any>}
130
131
  */
131
- /* istanbul ignore next */
132
132
  const add = (store, item, key) =>
133
133
  rtop(store.add(item, key));
134
134
 
135
+ /* istanbul ignore next */
135
136
  /**
136
137
  * @param {IDBObjectStore} store
137
138
  * @param {String | number | ArrayBuffer | Date} item
138
139
  * @return {Promise<number>} Returns the generated key
139
140
  */
140
- /* istanbul ignore next */
141
141
  const addAutoKey = (store, item) =>
142
142
  rtop(store.add(item));
143
143
 
144
+ /* istanbul ignore next */
144
145
  /**
145
146
  * @param {IDBObjectStore} store
146
147
  * @param {IDBKeyRange} [range]
147
148
  * @return {Promise<Array<any>>}
148
149
  */
149
- /* istanbul ignore next */
150
150
  const getAll = (store, range) =>
151
151
  rtop(store.getAll(range));
152
152
 
153
+ /* istanbul ignore next */
153
154
  /**
154
155
  * @param {IDBObjectStore} store
155
156
  * @param {IDBKeyRange} [range]
156
157
  * @return {Promise<Array<any>>}
157
158
  */
158
- /* istanbul ignore next */
159
159
  const getAllKeys = (store, range) =>
160
160
  rtop(store.getAllKeys(range));
161
161
 
@@ -178,15 +178,17 @@ const queryFirst = (store, query, direction) => {
178
178
 
179
179
  /**
180
180
  * @param {IDBObjectStore} store
181
+ * @param {IDBKeyRange?} [range]
181
182
  * @return {Promise<any>}
182
183
  */
183
- const getLastKey = store => queryFirst(store, null, 'prev');
184
+ const getLastKey = (store, range = null) => queryFirst(store, range, 'prev');
184
185
 
185
186
  /**
186
187
  * @param {IDBObjectStore} store
188
+ * @param {IDBKeyRange?} [range]
187
189
  * @return {Promise<any>}
188
190
  */
189
- const getFirstKey = store => queryFirst(store, null, 'prev');
191
+ const getFirstKey = (store, range = null) => queryFirst(store, range, 'next');
190
192
 
191
193
  /**
192
194
  * @typedef KeyValuePair
@@ -195,22 +197,22 @@ const getFirstKey = store => queryFirst(store, null, 'prev');
195
197
  * @property {any} v Value
196
198
  */
197
199
 
200
+ /* istanbul ignore next */
198
201
  /**
199
202
  * @param {IDBObjectStore} store
200
203
  * @param {IDBKeyRange} [range]
201
204
  * @return {Promise<Array<KeyValuePair>>}
202
205
  */
203
- /* istanbul ignore next */
204
206
  const getAllKeysValues = (store, range) =>
205
207
  // @ts-ignore
206
208
  promise.all([getAllKeys(store, range), getAll(store, range)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })));
207
209
 
210
+ /* istanbul ignore next */
208
211
  /**
209
212
  * @param {any} request
210
213
  * @param {function(IDBCursorWithValue):void|boolean} f
211
214
  * @return {Promise<void>}
212
215
  */
213
- /* istanbul ignore next */
214
216
  const iterateOnRequest = (request, f) => promise.create((resolve, reject) => {
215
217
  /* istanbul ignore next */
216
218
  request.onerror = reject;
@@ -226,6 +228,7 @@ const iterateOnRequest = (request, f) => promise.create((resolve, reject) => {
226
228
  };
227
229
  });
228
230
 
231
+ /* istanbul ignore next */
229
232
  /**
230
233
  * Iterate on keys and values
231
234
  * @param {IDBObjectStore} store
@@ -233,10 +236,10 @@ const iterateOnRequest = (request, f) => promise.create((resolve, reject) => {
233
236
  * @param {function(any,any):void|boolean} f Callback that receives (value, key)
234
237
  * @param {'next'|'prev'|'nextunique'|'prevunique'} direction
235
238
  */
236
- /* istanbul ignore next */
237
239
  const iterate = (store, keyrange, f, direction = 'next') =>
238
240
  iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key));
239
241
 
242
+ /* istanbul ignore next */
240
243
  /**
241
244
  * Iterate on the keys (no values)
242
245
  *
@@ -245,40 +248,39 @@ const iterate = (store, keyrange, f, direction = 'next') =>
245
248
  * @param {function(any):void|boolean} f callback that receives the key
246
249
  * @param {'next'|'prev'|'nextunique'|'prevunique'} direction
247
250
  */
248
- /* istanbul ignore next */
249
251
  const iterateKeys = (store, keyrange, f, direction = 'next') =>
250
252
  iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key));
251
253
 
254
+ /* istanbul ignore next */
252
255
  /**
253
256
  * Open store from transaction
254
257
  * @param {IDBTransaction} t
255
258
  * @param {String} store
256
259
  * @returns {IDBObjectStore}
257
260
  */
258
- /* istanbul ignore next */
259
261
  const getStore = (t, store) => t.objectStore(store);
260
262
 
263
+ /* istanbul ignore next */
261
264
  /**
262
265
  * @param {any} lower
263
266
  * @param {any} upper
264
267
  * @param {boolean} lowerOpen
265
268
  * @param {boolean} upperOpen
266
269
  */
267
- /* istanbul ignore next */
268
270
  const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen);
269
271
 
272
+ /* istanbul ignore next */
270
273
  /**
271
274
  * @param {any} upper
272
275
  * @param {boolean} upperOpen
273
276
  */
274
- /* istanbul ignore next */
275
277
  const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen);
276
278
 
279
+ /* istanbul ignore next */
277
280
  /**
278
281
  * @param {any} lower
279
282
  * @param {boolean} lowerOpen
280
283
  */
281
- /* istanbul ignore next */
282
284
  const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen);
283
285
 
284
286
  var indexeddb = /*#__PURE__*/Object.freeze({
@@ -332,4 +334,4 @@ exports.put = put;
332
334
  exports.queryFirst = queryFirst;
333
335
  exports.rtop = rtop;
334
336
  exports.transact = transact;
335
- //# sourceMappingURL=indexeddb-44227700.cjs.map
337
+ //# sourceMappingURL=indexeddb-5b4b0e13.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexeddb-5b4b0e13.cjs","sources":["../indexeddb.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Helpers to work with IndexedDB.\n *\n * @module indexeddb\n */\n\nimport * as promise from './promise.js'\nimport * as error from './error.js'\n\n/* istanbul ignore next */\n/**\n * IDB Request to Promise transformer\n *\n * @param {IDBRequest} request\n * @return {Promise<any>}\n */\nexport const rtop = request => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n // @ts-ignore\n request.onerror = event => reject(new Error(event.target.error))\n /* istanbul ignore next */\n // @ts-ignore\n request.onblocked = () => location.reload()\n // @ts-ignore\n request.onsuccess = event => resolve(event.target.result)\n})\n\n/* istanbul ignore next */\n/**\n * @param {string} name\n * @param {function(IDBDatabase):any} initDB Called when the database is first created\n * @return {Promise<IDBDatabase>}\n */\nexport const openDB = (name, initDB) => promise.create((resolve, reject) => {\n const request = indexedDB.open(name)\n /**\n * @param {any} event\n */\n request.onupgradeneeded = event => initDB(event.target.result)\n /* istanbul ignore next */\n /**\n * @param {any} event\n */\n request.onerror = event => reject(error.create(event.target.error))\n /* istanbul ignore next */\n request.onblocked = () => location.reload()\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n /**\n * @type {IDBDatabase}\n */\n const db = event.target.result\n /* istanbul ignore next */\n db.onversionchange = () => { db.close() }\n /* istanbul ignore if */\n if (typeof addEventListener !== 'undefined') {\n addEventListener('unload', () => db.close())\n }\n resolve(db)\n }\n})\n\n/* istanbul ignore next */\n/**\n * @param {string} name\n */\nexport const deleteDB = name => rtop(indexedDB.deleteDatabase(name))\n\n/* istanbul ignore next */\n/**\n * @param {IDBDatabase} db\n * @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions\n */\nexport const createStores = (db, definitions) => definitions.forEach(d =>\n // @ts-ignore\n db.createObjectStore.apply(db, d)\n)\n\n/**\n * @param {IDBDatabase} db\n * @param {Array<string>} stores\n * @param {\"readwrite\"|\"readonly\"} [access]\n * @return {Array<IDBObjectStore>}\n */\nexport const transact = (db, stores, access = 'readwrite') => {\n const transaction = db.transaction(stores, access)\n return stores.map(store => getStore(transaction, store))\n}\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<number>}\n */\nexport const count = (store, range) =>\n rtop(store.count(range))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | Array<any> } key\n * @return {Promise<String | number | ArrayBuffer | Date | Array<any>>}\n */\nexport const get = (store, key) =>\n rtop(store.get(key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key\n */\nexport const del = (store, key) =>\n rtop(store.delete(key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} [key]\n */\nexport const put = (store, item, key) =>\n rtop(store.put(item, key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date | boolean} item\n * @param {String | number | ArrayBuffer | Date | Array<any>} key\n * @return {Promise<any>}\n */\nexport const add = (store, item, key) =>\n rtop(store.add(item, key))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {String | number | ArrayBuffer | Date} item\n * @return {Promise<number>} Returns the generated key\n */\nexport const addAutoKey = (store, item) =>\n rtop(store.add(item))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\nexport const getAll = (store, range) =>\n rtop(store.getAll(range))\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<any>>}\n */\nexport const getAllKeys = (store, range) =>\n rtop(store.getAllKeys(range))\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} query\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n * @return {Promise<any>}\n */\nexport const queryFirst = (store, query, direction) => {\n /**\n * @type {any}\n */\n let first = null\n return iterateKeys(store, query, key => {\n first = key\n return false\n }, direction).then(() => first)\n}\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getLastKey = (store, range = null) => queryFirst(store, range, 'prev')\n\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange?} [range]\n * @return {Promise<any>}\n */\nexport const getFirstKey = (store, range = null) => queryFirst(store, range, 'next')\n\n/**\n * @typedef KeyValuePair\n * @type {Object}\n * @property {any} k key\n * @property {any} v Value\n */\n\n/* istanbul ignore next */\n/**\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange} [range]\n * @return {Promise<Array<KeyValuePair>>}\n */\nexport const getAllKeysValues = (store, range) =>\n // @ts-ignore\n promise.all([getAllKeys(store, range), getAll(store, range)]).then(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] })))\n\n/* istanbul ignore next */\n/**\n * @param {any} request\n * @param {function(IDBCursorWithValue):void|boolean} f\n * @return {Promise<void>}\n */\nconst iterateOnRequest = (request, f) => promise.create((resolve, reject) => {\n /* istanbul ignore next */\n request.onerror = reject\n /**\n * @param {any} event\n */\n request.onsuccess = event => {\n const cursor = event.target.result\n if (cursor === null || f(cursor) === false) {\n return resolve()\n }\n cursor.continue()\n }\n})\n\n/* istanbul ignore next */\n/**\n * Iterate on keys and values\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any,any):void|boolean} f Callback that receives (value, key)\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterate = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))\n\n/* istanbul ignore next */\n/**\n * Iterate on the keys (no values)\n *\n * @param {IDBObjectStore} store\n * @param {IDBKeyRange|null} keyrange\n * @param {function(any):void|boolean} f callback that receives the key\n * @param {'next'|'prev'|'nextunique'|'prevunique'} direction\n */\nexport const iterateKeys = (store, keyrange, f, direction = 'next') =>\n iterateOnRequest(store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))\n\n/* istanbul ignore next */\n/**\n * Open store from transaction\n * @param {IDBTransaction} t\n * @param {String} store\n * @returns {IDBObjectStore}\n */\nexport const getStore = (t, store) => t.objectStore(store)\n\n/* istanbul ignore next */\n/**\n * @param {any} lower\n * @param {any} upper\n * @param {boolean} lowerOpen\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n\n/* istanbul ignore next */\n/**\n * @param {any} upper\n * @param {boolean} upperOpen\n */\nexport const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)\n\n/* istanbul ignore next */\n/**\n * @param {any} lower\n * @param {boolean} lowerOpen\n */\nexport const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)\n"],"names":["promise.create","error.create","promise.all"],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('./promise-f0a086b2.cjs');
6
- require('./error-55a9a8c8.cjs');
7
- var indexeddb = require('./indexeddb-44227700.cjs');
5
+ require('./promise-1a9fe712.cjs');
6
+ require('./error-873c9cbf.cjs');
7
+ var indexeddb = require('./indexeddb-5b4b0e13.cjs');
8
8
  require('./time-e00067da.cjs');
9
9
  require('./metric.cjs');
10
10
  require('./math-08e068f9.cjs');
@@ -12,8 +12,8 @@ export function addAutoKey(store: IDBObjectStore, item: string | number | ArrayB
12
12
  export function getAll(store: IDBObjectStore, range?: IDBKeyRange | undefined): Promise<Array<any>>;
13
13
  export function getAllKeys(store: IDBObjectStore, range?: IDBKeyRange | undefined): Promise<Array<any>>;
14
14
  export function queryFirst(store: IDBObjectStore, query: IDBKeyRange | null, direction: 'next' | 'prev' | 'nextunique' | 'prevunique'): Promise<any>;
15
- export function getLastKey(store: IDBObjectStore): Promise<any>;
16
- export function getFirstKey(store: IDBObjectStore): Promise<any>;
15
+ export function getLastKey(store: IDBObjectStore, range?: IDBKeyRange | null | undefined): Promise<any>;
16
+ export function getFirstKey(store: IDBObjectStore, range?: IDBKeyRange | null | undefined): Promise<any>;
17
17
  export function getAllKeysValues(store: IDBObjectStore, range?: IDBKeyRange | undefined): Promise<Array<KeyValuePair>>;
18
18
  export function iterate(store: IDBObjectStore, keyrange: IDBKeyRange | null, f: (arg0: any, arg1: any) => void | boolean, direction?: 'next' | 'prev' | 'nextunique' | 'prevunique'): Promise<void>;
19
19
  export function iterateKeys(store: IDBObjectStore, keyrange: IDBKeyRange | null, f: (arg0: any) => void | boolean, direction?: 'next' | 'prev' | 'nextunique' | 'prevunique'): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../indexeddb.js"],"names":[],"mappings":"AAkBO,8BAJI,UAAU,GACT,QAAQ,GAAG,CAAC,CAYtB;AAQK,6BALI,MAAM,iBACG,WAAW,KAAE,GAAG,GACxB,QAAQ,WAAW,CAAC,CAgC9B;AAMK,+BAHI,MAAM,gBAGmD;AAO7D,iCAJI,WAAW,eACX,MAAM,MAAM,MAAM,CAAC,GAAC,MAAM,MAAM,GAAC,wBAAwB,GAAC,SAAS,CAAC,CAAC,QAM/E;AAQM,6BALI,WAAW,UACX,MAAM,MAAM,CAAC,kDAEZ,MAAM,cAAc,CAAC,CAKhC;AAQM,6BALI,cAAc,oCAEb,QAAQ,MAAM,CAAC,CAID;AAQnB,2BALI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAIhD;AAOf,2BAJI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC,gBAIjD;AAQlB,2BALI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,gFAK7B;AASrB,2BANI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,OAC9C,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,GAAG,CAAC,CAII;AAQrB,kCALI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GACnC,QAAQ,MAAM,CAAC,CAIJ;AAQhB,8BALI,cAAc,oCAEb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAIJ;AAQpB,kCALI,cAAc,oCAEb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAIA;AAQxB,kCALI,cAAc,SACd,WAAW,GAAC,IAAI,aAChB,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,GACtC,QAAQ,GAAG,CAAC,CAWvB;AAMM,kCAHI,cAAc,GACb,QAAQ,GAAG,CAAC,CAE0C;AAM3D,mCAHI,cAAc,GACb,QAAQ,GAAG,CAAC,CAE2C;AAe5D,wCALI,cAAc,oCAEb,QAAQ,MAAM,YAAY,CAAC,CAAC,CAK+E;AA+BhH,+BANI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,QAAC,GAAG,KAAE,IAAI,GAAC,OAAO,cAC9B,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAI8C;AAWzF,mCANI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,KAAE,IAAI,GAAC,OAAO,cAC1B,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAImC;AAS9E,4BALI,cAAc,kBAEZ,cAAc,CAG+B;AASnD,8CANI,GAAG,SACH,GAAG,aACH,OAAO,aACP,OAAO,eAGiH;AAO5H,mDAJI,GAAG,aACH,OAAO,eAGuF;AAOlG,mDAJI,GAAG,aACH,OAAO,eAGuF;;;;;OAxF3F,GAAG;;;;OACH,GAAG"}
1
+ {"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../indexeddb.js"],"names":[],"mappings":"AAkBO,8BAHI,UAAU,GACT,QAAQ,GAAG,CAAC,CAWtB;AAQK,6BAJI,MAAM,iBACG,WAAW,KAAE,GAAG,GACxB,QAAQ,WAAW,CAAC,CA+B9B;AAMK,+BAFI,MAAM,gBAEmD;AAO7D,iCAHI,WAAW,eACX,MAAM,MAAM,MAAM,CAAC,GAAC,MAAM,MAAM,GAAC,wBAAwB,GAAC,SAAS,CAAC,CAAC,QAK/E;AAQM,6BALI,WAAW,UACX,MAAM,MAAM,CAAC,kDAEZ,MAAM,cAAc,CAAC,CAKhC;AAQM,6BAJI,cAAc,oCAEb,QAAQ,MAAM,CAAC,CAGD;AAQnB,2BAJI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAGhD;AAOf,2BAHI,cAAc,OACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,GAAG,CAAC,gBAGjD;AAQlB,2BAJI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,gFAI7B;AASrB,2BALI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,OAC9C,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,GAChD,QAAQ,GAAG,CAAC,CAGI;AAQrB,kCAJI,cAAc,QACd,SAAS,MAAM,GAAG,WAAW,GAAG,IAAI,GACnC,QAAQ,MAAM,CAAC,CAGJ;AAQhB,8BAJI,cAAc,oCAEb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAGJ;AAQpB,kCAJI,cAAc,oCAEb,QAAQ,MAAM,GAAG,CAAC,CAAC,CAGA;AAQxB,kCALI,cAAc,SACd,WAAW,GAAC,IAAI,aAChB,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,GACtC,QAAQ,GAAG,CAAC,CAWvB;AAOM,kCAJI,cAAc,2CAEb,QAAQ,GAAG,CAAC,CAE2D;AAO5E,mCAJI,cAAc,2CAEb,QAAQ,GAAG,CAAC,CAE4D;AAe7E,wCAJI,cAAc,oCAEb,QAAQ,MAAM,YAAY,CAAC,CAAC,CAI+E;AA+BhH,+BALI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,QAAC,GAAG,KAAE,IAAI,GAAC,OAAO,cAC9B,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAG8C;AAWzF,mCALI,cAAc,YACd,WAAW,GAAC,IAAI,YACP,GAAG,KAAE,IAAI,GAAC,OAAO,cAC1B,MAAM,GAAC,MAAM,GAAC,YAAY,GAAC,YAAY,iBAGmC;AAS9E,4BAJI,cAAc,kBAEZ,cAAc,CAE+B;AASnD,8CALI,GAAG,SACH,GAAG,aACH,OAAO,aACP,OAAO,eAEiH;AAO5H,mDAHI,GAAG,aACH,OAAO,eAEuF;AAOlG,mDAHI,GAAG,aACH,OAAO,eAEuF;;;;;OAxF3F,GAAG;;;;OACH,GAAG"}
@@ -8,14 +8,10 @@ var isomorphic_js = require('isomorphic.js');
8
8
 
9
9
  Object.defineProperty(exports, 'cryptoRandomBuffer', {
10
10
  enumerable: true,
11
- get: function () {
12
- return isomorphic_js.cryptoRandomBuffer;
13
- }
11
+ get: function () { return isomorphic_js.cryptoRandomBuffer; }
14
12
  });
15
13
  Object.defineProperty(exports, 'performance', {
16
14
  enumerable: true,
17
- get: function () {
18
- return isomorphic_js.performance;
19
- }
15
+ get: function () { return isomorphic_js.performance; }
20
16
  });
21
17
  //# sourceMappingURL=isomorphic.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isomorphic.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"isomorphic.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
package/dist/list.cjs ADDED
@@ -0,0 +1,172 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var error = require('./error-873c9cbf.cjs');
6
+
7
+ class ListNode {
8
+ constructor () {
9
+ /**
10
+ * @type {this|null}
11
+ */
12
+ this.next = null;
13
+ /**
14
+ * @type {this|null}
15
+ */
16
+ this.prev = null;
17
+ }
18
+ }
19
+
20
+ /**
21
+ * @template {ListNode} N
22
+ */
23
+ class List {
24
+ constructor () {
25
+ /**
26
+ * @type {N | null}
27
+ */
28
+ this.start = null;
29
+ /**
30
+ * @type {N | null}
31
+ */
32
+ this.end = null;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * @note The queue implementation is experimental and unfinished.
38
+ * Don't use this in production yet.
39
+ *
40
+ * @template {ListNode} N
41
+ *
42
+ * @return {List<N>}
43
+ */
44
+ const create = () => new List();
45
+
46
+ /**
47
+ * @template {ListNode} N
48
+ *
49
+ * @param {List<N>} queue
50
+ */
51
+ const isEmpty = queue => queue.start === null;
52
+
53
+ /**
54
+ * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.
55
+ *
56
+ * @template {ListNode} N
57
+ *
58
+ * @param {List<N>} queue
59
+ * @param {N} node
60
+ */
61
+ const removeNode = (queue, node) => {
62
+ const prev = node.prev;
63
+ const next = node.next;
64
+ if (prev) {
65
+ prev.next = next;
66
+ } else {
67
+ queue.start = next;
68
+ }
69
+ if (next) {
70
+ next.prev = prev;
71
+ } else {
72
+ queue.end = prev;
73
+ }
74
+ return node
75
+ };
76
+
77
+ /**
78
+ * @template {ListNode} N
79
+ *
80
+ * @param {List<N>} queue
81
+ * @param {N| null} left
82
+ * @param {N| null} right
83
+ * @param {N} node
84
+ */
85
+ const insertBetween = (queue, left, right, node) => {
86
+ /* istanbul ignore if */
87
+ if (left != null && left.next !== right) {
88
+ throw error.unexpectedCase()
89
+ }
90
+ if (left) {
91
+ left.next = node;
92
+ } else {
93
+ queue.start = node;
94
+ }
95
+ if (right) {
96
+ right.prev = node;
97
+ } else {
98
+ queue.end = node;
99
+ }
100
+ node.prev = left;
101
+ node.next = right;
102
+ };
103
+
104
+ /**
105
+ * @template {ListNode} N
106
+ *
107
+ * @param {List<N>} queue
108
+ * @param {N} n
109
+ */
110
+ const pushEnd = (queue, n) =>
111
+ insertBetween(queue, queue.end, null, n);
112
+
113
+ /**
114
+ * @template {ListNode} N
115
+ *
116
+ * @param {List<N>} queue
117
+ * @param {N} n
118
+ */
119
+ const pushFront = (queue, n) =>
120
+ insertBetween(queue, null, queue.start, n);
121
+
122
+ /**
123
+ * @template {ListNode} N
124
+ *
125
+ * @param {List<N>} list
126
+ * @return {N| null}
127
+ */
128
+ const popFront = list =>
129
+ list.start ? removeNode(list, list.start) : null;
130
+
131
+ /**
132
+ * @template {ListNode} N
133
+ *
134
+ * @param {List<N>} list
135
+ * @return {N| null}
136
+ */
137
+ const popEnd = list =>
138
+ list.end ? removeNode(list, list.end) : null;
139
+
140
+ /**
141
+ * @template {ListNode} N
142
+ * @template M
143
+ *
144
+ * @param {List<N>} list
145
+ * @param {function(N):M} f
146
+ * @return {Array<M>}
147
+ */
148
+ const map = (list, f) => {
149
+ /**
150
+ * @type {Array<M>}
151
+ */
152
+ const arr = [];
153
+ let n = list.start;
154
+ while (n) {
155
+ arr.push(f(n));
156
+ n = n.next;
157
+ }
158
+ return arr
159
+ };
160
+
161
+ exports.List = List;
162
+ exports.ListNode = ListNode;
163
+ exports.create = create;
164
+ exports.insertBetween = insertBetween;
165
+ exports.isEmpty = isEmpty;
166
+ exports.map = map;
167
+ exports.popEnd = popEnd;
168
+ exports.popFront = popFront;
169
+ exports.pushEnd = pushEnd;
170
+ exports.pushFront = pushFront;
171
+ exports.removeNode = removeNode;
172
+ //# sourceMappingURL=list.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.cjs","sources":["../list.js"],"sourcesContent":["import * as error from './error.js'\n\nexport class ListNode {\n constructor () {\n /**\n * @type {this|null}\n */\n this.next = null\n /**\n * @type {this|null}\n */\n this.prev = null\n }\n}\n\n/**\n * @template {ListNode} N\n */\nexport class List {\n constructor () {\n /**\n * @type {N | null}\n */\n this.start = null\n /**\n * @type {N | null}\n */\n this.end = null\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @template {ListNode} N\n *\n * @return {List<N>}\n */\nexport const create = () => new List()\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.\n *\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} node\n */\nexport const removeNode = (queue, node) => {\n const prev = node.prev\n const next = node.next\n if (prev) {\n prev.next = next\n } else {\n queue.start = next\n }\n if (next) {\n next.prev = prev\n } else {\n queue.end = prev\n }\n return node\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N| null} left\n * @param {N| null} right\n * @param {N} node\n */\nexport const insertBetween = (queue, left, right, node) => {\n /* istanbul ignore if */\n if (left != null && left.next !== right) {\n throw error.unexpectedCase()\n }\n if (left) {\n left.next = node\n } else {\n queue.start = node\n }\n if (right) {\n right.prev = node\n } else {\n queue.end = node\n }\n node.prev = left\n node.next = right\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushEnd = (queue, n) =>\n insertBetween(queue, queue.end, null, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushFront = (queue, n) =>\n insertBetween(queue, null, queue.start, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popFront = list =>\n list.start ? removeNode(list, list.start) : null\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popEnd = list =>\n list.end ? removeNode(list, list.end) : null\n\n/**\n * @template {ListNode} N\n * @template M\n *\n * @param {List<N>} list\n * @param {function(N):M} f\n * @return {Array<M>}\n */\nexport const map = (list, f) => {\n /**\n * @type {Array<M>}\n */\n const arr = []\n let n = list.start\n while (n) {\n arr.push(f(n))\n n = n.next\n }\n return arr\n}\n"],"names":["error.unexpectedCase"],"mappings":"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"}
package/dist/list.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ export class ListNode {
2
+ /**
3
+ * @type {this|null}
4
+ */
5
+ next: ListNode | null;
6
+ /**
7
+ * @type {this|null}
8
+ */
9
+ prev: ListNode | null;
10
+ }
11
+ /**
12
+ * @template {ListNode} N
13
+ */
14
+ export class List<N extends ListNode> {
15
+ /**
16
+ * @type {N | null}
17
+ */
18
+ start: N | null;
19
+ /**
20
+ * @type {N | null}
21
+ */
22
+ end: N | null;
23
+ }
24
+ export function create<N extends ListNode>(): List<N>;
25
+ export function isEmpty<N extends ListNode>(queue: List<N>): boolean;
26
+ export function removeNode<N extends ListNode>(queue: List<N>, node: N): N;
27
+ export function insertBetween<N extends ListNode>(queue: List<N>, left: N | null, right: N | null, node: N): void;
28
+ export function pushEnd<N extends ListNode>(queue: List<N>, n: N): void;
29
+ export function pushFront<N extends ListNode>(queue: List<N>, n: N): void;
30
+ export function popFront<N extends ListNode>(list: List<N>): N | null;
31
+ export function popEnd<N extends ListNode>(list: List<N>): N | null;
32
+ export function map<N extends ListNode, M>(list: List<N>, f: (arg0: N) => M): M[];
33
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../list.js"],"names":[],"mappings":"AAEA;IAEI;;OAEG;IACH,sBAAgB;IAChB;;OAEG;IACH,sBAAgB;CAEnB;AAED;;GAEG;AACH;IAEI;;OAEG;IACH,OAFU,CAAC,GAAG,IAAI,CAED;IACjB;;OAEG;IACH,KAFU,CAAC,GAAG,IAAI,CAEH;CAElB;AAUM,sDAA+B;AAO/B,qEAA6C;AAU7C,2EAcN;AAUM,kHAiBN;AAQM,wEACmC;AAQnC,0EACqC;AAQrC,sEAC2C;AAQ3C,oEACuC;AAUvC,kFAWN"}
@@ -0,0 +1,4 @@
1
+ export function testEnqueueDequeue(tc: t.TestCase): void;
2
+ export function testSelectivePop(tc: t.TestCase): void;
3
+ import * as t from "./testing.js";
4
+ //# sourceMappingURL=list.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../list.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,QA8BpB;AAKM,qCAFI,EAAE,QAAQ,QAkBpB"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var environment = require('./environment-7e2ffaea.cjs');
3
+ var environment = require('./environment-60b83194.cjs');
4
4
  var symbol = require('./symbol-c5caa724.cjs');
5
5
  var pair = require('./pair-ab022bc3.cjs');
6
6
  var dom = require('./dom-58958c04.cjs');
@@ -459,4 +459,4 @@ exports.printImg = printImg;
459
459
  exports.printImgBase64 = printImgBase64;
460
460
  exports.vconsoles = vconsoles;
461
461
  exports.warn = warn;
462
- //# sourceMappingURL=logging-7cc36806.cjs.map
462
+ //# sourceMappingURL=logging-f6d41f58.cjs.map