@develia/commons 0.5.0 → 0.6.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 (60) hide show
  1. package/dist/parse.d.ts +62 -44
  2. package/dist/parse.d.ts.map +1 -1
  3. package/dist/parse.js +95 -59
  4. package/dist/parse.js.map +1 -1
  5. package/dist/range.d.ts +2 -10
  6. package/dist/range.d.ts.map +1 -1
  7. package/dist/range.js +0 -12
  8. package/dist/range.js.map +1 -1
  9. package/dist/stopwatch.d.ts +2 -2
  10. package/dist/stopwatch.d.ts.map +1 -1
  11. package/dist/stopwatch.js +9 -9
  12. package/dist/stopwatch.js.map +1 -1
  13. package/dist/string.d.ts +10 -0
  14. package/dist/string.d.ts.map +1 -1
  15. package/dist/string.js +20 -0
  16. package/dist/string.js.map +1 -1
  17. package/dist/timespan.d.ts +10 -15
  18. package/dist/timespan.d.ts.map +1 -1
  19. package/dist/timespan.js +10 -15
  20. package/dist/timespan.js.map +1 -1
  21. package/dist/triggers.d.ts +6 -15
  22. package/dist/triggers.d.ts.map +1 -1
  23. package/dist/triggers.js +8 -22
  24. package/dist/triggers.js.map +1 -1
  25. package/dist/uuid.d.ts +11 -11
  26. package/dist/uuid.d.ts.map +1 -1
  27. package/dist/uuid.js +18 -18
  28. package/dist/uuid.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/array.ts +0 -0
  31. package/src/async-pool-executor.ts +0 -0
  32. package/src/browser/form-utilities.ts +0 -0
  33. package/src/browser/geo-location.ts +0 -0
  34. package/src/browser/index.ts +0 -0
  35. package/src/browser/native-bridge.ts +0 -0
  36. package/src/cancellable-promise.ts +0 -0
  37. package/src/clean-url-search-params.ts +0 -0
  38. package/src/collections/cache-dictionary.ts +0 -0
  39. package/src/collections/default-map.ts +0 -0
  40. package/src/collections/default-weak-map.ts +0 -0
  41. package/src/collections/index.ts +0 -0
  42. package/src/draft.ts +0 -0
  43. package/src/event-bus.ts +0 -0
  44. package/src/functions.ts +0 -0
  45. package/src/key-value-pair.ts +0 -0
  46. package/src/lazy.ts +0 -0
  47. package/src/math.ts +0 -0
  48. package/src/order.ts +0 -0
  49. package/src/parse.ts +108 -66
  50. package/src/patch.ts +0 -0
  51. package/src/range.ts +2 -16
  52. package/src/stopwatch.ts +9 -9
  53. package/src/string.ts +24 -0
  54. package/src/timer.ts +0 -0
  55. package/src/timespan.ts +10 -15
  56. package/src/triggers.ts +10 -24
  57. package/src/type-code.ts +0 -0
  58. package/src/type.ts +0 -0
  59. package/src/types.ts +0 -0
  60. package/src/uuid.ts +19 -19
package/dist/stopwatch.js CHANGED
@@ -2,7 +2,7 @@ import TimeSpan from "./timespan.js";
2
2
  export default class Stopwatch {
3
3
  constructor() {
4
4
  this.startTime = null;
5
- this.elapsedTime = null;
5
+ this.elapsedMilliseconds = null;
6
6
  }
7
7
  /*static measure<T>(callback: () => T, measure: { value: TimeSpan | null }): T {
8
8
  const stopwatch = new Stopwatch();
@@ -11,30 +11,30 @@ export default class Stopwatch {
11
11
  return callback();
12
12
  } finally {
13
13
  stopwatch.stop();
14
- measure.value = stopwatch.getElapsedTime();
14
+ measure.value = stopwatch.elapsedTime;
15
15
  }
16
16
  }*/
17
17
  start() {
18
18
  this.startTime = performance.now();
19
- this.elapsedTime = null;
19
+ this.elapsedMilliseconds = null;
20
20
  }
21
21
  stop() {
22
22
  if (this.startTime !== null) {
23
- this.elapsedTime = performance.now() - this.startTime;
23
+ this.elapsedMilliseconds = performance.now() - this.startTime;
24
24
  this.startTime = null;
25
25
  }
26
26
  }
27
27
  resume() {
28
- if (this.elapsedTime !== null) {
29
- this.startTime = performance.now() - this.elapsedTime;
30
- this.elapsedTime = null;
28
+ if (this.elapsedMilliseconds !== null) {
29
+ this.startTime = performance.now() - this.elapsedMilliseconds;
30
+ this.elapsedMilliseconds = null;
31
31
  }
32
32
  }
33
- getElapsedTime() {
33
+ get elapsedTime() {
34
34
  if (this.startTime !== null) {
35
35
  return TimeSpan.fromMilliseconds(performance.now() - this.startTime);
36
36
  }
37
- return TimeSpan.fromMilliseconds(this.elapsedTime ?? 0.0);
37
+ return TimeSpan.fromMilliseconds(this.elapsedMilliseconds ?? 0.0);
38
38
  }
39
39
  }
40
40
  //# sourceMappingURL=stopwatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../src/stopwatch.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,SAAS;IAA9B;QACY,cAAS,GAAkB,IAAI,CAAC;QAChC,gBAAW,GAAkB,IAAI,CAAC;IAsC9C,CAAC;IApCG;;;;;;;;;OASG;IAEH,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;CACJ","sourcesContent":["import TimeSpan from \"./timespan.js\";\n\nexport default class Stopwatch {\n private startTime: number | null = null;\n private elapsedTime: number | null = null;\n\n /*static measure<T>(callback: () => T, measure: { value: TimeSpan | null }): T {\n const stopwatch = new Stopwatch();\n stopwatch.start();\n try {\n return callback();\n } finally {\n stopwatch.stop();\n measure.value = stopwatch.getElapsedTime();\n }\n }*/\n\n start(): void {\n this.startTime = performance.now();\n this.elapsedTime = null;\n }\n\n stop(): void {\n if (this.startTime !== null) {\n this.elapsedTime = performance.now() - this.startTime;\n this.startTime = null;\n }\n }\n\n resume(): void {\n if (this.elapsedTime !== null) {\n this.startTime = performance.now() - this.elapsedTime;\n this.elapsedTime = null;\n }\n }\n\n getElapsedTime(): TimeSpan {\n if (this.startTime !== null) {\n return TimeSpan.fromMilliseconds(performance.now() - this.startTime);\n }\n return TimeSpan.fromMilliseconds(this.elapsedTime ?? 0.0);\n }\n}\n"]}
1
+ {"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../src/stopwatch.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,SAAS;IAA9B;QACY,cAAS,GAAkB,IAAI,CAAC;QAChC,wBAAmB,GAAkB,IAAI,CAAC;IAsCtD,CAAC;IApCG;;;;;;;;;OASG;IAEH,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAC9D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACpC,CAAC;IACL,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;CACJ","sourcesContent":["import TimeSpan from \"./timespan.js\";\n\nexport default class Stopwatch {\n private startTime: number | null = null;\n private elapsedMilliseconds: number | null = null;\n\n /*static measure<T>(callback: () => T, measure: { value: TimeSpan | null }): T {\n const stopwatch = new Stopwatch();\n stopwatch.start();\n try {\n return callback();\n } finally {\n stopwatch.stop();\n measure.value = stopwatch.elapsedTime;\n }\n }*/\n\n start(): void {\n this.startTime = performance.now();\n this.elapsedMilliseconds = null;\n }\n\n stop(): void {\n if (this.startTime !== null) {\n this.elapsedMilliseconds = performance.now() - this.startTime;\n this.startTime = null;\n }\n }\n\n resume(): void {\n if (this.elapsedMilliseconds !== null) {\n this.startTime = performance.now() - this.elapsedMilliseconds;\n this.elapsedMilliseconds = null;\n }\n }\n\n get elapsedTime(): TimeSpan {\n if (this.startTime !== null) {\n return TimeSpan.fromMilliseconds(performance.now() - this.startTime);\n }\n return TimeSpan.fromMilliseconds(this.elapsedMilliseconds ?? 0.0);\n }\n}\n"]}
package/dist/string.d.ts CHANGED
@@ -73,4 +73,14 @@ export declare function toPascalCase(str: string): string;
73
73
  * @return {string} - The string converted to CONSTANT_CASE.
74
74
  */
75
75
  export declare function toConstantCase(str: string): string;
76
+ /**
77
+ * Formats a size in bytes with the largest unit it fills, in powers of 1024: `340 B`, `1.2 MB`.
78
+ *
79
+ * Bytes are written whole and the larger units with at most one decimal, with the separators of the locale.
80
+ *
81
+ * @param {number} bytes - The size in bytes; a negative or non-finite size is formatted as zero.
82
+ * @param {string} [locale] - The locale of the number, such as `es-ES`; the one of the runtime when omitted.
83
+ * @return {string} The number, a space and the unit.
84
+ */
85
+ export declare function formatFileSize(bytes: number, locale?: string): string;
76
86
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAGD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAEzE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAgB/D;AA0BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAGD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAEzE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAgB/D;AA0BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWrE"}
package/dist/string.js CHANGED
@@ -144,4 +144,24 @@ export function toPascalCase(str) {
144
144
  export function toConstantCase(str) {
145
145
  return toWords(str).join('_').toUpperCase();
146
146
  }
147
+ const FILE_SIZE_UNITS = Object.freeze(['B', 'KB', 'MB', 'GB', 'TB', 'PB']);
148
+ /**
149
+ * Formats a size in bytes with the largest unit it fills, in powers of 1024: `340 B`, `1.2 MB`.
150
+ *
151
+ * Bytes are written whole and the larger units with at most one decimal, with the separators of the locale.
152
+ *
153
+ * @param {number} bytes - The size in bytes; a negative or non-finite size is formatted as zero.
154
+ * @param {string} [locale] - The locale of the number, such as `es-ES`; the one of the runtime when omitted.
155
+ * @return {string} The number, a space and the unit.
156
+ */
157
+ export function formatFileSize(bytes, locale) {
158
+ let size = Number.isFinite(bytes) && bytes > 0 ? bytes : 0;
159
+ let unitIndex = 0;
160
+ while (size >= 1024 && unitIndex < FILE_SIZE_UNITS.length - 1) {
161
+ size /= 1024;
162
+ unitIndex++;
163
+ }
164
+ const maximumFractionDigits = unitIndex === 0 ? 0 : 1;
165
+ return `${size.toLocaleString(locale, { maximumFractionDigits })} ${FILE_SIZE_UNITS[unitIndex]}`;
166
+ }
147
167
  //# sourceMappingURL=string.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * Ensures that a given string has a specific prefix.\n *\n * @param {string} str - The string to ensure the prefix on.\n * @param {string} prefix - The prefix to ensure on the string.\n * @return {string} - The resulting string with the ensured prefix.\n */\nexport function ensurePrefix(str: string, prefix: string): string {\n if (!str.startsWith(prefix))\n return prefix + str\n return str\n}\n\n\n/**\n * Ensures that a string ends with a specified suffix.\n *\n * @param {string} str - The original string.\n * @param {string} suffix - The suffix to ensure.\n * @return {string} - The modified string with the suffix added if it was not already present.\n */\nexport function ensureSuffix(str: string, suffix: string): string {\n if (!str.endsWith(suffix))\n return str + suffix\n return str\n}\n\n/**\n * Null for an empty string, as `Str::nullIfEmpty()` of develia/commons for PHP; any other string as it is. Compose it\n * with `trim()` to turn a blank string into null: `nullIfEmpty(value.trim())`.\n */\nexport function nullIfEmpty(str: string | null | undefined): string | null {\n return str === undefined || str === null || str === '' ? null : str;\n}\n\n/**\n * Normalizes Unicode whitespaces into single ASCII spaces and removes leading\n * and trailing whitespace.\n */\nexport function normalizeWhitespaces(str: string): string {\n return str.replace(/[\\s\\u200B\\uFEFF]+/gu, ' ').trim();\n}\n\n/**\n * Removes Unicode diacritics while preserving the original letter casing.\n *\n * @example removeDiacritics('áÁñÑ') // 'aAnN'\n */\nexport function removeDiacritics(str: string): string {\n return str\n .normalize('NFD')\n .replace(/\\p{M}+/gu, '')\n}\n\n/**\n * Formats a string using a template and provided arguments.\n *\n * @param {string} template - The template string containing placeholders.\n * @param {any[]} args - Optional arguments to replace the placeholders in the template.\n * @return {string} The formatted string.\n */\nexport function format(template: string, ...args: any[]): string {\n\n let regex: RegExp;\n const hasNamedPlaceholders = /{(?!\\d+})[^{}]+}/.test(template);\n if (args.length === 1 && args[0] !== null && typeof args[0] === 'object' && hasNamedPlaceholders) {\n args = args[0];\n regex = /{(.+?)}/g;\n } else {\n regex = /{(\\d+?)}/g;\n }\n\n return template.replace(regex, (match, key) => {\n return Object.prototype.hasOwnProperty.call(args, key) && typeof args[key] !== 'undefined'\n ? args[key]\n : \"\";\n });\n}\n\n/**\n * Splits a string into its constituent words, regardless of the original case\n * style (camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE,\n * space-separated, etc.).\n *\n * @param {string} str - The string to split into words.\n * @return {string[]} - The list of lowercase words extracted from the input.\n */\nfunction toWords(str: string): string[] {\n if (!str) return [];\n\n return str\n // Insert a space between a lowercase/digit and an uppercase letter (camelCase -> camel Case)\n .replace(/([\\p{Ll}\\p{N}])(\\p{Lu})/gu, '$1 $2')\n // Insert a space between consecutive uppercase letters followed by a lowercase letter (XMLParser -> XML Parser)\n .replace(/(\\p{Lu}+)(\\p{Lu}\\p{Ll})/gu, '$1 $2')\n // Replace any non-alphanumeric character with a space\n .replace(/[^\\p{L}\\p{N}]+/gu, ' ')\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter(Boolean);\n}\n\n/**\n * Converts a string to snake_case.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to snake_case.\n */\nexport function toSnakeCase(str: string): string {\n return toWords(str).join('_');\n}\n\n/**\n * Converts a string to kebab-case.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to kebab-case.\n */\nexport function toKebabCase(str: string): string {\n return toWords(str).join('-');\n}\n\n/**\n * Converts a string to camelCase.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to camelCase.\n */\nexport function toCamelCase(str: string): string {\n const words = toWords(str);\n if (words.length === 0) return '';\n return words\n .map((word, i) => i === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\n/**\n * Converts a string to PascalCase.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to PascalCase.\n */\nexport function toPascalCase(str: string): string {\n return toWords(str)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\n/**\n * Converts a string to CONSTANT_CASE (a.k.a. SCREAMING_SNAKE_CASE).\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to CONSTANT_CASE.\n */\nexport function toConstantCase(str: string): string {\n return toWords(str).join('_').toUpperCase();\n}\n"]}
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"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","sourcesContent":["\n/**\n * Ensures that a given string has a specific prefix.\n *\n * @param {string} str - The string to ensure the prefix on.\n * @param {string} prefix - The prefix to ensure on the string.\n * @return {string} - The resulting string with the ensured prefix.\n */\nexport function ensurePrefix(str: string, prefix: string): string {\n if (!str.startsWith(prefix))\n return prefix + str\n return str\n}\n\n\n/**\n * Ensures that a string ends with a specified suffix.\n *\n * @param {string} str - The original string.\n * @param {string} suffix - The suffix to ensure.\n * @return {string} - The modified string with the suffix added if it was not already present.\n */\nexport function ensureSuffix(str: string, suffix: string): string {\n if (!str.endsWith(suffix))\n return str + suffix\n return str\n}\n\n/**\n * Null for an empty string, as `Str::nullIfEmpty()` of develia/commons for PHP; any other string as it is. Compose it\n * with `trim()` to turn a blank string into null: `nullIfEmpty(value.trim())`.\n */\nexport function nullIfEmpty(str: string | null | undefined): string | null {\n return str === undefined || str === null || str === '' ? null : str;\n}\n\n/**\n * Normalizes Unicode whitespaces into single ASCII spaces and removes leading\n * and trailing whitespace.\n */\nexport function normalizeWhitespaces(str: string): string {\n return str.replace(/[\\s\\u200B\\uFEFF]+/gu, ' ').trim();\n}\n\n/**\n * Removes Unicode diacritics while preserving the original letter casing.\n *\n * @example removeDiacritics('áÁñÑ') // 'aAnN'\n */\nexport function removeDiacritics(str: string): string {\n return str\n .normalize('NFD')\n .replace(/\\p{M}+/gu, '')\n}\n\n/**\n * Formats a string using a template and provided arguments.\n *\n * @param {string} template - The template string containing placeholders.\n * @param {any[]} args - Optional arguments to replace the placeholders in the template.\n * @return {string} The formatted string.\n */\nexport function format(template: string, ...args: any[]): string {\n\n let regex: RegExp;\n const hasNamedPlaceholders = /{(?!\\d+})[^{}]+}/.test(template);\n if (args.length === 1 && args[0] !== null && typeof args[0] === 'object' && hasNamedPlaceholders) {\n args = args[0];\n regex = /{(.+?)}/g;\n } else {\n regex = /{(\\d+?)}/g;\n }\n\n return template.replace(regex, (match, key) => {\n return Object.prototype.hasOwnProperty.call(args, key) && typeof args[key] !== 'undefined'\n ? args[key]\n : \"\";\n });\n}\n\n/**\n * Splits a string into its constituent words, regardless of the original case\n * style (camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE,\n * space-separated, etc.).\n *\n * @param {string} str - The string to split into words.\n * @return {string[]} - The list of lowercase words extracted from the input.\n */\nfunction toWords(str: string): string[] {\n if (!str) return [];\n\n return str\n // Insert a space between a lowercase/digit and an uppercase letter (camelCase -> camel Case)\n .replace(/([\\p{Ll}\\p{N}])(\\p{Lu})/gu, '$1 $2')\n // Insert a space between consecutive uppercase letters followed by a lowercase letter (XMLParser -> XML Parser)\n .replace(/(\\p{Lu}+)(\\p{Lu}\\p{Ll})/gu, '$1 $2')\n // Replace any non-alphanumeric character with a space\n .replace(/[^\\p{L}\\p{N}]+/gu, ' ')\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter(Boolean);\n}\n\n/**\n * Converts a string to snake_case.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to snake_case.\n */\nexport function toSnakeCase(str: string): string {\n return toWords(str).join('_');\n}\n\n/**\n * Converts a string to kebab-case.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to kebab-case.\n */\nexport function toKebabCase(str: string): string {\n return toWords(str).join('-');\n}\n\n/**\n * Converts a string to camelCase.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to camelCase.\n */\nexport function toCamelCase(str: string): string {\n const words = toWords(str);\n if (words.length === 0) return '';\n return words\n .map((word, i) => i === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\n/**\n * Converts a string to PascalCase.\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to PascalCase.\n */\nexport function toPascalCase(str: string): string {\n return toWords(str)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\n/**\n * Converts a string to CONSTANT_CASE (a.k.a. SCREAMING_SNAKE_CASE).\n *\n * @param {string} str - The string to convert.\n * @return {string} - The string converted to CONSTANT_CASE.\n */\nexport function toConstantCase(str: string): string {\n return toWords(str).join('_').toUpperCase();\n}\n\nconst FILE_SIZE_UNITS: readonly string[] = Object.freeze(['B', 'KB', 'MB', 'GB', 'TB', 'PB']);\n\n/**\n * Formats a size in bytes with the largest unit it fills, in powers of 1024: `340 B`, `1.2 MB`.\n *\n * Bytes are written whole and the larger units with at most one decimal, with the separators of the locale.\n *\n * @param {number} bytes - The size in bytes; a negative or non-finite size is formatted as zero.\n * @param {string} [locale] - The locale of the number, such as `es-ES`; the one of the runtime when omitted.\n * @return {string} The number, a space and the unit.\n */\nexport function formatFileSize(bytes: number, locale?: string): string {\n let size = Number.isFinite(bytes) && bytes > 0 ? bytes : 0;\n let unitIndex = 0;\n while (size >= 1024 && unitIndex < FILE_SIZE_UNITS.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n const maximumFractionDigits = unitIndex === 0 ? 0 : 1;\n\n return `${size.toLocaleString(locale, {maximumFractionDigits})} ${FILE_SIZE_UNITS[unitIndex]}`;\n}\n"]}
@@ -5,30 +5,25 @@ export default class TimeSpan {
5
5
  milliseconds: number;
6
6
  private constructor();
7
7
  /**
8
- * Gets the time interval in seconds.
9
- * @returns {number} The duration in seconds.
8
+ * The whole duration in seconds.
10
9
  */
11
- getTotalSeconds(): number;
10
+ get totalSeconds(): number;
12
11
  /**
13
- * Gets the time interval in minutes.
14
- * @returns {number} The duration in minutes.
12
+ * The whole duration in minutes.
15
13
  */
16
- getTotalMinutes(): number;
14
+ get totalMinutes(): number;
17
15
  /**
18
- * Gets the time interval in hours.
19
- * @returns {number} The duration in hours.
16
+ * The whole duration in hours.
20
17
  */
21
- getTotalHours(): number;
18
+ get totalHours(): number;
22
19
  /**
23
- * Gets the time interval in days.
24
- * @returns {number} The duration in days.
20
+ * The whole duration in days.
25
21
  */
26
- getTotalDays(): number;
22
+ get totalDays(): number;
27
23
  /**
28
- * Gets the time interval in weeks.
29
- * @returns {number} The duration in weeks.
24
+ * The whole duration in weeks.
30
25
  */
31
- getTotalWeeks(): number;
26
+ get totalWeeks(): number;
32
27
  /**
33
28
  * Creates a TimeSpan from a specified number of milliseconds.
34
29
  * @param {number} milliseconds - The number of milliseconds.
@@ -1 +1 @@
1
- {"version":3,"file":"timespan.d.ts","sourceRoot":"","sources":["../src/timespan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timespan.d.ts","sourceRoot":"","sources":["../src/timespan.ts"],"names":[],"mappings":"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"}
package/dist/timespan.js CHANGED
@@ -6,38 +6,33 @@ class TimeSpan {
6
6
  this.milliseconds = milliseconds;
7
7
  }
8
8
  /**
9
- * Gets the time interval in seconds.
10
- * @returns {number} The duration in seconds.
9
+ * The whole duration in seconds.
11
10
  */
12
- getTotalSeconds() {
11
+ get totalSeconds() {
13
12
  return this.milliseconds / 1000;
14
13
  }
15
14
  /**
16
- * Gets the time interval in minutes.
17
- * @returns {number} The duration in minutes.
15
+ * The whole duration in minutes.
18
16
  */
19
- getTotalMinutes() {
17
+ get totalMinutes() {
20
18
  return this.milliseconds / (1000 * 60);
21
19
  }
22
20
  /**
23
- * Gets the time interval in hours.
24
- * @returns {number} The duration in hours.
21
+ * The whole duration in hours.
25
22
  */
26
- getTotalHours() {
23
+ get totalHours() {
27
24
  return this.milliseconds / (1000 * 60 * 60);
28
25
  }
29
26
  /**
30
- * Gets the time interval in days.
31
- * @returns {number} The duration in days.
27
+ * The whole duration in days.
32
28
  */
33
- getTotalDays() {
29
+ get totalDays() {
34
30
  return this.milliseconds / (1000 * 60 * 60 * 24);
35
31
  }
36
32
  /**
37
- * Gets the time interval in weeks.
38
- * @returns {number} The duration in weeks.
33
+ * The whole duration in weeks.
39
34
  */
40
- getTotalWeeks() {
35
+ get totalWeeks() {
41
36
  return this.milliseconds / (1000 * 60 * 60 * 24 * 7);
42
37
  }
43
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"timespan.js","sourceRoot":"","sources":["../src/timespan.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Represents a duration of time in milliseconds.\n */\nexport default class TimeSpan {\n public milliseconds: number;\n\n private constructor(milliseconds: number) {\n this.milliseconds = milliseconds;\n }\n\n\n /**\n * Gets the time interval in seconds.\n * @returns {number} The duration in seconds.\n */\n getTotalSeconds(): number {\n return this.milliseconds / 1000;\n }\n\n /**\n * Gets the time interval in minutes.\n * @returns {number} The duration in minutes.\n */\n getTotalMinutes(): number {\n return this.milliseconds / (1000 * 60);\n }\n\n /**\n * Gets the time interval in hours.\n * @returns {number} The duration in hours.\n */\n getTotalHours(): number {\n return this.milliseconds / (1000 * 60 * 60);\n }\n\n /**\n * Gets the time interval in days.\n * @returns {number} The duration in days.\n */\n getTotalDays(): number {\n return this.milliseconds / (1000 * 60 * 60 * 24);\n }\n\n /**\n * Gets the time interval in weeks.\n * @returns {number} The duration in weeks.\n */\n getTotalWeeks(): number {\n return this.milliseconds / (1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Creates a TimeSpan from a specified number of milliseconds.\n * @param {number} milliseconds - The number of milliseconds.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(milliseconds);\n }\n\n /**\n * Creates a TimeSpan from a specified number of seconds.\n * @param {number} seconds - The number of seconds.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromSeconds(seconds: number): TimeSpan {\n return new TimeSpan(seconds * 1000);\n }\n\n /**\n * Creates a TimeSpan from a specified number of minutes.\n * @param {number} minutes - The number of minutes.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromMinutes(minutes: number): TimeSpan {\n return new TimeSpan(minutes * 1000 * 60);\n }\n\n /**\n * Creates a TimeSpan from a specified number of hours.\n * @param {number} hours - The number of hours.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromHours(hours: number): TimeSpan {\n return new TimeSpan(hours * 1000 * 60 * 60);\n }\n\n /**\n * Creates a TimeSpan from a specified number of days.\n * @param {number} days - The number of days.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromDays(days: number): TimeSpan {\n return new TimeSpan(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Creates a TimeSpan from a specified number of weeks.\n * @param {number} weeks - The number of weeks.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromWeeks(weeks: number): TimeSpan {\n return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of milliseconds to this instance.\n * @param {number} milliseconds - The milliseconds to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(this.milliseconds + milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of seconds to this instance.\n * @param {number} seconds - The seconds to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addSeconds(seconds: number): TimeSpan {\n return this.addMilliseconds(seconds * 1000);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of minutes to this instance.\n * @param {number} minutes - The minutes to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addMinutes(minutes: number): TimeSpan {\n return this.addMilliseconds(minutes * 1000 * 60);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of hours to this instance.\n * @param {number} hours - The hours to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addHours(hours: number): TimeSpan {\n return this.addMilliseconds(hours * 1000 * 60 * 60);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of days to this instance.\n * @param {number} days - The days to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addDays(days: number): TimeSpan {\n return this.addMilliseconds(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of weeks to this instance.\n * @param {number} weeks - The weeks to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addWeeks(weeks: number): TimeSpan {\n return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of milliseconds from this instance.\n * @param {number} milliseconds - The milliseconds to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(this.milliseconds - milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of seconds from this instance.\n * @param {number} seconds - The seconds to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractSeconds(seconds: number): TimeSpan {\n return this.subtractMilliseconds(seconds * 1000);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of minutes from this instance.\n * @param {number} minutes - The minutes to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractMinutes(minutes: number): TimeSpan {\n return this.subtractMilliseconds(minutes * 1000 * 60);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of hours from this instance.\n * @param {number} hours - The hours to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractHours(hours: number): TimeSpan {\n return this.subtractMilliseconds(hours * 1000 * 60 * 60);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of days from this instance.\n * @param {number} days - The days to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractDays(days: number): TimeSpan {\n return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of weeks from this instance.\n * @param {number} weeks - The weeks to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractWeeks(weeks: number): TimeSpan {\n return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified TimeSpan to this instance.\n * @param {TimeSpan} other - The TimeSpan to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n add(other: TimeSpan): TimeSpan {\n return new TimeSpan(this.milliseconds + other.milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified TimeSpan from this instance.\n * @param {TimeSpan} other - The TimeSpan to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtract(other: TimeSpan): TimeSpan {\n return new TimeSpan(this.milliseconds - other.milliseconds);\n }\n\n /**\n * Adds this TimeSpan to a specified Date.\n * @param {Date} date - The date to add to.\n * @returns {Date} A new Date instance.\n */\n addTo(date: Date): Date {\n return new Date(date.getTime() + this.milliseconds);\n }\n\n /**\n * Subtracts this TimeSpan from a specified Date.\n * @param {Date} date - The date to subtract from.\n * @returns {Date} A new Date instance.\n */\n subtractFrom(date: Date): Date {\n return new Date(date.getTime() - this.milliseconds);\n }\n\n /**\n * Creates a TimeSpan from the difference between two dates.\n * @param {Date} earlierDate - The earlier date.\n * @param {Date} laterDate - The later date.\n * @returns {TimeSpan} A new TimeSpan instance representing the difference.\n */\n static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan {\n return new TimeSpan(laterDate.getTime() - earlierDate.getTime());\n }\n\n /**\n * Formats the TimeSpan as a string.\n * Supported tokens: hh, h, mm, m, ss, s.\n * @param {string} format - The format string (default: 'hh:mm:ss').\n * @returns {string} The formatted string.\n */\n format(format: string = 'hh:mm:ss'): string {\n const formatLower = format.toLowerCase();\n const hasHours = formatLower.includes(\"h\");\n const hasMinutes = formatLower.includes(\"m\");\n\n const sign = this.milliseconds < 0 ? \"-\" : \"\";\n let hours = 0, minutes = 0, seconds = Math.floor(Math.abs(this.milliseconds) / 1000);\n\n if (hasHours) {\n hours = Math.floor(seconds / 3600);\n seconds -= hours * 3600;\n }\n if (hasMinutes) {\n minutes = Math.floor(seconds / 60);\n seconds -= minutes * 60;\n }\n\n const hoursPadded = String(hours).padStart(2, '0');\n const minutesPadded = String(minutes).padStart(2, '0');\n const secondsPadded = String(seconds).padStart(2, '0');\n\n const formatted = formatLower.replace(/hh|h|mm|m|ss|s/g, token => {\n switch (token) {\n case 'hh':\n return hoursPadded;\n case 'h':\n return hours.toString();\n case 'mm':\n return minutesPadded;\n case 'm':\n return minutes.toString();\n case 'ss':\n return secondsPadded;\n case 's':\n return seconds.toString();\n default:\n return token;\n }\n });\n\n return sign + formatted;\n }\n\n /**\n * Checks if this TimeSpan is equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if equal.\n */\n eq(other: TimeSpan): boolean {\n return this.milliseconds === other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is less than or equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if less than or equal.\n */\n le(other: TimeSpan): boolean {\n return this.milliseconds <= other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is less than another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if less than.\n */\n lt(other: TimeSpan): boolean {\n return this.milliseconds < other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is greater than or equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if greater than or equal.\n */\n ge(other: TimeSpan): boolean {\n return this.milliseconds >= other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is greater than another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if greater than.\n */\n gt(other: TimeSpan): boolean {\n return this.milliseconds > other.milliseconds;\n }\n\n /**\n * Multiplies the TimeSpan by a number.\n * @param {number} number - The multiplier.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n multiply(number: number): TimeSpan {\n return new TimeSpan(this.milliseconds * number);\n }\n\n /**\n * Divides the TimeSpan by a number.\n * @param {number} number - The divisor.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n divide(number: number): TimeSpan {\n return new TimeSpan(this.milliseconds / number);\n }\n\n /**\n * Returns the absolute value of the TimeSpan.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n abs(): TimeSpan {\n return new TimeSpan(Math.abs(this.milliseconds));\n }\n\n /**\n * Infinite duration.\n */\n static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);\n\n /**\n * Negative infinite duration.\n */\n static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);\n\n /**\n * Checks if the TimeSpan is infinite.\n * @returns {boolean} True if infinite.\n */\n isInfinite() {\n return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY\n }\n\n /**\n * Checks if the TimeSpan is positive infinite.\n * @returns {boolean} True if positive infinite.\n */\n isPositiveInfinite(): boolean {\n return this.milliseconds === Number.POSITIVE_INFINITY;\n }\n\n /**\n * Checks if the TimeSpan is negative infinite.\n * @returns {boolean} True if negative infinite.\n */\n isNegativeInfinite(): boolean {\n return this.milliseconds === Number.NEGATIVE_INFINITY;\n }\n}"]}
1
+ {"version":3,"file":"timespan.js","sourceRoot":"","sources":["../src/timespan.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Represents a duration of time in milliseconds.\n */\nexport default class TimeSpan {\n public milliseconds: number;\n\n private constructor(milliseconds: number) {\n this.milliseconds = milliseconds;\n }\n\n\n /**\n * The whole duration in seconds.\n */\n get totalSeconds(): number {\n return this.milliseconds / 1000;\n }\n\n /**\n * The whole duration in minutes.\n */\n get totalMinutes(): number {\n return this.milliseconds / (1000 * 60);\n }\n\n /**\n * The whole duration in hours.\n */\n get totalHours(): number {\n return this.milliseconds / (1000 * 60 * 60);\n }\n\n /**\n * The whole duration in days.\n */\n get totalDays(): number {\n return this.milliseconds / (1000 * 60 * 60 * 24);\n }\n\n /**\n * The whole duration in weeks.\n */\n get totalWeeks(): number {\n return this.milliseconds / (1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Creates a TimeSpan from a specified number of milliseconds.\n * @param {number} milliseconds - The number of milliseconds.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(milliseconds);\n }\n\n /**\n * Creates a TimeSpan from a specified number of seconds.\n * @param {number} seconds - The number of seconds.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromSeconds(seconds: number): TimeSpan {\n return new TimeSpan(seconds * 1000);\n }\n\n /**\n * Creates a TimeSpan from a specified number of minutes.\n * @param {number} minutes - The number of minutes.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromMinutes(minutes: number): TimeSpan {\n return new TimeSpan(minutes * 1000 * 60);\n }\n\n /**\n * Creates a TimeSpan from a specified number of hours.\n * @param {number} hours - The number of hours.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromHours(hours: number): TimeSpan {\n return new TimeSpan(hours * 1000 * 60 * 60);\n }\n\n /**\n * Creates a TimeSpan from a specified number of days.\n * @param {number} days - The number of days.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromDays(days: number): TimeSpan {\n return new TimeSpan(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Creates a TimeSpan from a specified number of weeks.\n * @param {number} weeks - The number of weeks.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n static fromWeeks(weeks: number): TimeSpan {\n return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of milliseconds to this instance.\n * @param {number} milliseconds - The milliseconds to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(this.milliseconds + milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of seconds to this instance.\n * @param {number} seconds - The seconds to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addSeconds(seconds: number): TimeSpan {\n return this.addMilliseconds(seconds * 1000);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of minutes to this instance.\n * @param {number} minutes - The minutes to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addMinutes(minutes: number): TimeSpan {\n return this.addMilliseconds(minutes * 1000 * 60);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of hours to this instance.\n * @param {number} hours - The hours to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addHours(hours: number): TimeSpan {\n return this.addMilliseconds(hours * 1000 * 60 * 60);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of days to this instance.\n * @param {number} days - The days to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addDays(days: number): TimeSpan {\n return this.addMilliseconds(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified number of weeks to this instance.\n * @param {number} weeks - The weeks to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n addWeeks(weeks: number): TimeSpan {\n return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of milliseconds from this instance.\n * @param {number} milliseconds - The milliseconds to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractMilliseconds(milliseconds: number): TimeSpan {\n return new TimeSpan(this.milliseconds - milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of seconds from this instance.\n * @param {number} seconds - The seconds to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractSeconds(seconds: number): TimeSpan {\n return this.subtractMilliseconds(seconds * 1000);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of minutes from this instance.\n * @param {number} minutes - The minutes to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractMinutes(minutes: number): TimeSpan {\n return this.subtractMilliseconds(minutes * 1000 * 60);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of hours from this instance.\n * @param {number} hours - The hours to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractHours(hours: number): TimeSpan {\n return this.subtractMilliseconds(hours * 1000 * 60 * 60);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of days from this instance.\n * @param {number} days - The days to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractDays(days: number): TimeSpan {\n return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified number of weeks from this instance.\n * @param {number} weeks - The weeks to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtractWeeks(weeks: number): TimeSpan {\n return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\n }\n\n /**\n * Returns a new TimeSpan that adds the specified TimeSpan to this instance.\n * @param {TimeSpan} other - The TimeSpan to add.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n add(other: TimeSpan): TimeSpan {\n return new TimeSpan(this.milliseconds + other.milliseconds);\n }\n\n /**\n * Returns a new TimeSpan that subtracts the specified TimeSpan from this instance.\n * @param {TimeSpan} other - The TimeSpan to subtract.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n subtract(other: TimeSpan): TimeSpan {\n return new TimeSpan(this.milliseconds - other.milliseconds);\n }\n\n /**\n * Adds this TimeSpan to a specified Date.\n * @param {Date} date - The date to add to.\n * @returns {Date} A new Date instance.\n */\n addTo(date: Date): Date {\n return new Date(date.getTime() + this.milliseconds);\n }\n\n /**\n * Subtracts this TimeSpan from a specified Date.\n * @param {Date} date - The date to subtract from.\n * @returns {Date} A new Date instance.\n */\n subtractFrom(date: Date): Date {\n return new Date(date.getTime() - this.milliseconds);\n }\n\n /**\n * Creates a TimeSpan from the difference between two dates.\n * @param {Date} earlierDate - The earlier date.\n * @param {Date} laterDate - The later date.\n * @returns {TimeSpan} A new TimeSpan instance representing the difference.\n */\n static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan {\n return new TimeSpan(laterDate.getTime() - earlierDate.getTime());\n }\n\n /**\n * Formats the TimeSpan as a string.\n * Supported tokens: hh, h, mm, m, ss, s.\n * @param {string} format - The format string (default: 'hh:mm:ss').\n * @returns {string} The formatted string.\n */\n format(format: string = 'hh:mm:ss'): string {\n const formatLower = format.toLowerCase();\n const hasHours = formatLower.includes(\"h\");\n const hasMinutes = formatLower.includes(\"m\");\n\n const sign = this.milliseconds < 0 ? \"-\" : \"\";\n let hours = 0, minutes = 0, seconds = Math.floor(Math.abs(this.milliseconds) / 1000);\n\n if (hasHours) {\n hours = Math.floor(seconds / 3600);\n seconds -= hours * 3600;\n }\n if (hasMinutes) {\n minutes = Math.floor(seconds / 60);\n seconds -= minutes * 60;\n }\n\n const hoursPadded = String(hours).padStart(2, '0');\n const minutesPadded = String(minutes).padStart(2, '0');\n const secondsPadded = String(seconds).padStart(2, '0');\n\n const formatted = formatLower.replace(/hh|h|mm|m|ss|s/g, token => {\n switch (token) {\n case 'hh':\n return hoursPadded;\n case 'h':\n return hours.toString();\n case 'mm':\n return minutesPadded;\n case 'm':\n return minutes.toString();\n case 'ss':\n return secondsPadded;\n case 's':\n return seconds.toString();\n default:\n return token;\n }\n });\n\n return sign + formatted;\n }\n\n /**\n * Checks if this TimeSpan is equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if equal.\n */\n eq(other: TimeSpan): boolean {\n return this.milliseconds === other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is less than or equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if less than or equal.\n */\n le(other: TimeSpan): boolean {\n return this.milliseconds <= other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is less than another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if less than.\n */\n lt(other: TimeSpan): boolean {\n return this.milliseconds < other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is greater than or equal to another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if greater than or equal.\n */\n ge(other: TimeSpan): boolean {\n return this.milliseconds >= other.milliseconds;\n }\n\n /**\n * Checks if this TimeSpan is greater than another.\n * @param {TimeSpan} other - The other TimeSpan.\n * @returns {boolean} True if greater than.\n */\n gt(other: TimeSpan): boolean {\n return this.milliseconds > other.milliseconds;\n }\n\n /**\n * Multiplies the TimeSpan by a number.\n * @param {number} number - The multiplier.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n multiply(number: number): TimeSpan {\n return new TimeSpan(this.milliseconds * number);\n }\n\n /**\n * Divides the TimeSpan by a number.\n * @param {number} number - The divisor.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n divide(number: number): TimeSpan {\n return new TimeSpan(this.milliseconds / number);\n }\n\n /**\n * Returns the absolute value of the TimeSpan.\n * @returns {TimeSpan} A new TimeSpan instance.\n */\n abs(): TimeSpan {\n return new TimeSpan(Math.abs(this.milliseconds));\n }\n\n /**\n * Infinite duration.\n */\n static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);\n\n /**\n * Negative infinite duration.\n */\n static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);\n\n /**\n * Checks if the TimeSpan is infinite.\n * @returns {boolean} True if infinite.\n */\n isInfinite() {\n return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY\n }\n\n /**\n * Checks if the TimeSpan is positive infinite.\n * @returns {boolean} True if positive infinite.\n */\n isPositiveInfinite(): boolean {\n return this.milliseconds === Number.POSITIVE_INFINITY;\n }\n\n /**\n * Checks if the TimeSpan is negative infinite.\n * @returns {boolean} True if negative infinite.\n */\n isNegativeInfinite(): boolean {\n return this.milliseconds === Number.NEGATIVE_INFINITY;\n }\n}"]}
@@ -6,7 +6,8 @@ import type { Supplier } from './types.js';
6
6
  */
7
7
  export declare class TimeTrigger<T> {
8
8
  private callback;
9
- private interval;
9
+ /** Time that must pass between two runs. */
10
+ interval: TimeSpan;
10
11
  private lastRunTime;
11
12
  constructor(callback: Supplier<T | Promise<T>>, interval: TimeSpan);
12
13
  /**
@@ -21,21 +22,13 @@ export declare class TimeTrigger<T> {
21
22
  * Replaces the callback executed by this trigger.
22
23
  */
23
24
  setCallback(callback: Supplier<T | Promise<T>>): void;
24
- /**
25
- * Gets the configured time interval.
26
- */
27
- getInterval(): TimeSpan;
28
- /**
29
- * Replaces the configured time interval.
30
- */
31
- setInterval(interval: TimeSpan): void;
32
25
  }
33
26
  /**
34
27
  * Runs a callback after a configured number of checks.
35
28
  */
36
29
  export declare class CountTrigger<T> {
37
30
  private callback;
38
- private interval;
31
+ private _interval;
39
32
  private checkCount;
40
33
  constructor(callback: Supplier<T | Promise<T>>, interval: number);
41
34
  /**
@@ -51,14 +44,12 @@ export declare class CountTrigger<T> {
51
44
  */
52
45
  setCallback(callback: Supplier<T | Promise<T>>): void;
53
46
  /**
54
- * Gets the configured check interval.
47
+ * Number of checks after which the callback runs.
55
48
  */
56
- getInterval(): number;
49
+ get interval(): number;
57
50
  /**
58
- * Replaces the configured check interval.
59
- *
60
51
  * @throws {RangeError} When the interval is less than one.
61
52
  */
62
- setInterval(interval: number): void;
53
+ set interval(interval: number);
63
54
  }
64
55
  //# sourceMappingURL=triggers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAW,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAmB;gBAEnB,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ;IAMzE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAYxC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAKlC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACI,WAAW,IAAI,QAAQ;IAI9B;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAK/C;AAED;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAa;gBAEZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;IAKvE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAUxC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAKlC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAO7C"}
1
+ {"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAW,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,4CAA4C;IACrC,QAAQ,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,WAAW,CAAmB;gBAEnB,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ;IAMzE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAYxC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAKlC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;CAM/D;AAED;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAa;gBAEZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM;IAKvE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAUxC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAKlC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAMnC;CACJ"}
package/dist/triggers.js CHANGED
@@ -31,35 +31,23 @@ export class TimeTrigger {
31
31
  setCallback(callback) {
32
32
  this.callback = callback;
33
33
  }
34
- /**
35
- * Gets the configured time interval.
36
- */
37
- getInterval() {
38
- return this.interval;
39
- }
40
- /**
41
- * Replaces the configured time interval.
42
- */
43
- setInterval(interval) {
44
- this.interval = interval;
45
- }
46
34
  }
47
35
  /**
48
36
  * Runs a callback after a configured number of checks.
49
37
  */
50
38
  export class CountTrigger {
51
39
  constructor(callback, interval) {
52
- this.interval = 1;
40
+ this._interval = 1;
53
41
  this.checkCount = 0;
54
42
  this.callback = callback;
55
- this.setInterval(interval);
43
+ this.interval = interval;
56
44
  }
57
45
  /**
58
46
  * Executes the callback when the configured number of checks is reached.
59
47
  */
60
48
  async check() {
61
49
  this.checkCount++;
62
- if (this.checkCount >= this.interval) {
50
+ if (this.checkCount >= this._interval) {
63
51
  return { success: true, output: await this.trigger() };
64
52
  }
65
53
  return { success: false };
@@ -78,21 +66,19 @@ export class CountTrigger {
78
66
  this.callback = callback;
79
67
  }
80
68
  /**
81
- * Gets the configured check interval.
69
+ * Number of checks after which the callback runs.
82
70
  */
83
- getInterval() {
84
- return this.interval;
71
+ get interval() {
72
+ return this._interval;
85
73
  }
86
74
  /**
87
- * Replaces the configured check interval.
88
- *
89
75
  * @throws {RangeError} When the interval is less than one.
90
76
  */
91
- setInterval(interval) {
77
+ set interval(interval) {
92
78
  if (interval < 1) {
93
79
  throw new RangeError('Interval must be greater than zero.');
94
80
  }
95
- this.interval = interval;
81
+ this._interval = interval;
96
82
  }
97
83
  }
98
84
  //# sourceMappingURL=triggers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,WAAW;IAKpB,YAAmB,QAAkC,EAAE,QAAkB;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QACd,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI;eACtB,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EACjE,CAAC;YACC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAkB;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAGJ;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAKrB,YAAmB,QAAkC,EAAE,QAAgB;QAH/D,aAAQ,GAAW,CAAC,CAAC;QACrB,eAAU,GAAW,CAAC,CAAC;QAG3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QACd,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,QAAgB;QAC/B,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ","sourcesContent":["import type {Result} from './result.js';\nimport TimeSpan from './timespan.js';\nimport type {Nullable, Supplier} from './types.js';\n\n/**\n * Runs a callback at most once during a configured time interval.\n */\nexport class TimeTrigger<T> {\n private callback: Supplier<T | Promise<T>>;\n private interval: TimeSpan;\n private lastRunTime: Nullable<number>;\n\n public constructor(callback: Supplier<T | Promise<T>>, interval: TimeSpan) {\n this.callback = callback;\n this.interval = interval;\n this.lastRunTime = null;\n }\n\n /**\n * Executes the callback when the configured interval has elapsed.\n */\n public async check(): Promise<Result<T>> {\n const currentTime = performance.now();\n\n if (this.lastRunTime === null\n || currentTime - this.lastRunTime >= this.interval.milliseconds\n ) {\n return {success: true, output: await this.trigger()};\n }\n\n return {success: false};\n }\n\n /**\n * Executes the callback regardless of the configured interval.\n */\n public async trigger(): Promise<T> {\n this.lastRunTime = performance.now();\n return this.callback();\n }\n\n /**\n * Replaces the callback executed by this trigger.\n */\n public setCallback(callback: Supplier<T | Promise<T>>): void {\n this.callback = callback;\n }\n\n /**\n * Gets the configured time interval.\n */\n public getInterval(): TimeSpan {\n return this.interval;\n }\n\n /**\n * Replaces the configured time interval.\n */\n public setInterval(interval: TimeSpan): void {\n this.interval = interval;\n }\n\n\n}\n\n/**\n * Runs a callback after a configured number of checks.\n */\nexport class CountTrigger<T> {\n private callback: Supplier<T | Promise<T>>;\n private interval: number = 1;\n private checkCount: number = 0;\n\n public constructor(callback: Supplier<T | Promise<T>>, interval: number) {\n this.callback = callback;\n this.setInterval(interval);\n }\n\n /**\n * Executes the callback when the configured number of checks is reached.\n */\n public async check(): Promise<Result<T>> {\n this.checkCount++;\n\n if (this.checkCount >= this.interval) {\n return {success: true, output: await this.trigger()};\n }\n\n return {success: false};\n }\n\n /**\n * Executes the callback regardless of the configured check count.\n */\n public async trigger(): Promise<T> {\n this.checkCount = 0;\n return this.callback();\n }\n\n /**\n * Replaces the callback executed by this trigger.\n */\n public setCallback(callback: Supplier<T | Promise<T>>): void {\n this.callback = callback;\n }\n\n /**\n * Gets the configured check interval.\n */\n public getInterval(): number {\n return this.interval;\n }\n\n /**\n * Replaces the configured check interval.\n *\n * @throws {RangeError} When the interval is less than one.\n */\n public setInterval(interval: number): void {\n if (interval < 1) {\n throw new RangeError('Interval must be greater than zero.');\n }\n\n this.interval = interval;\n }\n}\n"]}
1
+ {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../src/triggers.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,WAAW;IAMpB,YAAmB,QAAkC,EAAE,QAAkB;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QACd,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI;eACtB,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EACjE,CAAC;YACC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAKrB,YAAmB,QAAkC,EAAE,QAAgB;QAH/D,cAAS,GAAW,CAAC,CAAC;QACtB,eAAU,GAAW,CAAC,CAAC;QAG3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QACd,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ,CAAC,QAAgB;QAChC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;CACJ","sourcesContent":["import type {Result} from './result.js';\nimport TimeSpan from './timespan.js';\nimport type {Nullable, Supplier} from './types.js';\n\n/**\n * Runs a callback at most once during a configured time interval.\n */\nexport class TimeTrigger<T> {\n private callback: Supplier<T | Promise<T>>;\n /** Time that must pass between two runs. */\n public interval: TimeSpan;\n private lastRunTime: Nullable<number>;\n\n public constructor(callback: Supplier<T | Promise<T>>, interval: TimeSpan) {\n this.callback = callback;\n this.interval = interval;\n this.lastRunTime = null;\n }\n\n /**\n * Executes the callback when the configured interval has elapsed.\n */\n public async check(): Promise<Result<T>> {\n const currentTime = performance.now();\n\n if (this.lastRunTime === null\n || currentTime - this.lastRunTime >= this.interval.milliseconds\n ) {\n return {success: true, output: await this.trigger()};\n }\n\n return {success: false};\n }\n\n /**\n * Executes the callback regardless of the configured interval.\n */\n public async trigger(): Promise<T> {\n this.lastRunTime = performance.now();\n return this.callback();\n }\n\n /**\n * Replaces the callback executed by this trigger.\n */\n public setCallback(callback: Supplier<T | Promise<T>>): void {\n this.callback = callback;\n }\n\n\n\n}\n\n/**\n * Runs a callback after a configured number of checks.\n */\nexport class CountTrigger<T> {\n private callback: Supplier<T | Promise<T>>;\n private _interval: number = 1;\n private checkCount: number = 0;\n\n public constructor(callback: Supplier<T | Promise<T>>, interval: number) {\n this.callback = callback;\n this.interval = interval;\n }\n\n /**\n * Executes the callback when the configured number of checks is reached.\n */\n public async check(): Promise<Result<T>> {\n this.checkCount++;\n\n if (this.checkCount >= this._interval) {\n return {success: true, output: await this.trigger()};\n }\n\n return {success: false};\n }\n\n /**\n * Executes the callback regardless of the configured check count.\n */\n public async trigger(): Promise<T> {\n this.checkCount = 0;\n return this.callback();\n }\n\n /**\n * Replaces the callback executed by this trigger.\n */\n public setCallback(callback: Supplier<T | Promise<T>>): void {\n this.callback = callback;\n }\n\n /**\n * Number of checks after which the callback runs.\n */\n public get interval(): number {\n return this._interval;\n }\n\n /**\n * @throws {RangeError} When the interval is less than one.\n */\n public set interval(interval: number) {\n if (interval < 1) {\n throw new RangeError('Interval must be greater than zero.');\n }\n\n this._interval = interval;\n }\n}\n"]}
package/dist/uuid.d.ts CHANGED
@@ -4,7 +4,7 @@ import { Nullable } from './types.js';
4
4
  * such as `019a4f8b-4bae-7d2e-9f10-4a5b6c7d8e9f`.
5
5
  *
6
6
  * It serializes to its string with `JSON.stringify`, so DTOs carry it as text; read those
7
- * strings back with {@link Uuid.parse} or {@link Uuid.parseOrThrow}.
7
+ * strings back with {@link Uuid.parse} or {@link Uuid.tryParse}.
8
8
  */
9
9
  export default class Uuid {
10
10
  private readonly value;
@@ -37,25 +37,25 @@ export default class Uuid {
37
37
  /**
38
38
  * Reads a UUID in canonical form, in any letter case, as {@link Uuid.isValid} accepts it.
39
39
  *
40
- * @returns The UUID, or `null` when the value is not one.
40
+ * @throws {SyntaxError} If the value is not a UUID.
41
41
  */
42
- static parse(value: unknown): Nullable<Uuid>;
42
+ static parse(value: string): Uuid;
43
43
  /**
44
- * Reads a UUID in canonical form, in any letter case.
44
+ * Reads a UUID in canonical form, in any letter case, as {@link Uuid.isValid} accepts it.
45
45
  *
46
- * @throws {SyntaxError} If the value is not a UUID.
46
+ * @returns The UUID, or `undefined` when the value is not one.
47
47
  */
48
- static parseOrThrow(value: string): Uuid;
48
+ static tryParse(value: unknown): Uuid | undefined;
49
49
  /**
50
- * Returns the RFC 9562 version, from 1 to 8, or 0 for the Nil UUID and 15 for the Max UUID.
50
+ * The RFC 9562 version, from 1 to 8, or 0 for the Nil UUID and 15 for the Max UUID.
51
51
  */
52
- getVersion(): number;
52
+ get version(): number;
53
53
  /**
54
- * Returns the moment a version 7 UUID encodes, with millisecond precision.
54
+ * The moment a version 7 UUID encodes, with millisecond precision.
55
55
  *
56
- * @returns The moment, or `null` for other versions.
56
+ * It is `null` for other versions.
57
57
  */
58
- getDate(): Nullable<Date>;
58
+ get date(): Nullable<Date>;
59
59
  equals(other: Uuid): boolean;
60
60
  /**
61
61
  * Returns the UUID in lowercase canonical form.
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAQpC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAOzB;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI;IAiBhD;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIvC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IAQ5C;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASxC;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;IASzB,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAI5B;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWnC"}
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAQpC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAOzB;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI;IAiBhD;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIvC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASjC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS;IAQjD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAOzB;IAED,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAI5B;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWnC"}