@sphereon/ssi-types 0.24.1-unstable.7 → 0.24.1-unstable.9
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/events/index.d.ts +112 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +148 -0
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/events/index.ts +192 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
export declare enum System {
|
|
4
|
+
GENERAL = "general",
|
|
5
|
+
KMS = "kms",
|
|
6
|
+
IDENTITY = "identity",
|
|
7
|
+
OID4VCI = "oid4vci",
|
|
8
|
+
OID4VP = "oid4vp",
|
|
9
|
+
SIOPv2 = "siopv2",
|
|
10
|
+
PE = "PE",
|
|
11
|
+
CREDENTIALS = "credentials",
|
|
12
|
+
WEB3 = "web3",
|
|
13
|
+
PROFILE = "profile",
|
|
14
|
+
CONTACT = "contact"
|
|
15
|
+
}
|
|
16
|
+
export declare enum SubSystem {
|
|
17
|
+
KEY = "key",
|
|
18
|
+
DID_PROVIDER = "did_provider",
|
|
19
|
+
DID_RESOLVER = "did_resolver",
|
|
20
|
+
OID4VP_OP = "oid4vp_op",
|
|
21
|
+
OID4VCI_CLIENT = "oid4vci_client",
|
|
22
|
+
SIOPv2_OP = "siopv2_op",
|
|
23
|
+
CONTACT_MANAGER = "contact_manager",
|
|
24
|
+
VC_ISSUER = "vc_issuer",
|
|
25
|
+
VC_VERIFIER = "vc_verifier",
|
|
26
|
+
VC_PERSISTENCE = "vc_persistence",
|
|
27
|
+
TRANSPORT = "transport",
|
|
28
|
+
PROFILE = "profile",
|
|
29
|
+
API = "api"
|
|
30
|
+
}
|
|
31
|
+
export declare enum ActionType {
|
|
32
|
+
CREATE = "create",
|
|
33
|
+
READ = "read",
|
|
34
|
+
UPDATE = "update",
|
|
35
|
+
DELETE = "delete",
|
|
36
|
+
EXECUTE = "execute"
|
|
37
|
+
}
|
|
38
|
+
export declare enum DefaultActionSubType {
|
|
39
|
+
KEY_GENERATION = "Key generation",
|
|
40
|
+
KEY_IMPORT = "Key import",
|
|
41
|
+
KEY_PERSISTENCE = "Key persistence",
|
|
42
|
+
KEY_REMOVAL = "Key removal",
|
|
43
|
+
DID_CREATION = "DID creation",
|
|
44
|
+
DID_RESOLUTION = "DID resolution",
|
|
45
|
+
DID_SERVICE_UPDATE = "DID service update",
|
|
46
|
+
VC_ISSUE = "VC issue",
|
|
47
|
+
VC_VERIFY = "VC verify"
|
|
48
|
+
}
|
|
49
|
+
export type ActionSubType = DefaultActionSubType | string;
|
|
50
|
+
export declare enum InitiatorType {
|
|
51
|
+
USER = "user",
|
|
52
|
+
SYSTEM = "system",
|
|
53
|
+
EXTERNAL = "external"
|
|
54
|
+
}
|
|
55
|
+
export declare enum SystemCorrelationIdType {
|
|
56
|
+
DID = "did",
|
|
57
|
+
URL = "url",
|
|
58
|
+
EMAIL = "email",
|
|
59
|
+
HOSTNAME = "hostname",
|
|
60
|
+
PHONE = "phone",
|
|
61
|
+
USER = "user"
|
|
62
|
+
}
|
|
63
|
+
export type EventData = {
|
|
64
|
+
system: string;
|
|
65
|
+
subSystemType: string;
|
|
66
|
+
};
|
|
67
|
+
export interface BasicEvent<SourceType, PayloadType extends EventData> {
|
|
68
|
+
id: string;
|
|
69
|
+
correlationId?: string;
|
|
70
|
+
eventName: string;
|
|
71
|
+
initiator?: string;
|
|
72
|
+
initiatorType: InitiatorType;
|
|
73
|
+
system: System;
|
|
74
|
+
subsystem: SubSystem;
|
|
75
|
+
data: PayloadType;
|
|
76
|
+
}
|
|
77
|
+
export declare class EventManager {
|
|
78
|
+
private static readonly INSTANCE;
|
|
79
|
+
private _emitters;
|
|
80
|
+
private constructor();
|
|
81
|
+
static instance(): EventManager;
|
|
82
|
+
register(name: string, emitter: EventEmitter, opts?: {
|
|
83
|
+
disabled: boolean;
|
|
84
|
+
}): EventEmitter;
|
|
85
|
+
get(name: string, opts?: {
|
|
86
|
+
onlyEnabled?: boolean;
|
|
87
|
+
}): EventEmitter;
|
|
88
|
+
getOrCreate(name: string, opts?: {
|
|
89
|
+
onlyEnabled?: boolean;
|
|
90
|
+
}): EventEmitter;
|
|
91
|
+
has(name: string): boolean;
|
|
92
|
+
emitters(filter?: {
|
|
93
|
+
eventName?: string | symbol;
|
|
94
|
+
onlyEnabled?: boolean;
|
|
95
|
+
}): Array<EventEmitter>;
|
|
96
|
+
hasEventName(eventName: string | symbol): boolean;
|
|
97
|
+
eventNames(): Array<string | symbol>;
|
|
98
|
+
emit(eventName: string | symbol, event: BasicEvent<any, any> | any, ...args: any[]): void;
|
|
99
|
+
listenerCount(eventName: string | symbol): number;
|
|
100
|
+
listeners(filter: {
|
|
101
|
+
emitterName?: string;
|
|
102
|
+
eventName: string;
|
|
103
|
+
onlyEnabled?: boolean;
|
|
104
|
+
}): Array<Function>;
|
|
105
|
+
private emittersImpl;
|
|
106
|
+
}
|
|
107
|
+
export declare class BasicEventEmitter extends EventEmitter {
|
|
108
|
+
addListener(eventName: string | symbol, listener: (event: BasicEvent<any, any>, ...args: any[]) => void): this;
|
|
109
|
+
once(eventName: string | symbol, listener: (event: BasicEvent<any, any>, ...args: any[]) => void): this;
|
|
110
|
+
emit(eventName: string, event: BasicEvent<any, any>, ...args: any[]): boolean;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BasicEventEmitter = exports.EventManager = exports.SystemCorrelationIdType = exports.InitiatorType = exports.DefaultActionSubType = exports.ActionType = exports.SubSystem = exports.System = void 0;
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
var System;
|
|
6
|
+
(function (System) {
|
|
7
|
+
System["GENERAL"] = "general";
|
|
8
|
+
System["KMS"] = "kms";
|
|
9
|
+
System["IDENTITY"] = "identity";
|
|
10
|
+
System["OID4VCI"] = "oid4vci";
|
|
11
|
+
System["OID4VP"] = "oid4vp";
|
|
12
|
+
System["SIOPv2"] = "siopv2";
|
|
13
|
+
System["PE"] = "PE";
|
|
14
|
+
System["CREDENTIALS"] = "credentials";
|
|
15
|
+
System["WEB3"] = "web3";
|
|
16
|
+
System["PROFILE"] = "profile";
|
|
17
|
+
System["CONTACT"] = "contact";
|
|
18
|
+
})(System || (exports.System = System = {}));
|
|
19
|
+
var SubSystem;
|
|
20
|
+
(function (SubSystem) {
|
|
21
|
+
SubSystem["KEY"] = "key";
|
|
22
|
+
SubSystem["DID_PROVIDER"] = "did_provider";
|
|
23
|
+
SubSystem["DID_RESOLVER"] = "did_resolver";
|
|
24
|
+
SubSystem["OID4VP_OP"] = "oid4vp_op";
|
|
25
|
+
SubSystem["OID4VCI_CLIENT"] = "oid4vci_client";
|
|
26
|
+
SubSystem["SIOPv2_OP"] = "siopv2_op";
|
|
27
|
+
SubSystem["CONTACT_MANAGER"] = "contact_manager";
|
|
28
|
+
SubSystem["VC_ISSUER"] = "vc_issuer";
|
|
29
|
+
SubSystem["VC_VERIFIER"] = "vc_verifier";
|
|
30
|
+
SubSystem["VC_PERSISTENCE"] = "vc_persistence";
|
|
31
|
+
SubSystem["TRANSPORT"] = "transport";
|
|
32
|
+
SubSystem["PROFILE"] = "profile";
|
|
33
|
+
SubSystem["API"] = "api";
|
|
34
|
+
})(SubSystem || (exports.SubSystem = SubSystem = {}));
|
|
35
|
+
var ActionType;
|
|
36
|
+
(function (ActionType) {
|
|
37
|
+
ActionType["CREATE"] = "create";
|
|
38
|
+
ActionType["READ"] = "read";
|
|
39
|
+
ActionType["UPDATE"] = "update";
|
|
40
|
+
ActionType["DELETE"] = "delete";
|
|
41
|
+
ActionType["EXECUTE"] = "execute";
|
|
42
|
+
})(ActionType || (exports.ActionType = ActionType = {}));
|
|
43
|
+
var DefaultActionSubType;
|
|
44
|
+
(function (DefaultActionSubType) {
|
|
45
|
+
DefaultActionSubType["KEY_GENERATION"] = "Key generation";
|
|
46
|
+
DefaultActionSubType["KEY_IMPORT"] = "Key import";
|
|
47
|
+
DefaultActionSubType["KEY_PERSISTENCE"] = "Key persistence";
|
|
48
|
+
DefaultActionSubType["KEY_REMOVAL"] = "Key removal";
|
|
49
|
+
DefaultActionSubType["DID_CREATION"] = "DID creation";
|
|
50
|
+
DefaultActionSubType["DID_RESOLUTION"] = "DID resolution";
|
|
51
|
+
DefaultActionSubType["DID_SERVICE_UPDATE"] = "DID service update";
|
|
52
|
+
DefaultActionSubType["VC_ISSUE"] = "VC issue";
|
|
53
|
+
DefaultActionSubType["VC_VERIFY"] = "VC verify";
|
|
54
|
+
})(DefaultActionSubType || (exports.DefaultActionSubType = DefaultActionSubType = {}));
|
|
55
|
+
var InitiatorType;
|
|
56
|
+
(function (InitiatorType) {
|
|
57
|
+
InitiatorType["USER"] = "user";
|
|
58
|
+
InitiatorType["SYSTEM"] = "system";
|
|
59
|
+
InitiatorType["EXTERNAL"] = "external";
|
|
60
|
+
})(InitiatorType || (exports.InitiatorType = InitiatorType = {}));
|
|
61
|
+
var SystemCorrelationIdType;
|
|
62
|
+
(function (SystemCorrelationIdType) {
|
|
63
|
+
SystemCorrelationIdType["DID"] = "did";
|
|
64
|
+
SystemCorrelationIdType["URL"] = "url";
|
|
65
|
+
SystemCorrelationIdType["EMAIL"] = "email";
|
|
66
|
+
SystemCorrelationIdType["HOSTNAME"] = "hostname";
|
|
67
|
+
SystemCorrelationIdType["PHONE"] = "phone";
|
|
68
|
+
SystemCorrelationIdType["USER"] = "user";
|
|
69
|
+
})(SystemCorrelationIdType || (exports.SystemCorrelationIdType = SystemCorrelationIdType = {}));
|
|
70
|
+
class EventManager {
|
|
71
|
+
constructor() {
|
|
72
|
+
this._emitters = new Map();
|
|
73
|
+
}
|
|
74
|
+
static instance() {
|
|
75
|
+
return EventManager.INSTANCE;
|
|
76
|
+
}
|
|
77
|
+
register(name, emitter, opts) {
|
|
78
|
+
this._emitters.set(name, { emitter, enabled: (opts === null || opts === void 0 ? void 0 : opts.disabled) !== true });
|
|
79
|
+
return emitter;
|
|
80
|
+
}
|
|
81
|
+
get(name, opts) {
|
|
82
|
+
var _a;
|
|
83
|
+
const { emitter, enabled } = (_a = this._emitters.get(name)) !== null && _a !== void 0 ? _a : {};
|
|
84
|
+
if (!emitter) {
|
|
85
|
+
throw Error(`No emitter registered with name ${name}`);
|
|
86
|
+
}
|
|
87
|
+
else if ((opts === null || opts === void 0 ? void 0 : opts.onlyEnabled) && !enabled) {
|
|
88
|
+
throw Error(`Emitter with name ${name} is not enabled`);
|
|
89
|
+
}
|
|
90
|
+
return emitter;
|
|
91
|
+
}
|
|
92
|
+
getOrCreate(name, opts) {
|
|
93
|
+
if (this.has(name)) {
|
|
94
|
+
return this.get(name, opts);
|
|
95
|
+
}
|
|
96
|
+
return this.register(name, new BasicEventEmitter());
|
|
97
|
+
}
|
|
98
|
+
has(name) {
|
|
99
|
+
return this._emitters.has(name);
|
|
100
|
+
}
|
|
101
|
+
emitters(filter) {
|
|
102
|
+
const all = Array.from(new Set(this._emitters.values()));
|
|
103
|
+
return this.emittersImpl(all, filter).map((e) => e.emitter);
|
|
104
|
+
}
|
|
105
|
+
hasEventName(eventName) {
|
|
106
|
+
return this.eventNames().includes(eventName);
|
|
107
|
+
}
|
|
108
|
+
eventNames() {
|
|
109
|
+
return Array.from(new Set(this.emitters().flatMap((emitter) => emitter.eventNames())));
|
|
110
|
+
}
|
|
111
|
+
emit(eventName, event, ...args) {
|
|
112
|
+
const emitters = this.emitters({ eventName });
|
|
113
|
+
emitters.flatMap((emitter) => emitter.emit(eventName, event, args));
|
|
114
|
+
}
|
|
115
|
+
listenerCount(eventName) {
|
|
116
|
+
const emitters = this.emitters({ eventName });
|
|
117
|
+
return emitters.map((emitter) => emitter.listenerCount(eventName)).reduce((previous, current) => current + previous);
|
|
118
|
+
}
|
|
119
|
+
listeners(filter) {
|
|
120
|
+
const emitters = (filter === null || filter === void 0 ? void 0 : filter.emitterName) ? [this.get(filter.emitterName, filter)] : this.emitters(filter);
|
|
121
|
+
return Array.from(new Set(this.emittersImpl(emitters.map((emitter) => {
|
|
122
|
+
return { emitter, enabled: true };
|
|
123
|
+
}), filter).flatMap((emitter) => emitter.emitter.listeners(filter.eventName))));
|
|
124
|
+
}
|
|
125
|
+
emittersImpl(all, filter) {
|
|
126
|
+
const { eventName } = filter !== null && filter !== void 0 ? filter : {};
|
|
127
|
+
if (!eventName) {
|
|
128
|
+
return all;
|
|
129
|
+
}
|
|
130
|
+
const filtered = all.filter((emitter) => emitter.emitter.eventNames().includes(eventName) && (emitter.enabled || (filter === null || filter === void 0 ? void 0 : filter.onlyEnabled) !== true));
|
|
131
|
+
return Array.from(new Set(filtered));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.EventManager = EventManager;
|
|
135
|
+
EventManager.INSTANCE = new EventManager();
|
|
136
|
+
class BasicEventEmitter extends events_1.EventEmitter {
|
|
137
|
+
addListener(eventName, listener) {
|
|
138
|
+
return super.addListener(eventName, listener);
|
|
139
|
+
}
|
|
140
|
+
once(eventName, listener) {
|
|
141
|
+
return super.once(eventName, listener);
|
|
142
|
+
}
|
|
143
|
+
emit(eventName, event, ...args) {
|
|
144
|
+
return super.emit(eventName, ...args);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.BasicEventEmitter = BasicEventEmitter;
|
|
148
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./types"), exports);
|
|
18
18
|
__exportStar(require("./utils"), exports);
|
|
19
|
+
__exportStar(require("./events"), exports);
|
|
19
20
|
__exportStar(require("./logging"), exports);
|
|
20
21
|
__exportStar(require("./mapper"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,0CAAuB;AACvB,4CAAyB;AACzB,2CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,0CAAuB;AACvB,2CAAwB;AACxB,4CAAyB;AACzB,2CAAwB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-types",
|
|
3
3
|
"description": "SSI Common Types",
|
|
4
|
-
"version": "0.24.1-unstable.
|
|
4
|
+
"version": "0.24.1-unstable.9+db95d24f",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"Verifiable Credentials",
|
|
44
44
|
"DIDs"
|
|
45
45
|
],
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "db95d24fac7d4b0f6500aced34d5cf7e58620be7"
|
|
47
47
|
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { EventEmitter } from 'events'
|
|
2
|
+
|
|
3
|
+
export enum System {
|
|
4
|
+
GENERAL = 'general',
|
|
5
|
+
KMS = 'kms',
|
|
6
|
+
IDENTITY = 'identity',
|
|
7
|
+
OID4VCI = 'oid4vci',
|
|
8
|
+
OID4VP = 'oid4vp',
|
|
9
|
+
SIOPv2 = 'siopv2',
|
|
10
|
+
PE = 'PE',
|
|
11
|
+
CREDENTIALS = 'credentials',
|
|
12
|
+
WEB3 = 'web3',
|
|
13
|
+
PROFILE = 'profile',
|
|
14
|
+
CONTACT = 'contact',
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export enum SubSystem {
|
|
18
|
+
KEY = 'key',
|
|
19
|
+
DID_PROVIDER = 'did_provider',
|
|
20
|
+
DID_RESOLVER = 'did_resolver',
|
|
21
|
+
OID4VP_OP = 'oid4vp_op',
|
|
22
|
+
OID4VCI_CLIENT = 'oid4vci_client',
|
|
23
|
+
SIOPv2_OP = 'siopv2_op',
|
|
24
|
+
CONTACT_MANAGER = 'contact_manager',
|
|
25
|
+
VC_ISSUER = 'vc_issuer',
|
|
26
|
+
VC_VERIFIER = 'vc_verifier',
|
|
27
|
+
VC_PERSISTENCE = 'vc_persistence',
|
|
28
|
+
TRANSPORT = 'transport',
|
|
29
|
+
PROFILE = 'profile',
|
|
30
|
+
API = 'api',
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export enum ActionType {
|
|
34
|
+
CREATE = 'create',
|
|
35
|
+
READ = 'read',
|
|
36
|
+
UPDATE = 'update',
|
|
37
|
+
DELETE = 'delete',
|
|
38
|
+
EXECUTE = 'execute',
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export enum DefaultActionSubType {
|
|
42
|
+
KEY_GENERATION = 'Key generation',
|
|
43
|
+
KEY_IMPORT = 'Key import',
|
|
44
|
+
KEY_PERSISTENCE = 'Key persistence',
|
|
45
|
+
KEY_REMOVAL = 'Key removal',
|
|
46
|
+
DID_CREATION = 'DID creation',
|
|
47
|
+
DID_RESOLUTION = 'DID resolution',
|
|
48
|
+
DID_SERVICE_UPDATE = 'DID service update',
|
|
49
|
+
VC_ISSUE = 'VC issue',
|
|
50
|
+
VC_VERIFY = 'VC verify',
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type ActionSubType = DefaultActionSubType | string
|
|
54
|
+
|
|
55
|
+
export enum InitiatorType {
|
|
56
|
+
USER = 'user',
|
|
57
|
+
SYSTEM = 'system',
|
|
58
|
+
EXTERNAL = 'external',
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export enum SystemCorrelationIdType {
|
|
62
|
+
DID = 'did',
|
|
63
|
+
URL = 'url',
|
|
64
|
+
EMAIL = 'email',
|
|
65
|
+
HOSTNAME = 'hostname',
|
|
66
|
+
PHONE = 'phone',
|
|
67
|
+
USER = 'user',
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type EventData = {
|
|
71
|
+
system: string
|
|
72
|
+
subSystemType: string
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface BasicEvent<SourceType, PayloadType extends EventData> {
|
|
76
|
+
id: string
|
|
77
|
+
correlationId?: string
|
|
78
|
+
eventName: string
|
|
79
|
+
initiator?: string
|
|
80
|
+
initiatorType: InitiatorType
|
|
81
|
+
system: System
|
|
82
|
+
subsystem: SubSystem
|
|
83
|
+
data: PayloadType
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
type EmitterInstance = {
|
|
87
|
+
enabled: boolean
|
|
88
|
+
emitter: EventEmitter
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export class EventManager {
|
|
92
|
+
private static readonly INSTANCE = new EventManager()
|
|
93
|
+
private _emitters = new Map<string, EmitterInstance>()
|
|
94
|
+
|
|
95
|
+
private constructor() {}
|
|
96
|
+
|
|
97
|
+
public static instance(): EventManager {
|
|
98
|
+
return EventManager.INSTANCE
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
register(name: string, emitter: EventEmitter, opts?: { disabled: boolean }): EventEmitter {
|
|
102
|
+
this._emitters.set(name, { emitter, enabled: opts?.disabled !== true })
|
|
103
|
+
return emitter
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
get(name: string, opts?: { onlyEnabled?: boolean }): EventEmitter {
|
|
107
|
+
const { emitter, enabled } = this._emitters.get(name) ?? {}
|
|
108
|
+
if (!emitter) {
|
|
109
|
+
throw Error(`No emitter registered with name ${name}`)
|
|
110
|
+
} else if (opts?.onlyEnabled && !enabled) {
|
|
111
|
+
throw Error(`Emitter with name ${name} is not enabled`)
|
|
112
|
+
}
|
|
113
|
+
return emitter
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
getOrCreate(name: string, opts?: { onlyEnabled?: boolean }): EventEmitter {
|
|
117
|
+
if (this.has(name)) {
|
|
118
|
+
return this.get(name, opts)
|
|
119
|
+
}
|
|
120
|
+
return this.register(name, new BasicEventEmitter())
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
has(name: string): boolean {
|
|
124
|
+
return this._emitters.has(name)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
emitters(filter?: { eventName?: string | symbol; onlyEnabled?: boolean }): Array<EventEmitter> {
|
|
128
|
+
const all = Array.from(new Set(this._emitters.values()))
|
|
129
|
+
return this.emittersImpl(all, filter).map((e) => e.emitter)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
hasEventName(eventName: string | symbol) {
|
|
133
|
+
return this.eventNames().includes(eventName)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
eventNames(): Array<string | symbol> {
|
|
137
|
+
return Array.from(new Set(this.emitters().flatMap((emitter) => emitter.eventNames())))
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
emit(eventName: string | symbol, event: BasicEvent<any, any> | any, ...args: any[]): void {
|
|
141
|
+
const emitters = this.emitters({ eventName })
|
|
142
|
+
emitters.flatMap((emitter) => emitter.emit(eventName, event, args))
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
listenerCount(eventName: string | symbol) {
|
|
146
|
+
const emitters = this.emitters({ eventName })
|
|
147
|
+
return emitters.map((emitter) => emitter.listenerCount(eventName)).reduce((previous, current) => current + previous)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
listeners(filter: { emitterName?: string; eventName: string; onlyEnabled?: boolean }): Array<Function> {
|
|
151
|
+
const emitters = filter?.emitterName ? [this.get(filter.emitterName, filter)] : this.emitters(filter)
|
|
152
|
+
return Array.from(
|
|
153
|
+
new Set(
|
|
154
|
+
this.emittersImpl(
|
|
155
|
+
emitters.map((emitter) => {
|
|
156
|
+
return { emitter, enabled: true }
|
|
157
|
+
}),
|
|
158
|
+
filter,
|
|
159
|
+
).flatMap((emitter) => emitter.emitter.listeners(filter.eventName)),
|
|
160
|
+
),
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
private emittersImpl(
|
|
165
|
+
all: { emitter: EventEmitter; enabled: boolean }[],
|
|
166
|
+
filter?: {
|
|
167
|
+
eventName?: string | symbol
|
|
168
|
+
onlyEnabled?: boolean
|
|
169
|
+
},
|
|
170
|
+
): Array<EmitterInstance> {
|
|
171
|
+
const { eventName } = filter ?? {}
|
|
172
|
+
if (!eventName) {
|
|
173
|
+
return all
|
|
174
|
+
}
|
|
175
|
+
const filtered = all.filter((emitter) => emitter.emitter.eventNames().includes(eventName) && (emitter.enabled || filter?.onlyEnabled !== true))
|
|
176
|
+
return Array.from(new Set(filtered))
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export class BasicEventEmitter extends EventEmitter {
|
|
181
|
+
addListener(eventName: string | symbol, listener: (event: BasicEvent<any, any>, ...args: any[]) => void): this {
|
|
182
|
+
return super.addListener(eventName, listener)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
once(eventName: string | symbol, listener: (event: BasicEvent<any, any>, ...args: any[]) => void): this {
|
|
186
|
+
return super.once(eventName, listener)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
emit(eventName: string, event: BasicEvent<any, any>, ...args: any[]): boolean {
|
|
190
|
+
return super.emit(eventName, ...args)
|
|
191
|
+
}
|
|
192
|
+
}
|