@privateaim/server-kit 0.8.14 → 0.8.16

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.
Files changed (87) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/core/component/handler/check.d.ts +4 -0
  3. package/dist/core/component/handler/check.d.ts.map +1 -0
  4. package/dist/core/component/handler/index.d.ts +3 -0
  5. package/dist/core/component/handler/index.d.ts.map +1 -0
  6. package/dist/core/component/handler/module.d.ts +11 -0
  7. package/dist/core/component/handler/module.d.ts.map +1 -0
  8. package/dist/core/component/handler/types.d.ts +11 -0
  9. package/dist/core/component/handler/types.d.ts.map +1 -0
  10. package/dist/core/component/index.d.ts +1 -0
  11. package/dist/core/component/index.d.ts.map +1 -1
  12. package/dist/core/queue-router/module.d.ts +3 -2
  13. package/dist/core/queue-router/module.d.ts.map +1 -1
  14. package/dist/core/queue-router/types.d.ts +7 -4
  15. package/dist/core/queue-router/types.d.ts.map +1 -1
  16. package/dist/index.cjs +233 -167
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +225 -128
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/services/amqp/index.d.ts +1 -0
  21. package/dist/services/amqp/index.d.ts.map +1 -1
  22. package/dist/services/amqp/module.d.ts +2 -5
  23. package/dist/services/amqp/module.d.ts.map +1 -1
  24. package/dist/services/amqp/singleton.d.ts +6 -0
  25. package/dist/services/amqp/singleton.d.ts.map +1 -0
  26. package/dist/services/domain-event/index.d.ts +1 -1
  27. package/dist/services/domain-event/index.d.ts.map +1 -1
  28. package/dist/services/domain-event/module.d.ts +6 -6
  29. package/dist/services/domain-event/module.d.ts.map +1 -1
  30. package/dist/services/domain-event/redis/helpers.d.ts +2 -0
  31. package/dist/services/domain-event/redis/helpers.d.ts.map +1 -0
  32. package/dist/services/domain-event/redis/index.d.ts +1 -0
  33. package/dist/services/domain-event/redis/index.d.ts.map +1 -1
  34. package/dist/services/domain-event/redis/module.d.ts +3 -3
  35. package/dist/services/domain-event/redis/module.d.ts.map +1 -1
  36. package/dist/services/domain-event/singleton.d.ts +1 -0
  37. package/dist/services/domain-event/singleton.d.ts.map +1 -1
  38. package/dist/services/domain-event/socket/helpers.d.ts +3 -0
  39. package/dist/services/domain-event/socket/helpers.d.ts.map +1 -0
  40. package/dist/services/domain-event/socket/index.d.ts +1 -0
  41. package/dist/services/domain-event/socket/index.d.ts.map +1 -1
  42. package/dist/services/domain-event/socket/module.d.ts +3 -3
  43. package/dist/services/domain-event/socket/module.d.ts.map +1 -1
  44. package/dist/services/domain-event/types.d.ts +37 -0
  45. package/dist/services/domain-event/types.d.ts.map +1 -0
  46. package/dist/services/domain-event/utils.d.ts +0 -2
  47. package/dist/services/domain-event/utils.d.ts.map +1 -1
  48. package/dist/services/index.d.ts +0 -1
  49. package/dist/services/index.d.ts.map +1 -1
  50. package/dist/services/logger/module.d.ts.map +1 -1
  51. package/dist/services/logger/types.d.ts +2 -2
  52. package/dist/services/logger/types.d.ts.map +1 -1
  53. package/package.json +6 -6
  54. package/src/core/component/handler/check.ts +23 -0
  55. package/src/{services/loki → core/component/handler}/index.ts +2 -2
  56. package/src/core/component/handler/module.ts +57 -0
  57. package/src/core/component/handler/types.ts +28 -0
  58. package/src/core/component/index.ts +1 -0
  59. package/src/core/queue-router/module.ts +30 -4
  60. package/src/core/queue-router/types.ts +12 -5
  61. package/src/services/amqp/index.ts +1 -0
  62. package/src/services/amqp/module.ts +5 -19
  63. package/src/services/{loki → amqp}/singleton.ts +6 -6
  64. package/src/services/domain-event/index.ts +1 -1
  65. package/src/services/domain-event/module.ts +32 -15
  66. package/src/services/domain-event/redis/helpers.ts +28 -0
  67. package/src/services/domain-event/redis/index.ts +1 -0
  68. package/src/services/domain-event/redis/module.ts +19 -12
  69. package/src/services/domain-event/singleton.ts +9 -5
  70. package/src/services/domain-event/socket/helpers.ts +26 -0
  71. package/src/services/domain-event/socket/index.ts +1 -0
  72. package/src/services/domain-event/socket/module.ts +27 -31
  73. package/src/services/domain-event/types.ts +59 -0
  74. package/src/services/domain-event/utils.ts +0 -12
  75. package/src/services/index.ts +0 -1
  76. package/src/services/logger/module.ts +7 -17
  77. package/src/services/logger/types.ts +4 -4
  78. package/dist/services/domain-event/type.d.ts +0 -15
  79. package/dist/services/domain-event/type.d.ts.map +0 -1
  80. package/dist/services/loki/index.d.ts +0 -3
  81. package/dist/services/loki/index.d.ts.map +0 -1
  82. package/dist/services/loki/module.d.ts +0 -3
  83. package/dist/services/loki/module.d.ts.map +0 -1
  84. package/dist/services/loki/singleton.d.ts +0 -6
  85. package/dist/services/loki/singleton.d.ts.map +0 -1
  86. package/src/services/domain-event/type.ts +0 -27
  87. package/src/services/loki/module.ts +0 -30
@@ -0,0 +1,59 @@
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 type { ObjectLiteral } from '@privateaim/kit';
9
+
10
+ export type DomainEventDestination = {
11
+ namespace?: string | string[],
12
+ channel: string | string[]
13
+ };
14
+
15
+ export type DomainEventDestinations = DomainEventDestination[];
16
+
17
+ export type DomainEventDestinationsFn<
18
+ T extends ObjectLiteral =ObjectLiteral,
19
+ > = (data: T) => DomainEventDestination[];
20
+
21
+ export type DomainEventMetadata = {
22
+ domain: string,
23
+ event: string,
24
+
25
+ request_path?: string | null,
26
+ request_method?: string | null;
27
+ request_ip_address?: string | null;
28
+ request_user_agent?: string | null;
29
+
30
+ actor_type?: string | null;
31
+ actor_id?: string | null;
32
+ actor_name?: string | null;
33
+ };
34
+
35
+ export type DomainEventPublishOptions<
36
+ T extends ObjectLiteral = ObjectLiteral,
37
+ > = {
38
+ data: T,
39
+ dataPrevious?: T,
40
+ metadata: DomainEventMetadata,
41
+ destinations: DomainEventDestinations | DomainEventDestinationsFn<T>
42
+ };
43
+
44
+ export interface IDomainEventPublisher {
45
+ publish(ctx: DomainEventPublishOptions) : Promise<void>;
46
+ }
47
+
48
+ export type DomainEventConsumeOptions<
49
+ T extends ObjectLiteral = ObjectLiteral,
50
+ > = {
51
+ data: T,
52
+ dataPrevious?: T,
53
+ metadata: DomainEventMetadata,
54
+ destinations: DomainEventDestinations
55
+ };
56
+
57
+ export interface IDomainEventConsumer {
58
+ consume(ctx: DomainEventConsumeOptions) : Promise<void>;
59
+ }
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  import { isObject } from '@privateaim/kit';
9
- import type { DomainEventChannelName } from './type';
10
9
 
11
10
  export function transformEventData<T>(input: T) : T {
12
11
  if (isObject(input)) {
@@ -21,14 +20,3 @@ export function transformEventData<T>(input: T) : T {
21
20
 
22
21
  return input;
23
22
  }
24
-
25
- export function buildEventChannelName(
26
- input: DomainEventChannelName,
27
- id?: string | number,
28
- ) : string {
29
- if (typeof input === 'string') {
30
- return input;
31
- }
32
-
33
- return input(id);
34
- }
@@ -10,7 +10,6 @@ export * from './authup';
10
10
  export * from './authup-client-authentication-hook';
11
11
  export * from './cache';
12
12
  export * from './domain-event';
13
- export * from './loki';
14
13
  export * from './logger';
15
14
  export * from './redis';
16
15
  export * from './vault';
@@ -6,39 +6,30 @@
6
6
  */
7
7
 
8
8
  import { read } from 'envix';
9
- import path from 'node:path';
10
9
  import { EnvironmentName } from 'typeorm-extension';
11
10
  import type { Logger } from 'winston';
12
11
  import { createLogger as create, format, transports } from 'winston';
13
12
  import type { LoggerCreateContext, LoggerTransports } from './types';
14
13
 
15
- export function createLogger(ctx: LoggerCreateContext = {}) : Logger {
16
- const { directory, options = {} } = ctx;
14
+ function toTransports(input: LoggerTransports) {
15
+ return Array.isArray(input) ? input : [input];
16
+ }
17
17
 
18
+ export function createLogger(ctx: LoggerCreateContext = {}) : Logger {
18
19
  let loggerTransports : LoggerTransports;
19
20
  if (read('env') === EnvironmentName.PRODUCTION) {
20
21
  loggerTransports = [
21
22
  new transports.Console({
22
23
  level: 'info',
23
24
  }),
24
- new transports.File({
25
- filename: path.join(directory || process.cwd(), 'access.log'),
26
- level: 'http',
27
- maxsize: 10 * 1024 * 1024, // 10MB
28
- maxFiles: 5,
29
- }),
30
- new transports.File({
31
- filename: path.join(directory || process.cwd(), 'error.log'),
32
- level: 'warn',
33
- maxsize: 10 * 1024 * 1024, // 10MB
34
- maxFiles: 5,
35
- }),
25
+ ...(ctx.transports ? toTransports(ctx.transports) : []),
36
26
  ];
37
27
  } else {
38
28
  loggerTransports = [
39
29
  new transports.Console({
40
30
  level: 'debug',
41
31
  }),
32
+ ...(ctx.transports ? toTransports(ctx.transports) : []),
42
33
  ];
43
34
  }
44
35
 
@@ -46,12 +37,11 @@ export function createLogger(ctx: LoggerCreateContext = {}) : Logger {
46
37
  format: format.combine(
47
38
  format.errors({ stack: true }),
48
39
  format.timestamp(),
49
- format.colorize(),
50
40
  format.simple(),
51
41
  ),
52
42
  level: 'debug',
53
43
  transports: loggerTransports,
54
44
  // todo: deeply merge options
55
- ...(options || {}),
45
+ ...(ctx.options || {}),
56
46
  });
57
47
  }
@@ -7,13 +7,13 @@
7
7
 
8
8
  import type { Logger, LoggerOptions } from 'winston';
9
9
 
10
+ export type LoggerTransports = LoggerOptions['transports'];
11
+
10
12
  export type LoggerCreateContext = {
11
- directory?: string,
12
- options?: Partial<LoggerOptions>
13
+ options?: Partial<LoggerOptions>,
14
+ transports?: LoggerTransports
13
15
  };
14
16
 
15
- export type LoggerTransports = LoggerOptions['transports'];
16
-
17
17
  export type {
18
18
  Logger,
19
19
  };
@@ -1,15 +0,0 @@
1
- import type { DomainEventRecord } from '@privateaim/kit';
2
- export type DomainEventChannelName = string | ((id?: string | number) => string);
3
- export type DomainEventDestination = {
4
- namespace?: string;
5
- channel: DomainEventChannelName;
6
- };
7
- export type DomainEventDestinations = DomainEventDestination[];
8
- export type DomainEventPublishContext<T extends DomainEventRecord = DomainEventRecord> = {
9
- data: T;
10
- destinations: DomainEventDestinations;
11
- };
12
- export interface IDomainEventPublisher {
13
- publish(ctx: DomainEventPublishContext): Promise<void>;
14
- }
15
- //# sourceMappingURL=type.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/services/domain-event/type.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,sBAAsB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,sBAAsB,CAAA;CAClC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,EAAE,CAAC;AAE/D,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAC/C;IACA,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,uBAAuB,CAAA;CACxC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D"}
@@ -1,3 +0,0 @@
1
- export * from './module';
2
- export * from './singleton';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/loki/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -1,3 +0,0 @@
1
- import { LokiClient, CompactorDeletionRequestCreate as LokiCompactorDeletionRequestCreate, Config as LokiConfig, ConfigInput as LokiConfigInput, DistributorPushStream as LokiDistributorPushStream, QuerierQueryRangeOptions as LokiQuerierQueryRangeOptions, QuerierQueryResult as LokiQuerierQueryResult, createClient as createLokiClient, nanoSeconds } from '@hapic/loki';
2
- export { LokiClient, LokiConfig, LokiConfigInput, LokiCompactorDeletionRequestCreate, LokiDistributorPushStream, LokiQuerierQueryRangeOptions, LokiQuerierQueryResult, createLokiClient, nanoSeconds, };
3
- //# sourceMappingURL=module.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/loki/module.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,UAAU,EACV,8BAA8B,IAAI,kCAAkC,EACpE,MAAM,IAAI,UAAU,EACpB,WAAW,IAAI,eAAe,EAC9B,qBAAqB,IAAI,yBAAyB,EAClD,wBAAwB,IAAI,4BAA4B,EACxD,kBAAkB,IAAI,sBAAsB,EAC5C,YAAY,IAAI,gBAAgB,EAChC,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,EACV,UAAU,EACV,eAAe,EACf,kCAAkC,EAClC,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,GACd,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Factory } from 'singa';
2
- import type { LokiClient } from '@hapic/loki';
3
- export declare function setLokiFactory(factory: Factory<LokiClient>): void;
4
- export declare function isLokiClientUsable(): boolean;
5
- export declare function useLokiClient(): LokiClient;
6
- //# sourceMappingURL=singleton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/loki/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAE1D;AAED,wBAAgB,kBAAkB,YAEjC;AAED,wBAAgB,aAAa,eAE5B"}
@@ -1,27 +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 type { DomainEventRecord } from '@privateaim/kit';
9
-
10
- export type DomainEventChannelName = string | ((id?: string | number) => string);
11
- export type DomainEventDestination = {
12
- namespace?: string,
13
- channel: DomainEventChannelName
14
- };
15
-
16
- export type DomainEventDestinations = DomainEventDestination[];
17
-
18
- export type DomainEventPublishContext<
19
- T extends DomainEventRecord = DomainEventRecord,
20
- > = {
21
- data: T,
22
- destinations: DomainEventDestinations
23
- };
24
-
25
- export interface IDomainEventPublisher {
26
- publish(ctx: DomainEventPublishContext) : Promise<void>;
27
- }
@@ -1,30 +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 {
9
- LokiClient,
10
- CompactorDeletionRequestCreate as LokiCompactorDeletionRequestCreate,
11
- Config as LokiConfig,
12
- ConfigInput as LokiConfigInput,
13
- DistributorPushStream as LokiDistributorPushStream,
14
- QuerierQueryRangeOptions as LokiQuerierQueryRangeOptions,
15
- QuerierQueryResult as LokiQuerierQueryResult,
16
- createClient as createLokiClient,
17
- nanoSeconds,
18
- } from '@hapic/loki';
19
-
20
- export {
21
- LokiClient,
22
- LokiConfig,
23
- LokiConfigInput,
24
- LokiCompactorDeletionRequestCreate,
25
- LokiDistributorPushStream,
26
- LokiQuerierQueryRangeOptions,
27
- LokiQuerierQueryResult,
28
- createLokiClient,
29
- nanoSeconds,
30
- };