@venturialstd/slack 0.1.24 → 0.1.26

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 (172) hide show
  1. package/dist/core/src/auth/auth.module.d.ts +2 -0
  2. package/dist/core/src/auth/auth.module.js +26 -0
  3. package/dist/core/src/auth/auth.module.js.map +1 -0
  4. package/dist/core/src/auth/constants/role.constant.d.ts +5 -0
  5. package/dist/core/src/auth/constants/role.constant.js +10 -0
  6. package/dist/core/src/auth/constants/role.constant.js.map +1 -0
  7. package/dist/core/src/auth/constants/strategy.constant.d.ts +5 -0
  8. package/dist/core/src/auth/constants/strategy.constant.js +9 -0
  9. package/dist/core/src/auth/constants/strategy.constant.js.map +1 -0
  10. package/dist/core/src/auth/controllers/auth.controller.d.ts +5 -0
  11. package/dist/core/src/auth/controllers/auth.controller.js +40 -0
  12. package/dist/core/src/auth/controllers/auth.controller.js.map +1 -0
  13. package/dist/core/src/auth/decorators/role.decorator.d.ts +4 -0
  14. package/dist/core/src/auth/decorators/role.decorator.js +8 -0
  15. package/dist/core/src/auth/decorators/role.decorator.js.map +1 -0
  16. package/dist/core/src/auth/dtos/auth-login-input.dto.d.ts +4 -0
  17. package/dist/core/src/auth/dtos/auth-login-input.dto.js +33 -0
  18. package/dist/core/src/auth/dtos/auth-login-input.dto.js.map +1 -0
  19. package/dist/core/src/auth/dtos/auth-refresh-token-input.dto.d.ts +3 -0
  20. package/dist/core/src/auth/dtos/auth-refresh-token-input.dto.js +24 -0
  21. package/dist/core/src/auth/dtos/auth-refresh-token-input.dto.js.map +1 -0
  22. package/dist/core/src/auth/dtos/auth-register-input.dto.d.ts +9 -0
  23. package/dist/core/src/auth/dtos/auth-register-input.dto.js +54 -0
  24. package/dist/core/src/auth/dtos/auth-register-input.dto.js.map +1 -0
  25. package/dist/core/src/auth/dtos/auth-register-output.dto.d.ts +11 -0
  26. package/dist/core/src/auth/dtos/auth-register-output.dto.js +67 -0
  27. package/dist/core/src/auth/dtos/auth-register-output.dto.js.map +1 -0
  28. package/dist/core/src/auth/dtos/auth-token-output.dto.d.ts +13 -0
  29. package/dist/core/src/auth/dtos/auth-token-output.dto.js +52 -0
  30. package/dist/core/src/auth/dtos/auth-token-output.dto.js.map +1 -0
  31. package/dist/core/src/auth/guards/auth0.guard.d.ts +8 -0
  32. package/dist/core/src/auth/guards/auth0.guard.js +28 -0
  33. package/dist/core/src/auth/guards/auth0.guard.js.map +1 -0
  34. package/dist/core/src/auth/guards/firebase.guard.d.ts +8 -0
  35. package/dist/core/src/auth/guards/firebase.guard.js +28 -0
  36. package/dist/core/src/auth/guards/firebase.guard.js.map +1 -0
  37. package/dist/core/src/auth/guards/jwt-auth.guard.d.ts +8 -0
  38. package/dist/core/src/auth/guards/jwt-auth.guard.js +28 -0
  39. package/dist/core/src/auth/guards/jwt-auth.guard.js.map +1 -0
  40. package/dist/core/src/auth/guards/jwt-refresh.guard.d.ts +8 -0
  41. package/dist/core/src/auth/guards/jwt-refresh.guard.js +28 -0
  42. package/dist/core/src/auth/guards/jwt-refresh.guard.js.map +1 -0
  43. package/dist/core/src/auth/guards/jwt.guard.d.ts +8 -0
  44. package/dist/core/src/auth/guards/jwt.guard.js +28 -0
  45. package/dist/core/src/auth/guards/jwt.guard.js.map +1 -0
  46. package/dist/core/src/auth/guards/local-auth.guard.d.ts +4 -0
  47. package/dist/core/src/auth/guards/local-auth.guard.js +19 -0
  48. package/dist/core/src/auth/guards/local-auth.guard.js.map +1 -0
  49. package/dist/core/src/auth/guards/roles.guard.d.ts +7 -0
  50. package/dist/core/src/auth/guards/roles.guard.js +41 -0
  51. package/dist/core/src/auth/guards/roles.guard.js.map +1 -0
  52. package/dist/core/src/auth/services/auth.service.d.ts +7 -0
  53. package/dist/core/src/auth/services/auth.service.js +32 -0
  54. package/dist/core/src/auth/services/auth.service.js.map +1 -0
  55. package/dist/core/src/auth/types/auth.type.d.ts +4 -0
  56. package/dist/core/src/auth/types/auth.type.js +3 -0
  57. package/dist/core/src/auth/types/auth.type.js.map +1 -0
  58. package/dist/core/src/index.d.ts +44 -0
  59. package/dist/core/src/index.js +61 -0
  60. package/dist/core/src/index.js.map +1 -0
  61. package/dist/core/src/settings/constants/settings.constant.d.ts +11 -0
  62. package/dist/core/src/settings/constants/settings.constant.js +16 -0
  63. package/dist/core/src/settings/constants/settings.constant.js.map +1 -0
  64. package/dist/core/src/settings/controllers/admin/settings.admin.controller.d.ts +11 -0
  65. package/dist/core/src/settings/controllers/admin/settings.admin.controller.js +74 -0
  66. package/dist/core/src/settings/controllers/admin/settings.admin.controller.js.map +1 -0
  67. package/dist/core/src/settings/entities/settings.entity.d.ts +16 -0
  68. package/dist/core/src/settings/entities/settings.entity.js +116 -0
  69. package/dist/core/src/settings/entities/settings.entity.js.map +1 -0
  70. package/dist/core/src/settings/services/settings.service.d.ts +12 -0
  71. package/dist/core/src/settings/services/settings.service.js +150 -0
  72. package/dist/core/src/settings/services/settings.service.js.map +1 -0
  73. package/dist/core/src/settings/settings.module.d.ts +2 -0
  74. package/dist/core/src/settings/settings.module.js +26 -0
  75. package/dist/core/src/settings/settings.module.js.map +1 -0
  76. package/dist/core/src/shared/acl/action.constant.d.ts +8 -0
  77. package/dist/core/src/shared/acl/action.constant.js +13 -0
  78. package/dist/core/src/shared/acl/action.constant.js.map +1 -0
  79. package/dist/core/src/shared/acl/actor.constant.d.ts +4 -0
  80. package/dist/core/src/shared/acl/actor.constant.js +3 -0
  81. package/dist/core/src/shared/acl/actor.constant.js.map +1 -0
  82. package/dist/core/src/shared/configs/configuration.d.ts +2 -0
  83. package/dist/core/src/shared/configs/configuration.js +23 -0
  84. package/dist/core/src/shared/configs/configuration.js.map +1 -0
  85. package/dist/core/src/shared/configs/module-options.d.ts +2 -0
  86. package/dist/core/src/shared/configs/module-options.js +65 -0
  87. package/dist/core/src/shared/configs/module-options.js.map +1 -0
  88. package/dist/core/src/shared/constants/cache.d.ts +6 -0
  89. package/dist/core/src/shared/constants/cache.js +11 -0
  90. package/dist/core/src/shared/constants/cache.js.map +1 -0
  91. package/dist/core/src/shared/constants/common.d.ts +6 -0
  92. package/dist/core/src/shared/constants/common.js +7 -0
  93. package/dist/core/src/shared/constants/common.js.map +1 -0
  94. package/dist/core/src/shared/constants/crud.d.ts +82 -0
  95. package/dist/core/src/shared/constants/crud.js +132 -0
  96. package/dist/core/src/shared/constants/crud.js.map +1 -0
  97. package/dist/core/src/shared/constants/index.d.ts +3 -0
  98. package/dist/core/src/shared/constants/index.js +20 -0
  99. package/dist/core/src/shared/constants/index.js.map +1 -0
  100. package/dist/core/src/shared/dtos/base-api-response.dto.d.ts +21 -0
  101. package/dist/core/src/shared/dtos/base-api-response.dto.js +88 -0
  102. package/dist/core/src/shared/dtos/base-api-response.dto.js.map +1 -0
  103. package/dist/core/src/shared/dtos/empty.dto.d.ts +3 -0
  104. package/dist/core/src/shared/dtos/empty.dto.js +25 -0
  105. package/dist/core/src/shared/dtos/empty.dto.js.map +1 -0
  106. package/dist/core/src/shared/dtos/pagination-params.dto.d.ts +6 -0
  107. package/dist/core/src/shared/dtos/pagination-params.dto.js +61 -0
  108. package/dist/core/src/shared/dtos/pagination-params.dto.js.map +1 -0
  109. package/dist/core/src/shared/exceptions/base-api.exception.d.ts +6 -0
  110. package/dist/core/src/shared/exceptions/base-api.exception.js +16 -0
  111. package/dist/core/src/shared/exceptions/base-api.exception.js.map +1 -0
  112. package/dist/core/src/shared/filters/all-exceptions.filter.d.ts +9 -0
  113. package/dist/core/src/shared/filters/all-exceptions.filter.js +91 -0
  114. package/dist/core/src/shared/filters/all-exceptions.filter.js.map +1 -0
  115. package/dist/core/src/shared/interceptors/logging.interceptor.d.ts +8 -0
  116. package/dist/core/src/shared/interceptors/logging.interceptor.js +52 -0
  117. package/dist/core/src/shared/interceptors/logging.interceptor.js.map +1 -0
  118. package/dist/core/src/shared/logger/logger.module.d.ts +2 -0
  119. package/dist/core/src/shared/logger/logger.module.js +22 -0
  120. package/dist/core/src/shared/logger/logger.module.js.map +1 -0
  121. package/dist/core/src/shared/logger/logger.service.d.ts +12 -0
  122. package/dist/core/src/shared/logger/logger.service.js +77 -0
  123. package/dist/core/src/shared/logger/logger.service.js.map +1 -0
  124. package/dist/core/src/shared/middlewares/request-id/request-id.middleware.d.ts +2 -0
  125. package/dist/core/src/shared/middlewares/request-id/request-id.middleware.js +15 -0
  126. package/dist/core/src/shared/middlewares/request-id/request-id.middleware.js.map +1 -0
  127. package/dist/core/src/shared/request-context/req-context.decorator.d.ts +1 -0
  128. package/dist/core/src/shared/request-context/req-context.decorator.js +10 -0
  129. package/dist/core/src/shared/request-context/req-context.decorator.js.map +1 -0
  130. package/dist/core/src/shared/request-context/request-context.dto.d.ts +12 -0
  131. package/dist/core/src/shared/request-context/request-context.dto.js +14 -0
  132. package/dist/core/src/shared/request-context/request-context.dto.js.map +1 -0
  133. package/dist/core/src/shared/request-context/util/index.d.ts +3 -0
  134. package/dist/core/src/shared/request-context/util/index.js +16 -0
  135. package/dist/core/src/shared/request-context/util/index.js.map +1 -0
  136. package/dist/core/src/shared/services/cache.service.d.ts +12 -0
  137. package/dist/core/src/shared/services/cache.service.js +64 -0
  138. package/dist/core/src/shared/services/cache.service.js.map +1 -0
  139. package/dist/core/src/shared/shared.module.d.ts +8 -0
  140. package/dist/core/src/shared/shared.module.js +81 -0
  141. package/dist/core/src/shared/shared.module.js.map +1 -0
  142. package/dist/core/src/shared/utils/phone.util.d.ts +5 -0
  143. package/dist/core/src/shared/utils/phone.util.js +17 -0
  144. package/dist/core/src/shared/utils/phone.util.js.map +1 -0
  145. package/dist/core/src/shared/utils/user.util.d.ts +4 -0
  146. package/dist/core/src/shared/utils/user.util.js +11 -0
  147. package/dist/core/src/shared/utils/user.util.js.map +1 -0
  148. package/dist/slack/clients/slack.client.d.ts +3 -3
  149. package/dist/slack/clients/slack.client.js +8 -10
  150. package/dist/slack/clients/slack.client.js.map +1 -1
  151. package/dist/slack/constants/slack.constants.d.ts +3 -0
  152. package/dist/slack/constants/slack.constants.js +7 -0
  153. package/dist/slack/constants/slack.constants.js.map +1 -0
  154. package/dist/slack/controllers/slack.webhook.controller.d.ts +2 -2
  155. package/dist/slack/controllers/slack.webhook.controller.js +3 -2
  156. package/dist/slack/controllers/slack.webhook.controller.js.map +1 -1
  157. package/dist/slack/index.d.ts +1 -0
  158. package/dist/slack/index.js +3 -1
  159. package/dist/slack/index.js.map +1 -1
  160. package/dist/slack/interfaces/slack-interface.d.ts +5 -5
  161. package/dist/slack/interfaces/slack-interface.js.map +1 -1
  162. package/dist/slack/services/slack-channel.service.d.ts +2 -2
  163. package/dist/slack/services/slack-channel.service.js +3 -5
  164. package/dist/slack/services/slack-channel.service.js.map +1 -1
  165. package/dist/slack/services/slack-message.service.d.ts +2 -2
  166. package/dist/slack/services/slack-message.service.js +3 -5
  167. package/dist/slack/services/slack-message.service.js.map +1 -1
  168. package/dist/slack/slack.module.d.ts +0 -3
  169. package/dist/slack/slack.module.js +10 -24
  170. package/dist/slack/slack.module.js.map +1 -1
  171. package/dist/slack/tsconfig.build.tsbuildinfo +1 -1
  172. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ import { Request, Response } from 'express';
2
+ export declare const RequestIdMiddleware: (req: Request, res: Response, next: () => void) => void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestIdMiddleware = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const constants_1 = require("../../constants");
6
+ const RequestIdMiddleware = (req, res, next) => {
7
+ const requestIdToken = req.header(constants_1.REQUEST_ID_TOKEN_HEADER) || '';
8
+ if (!requestIdToken || !(0, uuid_1.validate)(requestIdToken)) {
9
+ req.headers[constants_1.REQUEST_ID_TOKEN_HEADER] = (0, uuid_1.v4)();
10
+ }
11
+ res.set(constants_1.REQUEST_ID_TOKEN_HEADER, req.headers[constants_1.REQUEST_ID_TOKEN_HEADER]);
12
+ next();
13
+ };
14
+ exports.RequestIdMiddleware = RequestIdMiddleware;
15
+ //# sourceMappingURL=request-id.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-id.middleware.js","sourceRoot":"","sources":["../../../../../../../core/src/shared/middlewares/request-id/request-id.middleware.ts"],"names":[],"mappings":";;;AACA,+BAA8C;AAE9C,+CAA0D;AAEnD,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAQ,EAAE;IAEzF,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,mCAAuB,CAAC,IAAI,EAAE,CAAC;IAEjE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAA,eAAQ,EAAC,cAAc,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,mCAAuB,CAAC,GAAG,IAAA,SAAM,GAAE,CAAC;IAClD,CAAC;IAGD,GAAG,CAAC,GAAG,CAAC,mCAAuB,EAAE,GAAG,CAAC,OAAO,CAAC,mCAAuB,CAAC,CAAC,CAAC;IACvE,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAXW,QAAA,mBAAmB,uBAW9B","sourcesContent":["import { Request, Response } from 'express';\r\nimport { v4 as uuidv4, validate } from 'uuid';\r\n\r\nimport { REQUEST_ID_TOKEN_HEADER } from '../../constants';\r\n\r\nexport const RequestIdMiddleware = (req: Request, res: Response, next: () => void): void => {\r\n /** set request id, if not being set yet */\r\n const requestIdToken = req.header(REQUEST_ID_TOKEN_HEADER) || '';\r\n\r\n if (!requestIdToken || !validate(requestIdToken)) {\r\n req.headers[REQUEST_ID_TOKEN_HEADER] = uuidv4();\r\n }\r\n\r\n /** set res id in response from req */\r\n res.set(REQUEST_ID_TOKEN_HEADER, req.headers[REQUEST_ID_TOKEN_HEADER]);\r\n next();\r\n};\r\n"]}
@@ -0,0 +1 @@
1
+ export declare const ReqContext: (...dataOrPipes: unknown[]) => ParameterDecorator;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReqContext = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const util_1 = require("./util");
6
+ exports.ReqContext = (0, common_1.createParamDecorator)((data, ctx) => {
7
+ const request = ctx.switchToHttp().getRequest();
8
+ return (0, util_1.createRequestContext)(request);
9
+ });
10
+ //# sourceMappingURL=req-context.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"req-context.decorator.js","sourceRoot":"","sources":["../../../../../../core/src/shared/request-context/req-context.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AAGxE,iCAA8C;AAEjC,QAAA,UAAU,GAAG,IAAA,6BAAoB,EAC5C,CAAC,IAAa,EAAE,GAAqB,EAAkB,EAAE;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAEhD,OAAO,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CACF,CAAC","sourcesContent":["import { createParamDecorator, ExecutionContext } from '@nestjs/common';\r\n\r\nimport { RequestContext } from './request-context.dto';\r\nimport { createRequestContext } from './util';\r\n\r\nexport const ReqContext = createParamDecorator(\r\n (data: unknown, ctx: ExecutionContext): RequestContext => {\r\n const request = ctx.switchToHttp().getRequest();\r\n\r\n return createRequestContext(request);\r\n },\r\n);\r\n"]}
@@ -0,0 +1,12 @@
1
+ import { CrudRequest, CrudRequestOptions } from '@dataui/crud';
2
+ import { ParsedRequestParams } from '@dataui/crud-request';
3
+ import { UserAccessTokenClaims } from '../../auth/dtos/auth-token-output.dto';
4
+ export declare class RequestContext implements CrudRequest {
5
+ parsed: ParsedRequestParams<object>;
6
+ options: CrudRequestOptions;
7
+ auth?: object | undefined;
8
+ requestID: string | undefined;
9
+ url: string;
10
+ ip: string | undefined;
11
+ user: UserAccessTokenClaims | null;
12
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestContext = void 0;
4
+ class RequestContext {
5
+ parsed;
6
+ options;
7
+ auth;
8
+ requestID;
9
+ url;
10
+ ip;
11
+ user;
12
+ }
13
+ exports.RequestContext = RequestContext;
14
+ //# sourceMappingURL=request-context.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.dto.js","sourceRoot":"","sources":["../../../../../../core/src/shared/request-context/request-context.dto.ts"],"names":[],"mappings":";;;AAKA,MAAa,cAAc;IACzB,MAAM,CAA8B;IACpC,OAAO,CAAqB;IAC5B,IAAI,CAAsB;IACnB,SAAS,CAAqB;IAE9B,GAAG,CAAS;IAEZ,EAAE,CAAqB;IAEvB,IAAI,CAA+B;CAC3C;AAXD,wCAWC","sourcesContent":["import { CrudRequest, CrudRequestOptions } from '@dataui/crud';\r\nimport { ParsedRequestParams } from '@dataui/crud-request';\r\n\r\nimport { UserAccessTokenClaims } from '../../auth/dtos/auth-token-output.dto';\r\n\r\nexport class RequestContext implements CrudRequest {\r\n parsed: ParsedRequestParams<object>;\r\n options: CrudRequestOptions;\r\n auth?: object | undefined;\r\n public requestID: string | undefined;\r\n\r\n public url: string;\r\n\r\n public ip: string | undefined;\r\n\r\n public user: UserAccessTokenClaims | null;\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ import { Request } from 'express';
2
+ import { RequestContext } from '../request-context.dto';
3
+ export declare function createRequestContext(request: Request): RequestContext;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRequestContext = createRequestContext;
4
+ const constants_1 = require("../../constants");
5
+ const request_context_dto_1 = require("../request-context.dto");
6
+ function createRequestContext(request) {
7
+ const ctx = new request_context_dto_1.RequestContext();
8
+ ctx.requestID = request.header(constants_1.REQUEST_ID_TOKEN_HEADER);
9
+ ctx.url = request.url;
10
+ ctx.ip = request.header(constants_1.FORWARDED_FOR_TOKEN_HEADER)
11
+ ? request.header(constants_1.FORWARDED_FOR_TOKEN_HEADER)
12
+ : request.ip;
13
+ ctx.user = request.user ? request.user : null;
14
+ return ctx;
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../core/src/shared/request-context/util/index.ts"],"names":[],"mappings":";;AAOA,oDAYC;AAhBD,+CAAsF;AACtF,gEAAwD;AAGxD,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,MAAM,GAAG,GAAG,IAAI,oCAAc,EAAE,CAAC;IACjC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,mCAAuB,CAAC,CAAC;IACxD,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,sCAA0B,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,sCAA0B,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAGf,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,OAAO,CAAC,IAA8B,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { Request } from 'express';\r\n\r\nimport { UserAccessTokenClaims } from '../../../auth/dtos/auth-token-output.dto';\r\nimport { FORWARDED_FOR_TOKEN_HEADER, REQUEST_ID_TOKEN_HEADER } from '../../constants';\r\nimport { RequestContext } from '../request-context.dto';\r\n\r\n// Creates a RequestContext object from Request\r\nexport function createRequestContext(request: Request): RequestContext {\r\n const ctx = new RequestContext();\r\n ctx.requestID = request.header(REQUEST_ID_TOKEN_HEADER);\r\n ctx.url = request.url;\r\n ctx.ip = request.header(FORWARDED_FOR_TOKEN_HEADER)\r\n ? request.header(FORWARDED_FOR_TOKEN_HEADER)\r\n : request.ip;\r\n\r\n // If request.user does not exist, we explicitly set it to null.\r\n ctx.user = request.user ? (request.user as UserAccessTokenClaims) : null;\r\n\r\n return ctx;\r\n}\r\n"]}
@@ -0,0 +1,12 @@
1
+ import { Cache } from '@nestjs/cache-manager';
2
+ import { CACHE_KEY } from '../constants/cache';
3
+ export declare class CacheService {
4
+ private cacheManager;
5
+ private readonly DEFAULT_TTL;
6
+ constructor(cacheManager: Cache);
7
+ private replaceKeyInjection;
8
+ get<T>(key: CACHE_KEY, keyInject?: Record<string, string>): Promise<T | null>;
9
+ set(key: CACHE_KEY, value: unknown, keyInject?: Record<string, string>, ttl?: number): Promise<unknown>;
10
+ getOrSet(key: CACHE_KEY, fn: () => Promise<any>, keyInject?: Record<string, string>, ttl?: number): Promise<any>;
11
+ del(key: CACHE_KEY, keyInject?: Record<string, string>): Promise<null>;
12
+ }
@@ -0,0 +1,64 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CacheService = void 0;
19
+ const cache_manager_1 = require("@nestjs/cache-manager");
20
+ const common_1 = require("@nestjs/common");
21
+ const lodash_1 = __importDefault(require("lodash"));
22
+ let CacheService = class CacheService {
23
+ cacheManager;
24
+ DEFAULT_TTL = 60 * 60 * 1000;
25
+ constructor(cacheManager) {
26
+ this.cacheManager = cacheManager;
27
+ }
28
+ replaceKeyInjection(key, keyInject) {
29
+ let localkey = key;
30
+ if (keyInject) {
31
+ localkey = localkey.replace(/\*(\w+)/g, (match, p1) => keyInject[p1]);
32
+ }
33
+ return localkey;
34
+ }
35
+ async get(key, keyInject) {
36
+ const localKey = this.replaceKeyInjection(key, keyInject);
37
+ return this.cacheManager.get(localKey);
38
+ }
39
+ async set(key, value, keyInject, ttl = this.DEFAULT_TTL) {
40
+ const localKey = this.replaceKeyInjection(key, keyInject);
41
+ return this.cacheManager.set(localKey, value, { ttl });
42
+ }
43
+ async getOrSet(key, fn, keyInject, ttl = this.DEFAULT_TTL) {
44
+ const localKey = this.replaceKeyInjection(key, keyInject);
45
+ const value = await this.cacheManager.get(localKey);
46
+ if (value)
47
+ return value;
48
+ const data = await fn();
49
+ if (!lodash_1.default.isEmpty(data))
50
+ await this.cacheManager.set(localKey, data, ttl);
51
+ return data;
52
+ }
53
+ async del(key, keyInject) {
54
+ const localKey = this.replaceKeyInjection(key, keyInject);
55
+ return this.cacheManager.set(localKey, null, { ttl: 1 });
56
+ }
57
+ };
58
+ exports.CacheService = CacheService;
59
+ exports.CacheService = CacheService = __decorate([
60
+ (0, common_1.Injectable)(),
61
+ __param(0, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)),
62
+ __metadata("design:paramtypes", [cache_manager_1.Cache])
63
+ ], CacheService);
64
+ //# sourceMappingURL=cache.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../../../../core/src/shared/services/cache.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yDAA6D;AAC7D,2CAAoD;AACpD,oDAAuB;AAKhB,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGoB;IAF1B,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE9C,YAA2C,YAAmB;QAAnB,iBAAY,GAAZ,YAAY,CAAO;IAAG,CAAC;IAE1D,mBAAmB,CAAC,GAAc,EAAE,SAAkC;QAC5E,IAAI,QAAQ,GAAW,GAAG,CAAC;QAC3B,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAc,EAAE,SAAkC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAc,EACd,KAAc,EACd,SAAkC,EAClC,GAAG,GAAG,IAAI,CAAC,WAAW;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAG1D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAS,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,GAAc,EAEd,EAAsB,EACtB,SAAkC,EAClC,GAAG,GAAG,IAAI,CAAC,WAAW;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAc,EAAE,SAAkC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAG1D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAS,CAAC,CAAC;IAClE,CAAC;CACF,CAAA;AAzDY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAAuB,qBAAK;GAHnD,YAAY,CAyDxB","sourcesContent":["import { Cache, CACHE_MANAGER } from '@nestjs/cache-manager';\r\nimport { Inject, Injectable } from '@nestjs/common';\r\nimport _ from 'lodash';\r\n\r\nimport { CACHE_KEY } from '../constants/cache';\r\n\r\n@Injectable()\r\nexport class CacheService {\r\n private readonly DEFAULT_TTL = 60 * 60 * 1000; // 1 hour in milliseconds\r\n\r\n constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}\r\n\r\n private replaceKeyInjection(key: CACHE_KEY, keyInject?: Record<string, string>) {\r\n let localkey: string = key;\r\n if (keyInject) {\r\n localkey = localkey.replace(/\\*(\\w+)/g, (match, p1) => keyInject[p1]);\r\n }\r\n\r\n return localkey;\r\n }\r\n\r\n async get<T>(key: CACHE_KEY, keyInject?: Record<string, string>): Promise<T | null> {\r\n const localKey = this.replaceKeyInjection(key, keyInject);\r\n\r\n return this.cacheManager.get<T>(localKey);\r\n }\r\n\r\n async set(\r\n key: CACHE_KEY,\r\n value: unknown,\r\n keyInject?: Record<string, string>,\r\n ttl = this.DEFAULT_TTL,\r\n ) {\r\n const localKey = this.replaceKeyInjection(key, keyInject);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return this.cacheManager.set(localKey, value, { ttl } as any);\r\n }\r\n\r\n async getOrSet(\r\n key: CACHE_KEY,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fn: () => Promise<any>,\r\n keyInject?: Record<string, string>,\r\n ttl = this.DEFAULT_TTL,\r\n ) {\r\n const localKey = this.replaceKeyInjection(key, keyInject);\r\n\r\n const value = await this.cacheManager.get(localKey);\r\n\r\n if (value) return value;\r\n\r\n const data = await fn();\r\n if (!_.isEmpty(data)) await this.cacheManager.set(localKey, data, ttl);\r\n\r\n return data;\r\n }\r\n\r\n async del(key: CACHE_KEY, keyInject?: Record<string, string>) {\r\n const localKey = this.replaceKeyInjection(key, keyInject);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return this.cacheManager.set(localKey, null, { ttl: 1 } as any);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,8 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { EntitySchema } from 'typeorm';
3
+ export interface SharedModuleOptions {
4
+ entities?: Array<string | Function | EntitySchema>;
5
+ }
6
+ export declare class SharedModule {
7
+ static forRoot(options?: SharedModuleOptions): DynamicModule;
8
+ }
@@ -0,0 +1,81 @@
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 SharedModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SharedModule = void 0;
11
+ const redis_1 = require("@keyv/redis");
12
+ const cache_manager_1 = require("@nestjs/cache-manager");
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const core_1 = require("@nestjs/core");
16
+ const typeorm_1 = require("@nestjs/typeorm");
17
+ const settings_entity_1 = require("../settings/entities/settings.entity");
18
+ const settings_module_1 = require("../settings/settings.module");
19
+ const module_options_1 = require("./configs/module-options");
20
+ const all_exceptions_filter_1 = require("./filters/all-exceptions.filter");
21
+ const logging_interceptor_1 = require("./interceptors/logging.interceptor");
22
+ const logger_module_1 = require("./logger/logger.module");
23
+ const cache_service_1 = require("./services/cache.service");
24
+ let SharedModule = SharedModule_1 = class SharedModule {
25
+ static forRoot(options = {}) {
26
+ const coreEntities = [settings_entity_1.Settings];
27
+ const parentEntities = options.entities || [];
28
+ const allEntities = [...coreEntities, ...parentEntities];
29
+ return {
30
+ module: SharedModule_1,
31
+ imports: [
32
+ cache_manager_1.CacheModule.registerAsync({
33
+ isGlobal: true,
34
+ imports: [config_1.ConfigModule],
35
+ useFactory: async (configService) => ({
36
+ stores: [
37
+ (0, redis_1.createKeyv)({
38
+ url: configService.get('redis.url'),
39
+ password: configService.get('redis.password'),
40
+ }),
41
+ ],
42
+ }),
43
+ inject: [config_1.ConfigService],
44
+ }),
45
+ config_1.ConfigModule.forRoot(module_options_1.configModuleOptions),
46
+ typeorm_1.TypeOrmModule.forRootAsync({
47
+ imports: [config_1.ConfigModule],
48
+ inject: [config_1.ConfigService],
49
+ useFactory: async (configService) => ({
50
+ type: 'postgres',
51
+ host: configService.get('database.host'),
52
+ port: configService.get('database.port'),
53
+ database: configService.get('database.name'),
54
+ username: configService.get('database.user'),
55
+ password: configService.get('database.pass'),
56
+ entities: allEntities,
57
+ timezone: 'Z',
58
+ synchronize: false,
59
+ debug: true,
60
+ }),
61
+ }),
62
+ logger_module_1.AppLoggerModule,
63
+ settings_module_1.SettingsModule,
64
+ ],
65
+ exports: [logger_module_1.AppLoggerModule, config_1.ConfigModule, cache_service_1.CacheService, settings_module_1.SettingsModule],
66
+ providers: [
67
+ { provide: core_1.APP_INTERCEPTOR, useClass: logging_interceptor_1.LoggingInterceptor },
68
+ {
69
+ provide: core_1.APP_FILTER,
70
+ useClass: all_exceptions_filter_1.AllExceptionsFilter,
71
+ },
72
+ cache_service_1.CacheService,
73
+ ],
74
+ };
75
+ }
76
+ };
77
+ exports.SharedModule = SharedModule;
78
+ exports.SharedModule = SharedModule = SharedModule_1 = __decorate([
79
+ (0, common_1.Module)({})
80
+ ], SharedModule);
81
+ //# sourceMappingURL=shared.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.module.js","sourceRoot":"","sources":["../../../../../core/src/shared/shared.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAAyC;AACzC,yDAAoD;AACpD,2CAAuD;AACvD,2CAA6D;AAC7D,uCAA2D;AAC3D,6CAAgD;AAGhD,0EAAgE;AAChE,iEAA6D;AAC7D,6DAA+D;AAC/D,2EAAsE;AACtE,4EAAwE;AACxE,0DAAyD;AACzD,4DAAwD;AAQjD,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,UAA+B,EAAE;QAE9C,MAAM,YAAY,GAAG,CAAC,0BAAQ,CAAC,CAAC;QAGhC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QAG9C,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,cAAc,CAAC,CAAC;QAEzD,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,OAAO,EAAE;gBACP,2BAAW,CAAC,aAAa,CAAC;oBACxB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,CAAC,qBAAY,CAAC;oBACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE,CAAC,CAAC;wBACnD,MAAM,EAAE;4BACN,IAAA,kBAAU,EAAC;gCACT,GAAG,EAAE,aAAa,CAAC,GAAG,CAAS,WAAW,CAAC;gCAC3C,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAS,gBAAgB,CAAC;6BACtD,CAAC;yBACH;qBACF,CAAC;oBACF,MAAM,EAAE,CAAC,sBAAa,CAAC;iBACxB,CAAC;gBACF,qBAAY,CAAC,OAAO,CAAC,oCAAmB,CAAC;gBACzC,uBAAa,CAAC,YAAY,CAAC;oBACzB,OAAO,EAAE,CAAC,qBAAY,CAAC;oBACvB,MAAM,EAAE,CAAC,sBAAa,CAAC;oBACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE,CAAC,CAAC;wBACnD,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,aAAa,CAAC,GAAG,CAAS,eAAe,CAAC;wBAChD,IAAI,EAAE,aAAa,CAAC,GAAG,CAAqB,eAAe,CAAC;wBAC5D,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAS,eAAe,CAAC;wBACpD,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAS,eAAe,CAAC;wBACpD,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAS,eAAe,CAAC;wBACpD,QAAQ,EAAE,WAAW;wBAGrB,QAAQ,EAAE,GAAG;wBACb,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,IAAI;qBACZ,CAAC;iBACH,CAAC;gBACF,+BAAe;gBACf,gCAAc;aACf;YACD,OAAO,EAAE,CAAC,+BAAe,EAAE,qBAAY,EAAE,4BAAY,EAAE,gCAAc,CAAC;YACtE,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,sBAAe,EAAE,QAAQ,EAAE,wCAAkB,EAAE;gBAC1D;oBACE,OAAO,EAAE,iBAAU;oBACnB,QAAQ,EAAE,2CAAmB;iBAC9B;gBACD,4BAAY;aACb;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA5DY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,YAAY,CA4DxB","sourcesContent":["import { createKeyv } from '@keyv/redis';\r\nimport { CacheModule } from '@nestjs/cache-manager';\r\nimport { DynamicModule, Module } from '@nestjs/common';\r\nimport { ConfigModule, ConfigService } from '@nestjs/config';\r\nimport { APP_FILTER, APP_INTERCEPTOR } from '@nestjs/core';\r\nimport { TypeOrmModule } from '@nestjs/typeorm';\r\nimport { EntitySchema, ObjectType } from 'typeorm';\r\n\r\nimport { Settings } from '../settings/entities/settings.entity';\r\nimport { SettingsModule } from '../settings/settings.module';\r\nimport { configModuleOptions } from './configs/module-options';\r\nimport { AllExceptionsFilter } from './filters/all-exceptions.filter';\r\nimport { LoggingInterceptor } from './interceptors/logging.interceptor';\r\nimport { AppLoggerModule } from './logger/logger.module';\r\nimport { CacheService } from './services/cache.service';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\r\nexport interface SharedModuleOptions {\r\n entities?: Array<string | Function | EntitySchema>; // Entity classes or glob patterns\r\n}\r\n\r\n@Module({})\r\nexport class SharedModule {\r\n static forRoot(options: SharedModuleOptions = {}): DynamicModule {\r\n // Core package entities (always included)\r\n const coreEntities = [Settings];\r\n\r\n // Parent app entities (can be classes or glob patterns)\r\n const parentEntities = options.entities || [];\r\n\r\n // Combine both\r\n const allEntities = [...coreEntities, ...parentEntities];\r\n\r\n return {\r\n module: SharedModule,\r\n imports: [\r\n CacheModule.registerAsync({\r\n isGlobal: true,\r\n imports: [ConfigModule],\r\n useFactory: async (configService: ConfigService) => ({\r\n stores: [\r\n createKeyv({\r\n url: configService.get<string>('redis.url'),\r\n password: configService.get<string>('redis.password'),\r\n }),\r\n ],\r\n }),\r\n inject: [ConfigService],\r\n }),\r\n ConfigModule.forRoot(configModuleOptions),\r\n TypeOrmModule.forRootAsync({\r\n imports: [ConfigModule],\r\n inject: [ConfigService],\r\n useFactory: async (configService: ConfigService) => ({\r\n type: 'postgres',\r\n host: configService.get<string>('database.host'),\r\n port: configService.get<number | undefined>('database.port'),\r\n database: configService.get<string>('database.name'),\r\n username: configService.get<string>('database.user'),\r\n password: configService.get<string>('database.pass'),\r\n entities: allEntities,\r\n // Timezone configured on the Postgres server.\r\n // This is used to typecast server date/time values to JavaScript Date object and vice versa.\r\n timezone: 'Z',\r\n synchronize: false,\r\n debug: true,\r\n }),\r\n }),\r\n AppLoggerModule,\r\n SettingsModule,\r\n ],\r\n exports: [AppLoggerModule, ConfigModule, CacheService, SettingsModule],\r\n providers: [\r\n { provide: APP_INTERCEPTOR, useClass: LoggingInterceptor },\r\n {\r\n provide: APP_FILTER,\r\n useClass: AllExceptionsFilter,\r\n },\r\n CacheService,\r\n ],\r\n };\r\n }\r\n}\r\n"]}
@@ -0,0 +1,5 @@
1
+ export declare const parsePhoneNumber: (input: string) => {
2
+ code: string;
3
+ phone: string;
4
+ full: string;
5
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePhoneNumber = void 0;
4
+ const parsePhoneNumber = (input) => {
5
+ const cleaned = input.replace(/[^\d+]/g, '');
6
+ const match = cleaned.match(/^(\+\d{1,3})(\d+)$/);
7
+ if (!match) {
8
+ return { code: '', phone: cleaned, full: cleaned };
9
+ }
10
+ return {
11
+ code: match[1],
12
+ phone: match[2],
13
+ full: cleaned,
14
+ };
15
+ };
16
+ exports.parsePhoneNumber = parsePhoneNumber;
17
+ //# sourceMappingURL=phone.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone.util.js","sourceRoot":"","sources":["../../../../../../core/src/shared/utils/phone.util.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAiD,EAAE;IAE/F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAG7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B","sourcesContent":["export const parsePhoneNumber = (input: string): { code: string; phone: string; full: string } => {\r\n // Remove all non-digit and plus characters\r\n const cleaned = input.replace(/[^\\d+]/g, '');\r\n\r\n // Match country code (starts with +, followed by 1-3 digits)\r\n const match = cleaned.match(/^(\\+\\d{1,3})(\\d+)$/);\r\n if (!match) {\r\n return { code: '', phone: cleaned, full: cleaned };\r\n }\r\n\r\n return {\r\n code: match[1],\r\n phone: match[2],\r\n full: cleaned,\r\n };\r\n};\r\n"]}
@@ -0,0 +1,4 @@
1
+ export declare const splitName: (name: string) => {
2
+ firstname: string;
3
+ lastname: string;
4
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitName = void 0;
4
+ const splitName = (name) => {
5
+ const nameParts = name.split(' ');
6
+ const firstname = nameParts[0];
7
+ const lastname = nameParts.slice(1).join(' ');
8
+ return { firstname, lastname };
9
+ };
10
+ exports.splitName = splitName;
11
+ //# sourceMappingURL=user.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.util.js","sourceRoot":"","sources":["../../../../../../core/src/shared/utils/user.util.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,IAAY,EAA2C,EAAE;IACjF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB","sourcesContent":["export const splitName = (name: string): { firstname: string; lastname: string } => {\r\n const nameParts = name.split(' ');\r\n const firstname = nameParts[0];\r\n const lastname = nameParts.slice(1).join(' ');\r\n\r\n return { firstname, lastname };\r\n};\r\n"]}
@@ -1,8 +1,8 @@
1
- import { AppLoggerConfig } from '../interfaces/slack-interface';
1
+ import { AppLogger, SettingsService } from 'src/core/src';
2
2
  export declare class SlackClient {
3
3
  private logger;
4
- private botToken?;
5
- constructor(logger: AppLoggerConfig, botToken?: string | undefined);
4
+ private settingsService;
5
+ constructor(logger: AppLogger, settingsService: SettingsService);
6
6
  private initializeClient;
7
7
  listChannels(): Promise<import("@slack/web-api").ConversationsListResponse>;
8
8
  postMessage(channelId: string, text: string): Promise<import("@slack/web-api").ChatPostMessageResponse>;
@@ -8,25 +8,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
11
  var SlackClient_1;
15
12
  Object.defineProperty(exports, "__esModule", { value: true });
16
13
  exports.SlackClient = void 0;
17
14
  const common_1 = require("@nestjs/common");
18
15
  const web_api_1 = require("@slack/web-api");
16
+ const src_1 = require("src/core/src");
17
+ const slack_constants_1 = require("../constants/slack.constants");
19
18
  let SlackClient = SlackClient_1 = class SlackClient {
20
19
  logger;
21
- botToken;
22
- constructor(logger, botToken) {
20
+ settingsService;
21
+ constructor(logger, settingsService) {
23
22
  this.logger = logger;
24
- this.botToken = botToken;
23
+ this.settingsService = settingsService;
25
24
  this.logger.setContext(SlackClient_1.name);
26
25
  }
27
26
  async initializeClient() {
28
27
  try {
29
- const token = this.botToken;
28
+ const token = await this.settingsService.get(slack_constants_1.SLACK_SETTING_KEYS.CREDENTIALS_BOT_TOKEN);
30
29
  if (!token) {
31
30
  throw new Error('Slack bot token not configured');
32
31
  }
@@ -87,8 +86,7 @@ let SlackClient = SlackClient_1 = class SlackClient {
87
86
  exports.SlackClient = SlackClient;
88
87
  exports.SlackClient = SlackClient = SlackClient_1 = __decorate([
89
88
  (0, common_1.Injectable)(),
90
- __param(0, (0, common_1.Inject)('SLACK_LOGGER')),
91
- __param(1, (0, common_1.Inject)('SLACK_BOT_TOKEN')),
92
- __metadata("design:paramtypes", [Object, String])
89
+ __metadata("design:paramtypes", [src_1.AppLogger,
90
+ src_1.SettingsService])
93
91
  ], SlackClient);
94
92
  //# sourceMappingURL=slack.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slack.client.js","sourceRoot":"","sources":["../../../clients/slack.client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\r\nimport { WebClient } from '@slack/web-api';\r\n\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\n\r\n@Injectable()\r\nexport class SlackClient {\r\n constructor(\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n @Inject('SLACK_BOT_TOKEN') private botToken?: string,\r\n ) {\r\n this.logger.setContext(SlackClient.name);\r\n }\r\n\r\n private async initializeClient(): Promise<WebClient> {\r\n try {\r\n const token = this.botToken;\r\n\r\n if (!token) {\r\n throw new Error('Slack bot token not configured');\r\n }\r\n const client = new WebClient(token);\r\n\r\n const auth = await client.auth.test();\r\n this.logger.log(`Slack connected: ${auth.user} (${auth.team})`);\r\n\r\n return client;\r\n } catch (error) {\r\n this.logger.error('Error connecting slack', error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n async listChannels() {\r\n const client = await this.initializeClient();\r\n return await client.conversations.list({\r\n types: 'public_channel,private_channel',\r\n });\r\n }\r\n\r\n async postMessage(channelId: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n });\r\n }\r\n\r\n async replyToThread(channelId: string, threadTs: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n thread_ts: threadTs,\r\n });\r\n }\r\n\r\n async addReaction(channelId: string, timestamp: string, reaction: string) {\r\n const client = await this.initializeClient();\r\n return await client.reactions.add({\r\n channel: channelId,\r\n timestamp: timestamp,\r\n name: reaction,\r\n });\r\n }\r\n\r\n async getChannelHistory(channelId: string, limit: number = 10) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.history({\r\n channel: channelId,\r\n limit: limit,\r\n });\r\n }\r\n\r\n async getThreadReplies(channelId: string, threadTs: string) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.replies({\r\n channel: channelId,\r\n ts: threadTs,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"slack.client.js","sourceRoot":"","sources":["../../../clients/slack.client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@nestjs/common';\r\nimport { WebClient } from '@slack/web-api';\r\nimport { AppLogger, SettingsService } from 'src/core/src';\r\n\r\nimport { SLACK_SETTING_KEYS } from '../constants/slack.constants';\r\n\r\n@Injectable()\r\nexport class SlackClient {\r\n constructor(\r\n private logger: AppLogger,\r\n private settingsService: SettingsService,\r\n ) {\r\n this.logger.setContext(SlackClient.name);\r\n }\r\n\r\n private async initializeClient(): Promise<WebClient> {\r\n try {\r\n const token = await this.settingsService.get(SLACK_SETTING_KEYS.CREDENTIALS_BOT_TOKEN);\r\n\r\n if (!token) {\r\n throw new Error('Slack bot token not configured');\r\n }\r\n const client = new WebClient(token);\r\n\r\n const auth = await client.auth.test();\r\n this.logger.log(`Slack connected: ${auth.user} (${auth.team})`);\r\n\r\n return client;\r\n } catch (error) {\r\n this.logger.error('Error connecting slack', error as Error);\r\n throw error;\r\n }\r\n }\r\n\r\n async listChannels() {\r\n const client = await this.initializeClient();\r\n return await client.conversations.list({\r\n types: 'public_channel,private_channel',\r\n });\r\n }\r\n\r\n async postMessage(channelId: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n });\r\n }\r\n\r\n async replyToThread(channelId: string, threadTs: string, text: string) {\r\n const client = await this.initializeClient();\r\n return await client.chat.postMessage({\r\n channel: channelId,\r\n text: text,\r\n thread_ts: threadTs,\r\n });\r\n }\r\n\r\n async addReaction(channelId: string, timestamp: string, reaction: string) {\r\n const client = await this.initializeClient();\r\n return await client.reactions.add({\r\n channel: channelId,\r\n timestamp: timestamp,\r\n name: reaction,\r\n });\r\n }\r\n\r\n async getChannelHistory(channelId: string, limit: number = 10) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.history({\r\n channel: channelId,\r\n limit: limit,\r\n });\r\n }\r\n\r\n async getThreadReplies(channelId: string, threadTs: string) {\r\n const client = await this.initializeClient();\r\n return await client.conversations.replies({\r\n channel: channelId,\r\n ts: threadTs,\r\n });\r\n }\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const SLACK_SETTING_KEYS: {
2
+ CREDENTIALS_BOT_TOKEN: string;
3
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLACK_SETTING_KEYS = void 0;
4
+ exports.SLACK_SETTING_KEYS = {
5
+ CREDENTIALS_BOT_TOKEN: 'GLOBAL:SLACK:GENERAL:BOT_TOKEN',
6
+ };
7
+ //# sourceMappingURL=slack.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.constants.js","sourceRoot":"","sources":["../../../constants/slack.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,qBAAqB,EAAE,gCAAgC;CACxD,CAAC","sourcesContent":["export const SLACK_SETTING_KEYS = {\r\n CREDENTIALS_BOT_TOKEN: 'GLOBAL:SLACK:GENERAL:BOT_TOKEN',\r\n};\r\n"]}
@@ -1,12 +1,12 @@
1
1
  import { EventEmitter2 } from '@nestjs/event-emitter';
2
+ import { AppLogger } from 'src/core/src';
2
3
  import { SlackWebhookEventDto } from '../dtos/slack-webhook-event.dto';
3
- import { AppLoggerConfig } from '../interfaces/slack-interface';
4
4
  import { SlackChallengeResponse, SlackOkResponse } from '../types/slack.event.type';
5
5
  type SlackWebhookResponse = SlackChallengeResponse | SlackOkResponse;
6
6
  export declare class SlackWebhookController {
7
7
  private readonly eventEmitter;
8
8
  private logger;
9
- constructor(eventEmitter: EventEmitter2, logger: AppLoggerConfig);
9
+ constructor(eventEmitter: EventEmitter2, logger: AppLogger);
10
10
  handleWebhook(data: SlackWebhookEventDto): Promise<SlackWebhookResponse>;
11
11
  }
12
12
  export {};
@@ -17,6 +17,7 @@ exports.SlackWebhookController = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const event_emitter_1 = require("@nestjs/event-emitter");
19
19
  const swagger_1 = require("@nestjs/swagger");
20
+ const src_1 = require("src/core/src");
20
21
  const slack_event_constant_1 = require("../constants/slack.event.constant");
21
22
  const slack_webhook_event_dto_1 = require("../dtos/slack-webhook-event.dto");
22
23
  let SlackWebhookController = SlackWebhookController_1 = class SlackWebhookController {
@@ -56,7 +57,7 @@ __decorate([
56
57
  exports.SlackWebhookController = SlackWebhookController = SlackWebhookController_1 = __decorate([
57
58
  (0, swagger_1.ApiTags)('general/slack/webhook'),
58
59
  (0, common_1.Controller)('general/slack/webhook'),
59
- __param(1, (0, common_1.Inject)('SLACK_LOGGER')),
60
- __metadata("design:paramtypes", [event_emitter_1.EventEmitter2, Object])
60
+ __metadata("design:paramtypes", [event_emitter_1.EventEmitter2,
61
+ src_1.AppLogger])
61
62
  ], SlackWebhookController);
62
63
  //# sourceMappingURL=slack.webhook.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slack.webhook.controller.js","sourceRoot":"","sources":["../../../controllers/slack.webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0E;AAC1E,yDAAsD;AACtD,6CAAwD;AAExD,4EAA6F;AAC7F,6EAAuE;AAOhE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAEd;IACe;IAFlC,YACmB,YAA2B,EACZ,MAAuB;QADtC,iBAAY,GAAZ,YAAY,CAAe;QACZ,WAAM,GAAN,MAAM,CAAiB;QAEvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKK,AAAN,KAAK,CAAC,aAAa,CAAS,IAA0B;QACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAU,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,SAAS,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE7E,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,iDAA0B,CAAC,wBAAwB,EACnD,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EACpB,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAC;YAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnCY,wDAAsB;AAW3B;IAHL,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACb,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,8CAAoB;;2DAuBrD;iCAlCU,sBAAsB;IAFlC,IAAA,iBAAO,EAAC,uBAAuB,CAAC;IAChC,IAAA,mBAAU,EAAC,uBAAuB,CAAC;IAI/B,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;qCADQ,6BAAa;GAFnC,sBAAsB,CAmClC","sourcesContent":["import { Body, Controller, HttpCode, Inject, Post } from '@nestjs/common';\r\nimport { EventEmitter2 } from '@nestjs/event-emitter';\r\nimport { ApiOperation, ApiTags } from '@nestjs/swagger';\r\n\r\nimport { EVENT_EMITTER_SLACK_EVENTS, SLACK_EVENTS } from '../constants/slack.event.constant';\r\nimport { SlackWebhookEventDto } from '../dtos/slack-webhook-event.dto';\r\nimport { AppLoggerConfig } from '../interfaces/slack-interface';\r\nimport { SlackChallengeResponse, SlackOkResponse } from '../types/slack.event.type';\r\n\r\ntype SlackWebhookResponse = SlackChallengeResponse | SlackOkResponse;\r\n@ApiTags('general/slack/webhook')\r\n@Controller('general/slack/webhook')\r\nexport class SlackWebhookController {\r\n constructor(\r\n private readonly eventEmitter: EventEmitter2,\r\n @Inject('SLACK_LOGGER') private logger: AppLoggerConfig,\r\n ) {\r\n this.logger.setContext(SlackWebhookController.name);\r\n }\r\n\r\n @Post()\r\n @HttpCode(200)\r\n @ApiOperation({ summary: 'Receive webhooks from Slack' })\r\n async handleWebhook(@Body() data: SlackWebhookEventDto): Promise<SlackWebhookResponse> {\r\n this.logger.log(`Webhook ${data.type}`);\r\n\r\n if (data.type === SLACK_EVENTS.URL_VERIFICATION) {\r\n this.logger.log(`Webhook ${data.type}`);\r\n return { challenge: data.challenge! };\r\n }\r\n\r\n if (data.type === SLACK_EVENTS.EVENT_CALLBACK && data.event) {\r\n const eventType = data.event.type;\r\n this.logger.log(`Event received: ${eventType} from user ${data.event.user}`);\r\n\r\n this.eventEmitter.emit(\r\n EVENT_EMITTER_SLACK_EVENTS.WEBHOOK_INCOMING_MESSAGE,\r\n { data: data.event },\r\n { async: true },\r\n );\r\n\r\n return { ok: true };\r\n }\r\n\r\n this.logger.warn(`Type of event is not supported: ${data.type}`);\r\n return { ok: true };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"slack.webhook.controller.js","sourceRoot":"","sources":["../../../controllers/slack.webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,yDAAsD;AACtD,6CAAwD;AACxD,sCAAyC;AAEzC,4EAA6F;AAC7F,6EAAuE;AAMhE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAEd;IACT;IAFV,YACmB,YAA2B,EACpC,MAAiB;QADR,iBAAY,GAAZ,YAAY,CAAe;QACpC,WAAM,GAAN,MAAM,CAAW;QAEzB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKK,AAAN,KAAK,CAAC,aAAa,CAAS,IAA0B;QACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAU,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,mCAAY,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,SAAS,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAE7E,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,iDAA0B,CAAC,wBAAwB,EACnD,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EACpB,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAC;YAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnCY,wDAAsB;AAW3B;IAHL,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACb,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,8CAAoB;;2DAuBrD;iCAlCU,sBAAsB;IAFlC,IAAA,iBAAO,EAAC,uBAAuB,CAAC;IAChC,IAAA,mBAAU,EAAC,uBAAuB,CAAC;qCAGD,6BAAa;QAC5B,eAAS;GAHhB,sBAAsB,CAmClC","sourcesContent":["import { Body, Controller, HttpCode, Post } from '@nestjs/common';\r\nimport { EventEmitter2 } from '@nestjs/event-emitter';\r\nimport { ApiOperation, ApiTags } from '@nestjs/swagger';\r\nimport { AppLogger } from 'src/core/src';\r\n\r\nimport { EVENT_EMITTER_SLACK_EVENTS, SLACK_EVENTS } from '../constants/slack.event.constant';\r\nimport { SlackWebhookEventDto } from '../dtos/slack-webhook-event.dto';\r\nimport { SlackChallengeResponse, SlackOkResponse } from '../types/slack.event.type';\r\n\r\ntype SlackWebhookResponse = SlackChallengeResponse | SlackOkResponse;\r\n@ApiTags('general/slack/webhook')\r\n@Controller('general/slack/webhook')\r\nexport class SlackWebhookController {\r\n constructor(\r\n private readonly eventEmitter: EventEmitter2,\r\n private logger: AppLogger,\r\n ) {\r\n this.logger.setContext(SlackWebhookController.name);\r\n }\r\n\r\n @Post()\r\n @HttpCode(200)\r\n @ApiOperation({ summary: 'Receive webhooks from Slack' })\r\n async handleWebhook(@Body() data: SlackWebhookEventDto): Promise<SlackWebhookResponse> {\r\n this.logger.log(`Webhook ${data.type}`);\r\n\r\n if (data.type === SLACK_EVENTS.URL_VERIFICATION) {\r\n this.logger.log(`Webhook ${data.type}`);\r\n return { challenge: data.challenge! };\r\n }\r\n\r\n if (data.type === SLACK_EVENTS.EVENT_CALLBACK && data.event) {\r\n const eventType = data.event.type;\r\n this.logger.log(`Event received: ${eventType} from user ${data.event.user}`);\r\n\r\n this.eventEmitter.emit(\r\n EVENT_EMITTER_SLACK_EVENTS.WEBHOOK_INCOMING_MESSAGE,\r\n { data: data.event },\r\n { async: true },\r\n );\r\n\r\n return { ok: true };\r\n }\r\n\r\n this.logger.warn(`Type of event is not supported: ${data.type}`);\r\n return { ok: true };\r\n }\r\n}\r\n"]}
@@ -1,4 +1,5 @@
1
1
  export { SlackClient } from './clients/slack.client';
2
+ export { SlackWebhookController } from './controllers/slack.webhook.controller';
2
3
  export { SlackConfig } from './interfaces/slack-interface';
3
4
  export { SlackChannelService } from './services/slack-channel.service';
4
5
  export { SlackMessageService } from './services/slack-message.service';
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SlackModule = exports.SlackMessageService = exports.SlackChannelService = exports.SlackClient = void 0;
3
+ exports.SlackModule = exports.SlackMessageService = exports.SlackChannelService = exports.SlackWebhookController = exports.SlackClient = void 0;
4
4
  var slack_client_1 = require("./clients/slack.client");
5
5
  Object.defineProperty(exports, "SlackClient", { enumerable: true, get: function () { return slack_client_1.SlackClient; } });
6
+ var slack_webhook_controller_1 = require("./controllers/slack.webhook.controller");
7
+ Object.defineProperty(exports, "SlackWebhookController", { enumerable: true, get: function () { return slack_webhook_controller_1.SlackWebhookController; } });
6
8
  var slack_channel_service_1 = require("./services/slack-channel.service");
7
9
  Object.defineProperty(exports, "SlackChannelService", { enumerable: true, get: function () { return slack_channel_service_1.SlackChannelService; } });
8
10
  var slack_message_service_1 = require("./services/slack-message.service");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAEpB,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,+CAA6C;AAApC,2GAAA,WAAW,OAAA","sourcesContent":["export { SlackClient } from './clients/slack.client';\r\nexport { SlackConfig } from './interfaces/slack-interface';\r\nexport { SlackChannelService } from './services/slack-channel.service';\r\nexport { SlackMessageService } from './services/slack-message.service';\r\nexport { SlackModule } from './slack.module';\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AACpB,mFAAgF;AAAvE,kIAAA,sBAAsB,OAAA;AAE/B,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,+CAA6C;AAApC,2GAAA,WAAW,OAAA","sourcesContent":["export { SlackClient } from './clients/slack.client';\r\nexport { SlackWebhookController } from './controllers/slack.webhook.controller';\r\nexport { SlackConfig } from './interfaces/slack-interface';\r\nexport { SlackChannelService } from './services/slack-channel.service';\r\nexport { SlackMessageService } from './services/slack-message.service';\r\nexport { SlackModule } from './slack.module';\r\n"]}
@@ -4,9 +4,9 @@ export interface SlackConfig {
4
4
  }
5
5
  export interface AppLoggerConfig {
6
6
  setContext(context: string): void;
7
- error(message: string, meta?: Record<string, any>): Logger;
8
- warn(message: string, meta?: Record<string, any>): Logger;
9
- debug(message: string, meta?: Record<string, any>): Logger;
10
- verbose(message: string, meta?: Record<string, any>): Logger;
11
- log(message: string, meta?: Record<string, any>): Logger;
7
+ error(message: string, meta?: Record<string, unknown> | Error): Logger;
8
+ warn(message: string, meta?: Record<string, unknown>): Logger;
9
+ debug(message: string, meta?: Record<string, unknown>): Logger;
10
+ verbose(message: string, meta?: Record<string, unknown>): Logger;
11
+ log(message: string, meta?: Record<string, unknown>): Logger;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slack-interface.js","sourceRoot":"","sources":["../../../interfaces/slack-interface.ts"],"names":[],"mappings":"","sourcesContent":["import { Logger } from 'winston';\nexport interface SlackConfig {\n botToken: string;\n}\nexport interface AppLoggerConfig {\n setContext(context: string): void;\n error(message: string, meta?: Record<string, any>): Logger;\n warn(message: string, meta?: Record<string, any>): Logger;\n debug(message: string, meta?: Record<string, any>): Logger;\n verbose(message: string, meta?: Record<string, any>): Logger;\n log(message: string, meta?: Record<string, any>): Logger;\n}\n"]}
1
+ {"version":3,"file":"slack-interface.js","sourceRoot":"","sources":["../../../interfaces/slack-interface.ts"],"names":[],"mappings":"","sourcesContent":["import { Logger } from 'winston';\r\nexport interface SlackConfig {\r\n botToken: string;\r\n}\r\nexport interface AppLoggerConfig {\r\n setContext(context: string): void;\r\n error(message: string, meta?: Record<string, unknown> | Error): Logger;\r\n warn(message: string, meta?: Record<string, unknown>): Logger;\r\n debug(message: string, meta?: Record<string, unknown>): Logger;\r\n verbose(message: string, meta?: Record<string, unknown>): Logger;\r\n log(message: string, meta?: Record<string, unknown>): Logger;\r\n}\r\n"]}
@@ -1,9 +1,9 @@
1
+ import { AppLogger } from 'src/core/src';
1
2
  import { SlackClient } from '../clients/slack.client';
2
- import { AppLoggerConfig } from '../interfaces/slack-interface';
3
3
  export declare class SlackChannelService {
4
4
  private readonly slackClient;
5
5
  private logger;
6
- constructor(slackClient: SlackClient, logger: AppLoggerConfig);
6
+ constructor(slackClient: SlackClient, logger: AppLogger);
7
7
  listChannels(): Promise<import("@slack/web-api").ConversationsListResponse>;
8
8
  getChannelHistory(channelId: string, limit?: number): Promise<import("@slack/web-api").ConversationsHistoryResponse>;
9
9
  getThreadReplies(channelId: string, threadTs: string): Promise<import("@slack/web-api").ConversationsRepliesResponse>;
@@ -8,13 +8,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
11
  var SlackChannelService_1;
15
12
  Object.defineProperty(exports, "__esModule", { value: true });
16
13
  exports.SlackChannelService = void 0;
17
14
  const common_1 = require("@nestjs/common");
15
+ const src_1 = require("src/core/src");
18
16
  const slack_client_1 = require("../clients/slack.client");
19
17
  let SlackChannelService = SlackChannelService_1 = class SlackChannelService {
20
18
  slackClient;
@@ -55,7 +53,7 @@ let SlackChannelService = SlackChannelService_1 = class SlackChannelService {
55
53
  exports.SlackChannelService = SlackChannelService;
56
54
  exports.SlackChannelService = SlackChannelService = SlackChannelService_1 = __decorate([
57
55
  (0, common_1.Injectable)(),
58
- __param(1, (0, common_1.Inject)('SLACK_LOGGER')),
59
- __metadata("design:paramtypes", [slack_client_1.SlackClient, Object])
56
+ __metadata("design:paramtypes", [slack_client_1.SlackClient,
57
+ src_1.AppLogger])
60
58
  ], SlackChannelService);
61
59
  //# sourceMappingURL=slack-channel.service.js.map