@xrystal/core 3.17.6 → 3.17.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "Yusuf Yasir KAYGUSUZ",
3
3
  "name": "@xrystal/core",
4
- "version": "3.17.6",
4
+ "version": "3.17.9",
5
5
  "description": "Project core for xrystal",
6
6
  "publishConfig": {
7
7
  "access": "public",
@@ -4,6 +4,7 @@ export default class ConfigsService implements IService {
4
4
  #private;
5
5
  private config;
6
6
  publicFolderName: string;
7
+ kafkaLogsTopic: string;
7
8
  constructor({ systemService }: {
8
9
  systemService: SystemService;
9
10
  });
@@ -1,8 +1,9 @@
1
1
  import path from 'node:path';
2
- import { publicFolderName } from '../../utils';
2
+ import { kafkaLogsTopic, publicFolderName } from '../../utils';
3
3
  export default class ConfigsService {
4
4
  config = {};
5
5
  publicFolderName = publicFolderName;
6
+ kafkaLogsTopic = kafkaLogsTopic;
6
7
  #systemService;
7
8
  constructor({ systemService }) {
8
9
  this.#systemService = systemService;
@@ -26,6 +27,8 @@ export default class ConfigsService {
26
27
  projectNameSuffixEnv: process.env.PROJECT_NAME_SUFFIX || '',
27
28
  systemStaticFolderPath: path.resolve(rawConfigs.rootFolderPath, this.publicFolderName),
28
29
  systemLoggerLayer: process.env.SYSTEM_LOGGER_LAYER,
30
+ kafkaBrokers: process.env?.KAFKA_BROKERS,
31
+ kafkaLogsTopic: kafkaLogsTopic,
29
32
  baseApiUri: process.env.HTTPS === 'true' ? process.env.SYSTEM_HTTPS_BASE_API_URI : process.env.SYSTEM_BASE_API_URI,
30
33
  port: process.env.PORT || rawConfigs.port || 3000,
31
34
  internalSecret: process.env.INTERNAL_SECRET,
@@ -20,7 +20,9 @@ export default class LoggerService implements IService {
20
20
  private kafkaTopic;
21
21
  private isKafkaReady;
22
22
  winston: CustomLogger;
23
- constructor(deps: any);
23
+ constructor({ configsService }: {
24
+ configsService: any;
25
+ });
24
26
  load: (config: Record<string, any>) => Promise<void>;
25
27
  winstonLoader: ({ loadPath, loggerLevel }: {
26
28
  loadPath: string;
@@ -30,7 +32,7 @@ export default class LoggerService implements IService {
30
32
  private getTracingFormat;
31
33
  private getConsoleFormat;
32
34
  runWithId: <T>(id: string, callback: () => T) => T;
33
- private logToKafka;
35
+ logToKafka(info: any): Promise<void>;
34
36
  log(level: LoggerLayerEnum, message: any, payload?: any, code?: string | number): void;
35
37
  log(options: LogOptions): void;
36
38
  }
@@ -39,23 +39,20 @@ export default class LoggerService {
39
39
  isKafkaReady = false;
40
40
  winston;
41
41
  #configsService;
42
- constructor(deps) {
43
- if (!deps || !deps.configsService) {
44
- throw new Error("LoggerService: configsService is required");
45
- }
46
- this.#configsService = deps.configsService;
42
+ constructor({ configsService }) {
43
+ this.#configsService = configsService;
44
+ this.kafkaTopic = this.#configsService?.all.kafkaTopic;
47
45
  winston.addColors(customColors);
48
46
  this.winston = winston.createLogger({
49
- level: this.#configsService.all.systemLoggerLayer || 'info',
47
+ level: this.#configsService.all.systemLoggerLayer,
50
48
  levels: customLevels,
51
49
  format: this.getConsoleFormat(),
52
50
  transports: [new winston.transports.Console()]
53
51
  });
54
52
  }
55
53
  load = async (config) => {
56
- this.serviceName = config?.serviceName || "service";
57
- this.kafkaTopic = config?.kafkaTopic || "logs";
58
- const rawBrokers = config?.kafkaBrokers;
54
+ this.serviceName = config?.serviceName;
55
+ const rawBrokers = this.#configsService.all.kafkaBrokers;
59
56
  const brokers = rawBrokers ? String(rawBrokers).split(",").map((b) => b.trim()) : [];
60
57
  if (brokers.length > 0) {
61
58
  const kafka = new Kafka({
@@ -67,17 +64,13 @@ export default class LoggerService {
67
64
  createPartitioner: Partitioners.DefaultPartitioner,
68
65
  retry: { initialRetryTime: 500, retries: 5 }
69
66
  });
70
- const connectKafka = async () => {
71
- try {
72
- await this.kafkaProducer?.connect();
73
- this.isKafkaReady = true;
74
- }
75
- catch (err) {
76
- this.isKafkaReady = false;
77
- setTimeout(connectKafka, 10000);
78
- }
79
- };
80
- connectKafka();
67
+ try {
68
+ await this.kafkaProducer.connect();
69
+ this.isKafkaReady = true;
70
+ }
71
+ catch (err) {
72
+ this.isKafkaReady = false;
73
+ }
81
74
  }
82
75
  this.winstonLoader({
83
76
  loadPath: config?.loadPath,
@@ -172,7 +165,7 @@ export default class LoggerService {
172
165
  env: this.#configsService.all.env
173
166
  }, this.safeReplacer)
174
167
  }],
175
- acks: 0
168
+ acks: 1
176
169
  });
177
170
  }
178
171
  catch (err) {
@@ -184,6 +177,7 @@ export default class LoggerService {
184
177
  const { level, message, payload, code } = isObj
185
178
  ? arg1
186
179
  : { level: arg1, message: arg2, payload: arg3, code: arg4 };
187
- this.winston.log(LoggerLayerEnum[level].toLowerCase(), message, { payload, code });
180
+ const levelKey = typeof level === 'string' ? level.toLowerCase() : LoggerLayerEnum[level].toLowerCase();
181
+ this.winston.log(levelKey, message, { payload, code });
188
182
  }
189
183
  }
@@ -1,7 +1,6 @@
1
- // => import dependencies
2
1
  import path from 'path';
3
2
  import { SystemService, ConfigsService, LoggerService, EventsService, LocalizationsService, ClientsService, ControllerService } from '../loader/index';
4
- import { packageName, x, kafkaBrokers, systemLoggerLayer, getTmp, } from '../utils/index';
3
+ import { packageName, x, getTmp, } from '../utils/index';
5
4
  //
6
5
  let coreHasRun = false;
7
6
  export const core = getTmp();
@@ -38,10 +37,8 @@ const coreLoader = async ({}) => {
38
37
  service: LoggerService,
39
38
  props: {
40
39
  loadPath: path.join(rootFolderPath, configs.loaders.loggers.loadPath),
41
- loggerLevel: systemLoggerLayer ?? configs.loaders.loggers.logLevel,
40
+ loggerLevel: configs.loaders.loggers.logLevel,
42
41
  serviceName: configs.service,
43
- kafkaBrokers: kafkaBrokers ?? "",
44
- kafkaTopic: configs.loaders.loggers.topic
45
42
  }
46
43
  },
47
44
  {
@@ -5,5 +5,5 @@ export declare const tmpFileDefaultExt = ".yml";
5
5
  export declare const defaultTmpFilePath: string;
6
6
  export declare const defaultOwnerTmpFilePath: string;
7
7
  export declare const systemLoggerLayer: string;
8
- export declare const kafkaBrokers: string;
9
8
  export declare const publicFolderName = "public";
9
+ export declare const kafkaLogsTopic = "logs";
@@ -7,5 +7,5 @@ export const tmpFileDefaultExt = '.yml';
7
7
  export const defaultTmpFilePath = path.resolve(__dirname(import.meta.url), `../../${tmpFileDefaultMainFolderName}/${tmpFileDefaultName}.yml`);
8
8
  export const defaultOwnerTmpFilePath = path.resolve(`./${tmpFileDefaultMainFolderName}/${tmpFileDefaultName}.yml`);
9
9
  export const systemLoggerLayer = process.env.SYSTEM_LOGGER_LAYER;
10
- export const kafkaBrokers = process.env?.KAFKA_BROKERS;
11
10
  export const publicFolderName = 'public';
11
+ export const kafkaLogsTopic = 'logs';
@@ -1,3 +1,3 @@
1
- export * from './constants/index.js';
2
- export * from './helpers/index.js';
3
- export * from './models/index.js';
1
+ export * from './constants';
2
+ export * from './helpers';
3
+ export * from './models';
@@ -1,3 +1,3 @@
1
- export * from './constants/index.js';
2
- export * from './helpers/index.js';
3
- export * from './models/index.js';
1
+ export * from './constants';
2
+ export * from './helpers';
3
+ export * from './models';