@privateaim/server-kit 0.8.16 → 0.8.18
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/CHANGELOG.md +39 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/index.cjs +165 -142
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +156 -135
- package/dist/index.mjs.map +1 -1
- package/dist/services/entity-event/handlers/index.d.ts +3 -0
- package/dist/services/entity-event/handlers/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/helpers.d.ts +2 -0
- package/dist/services/entity-event/handlers/redis/helpers.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/module.d.ts +8 -0
- package/dist/services/entity-event/handlers/redis/module.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/socket/index.d.ts +2 -0
- package/dist/services/entity-event/handlers/socket/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/socket/module.d.ts +10 -0
- package/dist/services/entity-event/handlers/socket/module.d.ts.map +1 -0
- package/dist/services/entity-event/index.d.ts +5 -0
- package/dist/services/entity-event/index.d.ts.map +1 -0
- package/dist/services/entity-event/module.d.ts +10 -0
- package/dist/services/{domain-event → entity-event}/module.d.ts.map +1 -1
- package/dist/services/entity-event/singleton.d.ts +5 -0
- package/dist/services/entity-event/singleton.d.ts.map +1 -0
- package/dist/services/entity-event/types.d.ts +38 -0
- package/dist/services/entity-event/types.d.ts.map +1 -0
- package/dist/services/entity-event/utils.d.ts +2 -0
- package/dist/services/entity-event/utils.d.ts.map +1 -0
- package/dist/services/index.d.ts +1 -1
- package/dist/services/logger/index.d.ts +1 -0
- package/dist/services/logger/index.d.ts.map +1 -1
- package/dist/services/logger/module.d.ts +1 -2
- package/dist/services/logger/module.d.ts.map +1 -1
- package/dist/services/logger/singleton.d.ts +1 -1
- package/dist/services/logger/transports/console.d.ts +8 -0
- package/dist/services/logger/transports/console.d.ts.map +1 -0
- package/dist/services/logger/transports/index.d.ts +3 -0
- package/dist/services/logger/transports/index.d.ts.map +1 -0
- package/dist/services/logger/transports/memory.d.ts +6 -0
- package/dist/services/logger/transports/memory.d.ts.map +1 -0
- package/dist/services/logger/types.d.ts +27 -4
- package/dist/services/logger/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/constants.ts +12 -0
- package/src/index.ts +1 -0
- package/src/services/entity-event/handlers/index.ts +9 -0
- package/src/services/{domain-event → entity-event/handlers}/redis/helpers.ts +4 -4
- package/src/services/{domain-event → entity-event/handlers}/redis/module.ts +8 -8
- package/src/services/{domain-event → entity-event/handlers}/socket/index.ts +0 -1
- package/src/services/entity-event/handlers/socket/module.ts +71 -0
- package/src/services/{domain-event → entity-event}/index.ts +1 -2
- package/src/services/{domain-event → entity-event}/module.ts +24 -20
- package/src/services/entity-event/singleton.ts +22 -0
- package/src/services/{domain-event → entity-event}/types.ts +18 -16
- package/src/services/{domain-event → entity-event}/utils.ts +1 -1
- package/src/services/index.ts +1 -1
- package/src/services/logger/index.ts +1 -0
- package/src/services/logger/module.ts +12 -25
- package/src/services/logger/singleton.ts +1 -1
- package/src/services/logger/transports/console.ts +27 -0
- package/src/services/logger/transports/index.ts +9 -0
- package/src/services/logger/transports/memory.ts +18 -0
- package/src/services/logger/types.ts +27 -5
- package/test/data/error.ts +16 -0
- package/test/unit/logger.spec.ts +57 -0
- package/dist/services/domain-event/index.d.ts +0 -6
- package/dist/services/domain-event/index.d.ts.map +0 -1
- package/dist/services/domain-event/module.d.ts +0 -10
- package/dist/services/domain-event/redis/helpers.d.ts +0 -2
- package/dist/services/domain-event/redis/helpers.d.ts.map +0 -1
- package/dist/services/domain-event/redis/index.d.ts.map +0 -1
- package/dist/services/domain-event/redis/module.d.ts +0 -8
- package/dist/services/domain-event/redis/module.d.ts.map +0 -1
- package/dist/services/domain-event/singleton.d.ts +0 -4
- package/dist/services/domain-event/singleton.d.ts.map +0 -1
- package/dist/services/domain-event/socket/helpers.d.ts +0 -3
- package/dist/services/domain-event/socket/helpers.d.ts.map +0 -1
- package/dist/services/domain-event/socket/index.d.ts +0 -3
- package/dist/services/domain-event/socket/index.d.ts.map +0 -1
- package/dist/services/domain-event/socket/module.d.ts +0 -8
- package/dist/services/domain-event/socket/module.d.ts.map +0 -1
- package/dist/services/domain-event/types.d.ts +0 -37
- package/dist/services/domain-event/types.d.ts.map +0 -1
- package/dist/services/domain-event/utils.d.ts +0 -2
- package/dist/services/domain-event/utils.d.ts.map +0 -1
- package/src/services/domain-event/singleton.ts +0 -36
- package/src/services/domain-event/socket/helpers.ts +0 -26
- package/src/services/domain-event/socket/module.ts +0 -53
- /package/dist/services/{domain-event → entity-event/handlers}/redis/index.d.ts +0 -0
- /package/src/services/{domain-event → entity-event/handlers}/redis/index.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/domain-event/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ObjectLiteral } from '@privateaim/kit';
|
|
2
|
-
import type { DomainEventPublishOptions, IDomainEventConsumer, IDomainEventPublisher } from './types';
|
|
3
|
-
export declare class DomainEventPublisher implements IDomainEventPublisher {
|
|
4
|
-
protected consumers: Set<IDomainEventConsumer>;
|
|
5
|
-
constructor();
|
|
6
|
-
addConsumer(consumer: IDomainEventConsumer): void;
|
|
7
|
-
safePublish<T extends ObjectLiteral = ObjectLiteral>(ctx: DomainEventPublishOptions<T>): Promise<void>;
|
|
8
|
-
publish<T extends ObjectLiteral = ObjectLiteral>(ctx: DomainEventPublishOptions<T>): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/redis/helpers.ts"],"names":[],"mappings":"AAWA,wBAAgB,4BAA4B,CACxC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,UAchC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/redis/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Client } from 'redis-extension';
|
|
2
|
-
import type { DomainEventPublishOptions, IDomainEventConsumer } from '../types';
|
|
3
|
-
export declare class DomainEventRedisPublisher implements IDomainEventConsumer {
|
|
4
|
-
protected driver: Client;
|
|
5
|
-
constructor(client: Client);
|
|
6
|
-
consume(ctx: DomainEventPublishOptions): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIhF,qBAAa,yBAA0B,YAAW,oBAAoB;IAClE,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC;CAuBhE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/domain-event/singleton.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAoBhD,wBAAgB,4BAA4B,gDAE3C;AAED,wBAAgB,uBAAuB,yBAEtC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/socket/helpers.ts"],"names":[],"mappings":"AAOA,wBAAgB,+BAA+B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,UAU5E;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,UAMvE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/socket/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Client } from 'redis-extension';
|
|
2
|
-
import type { DomainEventPublishOptions, IDomainEventConsumer } from '../types';
|
|
3
|
-
export declare class DomainEventSocketConsumer implements IDomainEventConsumer {
|
|
4
|
-
protected client: Client;
|
|
5
|
-
constructor(client: Client);
|
|
6
|
-
consume(ctx: DomainEventPublishOptions): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/services/domain-event/socket/module.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIhF,qBAAa,yBAA0B,YAAW,oBAAoB;IAClE,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC;CA+BhE"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { ObjectLiteral } from '@privateaim/kit';
|
|
2
|
-
export type DomainEventDestination = {
|
|
3
|
-
namespace?: string | string[];
|
|
4
|
-
channel: string | string[];
|
|
5
|
-
};
|
|
6
|
-
export type DomainEventDestinations = DomainEventDestination[];
|
|
7
|
-
export type DomainEventDestinationsFn<T extends ObjectLiteral = ObjectLiteral> = (data: T) => DomainEventDestination[];
|
|
8
|
-
export type DomainEventMetadata = {
|
|
9
|
-
domain: string;
|
|
10
|
-
event: string;
|
|
11
|
-
request_path?: string | null;
|
|
12
|
-
request_method?: string | null;
|
|
13
|
-
request_ip_address?: string | null;
|
|
14
|
-
request_user_agent?: string | null;
|
|
15
|
-
actor_type?: string | null;
|
|
16
|
-
actor_id?: string | null;
|
|
17
|
-
actor_name?: string | null;
|
|
18
|
-
};
|
|
19
|
-
export type DomainEventPublishOptions<T extends ObjectLiteral = ObjectLiteral> = {
|
|
20
|
-
data: T;
|
|
21
|
-
dataPrevious?: T;
|
|
22
|
-
metadata: DomainEventMetadata;
|
|
23
|
-
destinations: DomainEventDestinations | DomainEventDestinationsFn<T>;
|
|
24
|
-
};
|
|
25
|
-
export interface IDomainEventPublisher {
|
|
26
|
-
publish(ctx: DomainEventPublishOptions): Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
export type DomainEventConsumeOptions<T extends ObjectLiteral = ObjectLiteral> = {
|
|
29
|
-
data: T;
|
|
30
|
-
dataPrevious?: T;
|
|
31
|
-
metadata: DomainEventMetadata;
|
|
32
|
-
destinations: DomainEventDestinations;
|
|
33
|
-
};
|
|
34
|
-
export interface IDomainEventConsumer {
|
|
35
|
-
consume(ctx: DomainEventConsumeOptions): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/domain-event/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,EAAE,CAAC;AAE/D,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,aAAa,GAAE,aAAa,IACtC,CAAC,IAAI,EAAE,CAAC,KAAK,sBAAsB,EAAE,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,aAAa,GAAG,aAAa,IACvC;IACA,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,uBAAuB,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAA;CACvE,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,aAAa,GAAG,aAAa,IACvC;IACA,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,uBAAuB,CAAA;CACxC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/services/domain-event/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAI,CAAC,CAYlD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024.
|
|
3
|
-
* Author Peter Placzek (tada5hi)
|
|
4
|
-
* For the full copyright and license information,
|
|
5
|
-
* view the LICENSE file that was distributed with this source code.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { singa } from 'singa';
|
|
9
|
-
import { isRedisClientUsable, useRedisClient } from '../redis';
|
|
10
|
-
import { DomainEventPublisher } from './module';
|
|
11
|
-
import { DomainEventRedisPublisher } from './redis';
|
|
12
|
-
import { DomainEventSocketConsumer } from './socket';
|
|
13
|
-
|
|
14
|
-
const singaInstance = singa<DomainEventPublisher>({
|
|
15
|
-
name: 'domainEventPublisher',
|
|
16
|
-
factory: () => {
|
|
17
|
-
const publisher = new DomainEventPublisher();
|
|
18
|
-
|
|
19
|
-
if (isRedisClientUsable()) {
|
|
20
|
-
const client = useRedisClient();
|
|
21
|
-
|
|
22
|
-
publisher.addConsumer(new DomainEventRedisPublisher(client));
|
|
23
|
-
publisher.addConsumer(new DomainEventSocketConsumer(client));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return publisher;
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export function useDomainEventPublisherSinga() {
|
|
31
|
-
return singaInstance;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function useDomainEventPublisher() {
|
|
35
|
-
return singaInstance.use();
|
|
36
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025.
|
|
3
|
-
* Author Peter Placzek (tada5hi)
|
|
4
|
-
* For the full copyright and license information,
|
|
5
|
-
* view the LICENSE file that was distributed with this source code.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export function buildDomainEventSocketNamespace(namespace?: string | string[]) {
|
|
9
|
-
if (typeof namespace === 'undefined') {
|
|
10
|
-
return '/';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (typeof namespace === 'string') {
|
|
14
|
-
return namespace.startsWith('/') ? namespace : `/${namespace}`;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return `/${namespace.join('/')}`;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function buildDomainEventSocketChannel(channel: string | string[]) {
|
|
21
|
-
if (typeof channel === 'string') {
|
|
22
|
-
return channel;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return channel.join('/');
|
|
26
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2022-2024.
|
|
3
|
-
* Author Peter Placzek (tada5hi)
|
|
4
|
-
* For the full copyright and license information,
|
|
5
|
-
* view the LICENSE file that was distributed with this source code.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { buildDomainEventFullName } from '@privateaim/kit';
|
|
9
|
-
import { Emitter } from '@socket.io/redis-emitter';
|
|
10
|
-
import type { Client } from 'redis-extension';
|
|
11
|
-
import type { DomainEventPublishOptions, IDomainEventConsumer } from '../types';
|
|
12
|
-
import { transformEventData } from '../utils';
|
|
13
|
-
import { buildDomainEventSocketChannel, buildDomainEventSocketNamespace } from './helpers';
|
|
14
|
-
|
|
15
|
-
export class DomainEventSocketConsumer implements IDomainEventConsumer {
|
|
16
|
-
protected client : Client;
|
|
17
|
-
|
|
18
|
-
constructor(client: Client) {
|
|
19
|
-
this.client = client;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async consume(ctx: DomainEventPublishOptions) : Promise<void> {
|
|
23
|
-
ctx.data = transformEventData(ctx.data);
|
|
24
|
-
|
|
25
|
-
for (let i = 0; i < ctx.destinations.length; i++) {
|
|
26
|
-
const destination = ctx.destinations[i];
|
|
27
|
-
|
|
28
|
-
const namespace = buildDomainEventSocketNamespace(destination.namespace);
|
|
29
|
-
const roomName = buildDomainEventSocketChannel(destination.channel);
|
|
30
|
-
|
|
31
|
-
const fullEventName = buildDomainEventFullName(
|
|
32
|
-
ctx.metadata.domain,
|
|
33
|
-
ctx.metadata.event,
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
const emitter = new Emitter(this.client, {}, namespace);
|
|
37
|
-
|
|
38
|
-
emitter
|
|
39
|
-
.in(roomName)
|
|
40
|
-
.emit(fullEventName, {
|
|
41
|
-
data: {
|
|
42
|
-
data: ctx.data,
|
|
43
|
-
type: ctx.metadata.domain,
|
|
44
|
-
event: ctx.metadata.event,
|
|
45
|
-
},
|
|
46
|
-
meta: {
|
|
47
|
-
namespace,
|
|
48
|
-
roomName,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
File without changes
|
|
File without changes
|