@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.
@@ -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":";;;AAAA,mCAAqC;AAErC,IAAY,MAYX;AAZD,WAAY,MAAM;IAChB,6BAAmB,CAAA;IACnB,qBAAW,CAAA;IACX,+BAAqB,CAAA;IACrB,6BAAmB,CAAA;IACnB,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;IACjB,mBAAS,CAAA;IACT,qCAA2B,CAAA;IAC3B,uBAAa,CAAA;IACb,6BAAmB,CAAA;IACnB,6BAAmB,CAAA;AACrB,CAAC,EAZW,MAAM,sBAAN,MAAM,QAYjB;AAED,IAAY,SAcX;AAdD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0CAA6B,CAAA;IAC7B,0CAA6B,CAAA;IAC7B,oCAAuB,CAAA;IACvB,8CAAiC,CAAA;IACjC,oCAAuB,CAAA;IACvB,gDAAmC,CAAA;IACnC,oCAAuB,CAAA;IACvB,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,oCAAuB,CAAA;IACvB,gCAAmB,CAAA;IACnB,wBAAW,CAAA;AACb,CAAC,EAdW,SAAS,yBAAT,SAAS,QAcpB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;AACrB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,IAAY,oBAUX;AAVD,WAAY,oBAAoB;IAC9B,yDAAiC,CAAA;IACjC,iDAAyB,CAAA;IACzB,2DAAmC,CAAA;IACnC,mDAA2B,CAAA;IAC3B,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,iEAAyC,CAAA;IACzC,6CAAqB,CAAA;IACrB,+CAAuB,CAAA;AACzB,CAAC,EAVW,oBAAoB,oCAApB,oBAAoB,QAU/B;AAID,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IACjC,sCAAW,CAAA;IACX,sCAAW,CAAA;IACX,0CAAe,CAAA;IACf,gDAAqB,CAAA;IACrB,0CAAe,CAAA;IACf,wCAAa,CAAA;AACf,CAAC,EAPW,uBAAuB,uCAAvB,uBAAuB,QAOlC;AAuBD,MAAa,YAAY;IAIvB;QAFQ,cAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE/B,CAAC;IAEjB,MAAM,CAAC,QAAQ;QACpB,OAAO,YAAY,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAqB,EAAE,IAA4B;QACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAK,IAAI,EAAE,CAAC,CAAA;QACvE,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,IAAgC;;QAChD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;aAAM,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,KAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC,qBAAqB,IAAI,iBAAiB,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,IAAgC;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ,CAAC,MAA+D;QACtE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC7D,CAAC;IAED,YAAY,CAAC,SAA0B;QACrC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,IAAI,CAAC,SAA0B,EAAE,KAAiC,EAAE,GAAG,IAAW;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,aAAa,CAAC,SAA0B;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAA;IACtH,CAAC;IAED,SAAS,CAAC,MAA0E;QAClF,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACrG,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CACL,IAAI,CAAC,YAAY,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACvB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACnC,CAAC,CAAC,EACF,MAAM,CACP,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACpE,CACF,CAAA;IACH,CAAC;IAEO,YAAY,CAClB,GAAkD,EAClD,MAGC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,MAAK,IAAI,CAAC,CAAC,CAAA;QAC/I,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtC,CAAC;;AAtFH,oCAuFC;AAtFyB,qBAAQ,GAAG,IAAI,YAAY,EAAE,AAArB,CAAqB;AAwFvD,MAAa,iBAAkB,SAAQ,qBAAY;IACjD,WAAW,CAAC,SAA0B,EAAE,QAA+D;QACrG,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,CAAC,SAA0B,EAAE,QAA+D;QAC9F,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,SAAiB,EAAE,KAA2B,EAAE,GAAG,IAAW;QACjE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;IACvC,CAAC;CACF;AAZD,8CAYC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './types';
2
2
  export * from './utils';
3
+ export * from './events';
3
4
  export * from './logging';
4
5
  export * from './mapper';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -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.7+1a34e421",
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": "1a34e4210d6d2f898e064b5be2b18fc50e32d3f8"
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
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './types'
2
2
  export * from './utils'
3
+ export * from './events'
3
4
  export * from './logging'
4
5
  export * from './mapper'