@kikiutils/shared 20.1.0 → 20.1.2
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/classes/path.d.ts.map +1 -1
- package/dist/classes/path.js +30 -30
- package/dist/classes/path.js.map +1 -1
- package/dist/classes/precision-number.js.map +1 -1
- package/dist/enum.d.ts +4 -3
- package/dist/enum.d.ts.map +1 -1
- package/dist/enum.js +3 -2
- package/dist/enum.js.map +1 -1
- package/dist/env.js.map +1 -1
- package/dist/event-awaiter.d.ts.map +1 -1
- package/dist/event-awaiter.js +6 -6
- package/dist/event-awaiter.js.map +1 -1
- package/dist/general.d.ts +3 -2
- package/dist/general.d.ts.map +1 -1
- package/dist/general.js.map +1 -1
- package/dist/logger/_internals/logger.d.ts.map +1 -1
- package/dist/logger/_internals/logger.js +3 -2
- package/dist/logger/_internals/logger.js.map +1 -1
- package/dist/logger/node/_internals/file-writer.js +7 -7
- package/dist/logger/node/_internals/file-writer.js.map +1 -1
- package/dist/logger/node/index.js +8 -8
- package/dist/logger/node/index.js.map +1 -1
- package/dist/storages/redis/keyed-store.d.ts.map +1 -1
- package/dist/storages/redis/keyed-store.js +10 -10
- package/dist/storages/redis/keyed-store.js.map +1 -1
- package/dist/storages/redis/msgpack.js +2 -2
- package/dist/storages/redis/msgpack.js.map +1 -1
- package/dist/time.d.ts.map +1 -1
- package/dist/time.js +4 -4
- package/dist/time.js.map +1 -1
- package/package.json +46 -26
- package/src/classes/path.ts +30 -30
- package/src/enum.ts +11 -5
- package/src/event-awaiter.ts +6 -6
- package/src/general.ts +5 -3
- package/src/logger/_internals/logger.ts +7 -2
- package/src/logger/node/_internals/file-writer.ts +7 -7
- package/src/logger/node/index.ts +9 -9
- package/src/storages/redis/keyed-store.ts +10 -10
- package/src/storages/redis/msgpack.ts +2 -2
- package/src/time.ts +4 -4
package/src/classes/path.ts
CHANGED
|
@@ -241,8 +241,8 @@ export class Path {
|
|
|
241
241
|
*
|
|
242
242
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.access}
|
|
243
243
|
*/
|
|
244
|
-
access(...args: DropFirstParameters<typeof fsp.access>) {
|
|
245
|
-
return fsp.access(this.#value, ...args);
|
|
244
|
+
async access(...args: DropFirstParameters<typeof fsp.access>) {
|
|
245
|
+
return await fsp.access(this.#value, ...args);
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
/**
|
|
@@ -253,8 +253,8 @@ export class Path {
|
|
|
253
253
|
*
|
|
254
254
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.appendFile}
|
|
255
255
|
*/
|
|
256
|
-
appendFile(...args: DropFirstParameters<typeof fsp.appendFile>) {
|
|
257
|
-
return fsp.appendFile(this.#value, ...args);
|
|
256
|
+
async appendFile(...args: DropFirstParameters<typeof fsp.appendFile>) {
|
|
257
|
+
return await fsp.appendFile(this.#value, ...args);
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
/**
|
|
@@ -265,8 +265,8 @@ export class Path {
|
|
|
265
265
|
*
|
|
266
266
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.chmod}
|
|
267
267
|
*/
|
|
268
|
-
chmod(...args: DropFirstParameters<typeof fsp.chmod>) {
|
|
269
|
-
return fsp.chmod(this.#value, ...args);
|
|
268
|
+
async chmod(...args: DropFirstParameters<typeof fsp.chmod>) {
|
|
269
|
+
return await fsp.chmod(this.#value, ...args);
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
/**
|
|
@@ -277,8 +277,8 @@ export class Path {
|
|
|
277
277
|
*
|
|
278
278
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.chown}
|
|
279
279
|
*/
|
|
280
|
-
chown(...args: DropFirstParameters<typeof fsp.chown>) {
|
|
281
|
-
return fsp.chown(this.#value, ...args);
|
|
280
|
+
async chown(...args: DropFirstParameters<typeof fsp.chown>) {
|
|
281
|
+
return await fsp.chown(this.#value, ...args);
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
/**
|
|
@@ -289,8 +289,8 @@ export class Path {
|
|
|
289
289
|
*
|
|
290
290
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.copyFile}
|
|
291
291
|
*/
|
|
292
|
-
copyFile(...args: DropFirstParameters<typeof fsp.copyFile>) {
|
|
293
|
-
return fsp.copyFile(this.#value, ...args);
|
|
292
|
+
async copyFile(...args: DropFirstParameters<typeof fsp.copyFile>) {
|
|
293
|
+
return await fsp.copyFile(this.#value, ...args);
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
/**
|
|
@@ -310,8 +310,8 @@ export class Path {
|
|
|
310
310
|
| null,
|
|
311
311
|
): Promise<void>;
|
|
312
312
|
mkdir(options?: fs.MakeDirectoryOptions | fs.Mode | null): Promise<string | undefined>;
|
|
313
|
-
mkdir(...args: any): any {
|
|
314
|
-
return fsp.mkdir(this.#value, ...args);
|
|
313
|
+
async mkdir(...args: any): Promise<any> {
|
|
314
|
+
return await fsp.mkdir(this.#value, ...args);
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
/**
|
|
@@ -322,8 +322,8 @@ export class Path {
|
|
|
322
322
|
*
|
|
323
323
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.open}
|
|
324
324
|
*/
|
|
325
|
-
open(...args: DropFirstParameters<typeof fsp.open>) {
|
|
326
|
-
return fsp.open(this.#value, ...args);
|
|
325
|
+
async open(...args: DropFirstParameters<typeof fsp.open>) {
|
|
326
|
+
return await fsp.open(this.#value, ...args);
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
/**
|
|
@@ -374,8 +374,8 @@ export class Path {
|
|
|
374
374
|
withFileTypes: true;
|
|
375
375
|
},
|
|
376
376
|
): Promise<Array<fs.Dirent<Buffer>>>;
|
|
377
|
-
readdir(...args: any): any {
|
|
378
|
-
return fsp.readdir(this.#value, ...args);
|
|
377
|
+
async readdir(...args: any): Promise<any> {
|
|
378
|
+
return await fsp.readdir(this.#value, ...args);
|
|
379
379
|
}
|
|
380
380
|
|
|
381
381
|
/**
|
|
@@ -412,8 +412,8 @@ export class Path {
|
|
|
412
412
|
| BufferEncoding
|
|
413
413
|
| null,
|
|
414
414
|
): Promise<Buffer | string>;
|
|
415
|
-
readFile(...args: any): any {
|
|
416
|
-
return fsp.readFile(this.#value, ...args);
|
|
415
|
+
async readFile(...args: any): Promise<any> {
|
|
416
|
+
return await fsp.readFile(this.#value, ...args);
|
|
417
417
|
}
|
|
418
418
|
|
|
419
419
|
/**
|
|
@@ -426,8 +426,8 @@ export class Path {
|
|
|
426
426
|
*
|
|
427
427
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.rename}
|
|
428
428
|
*/
|
|
429
|
-
rename(newPath: PathLike) {
|
|
430
|
-
return fsp.rename(this.#value, newPath.toString());
|
|
429
|
+
async rename(newPath: PathLike) {
|
|
430
|
+
return await fsp.rename(this.#value, newPath.toString());
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
/**
|
|
@@ -438,8 +438,8 @@ export class Path {
|
|
|
438
438
|
*
|
|
439
439
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.rm}
|
|
440
440
|
*/
|
|
441
|
-
rm(...args: DropFirstParameters<typeof fsp.rm>) {
|
|
442
|
-
return fsp.rm(this.#value, ...args);
|
|
441
|
+
async rm(...args: DropFirstParameters<typeof fsp.rm>) {
|
|
442
|
+
return await fsp.rm(this.#value, ...args);
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
/**
|
|
@@ -450,8 +450,8 @@ export class Path {
|
|
|
450
450
|
*
|
|
451
451
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.rmdir}
|
|
452
452
|
*/
|
|
453
|
-
rmdir(...args: DropFirstParameters<typeof fsp.rmdir>) {
|
|
454
|
-
return fsp.rmdir(this.#value, ...args);
|
|
453
|
+
async rmdir(...args: DropFirstParameters<typeof fsp.rmdir>) {
|
|
454
|
+
return await fsp.rmdir(this.#value, ...args);
|
|
455
455
|
}
|
|
456
456
|
|
|
457
457
|
/**
|
|
@@ -512,8 +512,8 @@ export class Path {
|
|
|
512
512
|
*
|
|
513
513
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.truncate}
|
|
514
514
|
*/
|
|
515
|
-
truncate(...args: DropFirstParameters<typeof fsp.truncate>) {
|
|
516
|
-
return fsp.truncate(this.#value, ...args);
|
|
515
|
+
async truncate(...args: DropFirstParameters<typeof fsp.truncate>) {
|
|
516
|
+
return await fsp.truncate(this.#value, ...args);
|
|
517
517
|
}
|
|
518
518
|
|
|
519
519
|
/**
|
|
@@ -524,8 +524,8 @@ export class Path {
|
|
|
524
524
|
*
|
|
525
525
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.unlink}
|
|
526
526
|
*/
|
|
527
|
-
unlink() {
|
|
528
|
-
return fsp.unlink(this.#value);
|
|
527
|
+
async unlink() {
|
|
528
|
+
return await fsp.unlink(this.#value);
|
|
529
529
|
}
|
|
530
530
|
|
|
531
531
|
/**
|
|
@@ -536,7 +536,7 @@ export class Path {
|
|
|
536
536
|
*
|
|
537
537
|
* @see {@link https://nodejs.org/api/fs.html | Node.js fsPromises.writeFile}
|
|
538
538
|
*/
|
|
539
|
-
writeFile(...args: DropFirstParameters<typeof fsp.writeFile>) {
|
|
540
|
-
return fsp.writeFile(this.#value, ...args);
|
|
539
|
+
async writeFile(...args: DropFirstParameters<typeof fsp.writeFile>) {
|
|
540
|
+
return await fsp.writeFile(this.#value, ...args);
|
|
541
541
|
}
|
|
542
542
|
}
|
package/src/enum.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
objectKeys,
|
|
3
|
+
objectValues,
|
|
4
|
+
} from 'ts-extras';
|
|
5
|
+
import type { ValueOf } from 'type-fest';
|
|
6
|
+
|
|
1
7
|
/**
|
|
2
8
|
* Extracts only the numeric values from an enumeration-like object.
|
|
3
9
|
*
|
|
@@ -22,7 +28,7 @@
|
|
|
22
28
|
* console.log(getEnumNumberValues(RecordType)); // => [0, 1]
|
|
23
29
|
* ```
|
|
24
30
|
*/
|
|
25
|
-
export function getEnumNumberValues<T extends Record<string, any>>(enumObject: T): Array<Extract<T
|
|
31
|
+
export function getEnumNumberValues<T extends Record<string, any>>(enumObject: T): Array<Extract<ValueOf<T>, number>> {
|
|
26
32
|
return getEnumValues(enumObject).filter((value) => typeof value === 'number');
|
|
27
33
|
}
|
|
28
34
|
|
|
@@ -50,7 +56,7 @@ export function getEnumNumberValues<T extends Record<string, any>>(enumObject: T
|
|
|
50
56
|
* console.log(getEnumStringValues(RecordType)); // => ['unknown']
|
|
51
57
|
* ```
|
|
52
58
|
*/
|
|
53
|
-
export function getEnumStringValues<T extends Record<string, any>>(enumObject: T): Array<Extract<T
|
|
59
|
+
export function getEnumStringValues<T extends Record<string, any>>(enumObject: T): Array<Extract<ValueOf<T>, string>> {
|
|
54
60
|
return getEnumValues(enumObject).filter((value) => typeof value === 'string');
|
|
55
61
|
}
|
|
56
62
|
|
|
@@ -102,9 +108,9 @@ export function getEnumStringValues<T extends Record<string, any>>(enumObject: T
|
|
|
102
108
|
* console.log(getEnumValues(RecordType)); // => [0, 1, 'unknown']
|
|
103
109
|
* ```
|
|
104
110
|
*/
|
|
105
|
-
export function getEnumValues<T extends Record<string, any>>(enumObject: T): Array<T
|
|
106
|
-
const values =
|
|
111
|
+
export function getEnumValues<T extends Record<string, any>>(enumObject: T): Array<ValueOf<T>> {
|
|
112
|
+
const values = objectValues(enumObject);
|
|
107
113
|
const hasNumberValues = values.some((value) => typeof value === 'number');
|
|
108
114
|
if (!hasNumberValues) return values;
|
|
109
|
-
return
|
|
115
|
+
return objectKeys(enumObject).filter((key) => Number.isNaN(Number(key))).map((key) => enumObject[key]);
|
|
110
116
|
}
|
package/src/event-awaiter.ts
CHANGED
|
@@ -58,8 +58,8 @@ export class EventAwaiter<T> {
|
|
|
58
58
|
*
|
|
59
59
|
* @throws Error through promise rejection if `strict` mode encounters an existing waiter.
|
|
60
60
|
*/
|
|
61
|
-
wait(key: string, timeoutMs?: number, mode?: 'override' | 'strict', signal?: AbortSignal) {
|
|
62
|
-
return new Promise<T | undefined>((resolve) => {
|
|
61
|
+
async wait(key: string, timeoutMs?: number, mode?: 'override' | 'strict', signal?: AbortSignal) {
|
|
62
|
+
return await new Promise<T | undefined>((resolve) => {
|
|
63
63
|
const resolvers = this.#promiseResolvers.get(key) || [];
|
|
64
64
|
if (resolvers.length) {
|
|
65
65
|
switch (mode) {
|
|
@@ -122,8 +122,8 @@ export class EventAwaiter<T> {
|
|
|
122
122
|
*
|
|
123
123
|
* @see {@link EventAwaiter.wait}
|
|
124
124
|
*/
|
|
125
|
-
waitExclusive(key: string, timeoutMs?: number, signal?: AbortSignal) {
|
|
126
|
-
return this.wait(key, timeoutMs, 'strict', signal);
|
|
125
|
+
async waitExclusive(key: string, timeoutMs?: number, signal?: AbortSignal) {
|
|
126
|
+
return await this.wait(key, timeoutMs, 'strict', signal);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
/**
|
|
@@ -140,7 +140,7 @@ export class EventAwaiter<T> {
|
|
|
140
140
|
*
|
|
141
141
|
* @see {@link EventAwaiter.wait}
|
|
142
142
|
*/
|
|
143
|
-
waitLatest(key: string, timeoutMs?: number, signal?: AbortSignal) {
|
|
144
|
-
return this.wait(key, timeoutMs, 'override', signal);
|
|
143
|
+
async waitLatest(key: string, timeoutMs?: number, signal?: AbortSignal) {
|
|
144
|
+
return await this.wait(key, timeoutMs, 'override', signal);
|
|
145
145
|
}
|
|
146
146
|
}
|
package/src/general.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Arrayable } from 'type-fest';
|
|
2
|
+
|
|
1
3
|
/* eslint-disable jsdoc/check-param-names */
|
|
2
4
|
|
|
3
5
|
/**
|
|
@@ -31,9 +33,9 @@
|
|
|
31
33
|
* console.log(extractFirstValue(undefined, 'fallback')); // => 'fallback'
|
|
32
34
|
* ```
|
|
33
35
|
*/
|
|
34
|
-
export function extractFirstValue<T>(value: T
|
|
35
|
-
export function extractFirstValue<T, D>(value: T
|
|
36
|
-
export function extractFirstValue<T, D>(value: T
|
|
36
|
+
export function extractFirstValue<T>(value: Arrayable<T>): T | undefined;
|
|
37
|
+
export function extractFirstValue<T, D>(value: Arrayable<T>, defaultValue: D): D | NonNullable<T>;
|
|
38
|
+
export function extractFirstValue<T, D>(value: Arrayable<T>, defaultValue?: D) {
|
|
37
39
|
return (Array.isArray(value) ? value[0] : value) ?? defaultValue;
|
|
38
40
|
}
|
|
39
41
|
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
objectHasOwn,
|
|
3
|
+
objectKeys,
|
|
4
|
+
} from 'ts-extras';
|
|
5
|
+
|
|
1
6
|
import type {
|
|
2
7
|
Logger,
|
|
3
8
|
LoggerDiagnostic,
|
|
@@ -172,7 +177,7 @@ export function createLoggerCore(options: LoggerOptions, hooks: LoggerHooks): Re
|
|
|
172
177
|
},
|
|
173
178
|
} as Logger;
|
|
174
179
|
|
|
175
|
-
for (const type of
|
|
180
|
+
for (const type of objectKeys(loggerMethods) as LoggerMethod[]) {
|
|
176
181
|
logger[type] = async (...args: unknown[]) => {
|
|
177
182
|
try {
|
|
178
183
|
refreshLevel();
|
|
@@ -202,7 +207,7 @@ function getLevelSeverity(level: LoggerLevel | LoggerMethod): number {
|
|
|
202
207
|
|
|
203
208
|
function isLevel(value: unknown): value is LoggerLevel {
|
|
204
209
|
return typeof value === 'string'
|
|
205
|
-
&& (value === 'silent' || (value !== 'success' &&
|
|
210
|
+
&& (value === 'silent' || (value !== 'success' && objectHasOwn(loggerMethods, value)));
|
|
206
211
|
}
|
|
207
212
|
|
|
208
213
|
function readEnvironmentLevel(): string | undefined {
|
|
@@ -141,8 +141,8 @@ export async function createFileWriter(
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
return Object.freeze({
|
|
144
|
-
close() {
|
|
145
|
-
if (closePromise) return closePromise;
|
|
144
|
+
async close() {
|
|
145
|
+
if (closePromise) return await closePromise;
|
|
146
146
|
closing = true;
|
|
147
147
|
closePromise = new Promise<void>((resolveClosed) => {
|
|
148
148
|
if (closed) {
|
|
@@ -158,21 +158,21 @@ export async function createFileWriter(
|
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
|
|
161
|
-
return closePromise;
|
|
161
|
+
return await closePromise;
|
|
162
162
|
},
|
|
163
163
|
getStats: () => Object.freeze({
|
|
164
164
|
droppedCount,
|
|
165
165
|
pendingBytes,
|
|
166
166
|
writeErrorCount,
|
|
167
167
|
}),
|
|
168
|
-
write(text: string) {
|
|
168
|
+
async write(text: string) {
|
|
169
169
|
if (closing || closed || failed) {
|
|
170
170
|
report({
|
|
171
171
|
message: 'File output is closed or unavailable.',
|
|
172
172
|
type: 'closed',
|
|
173
173
|
});
|
|
174
174
|
|
|
175
|
-
return Promise.resolve();
|
|
175
|
+
return await Promise.resolve();
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
const bytes = Buffer.byteLength(text);
|
|
@@ -184,11 +184,11 @@ export async function createFileWriter(
|
|
|
184
184
|
type: 'overflow',
|
|
185
185
|
});
|
|
186
186
|
|
|
187
|
-
return Promise.resolve();
|
|
187
|
+
return await Promise.resolve();
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
pendingBytes += bytes;
|
|
191
|
-
return new Promise<void>((resolveWritten) => {
|
|
191
|
+
return await new Promise<void>((resolveWritten) => {
|
|
192
192
|
let settled = false;
|
|
193
193
|
const settle = () => {
|
|
194
194
|
if (settled) return;
|
package/src/logger/node/index.ts
CHANGED
|
@@ -47,7 +47,7 @@ export async function createNodeLogger(options: NodeLoggerOptions = {}): Promise
|
|
|
47
47
|
options,
|
|
48
48
|
{
|
|
49
49
|
report,
|
|
50
|
-
write(record) {
|
|
50
|
+
async write(record) {
|
|
51
51
|
if (closed) {
|
|
52
52
|
report({
|
|
53
53
|
message: 'Logger is closed.',
|
|
@@ -69,14 +69,14 @@ export async function createNodeLogger(options: NodeLoggerOptions = {}): Promise
|
|
|
69
69
|
void completion.then(() => consoleWrites.delete(completion));
|
|
70
70
|
const fileCompletion = writer?.write(`${stripVTControlCharacters(text)}\n`);
|
|
71
71
|
return fileCompletion
|
|
72
|
-
? Promise.all([
|
|
72
|
+
? await Promise.all([
|
|
73
73
|
completion,
|
|
74
74
|
fileCompletion,
|
|
75
75
|
]).then(() => {})
|
|
76
|
-
: completion;
|
|
76
|
+
: await completion;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
return writer?.write(`${stripVTControlCharacters(text)}\n`);
|
|
79
|
+
return await writer?.write(`${stripVTControlCharacters(text)}\n`);
|
|
80
80
|
},
|
|
81
81
|
},
|
|
82
82
|
);
|
|
@@ -85,8 +85,8 @@ export async function createNodeLogger(options: NodeLoggerOptions = {}): Promise
|
|
|
85
85
|
|
|
86
86
|
return Object.freeze({
|
|
87
87
|
...logger,
|
|
88
|
-
close() {
|
|
89
|
-
if (closePromise) return closePromise;
|
|
88
|
+
async close() {
|
|
89
|
+
if (closePromise) return await closePromise;
|
|
90
90
|
closed = true;
|
|
91
91
|
closePromise = (async () => {
|
|
92
92
|
await Promise.all([
|
|
@@ -108,7 +108,7 @@ export async function createNodeLogger(options: NodeLoggerOptions = {}): Promise
|
|
|
108
108
|
consoleTargets.clear();
|
|
109
109
|
})();
|
|
110
110
|
|
|
111
|
-
return closePromise;
|
|
111
|
+
return await closePromise;
|
|
112
112
|
},
|
|
113
113
|
getStats: () => writer?.getStats() ?? Object.freeze({
|
|
114
114
|
droppedCount: 0,
|
|
@@ -121,7 +121,7 @@ export async function createNodeLogger(options: NodeLoggerOptions = {}): Promise
|
|
|
121
121
|
/**
|
|
122
122
|
* One error listener per shared output stream; retained until its last owning logger calls close().
|
|
123
123
|
*/
|
|
124
|
-
function writeConsole(
|
|
124
|
+
async function writeConsole(
|
|
125
125
|
target: NodeJS.WriteStream,
|
|
126
126
|
text: string,
|
|
127
127
|
report: (event: LoggerDiagnostic) => void,
|
|
@@ -149,7 +149,7 @@ function writeConsole(
|
|
|
149
149
|
|
|
150
150
|
state.owners.add(owner);
|
|
151
151
|
const current = state;
|
|
152
|
-
return new Promise<void>((resolveWritten) => {
|
|
152
|
+
return await new Promise<void>((resolveWritten) => {
|
|
153
153
|
let settled = false;
|
|
154
154
|
const settle = (error?: Error | null) => {
|
|
155
155
|
if (settled) return;
|
|
@@ -20,18 +20,18 @@ import type { RedisLikeStorage } from './types';
|
|
|
20
20
|
*/
|
|
21
21
|
export function createRedisKeyedStore<D = unknown>(storage: MaybeReadonly<RedisLikeStorage>) {
|
|
22
22
|
return <P extends any[]>(keyFn: (...args: P) => string) => Object.freeze({
|
|
23
|
-
getAndRemoveItem: (...args: P) => storage.getAndRemoveItem<D>(keyFn(...args)),
|
|
24
|
-
getItem: (...args: P) => storage.getItem<D>(keyFn(...args)),
|
|
25
|
-
getItemTtl: (...args: P) => storage.getItemTtl(keyFn(...args)),
|
|
26
|
-
hasItem: (...args: P) => storage.hasItem(keyFn(...args)),
|
|
27
|
-
removeItem: (...args: P) => storage.removeItem(keyFn(...args)),
|
|
23
|
+
getAndRemoveItem: async (...args: P) => await storage.getAndRemoveItem<D>(keyFn(...args)),
|
|
24
|
+
getItem: async (...args: P) => await storage.getItem<D>(keyFn(...args)),
|
|
25
|
+
getItemTtl: async (...args: P) => await storage.getItemTtl(keyFn(...args)),
|
|
26
|
+
hasItem: async (...args: P) => await storage.hasItem(keyFn(...args)),
|
|
27
|
+
removeItem: async (...args: P) => await storage.removeItem(keyFn(...args)),
|
|
28
28
|
resolveKey: (...args: P) => keyFn(...args),
|
|
29
|
-
setItem: (value: D, ...args: P) => storage.setItem(keyFn(...args), value),
|
|
30
|
-
setItemWithTtl(ttlSeconds: number, value: D, ...args: P) {
|
|
31
|
-
return storage.setItemWithTtl(keyFn(...args), ttlSeconds, value);
|
|
29
|
+
setItem: async (value: D, ...args: P) => await storage.setItem(keyFn(...args), value),
|
|
30
|
+
async setItemWithTtl(ttlSeconds: number, value: D, ...args: P) {
|
|
31
|
+
return await storage.setItemWithTtl(keyFn(...args), ttlSeconds, value);
|
|
32
32
|
},
|
|
33
|
-
setItemWithTtlIfAbsent(ttlSeconds: number, value: D, ...args: P) {
|
|
34
|
-
return storage.setItemWithTtlIfAbsent(keyFn(...args), ttlSeconds, value);
|
|
33
|
+
async setItemWithTtlIfAbsent(ttlSeconds: number, value: D, ...args: P) {
|
|
34
|
+
return await storage.setItemWithTtlIfAbsent(keyFn(...args), ttlSeconds, value);
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
}
|
|
@@ -73,8 +73,8 @@ export function createRedisMsgpackStorage(adapter: RedisLikeAdapter): Readonly<R
|
|
|
73
73
|
const rawValue = await adapter.getBuffer(key);
|
|
74
74
|
return rawValue ? decode(rawValue) as T : null;
|
|
75
75
|
},
|
|
76
|
-
getItemTtl: (key: string) => adapter.ttl(key),
|
|
77
|
-
hasItem: (key: string) => adapter.has(key),
|
|
76
|
+
getItemTtl: async (key: string) => await adapter.ttl(key),
|
|
77
|
+
hasItem: async (key: string) => await adapter.has(key),
|
|
78
78
|
removeItem: async (key: string) => await adapter.delete(key) === 1,
|
|
79
79
|
setItem: async (key: string, value: any) => await adapter.setBuffer(key, encode(value)) === 'OK',
|
|
80
80
|
async setItemWithTtl(key: string, ttlSeconds: number, value: any) {
|
package/src/time.ts
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* await delay(5000, controller.signal);
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
export function delay(ms: number, signal?: AbortSignal): Promise<void> {
|
|
22
|
-
return new Promise((resolve) => {
|
|
21
|
+
export async function delay(ms: number, signal?: AbortSignal): Promise<void> {
|
|
22
|
+
return await new Promise((resolve) => {
|
|
23
23
|
if (signal?.aborted) {
|
|
24
24
|
resolve();
|
|
25
25
|
return;
|
|
@@ -61,8 +61,8 @@ export function delay(ms: number, signal?: AbortSignal): Promise<void> {
|
|
|
61
61
|
* }
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
|
-
export function delayOrThrow(ms: number, signal?: AbortSignal): Promise<void> {
|
|
65
|
-
return new Promise((resolve, reject) => {
|
|
64
|
+
export async function delayOrThrow(ms: number, signal?: AbortSignal): Promise<void> {
|
|
65
|
+
return await new Promise((resolve, reject) => {
|
|
66
66
|
if (signal?.aborted) {
|
|
67
67
|
reject(signal.reason);
|
|
68
68
|
return;
|