danholibraryjs 1.11.0 → 2.0.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 (210) hide show
  1. package/README.md +0 -1
  2. package/_package.github-release.json +6 -0
  3. package/_package.npm-release.json +6 -0
  4. package/dist/Classes/DanhoLogger.d.ts +23 -0
  5. package/dist/Classes/DanhoLogger.js +65 -0
  6. package/dist/Classes/Events/Event.d.ts +66 -66
  7. package/dist/Classes/Events/Event.js +114 -114
  8. package/dist/Classes/Events/EventCollection.d.ts +57 -57
  9. package/dist/Classes/Events/EventCollection.js +109 -109
  10. package/dist/Classes/Events/EventEmitter.d.ts +74 -74
  11. package/dist/Classes/Events/EventEmitter.js +97 -97
  12. package/dist/Classes/Events/index.d.ts +3 -3
  13. package/dist/Classes/Events/index.js +19 -19
  14. package/dist/Classes/Time/Date.d.ts +148 -147
  15. package/dist/Classes/Time/Date.js +241 -238
  16. package/dist/Classes/Time/Time.d.ts +66 -65
  17. package/dist/Classes/Time/Time.js +120 -117
  18. package/dist/Classes/Time/TimeProperties.d.ts +3 -3
  19. package/dist/Classes/Time/TimeProperties.js +2 -2
  20. package/dist/Classes/Time/TimeSpan.d.ts +123 -123
  21. package/dist/Classes/Time/TimeSpan.js +179 -179
  22. package/dist/Classes/Time/index.d.ts +4 -4
  23. package/dist/Classes/Time/index.js +20 -20
  24. package/dist/Classes/index.d.ts +4 -3
  25. package/dist/Classes/index.js +20 -19
  26. package/dist/Classes/store.d.ts +75 -75
  27. package/dist/Classes/store.js +84 -84
  28. package/dist/Extensions/Array/array.extension.d.ts +42 -0
  29. package/dist/Extensions/Array/array.extension.js +57 -0
  30. package/dist/Extensions/Array/crud.extension.d.ts +24 -0
  31. package/dist/Extensions/Array/crud.extension.js +28 -0
  32. package/dist/Extensions/Array/index.d.ts +6 -0
  33. package/dist/Extensions/Array/index.js +22 -0
  34. package/dist/Extensions/Array/loop.extension.d.ts +18 -0
  35. package/dist/Extensions/Array/loop.extension.js +23 -0
  36. package/dist/Extensions/Array/random.extension.d.ts +23 -0
  37. package/dist/Extensions/Array/random.extension.js +35 -0
  38. package/dist/Extensions/Array/sort.extension.d.ts +27 -0
  39. package/dist/Extensions/Array/sort.extension.js +31 -0
  40. package/dist/Extensions/Array/string.extension.d.ts +13 -0
  41. package/dist/Extensions/Array/string.extension.js +14 -0
  42. package/dist/Extensions/Function.d.ts +29 -14
  43. package/dist/Extensions/Function.js +23 -10
  44. package/dist/Extensions/Map.d.ts +54 -54
  45. package/dist/Extensions/Map.js +42 -42
  46. package/dist/Extensions/Number.d.ts +13 -0
  47. package/dist/Extensions/Number.js +40 -0
  48. package/dist/Extensions/Object/arrays.extension.d.ts +17 -0
  49. package/dist/Extensions/Object/arrays.extension.js +13 -0
  50. package/dist/Extensions/Object/booleans.extension.d.ts +18 -0
  51. package/dist/Extensions/Object/booleans.extension.js +37 -0
  52. package/dist/Extensions/Object/extracts.extension.d.ts +38 -0
  53. package/dist/Extensions/Object/extracts.extension.js +72 -0
  54. package/dist/Extensions/Object/index.d.ts +4 -49
  55. package/dist/Extensions/Object/index.js +20 -38
  56. package/dist/Extensions/Object/properties.d.ts +28 -28
  57. package/dist/Extensions/Object/properties.extension.d.ts +33 -0
  58. package/dist/Extensions/Object/properties.extension.js +21 -0
  59. package/dist/Extensions/Object/properties.js +20 -20
  60. package/dist/Extensions/String/case.extension.d.ts +12 -0
  61. package/dist/Extensions/String/case.extension.js +55 -0
  62. package/dist/Extensions/String/index.d.ts +1 -0
  63. package/dist/{Functions → Extensions/String}/index.js +17 -21
  64. package/dist/Extensions/index.d.ts +6 -17
  65. package/dist/Extensions/index.js +22 -30
  66. package/dist/Interfaces/ElementOptions.d.ts +15 -15
  67. package/dist/Interfaces/ElementOptions.js +2 -2
  68. package/dist/Interfaces/IReplacement.d.ts +12 -12
  69. package/dist/Interfaces/IReplacement.js +2 -2
  70. package/dist/Interfaces/index.d.ts +2 -2
  71. package/dist/Interfaces/index.js +18 -18
  72. package/dist/Types/Able.d.ts +16 -0
  73. package/dist/Types/Able.js +2 -0
  74. package/dist/Types/Array.d.ts +6 -0
  75. package/dist/Types/Array.js +2 -0
  76. package/dist/Types/BetterTypes.d.ts +9 -9
  77. package/dist/Types/BetterTypes.js +2 -2
  78. package/dist/Types/C#.d.ts +8 -0
  79. package/dist/Types/C#.js +2 -0
  80. package/dist/Types/Date.d.ts +6 -6
  81. package/dist/Types/Date.js +2 -2
  82. package/dist/Types/Events.d.ts +10 -10
  83. package/dist/Types/Events.js +2 -2
  84. package/dist/Types/Function.d.ts +5 -0
  85. package/dist/Types/Function.js +2 -0
  86. package/dist/Types/Object.d.ts +4 -0
  87. package/dist/Types/Object.js +2 -0
  88. package/dist/Types/PropertiesWith.d.ts +34 -13
  89. package/dist/Types/PropertiesWith.js +2 -2
  90. package/dist/Types/String.d.ts +1 -0
  91. package/dist/Types/String.js +2 -0
  92. package/dist/Types/TransformTypes.d.ts +22 -16
  93. package/dist/Types/TransformTypes.js +2 -2
  94. package/dist/Types/index.d.ts +24 -65
  95. package/dist/Types/index.js +27 -21
  96. package/dist/Utils/{ApiUtil → ApiUtils}/ApiTypes.d.ts +15 -15
  97. package/dist/Utils/{ApiUtil → ApiUtils}/ApiTypes.js +15 -15
  98. package/dist/Utils/{ApiUtil → ApiUtils}/RequestUtil.d.ts +19 -19
  99. package/dist/Utils/{ApiUtil → ApiUtils}/RequestUtil.js +73 -73
  100. package/dist/Utils/{ApiUtil → ApiUtils}/index.d.ts +20 -20
  101. package/dist/Utils/{ApiUtil → ApiUtils}/index.js +33 -33
  102. package/dist/Utils/ColorUtils.d.ts +11 -0
  103. package/dist/Utils/ColorUtils.js +93 -0
  104. package/dist/Utils/{FormUtil.d.ts → FormUtils.d.ts} +6 -6
  105. package/dist/Utils/{FormUtil.js → FormUtils.js} +35 -35
  106. package/dist/Utils/NumberUtils.d.ts +1 -0
  107. package/dist/Utils/NumberUtils.js +7 -0
  108. package/dist/Utils/PatcherUtils.d.ts +6 -0
  109. package/dist/Utils/PatcherUtils.js +80 -0
  110. package/dist/Utils/StringUtils.d.ts +3 -0
  111. package/dist/Utils/StringUtils.js +47 -0
  112. package/dist/Utils/TimeUtils/debounce.util.d.ts +22 -0
  113. package/dist/Utils/TimeUtils/debounce.util.js +78 -0
  114. package/dist/Utils/TimeUtils/functions.util.d.ts +4 -0
  115. package/dist/Utils/TimeUtils/functions.util.js +21 -0
  116. package/dist/Utils/TimeUtils/index.d.ts +15 -0
  117. package/dist/Utils/TimeUtils/index.js +34 -0
  118. package/dist/Utils/TimeUtils/throttle.util.d.ts +15 -0
  119. package/dist/Utils/TimeUtils/throttle.util.js +43 -0
  120. package/dist/Utils/index.d.ts +7 -2
  121. package/dist/Utils/index.js +23 -18
  122. package/dist/index.d.ts +4 -5
  123. package/dist/index.js +20 -21
  124. package/docs/Classes.md +78 -3
  125. package/docs/Extensions.md +219 -78
  126. package/docs/Types.md +202 -58
  127. package/docs/index.md +0 -1
  128. package/package.json +4 -2
  129. package/src/Classes/DanhoLogger.ts +78 -0
  130. package/src/Classes/Events/Event.ts +96 -96
  131. package/src/Classes/Events/EventCollection.ts +90 -90
  132. package/src/Classes/Events/EventEmitter.ts +68 -68
  133. package/src/Classes/Time/Date.ts +219 -216
  134. package/src/Classes/Time/Time.ts +109 -104
  135. package/src/Classes/Time/TimeSpan.ts +171 -171
  136. package/src/Classes/index.ts +1 -0
  137. package/src/Classes/store.ts +22 -22
  138. package/src/Extensions/Array/array.extension.ts +103 -0
  139. package/src/Extensions/Array/crud.extension.ts +46 -0
  140. package/src/Extensions/Array/index.ts +6 -0
  141. package/src/Extensions/Array/loop.extension.ts +38 -0
  142. package/src/Extensions/Array/random.extension.ts +56 -0
  143. package/src/Extensions/Array/sort.extension.ts +52 -0
  144. package/src/Extensions/Array/string.extension.ts +22 -0
  145. package/src/Extensions/Function.ts +37 -10
  146. package/src/Extensions/Map.ts +56 -56
  147. package/src/Extensions/Number.ts +50 -0
  148. package/src/Extensions/Object/arrays.extension.ts +27 -0
  149. package/src/Extensions/Object/booleans.extension.ts +46 -0
  150. package/src/Extensions/Object/extracts.extension.ts +102 -0
  151. package/src/Extensions/Object/index.ts +4 -82
  152. package/src/Extensions/Object/properties.extension.ts +59 -0
  153. package/src/Extensions/Object/properties.ts +36 -36
  154. package/src/Extensions/String/case.extension.ts +95 -0
  155. package/src/Extensions/String/index.ts +1 -0
  156. package/src/Extensions/index.ts +3 -21
  157. package/src/Interfaces/ElementOptions.ts +7 -7
  158. package/src/Interfaces/IReplacement.ts +2 -2
  159. package/src/Types/Able.ts +22 -0
  160. package/src/Types/Array.ts +7 -0
  161. package/src/Types/C#.ts +9 -0
  162. package/src/Types/Date.ts +1 -1
  163. package/src/Types/Events.ts +12 -12
  164. package/src/Types/Function.ts +10 -0
  165. package/src/Types/Object.ts +4 -0
  166. package/src/Types/PropertiesWith.ts +35 -4
  167. package/src/Types/String.ts +1 -0
  168. package/src/Types/TransformTypes.ts +21 -13
  169. package/src/Types/index.ts +7 -69
  170. package/src/Utils/{ApiUtil → ApiUtils}/ApiTypes.ts +2 -1
  171. package/src/Utils/{ApiUtil → ApiUtils}/index.ts +1 -1
  172. package/src/Utils/ColorUtils.ts +102 -0
  173. package/src/Utils/{FormUtil.ts → FormUtils.ts} +2 -2
  174. package/src/Utils/NumberUtils.ts +3 -0
  175. package/src/Utils/PatcherUtils.ts +111 -0
  176. package/src/Utils/StringUtils.ts +44 -0
  177. package/src/Utils/TimeUtils/debounce.util.ts +85 -0
  178. package/src/Utils/TimeUtils/functions.util.ts +18 -0
  179. package/src/Utils/TimeUtils/index.ts +9 -0
  180. package/src/Utils/TimeUtils/throttle.util.ts +44 -0
  181. package/src/Utils/index.ts +8 -2
  182. package/src/index.ts +0 -1
  183. package/dist/Extensions/Array.d.ts +0 -52
  184. package/dist/Extensions/Array.js +0 -51
  185. package/dist/Extensions/Document.d.ts +0 -27
  186. package/dist/Extensions/Document.js +0 -32
  187. package/dist/Extensions/String.d.ts +0 -36
  188. package/dist/Extensions/String.js +0 -25
  189. package/dist/Functions/CopyToClipboard.d.ts +0 -7
  190. package/dist/Functions/CopyToClipboard.js +0 -15
  191. package/dist/Functions/GetCSSProperty.d.ts +0 -15
  192. package/dist/Functions/GetCSSProperty.js +0 -26
  193. package/dist/Functions/GetNestedProperty.d.ts +0 -9
  194. package/dist/Functions/GetNestedProperty.js +0 -23
  195. package/dist/Functions/HTMLEvent.d.ts +0 -11
  196. package/dist/Functions/HTMLEvent.js +0 -14
  197. package/dist/Functions/SetNavigationSelected.d.ts +0 -9
  198. package/dist/Functions/SetNavigationSelected.js +0 -25
  199. package/dist/Functions/index.d.ts +0 -5
  200. package/docs/Functions.md +0 -61
  201. package/src/Extensions/Array.ts +0 -95
  202. package/src/Extensions/Document.ts +0 -58
  203. package/src/Extensions/String.ts +0 -54
  204. package/src/Functions/CopyToClipboard.ts +0 -10
  205. package/src/Functions/GetCSSProperty.ts +0 -27
  206. package/src/Functions/GetNestedProperty.ts +0 -29
  207. package/src/Functions/HTMLEvent.ts +0 -13
  208. package/src/Functions/SetNavigationSelected.ts +0 -19
  209. package/src/Functions/index.ts +0 -5
  210. /package/src/Utils/{ApiUtil → ApiUtils}/RequestUtil.ts +0 -0
package/README.md CHANGED
@@ -24,6 +24,5 @@ import { ... } from 'DanhoLibraryJS';
24
24
 
25
25
  * [Classes](/docs/Classes.md)
26
26
  * [Extensions](/docs/Extensions.md)
27
- * [Functions](/docs/Functions.md)
28
27
  * [Interfaces](/docs/Interfaces.md)
29
28
  * [Types](/docs/Types.md)
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "@danielsimonsen90/danholibraryjs",
3
+ "publishConfig": {
4
+ "registry": "https://npm.pkg.github.com/"
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "danholibraryjs",
3
+ "publishConfig": {
4
+ "registry": "https://registry.npmjs.org/"
5
+ }
6
+ }
@@ -0,0 +1,23 @@
1
+ type LogOptions = {
2
+ name?: string;
3
+ color?: string;
4
+ preferCollapsed?: boolean;
5
+ };
6
+ export default class DanhoLogger {
7
+ name: string;
8
+ color?: string;
9
+ private _preferCollapsed;
10
+ constructor(options?: LogOptions);
11
+ private _getPrefix;
12
+ private _log;
13
+ log(...args: any[]): this;
14
+ warn(...args: any[]): this;
15
+ error(...args: any[]): this;
16
+ group(...args: any[]): this;
17
+ groupCollapsed(...args: any[]): this;
18
+ groupEnd(...args: any[]): this;
19
+ time(label: string): this;
20
+ timeEnd(label: string): this;
21
+ table(data: any, columns?: string[]): this;
22
+ }
23
+ export {};
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class DanhoLogger {
4
+ name;
5
+ color;
6
+ _preferCollapsed;
7
+ constructor(options = {}) {
8
+ this.name = options.name || 'DanhoLogger';
9
+ this.color = options.color;
10
+ this._preferCollapsed = options.preferCollapsed ?? false;
11
+ }
12
+ _getPrefix() {
13
+ return {
14
+ prefix: `%c[${this.name}]`,
15
+ style: `color: ${this.color || 'inherit'}; font-weight: bold;`
16
+ };
17
+ }
18
+ _log(type, ...args) {
19
+ const { prefix, style } = this._getPrefix();
20
+ console[type](prefix, style, ...args);
21
+ return this;
22
+ }
23
+ log(...args) {
24
+ return this._log('log', ...args);
25
+ }
26
+ warn(...args) {
27
+ return this._log('warn', ...args);
28
+ }
29
+ error(...args) {
30
+ return this._log('error', ...args);
31
+ }
32
+ group(...args) {
33
+ const { prefix, style } = this._getPrefix();
34
+ const groupMethod = this._preferCollapsed ? console.groupCollapsed : console.group;
35
+ groupMethod(prefix, style, ...args);
36
+ return this;
37
+ }
38
+ groupCollapsed(...args) {
39
+ const { prefix, style } = this._getPrefix();
40
+ console.groupCollapsed(prefix, style, ...args);
41
+ return this;
42
+ }
43
+ groupEnd(...args) {
44
+ if (args.length)
45
+ console.log(...args);
46
+ console.groupEnd();
47
+ return this;
48
+ }
49
+ time(label) {
50
+ const { prefix } = this._getPrefix();
51
+ console.time(`${prefix} ${label}`);
52
+ return this;
53
+ }
54
+ timeEnd(label) {
55
+ const { prefix } = this._getPrefix();
56
+ console.timeEnd(`${prefix} ${label}`);
57
+ return this;
58
+ }
59
+ table(data, columns) {
60
+ this.log();
61
+ console.table(data, columns);
62
+ return this;
63
+ }
64
+ }
65
+ exports.default = DanhoLogger;
@@ -1,66 +1,66 @@
1
- import { BaseEvent, EventHandler } from "../../Types/Events";
2
- /**
3
- * Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEvent
4
- */
5
- export declare class Event<Events extends BaseEvent<string, Array<any>>, Name extends keyof Events = keyof Events> {
6
- /**
7
- * Base event for @see EventEmitter, @borrows EventHandler
8
- * @param name Name of event
9
- * @param listeners Listeners/Handlers to execute when emitted
10
- */
11
- constructor(name: Name, ...listeners: Array<EventHandler<Events, Name>>);
12
- /**Name of event*/
13
- name: Name;
14
- /**Listener limit - default: 0 */
15
- limit: number;
16
- /**Number of times event was emitted - default: 0*/
17
- get runs(): number;
18
- /**Timestamp of last emit - default: null*/
19
- get lastEmitted(): Date;
20
- /**@private Internal listeners array*/
21
- private _listeners;
22
- /**@private Internal runs*/
23
- private _runs;
24
- /**@private Internal lastEmitted*/
25
- private _lastEmitted;
26
- /**
27
- * Emits event and returns array of responses
28
- * @param args Arguments required for event listeners
29
- * @returns Return values of listeners' returns
30
- */
31
- emit(...args: Events[Name]): any[];
32
- /**
33
- * Adds listener to listeners array and returns self with new listener added
34
- * @param listener Listener to add
35
- * @param prepend Add first (true) or last (false) - default: false
36
- * @returns this with listener added
37
- *
38
- * @throws Limit error, if limit was reached
39
- */
40
- on(listener: EventHandler<Events, Name>, prepend?: boolean): this;
41
- /**
42
- * Like Event#on, adds listener to listeners array and returns self with new listener added, however removes listener once emitted
43
- * @param listener Listener to add
44
- * @param prepend Add first (true) or last (false) - default: false
45
- * @returns this with listener added
46
- *
47
- * @throws Limit error, if limit was reached
48
- */
49
- once(listener: EventHandler<Events, Name>, prepend?: boolean): this;
50
- /**
51
- * Returns true or false, depending if event includes listener
52
- * @param listener Listener to test
53
- * @returns True of false, depending if event includes listener
54
- */
55
- includes(listener: EventHandler<Events, Name>): boolean;
56
- /**
57
- * Removes listener from internal listeners array
58
- * @param listener Listener to remove. If none specified, all will be removed
59
- * @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
60
- * @returns this, without listener
61
- *
62
- * @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
63
- */
64
- off(listener?: EventHandler<Events, Name>, throwNotFoundError?: boolean): this;
65
- }
66
- export default Event;
1
+ import { BaseEvent, EventHandler } from "../../Types/Events";
2
+ /**
3
+ * Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEvent
4
+ */
5
+ export declare class Event<Events extends BaseEvent<string, Array<any>>, Name extends keyof Events = keyof Events> {
6
+ /**
7
+ * Base event for @see EventEmitter, @borrows EventHandler
8
+ * @param name Name of event
9
+ * @param listeners Listeners/Handlers to execute when emitted
10
+ */
11
+ constructor(name: Name, ...listeners: Array<EventHandler<Events, Name>>);
12
+ /**Name of event*/
13
+ name: Name;
14
+ /**Listener limit - default: 0 */
15
+ limit: number;
16
+ /**Number of times event was emitted - default: 0*/
17
+ get runs(): number;
18
+ /**Timestamp of last emit - default: null*/
19
+ get lastEmitted(): Date;
20
+ /**@private Internal listeners array*/
21
+ private _listeners;
22
+ /**@private Internal runs*/
23
+ private _runs;
24
+ /**@private Internal lastEmitted*/
25
+ private _lastEmitted;
26
+ /**
27
+ * Emits event and returns array of responses
28
+ * @param args Arguments required for event listeners
29
+ * @returns Return values of listeners' returns
30
+ */
31
+ emit(...args: Events[Name]): any[];
32
+ /**
33
+ * Adds listener to listeners array and returns self with new listener added
34
+ * @param listener Listener to add
35
+ * @param prepend Add first (true) or last (false) - default: false
36
+ * @returns this with listener added
37
+ *
38
+ * @throws Limit error, if limit was reached
39
+ */
40
+ on(listener: EventHandler<Events, Name>, prepend?: boolean): this;
41
+ /**
42
+ * Like Event#on, adds listener to listeners array and returns self with new listener added, however removes listener once emitted
43
+ * @param listener Listener to add
44
+ * @param prepend Add first (true) or last (false) - default: false
45
+ * @returns this with listener added
46
+ *
47
+ * @throws Limit error, if limit was reached
48
+ */
49
+ once(listener: EventHandler<Events, Name>, prepend?: boolean): this;
50
+ /**
51
+ * Returns true or false, depending if event includes listener
52
+ * @param listener Listener to test
53
+ * @returns True of false, depending if event includes listener
54
+ */
55
+ includes(listener: EventHandler<Events, Name>): boolean;
56
+ /**
57
+ * Removes listener from internal listeners array
58
+ * @param listener Listener to remove. If none specified, all will be removed
59
+ * @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
60
+ * @returns this, without listener
61
+ *
62
+ * @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
63
+ */
64
+ off(listener?: EventHandler<Events, Name>, throwNotFoundError?: boolean): this;
65
+ }
66
+ export default Event;
@@ -1,114 +1,114 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Event = void 0;
4
- /**
5
- * Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEvent
6
- */
7
- class Event {
8
- /**
9
- * Base event for @see EventEmitter, @borrows EventHandler
10
- * @param name Name of event
11
- * @param listeners Listeners/Handlers to execute when emitted
12
- */
13
- constructor(name, ...listeners) {
14
- this.name = name;
15
- this._listeners = listeners;
16
- this._lastEmitted = new Date();
17
- }
18
- /**Name of event*/
19
- name;
20
- /**Listener limit - default: 0 */
21
- limit = 0;
22
- /**Number of times event was emitted - default: 0*/
23
- get runs() {
24
- return this._runs;
25
- }
26
- /**Timestamp of last emit - default: null*/
27
- get lastEmitted() {
28
- return this._lastEmitted;
29
- }
30
- /**@private Internal listeners array*/
31
- _listeners;
32
- /**@private Internal runs*/
33
- _runs = 0;
34
- /**@private Internal lastEmitted*/
35
- _lastEmitted;
36
- /**
37
- * Emits event and returns array of responses
38
- * @param args Arguments required for event listeners
39
- * @returns Return values of listeners' returns
40
- */
41
- emit(...args) {
42
- this._runs++;
43
- this._lastEmitted = new Date();
44
- return this._listeners.map(listener => listener(...args));
45
- }
46
- /**
47
- * Adds listener to listeners array and returns self with new listener added
48
- * @param listener Listener to add
49
- * @param prepend Add first (true) or last (false) - default: false
50
- * @returns this with listener added
51
- *
52
- * @throws Limit error, if limit was reached
53
- */
54
- on(listener, prepend = false) {
55
- if (this.limit > 0 && this._listeners.length + 1 > this.limit) {
56
- throw new Error(`Event limit, ${this.limit}, reached for event ${this.name.toString()}!`);
57
- }
58
- if (prepend)
59
- this._listeners = [listener, ...this._listeners];
60
- else
61
- this._listeners.add(listener);
62
- return this;
63
- }
64
- /**
65
- * Like Event#on, adds listener to listeners array and returns self with new listener added, however removes listener once emitted
66
- * @param listener Listener to add
67
- * @param prepend Add first (true) or last (false) - default: false
68
- * @returns this with listener added
69
- *
70
- * @throws Limit error, if limit was reached
71
- */
72
- once(listener, prepend = false) {
73
- const handler = (...params) => {
74
- const result = listener(...params);
75
- this.off(handler);
76
- return result;
77
- };
78
- this.on(handler, prepend);
79
- return this;
80
- }
81
- /**
82
- * Returns true or false, depending if event includes listener
83
- * @param listener Listener to test
84
- * @returns True of false, depending if event includes listener
85
- */
86
- includes(listener) {
87
- return this._listeners.includes(listener);
88
- }
89
- /**
90
- * Removes listener from internal listeners array
91
- * @param listener Listener to remove. If none specified, all will be removed
92
- * @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
93
- * @returns this, without listener
94
- *
95
- * @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
96
- */
97
- off(listener, throwNotFoundError = false) {
98
- try {
99
- if (!listener)
100
- this._listeners = new Array();
101
- else if (!this._listeners.includes(listener))
102
- return this;
103
- else
104
- this._listeners.remove(listener);
105
- }
106
- catch (err) {
107
- if (throwNotFoundError)
108
- throw err;
109
- }
110
- return this;
111
- }
112
- }
113
- exports.Event = Event;
114
- exports.default = Event;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Event = void 0;
4
+ /**
5
+ * Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEvent
6
+ */
7
+ class Event {
8
+ /**
9
+ * Base event for @see EventEmitter, @borrows EventHandler
10
+ * @param name Name of event
11
+ * @param listeners Listeners/Handlers to execute when emitted
12
+ */
13
+ constructor(name, ...listeners) {
14
+ this.name = name;
15
+ this._listeners = listeners;
16
+ this._lastEmitted = new Date();
17
+ }
18
+ /**Name of event*/
19
+ name;
20
+ /**Listener limit - default: 0 */
21
+ limit = 0;
22
+ /**Number of times event was emitted - default: 0*/
23
+ get runs() {
24
+ return this._runs;
25
+ }
26
+ /**Timestamp of last emit - default: null*/
27
+ get lastEmitted() {
28
+ return this._lastEmitted;
29
+ }
30
+ /**@private Internal listeners array*/
31
+ _listeners;
32
+ /**@private Internal runs*/
33
+ _runs = 0;
34
+ /**@private Internal lastEmitted*/
35
+ _lastEmitted;
36
+ /**
37
+ * Emits event and returns array of responses
38
+ * @param args Arguments required for event listeners
39
+ * @returns Return values of listeners' returns
40
+ */
41
+ emit(...args) {
42
+ this._runs++;
43
+ this._lastEmitted = new Date();
44
+ return this._listeners.map(listener => listener(...args));
45
+ }
46
+ /**
47
+ * Adds listener to listeners array and returns self with new listener added
48
+ * @param listener Listener to add
49
+ * @param prepend Add first (true) or last (false) - default: false
50
+ * @returns this with listener added
51
+ *
52
+ * @throws Limit error, if limit was reached
53
+ */
54
+ on(listener, prepend = false) {
55
+ if (this.limit > 0 && this._listeners.length + 1 > this.limit) {
56
+ throw new Error(`Event limit, ${this.limit}, reached for event ${this.name.toString()}!`);
57
+ }
58
+ if (prepend)
59
+ this._listeners = [listener, ...this._listeners];
60
+ else
61
+ this._listeners.add(listener);
62
+ return this;
63
+ }
64
+ /**
65
+ * Like Event#on, adds listener to listeners array and returns self with new listener added, however removes listener once emitted
66
+ * @param listener Listener to add
67
+ * @param prepend Add first (true) or last (false) - default: false
68
+ * @returns this with listener added
69
+ *
70
+ * @throws Limit error, if limit was reached
71
+ */
72
+ once(listener, prepend = false) {
73
+ const handler = (...params) => {
74
+ const result = listener(...params);
75
+ this.off(handler);
76
+ return result;
77
+ };
78
+ this.on(handler, prepend);
79
+ return this;
80
+ }
81
+ /**
82
+ * Returns true or false, depending if event includes listener
83
+ * @param listener Listener to test
84
+ * @returns True of false, depending if event includes listener
85
+ */
86
+ includes(listener) {
87
+ return this._listeners.includes(listener);
88
+ }
89
+ /**
90
+ * Removes listener from internal listeners array
91
+ * @param listener Listener to remove. If none specified, all will be removed
92
+ * @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
93
+ * @returns this, without listener
94
+ *
95
+ * @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
96
+ */
97
+ off(listener, throwNotFoundError = false) {
98
+ try {
99
+ if (!listener)
100
+ this._listeners = new Array();
101
+ else if (!this._listeners.includes(listener))
102
+ return this;
103
+ else
104
+ this._listeners.remove(listener);
105
+ }
106
+ catch (err) {
107
+ if (throwNotFoundError)
108
+ throw err;
109
+ }
110
+ return this;
111
+ }
112
+ }
113
+ exports.Event = Event;
114
+ exports.default = Event;
@@ -1,57 +1,57 @@
1
- import { BaseEvent, EventHandler } from "../../Types/Events";
2
- import Event from './Event';
3
- /**
4
- * Collection of Events from @see EventEmitter
5
- * @borrows EventHandler
6
- * @borrows Event
7
- * @borrows BaseEvent
8
- */
9
- export declare class EventCollection<Events extends BaseEvent<string, Array<any>>> {
10
- constructor(events?: Map<keyof Events, EventHandler<Events>>);
11
- /**Amount of events stored*/
12
- get size(): number;
13
- /**@private Internal event collection*/
14
- private _events;
15
- /**@private limit of events*/
16
- private _limit;
17
- /**
18
- * Returns true if event is in collection
19
- * @param event Event name
20
- * @returns true if event is in collection
21
- */
22
- has<EventName extends keyof Events>(event: EventName): boolean;
23
- /**
24
- * Returns event matching event parameter
25
- * @param event Event name
26
- * @returns Event
27
- */
28
- get<EventName extends keyof Events>(event: EventName): Event<Events, EventName>;
29
- /**
30
- * Adds handler to event collection with name as key
31
- * @param name Event name
32
- * @param handler Handler for event
33
- * @returns this
34
- */
35
- add<EventName extends keyof Events>(name: EventName, handler: EventHandler<Events, keyof Events>, once?: boolean): this;
36
- /**
37
- * @summary clear(): Clears all events
38
- * @summary clear("all", myEventHandler): Removes myEventHandler from all events that have it
39
- * @summary clear("myEvent"): Clears all handlers tied to "myEvent"
40
- * @summary clear("myEvent", myEventHandler): Removes myEventHandler from "myEvent"
41
- *
42
- * @param name Event name | "all"
43
- * @param handler Specific handler to remove. If left blank, all handlers in name will be removed
44
- * @returns this
45
- */
46
- clear<EventName extends keyof Events>(name?: EventName | 'all', handler?: EventHandler): this;
47
- emit<Event extends keyof Events>(name: Event, ...args: Events[Event]): any[];
48
- /**
49
- * Limits how many events to accept using EventEmitter#on or EventEmitter#once
50
- * @param limit Limit of events to keep
51
- * @returns this with the new limit
52
- *
53
- * @throws Unknown event, if event name isn't recognized
54
- */
55
- limit<Event extends keyof Events>(eventName: 'all' | Event, limit: number): this | undefined;
56
- }
57
- export default EventCollection;
1
+ import { BaseEvent, EventHandler } from "../../Types/Events";
2
+ import Event from './Event';
3
+ /**
4
+ * Collection of Events from @see EventEmitter
5
+ * @borrows EventHandler
6
+ * @borrows Event
7
+ * @borrows BaseEvent
8
+ */
9
+ export declare class EventCollection<Events extends BaseEvent<string, Array<any>>> {
10
+ constructor(events?: Map<keyof Events, EventHandler<Events>>);
11
+ /**Amount of events stored*/
12
+ get size(): number;
13
+ /**@private Internal event collection*/
14
+ private _events;
15
+ /**@private limit of events*/
16
+ private _limit;
17
+ /**
18
+ * Returns true if event is in collection
19
+ * @param event Event name
20
+ * @returns true if event is in collection
21
+ */
22
+ has<EventName extends keyof Events>(event: EventName): boolean;
23
+ /**
24
+ * Returns event matching event parameter
25
+ * @param event Event name
26
+ * @returns Event
27
+ */
28
+ get<EventName extends keyof Events>(event: EventName): Event<Events, EventName>;
29
+ /**
30
+ * Adds handler to event collection with name as key
31
+ * @param name Event name
32
+ * @param handler Handler for event
33
+ * @returns this
34
+ */
35
+ add<EventName extends keyof Events>(name: EventName, handler: EventHandler<Events, keyof Events>, once?: boolean): this;
36
+ /**
37
+ * @summary clear(): Clears all events
38
+ * @summary clear("all", myEventHandler): Removes myEventHandler from all events that have it
39
+ * @summary clear("myEvent"): Clears all handlers tied to "myEvent"
40
+ * @summary clear("myEvent", myEventHandler): Removes myEventHandler from "myEvent"
41
+ *
42
+ * @param name Event name | "all"
43
+ * @param handler Specific handler to remove. If left blank, all handlers in name will be removed
44
+ * @returns this
45
+ */
46
+ clear<EventName extends keyof Events>(name?: EventName | 'all', handler?: EventHandler): this;
47
+ emit<Event extends keyof Events>(name: Event, ...args: Events[Event]): any[];
48
+ /**
49
+ * Limits how many events to accept using EventEmitter#on or EventEmitter#once
50
+ * @param limit Limit of events to keep
51
+ * @returns this with the new limit
52
+ *
53
+ * @throws Unknown event, if event name isn't recognized
54
+ */
55
+ limit<Event extends keyof Events>(eventName: 'all' | Event, limit: number): this | undefined;
56
+ }
57
+ export default EventCollection;