@nemigo/helpers 0.13.2 → 1.5.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.
Files changed (111) hide show
  1. package/dist/aggregator.d.ts +33 -0
  2. package/dist/aggregator.js +44 -0
  3. package/dist/array.d.ts +33 -0
  4. package/dist/array.js +24 -0
  5. package/dist/async/context.d.ts +73 -0
  6. package/dist/async/context.js +90 -0
  7. package/dist/async/future.d.ts +54 -0
  8. package/dist/async/future.js +71 -0
  9. package/dist/async/index.d.ts +56 -27
  10. package/dist/async/index.js +63 -58
  11. package/dist/async/loader.d.ts +67 -0
  12. package/dist/async/loader.js +101 -0
  13. package/dist/async/queue.d.ts +51 -0
  14. package/dist/async/queue.js +84 -0
  15. package/dist/cases.d.ts +31 -21
  16. package/dist/cases.js +41 -37
  17. package/dist/clean.d.ts +44 -26
  18. package/dist/clean.js +67 -42
  19. package/dist/color/types.d.ts +31 -0
  20. package/dist/color/types.js +1 -0
  21. package/dist/datetime/delta.d.ts +28 -0
  22. package/dist/datetime/delta.js +65 -0
  23. package/dist/datetime/format.d.ts +53 -0
  24. package/dist/datetime/format.js +119 -0
  25. package/dist/datetime/index.d.ts +6 -0
  26. package/dist/datetime/index.js +22 -0
  27. package/dist/datetime/plural.d.ts +77 -0
  28. package/dist/datetime/plural.js +78 -0
  29. package/dist/emitter.d.ts +29 -17
  30. package/dist/emitter.js +35 -21
  31. package/dist/explorer.d.ts +22 -29
  32. package/dist/explorer.js +18 -16
  33. package/dist/files.d.ts +31 -2
  34. package/dist/files.js +33 -8
  35. package/dist/fish.d.ts +29 -0
  36. package/dist/fish.js +70 -0
  37. package/dist/html/cookie.d.ts +48 -0
  38. package/dist/html/cookie.js +37 -0
  39. package/dist/html/events.d.ts +133 -0
  40. package/dist/html/events.js +139 -0
  41. package/dist/html/index.d.ts +31 -0
  42. package/dist/html/index.js +61 -0
  43. package/dist/index.d.ts +38 -40
  44. package/dist/index.js +43 -56
  45. package/dist/jiff/apply.d.ts +93 -0
  46. package/dist/jiff/apply.js +64 -0
  47. package/dist/jiff/extract.d.ts +7 -0
  48. package/dist/jiff/extract.js +82 -0
  49. package/dist/jiff/types.d.ts +57 -0
  50. package/dist/jiff/types.js +1 -0
  51. package/dist/lens.d.ts +20 -31
  52. package/dist/lens.js +22 -37
  53. package/dist/msgpack.d.ts +11 -26
  54. package/dist/msgpack.js +9 -21
  55. package/dist/mutate.d.ts +70 -0
  56. package/dist/mutate.js +130 -0
  57. package/dist/omitter.d.ts +57 -34
  58. package/dist/omitter.js +38 -30
  59. package/dist/path.d.ts +20 -1
  60. package/dist/path.js +21 -2
  61. package/dist/phymath/format.d.ts +60 -0
  62. package/dist/phymath/format.js +34 -0
  63. package/dist/phymath/index.d.ts +30 -30
  64. package/dist/phymath/index.js +41 -33
  65. package/dist/promoter.d.ts +23 -12
  66. package/dist/promoter.js +24 -17
  67. package/dist/random.d.ts +20 -21
  68. package/dist/random.js +22 -23
  69. package/dist/rubles.d.ts +24 -0
  70. package/dist/rubles.js +24 -0
  71. package/dist/script.d.ts +60 -13
  72. package/dist/script.js +46 -10
  73. package/dist/string.d.ts +46 -92
  74. package/dist/string.js +46 -171
  75. package/dist/types.d.ts +144 -25
  76. package/dist/url/index.d.ts +12 -0
  77. package/dist/url/index.js +17 -0
  78. package/dist/url/params.d.ts +141 -0
  79. package/dist/{url.js → url/params.js} +90 -18
  80. package/dist/url/slug.d.ts +28 -0
  81. package/dist/url/slug.js +102 -0
  82. package/dist/veil.d.ts +14 -0
  83. package/dist/veil.js +26 -0
  84. package/dist/xod.d.ts +237 -16
  85. package/dist/xod.js +192 -18
  86. package/dist/zipper.d.ts +22 -4
  87. package/dist/zipper.js +22 -5
  88. package/package.json +82 -34
  89. package/dist/async/space.d.ts +0 -7
  90. package/dist/async/space.js +0 -31
  91. package/dist/cleanup.d.ts +0 -9
  92. package/dist/cleanup.js +0 -18
  93. package/dist/colors.d.ts +0 -539
  94. package/dist/colors.js +0 -888
  95. package/dist/cookie.d.ts +0 -60
  96. package/dist/cookie.js +0 -48
  97. package/dist/datetime.d.ts +0 -82
  98. package/dist/datetime.js +0 -161
  99. package/dist/format.d.ts +0 -36
  100. package/dist/format.js +0 -26
  101. package/dist/future.d.ts +0 -50
  102. package/dist/future.js +0 -59
  103. package/dist/html.d.ts +0 -145
  104. package/dist/html.js +0 -205
  105. package/dist/humanly.d.ts +0 -9
  106. package/dist/humanly.js +0 -93
  107. package/dist/lru.d.ts +0 -77
  108. package/dist/lru.js +0 -128
  109. package/dist/queue.d.ts +0 -39
  110. package/dist/queue.js +0 -54
  111. package/dist/url.d.ts +0 -61
package/dist/zipper.d.ts CHANGED
@@ -1,12 +1,30 @@
1
+ import type { Serializable } from "./types.js";
1
2
  /**
2
- * Уникальный хэш для данных
3
+ * Тип хэша из {@link zipper}
3
4
  */
4
5
  export type ZIP = string;
5
6
  /**
6
- * Полином для {@link zipper}
7
+ * Предварительно вычисленный массив из 256 32-битных значений полинома 0xEDB88320 (стандартный для {@link http://create.stephan-brumme.com/crc32 CRC32})
7
8
  */
8
9
  export declare const polynomial: Uint32Array<ArrayBuffer>;
9
10
  /**
10
- * Вдохновлено может и является) CRC32
11
+ * Генерирует хэш в формате `${prefix}{hash}` на основе алгоритма {@link http://create.stephan-brumme.com/crc32 CRC32}
12
+ *
13
+ * @remarks Для сериализации используется {@link JSON.stringify}
14
+ * @remarks Порядок свойств в объектах **влияет** на результат
15
+ *
16
+ * @param data - Данные для хэширования
17
+ * @param [prefix="zip:"] - Префикс для идентификации хэша
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const obj1 = { age: 30, name: "John" };
22
+ * const obj2 = { age: 30, name: "John" };
23
+ * const obj3 = { name: "John", age: 30 }; // Обратный порядок
24
+ *
25
+ * const hash1 = zipper(obj1); // "zip:4a8f3c2e"
26
+ * const hash2 = zipper(obj2); // "zip:4a8f3c2e" (тот же хэш)
27
+ * const hash3 = zipper(obj3); // "zip:6b9g4d3f" (другой хэш)
28
+ * ```
11
29
  */
12
- export declare function zipper(data?: unknown): ZIP;
30
+ export declare const zipper: (data: Serializable, prefix?: string) => ZIP;
package/dist/zipper.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Полином для {@link zipper}
2
+ * Предварительно вычисленный массив из 256 32-битных значений полинома 0xEDB88320 (стандартный для {@link http://create.stephan-brumme.com/crc32 CRC32})
3
3
  */
4
4
  export const polynomial = Uint32Array.from({ length: 256 }, (_, i) => {
5
5
  let crc = i;
@@ -8,12 +8,29 @@ export const polynomial = Uint32Array.from({ length: 256 }, (_, i) => {
8
8
  return crc;
9
9
  });
10
10
  /**
11
- * Вдохновлено может и является) CRC32
11
+ * Генерирует хэш в формате `${prefix}{hash}` на основе алгоритма {@link http://create.stephan-brumme.com/crc32 CRC32}
12
+ *
13
+ * @remarks Для сериализации используется {@link JSON.stringify}
14
+ * @remarks Порядок свойств в объектах **влияет** на результат
15
+ *
16
+ * @param data - Данные для хэширования
17
+ * @param [prefix="zip:"] - Префикс для идентификации хэша
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const obj1 = { age: 30, name: "John" };
22
+ * const obj2 = { age: 30, name: "John" };
23
+ * const obj3 = { name: "John", age: 30 }; // Обратный порядок
24
+ *
25
+ * const hash1 = zipper(obj1); // "zip:4a8f3c2e"
26
+ * const hash2 = zipper(obj2); // "zip:4a8f3c2e" (тот же хэш)
27
+ * const hash3 = zipper(obj3); // "zip:6b9g4d3f" (другой хэш)
28
+ * ```
12
29
  */
13
- export function zipper(data = "undefined") {
30
+ export const zipper = (data, prefix = "zip:") => {
14
31
  const str = JSON.stringify(data);
15
32
  let crc = 0 ^ -1;
16
33
  for (let i = str.length - 1; i >= 0; i--)
17
34
  crc = (crc >>> 8) ^ polynomial[(crc ^ str.charCodeAt(i)) & 0xff];
18
- return "zi" + ((crc ^ -1) >>> 0).toString(16);
19
- }
35
+ return prefix + ((crc ^ -1) >>> 0).toString(16).padStart(8, "0");
36
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nemigo/helpers",
3
- "version": "0.13.2",
3
+ "version": "1.5.0",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Vlad Logvin",
@@ -23,13 +23,33 @@
23
23
  "types": "./dist/index.d.ts",
24
24
  "default": "./dist/index.js"
25
25
  },
26
+ "./aggregator": {
27
+ "types": "./dist/aggregator.d.ts",
28
+ "default": "./dist/aggregator.js"
29
+ },
30
+ "./array": {
31
+ "types": "./dist/sortify.d.ts",
32
+ "default": "./dist/sortify.js"
33
+ },
26
34
  "./async": {
27
35
  "types": "./dist/async/index.d.ts",
28
36
  "default": "./dist/async/index.js"
29
37
  },
30
- "./async/space": {
31
- "types": "./dist/async/space.d.ts",
32
- "default": "./dist/async/space.js"
38
+ "./async/context": {
39
+ "types": "./dist/async/context.d.ts",
40
+ "default": "./dist/async/context.js"
41
+ },
42
+ "./async/future": {
43
+ "types": "./dist/async/future.d.ts",
44
+ "default": "./dist/async/future.js"
45
+ },
46
+ "./async/loader": {
47
+ "types": "./dist/async/loader.d.ts",
48
+ "default": "./dist/async/loader.js"
49
+ },
50
+ "./async/queue": {
51
+ "types": "./dist/async/queue.d.ts",
52
+ "default": "./dist/async/queue.js"
33
53
  },
34
54
  "./cases": {
35
55
  "types": "./dist/cases.d.ts",
@@ -39,21 +59,29 @@
39
59
  "types": "./dist/clean.d.ts",
40
60
  "default": "./dist/clean.js"
41
61
  },
42
- "./cleanup": {
43
- "types": "./dist/cleanup.d.ts",
44
- "default": "./dist/cleanup.js"
62
+ "./color": {
63
+ "types": "./dist/color/index.d.ts",
64
+ "default": "./dist/color/index.js"
45
65
  },
46
- "./colors": {
47
- "types": "./dist/colors.d.ts",
48
- "default": "./dist/colors.js"
49
- },
50
- "./cookie": {
51
- "types": "./dist/cookie.d.ts",
52
- "default": "./dist/cookie.js"
66
+ "./color/types": {
67
+ "types": "./dist/color/types.d.ts",
68
+ "default": "./dist/color/types.js"
53
69
  },
54
70
  "./datetime": {
55
- "types": "./dist/datetime.d.ts",
56
- "default": "./dist/datetime.js"
71
+ "types": "./dist/datetime/index.d.ts",
72
+ "default": "./dist/datetime/index.js"
73
+ },
74
+ "./datetime/delta": {
75
+ "types": "./dist/datetime/delta.d.ts",
76
+ "default": "./dist/datetime/delta.js"
77
+ },
78
+ "./datetime/format": {
79
+ "types": "./dist/datetime/format.d.ts",
80
+ "default": "./dist/datetime/format.js"
81
+ },
82
+ "./datetime/plural": {
83
+ "types": "./dist/datetime/plural.d.ts",
84
+ "default": "./dist/datetime/plural.js"
57
85
  },
58
86
  "./emitter": {
59
87
  "types": "./dist/emitter.d.ts",
@@ -67,34 +95,38 @@
67
95
  "types": "./dist/files.d.ts",
68
96
  "default": "./dist/files.js"
69
97
  },
70
- "./format": {
71
- "types": "./dist/format.d.ts",
72
- "default": "./dist/format.js"
98
+ "./fish": {
99
+ "types": "./dist/cases.d.ts",
100
+ "default": "./dist/cases.js"
73
101
  },
74
102
  "./future": {
75
103
  "types": "./dist/future.d.ts",
76
104
  "default": "./dist/future.js"
77
105
  },
78
106
  "./html": {
79
- "types": "./dist/html.d.ts",
80
- "default": "./dist/html.js"
107
+ "types": "./dist/html/index.d.ts",
108
+ "default": "./dist/html/index.js"
109
+ },
110
+ "./html/cookie": {
111
+ "types": "./dist/html/cookie.d.ts",
112
+ "default": "./dist/html/cookie.js"
81
113
  },
82
- "./humanly": {
83
- "types": "./dist/humanly.d.ts",
84
- "default": "./dist/humanly.js"
114
+ "./html/events": {
115
+ "types": "./dist/html/events.d.ts",
116
+ "default": "./dist/html/events.js"
85
117
  },
86
118
  "./lens": {
87
119
  "types": "./dist/lens.d.ts",
88
120
  "default": "./dist/lens.js"
89
121
  },
90
- "./lru": {
91
- "types": "./dist/lru.d.ts",
92
- "default": "./dist/lru.js"
93
- },
94
122
  "./msgpack": {
95
123
  "types": "./dist/msgpack.d.ts",
96
124
  "default": "./dist/msgpack.js"
97
125
  },
126
+ "./mutate": {
127
+ "types": "./dist/mutate.d.ts",
128
+ "default": "./dist/mutate.js"
129
+ },
98
130
  "./omitter": {
99
131
  "types": "./dist/omitter.d.ts",
100
132
  "default": "./dist/omitter.js"
@@ -107,6 +139,10 @@
107
139
  "types": "./dist/phymath/index.d.ts",
108
140
  "default": "./dist/phymath/index.js"
109
141
  },
142
+ "./phymath/format": {
143
+ "types": "./dist/phymath/format.d.ts",
144
+ "default": "./dist/phymath/format.js"
145
+ },
110
146
  "./phymath/types": {
111
147
  "types": "./dist/phymath/types.d.ts",
112
148
  "default": "./dist/phymath/types.js"
@@ -115,14 +151,14 @@
115
151
  "types": "./dist/promoter.d.ts",
116
152
  "default": "./dist/promoter.js"
117
153
  },
118
- "./queue": {
119
- "types": "./dist/queue.d.ts",
120
- "default": "./dist/queue.js"
121
- },
122
154
  "./random": {
123
155
  "types": "./dist/random.d.ts",
124
156
  "default": "./dist/random.js"
125
157
  },
158
+ "./rubles": {
159
+ "types": "./dist/rubles.d.ts",
160
+ "default": "./dist/rubles.js"
161
+ },
126
162
  "./script": {
127
163
  "types": "./dist/script.d.ts",
128
164
  "default": "./dist/script.js"
@@ -136,8 +172,20 @@
136
172
  "default": "./dist/types.js"
137
173
  },
138
174
  "./url": {
139
- "types": "./dist/url.d.ts",
140
- "default": "./dist/url.js"
175
+ "types": "./dist/url/index.d.ts",
176
+ "default": "./dist/url/index.js"
177
+ },
178
+ "./url/params": {
179
+ "types": "./dist/url/params.d.ts",
180
+ "default": "./dist/url/params.js"
181
+ },
182
+ "./url/slug": {
183
+ "types": "./dist/url/slug.d.ts",
184
+ "default": "./dist/url/slug.js"
185
+ },
186
+ "./veil": {
187
+ "types": "./dist/veil.d.ts",
188
+ "default": "./dist/veil.js"
141
189
  },
142
190
  "./xod": {
143
191
  "types": "./dist/xod.d.ts",
@@ -1,7 +0,0 @@
1
- export declare abstract class AsyncSpace<TX> {
2
- private async_storage;
3
- getTX(): TX[];
4
- space<T>(call: (tx: TX[]) => Promise<T>, auto?: boolean): Promise<T>;
5
- commit(): Promise<void>;
6
- protected abstract submit(tx: TX[]): Promise<void>;
7
- }
@@ -1,31 +0,0 @@
1
- import { AsyncLocalStorage } from "async_hooks";
2
- export class AsyncSpace {
3
- async_storage = new AsyncLocalStorage();
4
- getTX() {
5
- const ctx = this.async_storage.getStore();
6
- if (ctx)
7
- return ctx;
8
- throw new Error("getTX() called outside of space()");
9
- }
10
- async space(call, auto = true) {
11
- const ctx = this.async_storage.getStore();
12
- if (ctx)
13
- return call(ctx);
14
- // Создаем новое пространство
15
- const tx = [];
16
- const result = await this.async_storage.run(tx, () => call(tx));
17
- // Автоматически выполняем транзакции, если они есть и включен автокоммит
18
- if (auto && tx.length > 0) {
19
- await this.submit(tx);
20
- tx.length = 0;
21
- }
22
- return result;
23
- }
24
- async commit() {
25
- const ctx = this.async_storage.getStore();
26
- if (!ctx)
27
- throw new Error("commit() called outside of space()");
28
- await this.submit(ctx);
29
- ctx.length = 0;
30
- }
31
- }
package/dist/cleanup.d.ts DELETED
@@ -1,9 +0,0 @@
1
- type CleanFunc = () => void;
2
- export declare class CleanUP {
3
- private calls;
4
- constructor(...args: CleanFunc[]);
5
- push(...args: CleanFunc[]): void;
6
- run(): void;
7
- update(...args: CleanFunc[]): void;
8
- }
9
- export {};
package/dist/cleanup.js DELETED
@@ -1,18 +0,0 @@
1
- export class CleanUP {
2
- calls = [];
3
- constructor(...args) {
4
- this.calls = args;
5
- }
6
- push(...args) {
7
- this.calls = this.calls.concat(args);
8
- }
9
- run() {
10
- for (const call of this.calls)
11
- call();
12
- this.calls.length = 0;
13
- }
14
- update(...args) {
15
- this.run();
16
- this.calls = args;
17
- }
18
- }