@develia/commons 0.4.16 → 0.4.18

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 (207) hide show
  1. package/dist/cjs/array.js +22 -2
  2. package/dist/cjs/array.js.map +1 -1
  3. package/dist/cjs/async-pool-executor.js +26 -11
  4. package/dist/cjs/async-pool-executor.js.map +1 -1
  5. package/dist/cjs/browser/form-utilities.js +35 -34
  6. package/dist/cjs/browser/form-utilities.js.map +1 -1
  7. package/dist/cjs/browser/geo-location.js +1 -1
  8. package/dist/cjs/browser/geo-location.js.map +1 -1
  9. package/dist/cjs/browser/native-bridge.js +3 -1
  10. package/dist/cjs/browser/native-bridge.js.map +1 -1
  11. package/dist/cjs/cancellable-promise.js +34 -13
  12. package/dist/cjs/cancellable-promise.js.map +1 -1
  13. package/dist/cjs/clean-url-search-params.js +26 -3
  14. package/dist/cjs/clean-url-search-params.js.map +1 -1
  15. package/dist/cjs/collections/cache-dictionary.js +3 -3
  16. package/dist/cjs/collections/cache-dictionary.js.map +1 -1
  17. package/dist/cjs/collections/default-map.js.map +1 -1
  18. package/dist/cjs/collections/default-weak-map.js.map +1 -1
  19. package/dist/cjs/collections/from.js +3 -3
  20. package/dist/cjs/collections/from.js.map +1 -1
  21. package/dist/cjs/collections/index.js.map +1 -1
  22. package/dist/cjs/draft.js +46 -11
  23. package/dist/cjs/draft.js.map +1 -1
  24. package/dist/cjs/event-bus.js +1 -1
  25. package/dist/cjs/event-bus.js.map +1 -1
  26. package/dist/cjs/functions.js +348 -0
  27. package/dist/cjs/functions.js.map +1 -0
  28. package/dist/cjs/index.js +1 -0
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/key-value-pair.js.map +1 -1
  31. package/dist/cjs/lazy.js.map +1 -1
  32. package/dist/cjs/math.js +3 -0
  33. package/dist/cjs/math.js.map +1 -1
  34. package/dist/cjs/order.js.map +1 -1
  35. package/dist/cjs/parse.js +10 -1
  36. package/dist/cjs/parse.js.map +1 -1
  37. package/dist/cjs/patch.js.map +1 -1
  38. package/dist/cjs/stopwatch.js.map +1 -1
  39. package/dist/cjs/string.js +8 -5
  40. package/dist/cjs/string.js.map +1 -1
  41. package/dist/cjs/timer.js +1 -1
  42. package/dist/cjs/timer.js.map +1 -1
  43. package/dist/cjs/timespan.js +21 -8
  44. package/dist/cjs/timespan.js.map +1 -1
  45. package/dist/cjs/type-code.js.map +1 -1
  46. package/dist/cjs/type.js +20 -19
  47. package/dist/cjs/type.js.map +1 -1
  48. package/dist/cjs/types.js.map +1 -1
  49. package/dist/cjs/utilities.js +175 -39
  50. package/dist/cjs/utilities.js.map +1 -1
  51. package/dist/esm/array.js +21 -2
  52. package/dist/esm/array.js.map +1 -1
  53. package/dist/esm/async-pool-executor.js +26 -11
  54. package/dist/esm/async-pool-executor.js.map +1 -1
  55. package/dist/esm/browser/form-utilities.js +35 -34
  56. package/dist/esm/browser/form-utilities.js.map +1 -1
  57. package/dist/esm/browser/geo-location.js +1 -1
  58. package/dist/esm/browser/geo-location.js.map +1 -1
  59. package/dist/esm/browser/native-bridge.js +3 -1
  60. package/dist/esm/browser/native-bridge.js.map +1 -1
  61. package/dist/esm/cancellable-promise.js +34 -13
  62. package/dist/esm/cancellable-promise.js.map +1 -1
  63. package/dist/esm/clean-url-search-params.js +26 -3
  64. package/dist/esm/clean-url-search-params.js.map +1 -1
  65. package/dist/esm/collections/cache-dictionary.js +3 -3
  66. package/dist/esm/collections/cache-dictionary.js.map +1 -1
  67. package/dist/esm/collections/default-map.js.map +1 -1
  68. package/dist/esm/collections/default-weak-map.js.map +1 -1
  69. package/dist/esm/collections/from.js +3 -3
  70. package/dist/esm/collections/from.js.map +1 -1
  71. package/dist/esm/collections/index.js.map +1 -1
  72. package/dist/esm/draft.js +46 -11
  73. package/dist/esm/draft.js.map +1 -1
  74. package/dist/esm/event-bus.js +1 -1
  75. package/dist/esm/event-bus.js.map +1 -1
  76. package/dist/esm/functions.js +336 -0
  77. package/dist/esm/functions.js.map +1 -0
  78. package/dist/esm/index.js +1 -0
  79. package/dist/esm/index.js.map +1 -1
  80. package/dist/esm/key-value-pair.js.map +1 -1
  81. package/dist/esm/lazy.js.map +1 -1
  82. package/dist/esm/math.js +3 -0
  83. package/dist/esm/math.js.map +1 -1
  84. package/dist/esm/order.js.map +1 -1
  85. package/dist/esm/parse.js +10 -1
  86. package/dist/esm/parse.js.map +1 -1
  87. package/dist/esm/patch.js.map +1 -1
  88. package/dist/esm/stopwatch.js.map +1 -1
  89. package/dist/esm/string.js +8 -5
  90. package/dist/esm/string.js.map +1 -1
  91. package/dist/esm/timer.js +1 -1
  92. package/dist/esm/timer.js.map +1 -1
  93. package/dist/esm/timespan.js +21 -8
  94. package/dist/esm/timespan.js.map +1 -1
  95. package/dist/esm/type-code.js.map +1 -1
  96. package/dist/esm/type.js +20 -19
  97. package/dist/esm/type.js.map +1 -1
  98. package/dist/esm/types.js.map +1 -1
  99. package/dist/esm/utilities.js +174 -39
  100. package/dist/esm/utilities.js.map +1 -1
  101. package/dist/types/array.d.ts +20 -0
  102. package/dist/types/array.d.ts.map +1 -1
  103. package/dist/types/async-pool-executor.d.ts +2 -2
  104. package/dist/types/async-pool-executor.d.ts.map +1 -1
  105. package/dist/types/browser/form-utilities.d.ts.map +1 -1
  106. package/dist/types/browser/native-bridge.d.ts.map +1 -1
  107. package/dist/types/cancellable-promise.d.ts.map +1 -1
  108. package/dist/types/clean-url-search-params.d.ts +3 -1
  109. package/dist/types/clean-url-search-params.d.ts.map +1 -1
  110. package/dist/types/collections/from.d.ts +1 -1
  111. package/dist/types/draft.d.ts.map +1 -1
  112. package/dist/types/functions.d.ts +231 -0
  113. package/dist/types/functions.d.ts.map +1 -0
  114. package/dist/types/index.d.ts +1 -0
  115. package/dist/types/index.d.ts.map +1 -1
  116. package/dist/types/math.d.ts.map +1 -1
  117. package/dist/types/parse.d.ts.map +1 -1
  118. package/dist/types/string.d.ts.map +1 -1
  119. package/dist/types/timer.d.ts +1 -1
  120. package/dist/types/timespan.d.ts.map +1 -1
  121. package/dist/types/type.d.ts +2 -0
  122. package/dist/types/type.d.ts.map +1 -1
  123. package/dist/types/types.d.ts +1 -1
  124. package/dist/types/types.d.ts.map +1 -1
  125. package/dist/types/utilities.d.ts +21 -3
  126. package/dist/types/utilities.d.ts.map +1 -1
  127. package/dist/web/array.js +21 -2
  128. package/dist/web/array.js.map +1 -1
  129. package/dist/web/async-pool-executor.js +26 -11
  130. package/dist/web/async-pool-executor.js.map +1 -1
  131. package/dist/web/browser/form-utilities.js +35 -34
  132. package/dist/web/browser/form-utilities.js.map +1 -1
  133. package/dist/web/browser/geo-location.js +1 -1
  134. package/dist/web/browser/geo-location.js.map +1 -1
  135. package/dist/web/browser/native-bridge.js +3 -1
  136. package/dist/web/browser/native-bridge.js.map +1 -1
  137. package/dist/web/cancellable-promise.js +34 -13
  138. package/dist/web/cancellable-promise.js.map +1 -1
  139. package/dist/web/clean-url-search-params.js +26 -3
  140. package/dist/web/clean-url-search-params.js.map +1 -1
  141. package/dist/web/collections/cache-dictionary.js +3 -3
  142. package/dist/web/collections/cache-dictionary.js.map +1 -1
  143. package/dist/web/collections/default-map.js.map +1 -1
  144. package/dist/web/collections/default-weak-map.js.map +1 -1
  145. package/dist/web/collections/from.js +3 -3
  146. package/dist/web/collections/from.js.map +1 -1
  147. package/dist/web/collections/index.js.map +1 -1
  148. package/dist/web/draft.js +46 -11
  149. package/dist/web/draft.js.map +1 -1
  150. package/dist/web/event-bus.js +1 -1
  151. package/dist/web/event-bus.js.map +1 -1
  152. package/dist/web/functions.js +336 -0
  153. package/dist/web/functions.js.map +1 -0
  154. package/dist/web/index.js +1 -0
  155. package/dist/web/index.js.map +1 -1
  156. package/dist/web/key-value-pair.js.map +1 -1
  157. package/dist/web/lazy.js.map +1 -1
  158. package/dist/web/math.js +3 -0
  159. package/dist/web/math.js.map +1 -1
  160. package/dist/web/order.js.map +1 -1
  161. package/dist/web/parse.js +10 -1
  162. package/dist/web/parse.js.map +1 -1
  163. package/dist/web/patch.js.map +1 -1
  164. package/dist/web/stopwatch.js.map +1 -1
  165. package/dist/web/string.js +8 -5
  166. package/dist/web/string.js.map +1 -1
  167. package/dist/web/timer.js +1 -1
  168. package/dist/web/timer.js.map +1 -1
  169. package/dist/web/timespan.js +21 -8
  170. package/dist/web/timespan.js.map +1 -1
  171. package/dist/web/type-code.js.map +1 -1
  172. package/dist/web/type.js +20 -19
  173. package/dist/web/type.js.map +1 -1
  174. package/dist/web/types.js.map +1 -1
  175. package/dist/web/utilities.js +174 -39
  176. package/dist/web/utilities.js.map +1 -1
  177. package/package.json +66 -60
  178. package/src/array.ts +116 -84
  179. package/src/async-pool-executor.ts +107 -85
  180. package/src/browser/form-utilities.ts +32 -31
  181. package/src/browser/geo-location.ts +113 -113
  182. package/src/browser/native-bridge.ts +118 -116
  183. package/src/cancellable-promise.ts +102 -76
  184. package/src/clean-url-search-params.ts +36 -11
  185. package/src/collections/cache-dictionary.ts +115 -115
  186. package/src/collections/default-map.ts +48 -48
  187. package/src/collections/default-weak-map.ts +51 -51
  188. package/src/collections/from.ts +859 -859
  189. package/src/collections/index.ts +3 -3
  190. package/src/draft.ts +55 -16
  191. package/src/event-bus.ts +83 -83
  192. package/src/functions.ts +496 -0
  193. package/src/index.ts +1 -0
  194. package/src/key-value-pair.ts +24 -24
  195. package/src/lazy.ts +32 -32
  196. package/src/math.ts +33 -30
  197. package/src/order.ts +5 -5
  198. package/src/parse.ts +251 -240
  199. package/src/patch.ts +79 -79
  200. package/src/stopwatch.ts +43 -43
  201. package/src/string.ts +8 -5
  202. package/src/timer.ts +67 -67
  203. package/src/timespan.ts +412 -398
  204. package/src/type-code.ts +15 -15
  205. package/src/type.ts +372 -371
  206. package/src/types.ts +30 -30
  207. package/src/utilities.ts +653 -480
package/src/stopwatch.ts CHANGED
@@ -1,43 +1,43 @@
1
- import TimeSpan from "./timespan.js";
2
-
3
- export default class Stopwatch {
4
- private startTime: number | null = null;
5
- private elapsedTime: number | null = null;
6
-
7
- /*static measure<T>(callback: () => T, measure: { value: TimeSpan | null }): T {
8
- const stopwatch = new Stopwatch();
9
- stopwatch.start();
10
- try {
11
- return callback();
12
- } finally {
13
- stopwatch.stop();
14
- measure.value = stopwatch.getElapsedTime();
15
- }
16
- }*/
17
-
18
- start(): void {
19
- this.startTime = performance.now();
20
- this.elapsedTime = null;
21
- }
22
-
23
- stop(): void {
24
- if (this.startTime !== null) {
25
- this.elapsedTime = performance.now() - this.startTime;
26
- this.startTime = null;
27
- }
28
- }
29
-
30
- resume(): void {
31
- if (this.elapsedTime !== null) {
32
- this.startTime = performance.now() - this.elapsedTime;
33
- this.elapsedTime = null;
34
- }
35
- }
36
-
37
- getElapsedTime(): TimeSpan {
38
- if (this.startTime !== null) {
39
- return TimeSpan.fromMilliseconds(performance.now() - this.startTime);
40
- }
41
- return TimeSpan.fromMilliseconds(this.elapsedTime ?? 0.0);
42
- }
43
- }
1
+ import TimeSpan from "./timespan.js";
2
+
3
+ export default class Stopwatch {
4
+ private startTime: number | null = null;
5
+ private elapsedTime: number | null = null;
6
+
7
+ /*static measure<T>(callback: () => T, measure: { value: TimeSpan | null }): T {
8
+ const stopwatch = new Stopwatch();
9
+ stopwatch.start();
10
+ try {
11
+ return callback();
12
+ } finally {
13
+ stopwatch.stop();
14
+ measure.value = stopwatch.getElapsedTime();
15
+ }
16
+ }*/
17
+
18
+ start(): void {
19
+ this.startTime = performance.now();
20
+ this.elapsedTime = null;
21
+ }
22
+
23
+ stop(): void {
24
+ if (this.startTime !== null) {
25
+ this.elapsedTime = performance.now() - this.startTime;
26
+ this.startTime = null;
27
+ }
28
+ }
29
+
30
+ resume(): void {
31
+ if (this.elapsedTime !== null) {
32
+ this.startTime = performance.now() - this.elapsedTime;
33
+ this.elapsedTime = null;
34
+ }
35
+ }
36
+
37
+ getElapsedTime(): TimeSpan {
38
+ if (this.startTime !== null) {
39
+ return TimeSpan.fromMilliseconds(performance.now() - this.startTime);
40
+ }
41
+ return TimeSpan.fromMilliseconds(this.elapsedTime ?? 0.0);
42
+ }
43
+ }
package/src/string.ts CHANGED
@@ -36,7 +36,8 @@ export function ensureSuffix(str: string, suffix: string): string {
36
36
  export function format(template: string, ...args: any[]): string {
37
37
 
38
38
  let regex: RegExp;
39
- if (args.length === 1 && typeof args[0] === 'object') {
39
+ const hasNamedPlaceholders = /{(?!\d+})[^{}]+}/.test(template);
40
+ if (args.length === 1 && args[0] !== null && typeof args[0] === 'object' && hasNamedPlaceholders) {
40
41
  args = args[0];
41
42
  regex = /{(.+?)}/g;
42
43
  } else {
@@ -44,7 +45,9 @@ export function format(template: string, ...args: any[]): string {
44
45
  }
45
46
 
46
47
  return template.replace(regex, (match, key) => {
47
- return typeof args[key] !== 'undefined' ? args[key] : "";
48
+ return Object.prototype.hasOwnProperty.call(args, key) && typeof args[key] !== 'undefined'
49
+ ? args[key]
50
+ : "";
48
51
  });
49
52
  }
50
53
 
@@ -61,11 +64,11 @@ function toWords(str: string): string[] {
61
64
 
62
65
  return str
63
66
  // Insert a space between a lowercase/digit and an uppercase letter (camelCase -> camel Case)
64
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
67
+ .replace(/([\p{Ll}\p{N}])(\p{Lu})/gu, '$1 $2')
65
68
  // Insert a space between consecutive uppercase letters followed by a lowercase letter (XMLParser -> XML Parser)
66
- .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
69
+ .replace(/(\p{Lu}+)(\p{Lu}\p{Ll})/gu, '$1 $2')
67
70
  // Replace any non-alphanumeric character with a space
68
- .replace(/[^a-zA-Z0-9]+/g, ' ')
71
+ .replace(/[^\p{L}\p{N}]+/gu, ' ')
69
72
  .trim()
70
73
  .toLowerCase()
71
74
  .split(/\s+/)
package/src/timer.ts CHANGED
@@ -1,68 +1,68 @@
1
- /**
2
- * A class representing a timer that executes a callback function at a specified interval.
3
- */
4
- export default class Timer {
5
-
6
- private _callback: () => void;
7
- private _interval: number;
8
- private _intervalId: any | null;
9
-
10
- /**
11
- * @param callback Callback
12
- * @param interval Seconds between calls
13
- */
14
- constructor(callback: () => void, interval: number) {
15
- this._callback = callback;
16
- this._interval = interval;
17
- this._intervalId = null;
18
- }
19
-
20
-
21
- get running(): boolean {
22
- return this._intervalId !== null && this._intervalId !== undefined;
23
- }
24
-
25
- get interval(): number {
26
- return this._interval;
27
- }
28
-
29
- set interval(value: number) {
30
- if (value != this._interval) {
31
- this._interval = value;
32
- if (this.running)
33
- this.restart();
34
- }
35
- }
36
-
37
- get callback(): () => void {
38
- return this._callback;
39
- }
40
-
41
- set callback(value: () => void) {
42
- if (value != this._callback) {
43
- this._callback = value;
44
- }
45
- }
46
-
47
-
48
- start(): void {
49
- if (this._intervalId === null) {
50
- this._intervalId = setInterval(() => {
51
- if (this._callback != null)
52
- this._callback();
53
- }, this._interval);
54
- }
55
- }
56
-
57
- stop(): void {
58
- if (this._intervalId !== null) {
59
- clearInterval(this._intervalId);
60
- this._intervalId = null;
61
- }
62
- }
63
-
64
- restart(): void {
65
- this.stop();
66
- this.start();
67
- }
1
+ /**
2
+ * A class representing a timer that executes a callback function at a specified interval.
3
+ */
4
+ export default class Timer {
5
+
6
+ private _callback: () => void;
7
+ private _interval: number;
8
+ private _intervalId: any | null;
9
+
10
+ /**
11
+ * @param callback Callback
12
+ * @param interval Milliseconds between calls
13
+ */
14
+ constructor(callback: () => void, interval: number) {
15
+ this._callback = callback;
16
+ this._interval = interval;
17
+ this._intervalId = null;
18
+ }
19
+
20
+
21
+ get running(): boolean {
22
+ return this._intervalId !== null && this._intervalId !== undefined;
23
+ }
24
+
25
+ get interval(): number {
26
+ return this._interval;
27
+ }
28
+
29
+ set interval(value: number) {
30
+ if (value != this._interval) {
31
+ this._interval = value;
32
+ if (this.running)
33
+ this.restart();
34
+ }
35
+ }
36
+
37
+ get callback(): () => void {
38
+ return this._callback;
39
+ }
40
+
41
+ set callback(value: () => void) {
42
+ if (value != this._callback) {
43
+ this._callback = value;
44
+ }
45
+ }
46
+
47
+
48
+ start(): void {
49
+ if (this._intervalId === null) {
50
+ this._intervalId = setInterval(() => {
51
+ if (this._callback != null)
52
+ this._callback();
53
+ }, this._interval);
54
+ }
55
+ }
56
+
57
+ stop(): void {
58
+ if (this._intervalId !== null) {
59
+ clearInterval(this._intervalId);
60
+ this._intervalId = null;
61
+ }
62
+ }
63
+
64
+ restart(): void {
65
+ this.stop();
66
+ this.start();
67
+ }
68
68
  }