@tc-libs/message 0.9.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.
Files changed (41) hide show
  1. package/README.md +11 -0
  2. package/package.json +11 -0
  3. package/src/constants/index.d.ts +0 -0
  4. package/src/constants/index.js +2 -0
  5. package/src/constants/index.js.map +1 -0
  6. package/src/constants/message.enum.constant.d.ts +0 -0
  7. package/src/constants/message.enum.constant.js +2 -0
  8. package/src/constants/message.enum.constant.js.map +1 -0
  9. package/src/dtos/message.language.dto.d.ts +3 -0
  10. package/src/dtos/message.language.dto.js +16 -0
  11. package/src/dtos/message.language.dto.js.map +1 -0
  12. package/src/index.d.ts +3 -0
  13. package/src/index.js +7 -0
  14. package/src/index.js.map +1 -0
  15. package/src/interfaces/index.d.ts +2 -0
  16. package/src/interfaces/index.js +6 -0
  17. package/src/interfaces/index.js.map +1 -0
  18. package/src/interfaces/message.interface.d.ts +7 -0
  19. package/src/interfaces/message.interface.js +3 -0
  20. package/src/interfaces/message.interface.js.map +1 -0
  21. package/src/interfaces/message.service.interface.d.ts +10 -0
  22. package/src/interfaces/message.service.interface.js +3 -0
  23. package/src/interfaces/message.service.interface.js.map +1 -0
  24. package/src/message.module.d.ts +6 -0
  25. package/src/message.module.js +55 -0
  26. package/src/message.module.js.map +1 -0
  27. package/src/message.module.options.d.ts +10 -0
  28. package/src/message.module.options.js +8 -0
  29. package/src/message.module.options.js.map +1 -0
  30. package/src/middleware/custom-language/message.custom-language.middleware.d.ts +12 -0
  31. package/src/middleware/custom-language/message.custom-language.middleware.js +41 -0
  32. package/src/middleware/custom-language/message.custom-language.middleware.js.map +1 -0
  33. package/src/middleware/message.middleware.module.d.ts +4 -0
  34. package/src/middleware/message.middleware.module.js +16 -0
  35. package/src/middleware/message.middleware.module.js.map +1 -0
  36. package/src/services/index.d.ts +1 -0
  37. package/src/services/index.js +5 -0
  38. package/src/services/index.js.map +1 -0
  39. package/src/services/message.service.d.ts +15 -0
  40. package/src/services/message.service.js +103 -0
  41. package/src/services/message.service.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # message
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build message` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test message` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@tc-libs/message",
3
+ "version": "0.9.0",
4
+ "dependencies": {
5
+ "tslib": "^2.3.0"
6
+ },
7
+ "type": "commonjs",
8
+ "main": "./src/index.js",
9
+ "typings": "./src/index.d.ts",
10
+ "types": "./src/index.d.ts"
11
+ }
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/message/src/constants/index.ts"],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=message.enum.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.enum.constant.js","sourceRoot":"","sources":["../../../../../packages/message/src/constants/message.enum.constant.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare class MessageLanguageDto {
2
+ language: string[];
3
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageLanguageDto = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ class MessageLanguageDto {
7
+ }
8
+ exports.MessageLanguageDto = MessageLanguageDto;
9
+ tslib_1.__decorate([
10
+ (0, swagger_1.ApiProperty)({
11
+ type: 'array',
12
+ isArray: true,
13
+ }),
14
+ tslib_1.__metadata("design:type", Array)
15
+ ], MessageLanguageDto.prototype, "language", void 0);
16
+ //# sourceMappingURL=message.language.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.language.dto.js","sourceRoot":"","sources":["../../../../../packages/message/src/dtos/message.language.dto.ts"],"names":[],"mappings":";;;;AAAA,6CAA8C;AAE9C,MAAa,kBAAkB;CAM9B;AAND,gDAMC;AADC;IAJC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;KACd,CAAC;;oDACiB"}
package/src/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './message.module';
2
+ export * from './interfaces';
3
+ export * from './services';
package/src/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./message.module"), exports);
5
+ tslib_1.__exportStar(require("./interfaces"), exports);
6
+ tslib_1.__exportStar(require("./services"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/message/src/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,uDAA6B;AAC7B,qDAA2B"}
@@ -0,0 +1,2 @@
1
+ export * from './message.interface';
2
+ export * from './message.service.interface';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./message.interface"), exports);
5
+ tslib_1.__exportStar(require("./message.service.interface"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/message/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC;AACpC,sEAA4C"}
@@ -0,0 +1,7 @@
1
+ export type IMessage = Record<string, string>;
2
+ export type IMessageOptionsProperties = Record<string, string | number>;
3
+ export interface IMessageOptions {
4
+ readonly customLanguages?: string[];
5
+ readonly properties?: IMessageOptionsProperties;
6
+ }
7
+ export type IMessageSetOptions = Omit<IMessageOptions, 'customLanguages'>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=message.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.interface.js","sourceRoot":"","sources":["../../../../../packages/message/src/interfaces/message.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ValidationError } from '@nestjs/common';
2
+ import { IMessage, IMessageOptions, IMessageSetOptions } from './message.interface';
3
+ import { IErrors, IErrorsImport, IValidationErrorImport } from '@tc-libs/error-interface';
4
+ export interface IMessageService {
5
+ getAvailableLanguages(): Promise<string[]>;
6
+ setMessage<T = string>(lang: string, key: string, options?: IMessageSetOptions): T | null;
7
+ getRequestErrorsMessage(requestErrors: ValidationError[], customLanguages?: string[]): Promise<IErrors[]>;
8
+ getImportErrorsMessage(errors: IValidationErrorImport[], customLanguages?: string[]): Promise<IErrorsImport[]>;
9
+ get(key: string, options?: IMessageOptions): Promise<string | IMessage>;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=message.service.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.service.interface.js","sourceRoot":"","sources":["../../../../../packages/message/src/interfaces/message.service.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import MessageModuleAsyncOptions, { MessageModuleOptions } from './message.module.options';
3
+ export declare class MessageModule {
4
+ static register(options: MessageModuleOptions, isGlobal?: boolean): DynamicModule;
5
+ static registerAsync(options: MessageModuleAsyncOptions, isGlobal?: boolean): DynamicModule;
6
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageModule = void 0;
4
+ const message_module_options_1 = require("./message.module.options");
5
+ const message_middleware_module_1 = require("./middleware/message.middleware.module");
6
+ const message_service_1 = require("./services/message.service");
7
+ // add this in imports when we are ready to make i18nmessages from the backend
8
+ // I18nModule.forRootAsync({
9
+ // useFactory: (configService: ConfigService) => ({
10
+ // fallbackLanguage: configService.get<string[]>('app.language').join(','),
11
+ // fallbacks: Object.values(ENUM_MESSAGE_LANGUAGE).reduce(
12
+ // (a, v) => ({ ...a, [`${v}-*`]: v }),
13
+ // {},
14
+ // ),
15
+ // loaderOptions: {
16
+ // path: './languages',
17
+ // watch: true,
18
+ // },
19
+ // }),
20
+ // loader: I18nJsonLoader,
21
+ // inject: [ConfigService],
22
+ // resolvers: [new HeaderResolver(['x-custom-lang'])],
23
+ // }),
24
+ class MessageModule {
25
+ static register(options, isGlobal) {
26
+ return {
27
+ module: MessageModule,
28
+ imports: [message_middleware_module_1.MessageMiddlewareModule],
29
+ providers: [
30
+ { provide: message_module_options_1.MESSAGE_CONFIG_OPTIONS, useValue: options },
31
+ message_service_1.MessageService,
32
+ ],
33
+ exports: [message_service_1.MessageService],
34
+ global: isGlobal,
35
+ };
36
+ }
37
+ static registerAsync(options, isGlobal) {
38
+ return {
39
+ module: MessageModule,
40
+ imports: [...(options.imports || []), message_middleware_module_1.MessageMiddlewareModule],
41
+ providers: [
42
+ {
43
+ provide: message_module_options_1.MESSAGE_CONFIG_OPTIONS,
44
+ useFactory: options.useFactory,
45
+ inject: options.inject,
46
+ },
47
+ message_service_1.MessageService,
48
+ ],
49
+ exports: [message_service_1.MessageService],
50
+ global: isGlobal,
51
+ };
52
+ }
53
+ }
54
+ exports.MessageModule = MessageModule;
55
+ //# sourceMappingURL=message.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.module.js","sourceRoot":"","sources":["../../../../packages/message/src/message.module.ts"],"names":[],"mappings":";;;AACA,qEAGkC;AAClC,sFAAiF;AACjF,gEAA4D;AAE5D,8EAA8E;AAC9E,4BAA4B;AAC5B,qDAAqD;AACrD,+EAA+E;AAC/E,8DAA8D;AAC9D,6CAA6C;AAC7C,YAAY;AACZ,SAAS;AACT,uBAAuB;AACvB,6BAA6B;AAC7B,qBAAqB;AACrB,SAAS;AACT,QAAQ;AACR,4BAA4B;AAC5B,6BAA6B;AAC7B,wDAAwD;AACxD,MAAM;AAEN,MAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CACb,OAA6B,EAC7B,QAAkB;QAElB,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,CAAC,mDAAuB,CAAC;YAClC,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,+CAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACtD,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,gCAAc,CAAC;YACzB,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,OAAkC,EAClC,QAAkB;QAElB,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,mDAAuB,CAAC;YAC9D,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,+CAAsB;oBAC/B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;gBACD,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,gCAAc,CAAC;YACzB,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;CACF;AApCD,sCAoCC"}
@@ -0,0 +1,10 @@
1
+ import { ModuleMetadata } from '@nestjs/common';
2
+ import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface';
3
+ export declare const MESSAGE_CONFIG_OPTIONS = "MESSAGE_CONFIG_OPTIONS";
4
+ export declare class MessageModuleOptions {
5
+ appDefaultLanguage: string;
6
+ availableLanguages: string[];
7
+ i18nEnabled: boolean;
8
+ }
9
+ type MessageModuleAsyncOptions = Pick<ModuleMetadata, 'imports'> & Pick<FactoryProvider<MessageModuleOptions>, 'useFactory' | 'inject'>;
10
+ export default MessageModuleAsyncOptions;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageModuleOptions = exports.MESSAGE_CONFIG_OPTIONS = void 0;
4
+ exports.MESSAGE_CONFIG_OPTIONS = 'MESSAGE_CONFIG_OPTIONS';
5
+ class MessageModuleOptions {
6
+ }
7
+ exports.MessageModuleOptions = MessageModuleOptions;
8
+ //# sourceMappingURL=message.module.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.module.options.js","sourceRoot":"","sources":["../../../../packages/message/src/message.module.options.ts"],"names":[],"mappings":";;;AAGa,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAE/D,MAAa,oBAAoB;CAIhC;AAJD,oDAIC"}
@@ -0,0 +1,12 @@
1
+ import { IRequestApp } from '@tc-libs/request';
2
+ import { NestMiddleware } from '@nestjs/common';
3
+ import { Response, NextFunction } from 'express';
4
+ import { MessageModuleOptions } from '../../message.module.options';
5
+ export declare class MessageCustomLanguageMiddleware implements NestMiddleware {
6
+ private readonly options;
7
+ private readonly availableLanguages;
8
+ private readonly appDefaultLanguage;
9
+ private readonly i18nEnabled;
10
+ constructor(options: MessageModuleOptions);
11
+ use(req: IRequestApp, res: Response, next: NextFunction): Promise<void>;
12
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageCustomLanguageMiddleware = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const lodash_1 = require("lodash");
7
+ const message_module_options_1 = require("../../message.module.options");
8
+ let MessageCustomLanguageMiddleware = class MessageCustomLanguageMiddleware {
9
+ constructor(options) {
10
+ this.options = options;
11
+ this.availableLanguages = this.options.availableLanguages;
12
+ this.i18nEnabled = this.options.i18nEnabled;
13
+ this.appDefaultLanguage = this.options.appDefaultLanguage;
14
+ }
15
+ async use(req, res, next) {
16
+ let language = this.availableLanguages.join(',');
17
+ let customLang = this.availableLanguages;
18
+ const reqLanguages = req.headers['x-custom-lang'];
19
+ if (reqLanguages) {
20
+ const splitLanguage = reqLanguages
21
+ .split(',')
22
+ .map((val) => val.trim().toLowerCase());
23
+ const uniqueLanguage = (0, lodash_1.uniq)(splitLanguage);
24
+ const languages = uniqueLanguage.filter((val) => (0, lodash_1.includes)(this.availableLanguages, val));
25
+ if (languages.length > 0) {
26
+ language = languages.join(',');
27
+ customLang = languages;
28
+ }
29
+ }
30
+ req.__customLang = customLang;
31
+ req.headers['x-custom-lang'] = language;
32
+ next();
33
+ }
34
+ };
35
+ exports.MessageCustomLanguageMiddleware = MessageCustomLanguageMiddleware;
36
+ exports.MessageCustomLanguageMiddleware = MessageCustomLanguageMiddleware = tslib_1.__decorate([
37
+ (0, common_1.Injectable)(),
38
+ tslib_1.__param(0, (0, common_1.Inject)(message_module_options_1.MESSAGE_CONFIG_OPTIONS)),
39
+ tslib_1.__metadata("design:paramtypes", [message_module_options_1.MessageModuleOptions])
40
+ ], MessageCustomLanguageMiddleware);
41
+ //# sourceMappingURL=message.custom-language.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.custom-language.middleware.js","sourceRoot":"","sources":["../../../../../../packages/message/src/middleware/custom-language/message.custom-language.middleware.ts"],"names":[],"mappings":";;;;AACA,2CAAoE;AAEpE,mCAAwC;AACxC,yEAGsC;AAG/B,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAK1C,YAEmB,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;QAE9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAgB,EAChB,GAAa,EACb,IAAkB;QAElB,IAAI,QAAQ,GAAW,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,UAAU,GAAa,IAAI,CAAC,kBAAkB,CAAC;QAEnD,MAAM,YAAY,GAAW,GAAG,CAAC,OAAO,CAAC,eAAe,CAAW,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,aAAa,GAAa,YAAY;iBACzC,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAA,aAAI,EAAC,aAAa,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAa,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACxD,IAAA,iBAAQ,EAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CACvC,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/B,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;QACH,CAAC;QAED,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;QAExC,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAA;AA3CY,0EAA+B;0CAA/B,+BAA+B;IAD3C,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,eAAM,EAAC,+CAAsB,CAAC,CAAA;6CACL,6CAAoB;GAPrC,+BAA+B,CA2C3C"}
@@ -0,0 +1,4 @@
1
+ import { NestModule, MiddlewareConsumer } from '@nestjs/common';
2
+ export declare class MessageMiddlewareModule implements NestModule {
3
+ configure(consumer: MiddlewareConsumer): void;
4
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageMiddlewareModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const message_custom_language_middleware_1 = require("./custom-language/message.custom-language.middleware");
7
+ let MessageMiddlewareModule = class MessageMiddlewareModule {
8
+ configure(consumer) {
9
+ consumer.apply(message_custom_language_middleware_1.MessageCustomLanguageMiddleware).forRoutes('*');
10
+ }
11
+ };
12
+ exports.MessageMiddlewareModule = MessageMiddlewareModule;
13
+ exports.MessageMiddlewareModule = MessageMiddlewareModule = tslib_1.__decorate([
14
+ (0, common_1.Module)({})
15
+ ], MessageMiddlewareModule);
16
+ //# sourceMappingURL=message.middleware.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.middleware.module.js","sourceRoot":"","sources":["../../../../../packages/message/src/middleware/message.middleware.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwE;AACxE,6GAAuG;AAGhG,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,SAAS,CAAC,QAA4B;QACpC,QAAQ,CAAC,KAAK,CAAC,oEAA+B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AAJY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,uBAAuB,CAInC"}
@@ -0,0 +1 @@
1
+ export * from './message.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./message.service"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/message/src/services/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC"}
@@ -0,0 +1,15 @@
1
+ import { ValidationError } from 'class-validator';
2
+ import { IMessageService } from '../interfaces/message.service.interface';
3
+ import { IMessageSetOptions, IMessageOptions } from '../interfaces/message.interface';
4
+ import { IErrors, IValidationErrorImport, IErrorsImport } from '@tc-libs/error-interface';
5
+ import { MessageModuleOptions } from '../message.module.options';
6
+ export declare class MessageService implements IMessageService {
7
+ private readonly options;
8
+ private readonly availableLanguages;
9
+ constructor(options: MessageModuleOptions);
10
+ getAvailableLanguages(): Promise<string[]>;
11
+ setMessage<T = string>(lang: string, key: string, options?: IMessageSetOptions): T | null;
12
+ getRequestErrorsMessage(requestErrors: ValidationError[], customLanguages?: string[]): Promise<IErrors[]>;
13
+ getImportErrorsMessage(errors: IValidationErrorImport[], customLanguages?: string[]): Promise<IErrorsImport[]>;
14
+ get<T = string>(key: string, options?: IMessageOptions): Promise<T>;
15
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const message_module_options_1 = require("../message.module.options");
7
+ let MessageService = class MessageService {
8
+ constructor(options // private readonly i18n: I18nService,
9
+ ) {
10
+ this.options = options;
11
+ this.availableLanguages = this.options.availableLanguages;
12
+ }
13
+ async getAvailableLanguages() {
14
+ return this.availableLanguages;
15
+ }
16
+ setMessage(lang, key, options) {
17
+ console.log('setMessage', lang, key, options);
18
+ return null;
19
+ /* this.i18n.translate(key, {
20
+ lang: lang ?? this.appDefaultLanguage.join(','),
21
+ args: options?.properties,
22
+ }) as T; */
23
+ }
24
+ async getRequestErrorsMessage(requestErrors, customLanguages) {
25
+ const messages = [];
26
+ for (const transfomer of requestErrors) {
27
+ let children = transfomer.children ?? [];
28
+ let constraints = Object.keys(transfomer.constraints ?? []);
29
+ const errors = [];
30
+ let property = transfomer.property;
31
+ let propertyValue = transfomer.value;
32
+ if (children.length > 0) {
33
+ while (children.length > 0) {
34
+ for (const child of children) {
35
+ property = `${property}.${child['property']}`;
36
+ if (child['children']?.length > 0) {
37
+ children = child['children'];
38
+ break;
39
+ }
40
+ else if (child['constraints']) {
41
+ constraints = Object.keys(child['constraints']);
42
+ children = [];
43
+ propertyValue = child['value'];
44
+ break;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ for (const constraint of constraints) {
50
+ const message = await this.get(`request.${constraint}`, {
51
+ customLanguages,
52
+ properties: {
53
+ property,
54
+ value: propertyValue,
55
+ },
56
+ });
57
+ errors.push({
58
+ property,
59
+ message,
60
+ });
61
+ }
62
+ messages.push(errors);
63
+ }
64
+ return messages.flat(1);
65
+ }
66
+ async getImportErrorsMessage(errors, customLanguages) {
67
+ const newErrors = [];
68
+ for (const error of errors) {
69
+ newErrors.push({
70
+ row: error.row,
71
+ file: error.file,
72
+ errors: await this.getRequestErrorsMessage(error.errors, customLanguages),
73
+ });
74
+ }
75
+ return newErrors;
76
+ }
77
+ async get(key, options) {
78
+ const properties = options?.properties;
79
+ const customLanguages = (options?.customLanguages?.length ?? 0) > 0
80
+ ? options?.customLanguages || []
81
+ : this.availableLanguages;
82
+ const messages = {};
83
+ for (const customLanguage of customLanguages) {
84
+ const msg = await this.setMessage(customLanguage, key, {
85
+ properties,
86
+ });
87
+ if (msg)
88
+ messages[customLanguage] = msg;
89
+ }
90
+ if (customLanguages.length <= 1) {
91
+ return messages[customLanguages[0]];
92
+ }
93
+ return messages;
94
+ }
95
+ };
96
+ exports.MessageService = MessageService;
97
+ exports.MessageService = MessageService = tslib_1.__decorate([
98
+ (0, common_1.Injectable)(),
99
+ tslib_1.__param(0, (0, common_1.Inject)(message_module_options_1.MESSAGE_CONFIG_OPTIONS)),
100
+ tslib_1.__metadata("design:paramtypes", [message_module_options_1.MessageModuleOptions // private readonly i18n: I18nService,
101
+ ])
102
+ ], MessageService);
103
+ //# sourceMappingURL=message.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.service.js","sourceRoot":"","sources":["../../../../../packages/message/src/services/message.service.ts"],"names":[],"mappings":"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"}