dropcap 1.4.0 → 1.6.0
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/dist/{idb/idb.d.ts → idb.d.ts} +11 -15
- package/dist/idb.js +232 -0
- package/dist/idb.js.map +1 -0
- package/dist/types-global.d.ts +8 -0
- package/dist/types-global.js +2 -0
- package/dist/types-global.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils-color-hash.d.ts +2 -0
- package/dist/utils-color-hash.js +47 -0
- package/dist/utils-color-hash.js.map +1 -0
- package/dist/utils-create-log.d.ts +6 -0
- package/dist/utils-create-log.js +12 -0
- package/dist/utils-create-log.js.map +1 -0
- package/dist/utils-enqueue.d.ts +2 -0
- package/dist/utils-enqueue.js +5 -0
- package/dist/utils-enqueue.js.map +1 -0
- package/dist/utils-ensure-array.d.ts +1 -0
- package/dist/utils-ensure-array.js +4 -0
- package/dist/utils-ensure-array.js.map +1 -0
- package/dist/{utils/utils-is.d.ts → utils-is.d.ts} +3 -6
- package/dist/utils-is.js +30 -0
- package/dist/utils-is.js.map +1 -0
- package/dist/utils-link.d.ts +1 -0
- package/dist/utils-link.js +7 -0
- package/dist/utils-link.js.map +1 -0
- package/dist/{utils/utils-queue.d.ts → utils-queue.d.ts} +5 -8
- package/dist/utils-queue.js +50 -0
- package/dist/utils-queue.js.map +1 -0
- package/dist/utils-safe.d.ts +2 -0
- package/dist/utils-safe.js +22 -0
- package/dist/utils-safe.js.map +1 -0
- package/dist/utils-unique.d.ts +1 -0
- package/dist/utils-unique.js +13 -0
- package/dist/utils-unique.js.map +1 -0
- package/dist/utils-unit.d.ts +9 -0
- package/dist/utils-unit.js +26 -0
- package/dist/utils-unit.js.map +1 -0
- package/dist/utils-wait.d.ts +1 -0
- package/dist/utils-wait.js +4 -0
- package/dist/utils-wait.js.map +1 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/package.json +8 -7
- package/dist/chunk-5N6O5FSZ.js +0 -53
- package/dist/chunk-5N6O5FSZ.js.map +0 -1
- package/dist/chunk-6X6FFIZN.js +0 -9
- package/dist/chunk-6X6FFIZN.js.map +0 -1
- package/dist/chunk-IEKJYSB2.js +0 -38
- package/dist/chunk-IEKJYSB2.js.map +0 -1
- package/dist/chunk-IL3H2YKT.js +0 -20
- package/dist/chunk-IL3H2YKT.js.map +0 -1
- package/dist/chunk-IQMQQI6W.js +0 -35
- package/dist/chunk-IQMQQI6W.js.map +0 -1
- package/dist/chunk-NIQOLOOJ.js +0 -44
- package/dist/chunk-NIQOLOOJ.js.map +0 -1
- package/dist/chunk-OURJLKNI.js +0 -16
- package/dist/chunk-OURJLKNI.js.map +0 -1
- package/dist/chunk-RXAMNVZW.js +0 -9
- package/dist/chunk-RXAMNVZW.js.map +0 -1
- package/dist/chunk-SDOWUYJK.js +0 -1
- package/dist/chunk-SDOWUYJK.js.map +0 -1
- package/dist/chunk-WBZCJMFI.js +0 -14
- package/dist/chunk-WBZCJMFI.js.map +0 -1
- package/dist/chunk-YPFVC6GE.js +0 -29
- package/dist/chunk-YPFVC6GE.js.map +0 -1
- package/dist/idb/idb.js +0 -200
- package/dist/idb/idb.js.map +0 -1
- package/dist/types/types.d.ts +0 -7
- package/dist/types/types.js +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/utils/utils-color-hash.d.ts +0 -4
- package/dist/utils/utils-color-hash.js +0 -7
- package/dist/utils/utils-color-hash.js.map +0 -1
- package/dist/utils/utils-create-log.d.ts +0 -9
- package/dist/utils/utils-create-log.js +0 -8
- package/dist/utils/utils-create-log.js.map +0 -1
- package/dist/utils/utils-ensure-array.d.ts +0 -3
- package/dist/utils/utils-ensure-array.js +0 -7
- package/dist/utils/utils-ensure-array.js.map +0 -1
- package/dist/utils/utils-is.js +0 -7
- package/dist/utils/utils-is.js.map +0 -1
- package/dist/utils/utils-link.d.ts +0 -3
- package/dist/utils/utils-link.js +0 -8
- package/dist/utils/utils-link.js.map +0 -1
- package/dist/utils/utils-queue.js +0 -9
- package/dist/utils/utils-queue.js.map +0 -1
- package/dist/utils/utils-safe.d.ts +0 -4
- package/dist/utils/utils-safe.js +0 -10
- package/dist/utils/utils-safe.js.map +0 -1
- package/dist/utils/utils-unique.d.ts +0 -3
- package/dist/utils/utils-unique.js +0 -7
- package/dist/utils/utils-unique.js.map +0 -1
- package/dist/utils/utils-unit.d.ts +0 -14
- package/dist/utils/utils-unit.js +0 -9
- package/dist/utils/utils-unit.js.map +0 -1
- package/dist/utils/utils-wait.d.ts +0 -3
- package/dist/utils/utils-wait.js +0 -7
- package/dist/utils/utils-wait.js.map +0 -1
- package/dist/utils/utils.d.ts +0 -11
- package/dist/utils/utils.js +0 -46
- package/dist/utils/utils.js.map +0 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
declare const _dispose_: unique symbol;
|
|
2
|
-
type Db = IDBDatabase & {
|
|
1
|
+
export declare const _dispose_: unique symbol;
|
|
2
|
+
export type Db = IDBDatabase & {
|
|
3
3
|
[_dispose_]?: () => void;
|
|
4
4
|
};
|
|
5
|
-
type DbName = string;
|
|
6
|
-
type DbStoreName = string;
|
|
7
|
-
type DbStoreKey = string;
|
|
8
|
-
declare class Idb {
|
|
5
|
+
export type DbName = string;
|
|
6
|
+
export type DbStoreName = string;
|
|
7
|
+
export type DbStoreKey = string;
|
|
8
|
+
export declare class Idb {
|
|
9
9
|
private dbs;
|
|
10
10
|
private queues;
|
|
11
11
|
static _dispose_: symbol;
|
|
12
12
|
constructor();
|
|
13
13
|
/** Get a value from the store. */
|
|
14
|
-
get<T
|
|
14
|
+
get<T>(dbName: DbName, storeName: DbStoreName, key: DbStoreKey): Promise<T | null>;
|
|
15
15
|
/** Check if a key exists in the store. */
|
|
16
16
|
has(dbName: DbName, storeName: DbStoreName, key: DbStoreKey): Promise<boolean>;
|
|
17
17
|
/** Set a value in the store. */
|
|
18
|
-
set<T
|
|
18
|
+
set<T>(dbName: DbName, storeName: DbStoreName, key: DbStoreKey, value: T): Promise<void>;
|
|
19
19
|
/** Get a list of all keys in the store of the database. */
|
|
20
20
|
keys(dbName: DbName, storeName: DbStoreName): Promise<string[]>;
|
|
21
21
|
/** Delete a key from the store. */
|
|
@@ -24,22 +24,18 @@ declare class Idb {
|
|
|
24
24
|
listStores(dbName: DbName): Promise<string[]>;
|
|
25
25
|
/** Get a list of all database names. */
|
|
26
26
|
listDatabases(): Promise<string[]>;
|
|
27
|
-
/**
|
|
27
|
+
/** Removes the store from the database. */
|
|
28
28
|
deleteStore(dbName: DbName, storeName: DbStoreName): Promise<void>;
|
|
29
|
-
/**
|
|
29
|
+
/** Removes the entire database. */
|
|
30
30
|
deleteDatabase(dbName: DbName): Promise<void>;
|
|
31
31
|
/** Delete all databases. */
|
|
32
32
|
purge(): Promise<void>;
|
|
33
|
-
/** Check if a database with the given name exists. */
|
|
34
33
|
private exists;
|
|
35
|
-
/** Ensure that the database with the given name exists and returns it. */
|
|
36
34
|
private ensureDb;
|
|
37
|
-
/** Ensure that the store exists. Returns store's database. */
|
|
38
35
|
private ensureStore;
|
|
39
36
|
private register;
|
|
40
37
|
private unregister;
|
|
41
38
|
/** Wrap method to be run in a queue for the given database. */
|
|
42
39
|
private enqueueByDbName;
|
|
43
40
|
}
|
|
44
|
-
|
|
45
|
-
export { type Db, type DbName, type DbStoreKey, type DbStoreName, Idb, _dispose_ };
|
|
41
|
+
export declare const idb: Idb;
|
package/dist/idb.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { Queue, is } from './utils.js';
|
|
2
|
+
export const _dispose_ = Symbol('dispose');
|
|
3
|
+
export class Idb {
|
|
4
|
+
dbs = {};
|
|
5
|
+
queues = {};
|
|
6
|
+
static _dispose_ = _dispose_;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.get = this.enqueueByDbName(this.get);
|
|
9
|
+
this.has = this.enqueueByDbName(this.has);
|
|
10
|
+
this.set = this.enqueueByDbName(this.set);
|
|
11
|
+
this.keys = this.enqueueByDbName(this.keys);
|
|
12
|
+
this.delete = this.enqueueByDbName(this.delete);
|
|
13
|
+
this.deleteStore = this.enqueueByDbName(this.deleteStore);
|
|
14
|
+
this.deleteDatabase = this.enqueueByDbName(this.deleteDatabase);
|
|
15
|
+
}
|
|
16
|
+
/** Get a value from the store. */
|
|
17
|
+
async get(dbName, storeName, key) {
|
|
18
|
+
// DB does not exist? -> Return null
|
|
19
|
+
const exists = await this.exists(dbName);
|
|
20
|
+
if (!exists)
|
|
21
|
+
return null;
|
|
22
|
+
// Store does not exist? -> Return null
|
|
23
|
+
const db = await this.ensureDb(dbName);
|
|
24
|
+
if (!db.objectStoreNames.contains(storeName))
|
|
25
|
+
return null;
|
|
26
|
+
// Get value from store
|
|
27
|
+
return await new Promise((resolve, reject) => {
|
|
28
|
+
const tx = db.transaction([storeName], 'readonly');
|
|
29
|
+
const req = tx.objectStore(storeName).get(key);
|
|
30
|
+
req.onsuccess = () => resolve(req.result);
|
|
31
|
+
req.onerror = () => reject(req.error);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** Check if a key exists in the store. */
|
|
35
|
+
async has(dbName, storeName, key) {
|
|
36
|
+
// DB does not exist? -> Return false
|
|
37
|
+
const exists = await this.exists(dbName);
|
|
38
|
+
if (!exists)
|
|
39
|
+
return false;
|
|
40
|
+
// Store does not exist? -> Return false
|
|
41
|
+
const db = await this.ensureDb(dbName);
|
|
42
|
+
if (!db.objectStoreNames.contains(storeName))
|
|
43
|
+
return false;
|
|
44
|
+
// Check if key exists in store
|
|
45
|
+
return await new Promise((resolve, reject) => {
|
|
46
|
+
const tx = db.transaction([storeName], 'readonly');
|
|
47
|
+
const req = tx.objectStore(storeName).getKey(key);
|
|
48
|
+
req.onsuccess = () => resolve(req.result !== undefined);
|
|
49
|
+
req.onerror = () => reject(req.error);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/** Set a value in the store. */
|
|
53
|
+
async set(dbName, storeName, key, value) {
|
|
54
|
+
// Ensure store for the DB
|
|
55
|
+
const db = await this.ensureStore(dbName, storeName);
|
|
56
|
+
// Set value
|
|
57
|
+
await new Promise((resolve, reject) => {
|
|
58
|
+
const tx = db.transaction([storeName], 'readwrite');
|
|
59
|
+
const req = tx.objectStore(storeName).put(value, key);
|
|
60
|
+
req.onsuccess = () => resolve(true);
|
|
61
|
+
req.onerror = () => reject(req.error);
|
|
62
|
+
tx.onabort = () => reject(tx.error);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Get a list of all keys in the store of the database. */
|
|
66
|
+
async keys(dbName, storeName) {
|
|
67
|
+
// DB does not exist? -> Return []
|
|
68
|
+
const exists = await this.exists(dbName);
|
|
69
|
+
if (!exists)
|
|
70
|
+
return [];
|
|
71
|
+
// Store does not exist? -> Return []
|
|
72
|
+
const db = await this.ensureDb(dbName);
|
|
73
|
+
if (!db.objectStoreNames.contains(storeName))
|
|
74
|
+
return [];
|
|
75
|
+
// Get store keys
|
|
76
|
+
return await new Promise((resolve, reject) => {
|
|
77
|
+
const tx = db.transaction([storeName], 'readonly');
|
|
78
|
+
const req = tx.objectStore(storeName).getAllKeys();
|
|
79
|
+
req.onsuccess = () => resolve(req.result.filter(is.string));
|
|
80
|
+
req.onerror = () => reject(req.error);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/** Delete a key from the store. */
|
|
84
|
+
async delete(dbName, storeName, key) {
|
|
85
|
+
// DB does not exist? -> Done
|
|
86
|
+
const exists = await this.exists(dbName);
|
|
87
|
+
if (!exists)
|
|
88
|
+
return;
|
|
89
|
+
// Store does not exist? -> Done
|
|
90
|
+
const db = await this.ensureDb(dbName);
|
|
91
|
+
if (!db.objectStoreNames.contains(storeName))
|
|
92
|
+
return;
|
|
93
|
+
// Delete store key
|
|
94
|
+
await new Promise((resolve, reject) => {
|
|
95
|
+
const tx = db.transaction([storeName], 'readwrite');
|
|
96
|
+
const req = tx.objectStore(storeName).delete(key);
|
|
97
|
+
req.onsuccess = () => resolve(true);
|
|
98
|
+
req.onerror = () => reject(req.error);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/** Get a list of all store names in the database. */
|
|
102
|
+
async listStores(dbName) {
|
|
103
|
+
const exists = await this.exists(dbName);
|
|
104
|
+
if (!exists)
|
|
105
|
+
return [];
|
|
106
|
+
const db = await this.ensureDb(dbName);
|
|
107
|
+
return [...db.objectStoreNames];
|
|
108
|
+
}
|
|
109
|
+
/** Get a list of all database names. */
|
|
110
|
+
async listDatabases() {
|
|
111
|
+
const dbs = await indexedDB.databases();
|
|
112
|
+
return dbs.map(db => db.name).filter(is.present);
|
|
113
|
+
}
|
|
114
|
+
/** Removes the store from the database. */
|
|
115
|
+
async deleteStore(dbName, storeName) {
|
|
116
|
+
// DB does not exist? -> Done
|
|
117
|
+
const exists = await this.exists(dbName);
|
|
118
|
+
if (!exists)
|
|
119
|
+
return;
|
|
120
|
+
// Store does not exist? -> Done
|
|
121
|
+
const db = await this.ensureDb(dbName);
|
|
122
|
+
if (!db.objectStoreNames.contains(storeName))
|
|
123
|
+
return;
|
|
124
|
+
// Unregister DB
|
|
125
|
+
this.unregister(dbName);
|
|
126
|
+
// Delete store (new DB instance is created during upgrade)
|
|
127
|
+
const newDb = await new Promise((resolve, reject) => {
|
|
128
|
+
const req = indexedDB.open(dbName, db.version + 1);
|
|
129
|
+
req.onsuccess = () => resolve(req.result);
|
|
130
|
+
req.onerror = () => reject(req.error);
|
|
131
|
+
req.onupgradeneeded = () => req.result.deleteObjectStore(storeName);
|
|
132
|
+
});
|
|
133
|
+
// Register new DB instance
|
|
134
|
+
this.register(dbName, newDb);
|
|
135
|
+
}
|
|
136
|
+
/** Removes the entire database. */
|
|
137
|
+
async deleteDatabase(dbName) {
|
|
138
|
+
// DB does not exist? -> Done
|
|
139
|
+
const exists = await this.exists(dbName);
|
|
140
|
+
if (!exists)
|
|
141
|
+
return;
|
|
142
|
+
// Unregister DB
|
|
143
|
+
this.unregister(dbName);
|
|
144
|
+
// Delete DB
|
|
145
|
+
await new Promise((resolve, reject) => {
|
|
146
|
+
const req = indexedDB.deleteDatabase(dbName);
|
|
147
|
+
req.onsuccess = () => resolve(true);
|
|
148
|
+
req.onerror = () => reject(req.error);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/** Delete all databases. */
|
|
152
|
+
async purge() {
|
|
153
|
+
const names = await this.listDatabases();
|
|
154
|
+
for (const name of names) {
|
|
155
|
+
await this.deleteDatabase(name);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** Check if a database with the given name exists. */
|
|
159
|
+
async exists(dbName) {
|
|
160
|
+
// Connected to the DB? -> true
|
|
161
|
+
if (this.dbs[dbName])
|
|
162
|
+
return true;
|
|
163
|
+
// Check if DB exists
|
|
164
|
+
const dbs = await indexedDB.databases();
|
|
165
|
+
return !!dbs.find(db => db.name === dbName);
|
|
166
|
+
}
|
|
167
|
+
/** Ensure that the database with the given name exists and returns it. */
|
|
168
|
+
async ensureDb(dbName) {
|
|
169
|
+
// Already connected? -> Just return DB
|
|
170
|
+
if (this.dbs[dbName])
|
|
171
|
+
return this.dbs[dbName];
|
|
172
|
+
// Get DB version if it exists, or start with version 1
|
|
173
|
+
const dbs = await indexedDB.databases();
|
|
174
|
+
const meta = dbs.find(db => db.name === dbName);
|
|
175
|
+
const version = meta?.version || 1;
|
|
176
|
+
// Create DB / connnect to the existing one
|
|
177
|
+
const db = await new Promise((resolve, reject) => {
|
|
178
|
+
const req = indexedDB.open(dbName, version);
|
|
179
|
+
req.onsuccess = () => resolve(req.result);
|
|
180
|
+
req.onerror = () => reject(req.error);
|
|
181
|
+
});
|
|
182
|
+
// Register DB instance
|
|
183
|
+
this.register(dbName, db);
|
|
184
|
+
return db;
|
|
185
|
+
}
|
|
186
|
+
/** Ensure that the store exists. Returns store's database. */
|
|
187
|
+
async ensureStore(dbName, storeName) {
|
|
188
|
+
// Ensure DB
|
|
189
|
+
const db = await this.ensureDb(dbName);
|
|
190
|
+
// Store already exists? -> Done
|
|
191
|
+
if (db.objectStoreNames.contains(storeName))
|
|
192
|
+
return db;
|
|
193
|
+
// Unregister DB
|
|
194
|
+
this.unregister(dbName);
|
|
195
|
+
// Create store (new DB instance is created during upgrade)
|
|
196
|
+
const newDb = await new Promise((resolve, reject) => {
|
|
197
|
+
const req = indexedDB.open(dbName, db.version + 1);
|
|
198
|
+
req.onsuccess = () => resolve(req.result);
|
|
199
|
+
req.onerror = () => reject(req.error);
|
|
200
|
+
req.onupgradeneeded = () => req.result.createObjectStore(storeName);
|
|
201
|
+
});
|
|
202
|
+
// Register new DB instance
|
|
203
|
+
this.register(dbName, newDb);
|
|
204
|
+
return newDb;
|
|
205
|
+
}
|
|
206
|
+
register(dbName, db) {
|
|
207
|
+
this.dbs[dbName] = db;
|
|
208
|
+
// 'close' event is fired when closed unexpectedly, e.g. by deleting via devtools
|
|
209
|
+
const onClose = () => delete this.dbs[dbName];
|
|
210
|
+
db.addEventListener('close', onClose);
|
|
211
|
+
db[_dispose_] = () => db.removeEventListener('close', onClose);
|
|
212
|
+
}
|
|
213
|
+
unregister(dbName) {
|
|
214
|
+
if (!this.dbs[dbName])
|
|
215
|
+
return;
|
|
216
|
+
this.dbs[dbName].close();
|
|
217
|
+
this.dbs[dbName][_dispose_]?.();
|
|
218
|
+
delete this.dbs[dbName];
|
|
219
|
+
}
|
|
220
|
+
/** Wrap method to be run in a queue for the given database. */
|
|
221
|
+
enqueueByDbName(fn) {
|
|
222
|
+
return (async (dbName, ...args) => {
|
|
223
|
+
const queue = (this.queues[dbName] ??= new Queue(dbName));
|
|
224
|
+
const result = await queue.add(() => fn.call(this, dbName, ...args));
|
|
225
|
+
if (queue.isEmpty())
|
|
226
|
+
delete this.queues[dbName];
|
|
227
|
+
return result;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
export const idb = new Idb();
|
|
232
|
+
//# sourceMappingURL=idb.js.map
|
package/dist/idb.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../src/idb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
type Obj<T = unknown> = Record<PropertyKey, T>;
|
|
3
|
+
type Arr<T = unknown> = T[];
|
|
4
|
+
type Cls<T = unknown> = new (...args: any[]) => T;
|
|
5
|
+
type Fn<T = unknown> = (...args: any[]) => T;
|
|
6
|
+
type AsyncFn<T = unknown> = (...args: any[]) => Promise<T>;
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-global.js","sourceRoot":"","sources":["../src/types-global.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type Obj<T = unknown> = Record<PropertyKey, T>;
|
|
2
|
+
export type Arr<T = unknown> = T[];
|
|
3
|
+
export type Cls<T = unknown> = new (...args: any[]) => T;
|
|
4
|
+
export type Fn<T = unknown> = (...args: any[]) => T;
|
|
5
|
+
export type AsyncFn<T = unknown> = (...args: any[]) => Promise<T>;
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function colorHash(str) {
|
|
2
|
+
// Calculate hash (djb2 xor) as 32‑bit unsigned
|
|
3
|
+
let hash = 5381;
|
|
4
|
+
for (let i = 0; i < str.length; i++) {
|
|
5
|
+
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
6
|
+
}
|
|
7
|
+
hash >>>= 0;
|
|
8
|
+
// Calculate hue. Golden‑ratio scramble gives maximum spread for 'near' strings.
|
|
9
|
+
const hue = Math.floor(((hash * 0.618033988749895) % 1) * 360);
|
|
10
|
+
// Start with vivid mid‑tone
|
|
11
|
+
const sat = 70;
|
|
12
|
+
let light = 50;
|
|
13
|
+
// Adjust lightness until it reads on both white and black backgrounds.
|
|
14
|
+
for (let i = 0; i < 20; i++) {
|
|
15
|
+
const rgb = hsl2rgb(hue, sat, light);
|
|
16
|
+
const l = lum(rgb);
|
|
17
|
+
const cW = contrast(1, l); // Versus white
|
|
18
|
+
const cB = contrast(0, l); // Versus black
|
|
19
|
+
if (cW >= 4.5 && cB >= 4.5)
|
|
20
|
+
break; // Good on both
|
|
21
|
+
light += cW < cB ? -5 : 5; // Move toward darker or lighter
|
|
22
|
+
}
|
|
23
|
+
// Convert to hex
|
|
24
|
+
const hex = hsl2rgb(hue, sat, light)
|
|
25
|
+
.map(v => v.toString(16).padStart(2, '0'))
|
|
26
|
+
.join('');
|
|
27
|
+
return `#${hex}`;
|
|
28
|
+
}
|
|
29
|
+
function hsl2rgb(hh, ss, ll) {
|
|
30
|
+
ss /= 100;
|
|
31
|
+
ll /= 100;
|
|
32
|
+
const k = (n) => (n + hh / 30) % 12;
|
|
33
|
+
const a = ss * Math.min(ll, 1 - ll);
|
|
34
|
+
const f = (n) => ll - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
|
|
35
|
+
return [f(0), f(8), f(4)].map(v => Math.round(v * 255));
|
|
36
|
+
}
|
|
37
|
+
function lum([r, g, b]) {
|
|
38
|
+
const c = (x) => {
|
|
39
|
+
x /= 255;
|
|
40
|
+
return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
|
|
41
|
+
};
|
|
42
|
+
return 0.2126 * c(r) + 0.7152 * c(g) + 0.0722 * c(b);
|
|
43
|
+
}
|
|
44
|
+
function contrast(l1, l2) {
|
|
45
|
+
return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=utils-color-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-color-hash.js","sourceRoot":"","sources":["../src/utils-color-hash.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE;IACrC,iDAA+C;IAC/C,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,CAAA;IAEX,kFAAgF;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAE9D,8BAA4B;IAC5B,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,IAAI,KAAK,GAAG,EAAE,CAAA;IAEd,uEAAuE;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,eAAe;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,eAAe;QACzC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG;YAAE,MAAK,CAAC,eAAe;QACjD,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;IAC5D,CAAC;IAED,iBAAiB;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACzC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,IAAI,GAAG,EAAE,CAAA;AAAA,CACjB;AAED,SAAS,OAAO,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAO;IACxD,EAAE,IAAI,GAAG,CAAA;IACT,EAAE,IAAI,GAAG,CAAA;IACT,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IAC3C,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACnC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACzF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAQ,CAAA;AAAA,CAC/D;AAED,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAM,EAAE;IAC3B,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC;QACvB,CAAC,IAAI,GAAG,CAAA;QACR,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAA;IAAA,CAC/D,CAAA;IACD,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAAA,CACrD;AAED,SAAS,QAAQ,CAAC,EAAU,EAAE,EAAU,EAAE;IACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;AAAA,CAC7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { colorHash } from './utils-color-hash.js';
|
|
2
|
+
export function createLog(name) {
|
|
3
|
+
const color = colorHash(name);
|
|
4
|
+
const log = print.bind(null, 'log', name, color);
|
|
5
|
+
log.warn = print.bind(null, 'warn', name, color);
|
|
6
|
+
log.error = print.bind(null, 'error', name, color);
|
|
7
|
+
return log;
|
|
8
|
+
}
|
|
9
|
+
function print(type, name, color, ...args) {
|
|
10
|
+
console[type](`%c[${name}]`, `color: ${color}`, ...args);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=utils-create-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-create-log.js","sourceRoot":"","sources":["../src/utils-create-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAIjD,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE;IACtC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAQ,CAAA;IACvD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAgB,CAAA;IAC/D,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAiB,CAAA;IAClE,OAAO,GAAG,CAAA;AAAA,CACX;AAED,SAAS,KAAK,CAAC,IAA8B,EAAE,IAAY,EAAE,KAAa,EAAE,GAAG,IAAe,EAAE;IAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;AAAA,CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-enqueue.js","sourceRoot":"","sources":["../src/utils-enqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,MAAM,UAAU,OAAO,CAAoB,EAAK,EAAE,SAAS,GAAY,IAAI,EAAE;IAC3E,OAAO,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;AAAA,CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ensureArray<T>(value: T | T[]): T[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-ensure-array.js","sourceRoot":"","sources":["../src/utils-ensure-array.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAI,KAAc,EAAO;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAAA,CAC9C"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Fn, Obj
|
|
2
|
-
|
|
3
|
-
declare const is: {
|
|
1
|
+
import type { Arr, Fn, Obj } from './types.js';
|
|
2
|
+
export declare const is: {
|
|
4
3
|
null: (v: unknown) => v is null;
|
|
5
4
|
undefined: (v: unknown) => v is undefined;
|
|
6
5
|
boolean: (v: unknown) => v is boolean;
|
|
@@ -26,8 +25,6 @@ declare const is: {
|
|
|
26
25
|
absent: (v: unknown) => v is null | undefined;
|
|
27
26
|
present: <T>(v: T) => v is NonNullable<T>;
|
|
28
27
|
primitive: (v: unknown) => boolean;
|
|
29
|
-
collection: (v: unknown) => v is
|
|
28
|
+
collection: (v: unknown) => v is Arr | Obj;
|
|
30
29
|
compound: (v: unknown) => v is object;
|
|
31
30
|
};
|
|
32
|
-
|
|
33
|
-
export { is };
|
package/dist/utils-is.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const is = {
|
|
2
|
+
null: (v) => v === null,
|
|
3
|
+
undefined: (v) => v === undefined,
|
|
4
|
+
boolean: (v) => typeof v === 'boolean',
|
|
5
|
+
number: (v) => typeof v === 'number',
|
|
6
|
+
string: (v) => typeof v === 'string',
|
|
7
|
+
symbol: (v) => typeof v === 'symbol',
|
|
8
|
+
function: (v) => typeof v === 'function',
|
|
9
|
+
object: (v) => Object.prototype.toString.call(v) === '[object Object]',
|
|
10
|
+
array: (v) => Array.isArray(v),
|
|
11
|
+
set: (v) => v instanceof Set,
|
|
12
|
+
map: (v) => v instanceof Map,
|
|
13
|
+
blob: (v) => v instanceof Blob,
|
|
14
|
+
date: (v) => v instanceof Date,
|
|
15
|
+
error: (v) => v instanceof Error,
|
|
16
|
+
regex: (v) => v instanceof RegExp,
|
|
17
|
+
promise: (v) => v instanceof Promise,
|
|
18
|
+
uint8Array: (v) => v instanceof Uint8Array,
|
|
19
|
+
uint16Array: (v) => v instanceof Uint16Array,
|
|
20
|
+
uint32Array: (v) => v instanceof Uint32Array,
|
|
21
|
+
nan: (v) => Number.isNaN(v),
|
|
22
|
+
numeric: (v) => !is.nan(Number(v)),
|
|
23
|
+
integer: (v) => Number.isInteger(v),
|
|
24
|
+
absent: (v) => v === null || v === undefined,
|
|
25
|
+
present: (v) => !is.absent(v),
|
|
26
|
+
primitive: (v) => v !== Object(v),
|
|
27
|
+
collection: (v) => is.array(v) || is.object(v),
|
|
28
|
+
compound: (v) => v !== null && typeof v === 'object',
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=utils-is.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-is.js","sourceRoot":"","sources":["../src/utils-is.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI;IAChC,SAAS,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS;IAC1C,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS;IAC/C,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IAC7C,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IAC7C,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IAC7C,QAAQ,EAAE,CAAC,CAAU,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU;IAC1D,MAAM,EAAE,CAAC,CAAU,EAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB;IACzF,KAAK,EAAE,CAAC,CAAU,EAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,GAAG;IACrC,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,GAAG;IACrC,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,IAAI;IACvC,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,IAAI;IACvC,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,KAAK;IACzC,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,MAAM;IAC1C,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,OAAO;IAC7C,UAAU,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,UAAU;IACnD,WAAW,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,WAAW;IACrD,WAAW,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,YAAY,WAAW;IAErD,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAU,EAAe,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;IACrD,OAAO,EAAE,CAAI,CAAI,EAAuB,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;CAC9D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function link<T, M extends keyof T>(target: T, method: M): T[M];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-link.js","sourceRoot":"","sources":["../src/utils-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,UAAU,IAAI,CAAuB,MAAS,EAAE,MAAS,EAAQ;IACrE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACnG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAS,CAAA;AAAA,CAC3C"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import { AsyncFn } from '
|
|
2
|
-
|
|
3
|
-
type
|
|
4
|
-
type Task<T = any> = {
|
|
1
|
+
import type { AsyncFn } from './types.js';
|
|
2
|
+
export type TaskFn<T> = () => Promise<T>;
|
|
3
|
+
export type Task<T = any> = {
|
|
5
4
|
fn: TaskFn<T>;
|
|
6
5
|
result$: PromiseWithResolvers<T>;
|
|
7
6
|
};
|
|
8
|
-
declare class Queue {
|
|
7
|
+
export declare class Queue {
|
|
9
8
|
name: string | null;
|
|
10
9
|
tasks: Task[];
|
|
11
10
|
private running;
|
|
12
11
|
constructor(name?: string | null);
|
|
13
12
|
add<T>(fn: TaskFn<T>): Promise<T>;
|
|
14
|
-
wrap<T extends AsyncFn>(fn: T,
|
|
13
|
+
wrap<T extends AsyncFn>(fn: T, thisArg?: unknown): T;
|
|
15
14
|
wait(): Promise<void>;
|
|
16
15
|
isEmpty(): boolean;
|
|
17
16
|
private start;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
|
-
export { Queue, type Task, type TaskFn };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { safe } from './utils-safe.js';
|
|
2
|
+
export class Queue {
|
|
3
|
+
name;
|
|
4
|
+
tasks = [];
|
|
5
|
+
running = false;
|
|
6
|
+
constructor(name = null) {
|
|
7
|
+
this.name = name;
|
|
8
|
+
}
|
|
9
|
+
async add(fn) {
|
|
10
|
+
const task = { fn, result$: Promise.withResolvers() };
|
|
11
|
+
this.tasks.push(task);
|
|
12
|
+
this.start();
|
|
13
|
+
return await task.result$.promise;
|
|
14
|
+
}
|
|
15
|
+
wrap(fn, thisArg = null) {
|
|
16
|
+
return (async (...args) => {
|
|
17
|
+
return await this.add(() => fn.call(thisArg, ...args));
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async wait() {
|
|
21
|
+
const lastTask = this.tasks.at(-1);
|
|
22
|
+
if (lastTask)
|
|
23
|
+
await safe(lastTask.result$.promise);
|
|
24
|
+
}
|
|
25
|
+
isEmpty() {
|
|
26
|
+
return this.tasks.length === 0;
|
|
27
|
+
}
|
|
28
|
+
async start() {
|
|
29
|
+
if (this.running)
|
|
30
|
+
return;
|
|
31
|
+
if (this.isEmpty())
|
|
32
|
+
return;
|
|
33
|
+
this.running = true;
|
|
34
|
+
while (this.tasks.length > 0) {
|
|
35
|
+
const task = this.tasks[0];
|
|
36
|
+
if (!task)
|
|
37
|
+
break;
|
|
38
|
+
const [result, error] = await safe(task.fn);
|
|
39
|
+
this.tasks.shift();
|
|
40
|
+
if (error) {
|
|
41
|
+
task.result$.reject(error);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
task.result$.resolve(result);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this.running = false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=utils-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-queue.js","sourceRoot":"","sources":["../src/utils-queue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAKtC,MAAM,OAAO,KAAK;IAChB,IAAI,CAAe;IACnB,KAAK,GAAW,EAAE,CAAA;IACV,OAAO,GAAG,KAAK,CAAA;IAEvB,YAAY,IAAI,GAAkB,IAAI,EAAE;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAAA,CACjB;IAED,KAAK,CAAC,GAAG,CAAI,EAAa,EAAc;QACtC,MAAM,IAAI,GAAY,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAK,EAAE,CAAA;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;IAAA,CAClC;IAED,IAAI,CAAoB,EAAK,EAAE,OAAO,GAAY,IAAI,EAAE;QACtD,OAAO,CAAC,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE,CAAC;YACxC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;QAAA,CACvD,CAAM,CAAA;IAAA,CACR;IAED,KAAK,CAAC,IAAI,GAAG;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,QAAQ;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAAA,CACnD;IAED,OAAO,GAAG;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAA;IAAA,CAC/B;IAEO,KAAK,CAAC,KAAK,GAAG;QACpB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAM;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,IAAI;gBAAE,MAAK;YAChB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAClB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IAAA,CACrB;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { is } from './utils-is.js';
|
|
2
|
+
export async function safe(effect) {
|
|
3
|
+
try {
|
|
4
|
+
const result = is.function(effect) ? await effect() : await effect;
|
|
5
|
+
return [result, null];
|
|
6
|
+
}
|
|
7
|
+
catch (e) {
|
|
8
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
9
|
+
return [null, error];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function safeSync(effect) {
|
|
13
|
+
try {
|
|
14
|
+
const result = effect();
|
|
15
|
+
return [result, null];
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
19
|
+
return [null, error];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=utils-safe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-safe.js","sourceRoot":"","sources":["../src/utils-safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,MAA2C,EACP;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAA;QAClE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACtB,CAAC;AAAA,CACF;AAED,MAAM,UAAU,QAAQ,CAAI,MAAe,EAA6B;IACtE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;QACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACtB,CAAC;AAAA,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function unique<T>(items: T[], keyFn?: (item: T) => unknown): T[];
|