@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,89 +15,171 @@
16
15
  * See the License for the specific language governing permissions and
17
16
  * limitations under the License.
18
17
  */
19
- var __importDefault = (this && this.__importDefault) || function (mod) {
20
- return (mod && mod.__esModule) ? mod : { "default": mod };
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.DateTimeFormat_DDMMYYYY = exports.DateTimeFormat_yyyyMMDD = exports.DateTimeFormat_yyyyMMDDTHHmmss = exports.DateTimeFormat = exports.sleep = exports.Weekdays = exports.Format_YYYYMMDD_HHmmss = exports.Format_HHmmss_DDMMYYYY = exports.Month = exports.Year = exports.Week = exports.Day = exports.Hour = exports.Minute = exports.Second = void 0;
24
- exports.timeout = timeout;
25
- exports._setTimeout = _setTimeout;
26
- exports._clearTimeout = _clearTimeout;
27
- exports._setInterval = _setInterval;
28
- exports._clearInterval = _clearInterval;
29
- exports.auditBy = auditBy;
30
- exports.currentTimeMillis = currentTimeMillis;
31
- exports.specificTimeTodayMillis = specificTimeTodayMillis;
32
- exports.currentLocalTimeMillis = currentLocalTimeMillis;
33
- exports.currentTimeMillisWithTimeZone = currentTimeMillisWithTimeZone;
34
- exports.createReadableTimestampObject = createReadableTimestampObject;
35
- exports.formatTimestamp = formatTimestamp;
36
- exports.parseTimeString = parseTimeString;
37
- exports.normalizeTimestamp = normalizeTimestamp;
38
- exports.isSameDay = isSameDay;
39
- exports.deltaDays = deltaDays;
40
- const moment_1 = __importDefault(require("moment"));
41
- const moment_2 = require("moment");
42
- exports.Second = 1000;
43
- exports.Minute = exports.Second * 60;
44
- exports.Hour = exports.Minute * 60;
45
- exports.Day = exports.Hour * 24;
46
- exports.Week = exports.Day * 7;
47
- exports.Year = exports.Day * 365;
48
- exports.Month = exports.Year / 12;
49
- exports.Format_HHmmss_DDMMYYYY = 'HH:mm:ss_DD-MM-YYYY';
50
- exports.Format_YYYYMMDD_HHmmss = 'YYYY-MM-DD_HH:mm:ss';
51
- exports.Weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
52
- async function timeout(sleepMs) {
18
+ import utc from 'moment';
19
+ import { exists } from './tools.js';
20
+ import { TimeProxy } from './time-proxy.js';
21
+ export const Second = 1000;
22
+ export const Minute = Second * 60;
23
+ export const Hour = Minute * 60;
24
+ export const Day = Hour * 24;
25
+ export const Week = Day * 7;
26
+ export const Year = Day * 365;
27
+ export const Month = Year / 12;
28
+ export const Format_HHmmss_DDMMYYYY = 'HH:mm:ss_DD-MM-YYYY';
29
+ export const Format_YYYYMMDD_HHmmss = 'YYYY-MM-DD_HH:mm:ss';
30
+ export const Weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
31
+ export async function timeout(sleepMs) {
53
32
  return new Promise(resolve => setTimeout(resolve, sleepMs, undefined));
54
33
  }
55
- exports.sleep = timeout;
56
- function _setTimeout(handler, sleepMs = 0, ...args) {
34
+ export const sleep = timeout;
35
+ export function _setTimeout(handler, sleepMs = 0, ...args) {
57
36
  return setTimeout(handler, sleepMs, ...args);
58
37
  }
59
- function _clearTimeout(handlerId) {
38
+ export function _clearTimeout(handlerId) {
60
39
  if (!handlerId)
61
40
  return;
62
41
  return clearTimeout(handlerId);
63
42
  }
64
- function _setInterval(handler, sleepMs = 0, ...args) {
43
+ export function _setInterval(handler, sleepMs = 0, ...args) {
65
44
  return setInterval(handler, sleepMs, ...args);
66
45
  }
67
- function _clearInterval(handlerId) {
46
+ export function _clearInterval(handlerId) {
68
47
  if (!handlerId)
69
48
  return;
70
49
  return clearInterval(handlerId);
71
50
  }
51
+ /**
52
+ * Creates a timeout handler object that manages a single `setTimeout` instance.
53
+ * Includes lifecycle controls: set, clear, reset, isActive.
54
+ *
55
+ * @param handler The function to be called after the timeout.
56
+ * @param sleepMs Timeout duration in milliseconds. Defaults to 0.
57
+ * @param args Arguments passed to the handler function.
58
+ * @returns An object with `set`, `clear`, `reset`, and `isActive` methods.
59
+ */
60
+ export const timeoutHandler = (handler, sleepMs = 0, ...args) => {
61
+ let handlerId;
62
+ let expiration;
63
+ const clear = () => {
64
+ if (!exists(handlerId))
65
+ return;
66
+ clearTimeout(handlerId);
67
+ handlerId = undefined;
68
+ expiration = undefined;
69
+ };
70
+ const set = () => {
71
+ if (exists(handlerId))
72
+ return;
73
+ expiration = currentTimeMillis() + sleepMs;
74
+ handlerId = setTimeout(handler, sleepMs, ...args);
75
+ };
76
+ const adjustTime = () => {
77
+ if (!exists(handlerId) || !exists(expiration))
78
+ return;
79
+ const now = currentTimeMillis();
80
+ const remaining = expiration - now;
81
+ if (remaining <= 0) {
82
+ clear();
83
+ setTimeout(handler, 0, ...args);
84
+ return;
85
+ }
86
+ clear();
87
+ expiration = now + remaining;
88
+ handlerId = setTimeout(handler, remaining, ...args);
89
+ };
90
+ return {
91
+ set,
92
+ clear,
93
+ reset: () => {
94
+ clear();
95
+ set();
96
+ },
97
+ isActive: () => exists(handlerId),
98
+ _: { onTimeAdjusted: adjustTime },
99
+ };
100
+ };
101
+ /**
102
+ * Creates an interval handler object that manages a single `setInterval` instance.
103
+ * Includes lifecycle controls: set, clear, reset, isActive.
104
+ *
105
+ * @param handler The function to be called repeatedly.
106
+ * @param sleepMs Interval duration in milliseconds. Defaults to 0.
107
+ * @param args Arguments passed to the handler function.
108
+ * @returns An object with `set`, `clear`, `reset`, and `isActive` methods.
109
+ */
110
+ export const intervalHandler = (handler, sleepMs = 0, ...args) => {
111
+ let handlerId;
112
+ let nextTick;
113
+ const clear = () => {
114
+ if (!exists(handlerId))
115
+ return;
116
+ clearTimeout(handlerId);
117
+ handlerId = undefined;
118
+ nextTick = undefined;
119
+ };
120
+ const tick = () => {
121
+ handler(...args);
122
+ nextTick = currentTimeMillis() + sleepMs;
123
+ handlerId = setTimeout(tick, sleepMs);
124
+ };
125
+ const set = () => {
126
+ if (exists(handlerId))
127
+ return;
128
+ nextTick = currentTimeMillis() + sleepMs;
129
+ handlerId = setTimeout(tick, sleepMs);
130
+ };
131
+ const adjustTime = () => {
132
+ if (!exists(handlerId) || !exists(nextTick))
133
+ return;
134
+ const now = currentTimeMillis();
135
+ const remaining = nextTick - now;
136
+ clear();
137
+ if (remaining <= 0)
138
+ return setTimeout(tick, 0);
139
+ nextTick = now + remaining;
140
+ handlerId = setTimeout(tick, remaining);
141
+ };
142
+ return {
143
+ set,
144
+ clear,
145
+ reset: () => {
146
+ clear();
147
+ set();
148
+ },
149
+ isActive: () => exists(handlerId),
150
+ _: { onTimeAdjusted: adjustTime },
151
+ };
152
+ };
72
153
  /**
73
154
  * @param comment @deprecated
74
155
  */
75
- function auditBy(user, comment, timestamp = currentTimeMillis()) {
156
+ export function auditBy(user, comment, timestamp = currentTimeMillis()) {
76
157
  const _auditBy = {
77
158
  auditBy: user,
78
- auditAt: createReadableTimestampObject(exports.Format_HHmmss_DDMMYYYY, timestamp)
159
+ auditAt: createReadableTimestampObject(Format_HHmmss_DDMMYYYY, timestamp)
79
160
  };
80
161
  if (comment)
81
162
  _auditBy.comment = comment;
82
163
  return _auditBy;
83
164
  }
84
- function currentTimeMillis() {
85
- return Date.now();
165
+ export function currentTimeMillis() {
166
+ return TimeProxy.currentTimeMillis();
86
167
  }
87
- function specificTimeTodayMillis(hours, minutes) {
168
+ export function specificTimeTodayMillis(hours, minutes) {
88
169
  const date = new Date();
89
170
  date.setHours(hours);
90
171
  date.setMinutes(minutes);
91
172
  return date.getTime();
92
173
  }
93
- function currentLocalTimeMillis() {
174
+ export function currentLocalTimeMillis() {
94
175
  const date = new Date();
95
176
  return date.getTime();
96
177
  }
97
- function currentTimeMillisWithTimeZone() {
178
+ export function currentTimeMillisWithTimeZone() {
98
179
  const date = new Date();
99
180
  return date.getTime() + date.getTimezoneOffset();
100
181
  }
101
- function createReadableTimestampObject(pattern = exports.Format_HHmmss_DDMMYYYY, timestamp = currentTimeMillis(), timezone) {
182
+ export function createReadableTimestampObject(pattern = Format_HHmmss_DDMMYYYY, timestamp = currentTimeMillis(), timezone) {
102
183
  const timeObj = {
103
184
  timestamp: timestamp,
104
185
  pretty: formatTimestamp(pattern, timestamp)
@@ -110,32 +191,31 @@ function createReadableTimestampObject(pattern = exports.Format_HHmmss_DDMMYYYY,
110
191
  /**
111
192
  * For detailed list of formats visit https://momentjs.com/docs/#/displaying/format/
112
193
  */
113
- function formatTimestamp(pattern = exports.Format_HHmmss_DDMMYYYY, timestamp = currentTimeMillis(), timezone = Intl.DateTimeFormat()
194
+ export function formatTimestamp(pattern = Format_HHmmss_DDMMYYYY, timestamp = currentTimeMillis(), timezone = Intl.DateTimeFormat()
114
195
  .resolvedOptions().timeZone) {
115
- const m = (0, moment_2.utc)(timestamp);
196
+ const m = utc(timestamp);
116
197
  m.utcOffset(-new Date().getTimezoneOffset());
117
198
  return m.format(pattern);
118
199
  }
119
- function parseTimeString(timestamp, pattern = exports.Format_HHmmss_DDMMYYYY) {
120
- return (0, moment_2.utc)(timestamp, pattern).valueOf();
200
+ export function parseTimeString(timestamp, pattern = Format_HHmmss_DDMMYYYY) {
201
+ return utc(timestamp, pattern).valueOf();
121
202
  }
122
- function normalizeTimestamp(timestamp, pattern) {
203
+ export function normalizeTimestamp(timestamp, pattern) {
123
204
  return parseTimeString(formatTimestamp(pattern, timestamp), pattern);
124
205
  }
125
- const DateTimeFormat = (format) => {
206
+ export const DateTimeFormat = (format) => {
126
207
  return {
127
208
  parse: (timestampAsString) => parseTimeString(timestampAsString, format),
128
209
  format: (timestamp = currentTimeMillis()) => formatTimestamp(format, timestamp)
129
210
  };
130
211
  };
131
- exports.DateTimeFormat = DateTimeFormat;
132
- exports.DateTimeFormat_yyyyMMDDTHHmmss = (0, exports.DateTimeFormat)('YYYY-MM-DDTHH:mm:ss');
133
- exports.DateTimeFormat_yyyyMMDD = (0, exports.DateTimeFormat)('YYYY-MM-DD');
134
- exports.DateTimeFormat_DDMMYYYY = (0, exports.DateTimeFormat)('DD/MM/YYYY');
135
- function isSameDay(date1, date2) {
136
- return (0, moment_1.default)(date1).isSame(date2, 'day');
137
- }
138
- function deltaDays(d1, d2) {
212
+ export const DateTimeFormat_yyyyMMDDTHHmmss = DateTimeFormat('YYYY-MM-DDTHH:mm:ss');
213
+ export const DateTimeFormat_yyyyMMDD = DateTimeFormat('YYYY-MM-DD');
214
+ export const DateTimeFormat_DDMMYYYY = DateTimeFormat('DD/MM/YYYY');
215
+ export function isSameDay(date1, date2) {
216
+ return utc(date1).isSame(date2, 'day');
217
+ }
218
+ export function deltaDays(d1, d2) {
139
219
  const date1 = typeof d1 === 'number' ? new Date(d1) : d1;
140
220
  const date2 = typeof d2 === 'number' ? new Date(d2) : d2;
141
221
  //If both dates are the same day, return 0
@@ -143,9 +223,31 @@ function deltaDays(d1, d2) {
143
223
  return 0;
144
224
  const millis1 = typeof d1 === 'number' ? d1 : d1.getTime();
145
225
  const millis2 = typeof d2 === 'number' ? d2 : d2.getTime();
146
- const days = Math.floor((millis1 - millis2) / exports.Day);
226
+ const days = Math.floor((millis1 - millis2) / Day);
147
227
  //If date2 + the amount of days calculated actually lands on the same day as date1, return days
148
228
  //Else, an extra day needs to be given
149
- const date2Offset = new Date(date2.getTime() + (days * exports.Day));
229
+ const date2Offset = new Date(date2.getTime() + (days * Day));
150
230
  return isSameDay(date1, date2Offset) ? days : days + 1;
151
231
  }
232
+ export function timeCounter() {
233
+ const started = currentTimeMillis();
234
+ return {
235
+ dt: () => currentTimeMillis() - started,
236
+ format: (format) => {
237
+ let dt = currentTimeMillis() - started;
238
+ const hours = Math.floor(dt / Hour);
239
+ dt -= hours * Hour;
240
+ const minutes = Math.floor(dt / Minute);
241
+ dt -= minutes * Minute;
242
+ const seconds = Math.floor(dt / Second);
243
+ dt -= seconds * Second;
244
+ const millis = dt;
245
+ return format
246
+ .replace('hh', String(hours).padStart(2, '0'))
247
+ .replace('mm', String(minutes).padStart(2, '0'))
248
+ .replace('ss', String(seconds).padStart(2, '0'))
249
+ .replace('zzz', String(millis).padStart(3, '0'));
250
+ }
251
+ };
252
+ }
253
+ //# sourceMappingURL=date-time-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/date-time-tools.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
- import { DB_Object, OmitDBObject, SubsetObjectByKeys, TS_Object } from './types';
1
+ import { DB_Object, OmitDBObject, SubsetObjectByKeys, TS_Object } from './types.js';
2
+ export declare const DB_OBJECT_PROP__ID = "_id";
3
+ export declare const DB_OBJECT_PROP__VERSION = "_v";
4
+ export declare const DB_OBJECT_PROP__CREATED = "__created";
5
+ export declare const DB_OBJECT_PROP__UPDATED = "__updated";
2
6
  export declare const KeysOfDB_Object: (keyof DB_Object)[];
3
7
  export declare function dbObjectToId(i: DB_Object): string;
4
8
  export declare function removeDBObjectKeys<T extends DB_Object>(instance: T): OmitDBObject<T>;
9
+ export declare function removeDBObjectKeysFromInstance<T extends DB_Object>(instance: T): OmitDBObject<T>;
5
10
  /**
6
11
  * Returns a cloned object with the keys removed.
7
12
  */
8
- export declare function deleteKeysObject<T extends TS_Object, Ks extends keyof T>(instance: T, keysToRemove: Ks[]): Omit<T, Ks>;
13
+ export declare function deleteKeysObject<T extends TS_Object, Ks extends keyof T>(instance: T, keysToRemove: Ks[], keepInstance?: boolean): Omit<T, Ks>;
9
14
  export declare function keepDBObjectKeys<T extends DB_Object>(instance: T): DB_Object;
10
15
  export declare function keepPartialObject<T extends TS_Object, Ks extends keyof T>(instance: T, keys: Ks[]): SubsetObjectByKeys<T, Ks>;
@@ -1,35 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KeysOfDB_Object = void 0;
4
- exports.dbObjectToId = dbObjectToId;
5
- exports.removeDBObjectKeys = removeDBObjectKeys;
6
- exports.deleteKeysObject = deleteKeysObject;
7
- exports.keepDBObjectKeys = keepDBObjectKeys;
8
- exports.keepPartialObject = keepPartialObject;
9
- const object_tools_1 = require("./object-tools");
10
- const tools_1 = require("./tools");
11
- exports.KeysOfDB_Object = ['_id', '_v', '__created', '__updated', '__metadata1'];
12
- function dbObjectToId(i) {
1
+ import { deepClone } from './object-tools.js';
2
+ import { exists } from './tools.js';
3
+ export const DB_OBJECT_PROP__ID = '_id';
4
+ export const DB_OBJECT_PROP__VERSION = '_v';
5
+ export const DB_OBJECT_PROP__CREATED = '__created';
6
+ export const DB_OBJECT_PROP__UPDATED = '__updated';
7
+ export const KeysOfDB_Object = [DB_OBJECT_PROP__ID, DB_OBJECT_PROP__VERSION, DB_OBJECT_PROP__CREATED, DB_OBJECT_PROP__UPDATED, '__metadata1'];
8
+ export function dbObjectToId(i) {
13
9
  return i._id;
14
10
  }
15
- function removeDBObjectKeys(instance) {
16
- return deleteKeysObject(instance, exports.KeysOfDB_Object);
11
+ export function removeDBObjectKeys(instance) {
12
+ return deleteKeysObject(instance, KeysOfDB_Object);
13
+ }
14
+ export function removeDBObjectKeysFromInstance(instance) {
15
+ return deleteKeysObject(instance, KeysOfDB_Object, true);
17
16
  }
18
17
  /**
19
18
  * Returns a cloned object with the keys removed.
20
19
  */
21
- function deleteKeysObject(instance, keysToRemove) {
22
- const _instance = (0, object_tools_1.deepClone)(instance);
20
+ export function deleteKeysObject(instance, keysToRemove, keepInstance = false) {
21
+ const _instance = keepInstance ? instance : deepClone(instance);
23
22
  keysToRemove.forEach(key => delete _instance[key]);
24
23
  return _instance;
25
24
  }
26
- function keepDBObjectKeys(instance) {
27
- return keepPartialObject(instance, exports.KeysOfDB_Object);
25
+ export function keepDBObjectKeys(instance) {
26
+ return keepPartialObject(instance, KeysOfDB_Object);
28
27
  }
29
- function keepPartialObject(instance, keys) {
28
+ export function keepPartialObject(instance, keys) {
30
29
  return keys.reduce((objectToRet, key) => {
31
- if ((0, tools_1.exists)(instance[key]))
30
+ if (exists(instance[key]))
32
31
  objectToRet[key] = instance[key];
33
32
  return objectToRet;
34
33
  }, {});
35
34
  }
35
+ //# sourceMappingURL=db-object-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-object-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/db-object-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAGlC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAwB,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;AAEnK,MAAM,UAAU,YAAY,CAAC,CAAY;IACxC,OAAO,CAAC,CAAC,GAAG,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAsB,QAAW;IAClE,OAAO,gBAAgB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAsB,QAAW;IAC9E,OAAO,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAA0C,QAAW,EAAE,YAAkB,EAAE,YAAY,GAAG,KAAK;IAC9H,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAsB,QAAW;IAChE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAA0C,QAAW,EAAE,IAAU;IACjG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElC,OAAO,WAAW,CAAC;IACpB,CAAC,EAAE,EAA+B,CAAC,CAAC;AACrC,CAAC"}
@@ -1,18 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCustomException = isCustomException;
4
- const exceptions_1 = require("../core/exceptions/exceptions");
1
+ import { AssertionException, BadImplementationException, DontCallThisException, Exception, ImplementationMissingException, isErrorOfType, MUSTNeverHappenException, NotImplementedYetException, ThisShouldNotHappenException, WhoCallThisException } from '../core/exceptions/exceptions.js';
5
2
  const allExceptions = [
6
- exceptions_1.Exception,
7
- exceptions_1.BadImplementationException,
8
- exceptions_1.ImplementationMissingException,
9
- exceptions_1.MUSTNeverHappenException,
10
- exceptions_1.NotImplementedYetException,
11
- exceptions_1.ThisShouldNotHappenException,
12
- exceptions_1.DontCallThisException,
13
- exceptions_1.WhoCallThisException,
14
- exceptions_1.AssertionException,
3
+ Exception,
4
+ BadImplementationException,
5
+ ImplementationMissingException,
6
+ MUSTNeverHappenException,
7
+ NotImplementedYetException,
8
+ ThisShouldNotHappenException,
9
+ DontCallThisException,
10
+ WhoCallThisException,
11
+ AssertionException,
15
12
  ];
16
- function isCustomException(e) {
17
- return allExceptions.some(exc => !!(0, exceptions_1.isErrorOfType)(e, exc));
13
+ export function isCustomException(e) {
14
+ return allExceptions.some(exc => !!isErrorOfType(e, exc));
18
15
  }
16
+ //# sourceMappingURL=exception-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/exception-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,SAAS,EACT,8BAA8B,EAC9B,aAAa,EACb,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,kCAAkC,CAAC;AAG1C,MAAM,aAAa,GAAG;IACrB,SAAS;IACT,0BAA0B;IAC1B,8BAA8B;IAC9B,wBAAwB;IACxB,0BAA0B;IAC1B,4BAA4B;IAC5B,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;CAClB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,CAAQ;IACzC,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -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,9 +15,7 @@
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.Filter = void 0;
21
- const array_tools_1 = require("./array-tools");
18
+ import { filterInstances, sortArray } from './array-tools.js';
22
19
  const specialChars = ['(', ')', '?', '[', ']', '*', '\\', '/'];
23
20
  /**
24
21
  * # Filter
@@ -47,7 +44,24 @@ const specialChars = ['(', ')', '?', '[', ']', '*', '\\', '/'];
47
44
  * const items: T[] = [item1, item2, item3];
48
45
  * ```
49
46
  */
50
- class Filter {
47
+ export class Filter {
48
+ regexp = true;
49
+ mapper;
50
+ originFilterText;
51
+ _filter;
52
+ static translateStringToRegexFilter = (filter, regexp) => {
53
+ filter = (filter || '').trim();
54
+ filter = filter.toLowerCase();
55
+ filter = filter.replace(/\s+/, ' ');
56
+ if (regexp) {
57
+ filter = Array.from(filter).map(char => specialChars.includes(char) ? `.*?\\${char}` : `.*?${char}`).join('');
58
+ }
59
+ else {
60
+ filter = `.*?${filter}`;
61
+ }
62
+ filter.length === 0 ? filter = '.*?' : filter += '.*';
63
+ return new RegExp(filter);
64
+ };
51
65
  /**
52
66
  * Returns an instance of a filter, where the tested fields are the one provided by the mapper.
53
67
  *
@@ -62,33 +76,6 @@ class Filter {
62
76
  * ```
63
77
  */
64
78
  constructor(mapper) {
65
- this.regexp = true;
66
- /**
67
- * A function return a boolean value as to if any of the item fields passes the Filter._filter</br>
68
- * Regular expression set by the "setRegexp" function.</br>
69
- * This function serves as a "default mapper" to pass to a prototype.filter function instead of using this Filter functionality.
70
- *
71
- * @param item The item to check
72
- *
73
- * @return
74
- *
75
- * #### <ins>Usage:</ins>
76
- * ```js
77
- * const filter = new Filter();
78
- *
79
- * filter.prepareFilter('REGEX');
80
- *
81
- * const filteredItems = [item1,item2,item3].filter(filter.filterImpl);
82
- * ```
83
- */
84
- this.filterImpl = (item) => {
85
- const keysToFilter = (0, array_tools_1.filterInstances)(this.mapper(item));
86
- for (const key of keysToFilter) {
87
- if (key.toLowerCase().match(this._filter))
88
- return true;
89
- }
90
- return false;
91
- };
92
79
  this.mapper = mapper;
93
80
  }
94
81
  /**
@@ -161,8 +148,8 @@ class Filter {
161
148
  this.prepareFilter(filterText);
162
149
  const text = filterText.toLowerCase();
163
150
  const filteredItems = items.filter(this.filterImpl);
164
- return (0, array_tools_1.sortArray)(filteredItems, item => {
165
- const values = (0, array_tools_1.filterInstances)(this.mapper(item)).map(value => value.toLowerCase());
151
+ return sortArray(filteredItems, item => {
152
+ const values = filterInstances(this.mapper(item)).map(value => value.toLowerCase());
166
153
  //Exact Match
167
154
  if (values.includes(text)) {
168
155
  return 0;
@@ -175,6 +162,32 @@ class Filter {
175
162
  return 2;
176
163
  });
177
164
  }
165
+ /**
166
+ * A function return a boolean value as to if any of the item fields passes the Filter._filter</br>
167
+ * Regular expression set by the "setRegexp" function.</br>
168
+ * This function serves as a "default mapper" to pass to a prototype.filter function instead of using this Filter functionality.
169
+ *
170
+ * @param item The item to check
171
+ *
172
+ * @return
173
+ *
174
+ * #### <ins>Usage:</ins>
175
+ * ```js
176
+ * const filter = new Filter();
177
+ *
178
+ * filter.prepareFilter('REGEX');
179
+ *
180
+ * const filteredItems = [item1,item2,item3].filter(filter.filterImpl);
181
+ * ```
182
+ */
183
+ filterImpl = (item) => {
184
+ const keysToFilter = filterInstances(this.mapper(item));
185
+ for (const key of keysToFilter) {
186
+ if (key.toLowerCase().match(this._filter))
187
+ return true;
188
+ }
189
+ return false;
190
+ };
178
191
  /**
179
192
  * A function that sets the Filter instance's filter text and regex.
180
193
  *
@@ -195,17 +208,4 @@ class Filter {
195
208
  return this;
196
209
  }
197
210
  }
198
- exports.Filter = Filter;
199
- Filter.translateStringToRegexFilter = (filter, regexp) => {
200
- filter = (filter || '').trim();
201
- filter = filter.toLowerCase();
202
- filter = filter.replace(/\s+/, ' ');
203
- if (regexp) {
204
- filter = Array.from(filter).map(char => specialChars.includes(char) ? `.*?\\${char}` : `.*?${char}`).join('');
205
- }
206
- else {
207
- filter = `.*?${filter}`;
208
- }
209
- filter.length === 0 ? filter = '.*?' : filter += '.*';
210
- return new RegExp(filter);
211
- };
211
+ //# sourceMappingURL=filter-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/filter-tools.ts"],"names":[],"mappings":"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"}
@@ -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,31 +15,23 @@
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.md5 = md5;
21
- exports.sha1 = sha1;
22
- exports.sha256 = sha256;
23
- exports.sha384 = sha384;
24
- exports.sha512 = sha512;
25
- exports.encode = encode;
26
- exports.decode = decode;
27
- const node_forge_1 = require("node-forge");
28
- function md5(toBeConverted) {
29
- return node_forge_1.md.md5.create().update(toBeConverted).digest().toHex().toLowerCase();
18
+ import md from "node-forge";
19
+ export function md5(toBeConverted) {
20
+ return md.md5.create().update(toBeConverted).digest().toHex().toLowerCase();
30
21
  }
31
- function sha1(toBeConverted) {
32
- return node_forge_1.md.sha1.create().update(toBeConverted).digest().toHex().toLowerCase();
22
+ export function sha1(toBeConverted) {
23
+ return md.sha1.create().update(toBeConverted).digest().toHex().toLowerCase();
33
24
  }
34
- function sha256(toBeConverted) {
35
- return node_forge_1.md.sha256.create().update(toBeConverted).digest().toHex().toLowerCase();
25
+ export function sha256(toBeConverted) {
26
+ return md.sha256.create().update(toBeConverted).digest().toHex().toLowerCase();
36
27
  }
37
- function sha384(toBeConverted) {
38
- return node_forge_1.md.sha384.create().update(toBeConverted).digest().toHex().toLowerCase();
28
+ export function sha384(toBeConverted) {
29
+ return md.sha384.create().update(toBeConverted).digest().toHex().toLowerCase();
39
30
  }
40
- function sha512(toBeConverted) {
41
- return node_forge_1.md.sha512.create().update(toBeConverted).digest().toHex().toLowerCase();
31
+ export function sha512(toBeConverted) {
32
+ return md.sha512.create().update(toBeConverted).digest().toHex().toLowerCase();
42
33
  }
43
- function encode(data, encoding = "base64") {
34
+ export function encode(data, encoding = "base64") {
44
35
  let buffer;
45
36
  if (Buffer.isBuffer(data))
46
37
  buffer = data;
@@ -50,6 +41,7 @@ function encode(data, encoding = "base64") {
50
41
  buffer = Buffer.from(data.toString(), 'utf8');
51
42
  return buffer.toString(encoding);
52
43
  }
53
- function decode(encoded, from = "base64", to = "utf8") {
44
+ export function decode(encoded, from = "base64", to = "utf8") {
54
45
  return Buffer.from(encoded, from).toString(to);
55
46
  }
47
+ //# sourceMappingURL=hash-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-tools.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/ts-common/src/main/","sources":["utils/hash-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,UAAU,GAAG,CAAC,aAAkB;IACrC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,aAAkB;IACtC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAkB;IACxC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAkB;IACxC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAkB;IACxC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAA8B,EAAE,WAA2B,QAAQ;IACzF,IAAI,MAAc,CAAC;IACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,MAAM,GAAG,IAAI,CAAC;SACV,IAAI,OAAO,IAAI,KAAK,QAAQ;QAChC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;QAEnC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,OAAuB,QAAQ,EAAE,KAAqB,MAAM;IACnG,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC"}