@unchainedshop/events 2.5.12 → 2.6.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/lib/EventDirector.d.ts +28 -2
- package/lib/EventDirector.js +3 -2
- package/lib/EventDirector.js.map +1 -1
- package/lib/events-index.d.ts +3 -2
- package/lib/events-index.js.map +1 -1
- package/package.json +7 -7
- package/src/EventDirector.ts +28 -12
- package/src/events-index.ts +2 -1
package/lib/EventDirector.d.ts
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
export type RawPayloadType<T> = {
|
|
2
|
+
payload: T;
|
|
3
|
+
context: {
|
|
4
|
+
userAgent?: string;
|
|
5
|
+
language?: string;
|
|
6
|
+
country?: string;
|
|
7
|
+
remoteAddress?: string;
|
|
8
|
+
referer?: string;
|
|
9
|
+
origin?: string;
|
|
10
|
+
userId?: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export interface EmitAdapter {
|
|
14
|
+
publish(eventName: string, data: RawPayloadType<Record<string, any>>): void;
|
|
15
|
+
subscribe(eventName: string, callback: (payload: RawPayloadType<Record<string, any>>) => void): void;
|
|
16
|
+
}
|
|
17
|
+
export type ContextNormalizerFunction = (context: any) => RawPayloadType<any>['context'];
|
|
2
18
|
export declare const defaultNormalizer: ContextNormalizerFunction;
|
|
3
|
-
export declare const EventDirector:
|
|
19
|
+
export declare const EventDirector: {
|
|
20
|
+
registerEvents: (events: string[]) => void;
|
|
21
|
+
getRegisteredEvents: () => string[];
|
|
22
|
+
setContextNormalizer: (fn: ContextNormalizerFunction) => void;
|
|
23
|
+
setEmitAdapter: (adapter: EmitAdapter) => void;
|
|
24
|
+
getEmitAdapter: () => EmitAdapter;
|
|
25
|
+
setEmitHistoryAdapter: (adapter: EmitAdapter) => void;
|
|
26
|
+
getEmitHistoryAdapter: () => EmitAdapter;
|
|
27
|
+
emit: (eventName: string, data?: Record<string, any>) => Promise<void>;
|
|
28
|
+
subscribe: <T>(eventName: string, callback: (payload: RawPayloadType<T>) => void) => void;
|
|
29
|
+
};
|
package/lib/EventDirector.js
CHANGED
|
@@ -41,12 +41,13 @@ export const EventDirector = {
|
|
|
41
41
|
const extractedContext = ContextNormalizer(null);
|
|
42
42
|
if (!RegisteredEventsSet.has(eventName))
|
|
43
43
|
throw new Error(`Event with ${eventName} is not registered`);
|
|
44
|
+
const payload = data || {};
|
|
44
45
|
Adapter?.publish(eventName, {
|
|
45
|
-
payload
|
|
46
|
+
payload,
|
|
46
47
|
context: extractedContext,
|
|
47
48
|
});
|
|
48
49
|
HistoryAdapter?.publish(eventName, {
|
|
49
|
-
payload
|
|
50
|
+
payload,
|
|
50
51
|
context: extractedContext,
|
|
51
52
|
});
|
|
52
53
|
logger.verbose(`EventDirector -> Emitted ${eventName} with ${JSON.stringify(data)}`);
|
package/lib/EventDirector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDirector.js","sourceRoot":"","sources":["../src/EventDirector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventDirector.js","sourceRoot":"","sources":["../src/EventDirector.ts"],"names":[],"mappings":"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"}
|
package/lib/events-index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { EmitAdapter } from './EventDirector.js';
|
|
2
|
+
declare const emit: (eventName: string, data?: Record<string, any>) => Promise<void>, getEmitAdapter: () => EmitAdapter, getEmitHistoryAdapter: () => EmitAdapter, getRegisteredEvents: () => string[], registerEvents: (events: string[]) => void, setEmitAdapter: (adapter: EmitAdapter) => void, setEmitHistoryAdapter: (adapter: EmitAdapter) => void, subscribe: <T>(eventName: string, callback: (payload: import("./EventDirector.js").RawPayloadType<T>) => void) => void;
|
|
3
|
+
export { emit, getEmitAdapter, getEmitHistoryAdapter, getRegisteredEvents, registerEvents, setEmitAdapter, setEmitHistoryAdapter, subscribe, EmitAdapter, };
|
package/lib/events-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-index.js","sourceRoot":"","sources":["../src/events-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"events-index.js","sourceRoot":"","sources":["../src/events-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,oBAAoB,CAAC;AAEhE,MAAM,EACJ,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,SAAS,GACV,GAAG,aAAa,CAAC;AAElB,MAAM,aAAa,GAAG,CAAC,WAAW,CAAC,CAAC;AACpC,cAAc,CAAC,aAAa,CAAC,CAAC;AAE9B,OAAO,EACL,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,SAAS,GAEV,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/events",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"main": "lib/events-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/events-index.js",
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/logger": "^2.
|
|
34
|
+
"@unchainedshop/logger": "^2.6.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/jest": "^29.5.
|
|
38
|
-
"@types/node": "^20.
|
|
39
|
-
"@unchainedshop/types": "^2.
|
|
37
|
+
"@types/jest": "^29.5.11",
|
|
38
|
+
"@types/node": "^20.11.6",
|
|
39
|
+
"@unchainedshop/types": "^2.6.0",
|
|
40
40
|
"jest": "^29.7.0",
|
|
41
|
-
"ts-jest": "^29.1.
|
|
42
|
-
"typescript": "^5.3.
|
|
41
|
+
"ts-jest": "^29.1.2",
|
|
42
|
+
"typescript": "^5.3.3"
|
|
43
43
|
}
|
|
44
44
|
}
|
package/src/EventDirector.ts
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ContextNormalizerFunction,
|
|
3
|
-
EmitAdapter,
|
|
4
|
-
EventDirector as IEventDirector,
|
|
5
|
-
} from '@unchainedshop/types/events.js';
|
|
6
1
|
import { createLogger } from '@unchainedshop/logger';
|
|
7
2
|
|
|
8
3
|
const logger = createLogger('unchained:events');
|
|
9
4
|
|
|
5
|
+
export type RawPayloadType<T> = {
|
|
6
|
+
payload: T;
|
|
7
|
+
context: {
|
|
8
|
+
userAgent?: string;
|
|
9
|
+
language?: string;
|
|
10
|
+
country?: string;
|
|
11
|
+
remoteAddress?: string;
|
|
12
|
+
referer?: string;
|
|
13
|
+
origin?: string;
|
|
14
|
+
userId?: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export interface EmitAdapter {
|
|
18
|
+
publish(eventName: string, data: RawPayloadType<Record<string, any>>): void;
|
|
19
|
+
subscribe(eventName: string, callback: (payload: RawPayloadType<Record<string, any>>) => void): void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type ContextNormalizerFunction = (context: any) => RawPayloadType<any>['context'];
|
|
23
|
+
|
|
10
24
|
export const defaultNormalizer: ContextNormalizerFunction = (context) => {
|
|
11
25
|
return {
|
|
12
26
|
userAgent: context?.userAgent,
|
|
@@ -26,7 +40,7 @@ let Adapter: EmitAdapter; // Public (customizable)
|
|
|
26
40
|
let HistoryAdapter: EmitAdapter; // (Per default: Core-events adapter to write into DB)
|
|
27
41
|
let ContextNormalizer = defaultNormalizer;
|
|
28
42
|
|
|
29
|
-
export const EventDirector
|
|
43
|
+
export const EventDirector = {
|
|
30
44
|
registerEvents: (events: string[]): void => {
|
|
31
45
|
if (events.length) {
|
|
32
46
|
events.forEach((e) => RegisteredEventsSet.add(e));
|
|
@@ -42,38 +56,40 @@ export const EventDirector: IEventDirector = {
|
|
|
42
56
|
ContextNormalizer = fn;
|
|
43
57
|
},
|
|
44
58
|
|
|
45
|
-
setEmitAdapter: (adapter: EmitAdapter) => {
|
|
59
|
+
setEmitAdapter: (adapter: EmitAdapter): void => {
|
|
46
60
|
Adapter = adapter;
|
|
47
61
|
},
|
|
48
62
|
|
|
49
63
|
getEmitAdapter: (): EmitAdapter => Adapter,
|
|
50
64
|
|
|
51
|
-
setEmitHistoryAdapter: (adapter: EmitAdapter) => {
|
|
65
|
+
setEmitHistoryAdapter: (adapter: EmitAdapter): void => {
|
|
52
66
|
HistoryAdapter = adapter;
|
|
53
67
|
},
|
|
54
68
|
|
|
55
69
|
getEmitHistoryAdapter: (): EmitAdapter => HistoryAdapter,
|
|
56
70
|
|
|
57
|
-
emit: async (eventName: string, data
|
|
71
|
+
emit: async (eventName: string, data?: Record<string, any>): Promise<void> => {
|
|
58
72
|
const extractedContext = ContextNormalizer(null);
|
|
59
73
|
|
|
60
74
|
if (!RegisteredEventsSet.has(eventName))
|
|
61
75
|
throw new Error(`Event with ${eventName} is not registered`);
|
|
62
76
|
|
|
77
|
+
const payload = data || {};
|
|
78
|
+
|
|
63
79
|
Adapter?.publish(eventName, {
|
|
64
|
-
payload
|
|
80
|
+
payload,
|
|
65
81
|
context: extractedContext,
|
|
66
82
|
});
|
|
67
83
|
|
|
68
84
|
HistoryAdapter?.publish(eventName, {
|
|
69
|
-
payload
|
|
85
|
+
payload,
|
|
70
86
|
context: extractedContext,
|
|
71
87
|
});
|
|
72
88
|
|
|
73
89
|
logger.verbose(`EventDirector -> Emitted ${eventName} with ${JSON.stringify(data)}`);
|
|
74
90
|
},
|
|
75
91
|
|
|
76
|
-
subscribe: (eventName: string, callback: () => void): void => {
|
|
92
|
+
subscribe: <T>(eventName: string, callback: (payload: RawPayloadType<T>) => void): void => {
|
|
77
93
|
const currentSubscription = `${eventName}${callback?.toString()}`; // used to avaoid registering the same event handler callback
|
|
78
94
|
|
|
79
95
|
if (!RegisteredEventsSet.has(eventName))
|
package/src/events-index.ts
CHANGED