@cryptexlabs/codex-nodejs-common 0.5.5 → 0.6.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -8,4 +8,5 @@ export declare class AppHttpExceptionFilter extends BaseExceptionFilter {
8
8
  private readonly config;
9
9
  constructor(fallbackLocale: Locale, fallbackLogger: LoggerService, config: DefaultConfig, applicationRef?: HttpServer);
10
10
  catch(exception: any, host: ArgumentsHost): void;
11
+ getDeveloperText(exception: any, locale: any): string;
11
12
  }
@@ -57,13 +57,27 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
57
57
  const started = exception instanceof exception_1.FriendlyHttpException
58
58
  ? exception.context.started
59
59
  : undefined;
60
+ const developerText = this.getDeveloperText(exception, locale);
61
+ const userMessage = exception instanceof exception_1.FriendlyHttpException ? exception.userMessage : "";
62
+ const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, developerText, userMessage), exception.stack || null, this.config, correlationId, started);
63
+ response.status(status).json(errorHttpResponse);
64
+ }
65
+ getDeveloperText(exception, locale) {
60
66
  let developerText = locales_1.i18nData.__({
61
67
  phrase: enum_1.LocalesEnum.UNKNOWN_ERROR,
62
68
  locale: locale.i18n,
63
69
  });
64
70
  if (exception) {
65
71
  if (exception.getStatus) {
66
- if (exception.message.message) {
72
+ if (exception.response && exception.response.message) {
73
+ if (Array.isArray(exception.response.message)) {
74
+ developerText = exception.response.message.join(" + ");
75
+ }
76
+ else {
77
+ developerText = exception.response.message;
78
+ }
79
+ }
80
+ else if (exception.message.message) {
67
81
  developerText = exception.message.message;
68
82
  }
69
83
  else {
@@ -71,9 +85,7 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
71
85
  }
72
86
  }
73
87
  }
74
- const userMessage = exception instanceof exception_1.FriendlyHttpException ? exception.userMessage : "";
75
- const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, developerText, userMessage), exception.stack || null, this.config, correlationId, started);
76
- response.status(status).json(errorHttpResponse);
88
+ return developerText;
77
89
  }
78
90
  };
79
91
  AppHttpExceptionFilter = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import { ElasticsearchService } from "@nestjs/elasticsearch";
2
2
  import { CustomLogger } from "../../logger";
3
+ import { ElasticsearchPinger } from "./elasticsearch.pinger";
3
4
  export declare class ElasticsearchInitializer {
4
5
  private readonly logger;
5
6
  private readonly index;
6
7
  private readonly elasticsearchService;
7
8
  private readonly indexProperties;
9
+ private readonly elasticsearchPinger;
8
10
  private readonly type?;
9
- constructor(logger: CustomLogger, index: string, elasticsearchService: ElasticsearchService, indexProperties: any, type?: string);
11
+ constructor(logger: CustomLogger, index: string, elasticsearchService: ElasticsearchService, indexProperties: any, elasticsearchPinger: ElasticsearchPinger, type?: string);
10
12
  private _createIndex;
11
13
  private _getIndexExists;
12
14
  initializeIndex(): Promise<void>;
13
- _waitForReady(): Promise<void>;
14
- _isReady(): Promise<boolean>;
15
15
  }
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ElasticsearchInitializer = void 0;
4
4
  class ElasticsearchInitializer {
5
- constructor(logger, index, elasticsearchService, indexProperties, type) {
5
+ constructor(logger, index, elasticsearchService, indexProperties, elasticsearchPinger, type) {
6
6
  this.logger = logger;
7
7
  this.index = index;
8
8
  this.elasticsearchService = elasticsearchService;
9
9
  this.indexProperties = indexProperties;
10
+ this.elasticsearchPinger = elasticsearchPinger;
10
11
  this.type = type;
11
12
  }
12
13
  async _createIndex() {
@@ -21,7 +22,7 @@ class ElasticsearchInitializer {
21
22
  });
22
23
  }
23
24
  async initializeIndex() {
24
- await this._waitForReady();
25
+ await this.elasticsearchPinger.waitForReady();
25
26
  const exists = await this._getIndexExists();
26
27
  if (!exists) {
27
28
  await this._createIndex();
@@ -37,25 +38,6 @@ class ElasticsearchInitializer {
37
38
  }
38
39
  await this.elasticsearchService.indices.putMapping(params);
39
40
  }
40
- async _waitForReady() {
41
- while (!(await this._isReady())) {
42
- this.logger.info("Waiting for elasticsearch");
43
- await new Promise((resolve) => {
44
- setTimeout(resolve, 1000);
45
- });
46
- }
47
- }
48
- async _isReady() {
49
- return new Promise(async (resolve) => {
50
- try {
51
- const result = await this.elasticsearchService.ping();
52
- resolve(result);
53
- }
54
- catch (e) {
55
- resolve(false);
56
- }
57
- });
58
- }
59
41
  }
60
42
  exports.ElasticsearchInitializer = ElasticsearchInitializer;
61
43
  //# sourceMappingURL=elasticsearch.initializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elasticsearch.initializer.js","sourceRoot":"","sources":["../../../../src/service/elasticsearch/elasticsearch.initializer.ts"],"names":[],"mappings":";;;AAIA,MAAa,wBAAwB;IACnC,YACmB,MAAoB,EACpB,KAAa,EACb,oBAA0C,EAC1C,eAAoB,EACpB,IAAa;QAJb,WAAM,GAAN,MAAM,CAAc;QACpB,UAAK,GAAL,KAAK,CAAQ;QACb,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,oBAAe,GAAf,eAAe,CAAK;QACpB,SAAI,GAAJ,IAAI,CAAS;IAC7B,CAAC;IAEI,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;SAC3B;QAED,IAAI,MAAM,GAAQ;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,CAAC,eAAe;aACjC;SACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,mCACD,MAAM,KACT,IAAI,EAAE,IAAI,CAAC,IAAI,GAChB,CAAC;SACH;QACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC9C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA/DD,4DA+DC"}
1
+ {"version":3,"file":"elasticsearch.initializer.js","sourceRoot":"","sources":["../../../../src/service/elasticsearch/elasticsearch.initializer.ts"],"names":[],"mappings":";;;AAKA,MAAa,wBAAwB;IACnC,YACmB,MAAoB,EACpB,KAAa,EACb,oBAA0C,EAC1C,eAAoB,EAEpB,mBAAwC,EAExC,IAAa;QAPb,WAAM,GAAN,MAAM,CAAc;QACpB,UAAK,GAAL,KAAK,CAAQ;QACb,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,oBAAe,GAAf,eAAe,CAAK;QAEpB,wBAAmB,GAAnB,mBAAmB,CAAqB;QAExC,SAAI,GAAJ,IAAI,CAAS;IAC7B,CAAC;IAEI,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;SAC3B;QAED,IAAI,MAAM,GAAQ;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,CAAC,eAAe;aACjC;SACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,mCACD,MAAM,KACT,IAAI,EAAE,IAAI,CAAC,IAAI,GAChB,CAAC;SACH;QACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF;AA/CD,4DA+CC"}
@@ -0,0 +1,12 @@
1
+ import { CustomLogger } from "../../logger";
2
+ export declare class ElasticsearchPinger {
3
+ private readonly elasticsearchService;
4
+ private readonly logger;
5
+ private intervalId;
6
+ private ready;
7
+ private isPinging;
8
+ constructor(elasticsearchService: any, logger: CustomLogger);
9
+ private _resetPinger;
10
+ waitForReady(): Promise<unknown>;
11
+ _isReady(): Promise<boolean>;
12
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ElasticsearchPinger = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const logger_1 = require("../../logger");
18
+ let ElasticsearchPinger = class ElasticsearchPinger {
19
+ constructor(elasticsearchService, logger) {
20
+ this.elasticsearchService = elasticsearchService;
21
+ this.logger = logger;
22
+ }
23
+ _resetPinger() {
24
+ if (this.intervalId) {
25
+ return;
26
+ }
27
+ this.ready = false;
28
+ this.intervalId = setInterval(async () => {
29
+ this.logger.info("Waiting for elasticsearch");
30
+ this.ready = await this._isReady();
31
+ if (this.ready) {
32
+ clearInterval(this.intervalId);
33
+ this.intervalId = null;
34
+ }
35
+ }, 1000);
36
+ }
37
+ async waitForReady() {
38
+ if (this.ready) {
39
+ this._resetPinger();
40
+ }
41
+ return new Promise((resolve) => {
42
+ const intervalId = setInterval(() => {
43
+ if (this.ready) {
44
+ clearInterval(intervalId);
45
+ resolve(undefined);
46
+ }
47
+ }, 500);
48
+ });
49
+ }
50
+ async _isReady() {
51
+ return new Promise(async (resolve) => {
52
+ try {
53
+ const result = await this.elasticsearchService.ping();
54
+ resolve(result);
55
+ }
56
+ catch (e) {
57
+ resolve(false);
58
+ }
59
+ });
60
+ }
61
+ };
62
+ ElasticsearchPinger = __decorate([
63
+ common_1.Injectable(),
64
+ __param(0, common_1.Inject("ELASTICSEARCH_SERVICE")),
65
+ __param(1, common_1.Inject("LOGGER")),
66
+ __metadata("design:paramtypes", [Object, logger_1.CustomLogger])
67
+ ], ElasticsearchPinger);
68
+ exports.ElasticsearchPinger = ElasticsearchPinger;
69
+ //# sourceMappingURL=elasticsearch.pinger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elasticsearch.pinger.js","sourceRoot":"","sources":["../../../../src/service/elasticsearch/elasticsearch.pinger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,yCAA4C;AAG5C,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAO9B,YACoD,oBAAoB,EACnC,MAAoB;QADL,yBAAoB,GAApB,oBAAoB,CAAA;QACnC,WAAM,GAAN,MAAM,CAAc;IACtD,CAAC;IAEI,YAAY;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;gBAClC,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC1B,OAAO,CAAC,SAAS,CAAC,CAAC;iBACpB;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnDY,mBAAmB;IAD/B,mBAAU,EAAE;IASR,WAAA,eAAM,CAAC,uBAAuB,CAAC,CAAA;IAC/B,WAAA,eAAM,CAAC,QAAQ,CAAC,CAAA;6CAA0B,qBAAY;GAT9C,mBAAmB,CAmD/B;AAnDY,kDAAmB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -74,19 +74,7 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
74
74
  ? exception.context.started
75
75
  : undefined;
76
76
 
77
- let developerText = i18nData.__({
78
- phrase: LocalesEnum.UNKNOWN_ERROR,
79
- locale: locale.i18n,
80
- });
81
- if (exception) {
82
- if (exception.getStatus) {
83
- if (exception.message.message) {
84
- developerText = exception.message.message;
85
- } else {
86
- developerText = exception.message;
87
- }
88
- }
89
- }
77
+ const developerText = this.getDeveloperText(exception, locale);
90
78
 
91
79
  const userMessage =
92
80
  exception instanceof FriendlyHttpException ? exception.userMessage : "";
@@ -110,4 +98,27 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
110
98
 
111
99
  response.status(status).json(errorHttpResponse);
112
100
  }
101
+
102
+ getDeveloperText(exception: any, locale: any): string {
103
+ let developerText: string = i18nData.__({
104
+ phrase: LocalesEnum.UNKNOWN_ERROR,
105
+ locale: locale.i18n,
106
+ });
107
+ if (exception) {
108
+ if (exception.getStatus) {
109
+ if (exception.response && exception.response.message) {
110
+ if (Array.isArray(exception.response.message)) {
111
+ developerText = exception.response.message.join(" + ");
112
+ } else {
113
+ developerText = exception.response.message;
114
+ }
115
+ } else if (exception.message.message) {
116
+ developerText = exception.message.message;
117
+ } else {
118
+ developerText = exception.message;
119
+ }
120
+ }
121
+ }
122
+ return developerText;
123
+ }
113
124
  }
@@ -1,6 +1,7 @@
1
1
  import { ElasticsearchService } from "@nestjs/elasticsearch";
2
2
  import { CustomLogger } from "../../logger";
3
3
  import { HttpStatus } from "@nestjs/common";
4
+ import { ElasticsearchPinger } from "./elasticsearch.pinger";
4
5
 
5
6
  export class ElasticsearchInitializer {
6
7
  constructor(
@@ -8,6 +9,9 @@ export class ElasticsearchInitializer {
8
9
  private readonly index: string,
9
10
  private readonly elasticsearchService: ElasticsearchService,
10
11
  private readonly indexProperties: any,
12
+
13
+ private readonly elasticsearchPinger: ElasticsearchPinger,
14
+
11
15
  private readonly type?: string
12
16
  ) {}
13
17
 
@@ -25,7 +29,7 @@ export class ElasticsearchInitializer {
25
29
  }
26
30
 
27
31
  async initializeIndex() {
28
- await this._waitForReady();
32
+ await this.elasticsearchPinger.waitForReady();
29
33
 
30
34
  const exists = await this._getIndexExists();
31
35
  if (!exists) {
@@ -46,23 +50,4 @@ export class ElasticsearchInitializer {
46
50
  }
47
51
  await this.elasticsearchService.indices.putMapping(params);
48
52
  }
49
-
50
- async _waitForReady() {
51
- while (!(await this._isReady())) {
52
- this.logger.info("Waiting for elasticsearch");
53
- await new Promise((resolve) => {
54
- setTimeout(resolve, 1000);
55
- });
56
- }
57
- }
58
- async _isReady(): Promise<boolean> {
59
- return new Promise(async (resolve) => {
60
- try {
61
- const result = await this.elasticsearchService.ping();
62
- resolve(result);
63
- } catch (e) {
64
- resolve(false);
65
- }
66
- });
67
- }
68
53
  }
@@ -0,0 +1,56 @@
1
+ import { Inject, Injectable } from "@nestjs/common";
2
+ import { CustomLogger } from "../../logger";
3
+
4
+ @Injectable()
5
+ export class ElasticsearchPinger {
6
+ private intervalId;
7
+
8
+ private ready;
9
+
10
+ private isPinging;
11
+
12
+ constructor(
13
+ @Inject("ELASTICSEARCH_SERVICE") private readonly elasticsearchService,
14
+ @Inject("LOGGER") private readonly logger: CustomLogger
15
+ ) {}
16
+
17
+ private _resetPinger() {
18
+ if (this.intervalId) {
19
+ return;
20
+ }
21
+ this.ready = false;
22
+ this.intervalId = setInterval(async () => {
23
+ this.logger.info("Waiting for elasticsearch");
24
+ this.ready = await this._isReady();
25
+ if (this.ready) {
26
+ clearInterval(this.intervalId);
27
+ this.intervalId = null;
28
+ }
29
+ }, 1000);
30
+ }
31
+
32
+ public async waitForReady() {
33
+ if (this.ready) {
34
+ this._resetPinger();
35
+ }
36
+
37
+ return new Promise((resolve) => {
38
+ const intervalId = setInterval(() => {
39
+ if (this.ready) {
40
+ clearInterval(intervalId);
41
+ resolve(undefined);
42
+ }
43
+ }, 500);
44
+ });
45
+ }
46
+ async _isReady(): Promise<boolean> {
47
+ return new Promise(async (resolve) => {
48
+ try {
49
+ const result = await this.elasticsearchService.ping();
50
+ resolve(result);
51
+ } catch (e) {
52
+ resolve(false);
53
+ }
54
+ });
55
+ }
56
+ }