@chocolateish/lib-event 1.0.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/dist/index.d.ts +128 -0
- package/dist/index.js +315 -0
- package/package.json +38 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**Event class
|
|
2
|
+
* contains the needed data to dispatch an event*/
|
|
3
|
+
declare class E<Type, Target, Data> {
|
|
4
|
+
/**Any data to pass to the event listeners must be given in the constructor*/
|
|
5
|
+
constructor(type: Type, target: Target, data: Data);
|
|
6
|
+
/**Type of event */
|
|
7
|
+
readonly type: Type;
|
|
8
|
+
/**Reference to */
|
|
9
|
+
readonly target: Target;
|
|
10
|
+
/**Data of event */
|
|
11
|
+
readonly data: Data;
|
|
12
|
+
}
|
|
13
|
+
/**Function used to subscribe to event*/
|
|
14
|
+
type ESubscriber<Type, Target, Data> = (event: E<Type, Target, Data>) => void;
|
|
15
|
+
interface EventConsumer<Events extends object, Target> {
|
|
16
|
+
/**This add the subscriber to the event handler
|
|
17
|
+
* Returning true in subscriber will remove the subscriber from the event handler after call*/
|
|
18
|
+
on<K extends keyof Events>(eventName: K, subscriber: ESubscriber<K, Target, Events[K]>): typeof subscriber;
|
|
19
|
+
/**This removes the subscriber from the event handler*/
|
|
20
|
+
off<K extends keyof Events>(eventName: K, subscriber: ESubscriber<K, Target, Events[K]>): typeof subscriber;
|
|
21
|
+
/**Registers a proxy event handler that recieves all events from this event handler */
|
|
22
|
+
proxy_on(subscriber: ESubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
23
|
+
/**Deregisters a proxy event handler that recieves all events from this event handler */
|
|
24
|
+
proxy_off(subscriber: ESubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
25
|
+
}
|
|
26
|
+
interface EventProducer<Events extends object, Target> extends EventConsumer<Events, Target> {
|
|
27
|
+
/**Override for target */
|
|
28
|
+
target: Target | undefined;
|
|
29
|
+
/**This dispatches the event, event data is frozen*/
|
|
30
|
+
emit<K extends keyof Events>(eventName: K, data: Events[K]): void;
|
|
31
|
+
/**This removes all listeners of a type from the event handler*/
|
|
32
|
+
clear<K extends keyof Events>(eventName: K): void;
|
|
33
|
+
/**Returns wether the type has listeners, true means it has at least a listener*/
|
|
34
|
+
in_use<K extends keyof Events>(eventName: K): boolean;
|
|
35
|
+
/**Returns wether the type has a specific listeners, true means it has that listener*/
|
|
36
|
+
has<K extends keyof Events>(eventName: K, subscriber: ESubscriber<K, Target, Events[K]>): boolean;
|
|
37
|
+
/**Returns the amount of listeners on that event*/
|
|
38
|
+
amount<K extends keyof Events>(eventName: K): number;
|
|
39
|
+
/**Generates a proxy function which can be registered with another handlers */
|
|
40
|
+
proxy_func(): ESubscriber<keyof Events, Target, Events[keyof Events]>;
|
|
41
|
+
}
|
|
42
|
+
declare class EventHandler<Events extends {
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}, Target> implements EventProducer<Events, Target> {
|
|
45
|
+
#private;
|
|
46
|
+
target: Target;
|
|
47
|
+
constructor(target: Target);
|
|
48
|
+
on<K extends keyof Events>(event_name: K, subscriber: ESubscriber<K, Target, Events[K]>): typeof subscriber;
|
|
49
|
+
off<K extends keyof Events>(event_name: K, subscriber: ESubscriber<K, Target, Events[K]>): ESubscriber<K, Target, Events[K]>;
|
|
50
|
+
proxy_on(subscriber: ESubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
51
|
+
proxy_off(subscriber: ESubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
52
|
+
get consumer(): EventConsumer<Events, Target>;
|
|
53
|
+
emit<K extends keyof Events>(event_name: K, data: Events[K]): void;
|
|
54
|
+
clear<K extends keyof Events>(event_name: K): void;
|
|
55
|
+
in_use<K extends keyof Events>(event_name: K): boolean;
|
|
56
|
+
has<K extends keyof Events>(event_name: K, subscriber: ESubscriber<K, Target, Events[K]>): boolean;
|
|
57
|
+
amount<K extends keyof Events>(event_name: K): number;
|
|
58
|
+
proxy_func(): ESubscriber<keyof Events, Target, Events[keyof Events]>;
|
|
59
|
+
get producer(): EventProducer<Events, Target>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**Path to subevent */
|
|
63
|
+
type SubPath = string[];
|
|
64
|
+
/**Event class
|
|
65
|
+
* contains the needed data to dispatch an event*/
|
|
66
|
+
declare class ESub<Type, Target, Data> {
|
|
67
|
+
/**Any data to pass to the event listeners must be given in the constructor*/
|
|
68
|
+
constructor(type: Type, target: Target, data: Data, sub?: SubPath);
|
|
69
|
+
/**Type of event */
|
|
70
|
+
readonly type: Type;
|
|
71
|
+
/**Reference to */
|
|
72
|
+
readonly target: Target;
|
|
73
|
+
/**Path to sub event */
|
|
74
|
+
readonly sub?: SubPath;
|
|
75
|
+
/**Data of event */
|
|
76
|
+
readonly data: Data;
|
|
77
|
+
}
|
|
78
|
+
/**Function used to subscribe to event*/
|
|
79
|
+
type ESubSubscriber<Type, Target, Data> = (event: ESub<Type, Target, Data>) => void;
|
|
80
|
+
interface EventSubConsumer<Events extends object, Target> {
|
|
81
|
+
/**This add the subscriber to the event handler
|
|
82
|
+
* Returning true in subscriber will remove the subscriber from the event handler after call*/
|
|
83
|
+
on<K extends keyof Events>(eventName: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): typeof subscriber;
|
|
84
|
+
/**This removes the subscriber from the event handler*/
|
|
85
|
+
off<K extends keyof Events>(eventName: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): typeof subscriber;
|
|
86
|
+
/**Registers a proxy event handler that recieves all events from this event handler */
|
|
87
|
+
proxy_on(subscriber: ESubSubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
88
|
+
/**Deregisters a proxy event handler that recieves all events from this event handler */
|
|
89
|
+
proxy_off(subscriber: ESubSubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
90
|
+
}
|
|
91
|
+
interface EventSubProducer<Events extends object, Target> extends EventSubConsumer<Events, Target> {
|
|
92
|
+
/**Override for target */
|
|
93
|
+
target: Target | undefined;
|
|
94
|
+
/**This dispatches the event, event data is frozen*/
|
|
95
|
+
emit<K extends keyof Events>(eventName: K, data: Events[K], sub?: SubPath): void;
|
|
96
|
+
/**This removes all listeners of a type from the event handler*/
|
|
97
|
+
clear<K extends keyof Events>(eventName: K, sub?: SubPath, anyLevel?: boolean): void;
|
|
98
|
+
/**Returns wether the type has listeners, true means it has at least a listener*/
|
|
99
|
+
in_use<K extends keyof Events>(eventName: K, sub?: SubPath): boolean;
|
|
100
|
+
/**Returns wether the type has a specific listeners, true means it has that listener*/
|
|
101
|
+
has<K extends keyof Events>(eventName: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): boolean;
|
|
102
|
+
/**Returns the amount of listeners on that event*/
|
|
103
|
+
amount<K extends keyof Events>(eventName: K, sub?: SubPath): number;
|
|
104
|
+
/**Generates a proxy function which can be registered with another handlers */
|
|
105
|
+
proxy_func(): ESubSubscriber<keyof Events, Target, Events[keyof Events]>;
|
|
106
|
+
}
|
|
107
|
+
/**Extension to event handler with support for sub events*/
|
|
108
|
+
declare class EventHandlerSub<Events extends object, Target> implements EventSubProducer<Events, Target> {
|
|
109
|
+
#private;
|
|
110
|
+
target: Target;
|
|
111
|
+
constructor(target: Target);
|
|
112
|
+
on<K extends keyof Events>(event_name: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): typeof subscriber;
|
|
113
|
+
off<K extends keyof Events>(event_name: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): typeof subscriber;
|
|
114
|
+
proxy_on(subscriber: ESubSubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
115
|
+
proxy_off(subscriber: ESubSubscriber<keyof Events, Target, Events[keyof Events]>): typeof subscriber;
|
|
116
|
+
get consumer(): EventSubConsumer<Events, Target>;
|
|
117
|
+
emit<K extends keyof Events>(event_name: K, data: Events[K], sub?: SubPath): void;
|
|
118
|
+
clear<K extends keyof Events>(event_name: K, sub?: SubPath, any_level?: boolean): void;
|
|
119
|
+
in_use<K extends keyof Events>(event_name: K, sub?: SubPath): boolean;
|
|
120
|
+
has<K extends keyof Events>(event_name: K, subscriber: ESubSubscriber<K, Target, Events[K]>, sub?: SubPath): boolean;
|
|
121
|
+
amount<K extends keyof Events>(event_name: K, sub?: SubPath): number;
|
|
122
|
+
proxy_func(): ESubSubscriber<keyof Events, Target, Events[keyof Events]>;
|
|
123
|
+
get producer(): EventSubProducer<Events, Target>;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
declare const test: {};
|
|
127
|
+
|
|
128
|
+
export { E, ESub, type ESubSubscriber, type ESubscriber, type EventConsumer, EventHandler, EventHandlerSub, type EventProducer, type EventSubConsumer, type EventSubProducer, test };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// src/simple.ts
|
|
2
|
+
var E = class {
|
|
3
|
+
/**Any data to pass to the event listeners must be given in the constructor*/
|
|
4
|
+
constructor(type, target, data) {
|
|
5
|
+
this.type = type;
|
|
6
|
+
this.target = target;
|
|
7
|
+
this.data = data;
|
|
8
|
+
}
|
|
9
|
+
/**Type of event */
|
|
10
|
+
type;
|
|
11
|
+
/**Reference to */
|
|
12
|
+
target;
|
|
13
|
+
/**Data of event */
|
|
14
|
+
data;
|
|
15
|
+
};
|
|
16
|
+
var EventHandler = class {
|
|
17
|
+
target;
|
|
18
|
+
#subscribers = {};
|
|
19
|
+
#proxies;
|
|
20
|
+
constructor(target) {
|
|
21
|
+
this.target = target;
|
|
22
|
+
}
|
|
23
|
+
//# Consumer
|
|
24
|
+
on(event_name, subscriber) {
|
|
25
|
+
const type_listeners = this.#subscribers[event_name];
|
|
26
|
+
if (type_listeners) {
|
|
27
|
+
if (type_listeners.has(subscriber))
|
|
28
|
+
console.error("Subscriber already in handler");
|
|
29
|
+
else type_listeners.add(subscriber);
|
|
30
|
+
} else this.#subscribers[event_name] = /* @__PURE__ */ new Set([subscriber]);
|
|
31
|
+
return subscriber;
|
|
32
|
+
}
|
|
33
|
+
off(event_name, subscriber) {
|
|
34
|
+
if (this.#subscribers[event_name]?.delete(subscriber) === false)
|
|
35
|
+
console.error("Subscriber not in handler");
|
|
36
|
+
return subscriber;
|
|
37
|
+
}
|
|
38
|
+
proxy_on(subscriber) {
|
|
39
|
+
if (!this.#proxies) this.#proxies = /* @__PURE__ */ new Set([subscriber]);
|
|
40
|
+
else if (!this.#proxies.has(subscriber)) this.#proxies.add(subscriber);
|
|
41
|
+
else console.error("Proxy subscriber already registered");
|
|
42
|
+
return subscriber;
|
|
43
|
+
}
|
|
44
|
+
proxy_off(subscriber) {
|
|
45
|
+
if (this.#proxies?.delete(subscriber) === false)
|
|
46
|
+
console.error("Proxy subscriber not registered");
|
|
47
|
+
return subscriber;
|
|
48
|
+
}
|
|
49
|
+
//# Producer
|
|
50
|
+
get consumer() {
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
emit(event_name, data) {
|
|
54
|
+
const funcs = this.#subscribers[event_name];
|
|
55
|
+
if (funcs?.size || this.#proxies?.size)
|
|
56
|
+
this.#emit_e(
|
|
57
|
+
Object.freeze(
|
|
58
|
+
new E(event_name, this.target, data)
|
|
59
|
+
),
|
|
60
|
+
funcs
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
#emit_e(e, funcs) {
|
|
64
|
+
this.#proxies?.forEach((proxy) => {
|
|
65
|
+
proxy(e);
|
|
66
|
+
});
|
|
67
|
+
funcs?.forEach((func) => {
|
|
68
|
+
try {
|
|
69
|
+
func(e);
|
|
70
|
+
} catch (e2) {
|
|
71
|
+
console.error("Failed while dispatching event", e2);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
clear(event_name) {
|
|
76
|
+
this.#subscribers[event_name]?.clear();
|
|
77
|
+
}
|
|
78
|
+
in_use(event_name) {
|
|
79
|
+
return Boolean(this.#subscribers[event_name]?.size);
|
|
80
|
+
}
|
|
81
|
+
has(event_name, subscriber) {
|
|
82
|
+
return this.#subscribers[event_name]?.has(subscriber) || false;
|
|
83
|
+
}
|
|
84
|
+
amount(event_name) {
|
|
85
|
+
return this.#subscribers[event_name]?.size || 0;
|
|
86
|
+
}
|
|
87
|
+
proxy_func() {
|
|
88
|
+
return (e) => {
|
|
89
|
+
const subs = this.#subscribers[e.type];
|
|
90
|
+
if (subs) this.#emit_e(e, subs);
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
get producer() {
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/sub.ts
|
|
99
|
+
var ESub = class {
|
|
100
|
+
/**Any data to pass to the event listeners must be given in the constructor*/
|
|
101
|
+
constructor(type, target, data, sub) {
|
|
102
|
+
this.type = type;
|
|
103
|
+
this.target = target;
|
|
104
|
+
this.data = data;
|
|
105
|
+
this.sub = sub;
|
|
106
|
+
}
|
|
107
|
+
/**Type of event */
|
|
108
|
+
type;
|
|
109
|
+
/**Reference to */
|
|
110
|
+
target;
|
|
111
|
+
/**Path to sub event */
|
|
112
|
+
sub;
|
|
113
|
+
/**Data of event */
|
|
114
|
+
data;
|
|
115
|
+
};
|
|
116
|
+
var EventHandlerSub = class {
|
|
117
|
+
target;
|
|
118
|
+
#sub_storage = {};
|
|
119
|
+
#proxies;
|
|
120
|
+
constructor(target) {
|
|
121
|
+
this.target = target;
|
|
122
|
+
}
|
|
123
|
+
//# Consumer
|
|
124
|
+
on(event_name, subscriber, sub) {
|
|
125
|
+
let sub_level = this.#sub_storage[event_name];
|
|
126
|
+
if (!sub_level)
|
|
127
|
+
sub_level = this.#sub_storage[event_name] = {
|
|
128
|
+
subs: {},
|
|
129
|
+
funcs: /* @__PURE__ */ new Set()
|
|
130
|
+
};
|
|
131
|
+
if (sub)
|
|
132
|
+
for (let i = 0; i < sub.length; i++) {
|
|
133
|
+
const sub_level_buffer = sub_level.subs[sub[i]];
|
|
134
|
+
if (sub_level_buffer) sub_level = sub_level_buffer;
|
|
135
|
+
else
|
|
136
|
+
sub_level = sub_level.subs[sub[i]] = { subs: {}, funcs: /* @__PURE__ */ new Set() };
|
|
137
|
+
}
|
|
138
|
+
const type_listeners = sub_level.funcs;
|
|
139
|
+
if (type_listeners.has(subscriber))
|
|
140
|
+
console.error("Subscriber already in handler");
|
|
141
|
+
else type_listeners.add(subscriber);
|
|
142
|
+
return subscriber;
|
|
143
|
+
}
|
|
144
|
+
off(event_name, subscriber, sub) {
|
|
145
|
+
let sub_level = this.#sub_storage[event_name];
|
|
146
|
+
if (sub_level) {
|
|
147
|
+
if (sub)
|
|
148
|
+
for (let i = 0; i < sub.length; i++) {
|
|
149
|
+
const sub_level_buffer = sub_level.subs[sub[i]];
|
|
150
|
+
if (sub_level_buffer) sub_level = sub_level_buffer;
|
|
151
|
+
else {
|
|
152
|
+
console.error("Subscriber not in handler");
|
|
153
|
+
return subscriber;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (sub_level.funcs.delete(subscriber) === false)
|
|
157
|
+
console.error("Subscriber not in handler");
|
|
158
|
+
}
|
|
159
|
+
return subscriber;
|
|
160
|
+
}
|
|
161
|
+
proxy_on(subscriber) {
|
|
162
|
+
if (!this.#proxies) this.#proxies = /* @__PURE__ */ new Set([subscriber]);
|
|
163
|
+
else if (!this.#proxies.has(subscriber)) this.#proxies.add(subscriber);
|
|
164
|
+
else console.error("Proxy subscriber already registered");
|
|
165
|
+
return subscriber;
|
|
166
|
+
}
|
|
167
|
+
proxy_off(subscriber) {
|
|
168
|
+
if (this.#proxies?.delete(subscriber) === false)
|
|
169
|
+
console.error("Proxy subscriber not registered");
|
|
170
|
+
return subscriber;
|
|
171
|
+
}
|
|
172
|
+
get consumer() {
|
|
173
|
+
return this;
|
|
174
|
+
}
|
|
175
|
+
//#Producer
|
|
176
|
+
emit(event_name, data, sub) {
|
|
177
|
+
let funcs;
|
|
178
|
+
if (sub) {
|
|
179
|
+
let sub_level = this.#sub_storage[event_name];
|
|
180
|
+
if (sub_level)
|
|
181
|
+
for (let i = 0; i < sub.length; i++) {
|
|
182
|
+
const sub_level_buffer = sub_level.subs[sub[i]];
|
|
183
|
+
if (sub_level_buffer) sub_level = sub_level_buffer;
|
|
184
|
+
else if (this.#proxies?.size)
|
|
185
|
+
return this.#emit_e(
|
|
186
|
+
Object.freeze(
|
|
187
|
+
new ESub(
|
|
188
|
+
event_name,
|
|
189
|
+
this.target,
|
|
190
|
+
data,
|
|
191
|
+
sub
|
|
192
|
+
)
|
|
193
|
+
),
|
|
194
|
+
funcs
|
|
195
|
+
);
|
|
196
|
+
else return;
|
|
197
|
+
}
|
|
198
|
+
funcs = sub_level?.funcs;
|
|
199
|
+
} else funcs = this.#sub_storage[event_name]?.funcs;
|
|
200
|
+
if (funcs?.size || this.#proxies?.size)
|
|
201
|
+
this.#emit_e(
|
|
202
|
+
Object.freeze(
|
|
203
|
+
new ESub(event_name, this.target, data, sub)
|
|
204
|
+
),
|
|
205
|
+
funcs
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
#emit_e(e, funcs) {
|
|
209
|
+
this.#proxies?.forEach((proxy) => {
|
|
210
|
+
proxy(e);
|
|
211
|
+
});
|
|
212
|
+
funcs?.forEach((func) => {
|
|
213
|
+
try {
|
|
214
|
+
func(e);
|
|
215
|
+
} catch (e2) {
|
|
216
|
+
console.error("Failed while dispatching event", e2);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
clear(event_name, sub, any_level) {
|
|
221
|
+
let type_buff = this.#sub_storage[event_name];
|
|
222
|
+
if (type_buff) {
|
|
223
|
+
if (any_level) {
|
|
224
|
+
if (sub) {
|
|
225
|
+
let i = 0;
|
|
226
|
+
let sub_level = type_buff;
|
|
227
|
+
for (i; i < sub.length - 1; i++) {
|
|
228
|
+
const sub_level_buffer = sub_level.subs[sub[i]];
|
|
229
|
+
if (sub_level_buffer) sub_level = sub_level_buffer;
|
|
230
|
+
else return;
|
|
231
|
+
}
|
|
232
|
+
sub_level.subs[sub[i]] = { subs: {}, funcs: /* @__PURE__ */ new Set() };
|
|
233
|
+
} else
|
|
234
|
+
this.#sub_storage[event_name] = {
|
|
235
|
+
subs: {},
|
|
236
|
+
funcs: /* @__PURE__ */ new Set()
|
|
237
|
+
};
|
|
238
|
+
} else {
|
|
239
|
+
if (sub)
|
|
240
|
+
for (let i = 0; i < sub.length; i++) {
|
|
241
|
+
const sub_level_buffer = type_buff.subs[sub[i]];
|
|
242
|
+
if (sub_level_buffer) type_buff = sub_level_buffer;
|
|
243
|
+
else return;
|
|
244
|
+
}
|
|
245
|
+
type_buff.funcs.clear();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
in_use(event_name, sub) {
|
|
250
|
+
let type_buff = this.#sub_storage[event_name];
|
|
251
|
+
if (type_buff) {
|
|
252
|
+
if (sub)
|
|
253
|
+
for (let i = 0; i < sub.length; i++) {
|
|
254
|
+
const sub_level_buffer = type_buff.subs[sub[i]];
|
|
255
|
+
if (sub_level_buffer) type_buff = sub_level_buffer;
|
|
256
|
+
else return false;
|
|
257
|
+
}
|
|
258
|
+
return Boolean(type_buff.funcs.size);
|
|
259
|
+
} else return false;
|
|
260
|
+
}
|
|
261
|
+
has(event_name, subscriber, sub) {
|
|
262
|
+
let type_buff = this.#sub_storage[event_name];
|
|
263
|
+
if (type_buff) {
|
|
264
|
+
if (sub)
|
|
265
|
+
for (let i = 0; i < sub.length; i++) {
|
|
266
|
+
const sub_level_buffer = type_buff.subs[sub[i]];
|
|
267
|
+
if (sub_level_buffer) type_buff = sub_level_buffer;
|
|
268
|
+
else return false;
|
|
269
|
+
}
|
|
270
|
+
return type_buff.funcs.has(subscriber);
|
|
271
|
+
} else return false;
|
|
272
|
+
}
|
|
273
|
+
amount(event_name, sub) {
|
|
274
|
+
let type_buff = this.#sub_storage[event_name];
|
|
275
|
+
if (type_buff) {
|
|
276
|
+
if (sub)
|
|
277
|
+
for (let i = 0; i < sub.length; i++) {
|
|
278
|
+
const sub_level_buffer = type_buff.subs[sub[i]];
|
|
279
|
+
if (sub_level_buffer) type_buff = sub_level_buffer;
|
|
280
|
+
else return 0;
|
|
281
|
+
}
|
|
282
|
+
return type_buff.funcs.size;
|
|
283
|
+
} else return 0;
|
|
284
|
+
}
|
|
285
|
+
proxy_func() {
|
|
286
|
+
return (e) => {
|
|
287
|
+
let funcs;
|
|
288
|
+
if (e.sub) {
|
|
289
|
+
let sub_level = this.#sub_storage[e.type];
|
|
290
|
+
if (sub_level)
|
|
291
|
+
for (let i = 0; i < e.sub.length; i++) {
|
|
292
|
+
const sub_level_buffer = sub_level.subs[e.sub[i]];
|
|
293
|
+
if (sub_level_buffer) sub_level = sub_level_buffer;
|
|
294
|
+
else return;
|
|
295
|
+
}
|
|
296
|
+
funcs = sub_level?.funcs;
|
|
297
|
+
} else funcs = this.#sub_storage[e.type]?.funcs;
|
|
298
|
+
if (funcs && funcs.size) this.#emit_e(e, funcs);
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
get producer() {
|
|
302
|
+
return this;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// src/index.ts
|
|
307
|
+
var test = {};
|
|
308
|
+
console.error("YOYOY");
|
|
309
|
+
export {
|
|
310
|
+
E,
|
|
311
|
+
ESub,
|
|
312
|
+
EventHandler,
|
|
313
|
+
EventHandlerSub,
|
|
314
|
+
test
|
|
315
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chocolateish/lib-event",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A concise description of your library",
|
|
5
|
+
"author": "chocolateandmilkwin",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"private": false,
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"dev": "vite --port 9950",
|
|
23
|
+
"build": "tsup src/index.ts --format esm --dts",
|
|
24
|
+
"lint": "eslint src/**/*.ts",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"prepublishOnly": "npm run build",
|
|
27
|
+
"publish": "npm publish --access public"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"typescript": "^5.0.0",
|
|
31
|
+
"tsup": "^8.0.0",
|
|
32
|
+
"vite": "^7.0.0",
|
|
33
|
+
"vitest": "^4.0.0",
|
|
34
|
+
"eslint": "^9.0.0",
|
|
35
|
+
"typescript-eslint": "^8.0.0",
|
|
36
|
+
"@vitest/browser-playwright": "^4.0.0"
|
|
37
|
+
}
|
|
38
|
+
}
|