@venturialstd/slack 0.1.4 → 0.1.5

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 (75) hide show
  1. package/dist/auth/constants/role.constant.d.ts +6 -0
  2. package/dist/auth/constants/role.constant.d.ts.map +1 -0
  3. package/dist/auth/constants/role.constant.js +10 -0
  4. package/dist/auth/constants/role.constant.js.map +1 -0
  5. package/dist/auth/constants/strategy.constant.d.ts +6 -0
  6. package/dist/auth/constants/strategy.constant.d.ts.map +1 -0
  7. package/dist/auth/constants/strategy.constant.js +9 -0
  8. package/dist/auth/constants/strategy.constant.js.map +1 -0
  9. package/dist/auth/decorators/role.decorator.d.ts +5 -0
  10. package/dist/auth/decorators/role.decorator.d.ts.map +1 -0
  11. package/dist/auth/decorators/role.decorator.js +8 -0
  12. package/dist/auth/decorators/role.decorator.js.map +1 -0
  13. package/dist/auth/guards/auth0.guard.d.ts +9 -0
  14. package/dist/auth/guards/auth0.guard.d.ts.map +1 -0
  15. package/dist/auth/guards/auth0.guard.js +28 -0
  16. package/dist/auth/guards/auth0.guard.js.map +1 -0
  17. package/dist/auth/guards/roles.guard.d.ts +8 -0
  18. package/dist/auth/guards/roles.guard.d.ts.map +1 -0
  19. package/dist/auth/guards/roles.guard.js +40 -0
  20. package/dist/auth/guards/roles.guard.js.map +1 -0
  21. package/dist/settings/constants/settings.constant.d.ts +12 -0
  22. package/dist/settings/constants/settings.constant.d.ts.map +1 -0
  23. package/dist/settings/constants/settings.constant.js +16 -0
  24. package/dist/settings/constants/settings.constant.js.map +1 -0
  25. package/dist/settings/controllers/admin/settings.admin.controller.d.ts +12 -0
  26. package/dist/settings/controllers/admin/settings.admin.controller.d.ts.map +1 -0
  27. package/dist/settings/controllers/admin/settings.admin.controller.js +75 -0
  28. package/dist/settings/controllers/admin/settings.admin.controller.js.map +1 -0
  29. package/dist/settings/entities/settings.entity.d.ts +17 -0
  30. package/dist/settings/entities/settings.entity.d.ts.map +1 -0
  31. package/dist/settings/entities/settings.entity.js +103 -0
  32. package/dist/settings/entities/settings.entity.js.map +1 -0
  33. package/dist/settings/services/settings.service.d.ts +13 -0
  34. package/dist/settings/services/settings.service.d.ts.map +1 -0
  35. package/dist/settings/services/settings.service.js +150 -0
  36. package/dist/settings/services/settings.service.js.map +1 -0
  37. package/dist/settings/settings.module.d.ts +3 -0
  38. package/dist/settings/settings.module.d.ts.map +1 -0
  39. package/dist/settings/settings.module.js +26 -0
  40. package/dist/settings/settings.module.js.map +1 -0
  41. package/dist/shared/constants/crud.d.ts +83 -0
  42. package/dist/shared/constants/crud.d.ts.map +1 -0
  43. package/dist/shared/constants/crud.js +132 -0
  44. package/dist/shared/constants/crud.js.map +1 -0
  45. package/dist/shared/logger/logger.service.d.ts +13 -0
  46. package/dist/shared/logger/logger.service.d.ts.map +1 -0
  47. package/dist/shared/logger/logger.service.js +75 -0
  48. package/dist/shared/logger/logger.service.js.map +1 -0
  49. package/dist/slack/clients/slack.client.d.ts.map +1 -0
  50. package/dist/slack/constants/slack.constants.d.ts.map +1 -0
  51. package/dist/slack/constants/slack.event.constant.d.ts.map +1 -0
  52. package/dist/slack/controllers/slack.webhook.controller.d.ts +13 -0
  53. package/dist/slack/controllers/slack.webhook.controller.d.ts.map +1 -0
  54. package/dist/slack/controllers/slack.webhook.controller.js +61 -0
  55. package/dist/slack/controllers/slack.webhook.controller.js.map +1 -0
  56. package/dist/slack/dtos/slack-webhook-event.dto.d.ts.map +1 -0
  57. package/dist/slack/index.d.ts.map +1 -0
  58. package/dist/slack/index.js.map +1 -1
  59. package/dist/slack/interfaces/logger.interface.js.map +1 -1
  60. package/dist/slack/services/slack-channel.service.d.ts +11 -0
  61. package/dist/slack/services/slack-channel.service.d.ts.map +1 -0
  62. package/dist/slack/services/slack-channel.service.js +57 -0
  63. package/dist/slack/services/slack-channel.service.js.map +1 -0
  64. package/dist/slack/services/slack-message.service.d.ts +10 -0
  65. package/dist/slack/services/slack-message.service.d.ts.map +1 -0
  66. package/dist/slack/services/slack-message.service.js +48 -0
  67. package/dist/slack/services/slack-message.service.js.map +1 -0
  68. package/dist/slack/settings/slack.settings.d.ts +3 -0
  69. package/dist/slack/settings/slack.settings.d.ts.map +1 -0
  70. package/dist/slack/settings/slack.settings.js +19 -0
  71. package/dist/slack/settings/slack.settings.js.map +1 -0
  72. package/dist/slack/slack.module.d.ts.map +1 -0
  73. package/dist/slack/tsconfig.build.tsbuildinfo +1 -1
  74. package/dist/slack/types/slack.event.type.d.ts.map +1 -0
  75. package/package.json +3 -3
@@ -0,0 +1,6 @@
1
+ export declare enum ROLE {
2
+ USER = "USER",
3
+ ADMIN = "ADMIN",
4
+ CHAT_BOT = "CHAT_BOT"
5
+ }
6
+ //# sourceMappingURL=role.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.constant.d.ts","sourceRoot":"","sources":["../../../../auth/constants/role.constant.ts"],"names":[],"mappings":"AAAA,oBAAY,IAAI;IACd,IAAI,SAAS;IACb,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROLE = void 0;
4
+ var ROLE;
5
+ (function (ROLE) {
6
+ ROLE["USER"] = "USER";
7
+ ROLE["ADMIN"] = "ADMIN";
8
+ ROLE["CHAT_BOT"] = "CHAT_BOT";
9
+ })(ROLE || (exports.ROLE = ROLE = {}));
10
+ //# sourceMappingURL=role.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.constant.js","sourceRoot":"","sources":["../../../../auth/constants/role.constant.ts"],"names":[],"mappings":";;;AAAA,IAAY,IAIX;AAJD,WAAY,IAAI;IACd,qBAAa,CAAA;IACb,uBAAe,CAAA;IACf,6BAAqB,CAAA;AACvB,CAAC,EAJW,IAAI,oBAAJ,IAAI,QAIf","sourcesContent":["export enum ROLE {\r\n USER = 'USER',\r\n ADMIN = 'ADMIN',\r\n CHAT_BOT = 'CHAT_BOT',\r\n}\r\n"]}
@@ -0,0 +1,6 @@
1
+ export declare const STRATEGY_LOCAL = "local";
2
+ export declare const STRATEGY_JWT_AUTH = "jwt-auth";
3
+ export declare const STRATEGY_JWT_REFRESH = "jwt-refresh";
4
+ export declare const STRATEGY_JWT = "jwt";
5
+ export declare const STRATEGY_AUTH0 = "jwt";
6
+ //# sourceMappingURL=strategy.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.constant.d.ts","sourceRoot":"","sources":["../../../../auth/constants/strategy.constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRATEGY_AUTH0 = exports.STRATEGY_JWT = exports.STRATEGY_JWT_REFRESH = exports.STRATEGY_JWT_AUTH = exports.STRATEGY_LOCAL = void 0;
4
+ exports.STRATEGY_LOCAL = 'local';
5
+ exports.STRATEGY_JWT_AUTH = 'jwt-auth';
6
+ exports.STRATEGY_JWT_REFRESH = 'jwt-refresh';
7
+ exports.STRATEGY_JWT = 'jwt';
8
+ exports.STRATEGY_AUTH0 = 'jwt';
9
+ //# sourceMappingURL=strategy.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.constant.js","sourceRoot":"","sources":["../../../../auth/constants/strategy.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,OAAO,CAAC;AACzB,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAC/B,QAAA,oBAAoB,GAAG,aAAa,CAAC;AACrC,QAAA,YAAY,GAAG,KAAK,CAAC;AACrB,QAAA,cAAc,GAAG,KAAK,CAAC","sourcesContent":["export const STRATEGY_LOCAL = 'local';\r\nexport const STRATEGY_JWT_AUTH = 'jwt-auth';\r\nexport const STRATEGY_JWT_REFRESH = 'jwt-refresh';\r\nexport const STRATEGY_JWT = 'jwt';\r\nexport const STRATEGY_AUTH0 = 'jwt';\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { CustomDecorator } from '@nestjs/common';
2
+ import { ROLE } from '../constants/role.constant';
3
+ export declare const ROLES_KEY = "roles";
4
+ export declare const Roles: (...roles: ROLE[]) => CustomDecorator<string>;
5
+ //# sourceMappingURL=role.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.decorator.d.ts","sourceRoot":"","sources":["../../../../auth/decorators/role.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,KAAK,aAAc,IAAI,EAAE,KAAG,eAAe,CAAC,MAAM,CAAkC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Roles = exports.ROLES_KEY = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.ROLES_KEY = 'roles';
6
+ const Roles = (...roles) => (0, common_1.SetMetadata)(exports.ROLES_KEY, roles);
7
+ exports.Roles = Roles;
8
+ //# sourceMappingURL=role.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.decorator.js","sourceRoot":"","sources":["../../../../auth/decorators/role.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAIjD,QAAA,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAa,EAA2B,EAAE,CAAC,IAAA,oBAAW,EAAC,iBAAS,EAAE,KAAK,CAAC,CAAC;AAArF,QAAA,KAAK,SAAgF","sourcesContent":["import { CustomDecorator, SetMetadata } from '@nestjs/common';\r\n\r\nimport { ROLE } from '../constants/role.constant';\r\n\r\nexport const ROLES_KEY = 'roles';\r\nexport const Roles = (...roles: ROLE[]): CustomDecorator<string> => SetMetadata(ROLES_KEY, roles);\r\n"]}
@@ -0,0 +1,9 @@
1
+ import { ExecutionContext } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ declare const Auth0Guard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
4
+ export declare class Auth0Guard extends Auth0Guard_base {
5
+ canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean>;
6
+ handleRequest(err: any, user: any, info: any): any;
7
+ }
8
+ export {};
9
+ //# sourceMappingURL=auth0.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth0.guard.d.ts","sourceRoot":"","sources":["../../../../auth/guards/auth0.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqC,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;;AAIlC,qBACa,UAAW,SAAQ,eAAyB;IACvD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;IAOxF,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;CAO7C"}
@@ -0,0 +1,28 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Auth0Guard = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const passport_1 = require("@nestjs/passport");
12
+ const strategy_constant_1 = require("../constants/strategy.constant");
13
+ let Auth0Guard = class Auth0Guard extends (0, passport_1.AuthGuard)(strategy_constant_1.STRATEGY_AUTH0) {
14
+ canActivate(context) {
15
+ return super.canActivate(context);
16
+ }
17
+ handleRequest(err, user, info) {
18
+ if (err || !user) {
19
+ throw err || new common_1.UnauthorizedException(`${info}`);
20
+ }
21
+ return user;
22
+ }
23
+ };
24
+ exports.Auth0Guard = Auth0Guard;
25
+ exports.Auth0Guard = Auth0Guard = __decorate([
26
+ (0, common_1.Injectable)()
27
+ ], Auth0Guard);
28
+ //# sourceMappingURL=auth0.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth0.guard.js","sourceRoot":"","sources":["../../../../auth/guards/auth0.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAqF;AACrF,+CAA6C;AAG7C,sEAAgE;AAGzD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,IAAA,oBAAS,EAAC,kCAAc,CAAC;IACvD,WAAW,CAAC,OAAyB;QAGnC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAGD,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAE1C,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,GAAG,IAAI,IAAI,8BAAqB,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAfY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAetB","sourcesContent":["import { ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';\r\nimport { AuthGuard } from '@nestjs/passport';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { STRATEGY_AUTH0 } from '../constants/strategy.constant';\r\n\r\n@Injectable()\r\nexport class Auth0Guard extends AuthGuard(STRATEGY_AUTH0) {\r\n canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {\r\n // Add your custom authentication logic here\r\n // for example, call super.logIn(request) to establish a session.\r\n return super.canActivate(context);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n handleRequest(err: any, user: any, info: any) {\r\n // You can throw an exception based on either \"info\" or \"err\" arguments\r\n if (err || !user) {\r\n throw err || new UnauthorizedException(`${info}`);\r\n }\r\n return user;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,8 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ export declare class RolesGuard implements CanActivate {
4
+ private reflector;
5
+ constructor(reflector: Reflector);
6
+ canActivate(context: ExecutionContext): boolean;
7
+ }
8
+ //# sourceMappingURL=roles.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.guard.d.ts","sourceRoot":"","sources":["../../../../auth/guards/roles.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAqC,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,qBACa,UAAW,YAAW,WAAW;IAChC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAmBhD"}
@@ -0,0 +1,40 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RolesGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const role_decorator_1 = require("../decorators/role.decorator");
16
+ let RolesGuard = class RolesGuard {
17
+ constructor(reflector) {
18
+ this.reflector = reflector;
19
+ }
20
+ canActivate(context) {
21
+ const requiredRoles = this.reflector.getAllAndOverride(role_decorator_1.ROLES_KEY, [
22
+ context.getHandler(),
23
+ context.getClass(),
24
+ ]);
25
+ if (!requiredRoles) {
26
+ return true;
27
+ }
28
+ const { user } = context.switchToHttp().getRequest();
29
+ if (requiredRoles.some((role) => user.user.roles?.includes(role))) {
30
+ return true;
31
+ }
32
+ throw new common_1.UnauthorizedException(`User with roles ${user.roles} does not have access to this route with roles ${requiredRoles}`);
33
+ }
34
+ };
35
+ exports.RolesGuard = RolesGuard;
36
+ exports.RolesGuard = RolesGuard = __decorate([
37
+ (0, common_1.Injectable)(),
38
+ __metadata("design:paramtypes", [core_1.Reflector])
39
+ ], RolesGuard);
40
+ //# sourceMappingURL=roles.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../../auth/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkG;AAClG,uCAAyC;AAGzC,iEAAyD;AAGlD,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,WAAW,CAAC,OAAyB;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAS,0BAAS,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAErD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,8BAAqB,CAC7B,mBAAmB,IAAI,CAAC,KAAK,kDAAkD,aAAa,EAAE,CAC/F,CAAC;IACJ,CAAC;CACF,CAAA;AAtBY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,UAAU,CAsBtB","sourcesContent":["import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';\r\nimport { Reflector } from '@nestjs/core';\r\n\r\nimport { ROLE } from '../constants/role.constant';\r\nimport { ROLES_KEY } from '../decorators/role.decorator';\r\n\r\n@Injectable()\r\nexport class RolesGuard implements CanActivate {\r\n constructor(private reflector: Reflector) {}\r\n\r\n canActivate(context: ExecutionContext): boolean {\r\n const requiredRoles = this.reflector.getAllAndOverride<ROLE[]>(ROLES_KEY, [\r\n context.getHandler(),\r\n context.getClass(),\r\n ]);\r\n\r\n if (!requiredRoles) {\r\n return true;\r\n }\r\n const { user } = context.switchToHttp().getRequest();\r\n\r\n if (requiredRoles.some((role) => user.user.roles?.includes(role))) {\r\n return true;\r\n }\r\n\r\n throw new UnauthorizedException(\r\n `User with roles ${user.roles} does not have access to this route with roles ${requiredRoles}`,\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,12 @@
1
+ export declare enum SETTINGS_TYPE {
2
+ TEXT = "text",
3
+ TEXTAREA = "textarea",
4
+ NUMBER = "number",
5
+ BOOLEAN = "boolean",
6
+ SELECT = "select",
7
+ MULTISELECT = "multiselect",
8
+ JSON = "json",
9
+ DATE = "date",
10
+ SECRET = "secret"
11
+ }
12
+ //# sourceMappingURL=settings.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.constant.d.ts","sourceRoot":"","sources":["../../../../settings/constants/settings.constant.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;CAClB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SETTINGS_TYPE = void 0;
4
+ var SETTINGS_TYPE;
5
+ (function (SETTINGS_TYPE) {
6
+ SETTINGS_TYPE["TEXT"] = "text";
7
+ SETTINGS_TYPE["TEXTAREA"] = "textarea";
8
+ SETTINGS_TYPE["NUMBER"] = "number";
9
+ SETTINGS_TYPE["BOOLEAN"] = "boolean";
10
+ SETTINGS_TYPE["SELECT"] = "select";
11
+ SETTINGS_TYPE["MULTISELECT"] = "multiselect";
12
+ SETTINGS_TYPE["JSON"] = "json";
13
+ SETTINGS_TYPE["DATE"] = "date";
14
+ SETTINGS_TYPE["SECRET"] = "secret";
15
+ })(SETTINGS_TYPE || (exports.SETTINGS_TYPE = SETTINGS_TYPE = {}));
16
+ //# sourceMappingURL=settings.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.constant.js","sourceRoot":"","sources":["../../../../settings/constants/settings.constant.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAUX;AAVD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,4CAA2B,CAAA;IAC3B,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAVW,aAAa,6BAAb,aAAa,QAUxB","sourcesContent":["export enum SETTINGS_TYPE {\r\n TEXT = 'text',\r\n TEXTAREA = 'textarea',\r\n NUMBER = 'number',\r\n BOOLEAN = 'boolean',\r\n SELECT = 'select',\r\n MULTISELECT = 'multiselect',\r\n JSON = 'json',\r\n DATE = 'date',\r\n SECRET = 'secret',\r\n}\r\n"]}
@@ -0,0 +1,12 @@
1
+ import { CrudController, CrudRequest } from '@dataui/crud';
2
+ import { DeepPartial } from 'typeorm';
3
+ import { Settings } from '../../entities/settings.entity';
4
+ import { SettingsService } from '../../services/settings.service';
5
+ export declare class SettingsAdminController implements CrudController<Settings> {
6
+ service: SettingsService;
7
+ constructor(service: SettingsService);
8
+ get base(): CrudController<Settings>;
9
+ getMany(req: CrudRequest): Promise<any[]>;
10
+ createOne(req: CrudRequest, dto: DeepPartial<Settings>): Promise<Settings>;
11
+ }
12
+ //# sourceMappingURL=settings.admin.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.admin.controller.d.ts","sourceRoot":"","sources":["../../../../../settings/controllers/admin/settings.admin.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,WAAW,EAMZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAOtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,qBAca,uBAAwB,YAAW,cAAc,CAAC,QAAQ,CAAC;IACnD,OAAO,EAAE,eAAe;gBAAxB,OAAO,EAAE,eAAe;IAE3C,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,CAEnC;IAMD,OAAO,CAAkB,GAAG,EAAE,WAAW;IAQzC,SAAS,CACU,GAAG,EAAE,WAAW,EACnB,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC;CAGrB"}
@@ -0,0 +1,75 @@
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.SettingsAdminController = void 0;
16
+ const crud_1 = require("@dataui/crud");
17
+ const common_1 = require("@nestjs/common");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ const crud_2 = require("../../../shared/constants/crud");
20
+ const settings_entity_1 = require("../../entities/settings.entity");
21
+ const settings_service_1 = require("../../services/settings.service");
22
+ let SettingsAdminController = class SettingsAdminController {
23
+ constructor(service) {
24
+ this.service = service;
25
+ }
26
+ get base() {
27
+ return this;
28
+ }
29
+ getMany(req) {
30
+ return this.service.getAllWithDefaults?.(req);
31
+ }
32
+ createOne(req, dto) {
33
+ return this.service.createOneOverride(req, dto);
34
+ }
35
+ };
36
+ exports.SettingsAdminController = SettingsAdminController;
37
+ __decorate([
38
+ (0, crud_1.Override)(),
39
+ (0, common_1.UseInterceptors)(crud_1.CrudRequestInterceptor),
40
+ (0, common_1.applyDecorators)(...crud_2.BASE_ADMIN_DECORATORS),
41
+ (0, common_1.UseInterceptors)(...crud_2.BASE_INTERCEPTORS),
42
+ __param(0, (0, crud_1.ParsedRequest)()),
43
+ __metadata("design:type", Function),
44
+ __metadata("design:paramtypes", [Object]),
45
+ __metadata("design:returntype", void 0)
46
+ ], SettingsAdminController.prototype, "getMany", null);
47
+ __decorate([
48
+ (0, crud_1.Override)(),
49
+ (0, common_1.UseInterceptors)(crud_1.CrudRequestInterceptor),
50
+ (0, common_1.applyDecorators)(...crud_2.BASE_ADMIN_DECORATORS),
51
+ (0, common_1.UseInterceptors)(...crud_2.BASE_INTERCEPTORS),
52
+ __param(0, (0, crud_1.ParsedRequest)()),
53
+ __param(1, (0, crud_1.ParsedBody)()),
54
+ __metadata("design:type", Function),
55
+ __metadata("design:paramtypes", [Object, Object]),
56
+ __metadata("design:returntype", Promise)
57
+ ], SettingsAdminController.prototype, "createOne", null);
58
+ exports.SettingsAdminController = SettingsAdminController = __decorate([
59
+ (0, crud_1.Crud)({
60
+ model: {
61
+ type: settings_entity_1.Settings,
62
+ },
63
+ params: {
64
+ ...crud_2.CRUD_ADMIN_BASE_CONFIG.params,
65
+ },
66
+ routes: {
67
+ only: ['createOneBase', 'getManyBase'],
68
+ ...crud_2.CRUD_ADMIN_BASE_CONFIG.routes,
69
+ },
70
+ }),
71
+ (0, swagger_1.ApiTags)('admin/settings'),
72
+ (0, common_1.Controller)('admin/settings'),
73
+ __metadata("design:paramtypes", [settings_service_1.SettingsService])
74
+ ], SettingsAdminController);
75
+ //# sourceMappingURL=settings.admin.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.admin.controller.js","sourceRoot":"","sources":["../../../../../settings/controllers/admin/settings.admin.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCASsB;AACtB,2CAA8E;AAC9E,6CAA0C;AAG1C,yDAIwC;AACxC,oEAA0D;AAC1D,sEAAkE;AAgB3D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAAmB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAE/C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,OAAO,CAAkB,GAAgB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAMD,SAAS,CACU,GAAgB,EACnB,GAA0B;QAExC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAzBY,0DAAuB;AAWlC;IAJC,IAAA,eAAQ,GAAE;IACV,IAAA,wBAAe,EAAC,6BAAsB,CAAC;IACvC,IAAA,wBAAe,EAAC,GAAG,4BAAqB,CAAC;IACzC,IAAA,wBAAe,EAAC,GAAG,wBAAiB,CAAC;IAC7B,WAAA,IAAA,oBAAa,GAAE,CAAA;;;;sDAEvB;AAMD;IAJC,IAAA,eAAQ,GAAE;IACV,IAAA,wBAAe,EAAC,6BAAsB,CAAC;IACvC,IAAA,wBAAe,EAAC,GAAG,4BAAqB,CAAC;IACzC,IAAA,wBAAe,EAAC,GAAG,wBAAiB,CAAC;IAEnC,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,iBAAU,GAAE,CAAA;;;;wDAGd;kCAxBU,uBAAuB;IAdnC,IAAA,WAAI,EAAC;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,0BAAQ;SACf;QACD,MAAM,EAAE;YACN,GAAI,6BAAsB,CAAC,MAAwB;SACpD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;YACtC,GAAG,6BAAsB,CAAC,MAAM;SACjC;KACF,CAAC;IACD,IAAA,iBAAO,EAAC,gBAAgB,CAAC;IACzB,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAEC,kCAAe;GADhC,uBAAuB,CAyBnC","sourcesContent":["import {\r\n Crud,\r\n CrudController,\r\n CrudRequest,\r\n CrudRequestInterceptor,\r\n Override,\r\n ParamsOptions,\r\n ParsedBody,\r\n ParsedRequest,\r\n} from '@dataui/crud';\r\nimport { applyDecorators, Controller, UseInterceptors } from '@nestjs/common';\r\nimport { ApiTags } from '@nestjs/swagger';\r\nimport { DeepPartial } from 'typeorm';\r\n\r\nimport {\r\n BASE_ADMIN_DECORATORS,\r\n BASE_INTERCEPTORS,\r\n CRUD_ADMIN_BASE_CONFIG,\r\n} from '../../../shared/constants/crud';\r\nimport { Settings } from '../../entities/settings.entity';\r\nimport { SettingsService } from '../../services/settings.service';\r\n\r\n@Crud({\r\n model: {\r\n type: Settings,\r\n },\r\n params: {\r\n ...(CRUD_ADMIN_BASE_CONFIG.params as ParamsOptions),\r\n },\r\n routes: {\r\n only: ['createOneBase', 'getManyBase'],\r\n ...CRUD_ADMIN_BASE_CONFIG.routes,\r\n },\r\n})\r\n@ApiTags('admin/settings')\r\n@Controller('admin/settings')\r\nexport class SettingsAdminController implements CrudController<Settings> {\r\n constructor(public service: SettingsService) {}\r\n\r\n get base(): CrudController<Settings> {\r\n return this;\r\n }\r\n\r\n @Override()\r\n @UseInterceptors(CrudRequestInterceptor)\r\n @applyDecorators(...BASE_ADMIN_DECORATORS)\r\n @UseInterceptors(...BASE_INTERCEPTORS)\r\n getMany(@ParsedRequest() req: CrudRequest) {\r\n return this.service.getAllWithDefaults?.(req);\r\n }\r\n\r\n @Override()\r\n @UseInterceptors(CrudRequestInterceptor)\r\n @applyDecorators(...BASE_ADMIN_DECORATORS)\r\n @UseInterceptors(...BASE_INTERCEPTORS)\r\n createOne(\r\n @ParsedRequest() req: CrudRequest,\r\n @ParsedBody() dto: DeepPartial<Settings>,\r\n ): Promise<Settings> {\r\n return this.service.createOneOverride(req, dto);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,17 @@
1
+ import { SETTINGS_TYPE } from '../constants/settings.constant';
2
+ export declare class Settings {
3
+ id: string;
4
+ label: string;
5
+ description: string;
6
+ scope: string;
7
+ module: string;
8
+ section: string;
9
+ key: string;
10
+ value: string;
11
+ type: SETTINGS_TYPE;
12
+ options: object | null | string;
13
+ sortOrder: number;
14
+ createdAt: Date;
15
+ updatedAt: Date;
16
+ }
17
+ //# sourceMappingURL=settings.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.entity.d.ts","sourceRoot":"","sources":["../../../../settings/entities/settings.entity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBACa,QAAQ;IAGnB,EAAE,EAAE,MAAM,CAAC;IAIX,KAAK,EAAE,MAAM,CAAC;IAId,WAAW,EAAE,MAAM,CAAC;IAIpB,KAAK,EAAE,MAAM,CAAC;IAId,MAAM,EAAE,MAAM,CAAC;IAIf,OAAO,EAAE,MAAM,CAAC;IAIhB,GAAG,EAAE,MAAM,CAAC;IAIZ,KAAK,EAAE,MAAM,CAAC;IAQd,IAAI,EAAE,aAAa,CAAC;IAMpB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAGhC,SAAS,EAAE,MAAM,CAAC;IASlB,SAAS,EAAE,IAAI,CAAC;IAShB,SAAS,EAAE,IAAI,CAAC;CACjB"}
@@ -0,0 +1,103 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Settings = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const typeorm_1 = require("typeorm");
16
+ const settings_constant_1 = require("../constants/settings.constant");
17
+ let Settings = class Settings {
18
+ };
19
+ exports.Settings = Settings;
20
+ __decorate([
21
+ (0, class_transformer_1.Exclude)(),
22
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
23
+ __metadata("design:type", String)
24
+ ], Settings.prototype, "id", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsNotEmpty)(),
27
+ (0, typeorm_1.Column)(),
28
+ __metadata("design:type", String)
29
+ ], Settings.prototype, "label", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, typeorm_1.Column)(),
33
+ __metadata("design:type", String)
34
+ ], Settings.prototype, "description", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsNotEmpty)(),
37
+ (0, typeorm_1.Column)(),
38
+ __metadata("design:type", String)
39
+ ], Settings.prototype, "scope", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsNotEmpty)(),
42
+ (0, typeorm_1.Column)(),
43
+ __metadata("design:type", String)
44
+ ], Settings.prototype, "module", void 0);
45
+ __decorate([
46
+ (0, class_validator_1.IsNotEmpty)(),
47
+ (0, typeorm_1.Column)(),
48
+ __metadata("design:type", String)
49
+ ], Settings.prototype, "section", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsNotEmpty)(),
52
+ (0, typeorm_1.Column)(),
53
+ __metadata("design:type", String)
54
+ ], Settings.prototype, "key", void 0);
55
+ __decorate([
56
+ (0, class_validator_1.IsNotEmpty)(),
57
+ (0, typeorm_1.Column)(),
58
+ __metadata("design:type", String)
59
+ ], Settings.prototype, "value", void 0);
60
+ __decorate([
61
+ (0, class_validator_1.IsNotEmpty)(),
62
+ (0, typeorm_1.Column)({
63
+ type: 'enum',
64
+ enum: settings_constant_1.SETTINGS_TYPE,
65
+ default: [settings_constant_1.SETTINGS_TYPE.TEXT],
66
+ }),
67
+ __metadata("design:type", String)
68
+ ], Settings.prototype, "type", void 0);
69
+ __decorate([
70
+ (0, class_validator_1.IsOptional)(),
71
+ (0, typeorm_1.Column)('jsonb', {
72
+ nullable: true,
73
+ }),
74
+ __metadata("design:type", Object)
75
+ ], Settings.prototype, "options", void 0);
76
+ __decorate([
77
+ (0, typeorm_1.Column)({ default: 0 }),
78
+ __metadata("design:type", Number)
79
+ ], Settings.prototype, "sortOrder", void 0);
80
+ __decorate([
81
+ (0, class_transformer_1.Exclude)(),
82
+ (0, typeorm_1.CreateDateColumn)({
83
+ name: 'createdAt',
84
+ nullable: false,
85
+ type: 'timestamptz',
86
+ default: () => 'CURRENT_TIMESTAMP',
87
+ }),
88
+ __metadata("design:type", Date)
89
+ ], Settings.prototype, "createdAt", void 0);
90
+ __decorate([
91
+ (0, class_transformer_1.Exclude)(),
92
+ (0, typeorm_1.UpdateDateColumn)({
93
+ name: 'updatedAt',
94
+ nullable: false,
95
+ type: 'timestamptz',
96
+ default: () => 'CURRENT_TIMESTAMP',
97
+ }),
98
+ __metadata("design:type", Date)
99
+ ], Settings.prototype, "updatedAt", void 0);
100
+ exports.Settings = Settings = __decorate([
101
+ (0, typeorm_1.Entity)('settings')
102
+ ], Settings);
103
+ //# sourceMappingURL=settings.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.entity.js","sourceRoot":"","sources":["../../../../settings/entities/settings.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA4C;AAC5C,qDAAyD;AACzD,qCAMiB;AAEjB,sEAA+D;AAGxD,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAmEpB,CAAA;AAnEY,4BAAQ;AAGnB;IAFC,IAAA,2BAAO,GAAE;IACT,IAAA,gCAAsB,EAAC,MAAM,CAAC;;oCACpB;AAIX;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;uCACK;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;6CACW;AAIpB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;uCACK;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;wCACM;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;yCACO;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;qCACG;AAIZ;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,GAAE;;uCACK;AAQd;IANC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,iCAAa;QACnB,OAAO,EAAE,CAAC,iCAAa,CAAC,IAAI,CAAC;KAC9B,CAAC;;sCACkB;AAMpB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,OAAO,EAAE;QACf,QAAQ,EAAE,IAAI;KACf,CAAC;;yCAC8B;AAGhC;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;2CACL;AASlB;IAPC,IAAA,2BAAO,GAAE;IACT,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB;KACnC,CAAC;8BACS,IAAI;2CAAC;AAShB;IAPC,IAAA,2BAAO,GAAE;IACT,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB;KACnC,CAAC;8BACS,IAAI;2CAAC;mBAlEL,QAAQ;IADpB,IAAA,gBAAM,EAAC,UAAU,CAAC;GACN,QAAQ,CAmEpB","sourcesContent":["import { Exclude } from 'class-transformer';\r\nimport { IsNotEmpty, IsOptional } from 'class-validator';\r\nimport {\r\n Column,\r\n CreateDateColumn,\r\n Entity,\r\n PrimaryGeneratedColumn,\r\n UpdateDateColumn,\r\n} from 'typeorm';\r\n\r\nimport { SETTINGS_TYPE } from '../constants/settings.constant';\r\n\r\n@Entity('settings')\r\nexport class Settings {\r\n @Exclude()\r\n @PrimaryGeneratedColumn('uuid')\r\n id: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n label: string;\r\n\r\n @IsOptional()\r\n @Column()\r\n description: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n scope: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n module: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n section: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n key: string;\r\n\r\n @IsNotEmpty()\r\n @Column()\r\n value: string;\r\n\r\n @IsNotEmpty()\r\n @Column({\r\n type: 'enum',\r\n enum: SETTINGS_TYPE,\r\n default: [SETTINGS_TYPE.TEXT],\r\n })\r\n type: SETTINGS_TYPE;\r\n\r\n @IsOptional()\r\n @Column('jsonb', {\r\n nullable: true,\r\n })\r\n options: object | null | string;\r\n\r\n @Column({ default: 0 })\r\n sortOrder: number;\r\n\r\n @Exclude()\r\n @CreateDateColumn({\r\n name: 'createdAt',\r\n nullable: false,\r\n type: 'timestamptz',\r\n default: () => 'CURRENT_TIMESTAMP',\r\n })\r\n createdAt: Date;\r\n\r\n @Exclude()\r\n @UpdateDateColumn({\r\n name: 'updatedAt',\r\n nullable: false,\r\n type: 'timestamptz',\r\n default: () => 'CURRENT_TIMESTAMP',\r\n })\r\n updatedAt: Date;\r\n}\r\n"]}
@@ -0,0 +1,13 @@
1
+ import { CrudRequest } from '@dataui/crud';
2
+ import { TypeOrmCrudService } from '@dataui/crud-typeorm';
3
+ import { DeepPartial, Repository } from 'typeorm';
4
+ import { Settings } from '../entities/settings.entity';
5
+ export declare class SettingsService extends TypeOrmCrudService<Settings> {
6
+ constructor(repo: Repository<Settings>);
7
+ getModulesSettings(): Promise<any[]>;
8
+ getAllWithDefaults(req: CrudRequest): Promise<any[]>;
9
+ createOneOverride(req: CrudRequest, dto: DeepPartial<Settings>): Promise<Settings>;
10
+ get(key: string): Promise<string | undefined>;
11
+ getManyWithDefaults(keys: string[]): Promise<Record<string, string>>;
12
+ }
13
+ //# sourceMappingURL=settings.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../../../../settings/services/settings.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,qBACa,eAAgB,SAAQ,kBAAkB,CAAC,QAAQ,CAAC;gBACvB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;IAI5D,kBAAkB;IAkBlB,kBAAkB,CAAC,GAAG,EAAE,WAAW;IAkCnC,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBlF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgC7C,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAU3E"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.SettingsService = void 0;
49
+ const crud_typeorm_1 = require("@dataui/crud-typeorm");
50
+ const common_1 = require("@nestjs/common");
51
+ const typeorm_1 = require("@nestjs/typeorm");
52
+ const glob = __importStar(require("glob"));
53
+ const path = __importStar(require("path"));
54
+ const typeorm_2 = require("typeorm");
55
+ const settings_entity_1 = require("../entities/settings.entity");
56
+ let SettingsService = class SettingsService extends crud_typeorm_1.TypeOrmCrudService {
57
+ constructor(repo) {
58
+ super(repo);
59
+ }
60
+ async getModulesSettings() {
61
+ const pattern = path.join(__dirname, '../../../src/*/settings/*.settings.js');
62
+ const files = glob.sync(pattern);
63
+ const allSettings = [];
64
+ for (const file of files) {
65
+ try {
66
+ const mod = await Promise.resolve(`${file}`).then(s => __importStar(require(s)));
67
+ if (mod.SETTINGS) {
68
+ allSettings.push(...mod.SETTINGS);
69
+ }
70
+ }
71
+ catch (e) {
72
+ console.error(`Error loading settings from ${file}:`, e);
73
+ }
74
+ }
75
+ return allSettings;
76
+ }
77
+ async getAllWithDefaults(req) {
78
+ const dbConfigs = (await this.getMany(req));
79
+ const dbConfigMap = new Map(dbConfigs.map((config) => [
80
+ `${config.scope}:${config.module}:${config.section}:${config.key}`,
81
+ config,
82
+ ]));
83
+ const SETTINGS_DEFAULT = await this.getModulesSettings();
84
+ const mergedConfigs = SETTINGS_DEFAULT.map((defaultConfig) => {
85
+ const key = `${defaultConfig.scope}:${defaultConfig.module}:${defaultConfig.section}:${defaultConfig.key}`;
86
+ return dbConfigMap.get(key) || defaultConfig;
87
+ });
88
+ const additionalDbConfigs = dbConfigs.filter((dbConfig) => !SETTINGS_DEFAULT.some((defaultConfig) => dbConfig.scope === defaultConfig.scope &&
89
+ defaultConfig.module === dbConfig.module &&
90
+ defaultConfig.section === dbConfig.section &&
91
+ defaultConfig.key === dbConfig.key));
92
+ return [...mergedConfigs, ...additionalDbConfigs];
93
+ }
94
+ async createOneOverride(req, dto) {
95
+ const existingConfig = await this.repo.findOne({
96
+ where: {
97
+ module: dto.module,
98
+ section: dto.section,
99
+ key: dto.key,
100
+ },
101
+ });
102
+ if (existingConfig) {
103
+ return this.repo.save({ ...existingConfig, ...dto });
104
+ }
105
+ return this.repo.save(dto);
106
+ }
107
+ async get(key) {
108
+ const keyParts = key.split(':');
109
+ if (keyParts.length !== 4) {
110
+ throw new Error('Invalid key format. Expected format: module:section:key');
111
+ }
112
+ const [scope, module, section, configKey] = keyParts;
113
+ const config = await this.repo.findOne({
114
+ where: {
115
+ scope,
116
+ module,
117
+ section,
118
+ key: configKey,
119
+ },
120
+ });
121
+ const SETTINGS_DEFAULT = await this.getModulesSettings();
122
+ const defaultConfig = SETTINGS_DEFAULT.find((config) => config.module === module && config.section === section && config.key === configKey);
123
+ if (config) {
124
+ return config.value;
125
+ }
126
+ else if (defaultConfig) {
127
+ return defaultConfig.value;
128
+ }
129
+ else {
130
+ return undefined;
131
+ }
132
+ }
133
+ async getManyWithDefaults(keys) {
134
+ const results = {};
135
+ for (const key of keys) {
136
+ const value = await this.get(key);
137
+ if (value !== undefined) {
138
+ results[key] = value;
139
+ }
140
+ }
141
+ return results;
142
+ }
143
+ };
144
+ exports.SettingsService = SettingsService;
145
+ exports.SettingsService = SettingsService = __decorate([
146
+ (0, common_1.Injectable)(),
147
+ __param(0, (0, typeorm_1.InjectRepository)(settings_entity_1.Settings)),
148
+ __metadata("design:paramtypes", [typeorm_2.Repository])
149
+ ], SettingsService);
150
+ //# sourceMappingURL=settings.service.js.map