danholibraryjs 1.6.0 → 1.7.0
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.
- package/.gitattributes +2 -2
- package/README.md +12 -345
- package/Time.xlsx +0 -0
- package/dist/Classes/{Event.d.ts → Events/Event.d.ts} +9 -8
- package/dist/Classes/{Event.js → Events/Event.js} +17 -9
- package/dist/Classes/{EventCollection.d.ts → Events/EventCollection.d.ts} +9 -10
- package/dist/Classes/{EventCollection.js → Events/EventCollection.js} +27 -29
- package/dist/Classes/{EventEmitter.d.ts → Events/EventEmitter.d.ts} +5 -6
- package/dist/Classes/{EventEmitter.js → Events/EventEmitter.js} +6 -3
- package/dist/Classes/Events/index.d.ts +3 -0
- package/dist/Classes/Events/index.js +19 -0
- package/dist/Classes/Time/Date.d.ts +147 -0
- package/dist/Classes/Time/Date.js +238 -0
- package/dist/Classes/Time/Time.d.ts +65 -0
- package/dist/Classes/Time/Time.js +117 -0
- package/dist/Classes/Time/TimeProperties.d.ts +3 -0
- package/dist/{Interfaces/BaseEventInterface.js → Classes/Time/TimeProperties.js} +0 -0
- package/dist/Classes/Time/TimeSpan.d.ts +123 -0
- package/dist/Classes/Time/TimeSpan.js +179 -0
- package/dist/Classes/Time/index.d.ts +4 -0
- package/dist/Classes/Time/index.js +20 -0
- package/dist/Classes/index.d.ts +2 -3
- package/dist/Classes/index.js +7 -4
- package/dist/Extensions/Array.d.ts +31 -0
- package/dist/Extensions/Array.js +26 -0
- package/dist/Extensions/Map.d.ts +38 -0
- package/dist/Extensions/Map.js +31 -0
- package/dist/Extensions/Object.d.ts +16 -0
- package/dist/Extensions/Object.js +8 -0
- package/dist/Extensions/String.d.ts +26 -0
- package/dist/Extensions/String.js +17 -0
- package/dist/Extensions/index.d.ts +29 -0
- package/dist/Extensions/index.js +71 -0
- package/dist/Functions/GetCSSProperty.d.ts +15 -0
- package/dist/Functions/GetCSSProperty.js +26 -0
- package/dist/Functions/HTMLEvent.d.ts +6 -0
- package/dist/Functions/HTMLEvent.js +6 -0
- package/dist/Functions/SetNavigationSelected.js +2 -0
- package/dist/Functions/index.d.ts +1 -0
- package/dist/Functions/index.js +6 -1
- package/dist/Interfaces/ElementOptions.d.ts +9 -14
- package/dist/Interfaces/IReplacement.d.ts +1 -1
- package/dist/Interfaces/index.d.ts +0 -1
- package/dist/Interfaces/index.js +5 -2
- package/dist/Types/BetterTypes.d.ts +9 -0
- package/dist/{Interfaces/IHTMLEvent.js → Types/BetterTypes.js} +0 -0
- package/dist/Types/Date.d.ts +6 -0
- package/dist/Types/{EventHandler.js → Date.js} +0 -0
- package/dist/Types/Events.d.ts +10 -0
- package/dist/Types/{IElement.js → Events.js} +0 -0
- package/dist/Types/PropertiesWith.d.ts +13 -0
- package/dist/Types/{StringRegex.js → PropertiesWith.js} +0 -0
- package/dist/Types/TransformTypes.d.ts +13 -0
- package/dist/Types/TransformTypes.js +2 -0
- package/dist/Types/index.d.ts +31 -3
- package/dist/Types/index.js +10 -4
- package/dist/index.d.ts +5 -5
- package/dist/index.js +19 -10
- package/docs/Classes.md +455 -0
- package/docs/Extensions.md +146 -0
- package/docs/Functions.md +53 -0
- package/docs/Interfaces.md +34 -0
- package/docs/Types.md +129 -0
- package/docs/index.md +29 -0
- package/package.json +22 -21
- package/src/Classes/{Event.ts → Events/Event.ts} +19 -14
- package/src/Classes/Events/EventCollection.ts +109 -0
- package/src/Classes/{EventEmitter.ts → Events/EventEmitter.ts} +9 -10
- package/src/Classes/Events/index.ts +3 -0
- package/src/Classes/Time/Date.ts +264 -0
- package/src/Classes/Time/Time.ts +134 -0
- package/src/Classes/Time/TimeProperties.ts +3 -0
- package/src/Classes/Time/TimeSpan.ts +195 -0
- package/src/Classes/Time/index.ts +4 -0
- package/src/Classes/index.ts +2 -3
- package/src/Extensions/Array.ts +57 -0
- package/src/Extensions/Map.ts +73 -0
- package/src/Extensions/Object.ts +25 -0
- package/src/Extensions/String.ts +43 -0
- package/src/Extensions/index.ts +83 -0
- package/src/Functions/GetCSSProperty.ts +27 -0
- package/src/Functions/HTMLEvent.ts +6 -0
- package/src/Functions/SetNavigationSelected.ts +1 -0
- package/src/Functions/index.ts +2 -1
- package/src/Interfaces/ElementOptions.ts +15 -12
- package/src/Interfaces/IReplacement.ts +1 -1
- package/src/Interfaces/index.ts +1 -2
- package/src/Types/BetterTypes.ts +10 -0
- package/src/Types/Date.ts +7 -0
- package/src/Types/Events.ts +15 -0
- package/src/Types/PropertiesWith.ts +14 -0
- package/src/Types/TransformTypes.ts +18 -0
- package/src/Types/index.ts +36 -3
- package/src/index.ts +5 -6
- package/tsconfig.json +99 -7
- package/dist/Extensions.d.ts +0 -96
- package/dist/Extensions.js +0 -90
- package/dist/Interfaces/BaseEventInterface.d.ts +0 -7
- package/dist/Interfaces/IHTMLEvent.d.ts +0 -4
- package/dist/Types/EventHandler.d.ts +0 -8
- package/dist/Types/IElement.d.ts +0 -9
- package/dist/Types/StringRegex.d.ts +0 -2
- package/src/Classes/EventCollection.ts +0 -117
- package/src/Extensions.ts +0 -202
- package/src/Interfaces/BaseEventInterface.ts +0 -7
- package/src/Types/EventHandler.ts +0 -13
- package/src/Types/IElement.ts +0 -9
- package/src/Types/StringRegex.ts +0 -2
- package/test.js +0 -20
package/.gitattributes
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
# Auto detect text files and perform LF normalization
|
|
2
|
-
* text=auto
|
|
1
|
+
# Auto detect text files and perform LF normalization
|
|
2
|
+
* text=auto
|
package/README.md
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
# DanhoLibraryJS
|
|
2
|
+
|
|
2
3
|
[By DanielSimonsen90 // Danhosaur](https://github.com/DanielSimonsen90)
|
|
3
4
|
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
4
7
|
### Vanilla
|
|
8
|
+
|
|
5
9
|
```html
|
|
6
10
|
<script src="https://cdn.jsdelivr.net/gh/DanielSimonsen90/DanhoLibraryJS@latest/dist/index.js"></script>
|
|
7
11
|
```
|
|
8
12
|
|
|
9
13
|
### Node
|
|
10
|
-
|
|
14
|
+
|
|
15
|
+
```cmd
|
|
11
16
|
npm install danholibraryjs
|
|
12
17
|
```
|
|
13
18
|
|
|
@@ -15,348 +20,10 @@ npm install danholibraryjs
|
|
|
15
20
|
import { ... } from 'DanhoLibraryJS';
|
|
16
21
|
```
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
#### Extensions
|
|
20
|
-
```ts
|
|
21
|
-
class Document {
|
|
22
|
-
/**
|
|
23
|
-
* Creates an element like Document#createElement, however with construction options to assign values in construction instead of after construction.
|
|
24
|
-
* @param tagName HTMLElement tag name
|
|
25
|
-
* @param options Construction options, instead of assigning values after construction
|
|
26
|
-
*/
|
|
27
|
-
createProperElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementOptions<K>): HTMLElementTagNameMap[K];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
class HTMLCollection {
|
|
31
|
-
/**Converts HTMLCollection to Element[]*/
|
|
32
|
-
array(): Element[];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
class Array<T> {
|
|
36
|
-
/**
|
|
37
|
-
* Pushes items to array and returns self with new items
|
|
38
|
-
* @param items Items to add to array
|
|
39
|
-
*/
|
|
40
|
-
add(...items: Array<T>): this
|
|
41
|
-
/**
|
|
42
|
-
* Removes item from array and returns self without item
|
|
43
|
-
* @param item Item to remove
|
|
44
|
-
*/
|
|
45
|
-
remove(item: T): this
|
|
46
|
-
/**
|
|
47
|
-
* Returns a random element from array
|
|
48
|
-
*/
|
|
49
|
-
random(): T
|
|
50
|
-
/**
|
|
51
|
-
* Returns item matching index. If negative number, subtracts number from length
|
|
52
|
-
* @param i Index of item
|
|
53
|
-
*/
|
|
54
|
-
index(i: number): T
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
interface Map<K, V> {
|
|
58
|
-
/**Converts map into Array<[Key, Value]>*/
|
|
59
|
-
array(): [K, V][]
|
|
60
|
-
/**
|
|
61
|
-
* Maps values into new types of generics
|
|
62
|
-
* @param callback Callbacking function to map values
|
|
63
|
-
*/
|
|
64
|
-
map<EK, EV>(callback: (value: V, key?: K, index?: number, map?: this) => [EK, EV]): Map<EK, EV>
|
|
65
|
-
/**
|
|
66
|
-
* Returns array of "accepted" values. Criteria defined in callback param
|
|
67
|
-
* @param callback Callbacking function to filter away unwanted values
|
|
68
|
-
*/
|
|
69
|
-
filter(callback: (value: V, key?: K, index?: number, map?: Map<K, V>) => boolean): Map<K, V>
|
|
70
|
-
/**Converts map into array of keys*/
|
|
71
|
-
keyArr(): Array<K>
|
|
72
|
-
/**Converts map into array of values*/
|
|
73
|
-
valueArr(): Array<V>
|
|
74
|
-
/**
|
|
75
|
-
* Returns first [key, value] match to callback param
|
|
76
|
-
* @param callback Callbacking function to find KeyValuePair
|
|
77
|
-
*/
|
|
78
|
-
find(callback: (value: V, key?: K, index?: number, map?: Map<K, V>) => boolean): [K, V]
|
|
79
|
-
/**
|
|
80
|
-
* Whether or not map includes a value (value version of Map#has)
|
|
81
|
-
* @param value Value that may be includded in map
|
|
82
|
-
* @param fromIndex Start looking for value from specific index+. Default: 0
|
|
83
|
-
*/
|
|
84
|
-
includes(value: V, fromIndex?: number): boolean;
|
|
85
|
-
}
|
|
86
|
-
interface String {
|
|
87
|
-
/**Uppercases first letter of string*/
|
|
88
|
-
toPascalCase(): string
|
|
89
|
-
/**
|
|
90
|
-
* Replaces "replacer" (default: ' ') with "replacement" (default: '_')
|
|
91
|
-
* @param replaceOptions This is practically your stereotypical String.replace, if you really want it to be
|
|
92
|
-
*/
|
|
93
|
-
toSnakeCase(replaceOptions?: IReplacement): string
|
|
94
|
-
/**
|
|
95
|
-
* Replaces "replacer" (default: ' ') with "replacement" (default: '-')
|
|
96
|
-
* @param replaceOptions This is practically your stereotypical String.replace, if you really want it to be
|
|
97
|
-
*/
|
|
98
|
-
toKebabCase(replaceOptions?: IReplacement): string
|
|
99
|
-
/**
|
|
100
|
-
* String.substring but accepting negative numbers to cut from length
|
|
101
|
-
* @param start Start of string. 0 indexed
|
|
102
|
-
* @param end End of string. 0 indexed, if negative number, substracts number from length
|
|
103
|
-
*/
|
|
104
|
-
clip(start: number, end?: number): string
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
#### Functions
|
|
109
|
-
```ts
|
|
110
|
-
/**
|
|
111
|
-
* Copies value to clipboard and alerts a response, if response is defined
|
|
112
|
-
* @param value Value to clipboard
|
|
113
|
-
* @param response Alerts if response is given
|
|
114
|
-
*/
|
|
115
|
-
async function CopyToClipboard(value: string, response?: string): Promise<void>;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Appends classes to header's "a" elements, when navigation to "a"'s page is selected
|
|
119
|
-
* @param query The query selector for Document.querySelector
|
|
120
|
-
* @param currentPageClasses Class(es) to append header's "a" elements
|
|
121
|
-
*
|
|
122
|
-
* @borrows Document.querySelector
|
|
123
|
-
*/
|
|
124
|
-
function SetNavigationSelected(query: string, ...currentPageClasses: string[]): void;
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
#### Classes
|
|
128
|
-
```ts
|
|
129
|
-
/**Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEventInterface as BaseEvent*/
|
|
130
|
-
class Event<
|
|
131
|
-
Event extends BaseEvent,
|
|
132
|
-
Name extends keyof Events = keyof Events,
|
|
133
|
-
Params = Events[Name]
|
|
134
|
-
> {
|
|
135
|
-
/**
|
|
136
|
-
* Base event for @see EventEmitter, @borrows EventHandler
|
|
137
|
-
* @param name Name of event
|
|
138
|
-
* @param listeners Listeners/Handlers to execute when emitted
|
|
139
|
-
*/
|
|
140
|
-
constructor(name: Name, ...listeners: Array<EventHandler<Events, Name>>);
|
|
141
|
-
|
|
142
|
-
/**Name of event*/
|
|
143
|
-
public name: Name;
|
|
144
|
-
/**Listener limit - default: 0 */
|
|
145
|
-
public limit = 0;
|
|
146
|
-
/**Number of times event was emitted - default: 0*/
|
|
147
|
-
public get runs: number;
|
|
148
|
-
/**Timestamp of last emit - default: null*/
|
|
149
|
-
public get lastEmitted: Date;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Emits event and returns array of responses
|
|
153
|
-
* @param args Arguments required for event listeners
|
|
154
|
-
* @returns Return values of listeners' returns
|
|
155
|
-
*/
|
|
156
|
-
public emit(params: Params): any[];
|
|
157
|
-
/**
|
|
158
|
-
* Adds listener to listeners array and returns self with new listener added
|
|
159
|
-
* @param listener Listener to add
|
|
160
|
-
* @param prepend Add first (true) or last (false) - default: false
|
|
161
|
-
* @returns this with listener added
|
|
162
|
-
*
|
|
163
|
-
* @throws Limit error, if limit was reached
|
|
164
|
-
*/
|
|
165
|
-
public on(listener: EventHandler<Events, Name>, prepend = false): this
|
|
166
|
-
/**
|
|
167
|
-
* Like Event#on, adds listener to listeners array and returns self with new listener added, however removes listener once emitted
|
|
168
|
-
* @param listener Listener to add
|
|
169
|
-
* @param prepend Add first (true) or last (false) - default: false
|
|
170
|
-
* @returns this with listener added
|
|
171
|
-
*
|
|
172
|
-
* @throws Limit error, if limit was reached
|
|
173
|
-
*/
|
|
174
|
-
public once(listener: EventHandler<Events, Name>, prepend = false): this;
|
|
175
|
-
/**
|
|
176
|
-
* Returns true or false, depending if event includes listener
|
|
177
|
-
* @param listener Listener to test
|
|
178
|
-
* @returns True of false, depending if event includes listener
|
|
179
|
-
*/
|
|
180
|
-
public includes(listener: EventHandler<Events, Name>): boolean;
|
|
181
|
-
/**
|
|
182
|
-
* Removes listener from internal listeners array
|
|
183
|
-
* @param listener Listener to remove
|
|
184
|
-
* @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
|
|
185
|
-
* @returns this, without listener
|
|
186
|
-
*
|
|
187
|
-
* @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
|
|
188
|
-
*/
|
|
189
|
-
public off(listener: EventHandler<Events, Name>, throwNotFoundError = false): this;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Collection of Events from @see EventEmitter
|
|
194
|
-
* @borrows EventHandler
|
|
195
|
-
* @borrows Event
|
|
196
|
-
* @borrows BaseEvent
|
|
197
|
-
*/
|
|
198
|
-
class EventCollection<Events extends BaseEvent> {
|
|
199
|
-
/**Events to add in construction - Map<eventName, eventHandlers>*/
|
|
200
|
-
constructor(events?: Map<keyof Events, EventHandler<Events, keyof Events>[]>);
|
|
201
|
-
/**Amount of events stored*/
|
|
202
|
-
readonly size: number;
|
|
203
|
-
/**
|
|
204
|
-
* Returns true if event is in collection
|
|
205
|
-
* @param event Event name
|
|
206
|
-
* @returns true if event is in collection
|
|
207
|
-
*/
|
|
208
|
-
has(event: keyof Events): boolean;
|
|
209
|
-
/**
|
|
210
|
-
* Returns all event handlers for event name. T is return type for event
|
|
211
|
-
* @param event Event name
|
|
212
|
-
* @returns Event object stored
|
|
213
|
-
*/
|
|
214
|
-
get(event: keyof Events): Event<Events>
|
|
215
|
-
/**
|
|
216
|
-
* Adds handler to event collection with name as key
|
|
217
|
-
* @param name Event name
|
|
218
|
-
* @param handler Handler for event
|
|
219
|
-
* @param once Whether or not handler only should run once or all times
|
|
220
|
-
* @returns this
|
|
221
|
-
*/
|
|
222
|
-
add(name: keyof Events, handler: EventHandler<Events, keyof Events>, once = false): this;
|
|
223
|
-
/**
|
|
224
|
-
* @summary clear(): Clears all events
|
|
225
|
-
* @summary clear("all", myEventHandler): Removes myEventHandler from all events that have it
|
|
226
|
-
* @summary clear("myEvent"): Clears all handlers tied to "myEvent"
|
|
227
|
-
* @summary clear("myEvent", myEventHandler): Removes myEventHandler from "myEvent"
|
|
228
|
-
*
|
|
229
|
-
* @param name Event name | "all"
|
|
230
|
-
* @param handler Specific handler to remove. If left blank, all handlers in name will be removed
|
|
231
|
-
* @returns this
|
|
232
|
-
*/
|
|
233
|
-
clear(name?: keyof Events | "all" = "all", handler?: EventHandler<Events, keyof Events>): this;
|
|
234
|
-
/**
|
|
235
|
-
* Emits event matching name, and provides args param to saved handers. Returns result from all handlers
|
|
236
|
-
* @param name Event name
|
|
237
|
-
* @param args Arguments for event handlers
|
|
238
|
-
* @returns Result from all handlers
|
|
239
|
-
*/
|
|
240
|
-
emit<Event extends keyof Events>(name: Event, args: Events[Event]): any[];
|
|
241
|
-
/**
|
|
242
|
-
* Limits how many events to accept using EventEmitter#on or EventEmitter#once
|
|
243
|
-
* @param limit Limit of events to keep
|
|
244
|
-
* @returns this with the new limit
|
|
245
|
-
*
|
|
246
|
-
* @throws Unknown event, if event name isn't recognized
|
|
247
|
-
*/
|
|
248
|
-
limit<Event extends keyof Events>(event: 'all' | Event, limit: number): this
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Traditional Node.js EventEmitter for vanilla JavaScript
|
|
253
|
-
* @borrows EventCollection
|
|
254
|
-
* @borrows BaseEvent
|
|
255
|
-
* @borrows EventHandler
|
|
256
|
-
*/
|
|
257
|
-
class EventEmitter<Events extends BaseEvent> {
|
|
258
|
-
/**@param events Map<name: string, handlers: EventHandler[]>*/
|
|
259
|
-
constructor(events?: Map<keyof Events, EventHandler<Events, keyof Events>[]>);
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Adds listener to event collection, and runs listener when event is emitted
|
|
263
|
-
* @param event Event to handle
|
|
264
|
-
* @param listener Callback function to run, when event occurs
|
|
265
|
-
* @returns this
|
|
266
|
-
*/
|
|
267
|
-
on<Return extends any, Event extends keyof Events>(event: Event, listener: EventHandler<Events, Event, Return>): this;
|
|
268
|
-
/**
|
|
269
|
-
* Adds listener to event collection, and runs listener once when event is emitted
|
|
270
|
-
* @param event Event to handle
|
|
271
|
-
* @param listener Callback function to run, when event occurs
|
|
272
|
-
* @returns this
|
|
273
|
-
*/
|
|
274
|
-
once<Return extends any, Event extends keyof Events>(event: Event, listener: EventHandler<Events, Event, Return>): this;
|
|
275
|
-
/**
|
|
276
|
-
* Removes listener(s) from event
|
|
277
|
-
* @param event Event to get collection of listeners | "all"
|
|
278
|
-
* @param listener If left null, removes all listeners tied to event, else only removes listener from event
|
|
279
|
-
* @returns this
|
|
280
|
-
*/
|
|
281
|
-
off<Event extends keyof Events>(event: Event | string = 'all', listener?: EventHandler<Events, Event>): this;
|
|
282
|
-
/**
|
|
283
|
-
* Emits event and runs all listeners tied to event
|
|
284
|
-
* @param event Event to emit
|
|
285
|
-
* @param args Arguments for the event
|
|
286
|
-
* @fires event
|
|
287
|
-
* @returns Array of listeners' reponses
|
|
288
|
-
*/
|
|
289
|
-
emit<ReturnType extends any, Event extends keyof Events>(event: Event, args: Events[Event]): ReturnType[];
|
|
290
|
-
/**
|
|
291
|
-
* Limits how many events to accept using EventEmitter#on or EventEmitter#once
|
|
292
|
-
* @param event: Specific event to limit, or by default, 'all'
|
|
293
|
-
* @param limit Limit of events to keep. If you want to limit amount of events saved, use 'all'.
|
|
294
|
-
* @returns this with the new limit
|
|
295
|
-
*/
|
|
296
|
-
public limit<Event extends keyof Events>(event: 'all' | Event, limit: number): this;
|
|
297
|
-
}
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
#### Interfaces
|
|
301
|
-
```ts
|
|
302
|
-
/**
|
|
303
|
-
* Default eventhandler mapper. EventEmitter.on(keyof this, this[keyof this])
|
|
304
|
-
*/
|
|
305
|
-
interface BaseEvent {
|
|
306
|
-
error: [err: Error]
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Construction options when creating an HTML element using:
|
|
311
|
-
* @see Document.createProperElement
|
|
312
|
-
* @borwwos IElement
|
|
313
|
-
*/
|
|
314
|
-
interface ElementOptions<K extends keyof HTMLElementTagNameMap> {
|
|
315
|
-
/**css classes to give the element*/
|
|
316
|
-
classes?: string[];
|
|
317
|
-
/**attributes to give the element*/
|
|
318
|
-
attributes?: [string, string][];
|
|
319
|
-
/**Children of the element*/
|
|
320
|
-
children?: IElement | IElement[];
|
|
321
|
-
/**Events for the element to listen to
|
|
322
|
-
* @use HTMLEvent<Event, RetrunType>(name: Event, handler: (e: Event) => ReturnType)
|
|
323
|
-
*/
|
|
324
|
-
events?: Array<{ name: string, handler: (e: Event) => any }>
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Replacement tool for
|
|
328
|
-
* @see String.toSnakeCase
|
|
329
|
-
* @see String.toKebabCase
|
|
330
|
-
* @borrows StringRegex
|
|
331
|
-
*/
|
|
332
|
-
interface IReplacement {
|
|
333
|
-
replacer?: StringRegex,
|
|
334
|
-
replacement?: string
|
|
335
|
-
}
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
#### Types
|
|
339
|
-
```ts
|
|
340
|
-
/**
|
|
341
|
-
* Eventhandler type for:
|
|
342
|
-
* @see EventCollection
|
|
343
|
-
* @borrows BaseEvent
|
|
344
|
-
*/
|
|
345
|
-
type EventHandler<
|
|
346
|
-
Events extends BaseEvent,
|
|
347
|
-
Event extends keyof Events,
|
|
348
|
-
ReturnType = any
|
|
349
|
-
> = (args: Events[Event]) => ReturnType;
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Used for HTMLElement.append in ElementOptions, Document.createProperElement.
|
|
353
|
-
* IElement accepts HTML Elements or HTMl-like strings.
|
|
354
|
-
*
|
|
355
|
-
* @see HTMLElement.append
|
|
356
|
-
* @see Document.createProperElement
|
|
357
|
-
*/
|
|
358
|
-
type IElement = HTMLElement | string;
|
|
23
|
+
## Documentation
|
|
359
24
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
25
|
+
* [Classes](/docs/Classes.md)
|
|
26
|
+
* [Extensions](/docs/Extensions.md)
|
|
27
|
+
* [Functions](/docs/Functions.md)
|
|
28
|
+
* [Interfaces](/docs/Interfaces.md)
|
|
29
|
+
* [Types](/docs/Types.md)
|
package/Time.xlsx
ADDED
|
Binary file
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import BaseEvent from "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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> {
|
|
5
6
|
/**
|
|
6
7
|
* Base event for @see EventEmitter, @borrows EventHandler
|
|
7
8
|
* @param name Name of event
|
|
@@ -24,10 +25,10 @@ export declare class Event<Events extends BaseEvent, Name extends keyof Events =
|
|
|
24
25
|
private _lastEmitted;
|
|
25
26
|
/**
|
|
26
27
|
* Emits event and returns array of responses
|
|
27
|
-
* @param
|
|
28
|
+
* @param args Arguments required for event listeners
|
|
28
29
|
* @returns Return values of listeners' returns
|
|
29
30
|
*/
|
|
30
|
-
emit(
|
|
31
|
+
emit(...args: Events[Name]): any[];
|
|
31
32
|
/**
|
|
32
33
|
* Adds listener to listeners array and returns self with new listener added
|
|
33
34
|
* @param listener Listener to add
|
|
@@ -54,12 +55,12 @@ export declare class Event<Events extends BaseEvent, Name extends keyof Events =
|
|
|
54
55
|
includes(listener: EventHandler<Events, Name>): boolean;
|
|
55
56
|
/**
|
|
56
57
|
* Removes listener from internal listeners array
|
|
57
|
-
* @param listener Listener to remove
|
|
58
|
+
* @param listener Listener to remove. If none specified, all will be removed
|
|
58
59
|
* @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
|
|
59
60
|
* @returns this, without listener
|
|
60
61
|
*
|
|
61
62
|
* @throws NotFound, if throwNotFoundError is true, and internal listeners array doesn't include listener provided
|
|
62
63
|
*/
|
|
63
|
-
off(listener
|
|
64
|
+
off(listener?: EventHandler<Events, Name>, throwNotFoundError?: boolean): this;
|
|
64
65
|
}
|
|
65
66
|
export default Event;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Event = void 0;
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Base event for @see EventEmitter, @borrows EventHandler @borrows BaseEvent
|
|
6
|
+
*/
|
|
5
7
|
class Event {
|
|
6
8
|
/**
|
|
7
9
|
* Base event for @see EventEmitter, @borrows EventHandler
|
|
@@ -11,6 +13,7 @@ class Event {
|
|
|
11
13
|
constructor(name, ...listeners) {
|
|
12
14
|
this.name = name;
|
|
13
15
|
this._listeners = listeners;
|
|
16
|
+
this._lastEmitted = new Date();
|
|
14
17
|
}
|
|
15
18
|
/**Name of event*/
|
|
16
19
|
name;
|
|
@@ -29,16 +32,16 @@ class Event {
|
|
|
29
32
|
/**@private Internal runs*/
|
|
30
33
|
_runs = 0;
|
|
31
34
|
/**@private Internal lastEmitted*/
|
|
32
|
-
_lastEmitted
|
|
35
|
+
_lastEmitted;
|
|
33
36
|
/**
|
|
34
37
|
* Emits event and returns array of responses
|
|
35
|
-
* @param
|
|
38
|
+
* @param args Arguments required for event listeners
|
|
36
39
|
* @returns Return values of listeners' returns
|
|
37
40
|
*/
|
|
38
|
-
emit(
|
|
41
|
+
emit(...args) {
|
|
39
42
|
this._runs++;
|
|
40
43
|
this._lastEmitted = new Date();
|
|
41
|
-
return this._listeners.map(listener => listener(
|
|
44
|
+
return this._listeners.map(listener => listener(...args));
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
47
|
* Adds listener to listeners array and returns self with new listener added
|
|
@@ -67,8 +70,8 @@ class Event {
|
|
|
67
70
|
* @throws Limit error, if limit was reached
|
|
68
71
|
*/
|
|
69
72
|
once(listener, prepend = false) {
|
|
70
|
-
const handler = (params) => {
|
|
71
|
-
const result = listener(params);
|
|
73
|
+
const handler = (...params) => {
|
|
74
|
+
const result = listener(...params);
|
|
72
75
|
this.off(handler);
|
|
73
76
|
return result;
|
|
74
77
|
};
|
|
@@ -85,7 +88,7 @@ class Event {
|
|
|
85
88
|
}
|
|
86
89
|
/**
|
|
87
90
|
* Removes listener from internal listeners array
|
|
88
|
-
* @param listener Listener to remove
|
|
91
|
+
* @param listener Listener to remove. If none specified, all will be removed
|
|
89
92
|
* @param throwNotFoundError Throw error if listener isn't in listeners array - default: false
|
|
90
93
|
* @returns this, without listener
|
|
91
94
|
*
|
|
@@ -93,7 +96,12 @@ class Event {
|
|
|
93
96
|
*/
|
|
94
97
|
off(listener, throwNotFoundError = false) {
|
|
95
98
|
try {
|
|
96
|
-
|
|
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);
|
|
97
105
|
}
|
|
98
106
|
catch (err) {
|
|
99
107
|
if (throwNotFoundError)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import BaseEvent from "
|
|
2
|
-
import EventHandler from "../Types/EventHandler";
|
|
1
|
+
import { BaseEvent, EventHandler } from "../../Types/Events";
|
|
3
2
|
import Event from './Event';
|
|
4
3
|
/**
|
|
5
4
|
* Collection of Events from @see EventEmitter
|
|
@@ -7,8 +6,8 @@ import Event from './Event';
|
|
|
7
6
|
* @borrows Event
|
|
8
7
|
* @borrows BaseEvent
|
|
9
8
|
*/
|
|
10
|
-
export declare class EventCollection<Events extends BaseEvent
|
|
11
|
-
constructor(events?: Map<keyof Events, EventHandler<Events
|
|
9
|
+
export declare class EventCollection<Events extends BaseEvent<string, Array<any>>> {
|
|
10
|
+
constructor(events?: Map<keyof Events, EventHandler<Events>>);
|
|
12
11
|
/**Amount of events stored*/
|
|
13
12
|
get size(): number;
|
|
14
13
|
/**@private Internal event collection*/
|
|
@@ -20,20 +19,20 @@ export declare class EventCollection<Events extends BaseEvent> {
|
|
|
20
19
|
* @param event Event name
|
|
21
20
|
* @returns true if event is in collection
|
|
22
21
|
*/
|
|
23
|
-
has(event:
|
|
22
|
+
has<EventName extends keyof Events>(event: EventName): boolean;
|
|
24
23
|
/**
|
|
25
24
|
* Returns event matching event parameter
|
|
26
25
|
* @param event Event name
|
|
27
26
|
* @returns Event
|
|
28
27
|
*/
|
|
29
|
-
get(event:
|
|
28
|
+
get<EventName extends keyof Events>(event: EventName): Event<Events, EventName>;
|
|
30
29
|
/**
|
|
31
30
|
* Adds handler to event collection with name as key
|
|
32
31
|
* @param name Event name
|
|
33
32
|
* @param handler Handler for event
|
|
34
33
|
* @returns this
|
|
35
34
|
*/
|
|
36
|
-
add(name:
|
|
35
|
+
add<EventName extends keyof Events>(name: EventName, handler: EventHandler<Events, keyof Events>, once?: boolean): this;
|
|
37
36
|
/**
|
|
38
37
|
* @summary clear(): Clears all events
|
|
39
38
|
* @summary clear("all", myEventHandler): Removes myEventHandler from all events that have it
|
|
@@ -44,8 +43,8 @@ export declare class EventCollection<Events extends BaseEvent> {
|
|
|
44
43
|
* @param handler Specific handler to remove. If left blank, all handlers in name will be removed
|
|
45
44
|
* @returns this
|
|
46
45
|
*/
|
|
47
|
-
clear(name?:
|
|
48
|
-
emit<Event extends keyof Events>(name: Event, args: Events[Event]): any[];
|
|
46
|
+
clear<EventName extends keyof Events>(name?: EventName | 'all', handler?: EventHandler): this;
|
|
47
|
+
emit<Event extends keyof Events>(name: Event, ...args: Events[Event]): any[];
|
|
49
48
|
/**
|
|
50
49
|
* Limits how many events to accept using EventEmitter#on or EventEmitter#once
|
|
51
50
|
* @param limit Limit of events to keep
|
|
@@ -53,6 +52,6 @@ export declare class EventCollection<Events extends BaseEvent> {
|
|
|
53
52
|
*
|
|
54
53
|
* @throws Unknown event, if event name isn't recognized
|
|
55
54
|
*/
|
|
56
|
-
limit<Event extends keyof Events>(
|
|
55
|
+
limit<Event extends keyof Events>(eventName: 'all' | Event, limit: number): this | undefined;
|
|
57
56
|
}
|
|
58
57
|
export default EventCollection;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.EventCollection = void 0;
|
|
4
|
-
const Event_1 = require("./Event");
|
|
7
|
+
const Event_1 = __importDefault(require("./Event"));
|
|
5
8
|
/**
|
|
6
9
|
* Collection of Events from @see EventEmitter
|
|
7
10
|
* @borrows EventHandler
|
|
@@ -12,7 +15,7 @@ class EventCollection {
|
|
|
12
15
|
constructor(events) {
|
|
13
16
|
this._events = !events ?
|
|
14
17
|
new Map() :
|
|
15
|
-
events.array().reduce((result, [event, handlers]) => result.set(event, new Event_1.default(event,
|
|
18
|
+
events.array().reduce((result, [event, handlers]) => result.set(event, new Event_1.default(event, handlers)), new Map());
|
|
16
19
|
}
|
|
17
20
|
/**Amount of events stored*/
|
|
18
21
|
get size() {
|
|
@@ -48,11 +51,8 @@ class EventCollection {
|
|
|
48
51
|
if (this._limit > 0 && this._limit + 1 > this._events.size) {
|
|
49
52
|
throw new Error(`Listener limit, ${this._limit}, reached!`);
|
|
50
53
|
}
|
|
51
|
-
const event = this.has(name) && this.get(name);
|
|
52
|
-
|
|
53
|
-
this._events.set(name, event ? event.once(handler) : new Event_1.default(name).once(handler));
|
|
54
|
-
else
|
|
55
|
-
this._events.set(name, event ? event.on(handler) : new Event_1.default(name, handler));
|
|
54
|
+
const event = (this.has(name) && this.get(name)) || new Event_1.default(name);
|
|
55
|
+
this._events.set(name, event.on(handler, once));
|
|
56
56
|
return this;
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
@@ -66,27 +66,22 @@ class EventCollection {
|
|
|
66
66
|
* @returns this
|
|
67
67
|
*/
|
|
68
68
|
clear(name = 'all', handler) {
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
this._events.clear();
|
|
72
|
-
|
|
73
|
-
else if (name.toLowerCase() == 'all' && handler)
|
|
69
|
+
const _name = name;
|
|
70
|
+
if (_name.toLowerCase() == 'all' && handler == null)
|
|
71
|
+
this._events.clear(); //clear(): Clears all events
|
|
72
|
+
else if (_name.toLowerCase() == 'all' && handler)
|
|
74
73
|
this._events = (() => {
|
|
75
|
-
|
|
76
|
-
this._events.forEach((event, name) => eventNames.includes(name) &&
|
|
77
|
-
this._events.set(name, event.off(handler)));
|
|
74
|
+
this._events.forEach(e => e.off(handler));
|
|
78
75
|
return this._events;
|
|
79
76
|
})();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
else if (name.toLowerCase() != 'all' && handler)
|
|
85
|
-
this._events.set(name, this.get(name).off(handler));
|
|
77
|
+
else if (_name.toLowerCase() != "all" && handler == null)
|
|
78
|
+
this._events.delete(name); //clear("myEvent"): Clears All handlers tied to "myEvent"
|
|
79
|
+
else if (_name.toLowerCase() != 'all' && handler)
|
|
80
|
+
this._events.set(name, this._events.get(name).off(handler)); //clear("myEvent", myEventHandler): Removes the "myEventsHandler" handler from "myEvent"
|
|
86
81
|
return this;
|
|
87
82
|
}
|
|
88
|
-
emit(name, args) {
|
|
89
|
-
return this.get(name)
|
|
83
|
+
emit(name, ...args) {
|
|
84
|
+
return this.get(name)?.emit(...args);
|
|
90
85
|
}
|
|
91
86
|
/**
|
|
92
87
|
* Limits how many events to accept using EventEmitter#on or EventEmitter#once
|
|
@@ -95,15 +90,18 @@ class EventCollection {
|
|
|
95
90
|
*
|
|
96
91
|
* @throws Unknown event, if event name isn't recognized
|
|
97
92
|
*/
|
|
98
|
-
limit(
|
|
93
|
+
limit(eventName, limit) {
|
|
99
94
|
if (limit <= 0)
|
|
100
95
|
return;
|
|
101
|
-
if (
|
|
96
|
+
if (eventName == 'all') {
|
|
102
97
|
this._limit = limit;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
const event = this.get(eventName);
|
|
101
|
+
if (!event)
|
|
102
|
+
throw new Error(`Unknown event, ${eventName}!`);
|
|
103
|
+
event.limit = limit;
|
|
104
|
+
this._events.set(eventName, event);
|
|
107
105
|
return this;
|
|
108
106
|
}
|
|
109
107
|
}
|