@a0n/aeon 5.0.1 → 5.0.2
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/AeonEventEmitter-B1DzaYFk.d.cts +23 -0
- package/dist/AeonEventEmitter-B1DzaYFk.d.ts +23 -0
- package/dist/compression/index.d.cts +1 -1
- package/dist/compression/index.d.ts +1 -1
- package/dist/core/index.cjs +89 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +2 -212
- package/dist/core/index.d.ts +2 -212
- package/dist/core/index.js +88 -0
- package/dist/core/index.js.map +1 -1
- package/dist/distributed/index.cjs +88 -4
- package/dist/distributed/index.cjs.map +1 -1
- package/dist/distributed/index.d.cts +2 -2
- package/dist/distributed/index.d.ts +2 -2
- package/dist/distributed/index.js +88 -4
- package/dist/distributed/index.js.map +1 -1
- package/dist/index.cjs +98 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +98 -5
- package/dist/index.js.map +1 -1
- package/dist/offline/index.cjs +88 -4
- package/dist/offline/index.cjs.map +1 -1
- package/dist/offline/index.d.cts +3 -3
- package/dist/offline/index.d.ts +3 -3
- package/dist/offline/index.js +88 -4
- package/dist/offline/index.js.map +1 -1
- package/dist/optimization/index.d.cts +1 -1
- package/dist/optimization/index.d.ts +1 -1
- package/dist/presence/index.cjs +88 -4
- package/dist/presence/index.cjs.map +1 -1
- package/dist/presence/index.d.cts +2 -2
- package/dist/presence/index.d.ts +2 -2
- package/dist/presence/index.js +88 -4
- package/dist/presence/index.js.map +1 -1
- package/dist/types-Bj5EbkSK.d.cts +212 -0
- package/dist/types-Bj5EbkSK.d.ts +212 -0
- package/package.json +15 -17
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/core/AeonEventEmitter.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Aeon Event Emitter\n *\n * Aeon's control-plane events are low-volume observation surfaces, not\n * throughput-critical data planes. This implementation favors a small, typed,\n * dependency-free API with deterministic snapshot delivery over micro-optimized\n * special cases.\n */\n\ntype EventListener = (...args: any[]) => void;\n\nexport type AeonEventMap = Record<PropertyKey, EventListener>;\n\ntype EventShape = Record<string, EventListener>;\ntype EventKey<Events extends object> = keyof Events;\ntype ListenerRecord<Fn extends EventListener> = {\n fn: Fn;\n context: unknown;\n once: boolean;\n};\n\nexport class AeonEventEmitter<\n Events extends { [K in keyof Events]: EventListener } = EventShape\n> {\n private readonly listenerMap = new Map<\n EventKey<Events>,\n Array<ListenerRecord<Events[EventKey<Events>]>>\n >();\n\n on<K extends EventKey<Events>>(\n event: K,\n fn: Events[K],\n context?: unknown\n ): this {\n return this.registerListener(event, fn, context, false);\n }\n\n addListener<K extends EventKey<Events>>(\n event: K,\n fn: Events[K],\n context?: unknown\n ): this {\n return this.registerListener(event, fn, context, false);\n }\n\n once<K extends EventKey<Events>>(\n event: K,\n fn: Events[K],\n context?: unknown\n ): this {\n return this.registerListener(event, fn, context, true);\n }\n\n off<K extends EventKey<Events>>(\n event: K,\n fn?: Events[K],\n context?: unknown,\n once?: boolean\n ): this {\n return this.removeListener(event, fn, context, once);\n }\n\n removeListener<K extends EventKey<Events>>(\n event: K,\n fn?: Events[K],\n context?: unknown,\n once?: boolean\n ): this {\n const listeners = this.listenerMap.get(event);\n if (!listeners) {\n return this;\n }\n\n if (!fn) {\n this.listenerMap.delete(event);\n return this;\n }\n\n const retained = listeners.filter(\n (listener) =>\n listener.fn !== fn ||\n (once === true && listener.once !== true) ||\n (context !== undefined && listener.context !== context)\n );\n\n if (retained.length === 0) {\n this.listenerMap.delete(event);\n return this;\n }\n\n this.listenerMap.set(\n event,\n retained as Array<ListenerRecord<Events[EventKey<Events>]>>\n );\n\n return this;\n }\n\n removeAllListeners<K extends EventKey<Events>>(event?: K): this {\n if (event === undefined) {\n this.listenerMap.clear();\n return this;\n }\n\n this.listenerMap.delete(event);\n return this;\n }\n\n emit<K extends EventKey<Events>>(\n event: K,\n ...args: Parameters<Events[K]>\n ): boolean {\n const listeners = this.listenerMap.get(event);\n if (!listeners || listeners.length === 0) {\n return false;\n }\n\n // Emit against a point-in-time snapshot so registration churn during\n // delivery affects only future folds.\n for (const listener of [...listeners]) {\n if (listener.once) {\n this.removeListener(event, listener.fn, listener.context, true);\n }\n\n listener.fn.apply(listener.context, args);\n }\n\n return true;\n }\n\n eventNames(): Array<EventKey<Events>> {\n return Array.from(this.listenerMap.keys());\n }\n\n listeners<K extends EventKey<Events>>(event: K): Events[K][] {\n return (\n this.listenerMap.get(event)?.map((listener) => listener.fn as Events[K]) ??\n []\n );\n }\n\n listenerCount<K extends EventKey<Events>>(event: K): number {\n return this.listenerMap.get(event)?.length ?? 0;\n }\n\n subscribe<K extends EventKey<Events>>(\n event: K,\n fn: Events[K],\n context?: unknown\n ): () => void {\n this.on(event, fn, context);\n\n return () => {\n this.off(event, fn, context);\n };\n }\n\n private registerListener<K extends EventKey<Events>>(\n event: K,\n fn: Events[K],\n context: unknown,\n once: boolean\n ): this {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n const listeners =\n this.listenerMap.get(event) ??\n ([] as Array<ListenerRecord<Events[EventKey<Events>]>>);\n\n listeners.push({\n fn,\n context: context || this,\n once,\n });\n\n this.listenerMap.set(event, listeners);\n\n return this;\n }\n}\n"]}
|
|
@@ -1,8 +1,92 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
// src/core/AeonEventEmitter.ts
|
|
4
|
+
var AeonEventEmitter = class {
|
|
5
|
+
listenerMap = /* @__PURE__ */ new Map();
|
|
6
|
+
on(event, fn, context) {
|
|
7
|
+
return this.registerListener(event, fn, context, false);
|
|
8
|
+
}
|
|
9
|
+
addListener(event, fn, context) {
|
|
10
|
+
return this.registerListener(event, fn, context, false);
|
|
11
|
+
}
|
|
12
|
+
once(event, fn, context) {
|
|
13
|
+
return this.registerListener(event, fn, context, true);
|
|
14
|
+
}
|
|
15
|
+
off(event, fn, context, once) {
|
|
16
|
+
return this.removeListener(event, fn, context, once);
|
|
17
|
+
}
|
|
18
|
+
removeListener(event, fn, context, once) {
|
|
19
|
+
const listeners = this.listenerMap.get(event);
|
|
20
|
+
if (!listeners) {
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
if (!fn) {
|
|
24
|
+
this.listenerMap.delete(event);
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
const retained = listeners.filter(
|
|
28
|
+
(listener) => listener.fn !== fn || once === true && listener.once !== true || context !== void 0 && listener.context !== context
|
|
29
|
+
);
|
|
30
|
+
if (retained.length === 0) {
|
|
31
|
+
this.listenerMap.delete(event);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
this.listenerMap.set(
|
|
35
|
+
event,
|
|
36
|
+
retained
|
|
37
|
+
);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
removeAllListeners(event) {
|
|
41
|
+
if (event === void 0) {
|
|
42
|
+
this.listenerMap.clear();
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
this.listenerMap.delete(event);
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
emit(event, ...args) {
|
|
49
|
+
const listeners = this.listenerMap.get(event);
|
|
50
|
+
if (!listeners || listeners.length === 0) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
for (const listener of [...listeners]) {
|
|
54
|
+
if (listener.once) {
|
|
55
|
+
this.removeListener(event, listener.fn, listener.context, true);
|
|
56
|
+
}
|
|
57
|
+
listener.fn.apply(listener.context, args);
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
eventNames() {
|
|
62
|
+
return Array.from(this.listenerMap.keys());
|
|
63
|
+
}
|
|
64
|
+
listeners(event) {
|
|
65
|
+
return this.listenerMap.get(event)?.map((listener) => listener.fn) ?? [];
|
|
66
|
+
}
|
|
67
|
+
listenerCount(event) {
|
|
68
|
+
return this.listenerMap.get(event)?.length ?? 0;
|
|
69
|
+
}
|
|
70
|
+
subscribe(event, fn, context) {
|
|
71
|
+
this.on(event, fn, context);
|
|
72
|
+
return () => {
|
|
73
|
+
this.off(event, fn, context);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
registerListener(event, fn, context, once) {
|
|
77
|
+
if (typeof fn !== "function") {
|
|
78
|
+
throw new TypeError("The listener must be a function");
|
|
79
|
+
}
|
|
80
|
+
const listeners = this.listenerMap.get(event) ?? [];
|
|
81
|
+
listeners.push({
|
|
82
|
+
fn,
|
|
83
|
+
context: context || this,
|
|
84
|
+
once
|
|
85
|
+
});
|
|
86
|
+
this.listenerMap.set(event, listeners);
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
6
90
|
|
|
7
91
|
// src/utils/logger.ts
|
|
8
92
|
var consoleLogger = {
|
|
@@ -31,7 +115,7 @@ var logger = {
|
|
|
31
115
|
};
|
|
32
116
|
|
|
33
117
|
// src/distributed/SyncCoordinator.ts
|
|
34
|
-
var SyncCoordinator = class _SyncCoordinator extends
|
|
118
|
+
var SyncCoordinator = class _SyncCoordinator extends AeonEventEmitter {
|
|
35
119
|
static MAX_SYNC_EVENTS = 1e4;
|
|
36
120
|
nodes = /* @__PURE__ */ new Map();
|
|
37
121
|
sessions = /* @__PURE__ */ new Map();
|