lib0 0.2.93 → 0.2.94
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.
- package/coverage/tmp/coverage-40409-1715766144203-0.json +1 -0
- package/dist/{broadcastchannel-80813eea.cjs → broadcastchannel-d3d8f202.cjs} +2 -2
- package/dist/{broadcastchannel-80813eea.cjs.map → broadcastchannel-d3d8f202.cjs.map} +1 -1
- package/dist/broadcastchannel.cjs +5 -5
- package/dist/{buffer-f11b8d4d.cjs → buffer-f10b0247.cjs} +2 -2
- package/dist/{buffer-f11b8d4d.cjs.map → buffer-f10b0247.cjs.map} +1 -1
- package/dist/buffer.cjs +4 -4
- package/dist/cache.cjs +2 -2
- package/dist/component.cjs +3 -3
- package/dist/{diff-fbaa426b.cjs → diff-38d8f45b.cjs} +2 -2
- package/dist/{diff-fbaa426b.cjs.map → diff-38d8f45b.cjs.map} +1 -1
- package/dist/diff.cjs +3 -3
- package/dist/{environment-f4d7c3e5.cjs → environment-45676492.cjs} +4 -4
- package/dist/environment-45676492.cjs.map +1 -0
- package/dist/environment.cjs +3 -3
- package/dist/{function-314fdc56.cjs → function-18d343cf.cjs} +2 -2
- package/dist/{function-314fdc56.cjs.map → function-18d343cf.cjs.map} +1 -1
- package/dist/function.cjs +2 -2
- package/dist/index.cjs +9 -9
- package/dist/{indexeddb-8d495848.cjs → indexeddb-0cbb4d6f.cjs} +2 -2
- package/dist/{indexeddb-8d495848.cjs.map → indexeddb-0cbb4d6f.cjs.map} +1 -1
- package/dist/indexeddb.cjs +2 -2
- package/dist/indexeddbV2.cjs +287 -0
- package/dist/indexeddbV2.cjs.map +1 -0
- package/dist/indexeddbV2.d.ts +35 -0
- package/dist/indexeddbV2.d.ts.map +1 -0
- package/dist/indexeddbV2.test.d.ts +3 -0
- package/dist/indexeddbV2.test.d.ts.map +1 -0
- package/dist/jwt.cjs +4 -4
- package/dist/list.cjs +2 -2
- package/dist/logging.cjs +3 -3
- package/dist/logging.common.cjs +3 -3
- package/dist/logging.node.cjs +3 -3
- package/dist/{object-fecf6a7b.cjs → object-b0539a4e.cjs} +11 -2
- package/dist/object-b0539a4e.cjs.map +1 -0
- package/dist/object.cjs +2 -1
- package/dist/object.cjs.map +1 -1
- package/dist/object.d.ts +3 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/performance.node.cjs +2 -2
- package/dist/pledge.cjs +307 -0
- package/dist/pledge.cjs.map +1 -0
- package/dist/pledge.d.ts +68 -0
- package/dist/pledge.d.ts.map +1 -0
- package/dist/pledge.test.d.ts +6 -0
- package/dist/pledge.test.d.ts.map +1 -0
- package/dist/{prng-e4f28259.cjs → prng-4ea69eec.cjs} +2 -2
- package/dist/{prng-e4f28259.cjs.map → prng-4ea69eec.cjs.map} +1 -1
- package/dist/prng.cjs +5 -5
- package/dist/{promise-afe9dfc3.cjs → promise-7d13a97c.cjs} +22 -2
- package/dist/promise-7d13a97c.cjs.map +1 -0
- package/dist/promise.cjs +2 -1
- package/dist/promise.cjs.map +1 -1
- package/dist/promise.d.ts +1 -0
- package/dist/promise.d.ts.map +1 -1
- package/dist/promise.test.d.ts.map +1 -1
- package/dist/rabin-gf2-polynomial.cjs +4 -4
- package/dist/rabin-uncached.cjs +4 -4
- package/dist/rabin.cjs +4 -4
- package/dist/testing.cjs +7 -7
- package/dist/url.cjs +1 -1
- package/environment.js +2 -2
- package/indexeddbV2.d.ts +35 -0
- package/indexeddbV2.d.ts.map +1 -0
- package/indexeddbV2.js +265 -0
- package/indexeddbV2.test.d.ts +3 -0
- package/indexeddbV2.test.d.ts.map +1 -0
- package/object.d.ts +3 -0
- package/object.d.ts.map +1 -1
- package/object.js +8 -1
- package/package.json +1 -1
- package/pledge.d.ts +68 -0
- package/pledge.d.ts.map +1 -0
- package/pledge.js +292 -0
- package/pledge.test.d.ts +6 -0
- package/pledge.test.d.ts.map +1 -0
- package/promise.d.ts +1 -0
- package/promise.d.ts.map +1 -1
- package/promise.js +19 -1
- package/promise.test.d.ts.map +1 -1
- package/test.js +4 -0
- package/coverage/tmp/coverage-45503-1710701602083-0.json +0 -1
- package/dist/environment-f4d7c3e5.cjs.map +0 -1
- package/dist/object-fecf6a7b.cjs.map +0 -1
- package/dist/promise-afe9dfc3.cjs.map +0 -1
|
@@ -5,15 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var math = require('./math-08e068f9.cjs');
|
|
6
6
|
var webcrypto = require('lib0/webcrypto');
|
|
7
7
|
var array = require('./array-704ca50e.cjs');
|
|
8
|
-
var buffer = require('./buffer-
|
|
8
|
+
var buffer = require('./buffer-f10b0247.cjs');
|
|
9
9
|
require('./set-0f209abb.cjs');
|
|
10
10
|
require('./string-6d104757.cjs');
|
|
11
|
-
require('./environment-
|
|
11
|
+
require('./environment-45676492.cjs');
|
|
12
12
|
require('./map-0dabcc55.cjs');
|
|
13
13
|
require('./conditions-f5c0c102.cjs');
|
|
14
14
|
require('./storage.cjs');
|
|
15
|
-
require('./function-
|
|
16
|
-
require('./object-
|
|
15
|
+
require('./function-18d343cf.cjs');
|
|
16
|
+
require('./object-b0539a4e.cjs');
|
|
17
17
|
require('./encoding-882cb136.cjs');
|
|
18
18
|
require('./number-466d8922.cjs');
|
|
19
19
|
require('./binary-ac8e39e2.cjs');
|
package/dist/rabin-uncached.cjs
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var math = require('./math-08e068f9.cjs');
|
|
6
|
-
var buffer = require('./buffer-
|
|
6
|
+
var buffer = require('./buffer-f10b0247.cjs');
|
|
7
7
|
require('./string-6d104757.cjs');
|
|
8
8
|
require('./array-704ca50e.cjs');
|
|
9
9
|
require('./set-0f209abb.cjs');
|
|
10
|
-
require('./environment-
|
|
10
|
+
require('./environment-45676492.cjs');
|
|
11
11
|
require('./map-0dabcc55.cjs');
|
|
12
12
|
require('./conditions-f5c0c102.cjs');
|
|
13
13
|
require('./storage.cjs');
|
|
14
|
-
require('./function-
|
|
15
|
-
require('./object-
|
|
14
|
+
require('./function-18d343cf.cjs');
|
|
15
|
+
require('./object-b0539a4e.cjs');
|
|
16
16
|
require('./encoding-882cb136.cjs');
|
|
17
17
|
require('./number-466d8922.cjs');
|
|
18
18
|
require('./binary-ac8e39e2.cjs');
|
package/dist/rabin.cjs
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var buffer = require('./buffer-
|
|
5
|
+
var buffer = require('./buffer-f10b0247.cjs');
|
|
6
6
|
var map = require('./map-0dabcc55.cjs');
|
|
7
7
|
require('./string-6d104757.cjs');
|
|
8
8
|
require('./array-704ca50e.cjs');
|
|
9
9
|
require('./set-0f209abb.cjs');
|
|
10
|
-
require('./environment-
|
|
10
|
+
require('./environment-45676492.cjs');
|
|
11
11
|
require('./conditions-f5c0c102.cjs');
|
|
12
12
|
require('./storage.cjs');
|
|
13
|
-
require('./function-
|
|
14
|
-
require('./object-
|
|
13
|
+
require('./function-18d343cf.cjs');
|
|
14
|
+
require('./object-b0539a4e.cjs');
|
|
15
15
|
require('./math-08e068f9.cjs');
|
|
16
16
|
require('./encoding-882cb136.cjs');
|
|
17
17
|
require('./number-466d8922.cjs');
|
package/dist/testing.cjs
CHANGED
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var log = require('lib0/logging');
|
|
6
|
-
var diff = require('./diff-
|
|
7
|
-
var object = require('./object-
|
|
6
|
+
var diff = require('./diff-38d8f45b.cjs');
|
|
7
|
+
var object = require('./object-b0539a4e.cjs');
|
|
8
8
|
var string = require('./string-6d104757.cjs');
|
|
9
9
|
var math = require('./math-08e068f9.cjs');
|
|
10
10
|
var random = require('./random.cjs');
|
|
11
|
-
var prng = require('./prng-
|
|
11
|
+
var prng = require('./prng-4ea69eec.cjs');
|
|
12
12
|
var statistics = require('./statistics-c2316dca.cjs');
|
|
13
13
|
var array = require('./array-704ca50e.cjs');
|
|
14
|
-
var environment = require('./environment-
|
|
14
|
+
var environment = require('./environment-45676492.cjs');
|
|
15
15
|
var json = require('./json-092190a1.cjs');
|
|
16
16
|
var time = require('./time-bc2081b9.cjs');
|
|
17
|
-
var promise = require('./promise-
|
|
17
|
+
var promise = require('./promise-7d13a97c.cjs');
|
|
18
18
|
var performance = require('lib0/performance');
|
|
19
|
-
require('./function-
|
|
19
|
+
require('./function-18d343cf.cjs');
|
|
20
20
|
require('./binary-ac8e39e2.cjs');
|
|
21
21
|
require('lib0/webcrypto');
|
|
22
|
-
require('./buffer-
|
|
22
|
+
require('./buffer-f10b0247.cjs');
|
|
23
23
|
require('./encoding-882cb136.cjs');
|
|
24
24
|
require('./number-466d8922.cjs');
|
|
25
25
|
require('./decoding-000d097f.cjs');
|
package/dist/url.cjs
CHANGED
package/environment.js
CHANGED
|
@@ -132,9 +132,9 @@ const forceColor = isNode &&
|
|
|
132
132
|
f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])
|
|
133
133
|
|
|
134
134
|
/* c8 ignore start */
|
|
135
|
-
export const supportsColor = !hasParam('no-colors') &&
|
|
135
|
+
export const supportsColor = !hasParam('--no-colors') &&
|
|
136
136
|
(!isNode || process.stdout.isTTY || forceColor) && (
|
|
137
|
-
!isNode || hasParam('color') || forceColor ||
|
|
137
|
+
!isNode || hasParam('--color') || forceColor ||
|
|
138
138
|
getVariable('COLORTERM') !== null ||
|
|
139
139
|
(getVariable('TERM') || '').includes('color')
|
|
140
140
|
)
|
package/indexeddbV2.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function bindPledge(p: pledge.PledgeInstance<any>, request: IDBRequest): void;
|
|
2
|
+
export function openDB(name: string, initDB: (arg0: IDBDatabase) => any): pledge.PledgeInstance<IDBDatabase>;
|
|
3
|
+
export function deleteDB(name: pledge.Pledge<string>): pledge.PledgeInstance<void>;
|
|
4
|
+
export function createStores(db: IDBDatabase, definitions: Array<Array<string> | Array<string | IDBObjectStoreParameters | undefined>>): void;
|
|
5
|
+
export function transact(db: pledge.Pledge<IDBDatabase>, stores: pledge.Pledge<Array<string>>, access?: "readonly" | "readwrite" | undefined): pledge.Pledge<Array<IDBObjectStore>>;
|
|
6
|
+
export function count(store: IDBObjectStore, range?: pledge.Pledge<IDBKeyRange | undefined>): pledge.PledgeInstance<number>;
|
|
7
|
+
export function get(store: pledge.Pledge<IDBObjectStore>, key: pledge.Pledge<string | number | ArrayBuffer | Date | Array<any>>): pledge.PledgeInstance<string | number | ArrayBuffer | Date | Array<any>>;
|
|
8
|
+
export function del(store: pledge.Pledge<IDBObjectStore>, key: string | number | ArrayBuffer | Date | IDBKeyRange | Array<any>): pledge.PledgeInstance<any, Error>;
|
|
9
|
+
export function put(store: pledge.Pledge<IDBObjectStore>, item: string | number | ArrayBuffer | Date | boolean, key?: string | number | any[] | Date | ArrayBuffer | undefined): pledge.PledgeInstance<any, Error>;
|
|
10
|
+
export function add(store: pledge.Pledge<IDBObjectStore>, item: string | number | ArrayBuffer | Date | boolean, key: string | number | ArrayBuffer | Date | Array<any>): pledge.PledgeInstance<any>;
|
|
11
|
+
export function addAutoKey(store: pledge.Pledge<IDBObjectStore>, item: string | number | ArrayBuffer | Date): pledge.PledgeInstance<number>;
|
|
12
|
+
export function getAll(store: pledge.Pledge<IDBObjectStore>, range?: IDBKeyRange | undefined, limit?: number | undefined): pledge.PledgeInstance<Array<any>>;
|
|
13
|
+
export function getAllKeys(store: pledge.Pledge<IDBObjectStore>, range?: IDBKeyRange | undefined, limit?: number | undefined): pledge.PledgeInstance<Array<any>>;
|
|
14
|
+
export function queryFirst(store: IDBObjectStore, query: IDBKeyRange | null, direction: 'next' | 'prev' | 'nextunique' | 'prevunique'): pledge.PledgeInstance<any>;
|
|
15
|
+
export function getLastKey(store: IDBObjectStore, range?: IDBKeyRange | null | undefined): pledge.PledgeInstance<any>;
|
|
16
|
+
export function getFirstKey(store: IDBObjectStore, range?: IDBKeyRange | null | undefined): pledge.PledgeInstance<any>;
|
|
17
|
+
export function getAllKeysValues(store: pledge.Pledge<IDBObjectStore>, range?: pledge.Pledge<IDBKeyRange | undefined>, limit?: pledge.Pledge<number | undefined>): pledge.PledgeInstance<Array<KeyValuePair>>;
|
|
18
|
+
export function iterate(store: pledge.Pledge<IDBObjectStore>, keyrange: pledge.Pledge<IDBKeyRange | null>, f: (arg0: any, arg1: any) => void | boolean | Promise<void | boolean>, direction?: 'next' | 'prev' | 'nextunique' | 'prevunique'): pledge.PledgeInstance<any, Error>;
|
|
19
|
+
export function iterateKeys(store: pledge.Pledge<IDBObjectStore>, keyrange: pledge.Pledge<IDBKeyRange | null>, f: (arg0: any) => void | boolean | Promise<void | boolean>, direction?: 'next' | 'prev' | 'nextunique' | 'prevunique'): pledge.PledgeInstance<any, Error>;
|
|
20
|
+
export function getStore(t: IDBTransaction, store: string): IDBObjectStore;
|
|
21
|
+
export function createIDBKeyRangeBound(lower: any, upper: any, lowerOpen: boolean, upperOpen: boolean): IDBKeyRange;
|
|
22
|
+
export function createIDBKeyRangeUpperBound(upper: any, upperOpen: boolean): IDBKeyRange;
|
|
23
|
+
export function createIDBKeyRangeLowerBound(lower: any, lowerOpen: boolean): IDBKeyRange;
|
|
24
|
+
export type KeyValuePair = {
|
|
25
|
+
/**
|
|
26
|
+
* key
|
|
27
|
+
*/
|
|
28
|
+
k: any;
|
|
29
|
+
/**
|
|
30
|
+
* Value
|
|
31
|
+
*/
|
|
32
|
+
v: any;
|
|
33
|
+
};
|
|
34
|
+
import * as pledge from './pledge.js';
|
|
35
|
+
//# sourceMappingURL=indexeddbV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddbV2.d.ts","sourceRoot":"","sources":["indexeddbV2.js"],"names":[],"mappings":"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"}
|
package/indexeddbV2.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/* eslint-env browser */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helpers to work with IndexedDB.
|
|
5
|
+
* This is an experimental implementation using Pledge instead of Promise.
|
|
6
|
+
*
|
|
7
|
+
* @experimental
|
|
8
|
+
*
|
|
9
|
+
* @module indexeddbv2
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import * as pledge from './pledge.js'
|
|
13
|
+
|
|
14
|
+
/* c8 ignore start */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* IDB Request to Pledge transformer
|
|
18
|
+
*
|
|
19
|
+
* @param {pledge.PledgeInstance<any>} p
|
|
20
|
+
* @param {IDBRequest} request
|
|
21
|
+
*/
|
|
22
|
+
export const bindPledge = (p, request) => {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
request.onerror = event => p.cancel(event.target.error)
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
request.onsuccess = event => p.resolve(event.target.result)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @param {string} name
|
|
31
|
+
* @param {function(IDBDatabase):any} initDB Called when the database is first created
|
|
32
|
+
* @return {pledge.PledgeInstance<IDBDatabase>}
|
|
33
|
+
*/
|
|
34
|
+
export const openDB = (name, initDB) => {
|
|
35
|
+
/**
|
|
36
|
+
* @type {pledge.PledgeInstance<IDBDatabase>}
|
|
37
|
+
*/
|
|
38
|
+
const p = pledge.create()
|
|
39
|
+
const request = indexedDB.open(name)
|
|
40
|
+
/**
|
|
41
|
+
* @param {any} event
|
|
42
|
+
*/
|
|
43
|
+
request.onupgradeneeded = event => initDB(event.target.result)
|
|
44
|
+
/**
|
|
45
|
+
* @param {any} event
|
|
46
|
+
*/
|
|
47
|
+
request.onerror = event => p.cancel(event.target.error)
|
|
48
|
+
/**
|
|
49
|
+
* @param {any} event
|
|
50
|
+
*/
|
|
51
|
+
request.onsuccess = event => {
|
|
52
|
+
/**
|
|
53
|
+
* @type {IDBDatabase}
|
|
54
|
+
*/
|
|
55
|
+
const db = event.target.result
|
|
56
|
+
db.onversionchange = () => { db.close() }
|
|
57
|
+
p.resolve(db)
|
|
58
|
+
}
|
|
59
|
+
return p
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @param {pledge.Pledge<string>} name
|
|
64
|
+
* @return {pledge.PledgeInstance<void>}
|
|
65
|
+
*/
|
|
66
|
+
export const deleteDB = name => pledge.createWithDependencies((p, name) => bindPledge(p, indexedDB.deleteDatabase(name)), name)
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @param {IDBDatabase} db
|
|
70
|
+
* @param {Array<Array<string>|Array<string|IDBObjectStoreParameters|undefined>>} definitions
|
|
71
|
+
*/
|
|
72
|
+
export const createStores = (db, definitions) => definitions.forEach(d =>
|
|
73
|
+
// @ts-ignore
|
|
74
|
+
db.createObjectStore.apply(db, d)
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {pledge.Pledge<IDBDatabase>} db
|
|
79
|
+
* @param {pledge.Pledge<Array<string>>} stores
|
|
80
|
+
* @param {"readwrite"|"readonly"} [access]
|
|
81
|
+
* @return {pledge.Pledge<Array<IDBObjectStore>>}
|
|
82
|
+
*/
|
|
83
|
+
export const transact = (db, stores, access = 'readwrite') => pledge.createWithDependencies((p, db, stores) => {
|
|
84
|
+
const transaction = db.transaction(stores, access)
|
|
85
|
+
p.resolve(stores.map(store => getStore(transaction, store)))
|
|
86
|
+
}, db, stores)
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @param {IDBObjectStore} store
|
|
90
|
+
* @param {pledge.Pledge<IDBKeyRange|undefined>} [range]
|
|
91
|
+
* @return {pledge.PledgeInstance<number>}
|
|
92
|
+
*/
|
|
93
|
+
export const count = (store, range) => pledge.createWithDependencies((p, store, range) => bindPledge(p, store.count(range)), store, range)
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
97
|
+
* @param {pledge.Pledge<String | number | ArrayBuffer | Date | Array<any>>} key
|
|
98
|
+
* @return {pledge.PledgeInstance<String | number | ArrayBuffer | Date | Array<any>>}
|
|
99
|
+
*/
|
|
100
|
+
export const get = (store, key) => pledge.createWithDependencies((p, store, key) => bindPledge(p, store.get(key)), store, key)
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
104
|
+
* @param {String | number | ArrayBuffer | Date | IDBKeyRange | Array<any> } key
|
|
105
|
+
*/
|
|
106
|
+
export const del = (store, key) => pledge.createWithDependencies((p, store, key) => bindPledge(p, store.delete(key)), store, key)
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
110
|
+
* @param {String | number | ArrayBuffer | Date | boolean} item
|
|
111
|
+
* @param {String | number | ArrayBuffer | Date | Array<any>} [key]
|
|
112
|
+
*/
|
|
113
|
+
export const put = (store, item, key) => pledge.createWithDependencies((p, store, item, key) => bindPledge(p, store.put(item, key)), store, item, key)
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
117
|
+
* @param {String | number | ArrayBuffer | Date | boolean} item
|
|
118
|
+
* @param {String | number | ArrayBuffer | Date | Array<any>} key
|
|
119
|
+
* @return {pledge.PledgeInstance<any>}
|
|
120
|
+
*/
|
|
121
|
+
export const add = (store, item, key) => pledge.createWithDependencies((p, store, item, key) => bindPledge(p, store.add(item, key)), store, item, key)
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
125
|
+
* @param {String | number | ArrayBuffer | Date} item
|
|
126
|
+
* @return {pledge.PledgeInstance<number>} Returns the generated key
|
|
127
|
+
*/
|
|
128
|
+
export const addAutoKey = (store, item) => pledge.createWithDependencies((p, store, item) => bindPledge(p, store.add(item)), store, item)
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
132
|
+
* @param {IDBKeyRange} [range]
|
|
133
|
+
* @param {number} [limit]
|
|
134
|
+
* @return {pledge.PledgeInstance<Array<any>>}
|
|
135
|
+
*/
|
|
136
|
+
export const getAll = (store, range, limit) => pledge.createWithDependencies((p, store, range, limit) => bindPledge(p, store.getAll(range, limit)), store, range, limit)
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
140
|
+
* @param {IDBKeyRange} [range]
|
|
141
|
+
* @param {number} [limit]
|
|
142
|
+
* @return {pledge.PledgeInstance<Array<any>>}
|
|
143
|
+
*/
|
|
144
|
+
export const getAllKeys = (store, range, limit) => pledge.createWithDependencies((p, store, range, limit) => bindPledge(p, store.getAllKeys(range, limit)), store, range, limit)
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @param {IDBObjectStore} store
|
|
148
|
+
* @param {IDBKeyRange|null} query
|
|
149
|
+
* @param {'next'|'prev'|'nextunique'|'prevunique'} direction
|
|
150
|
+
* @return {pledge.PledgeInstance<any>}
|
|
151
|
+
*/
|
|
152
|
+
export const queryFirst = (store, query, direction) => {
|
|
153
|
+
/**
|
|
154
|
+
* @type {any}
|
|
155
|
+
*/
|
|
156
|
+
let first = null
|
|
157
|
+
return iterateKeys(store, query, key => {
|
|
158
|
+
first = key
|
|
159
|
+
return false
|
|
160
|
+
}, direction).map(() => first)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @param {IDBObjectStore} store
|
|
165
|
+
* @param {IDBKeyRange?} [range]
|
|
166
|
+
* @return {pledge.PledgeInstance<any>}
|
|
167
|
+
*/
|
|
168
|
+
export const getLastKey = (store, range = null) => queryFirst(store, range, 'prev')
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @param {IDBObjectStore} store
|
|
172
|
+
* @param {IDBKeyRange?} [range]
|
|
173
|
+
* @return {pledge.PledgeInstance<any>}
|
|
174
|
+
*/
|
|
175
|
+
export const getFirstKey = (store, range = null) => queryFirst(store, range, 'next')
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @typedef KeyValuePair
|
|
179
|
+
* @type {Object}
|
|
180
|
+
* @property {any} k key
|
|
181
|
+
* @property {any} v Value
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
186
|
+
* @param {pledge.Pledge<IDBKeyRange|undefined>} [range]
|
|
187
|
+
* @param {pledge.Pledge<number|undefined>} [limit]
|
|
188
|
+
* @return {pledge.PledgeInstance<Array<KeyValuePair>>}
|
|
189
|
+
*/
|
|
190
|
+
export const getAllKeysValues = (store, range, limit) => pledge.createWithDependencies((p, store, range, limit) => {
|
|
191
|
+
pledge.all([getAllKeys(store, range, limit), getAll(store, range, limit)]).map(([ks, vs]) => ks.map((k, i) => ({ k, v: vs[i] }))).whenResolved(p.resolve.bind(p))
|
|
192
|
+
}, store, range, limit)
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @param {pledge.PledgeInstance<void>} p
|
|
196
|
+
* @param {any} request
|
|
197
|
+
* @param {function(IDBCursorWithValue):void|boolean|Promise<void|boolean>} f
|
|
198
|
+
*/
|
|
199
|
+
const iterateOnRequest = (p, request, f) => {
|
|
200
|
+
request.onerror = p.cancel.bind(p)
|
|
201
|
+
/**
|
|
202
|
+
* @param {any} event
|
|
203
|
+
*/
|
|
204
|
+
request.onsuccess = async event => {
|
|
205
|
+
const cursor = event.target.result
|
|
206
|
+
if (cursor === null || (await f(cursor)) === false) {
|
|
207
|
+
p.resolve(undefined)
|
|
208
|
+
return
|
|
209
|
+
}
|
|
210
|
+
cursor.continue()
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Iterate on keys and values
|
|
216
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
217
|
+
* @param {pledge.Pledge<IDBKeyRange|null>} keyrange
|
|
218
|
+
* @param {function(any,any):void|boolean|Promise<void|boolean>} f Callback that receives (value, key)
|
|
219
|
+
* @param {'next'|'prev'|'nextunique'|'prevunique'} direction
|
|
220
|
+
*/
|
|
221
|
+
export const iterate = (store, keyrange, f, direction = 'next') => pledge.createWithDependencies((p, store, keyrange) => {
|
|
222
|
+
iterateOnRequest(p, store.openCursor(keyrange, direction), cursor => f(cursor.value, cursor.key))
|
|
223
|
+
}, store, keyrange)
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Iterate on the keys (no values)
|
|
227
|
+
*
|
|
228
|
+
* @param {pledge.Pledge<IDBObjectStore>} store
|
|
229
|
+
* @param {pledge.Pledge<IDBKeyRange|null>} keyrange
|
|
230
|
+
* @param {function(any):void|boolean|Promise<void|boolean>} f callback that receives the key
|
|
231
|
+
* @param {'next'|'prev'|'nextunique'|'prevunique'} direction
|
|
232
|
+
*/
|
|
233
|
+
export const iterateKeys = (store, keyrange, f, direction = 'next') => pledge.createWithDependencies((p, store, keyrange) => {
|
|
234
|
+
iterateOnRequest(p, store.openKeyCursor(keyrange, direction), cursor => f(cursor.key))
|
|
235
|
+
}, store, keyrange)
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Open store from transaction
|
|
239
|
+
* @param {IDBTransaction} t
|
|
240
|
+
* @param {String} store
|
|
241
|
+
* @returns {IDBObjectStore}
|
|
242
|
+
*/
|
|
243
|
+
export const getStore = (t, store) => t.objectStore(store)
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* @param {any} lower
|
|
247
|
+
* @param {any} upper
|
|
248
|
+
* @param {boolean} lowerOpen
|
|
249
|
+
* @param {boolean} upperOpen
|
|
250
|
+
*/
|
|
251
|
+
export const createIDBKeyRangeBound = (lower, upper, lowerOpen, upperOpen) => IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* @param {any} upper
|
|
255
|
+
* @param {boolean} upperOpen
|
|
256
|
+
*/
|
|
257
|
+
export const createIDBKeyRangeUpperBound = (upper, upperOpen) => IDBKeyRange.upperBound(upper, upperOpen)
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @param {any} lower
|
|
261
|
+
* @param {boolean} lowerOpen
|
|
262
|
+
*/
|
|
263
|
+
export const createIDBKeyRangeLowerBound = (lower, lowerOpen) => IDBKeyRange.lowerBound(lower, lowerOpen)
|
|
264
|
+
|
|
265
|
+
/* c8 ignore stop */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddbV2.test.d.ts","sourceRoot":"","sources":["indexeddbV2.test.js"],"names":[],"mappings":"AA0BO,sDAoEN;AAGM,6CAgBN"}
|
package/object.d.ts
CHANGED
|
@@ -26,6 +26,9 @@ export function map<R>(obj: {
|
|
|
26
26
|
export function length(obj: {
|
|
27
27
|
[x: string]: any;
|
|
28
28
|
}): number;
|
|
29
|
+
export function size(obj: {
|
|
30
|
+
[x: string]: any;
|
|
31
|
+
}): number;
|
|
29
32
|
export function some(obj: {
|
|
30
33
|
[x: string]: any;
|
|
31
34
|
}, f: (arg0: any, arg1: string) => boolean): boolean;
|
package/object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["object.js"],"names":[],"mappings":"AASO;QAFY,MAAM,GAAC,GAAG;EAEkB;AAE/C;;GAEG;AACH;;;;;EAAmC;AAEnC;;GAEG;AACH;;;EAA+B;AAOxB;;sBAFe,MAAM,KAAE,GAAG,QAMhC;AAUM;QAJW,MAAM,GAAC,GAAG;aACR,GAAG,QAAC,MAAM,aAS7B;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["object.js"],"names":[],"mappings":"AASO;QAFY,MAAM,GAAC,GAAG;EAEkB;AAE/C;;GAEG;AACH;;;;;EAAmC;AAEnC;;GAEG;AACH;;;EAA+B;AAOxB;;sBAFe,MAAM,KAAE,GAAG,QAMhC;AAUM;QAJW,MAAM,GAAC,GAAG;aACR,GAAG,QAAC,MAAM,aAS7B;AAOM;QAHW,MAAM,GAAC,GAAG;IAChB,MAAM,CAE2B;AAMtC;QAHW,MAAM,GAAC,GAAG;IAChB,MAAM,CAEyB;AAOpC;QAJW,MAAM,GAAC,GAAG;aACR,GAAG,QAAC,MAAM,KAAE,OAAO,GAC3B,OAAO,CASlB;AAKM,6BAFI,MAAM,GAAC,SAAS,WAQ1B;AAOM;QAJW,MAAM,GAAC,GAAG;aACR,GAAG,QAAC,MAAM,KAAE,OAAO,GAC3B,OAAO,CASlB;AASM,iCAJI,GAAG,OACH,MAAM,GAAC,MAAM,GACZ,OAAO,CAEoE;AAOhF;QAJW,MAAM,GAAC,GAAG;;QACV,MAAM,GAAC,GAAG;IAChB,OAAO,CAEwI"}
|
package/object.js
CHANGED
|
@@ -47,11 +47,18 @@ export const map = (obj, f) => {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
+
* @deprecated use object.size instead
|
|
50
51
|
* @param {Object<string,any>} obj
|
|
51
52
|
* @return {number}
|
|
52
53
|
*/
|
|
53
54
|
export const length = obj => keys(obj).length
|
|
54
55
|
|
|
56
|
+
/**
|
|
57
|
+
* @param {Object<string,any>} obj
|
|
58
|
+
* @return {number}
|
|
59
|
+
*/
|
|
60
|
+
export const size = obj => keys(obj).length
|
|
61
|
+
|
|
55
62
|
/**
|
|
56
63
|
* @param {Object<string,any>} obj
|
|
57
64
|
* @param {function(any,string):boolean} f
|
|
@@ -105,4 +112,4 @@ export const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(ob
|
|
|
105
112
|
* @param {Object<string,any>} b
|
|
106
113
|
* @return {boolean}
|
|
107
114
|
*/
|
|
108
|
-
export const equalFlat = (a, b) => a === b || (
|
|
115
|
+
export const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))
|
package/package.json
CHANGED
package/pledge.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @template V
|
|
3
|
+
* @typedef {V | PledgeInstance<V>} Pledge
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @template {any} Val
|
|
7
|
+
* @template {any} [CancelReason=Error]
|
|
8
|
+
*/
|
|
9
|
+
export class PledgeInstance<Val extends unknown, CancelReason extends unknown = Error> {
|
|
10
|
+
/**
|
|
11
|
+
* @type {Val | CancelReason | null}
|
|
12
|
+
*/
|
|
13
|
+
_v: Val | CancelReason | null;
|
|
14
|
+
isResolved: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @type {Array<function(Val):void> | null}
|
|
17
|
+
*/
|
|
18
|
+
_whenResolved: ((arg0: Val) => void)[] | null;
|
|
19
|
+
/**
|
|
20
|
+
* @type {Array<function(CancelReason):void> | null}
|
|
21
|
+
*/
|
|
22
|
+
_whenCanceled: ((arg0: CancelReason) => void)[] | null;
|
|
23
|
+
get isDone(): boolean;
|
|
24
|
+
get isCanceled(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @param {Val} v
|
|
27
|
+
*/
|
|
28
|
+
resolve(v: Val): void;
|
|
29
|
+
/**
|
|
30
|
+
* @param {CancelReason} reason
|
|
31
|
+
*/
|
|
32
|
+
cancel(reason: CancelReason): void;
|
|
33
|
+
/**
|
|
34
|
+
* @template R
|
|
35
|
+
* @param {function(Val):Pledge<R>} f
|
|
36
|
+
* @return {PledgeInstance<R>}
|
|
37
|
+
*/
|
|
38
|
+
map<R>(f: (arg0: Val) => Pledge<R>): PledgeInstance<R, Error>;
|
|
39
|
+
/**
|
|
40
|
+
* @param {function(Val):void} f
|
|
41
|
+
*/
|
|
42
|
+
whenResolved(f: (arg0: Val) => void): void;
|
|
43
|
+
/**
|
|
44
|
+
* @param {(reason: CancelReason) => void} f
|
|
45
|
+
*/
|
|
46
|
+
whenCanceled(f: (reason: CancelReason) => void): void;
|
|
47
|
+
/**
|
|
48
|
+
* @return {Promise<Val>}
|
|
49
|
+
*/
|
|
50
|
+
promise(): Promise<Val>;
|
|
51
|
+
}
|
|
52
|
+
export function create<T>(): PledgeInstance<T, Error>;
|
|
53
|
+
export function createWithDependencies<V, DEPS extends unknown[]>(init: (p: PledgeInstance<V, Error>, ...deps: Resolved<DEPS>) => void, ...deps: DEPS): PledgeInstance<V, Error>;
|
|
54
|
+
export function whenResolved<R>(p: Pledge<R>, f: (arg0: R) => void): void;
|
|
55
|
+
export function whenCanceled<P extends unknown>(p: P, f: P extends PledgeInstance<unknown, infer CancelReason extends unknown> ? (arg0: CancelReason) => void : (arg0: any) => void): void;
|
|
56
|
+
export function map<P, Q>(p: Pledge<P>, f: (r: P) => Q): Pledge<Q>;
|
|
57
|
+
export function all<PS extends PledgeMap>(ps: PS): PledgeInstance<Resolved<PS>, Error>;
|
|
58
|
+
export function coroutine<Result, YieldResults extends unknown>(f: () => Generator<Pledge<YieldResults> | PledgeInstance<YieldResults, any>, Result, any>): PledgeInstance<Result, Error>;
|
|
59
|
+
export function wait(timeout: number): PledgeInstance<undefined>;
|
|
60
|
+
export type Pledge<V> = V | PledgeInstance<V>;
|
|
61
|
+
export type PledgeMap = Array<Pledge<unknown>> | {
|
|
62
|
+
[x: string]: Pledge<unknown>;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* <P>
|
|
66
|
+
*/
|
|
67
|
+
export type Resolved<P extends unknown> = P extends PledgeMap ? P extends infer T extends PledgeMap ? { [K in keyof T]: P[K] extends Pledge<infer V> ? V : P[K]; } : never : P extends Pledge<infer V_1> ? V_1 : never;
|
|
68
|
+
//# sourceMappingURL=pledge.d.ts.map
|
package/pledge.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pledge.d.ts","sourceRoot":"","sources":["pledge.js"],"names":[],"mappings":"AA8BA;;;GAGG;AAEH;;;GAGG;AACH;IAEI;;OAEG;IACH,IAFU,GAAG,GAAG,YAAY,GAAG,IAAI,CAErB;IACd,oBAAuB;IACvB;;OAEG;IACH,uBAFyB,GAAG,KAAE,IAAI,WAEX;IACvB;;OAEG;IACH,uBAFyB,YAAY,KAAE,IAAI,WAEpB;IAGzB,sBAEC;IAED,0BAEC;IAED;;OAEG;IACH,WAFW,GAAG,QAYb;IAED;;OAEG;IACH,eAFW,YAAY,QAWtB;IAED;;;;OAIG;IACH,iBAHoB,GAAG,0CAqBtB;IAED;;OAEG;IACH,uBAFoB,GAAG,KAAE,IAAI,QAQ5B;IAED;;OAEG;IACH,yBAFoB,YAAY,KAAK,IAAI,QAQxC;IAED;;OAEG;IACH,WAFY,QAAQ,GAAG,CAAC,CAOvB;CACF;AAMM,sDAAyC;AAqBzC,kIAJuD,IAAI,2CAYjE;AAOM,8DAFgB,IAAI,QAO1B;AAOM,yJAFmF,IAAI,UAAY,GAAG,KAAE,IAAI,QAMlH;AASM,mEAKN;AAOM,uFAqBN;AAQM,0LAsBN;AAMM,8BAHI,MAAM,GACL,eAAe,SAAS,CAAC,CAMpC;wBAjQY,CAAC,GAAG,eAAe,CAAC,CAAC;wBA8HrB,MAAM,OAAO,OAAO,CAAC,CAAC;QAAU,MAAM,GAAC,OAAO,OAAO,CAAC;CAAC"}
|