@nu-art/ts-common 0.300.8 → 0.400.1

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 (211) hide show
  1. package/consts/consts.js +2 -4
  2. package/consts/consts.js.map +1 -0
  3. package/core/application.d.ts +1 -1
  4. package/core/application.js +3 -6
  5. package/core/application.js.map +1 -0
  6. package/core/debug-flags.d.ts +1 -1
  7. package/core/debug-flags.js +15 -17
  8. package/core/debug-flags.js.map +1 -0
  9. package/core/dispatcher.d.ts +2 -2
  10. package/core/dispatcher.js +7 -8
  11. package/core/dispatcher.js.map +1 -0
  12. package/core/error-handling.d.ts +5 -5
  13. package/core/error-handling.js +7 -9
  14. package/core/error-handling.js.map +1 -0
  15. package/core/exceptions/exceptions.d.ts +2 -2
  16. package/core/exceptions/exceptions.js +33 -44
  17. package/core/exceptions/exceptions.js.map +1 -0
  18. package/core/exceptions/http-codes.d.ts +8 -2
  19. package/core/exceptions/http-codes.js +6 -6
  20. package/core/exceptions/http-codes.js.map +1 -0
  21. package/core/exceptions/types.js +2 -2
  22. package/core/exceptions/types.js.map +1 -0
  23. package/core/logger/BeLogged.d.ts +2 -2
  24. package/core/logger/BeLogged.js +9 -11
  25. package/core/logger/BeLogged.js.map +1 -0
  26. package/core/logger/LogClient.d.ts +3 -1
  27. package/core/logger/LogClient.js +21 -24
  28. package/core/logger/LogClient.js.map +1 -0
  29. package/core/logger/LogClient_BaseRotate.d.ts +2 -2
  30. package/core/logger/LogClient_BaseRotate.js +12 -12
  31. package/core/logger/LogClient_BaseRotate.js.map +1 -0
  32. package/core/logger/LogClient_Browser.d.ts +2 -2
  33. package/core/logger/LogClient_Browser.js +40 -45
  34. package/core/logger/LogClient_Browser.js.map +1 -0
  35. package/core/logger/LogClient_BrowserGroups.d.ts +2 -2
  36. package/core/logger/LogClient_BrowserGroups.js +65 -67
  37. package/core/logger/LogClient_BrowserGroups.js.map +1 -0
  38. package/core/logger/LogClient_ConsoleProxy.d.ts +23 -0
  39. package/core/logger/LogClient_ConsoleProxy.js +89 -0
  40. package/core/logger/LogClient_ConsoleProxy.js.map +1 -0
  41. package/core/logger/LogClient_File.d.ts +1 -1
  42. package/core/logger/LogClient_File.js +6 -30
  43. package/core/logger/LogClient_File.js.map +1 -0
  44. package/core/logger/LogClient_Function.d.ts +2 -2
  45. package/core/logger/LogClient_Function.js +6 -8
  46. package/core/logger/LogClient_Function.js.map +1 -0
  47. package/core/logger/LogClient_MemBuffer.d.ts +2 -2
  48. package/core/logger/LogClient_MemBuffer.js +19 -21
  49. package/core/logger/LogClient_MemBuffer.js.map +1 -0
  50. package/core/logger/LogClient_Terminal.d.ts +2 -2
  51. package/core/logger/LogClient_Terminal.js +16 -21
  52. package/core/logger/LogClient_Terminal.js.map +1 -0
  53. package/core/logger/Logger.d.ts +2 -2
  54. package/core/logger/Logger.js +37 -39
  55. package/core/logger/Logger.js.map +1 -0
  56. package/core/logger/types.js +4 -6
  57. package/core/logger/types.js.map +1 -0
  58. package/core/logger/utils.d.ts +1 -1
  59. package/core/logger/utils.js +10 -15
  60. package/core/logger/utils.js.map +1 -0
  61. package/core/module-manager.d.ts +8 -6
  62. package/core/module-manager.js +28 -26
  63. package/core/module-manager.js.map +1 -0
  64. package/core/module.d.ts +5 -5
  65. package/core/module.js +28 -28
  66. package/core/module.js.map +1 -0
  67. package/csv.d.ts +2 -2
  68. package/csv.js +3 -18
  69. package/csv.js.map +1 -0
  70. package/db/consts.d.ts +3 -0
  71. package/db/consts.js +17 -7
  72. package/db/consts.js.map +1 -0
  73. package/db/dependencies-test.js +2 -2
  74. package/db/dependencies-test.js.map +1 -0
  75. package/db/types.d.ts +10 -2
  76. package/db/types.js +2 -2
  77. package/db/types.js.map +1 -0
  78. package/esm.d.ts +1 -0
  79. package/esm.js +4 -0
  80. package/esm.js.map +1 -0
  81. package/index.d.ts +50 -49
  82. package/index.js +51 -65
  83. package/index.js.map +1 -0
  84. package/mem-storage/MemStorage.d.ts +3 -1
  85. package/mem-storage/MemStorage.js +90 -72
  86. package/mem-storage/MemStorage.js.map +1 -0
  87. package/mem-storage/index.d.ts +1 -0
  88. package/mem-storage/index.js +2 -0
  89. package/mem-storage/index.js.map +1 -0
  90. package/modules/CSVModule.d.ts +2 -2
  91. package/modules/CSVModule.js +22 -48
  92. package/modules/CSVModule.js.map +1 -0
  93. package/modules/CSVModuleV3.d.ts +2 -2
  94. package/modules/CSVModuleV3.js +60 -86
  95. package/modules/CSVModuleV3.js.map +1 -0
  96. package/modules/CliParamsModule.d.ts +2 -2
  97. package/modules/CliParamsModule.js +23 -28
  98. package/modules/CliParamsModule.js.map +1 -0
  99. package/modules/JSONCSVModule.d.ts +2 -2
  100. package/modules/JSONCSVModule.js +56 -78
  101. package/modules/JSONCSVModule.js.map +1 -0
  102. package/modules/csv-serializer.d.ts +1 -1
  103. package/modules/csv-serializer.js +11 -5
  104. package/modules/csv-serializer.js.map +1 -0
  105. package/package.json +20 -11
  106. package/replacer-v2/ReplacerV2.d.ts +1 -1
  107. package/replacer-v2/ReplacerV2.js +6 -9
  108. package/replacer-v2/ReplacerV2.js.map +1 -0
  109. package/test-index.d.ts +2 -2
  110. package/test-index.js +3 -18
  111. package/test-index.js.map +1 -0
  112. package/testing/consts.d.ts +13 -2
  113. package/testing/consts.js +66 -26
  114. package/testing/consts.js.map +1 -0
  115. package/testing/test-template.test.d.ts +1 -0
  116. package/testing/test-template.test.js +42 -0
  117. package/testing/test-template.test.js.map +1 -0
  118. package/testing/types.d.ts +17 -5
  119. package/testing/types.js +2 -2
  120. package/testing/types.js.map +1 -0
  121. package/testing/workspace-creator.d.ts +10 -0
  122. package/testing/workspace-creator.js +79 -0
  123. package/testing/workspace-creator.js.map +1 -0
  124. package/tools/Replacer.d.ts +2 -2
  125. package/tools/Replacer.js +22 -24
  126. package/tools/Replacer.js.map +1 -0
  127. package/tools/get-log-style.js +4 -6
  128. package/tools/get-log-style.js.map +1 -0
  129. package/utils/FileSystemUtils.d.ts +34 -0
  130. package/utils/FileSystemUtils.js +153 -0
  131. package/utils/FileSystemUtils.js.map +1 -0
  132. package/utils/array-tools.d.ts +4 -4
  133. package/utils/array-tools.js +56 -83
  134. package/utils/array-tools.js.map +1 -0
  135. package/utils/conflict-tools.d.ts +1 -0
  136. package/utils/conflict-tools.js +3 -0
  137. package/utils/conflict-tools.js.map +1 -0
  138. package/utils/crypto-tools.d.ts +44 -0
  139. package/utils/crypto-tools.js +101 -10
  140. package/utils/crypto-tools.js.map +1 -0
  141. package/utils/date-time-tools.d.ts +48 -4
  142. package/utils/date-time-tools.js +166 -64
  143. package/utils/date-time-tools.js.map +1 -0
  144. package/utils/db-object-tools.d.ts +7 -2
  145. package/utils/db-object-tools.js +20 -20
  146. package/utils/db-object-tools.js.map +1 -0
  147. package/utils/exception-tools.js +13 -15
  148. package/utils/exception-tools.js.map +1 -0
  149. package/utils/filter-tools.js +48 -48
  150. package/utils/filter-tools.js.map +1 -0
  151. package/utils/hash-tools.js +14 -22
  152. package/utils/hash-tools.js.map +1 -0
  153. package/utils/index.d.ts +27 -0
  154. package/utils/index.js +28 -0
  155. package/utils/index.js.map +1 -0
  156. package/utils/json-tools.js +5 -8
  157. package/utils/json-tools.js.map +1 -0
  158. package/utils/merge-tools.d.ts +9 -0
  159. package/utils/merge-tools.js +18 -19
  160. package/utils/merge-tools.js.map +1 -0
  161. package/utils/mimetype-tools.d.ts +1 -0
  162. package/utils/mimetype-tools.js +26 -27
  163. package/utils/mimetype-tools.js.map +1 -0
  164. package/utils/number-tools.js +3 -7
  165. package/utils/number-tools.js.map +1 -0
  166. package/utils/object-tools.d.ts +15 -1
  167. package/utils/object-tools.js +110 -33
  168. package/utils/object-tools.js.map +1 -0
  169. package/utils/promise-tools.d.ts +5 -0
  170. package/utils/promise-tools.js +9 -5
  171. package/utils/promise-tools.js.map +1 -0
  172. package/utils/query-params.js +3 -6
  173. package/utils/query-params.js.map +1 -0
  174. package/utils/queue-v2.d.ts +1 -1
  175. package/utils/queue-v2.js +72 -73
  176. package/utils/queue-v2.js.map +1 -0
  177. package/utils/queue.d.ts +1 -1
  178. package/utils/queue.js +15 -17
  179. package/utils/queue.js.map +1 -0
  180. package/utils/random-tools.js +7 -11
  181. package/utils/random-tools.js.map +1 -0
  182. package/utils/storage-capacity-tools.js +7 -9
  183. package/utils/storage-capacity-tools.js.map +1 -0
  184. package/utils/string-tools.js +17 -31
  185. package/utils/string-tools.js.map +1 -0
  186. package/utils/time-proxy.d.ts +8 -0
  187. package/utils/time-proxy.js +10 -0
  188. package/utils/time-proxy.js.map +1 -0
  189. package/utils/tools.d.ts +1 -1
  190. package/utils/tools.js +18 -28
  191. package/utils/tools.js.map +1 -0
  192. package/utils/types.d.ts +9 -3
  193. package/utils/types.js +2 -4
  194. package/utils/types.js.map +1 -0
  195. package/utils/ui-tools.js +6 -12
  196. package/utils/ui-tools.js.map +1 -0
  197. package/utils/url-tools.d.ts +5 -0
  198. package/utils/url-tools.js +20 -0
  199. package/utils/url-tools.js.map +1 -0
  200. package/utils/version-tools.js +17 -12
  201. package/utils/version-tools.js.map +1 -0
  202. package/validator/type-validators.d.ts +14 -10
  203. package/validator/type-validators.js +84 -105
  204. package/validator/type-validators.js.map +1 -0
  205. package/validator/validator-core.d.ts +4 -4
  206. package/validator/validator-core.js +16 -21
  207. package/validator/validator-core.js.map +1 -0
  208. package/validator/validators.d.ts +9 -5
  209. package/validator/validators.js +48 -47
  210. package/validator/validators.js.map +1 -0
  211. package/tsconfig.json +0 -23
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /*
3
2
  * ts-common is the basic building blocks of our typescript projects
4
3
  *
@@ -16,44 +15,10 @@
16
15
  * See the License for the specific language governing permissions and
17
16
  * limitations under the License.
18
17
  */
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.filterInOut = filterInOut;
21
- exports.removeItemFromArray = removeItemFromArray;
22
- exports.removeFromArray = removeFromArray;
23
- exports.removeFromArrayByIndex = removeFromArrayByIndex;
24
- exports.swapInArrayByIndex = swapInArrayByIndex;
25
- exports.addItemToArray = addItemToArray;
26
- exports.addItemToArrayAtIndex = addItemToArrayAtIndex;
27
- exports.toggleElementInArray = toggleElementInArray;
28
- exports.filterAsync = filterAsync;
29
- exports.findDuplicates = findDuplicates;
30
- exports.filterDuplicates = filterDuplicates;
31
- exports.filterInstances = filterInstances;
32
- exports.filterFalsy = filterFalsy;
33
- exports.arrayToMap = arrayToMap;
34
- exports.reduceToMap = reduceToMap;
35
- exports.sortArray = sortArray;
36
- exports.batchAction = batchAction;
37
- exports.Promise_all_sequentially = Promise_all_sequentially;
38
- exports.batchActionParallel = batchActionParallel;
39
- exports.flatArray = flatArray;
40
- exports.filterFlatInstances = filterFlatInstances;
41
- exports.groupArrayBy = groupArrayBy;
42
- exports.toggleInArray = toggleInArray;
43
- exports.generateArray = generateArray;
44
- exports.asArray = asArray;
45
- exports.asOptionalArray = asOptionalArray;
46
- exports.lastElement = lastElement;
47
- exports.firstElement = firstElement;
48
- exports.arrayIncludesAny = arrayIncludesAny;
49
- exports.clearArrayInstance = clearArrayInstance;
50
- exports.arrayIncludesAll = arrayIncludesAll;
51
- exports.getMax = getMax;
52
- exports.getMin = getMin;
53
- const tools_1 = require("./tools");
54
- const object_tools_1 = require("./object-tools");
55
- const exceptions_1 = require("../core/exceptions/exceptions");
56
- function filterInOut(input, filter) {
18
+ import { exists } from './tools.js';
19
+ import { _keys } from './object-tools.js';
20
+ import { BadImplementationException } from '../core/exceptions/exceptions.js';
21
+ export function filterInOut(input, filter) {
57
22
  return {
58
23
  filteredIn: input.filter(filter),
59
24
  filteredOut: input.filter((object) => !filter(object))
@@ -63,7 +28,7 @@ function filterInOut(input, filter) {
63
28
  * Finds and removes first instance of item from array
64
29
  * tested V
65
30
  */
66
- function removeItemFromArray(array, item) {
31
+ export function removeItemFromArray(array, item) {
67
32
  const index = array.indexOf(item);
68
33
  return removeFromArrayByIndex(array, index);
69
34
  }
@@ -71,24 +36,26 @@ function removeItemFromArray(array, item) {
71
36
  * Removes the first item answering the condition given from array in place
72
37
  * tested V
73
38
  */
74
- function removeFromArray(array, item) {
75
- const index = array.findIndex(item);
76
- return removeFromArrayByIndex(array, index);
39
+ export function removeFromArray(array, filter) {
40
+ const kept = array.filter(x => !filter(x));
41
+ array.length = 0;
42
+ array.push(...kept);
43
+ return array;
77
44
  }
78
45
  /**
79
46
  * Removes item from array in index
80
47
  * tested V
81
48
  */
82
- function removeFromArrayByIndex(array, index) {
49
+ export function removeFromArrayByIndex(array, index) {
83
50
  if (index > -1)
84
51
  array.splice(index, 1);
85
52
  return array;
86
53
  }
87
- function swapInArrayByIndex(array, i1, i2) {
54
+ export function swapInArrayByIndex(array, i1, i2) {
88
55
  if (i1 < 0 || i1 >= array.length)
89
- throw new exceptions_1.BadImplementationException(`index i1 out of bounds: ${i1}`);
56
+ throw new BadImplementationException(`index i1 out of bounds: ${i1}`);
90
57
  if (i2 < 0 || i2 >= array.length)
91
- throw new exceptions_1.BadImplementationException(`index i2 out of bounds: ${i2}`);
58
+ throw new BadImplementationException(`index i2 out of bounds: ${i2}`);
92
59
  if (i1 === i2)
93
60
  return array;
94
61
  const temp = array[i1];
@@ -99,15 +66,15 @@ function swapInArrayByIndex(array, i1, i2) {
99
66
  /**
100
67
  * Deprecated
101
68
  */
102
- function addItemToArray(array, item) {
69
+ export function addItemToArray(array, item) {
103
70
  array.push(item);
104
71
  return array;
105
72
  }
106
- function addItemToArrayAtIndex(array, item, index) {
73
+ export function addItemToArrayAtIndex(array, item, index) {
107
74
  array.splice(index, 0, item);
108
75
  return array;
109
76
  }
110
- function toggleElementInArray(array, item) {
77
+ export function toggleElementInArray(array, item) {
111
78
  const index = array.indexOf(item);
112
79
  if (index > -1)
113
80
  array.splice(index, 1);
@@ -118,7 +85,7 @@ function toggleElementInArray(array, item) {
118
85
  /**
119
86
  * Removes all items answering the condition given from array in place
120
87
  */
121
- async function filterAsync(arr, filter) {
88
+ export async function filterAsync(arr, filter) {
122
89
  //const boolArray = await arr.map(item => filter(item)); changed
123
90
  const boolArray = await Promise.all(arr.map(item => filter(item)));
124
91
  return arr.filter((item, index) => boolArray[index]);
@@ -127,42 +94,47 @@ async function filterAsync(arr, filter) {
127
94
  * builds array that holds all items that are in array1 and array2
128
95
  * problem with objects
129
96
  */
130
- function findDuplicates(array1, array2) {
97
+ export function findDuplicates(array1, array2) {
131
98
  return array1.filter(val => array2.indexOf(val) !== -1);
132
99
  }
133
100
  const defaultMapper = (item) => item;
134
101
  /**
135
102
  remove all duplicates in array
136
103
  * */
137
- function filterDuplicates(source, mapper = defaultMapper) {
104
+ export function filterDuplicates(source, mapper = defaultMapper) {
138
105
  if (defaultMapper === mapper)
139
106
  return Array.from(new Set(source));
140
- const uniqueKeys = new Set(source.map(mapper));
141
- return source.filter(item => uniqueKeys.delete(mapper(item)));
107
+ let _mapper;
108
+ if (typeof mapper === 'function')
109
+ _mapper = mapper;
110
+ else
111
+ _mapper = ((item) => item[mapper]);
112
+ const uniqueKeys = new Set(source.map(_mapper));
113
+ return source.filter(item => uniqueKeys.delete(_mapper(item)));
142
114
  }
143
115
  /**
144
116
  * filter array of all undefined and null
145
117
  * */
146
- function filterInstances(array) {
147
- return ((array === null || array === void 0 ? void 0 : array.filter(item => (0, tools_1.exists)(item))) || []);
118
+ export function filterInstances(array) {
119
+ return (array?.filter(item => exists(item)) || []);
148
120
  }
149
121
  /**
150
122
  * filter array of all falsy instances
151
123
  * */
152
- function filterFalsy(array) {
153
- return ((array === null || array === void 0 ? void 0 : array.filter(item => !!item)) || []);
124
+ export function filterFalsy(array) {
125
+ return (array?.filter(item => !!item) || []);
154
126
  }
155
127
  /**
156
128
  * receives array and builds hashmap whom keys are decided via function and values are from array
157
129
  * */
158
- function arrayToMap(array, getKey, map = {}) {
130
+ export function arrayToMap(array, getKey, map = {}) {
159
131
  return reduceToMap(array, getKey, item => item, map);
160
132
  }
161
133
  /**
162
134
  * turns array into object that is similar to hashmap
163
135
  *
164
136
  */
165
- function reduceToMap(array, keyResolver, mapper, map = {}) {
137
+ export function reduceToMap(array, keyResolver, mapper, map = {}) {
166
138
  return array.reduce((toRet, element, index) => {
167
139
  const keys = keyResolver(element, index, toRet);
168
140
  const output = mapper(element, index, toRet);
@@ -176,7 +148,7 @@ function reduceToMap(array, keyResolver, mapper, map = {}) {
176
148
  /**
177
149
  * sorts array
178
150
  * */
179
- function sortArray(array, map = i => i, invert = false) {
151
+ export function sortArray(array, map = i => i, invert = false) {
180
152
  const functionMap = map;
181
153
  if (typeof functionMap === 'function') {
182
154
  const compareFn = (a, b) => {
@@ -198,7 +170,7 @@ function sortArray(array, map = i => i, invert = false) {
198
170
  /**
199
171
  * "splits" array into given size of chunks and then does "action" on chunk and return to array of actions on chunks +-
200
172
  * */
201
- async function batchAction(arr, chunk, action) {
173
+ export async function batchAction(arr, chunk, action) {
202
174
  const result = [];
203
175
  for (let i = 0, j = arr.length; i < j; i += chunk) {
204
176
  const items = await action(arr.slice(i, i + chunk));
@@ -228,14 +200,14 @@ async function batchAction(arr, chunk, action) {
228
200
  * ```
229
201
  * @param promises
230
202
  */
231
- async function Promise_all_sequentially(promises) {
203
+ export async function Promise_all_sequentially(promises) {
232
204
  const results = [];
233
205
  for (const promise of promises) {
234
206
  results.push(await promise());
235
207
  }
236
208
  return results;
237
209
  }
238
- async function batchActionParallel(arr, chunk, action) {
210
+ export async function batchActionParallel(arr, chunk, action) {
239
211
  const promises = [];
240
212
  for (let i = 0, j = arr.length; i < j; i += chunk) {
241
213
  addItemToArray(promises, action(arr.slice(i, i + chunk)));
@@ -257,7 +229,7 @@ async function batchActionParallel(arr, chunk, action) {
257
229
  * @param arr An array that is potentially a matrix
258
230
  * @param result A flat array of single values
259
231
  */
260
- function flatArray(arr, result = []) {
232
+ export function flatArray(arr, result = []) {
261
233
  for (let i = 0, length = arr.length; i < length; i++) {
262
234
  const value = arr[i];
263
235
  if (Array.isArray(value)) {
@@ -269,42 +241,42 @@ function flatArray(arr, result = []) {
269
241
  }
270
242
  return result;
271
243
  }
272
- function filterFlatInstances(arr, result = []) {
244
+ export function filterFlatInstances(arr, result = []) {
273
245
  return filterInstances(flatArray(arr, result));
274
246
  }
275
- function groupArrayBy(arr, mapper) {
247
+ export function groupArrayBy(arr, mapper) {
276
248
  const map = arr.reduce((agg, item, index) => {
277
249
  const key = mapper(item, index);
278
250
  (agg[key] || (agg[key] = [])).push(item);
279
251
  return agg;
280
252
  }, {});
281
- return (0, object_tools_1._keys)(map).map(key => ({ key, values: map[key] }));
253
+ return _keys(map).map(key => ({ key, values: map[key] }));
282
254
  }
283
- function toggleInArray(arr, item, mapper = item => item) {
255
+ export function toggleInArray(arr, item, mapper = item => item) {
284
256
  const index = arr.findIndex(_item => mapper(_item) === mapper(item));
285
257
  if (index !== -1)
286
258
  removeFromArrayByIndex(arr, index);
287
259
  else
288
260
  arr.push(item);
289
261
  }
290
- function generateArray(length, mapper = i => i) {
262
+ export function generateArray(length, mapper = i => i) {
291
263
  return Array.from({ length }).map((e, i) => mapper(i));
292
264
  }
293
- function asArray(toBeArray) {
265
+ export function asArray(toBeArray) {
294
266
  return Array.isArray(toBeArray) ? toBeArray : [toBeArray];
295
267
  }
296
- function asOptionalArray(toBeArray) {
297
- if (!(0, tools_1.exists)(toBeArray))
268
+ export function asOptionalArray(toBeArray) {
269
+ if (!exists(toBeArray))
298
270
  return undefined;
299
271
  return asArray(toBeArray);
300
272
  }
301
- function lastElement(array) {
302
- return array === null || array === void 0 ? void 0 : array[(array === null || array === void 0 ? void 0 : array.length) - 1];
273
+ export function lastElement(array) {
274
+ return array?.[array?.length - 1];
303
275
  }
304
- function firstElement(array) {
305
- return array === null || array === void 0 ? void 0 : array[0];
276
+ export function firstElement(array) {
277
+ return array?.[0];
306
278
  }
307
- function arrayIncludesAny(arr1, arr2) {
279
+ export function arrayIncludesAny(arr1, arr2) {
308
280
  return arr1.some(item => arr2.includes(item));
309
281
  }
310
282
  /**
@@ -312,7 +284,7 @@ function arrayIncludesAny(arr1, arr2) {
312
284
  * This function will take any array and clear it's content completely while keeping the same instance to save memory
313
285
  * @param arr - Any array
314
286
  */
315
- function clearArrayInstance(arr) {
287
+ export function clearArrayInstance(arr) {
316
288
  arr.length = 0;
317
289
  }
318
290
  /**
@@ -320,14 +292,15 @@ function clearArrayInstance(arr) {
320
292
  * @param arr1
321
293
  * @param arr2
322
294
  */
323
- function arrayIncludesAll(arr1, arr2) {
295
+ export function arrayIncludesAll(arr1, arr2) {
324
296
  return arr2.every(item => arr1.includes(item));
325
297
  }
326
- function getMax(arr, mapper = (item) => item) {
298
+ export function getMax(arr, mapper = (item) => item) {
327
299
  const sorted = sortArray(arr, mapper, true);
328
300
  return sorted[0];
329
301
  }
330
- function getMin(arr, mapper = (item) => item) {
302
+ export function getMin(arr, mapper = (item) => item) {
331
303
  const sorted = sortArray(arr, mapper);
332
304
  return sorted[0];
333
305
  }
306
+ //# sourceMappingURL=array-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/array-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const findConflicts: <T>(origin: T, ours: T, theirs: T) => void;
@@ -0,0 +1,3 @@
1
+ export const findConflicts = (origin, ours, theirs) => {
2
+ };
3
+ //# sourceMappingURL=conflict-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/conflict-tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,MAAS,EAAE,IAAO,EAAE,MAAS,EAAE,EAAE;AAElE,CAAC,CAAC"}
@@ -1,3 +1,47 @@
1
+ import { RecursiveObjectOfPrimitives } from './types.js';
1
2
  export declare function randomNumber(range: number): number;
2
3
  export declare function randomObject<T>(items: T[]): T;
3
4
  export declare function hashPasswordWithSalt(salt: string | Buffer, password: string | Buffer): string;
5
+ export type JWT_BaseClaims = {
6
+ iat: number;
7
+ exp: number;
8
+ };
9
+ /** Options for encoding a JWT */
10
+ export interface EncodeJWT_Options {
11
+ /** Expiration – e.g. '1h', '10m', or absolute epoch seconds */
12
+ expiresIn?: string | number;
13
+ /** Signing algorithm – defaults to 'HS256'. Examples: 'RS256', 'ES256', 'EdDSA' */
14
+ alg?: string;
15
+ }
16
+ export declare const JwtTools: {
17
+ /**
18
+ * Create a signed JWT.
19
+ * @param data Payload to embed in the token.
20
+ * @param secret Shared secret (HS*) **or** private key (other algs).
21
+ * @param options Optional `expiresIn` and `alg` (defaults to 'HS256'). If
22
+ * `expiresIn` is omitted, a 1‑hour token is issued.
23
+ */
24
+ encode: <T extends RecursiveObjectOfPrimitives>(data: T, secret: string, options?: EncodeJWT_Options) => Promise<string>;
25
+ /**
26
+ * Decode a JWT.
27
+ * – If `secret` is provided, verify signature and registered claims.
28
+ * – If omitted, only parse Base64Url segments (⚠️ no integrity check).
29
+ */
30
+ decode: <T extends RecursiveObjectOfPrimitives>(token: string, secret?: string) => Promise<T & JWT_BaseClaims>;
31
+ verifySignature: <T extends RecursiveObjectOfPrimitives>(token: string, secret: string) => Promise<T & JWT_BaseClaims>;
32
+ /**
33
+ * Extract the `iat` (Issued‑At) claim from a token without verifying.
34
+ * @returns Epoch seconds or `undefined` if the claim is missing / malformed.
35
+ */
36
+ getCreationTime: (token: string) => Promise<number | undefined>;
37
+ /**
38
+ * Lightweight client‑side freshness check based on the `exp` claim.
39
+ * NOTE: This does **not** verify the signature.
40
+ */
41
+ isJwtActive: (token: string) => Promise<boolean>;
42
+ isJwtExpired: (token: string) => Promise<boolean>;
43
+ };
44
+ export declare const TEST_JwtTools: {
45
+ beforeAll: () => void;
46
+ afterAll: () => void;
47
+ };
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /*
3
2
  * ts-common is the basic building blocks of our typescript projects
4
3
  *
@@ -16,19 +15,111 @@
16
15
  * See the License for the specific language governing permissions and
17
16
  * limitations under the License.
18
17
  */
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.randomNumber = randomNumber;
21
- exports.randomObject = randomObject;
22
- exports.hashPasswordWithSalt = hashPasswordWithSalt;
23
- const crypto_1 = require("crypto");
24
- function randomNumber(range) {
18
+ import { createHmac } from 'crypto';
19
+ import { decodeJwt, jwtVerify, SignJWT } from 'jose';
20
+ import { exists } from './tools.js';
21
+ import { currentTimeMillis } from './date-time-tools.js';
22
+ // Text encoder instance reused for key derivation
23
+ const te = new TextEncoder();
24
+ export function randomNumber(range) {
25
25
  return Math.floor(Math.random() * (range));
26
26
  }
27
- function randomObject(items) {
27
+ export function randomObject(items) {
28
28
  return items[randomNumber(items.length)];
29
29
  }
30
- function hashPasswordWithSalt(salt, password) {
31
- return (0, crypto_1.createHmac)('sha512', salt)
30
+ export function hashPasswordWithSalt(salt, password) {
31
+ return createHmac('sha512', salt)
32
32
  .update(password)
33
33
  .digest('hex');
34
34
  }
35
+ /**
36
+ * Derive an HMAC‑SHA secret key from a raw string.
37
+ * jose APIs expect a Uint8Array key for HS* algorithms.
38
+ */
39
+ const hmacKey = (secret) => te.encode(secret);
40
+ export const JwtTools = {
41
+ /**
42
+ * Create a signed JWT.
43
+ * @param data Payload to embed in the token.
44
+ * @param secret Shared secret (HS*) **or** private key (other algs).
45
+ * @param options Optional `expiresIn` and `alg` (defaults to 'HS256'). If
46
+ * `expiresIn` is omitted, a 1‑hour token is issued.
47
+ */
48
+ encode: async (data, secret, options) => {
49
+ return new SignJWT(data)
50
+ .setProtectedHeader({ alg: options?.alg ?? 'HS256', type: 'JWT' })
51
+ .setIssuedAt()
52
+ .setExpirationTime(options?.expiresIn ?? '1h')
53
+ .sign(hmacKey(secret));
54
+ },
55
+ /**
56
+ * Decode a JWT.
57
+ * – If `secret` is provided, verify signature and registered claims.
58
+ * – If omitted, only parse Base64Url segments (⚠️ no integrity check).
59
+ */
60
+ decode: async (token, secret) => {
61
+ if (secret)
62
+ return JwtTools.verifySignature(token, secret);
63
+ return decodeJwt(token);
64
+ },
65
+ verifySignature: async (token, secret) => {
66
+ return (await jwtVerify(token, hmacKey(secret))).payload;
67
+ },
68
+ /**
69
+ * Extract the `iat` (Issued‑At) claim from a token without verifying.
70
+ * @returns Epoch seconds or `undefined` if the claim is missing / malformed.
71
+ */
72
+ getCreationTime: async (token) => {
73
+ try {
74
+ const { iat } = decodeJwt(token);
75
+ return typeof iat === 'number' ? iat : undefined;
76
+ }
77
+ catch {
78
+ return undefined;
79
+ }
80
+ },
81
+ /**
82
+ * Lightweight client‑side freshness check based on the `exp` claim.
83
+ * NOTE: This does **not** verify the signature.
84
+ */
85
+ isJwtActive: async (token) => {
86
+ try {
87
+ const { exp } = decodeJwt(token);
88
+ if (!exists(exp))
89
+ return false;
90
+ const now = Math.floor(currentTimeMillis() / 1000);
91
+ return exp > now;
92
+ }
93
+ catch (err) {
94
+ // Preserve original behaviour: swallow errors and report invalid.
95
+ // this.logError?.('Error validating session token', err);
96
+ return false;
97
+ }
98
+ },
99
+ isJwtExpired: async (token) => {
100
+ return !(await JwtTools.isJwtActive(token));
101
+ }
102
+ };
103
+ const originalJwtTools_encode = JwtTools.encode;
104
+ const originalJwtTools_verifySignature = JwtTools.verifySignature;
105
+ const TEST_JwtTools_BeforeAll = () => {
106
+ JwtTools.encode = async (data, secret, options) => {
107
+ return new SignJWT(data)
108
+ .setProtectedHeader({ alg: options?.alg ?? 'HS256', type: 'JWT' })
109
+ .setIssuedAt(Math.floor(currentTimeMillis() / 1000))
110
+ .setExpirationTime(options?.expiresIn ?? '1h')
111
+ .sign(hmacKey(secret));
112
+ };
113
+ JwtTools.verifySignature = async (token, secret) => {
114
+ return (await jwtVerify(token, hmacKey(secret), { currentDate: new Date(currentTimeMillis()) })).payload;
115
+ };
116
+ };
117
+ const TEST_JwtTools_AfterAll = () => {
118
+ JwtTools.encode = originalJwtTools_encode;
119
+ JwtTools.verifySignature = originalJwtTools_verifySignature;
120
+ };
121
+ export const TEST_JwtTools = {
122
+ beforeAll: TEST_JwtTools_BeforeAll,
123
+ afterAll: TEST_JwtTools_AfterAll,
124
+ };
125
+ //# sourceMappingURL=crypto-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/crypto-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,MAAM,CAAC;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvD,kDAAkD;AAClD,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7B,MAAM,UAAU,YAAY,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,KAAU;IACzC,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAqB,EAAE,QAAyB;IACpF,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;SAC/B,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAOD;;;GAGG;AACH,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAUtD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB;;;;;;OAMG;IACH,MAAM,EAAE,KAAK,EAAyC,IAAO,EAAE,MAAc,EAAE,OAA2B,EAAmB,EAAE;QAC9H,OAAO,IAAI,OAAO,CAAC,IAAW,CAAC;aAC7B,kBAAkB,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;aAC/D,WAAW,EAAE;aACb,iBAAiB,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;aAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,KAAK,EAAyC,KAAa,EAAE,MAAe,EAA+B,EAAE;QACpH,IAAI,MAAM;YACT,OAAO,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEhD,OAAO,SAAS,CAAC,KAAK,CAAuB,CAAC;IAC/C,CAAC;IAED,eAAe,EAAE,KAAK,EAAyC,KAAa,EAAE,MAAc,EAA+B,EAAE;QAC5H,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAA6B,CAAC;IAChF,CAAC;IAGD;;;OAGG;IACH,eAAe,EAAE,KAAK,EAAE,KAAa,EAA+B,EAAE;QACrE,IAAI,CAAC;YACJ,MAAM,EAAC,GAAG,EAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,WAAW,EAAE,KAAK,EAAE,KAAa,EAAoB,EAAE;QACtD,IAAI,CAAC;YACJ,MAAM,EAAC,GAAG,EAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACf,OAAO,KAAK,CAAC;YAEd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC;YACnD,OAAO,GAAG,GAAG,GAAG,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,kEAAkE;YAClE,0DAA0D;YAC1D,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,KAAa,EAAoB,EAAE;QACvD,OAAO,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;CACD,CAAC;AAEF,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChD,MAAM,gCAAgC,GAAG,QAAQ,CAAC,eAAe,CAAC;AAElE,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACpC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAyC,IAAO,EAAE,MAAc,EAAE,OAA2B,EAAmB,EAAE;QACxI,OAAO,IAAI,OAAO,CAAC,IAAW,CAAC;aAC7B,kBAAkB,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;aAC/D,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC;aACnD,iBAAiB,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;aAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,QAAQ,CAAC,eAAe,GAAG,KAAK,EAAyC,KAAa,EAAE,MAAc,EAA+B,EAAE;QACtI,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,OAA6B,CAAC;IAC9H,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACnC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,eAAe,GAAG,gCAAgC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,SAAS,EAAE,uBAAuB;IAClC,QAAQ,EAAE,sBAAsB;CAChC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { AuditBy, Timestamp } from './types';
1
+ import { AuditBy, Timestamp } from './types.js';
2
2
  export declare const Second = 1000;
3
3
  export declare const Minute: number;
4
4
  export declare const Hour: number;
@@ -10,14 +10,54 @@ export declare const Format_HHmmss_DDMMYYYY = "HH:mm:ss_DD-MM-YYYY";
10
10
  export declare const Format_YYYYMMDD_HHmmss = "YYYY-MM-DD_HH:mm:ss";
11
11
  export type Weekday = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday';
12
12
  export declare const Weekdays: Weekday[];
13
- export type TimerHandler = (...args: any[]) => void;
13
+ export type TimerHandler<Args extends any[] = any[]> = (...args: Args) => void;
14
14
  export type TimeRange = [number, number] | [undefined, number] | [number, undefined];
15
+ export type TimeCounter = {
16
+ dt: () => number;
17
+ format: (format: string) => string;
18
+ };
15
19
  export declare function timeout(sleepMs: number): Promise<unknown>;
16
20
  export declare const sleep: typeof timeout;
17
- export declare function _setTimeout(handler: TimerHandler, sleepMs?: number, ...args: any[]): number;
21
+ export declare function _setTimeout<Args extends any[]>(handler: TimerHandler<Args>, sleepMs?: number, ...args: Args): number;
18
22
  export declare function _clearTimeout(handlerId?: number): void;
19
- export declare function _setInterval(handler: TimerHandler, sleepMs?: number, ...args: any[]): number;
23
+ export declare function _setInterval<Args extends any[]>(handler: TimerHandler<Args>, sleepMs?: number, ...args: Args): number;
20
24
  export declare function _clearInterval(handlerId?: number): void;
25
+ /**
26
+ * Creates a timeout handler object that manages a single `setTimeout` instance.
27
+ * Includes lifecycle controls: set, clear, reset, isActive.
28
+ *
29
+ * @param handler The function to be called after the timeout.
30
+ * @param sleepMs Timeout duration in milliseconds. Defaults to 0.
31
+ * @param args Arguments passed to the handler function.
32
+ * @returns An object with `set`, `clear`, `reset`, and `isActive` methods.
33
+ */
34
+ export declare const timeoutHandler: <Args extends any[]>(handler: TimerHandler<Args>, sleepMs?: number, ...args: Args) => {
35
+ set: () => void;
36
+ clear: () => void;
37
+ reset: () => void;
38
+ isActive: () => boolean;
39
+ _: {
40
+ onTimeAdjusted: () => void;
41
+ };
42
+ };
43
+ /**
44
+ * Creates an interval handler object that manages a single `setInterval` instance.
45
+ * Includes lifecycle controls: set, clear, reset, isActive.
46
+ *
47
+ * @param handler The function to be called repeatedly.
48
+ * @param sleepMs Interval duration in milliseconds. Defaults to 0.
49
+ * @param args Arguments passed to the handler function.
50
+ * @returns An object with `set`, `clear`, `reset`, and `isActive` methods.
51
+ */
52
+ export declare const intervalHandler: <Args extends any[]>(handler: TimerHandler<Args>, sleepMs?: number, ...args: Args) => {
53
+ set: () => void;
54
+ clear: () => void;
55
+ reset: () => void;
56
+ isActive: () => boolean;
57
+ _: {
58
+ onTimeAdjusted: () => NodeJS.Timeout | undefined;
59
+ };
60
+ };
21
61
  /**
22
62
  * @param comment @deprecated
23
63
  */
@@ -51,3 +91,7 @@ export declare const DateTimeFormat_DDMMYYYY: {
51
91
  };
52
92
  export declare function isSameDay(date1: Date, date2: Date): boolean;
53
93
  export declare function deltaDays(d1: Date | number, d2: Date | number): number;
94
+ export declare function timeCounter(): {
95
+ dt: () => number;
96
+ format: (format: string) => string;
97
+ };