@nemigo/helpers 0.13.1 → 0.13.3
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/async/space.d.ts +2 -1
- package/dist/async/space.js +5 -5
- package/dist/colors.d.ts +539 -0
- package/dist/colors.js +888 -0
- package/dist/future.d.ts +1 -0
- package/dist/future.js +13 -1
- package/dist/lru.d.ts +3 -3
- package/dist/omitter.d.ts +4 -1
- package/dist/omitter.js +7 -7
- package/dist/promoter.d.ts +4 -1
- package/dist/queue.d.ts +3 -2
- package/dist/queue.js +4 -2
- package/package.json +6 -2
package/dist/future.d.ts
CHANGED
package/dist/future.js
CHANGED
|
@@ -47,7 +47,15 @@ export class Future {
|
|
|
47
47
|
run(call, { type = "timer", key = Symbol(), delay = this.delay } = {}) {
|
|
48
48
|
if (type === "timer") {
|
|
49
49
|
this.reset(type, this.timers, key);
|
|
50
|
-
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
51
|
+
const timer = setTimeout(async () => {
|
|
52
|
+
try {
|
|
53
|
+
await call();
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
this.timers.delete(key);
|
|
57
|
+
}
|
|
58
|
+
}, delay);
|
|
51
59
|
this.timers.set(key, timer);
|
|
52
60
|
}
|
|
53
61
|
else {
|
|
@@ -56,4 +64,8 @@ export class Future {
|
|
|
56
64
|
this.intervals.set(key, timer);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
67
|
+
has(type, key) {
|
|
68
|
+
const map = this.get(type);
|
|
69
|
+
return map.has(key);
|
|
70
|
+
}
|
|
59
71
|
}
|
package/dist/lru.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RID } from "./types.js";
|
|
1
|
+
import type { RID, Timestamp } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* LRU (Least Recently Used) кэш с поддержкой TTL (time-to-live)
|
|
4
4
|
*
|
|
@@ -20,12 +20,12 @@ export declare class LRU<V = unknown, K extends RID = string> {
|
|
|
20
20
|
/**
|
|
21
21
|
* Максимальное количество элементов в кэше
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
readonly max: number;
|
|
24
24
|
/**
|
|
25
25
|
* Глобальный TTL (time-to-live) для каждого элемента в {@link Timestamp}.
|
|
26
26
|
* Если не задан (`undefined`), элементы не устаревают глобально
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
readonly ttl?: Timestamp;
|
|
29
29
|
/**
|
|
30
30
|
* Внутреннее хранилище кэша.
|
|
31
31
|
* Хранит значения вместе с информацией о времени истечения срока их действия
|
package/dist/omitter.d.ts
CHANGED
|
@@ -64,7 +64,10 @@ export type MergeOmitSchemas<S1, S2> = {
|
|
|
64
64
|
*/
|
|
65
65
|
export declare class Omitter<Source, OmitSchema> {
|
|
66
66
|
#private;
|
|
67
|
-
|
|
67
|
+
readonly __structure: {
|
|
68
|
+
keys: Set<KEYS<OmitSchema>>;
|
|
69
|
+
nested: Map<KEYS<OmitSchema>, Omitter<any, any>>;
|
|
70
|
+
};
|
|
68
71
|
readonly schema: OmitSchema;
|
|
69
72
|
readonly zip: ZIP;
|
|
70
73
|
constructor(schema: OmitSchema);
|
package/dist/omitter.js
CHANGED
|
@@ -12,7 +12,7 @@ import { zipper } from "./zipper.js";
|
|
|
12
12
|
* const result = omitter.run(source); // { a: 1, b: { d: 3 }, e: 4 }
|
|
13
13
|
*/
|
|
14
14
|
export class Omitter {
|
|
15
|
-
|
|
15
|
+
__structure;
|
|
16
16
|
schema;
|
|
17
17
|
zip;
|
|
18
18
|
constructor(schema) {
|
|
@@ -27,19 +27,19 @@ export class Omitter {
|
|
|
27
27
|
}
|
|
28
28
|
return true;
|
|
29
29
|
}));
|
|
30
|
-
this.
|
|
30
|
+
this.__structure = { keys, nested };
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Получение хэша вложенного эмиттера
|
|
34
34
|
*/
|
|
35
35
|
into(key) {
|
|
36
|
-
return this.
|
|
36
|
+
return this.__structure.nested.get(key)?.zip;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Проверяет, останется ли ключ в итоговом объекте
|
|
40
40
|
*/
|
|
41
41
|
left(key) {
|
|
42
|
-
return !this.
|
|
42
|
+
return !this.__structure.keys.has(key);
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* Рекурсивно удаляет ключи из объекта на основе структуры
|
|
@@ -58,7 +58,7 @@ export class Omitter {
|
|
|
58
58
|
structure.nested.forEach((omitter, key) => {
|
|
59
59
|
const nested = obj[key];
|
|
60
60
|
if (nested && typeof nested === "object")
|
|
61
|
-
omitter.#process(nested, omitter.
|
|
61
|
+
omitter.#process(nested, omitter.__structure);
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
@@ -72,7 +72,7 @@ export class Omitter {
|
|
|
72
72
|
if (omitter) {
|
|
73
73
|
const nested = obj[key];
|
|
74
74
|
if (nested && typeof nested === "object") {
|
|
75
|
-
omitter.#process(nested, omitter.
|
|
75
|
+
omitter.#process(nested, omitter.__structure);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -86,7 +86,7 @@ export class Omitter {
|
|
|
86
86
|
* @returns Объект с удалёнными ключами
|
|
87
87
|
*/
|
|
88
88
|
run(source) {
|
|
89
|
-
this.#process(source, this.
|
|
89
|
+
this.#process(source, this.__structure);
|
|
90
90
|
return source;
|
|
91
91
|
}
|
|
92
92
|
}
|
package/dist/promoter.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ import type { RID } from "./types.js";
|
|
|
3
3
|
* Класс для создания простого механизма подписок
|
|
4
4
|
*/
|
|
5
5
|
export declare class Promoter<Data> {
|
|
6
|
-
|
|
6
|
+
__subs: Map<RID, {
|
|
7
|
+
call: (data: Data) => void;
|
|
8
|
+
once?: boolean;
|
|
9
|
+
}>;
|
|
7
10
|
/**
|
|
8
11
|
* Вызывает подписчиков
|
|
9
12
|
*/
|
package/dist/queue.d.ts
CHANGED
|
@@ -16,12 +16,13 @@ export declare abstract class Queue<T> {
|
|
|
16
16
|
* Добавляет элемент в очередь и запускает обработку
|
|
17
17
|
*
|
|
18
18
|
* @param item - Элемент для добавления в очередь
|
|
19
|
+
* @param run - Запуск очереди
|
|
19
20
|
*/
|
|
20
|
-
protected push(item: T): void;
|
|
21
|
+
protected push(item: T, run?: boolean): void;
|
|
21
22
|
/**
|
|
22
23
|
* Запускает обработку очереди с задержкой
|
|
23
24
|
*/
|
|
24
|
-
|
|
25
|
+
run(): void;
|
|
25
26
|
/**
|
|
26
27
|
* Метод для обработки элемента очереди
|
|
27
28
|
*
|
package/dist/queue.js
CHANGED
|
@@ -18,10 +18,12 @@ export class Queue {
|
|
|
18
18
|
* Добавляет элемент в очередь и запускает обработку
|
|
19
19
|
*
|
|
20
20
|
* @param item - Элемент для добавления в очередь
|
|
21
|
+
* @param run - Запуск очереди
|
|
21
22
|
*/
|
|
22
|
-
push(item) {
|
|
23
|
+
push(item, run = true) {
|
|
23
24
|
this._queue.push(item);
|
|
24
|
-
|
|
25
|
+
if (run)
|
|
26
|
+
this.run();
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
29
|
* Запускает обработку очереди с задержкой
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nemigo/helpers",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Vlad Logvin",
|
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
"types": "./dist/cleanup.d.ts",
|
|
44
44
|
"default": "./dist/cleanup.js"
|
|
45
45
|
},
|
|
46
|
+
"./colors": {
|
|
47
|
+
"types": "./dist/colors.d.ts",
|
|
48
|
+
"default": "./dist/colors.js"
|
|
49
|
+
},
|
|
46
50
|
"./cookie": {
|
|
47
51
|
"types": "./dist/cookie.d.ts",
|
|
48
52
|
"default": "./dist/cookie.js"
|
|
@@ -159,6 +163,6 @@
|
|
|
159
163
|
"devDependencies": {
|
|
160
164
|
"@nemigo/configs": "workspace:*",
|
|
161
165
|
"@std/msgpack": "jsr:1.0.3",
|
|
162
|
-
"zod": "4.1.
|
|
166
|
+
"zod": "4.1.12"
|
|
163
167
|
}
|
|
164
168
|
}
|