@solidstarters/solid-core 1.2.187 → 1.2.189

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 (89) hide show
  1. package/dist/config/iam.config.d.ts +0 -13
  2. package/dist/config/iam.config.d.ts.map +1 -1
  3. package/dist/config/iam.config.js +2 -12
  4. package/dist/config/iam.config.js.map +1 -1
  5. package/dist/config/jwt.config.d.ts +14 -0
  6. package/dist/config/jwt.config.d.ts.map +1 -0
  7. package/dist/config/jwt.config.js +15 -0
  8. package/dist/config/jwt.config.js.map +1 -0
  9. package/dist/decorators/active-user.decorator.d.ts +1 -1
  10. package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-list-of-values.dto.js +1 -0
  12. package/dist/dtos/create-list-of-values.dto.js.map +1 -1
  13. package/dist/dtos/update-list-of-values.dto.d.ts.map +1 -1
  14. package/dist/dtos/update-list-of-values.dto.js +1 -0
  15. package/dist/dtos/update-list-of-values.dto.js.map +1 -1
  16. package/dist/entities/list-of-values.entity.js +1 -1
  17. package/dist/entities/list-of-values.entity.js.map +1 -1
  18. package/dist/guards/access-token.guard.d.ts +1 -1
  19. package/dist/guards/access-token.guard.d.ts.map +1 -1
  20. package/dist/guards/access-token.guard.js +2 -2
  21. package/dist/guards/access-token.guard.js.map +1 -1
  22. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts.map +1 -1
  23. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js +12 -2
  24. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  25. package/dist/interfaces.d.ts +16 -1
  26. package/dist/interfaces.d.ts.map +1 -1
  27. package/dist/interfaces.js.map +1 -1
  28. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  29. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +7 -0
  30. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  31. package/dist/seeders/seed-data/solid-core-metadata.json +236 -119
  32. package/dist/services/authentication.service.d.ts +8 -7
  33. package/dist/services/authentication.service.d.ts.map +1 -1
  34. package/dist/services/authentication.service.js +12 -11
  35. package/dist/services/authentication.service.js.map +1 -1
  36. package/dist/services/crud.service.d.ts +1 -0
  37. package/dist/services/crud.service.d.ts.map +1 -1
  38. package/dist/services/crud.service.js +14 -12
  39. package/dist/services/crud.service.js.map +1 -1
  40. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  41. package/dist/services/dashboard-question.service.js +23 -2
  42. package/dist/services/dashboard-question.service.js.map +1 -1
  43. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +16 -0
  44. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +1 -0
  45. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +151 -0
  46. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +1 -0
  47. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +1 -0
  48. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +1 -1
  49. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +8 -1
  50. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +1 -1
  51. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +14 -0
  52. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +1 -0
  53. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +73 -0
  54. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +1 -0
  55. package/dist/services/list-of-values-metadata.service.d.ts.map +1 -1
  56. package/dist/services/list-of-values-metadata.service.js.map +1 -1
  57. package/dist/services/model-metadata.service.js +2 -2
  58. package/dist/services/model-metadata.service.js.map +1 -1
  59. package/dist/services/selection-providers/list-of-models-selection-provider.service.js +2 -2
  60. package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
  61. package/dist/services/setting.service.d.ts.map +1 -1
  62. package/dist/services/setting.service.js +3 -2
  63. package/dist/services/setting.service.js.map +1 -1
  64. package/dist/solid-core.module.d.ts.map +1 -1
  65. package/dist/solid-core.module.js +7 -2
  66. package/dist/solid-core.module.js.map +1 -1
  67. package/dist/tsconfig.tsbuildinfo +1 -1
  68. package/package.json +1 -1
  69. package/src/config/iam.config.ts +1 -11
  70. package/src/config/jwt.config.ts +13 -0
  71. package/src/dtos/create-list-of-values.dto.ts +1 -0
  72. package/src/dtos/update-list-of-values.dto.ts +1 -0
  73. package/src/entities/list-of-values.entity.ts +1 -1
  74. package/src/guards/access-token.guard.ts +1 -1
  75. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +17 -6
  76. package/src/interfaces.ts +17 -1
  77. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +18 -0
  78. package/src/seeders/seed-data/solid-core-metadata.json +238 -119
  79. package/src/services/authentication.service.ts +17 -17
  80. package/src/services/crud.service.ts +17 -31
  81. package/src/services/dashboard-question.service.ts +29 -2
  82. package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +137 -0
  83. package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +21 -7
  84. package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +72 -0
  85. package/src/services/list-of-values-metadata.service.ts +0 -3
  86. package/src/services/model-metadata.service.ts +2 -2
  87. package/src/services/selection-providers/list-of-models-selection-provider.service.ts +2 -2
  88. package/src/services/setting.service.ts +3 -2
  89. package/src/solid-core.module.ts +7 -1
@@ -47,17 +47,4 @@ export declare const iamConfig: (() => {
47
47
  passwordPepper: string;
48
48
  showNameFieldsForRegistration: boolean;
49
49
  }>;
50
- export declare const jwtConfig: (() => {
51
- secret: string;
52
- audience: string;
53
- issuer: string;
54
- accessTokenTtl: number;
55
- refreshTokenTtl: number;
56
- }) & import("@nestjs/config").ConfigFactoryKeyHost<{
57
- secret: string;
58
- audience: string;
59
- issuer: string;
60
- accessTokenTtl: number;
61
- refreshTokenTtl: number;
62
- }>;
63
50
  //# sourceMappingURL=iam.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iam.config.d.ts","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;EAQpB,CAAC"}
1
+ {"version":3,"file":"iam.config.d.ts","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAA"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jwtConfig = exports.iamConfig = void 0;
3
+ exports.iamConfig = void 0;
4
4
  const config_1 = require("@nestjs/config");
5
- const src_1 = require("..");
6
5
  exports.iamConfig = (0, config_1.registerAs)('iam', () => {
7
6
  return {
8
7
  passwordlessRegistration: (process.env.IAM_PASSWORD_LESS_REGISTRATION ?? 'false') === 'true',
@@ -16,7 +15,7 @@ exports.iamConfig = (0, config_1.registerAs)('iam', () => {
16
15
  defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',
17
16
  dummyOtp: process.env.IAM_OTP_DUMMY,
18
17
  forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',
19
- forceChangePasswordOnFirstLogin: true,
18
+ forceChangePasswordOnFirstLogin: false,
20
19
  PASSWORD_REGEX: process.env.PASSWORD_REGEX || '^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z]).*$',
21
20
  PASSWORD_COMPLEXITY_DESC: process.env.PASSWORD_COMPLEXITY_DESC || 'Password must contain at least one uppercase, one lowercase, one number, and one special character.',
22
21
  googleOauth: {
@@ -30,13 +29,4 @@ exports.iamConfig = (0, config_1.registerAs)('iam', () => {
30
29
  showNameFieldsForRegistration: process.env.IAM_SHOW_NAME_FIELDS_FOR_REGISTRATION === 'true' ? true : false,
31
30
  };
32
31
  });
33
- exports.jwtConfig = (0, config_1.registerAs)('jwt', () => {
34
- return {
35
- secret: process.env.IAM_JWT_SECRET,
36
- audience: process.env.IAM_JWT_TOKEN_AUDIENCE,
37
- issuer: process.env.IAM_JWT_TOKEN_ISSUER,
38
- accessTokenTtl: parseInt((process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? process.env.ENV === src_1.Environment.Production) ? '1200' : '86400', 10),
39
- refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '604800', 10),
40
- };
41
- });
42
32
  //# sourceMappingURL=iam.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iam.config.js","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,4BAAkC;AAErB,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,wBAAwB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,KAAK,MAAM;QAC5F,8BAA8B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QACpG,oCAAoC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjJ,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,CAAC,KAAK,MAAM;QACzF,0BAA0B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QAChG,2BAA2B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,OAAO,CAAC,KAAK,MAAM;QACpG,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC;QACvD,qCAAqC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,IAAI,CAAC;QAClH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,QAAQ;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACnC,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,OAAO;QAC5G,+BAA+B,EAAC,IAAI;QACpC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0DAA0D;QACxG,wBAAwB,EAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,qGAAqG;QACxK,WAAW,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YAChD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;YACxD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACtD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;SACzD;QACD,wBAAwB,EAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI;QACvE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;QACrD,6BAA6B,EAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;KAC5G,CAAC;AACN,CAAC,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACxC,cAAc,EAAE,QAAQ,CAAC,CAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAK,OAAO,CAAC,GAAG,CAAC,GAAmB,KAAK,iBAAW,CAAC,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACpJ,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,QAAQ,EAAE,EAAE,CAAC;KACnF,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import { registerAs } from '@nestjs/config';\nimport { Environment } from 'src';\n\nexport const iamConfig = registerAs('iam', () => {\n return {\n passwordlessRegistration: (process.env.IAM_PASSWORD_LESS_REGISTRATION ?? 'false') === 'true',\n iamPasswordRegistrationEnabled: (process.env.IAM_PASSWORD_REGISTRATION_ENABLED ?? 'true') === 'true',\n passwordlessRegistrationValidateWhat: (process.env.IAM_PASSWORD_LESS_REGISTRATION_VALIDATE_WHAT ?? 'email').split(',').map((item) => item.trim()),\n allowPublicRegistration: (process.env.IAM_ALLOW_PUBLIC_REGISTRATION ?? 'true') === 'true',\n activateUserOnRegistration: (process.env.IAM_ACTIVATE_USER_ON_REGISTRATION ?? 'true') === 'true',\n autoLoginUserOnRegistration: (process.env.IAM_AUTO_LOGIN_USER_ON_REGISTRATION ?? 'false') === 'true',\n otpExpiry: parseInt(process.env.IAM_OTP_EXPIRY ?? '10'),\n forgotPasswordVerificationTokenExpiry: parseInt(process.env.IAM_FORGOT_PASSWORD_VERIFICATION_TOKEN_EXPIRY ?? '10'),\n defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',\n dummyOtp: process.env.IAM_OTP_DUMMY,\n forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',\n forceChangePasswordOnFirstLogin:true,\n PASSWORD_REGEX: process.env.PASSWORD_REGEX || '^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[^\\\\da-zA-Z]).*$',\n PASSWORD_COMPLEXITY_DESC : process.env.PASSWORD_COMPLEXITY_DESC || 'Password must contain at least one uppercase, one lowercase, one number, and one special character.',\n googleOauth: {\n clientID: process.env.IAM_GOOGLE_OAUTH_CLIENT_ID,\n clientSecret: process.env.IAM_GOOGLE_OAUTH_CLIENT_SECRET,\n callbackURL: process.env.IAM_GOOGLE_OAUTH_CALLBACK_URL,\n redirectURL: process.env.IAM_GOOGLE_OAUTH_REDIRECT_URL,\n },\n iamAutoGeneratedPassword:process.env.IAM_AUTOGENERATED_PASSWORD || true,\n passwordPepper: process.env.IAM_PASSWORD_PEPPER || '', // Adding a pepper to the password hashing process for extra security,\n showNameFieldsForRegistration:process.env.IAM_SHOW_NAME_FIELDS_FOR_REGISTRATION === 'true' ? true : false,\n };\n})\n\nexport const jwtConfig = registerAs('jwt', () => {\n return {\n secret: process.env.IAM_JWT_SECRET,\n audience: process.env.IAM_JWT_TOKEN_AUDIENCE,\n issuer: process.env.IAM_JWT_TOKEN_ISSUER,\n accessTokenTtl: parseInt(process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? (process.env.ENV as Environment) === Environment.Production ? '1200' : '86400', 10), // 20 minutes in prod, 1 day otherwise\n refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '604800', 10), // 7 days\n };\n});\n"]}
1
+ {"version":3,"file":"iam.config.js","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE/B,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,wBAAwB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,KAAK,MAAM;QAC5F,8BAA8B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QACpG,oCAAoC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjJ,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,CAAC,KAAK,MAAM;QACzF,0BAA0B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QAChG,2BAA2B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,OAAO,CAAC,KAAK,MAAM;QACpG,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC;QACvD,qCAAqC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,IAAI,CAAC;QAClH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,QAAQ;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACnC,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,OAAO;QAC5G,+BAA+B,EAAC,KAAK;QACrC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0DAA0D;QACxG,wBAAwB,EAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,qGAAqG;QACxK,WAAW,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YAChD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;YACxD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACtD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;SACzD;QACD,wBAAwB,EAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI;QACvE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;QACrD,6BAA6B,EAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;KAC5G,CAAC;AACN,CAAC,CAAC,CAAA","sourcesContent":["import { registerAs } from '@nestjs/config';\n\nexport const iamConfig = registerAs('iam', () => {\n return {\n passwordlessRegistration: (process.env.IAM_PASSWORD_LESS_REGISTRATION ?? 'false') === 'true',\n iamPasswordRegistrationEnabled: (process.env.IAM_PASSWORD_REGISTRATION_ENABLED ?? 'true') === 'true',\n passwordlessRegistrationValidateWhat: (process.env.IAM_PASSWORD_LESS_REGISTRATION_VALIDATE_WHAT ?? 'email').split(',').map((item) => item.trim()),\n allowPublicRegistration: (process.env.IAM_ALLOW_PUBLIC_REGISTRATION ?? 'true') === 'true',\n activateUserOnRegistration: (process.env.IAM_ACTIVATE_USER_ON_REGISTRATION ?? 'true') === 'true',\n autoLoginUserOnRegistration: (process.env.IAM_AUTO_LOGIN_USER_ON_REGISTRATION ?? 'false') === 'true',\n otpExpiry: parseInt(process.env.IAM_OTP_EXPIRY ?? '10'),\n forgotPasswordVerificationTokenExpiry: parseInt(process.env.IAM_FORGOT_PASSWORD_VERIFICATION_TOKEN_EXPIRY ?? '10'),\n defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',\n dummyOtp: process.env.IAM_OTP_DUMMY,\n forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',\n forceChangePasswordOnFirstLogin:false,\n PASSWORD_REGEX: process.env.PASSWORD_REGEX || '^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[^\\\\da-zA-Z]).*$',\n PASSWORD_COMPLEXITY_DESC : process.env.PASSWORD_COMPLEXITY_DESC || 'Password must contain at least one uppercase, one lowercase, one number, and one special character.',\n googleOauth: {\n clientID: process.env.IAM_GOOGLE_OAUTH_CLIENT_ID,\n clientSecret: process.env.IAM_GOOGLE_OAUTH_CLIENT_SECRET,\n callbackURL: process.env.IAM_GOOGLE_OAUTH_CALLBACK_URL,\n redirectURL: process.env.IAM_GOOGLE_OAUTH_REDIRECT_URL,\n },\n iamAutoGeneratedPassword:process.env.IAM_AUTOGENERATED_PASSWORD || true,\n passwordPepper: process.env.IAM_PASSWORD_PEPPER || '', // Adding a pepper to the password hashing process for extra security,\n showNameFieldsForRegistration:process.env.IAM_SHOW_NAME_FIELDS_FOR_REGISTRATION === 'true' ? true : false,\n };\n})\n\n"]}
@@ -0,0 +1,14 @@
1
+ export declare const jwtConfig: (() => {
2
+ secret: string;
3
+ audience: string;
4
+ issuer: string;
5
+ accessTokenTtl: number;
6
+ refreshTokenTtl: number;
7
+ }) & import("@nestjs/config").ConfigFactoryKeyHost<{
8
+ secret: string;
9
+ audience: string;
10
+ issuer: string;
11
+ accessTokenTtl: number;
12
+ refreshTokenTtl: number;
13
+ }>;
14
+ //# sourceMappingURL=jwt.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.config.d.ts","sourceRoot":"","sources":["../../src/config/jwt.config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS;;;;;;;;;;;;EAQpB,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jwtConfig = void 0;
4
+ const config_1 = require("@nestjs/config");
5
+ const disallow_in_production_decorator_1 = require("../decorators/disallow-in-production.decorator");
6
+ exports.jwtConfig = (0, config_1.registerAs)('jwt', () => {
7
+ return {
8
+ secret: process.env.IAM_JWT_SECRET,
9
+ audience: process.env.IAM_JWT_TOKEN_AUDIENCE,
10
+ issuer: process.env.IAM_JWT_TOKEN_ISSUER,
11
+ accessTokenTtl: parseInt((process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? process.env.ENV === disallow_in_production_decorator_1.Environment.Production) ? '1200' : '86400', 10),
12
+ refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '604800', 10),
13
+ };
14
+ });
15
+ //# sourceMappingURL=jwt.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.config.js","sourceRoot":"","sources":["../../src/config/jwt.config.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,qGAA8E;AAGjE,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACxC,cAAc,EAAE,QAAQ,CAAC,CAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAK,OAAO,CAAC,GAAG,CAAC,GAAmB,KAAK,8CAAW,CAAC,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACpJ,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,QAAQ,EAAE,EAAE,CAAC;KACnF,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import { registerAs } from '@nestjs/config';\nimport { Environment } from 'src/decorators/disallow-in-production.decorator';\n\n\nexport const jwtConfig = registerAs('jwt', () => {\n return {\n secret: process.env.IAM_JWT_SECRET,\n audience: process.env.IAM_JWT_TOKEN_AUDIENCE,\n issuer: process.env.IAM_JWT_TOKEN_ISSUER,\n accessTokenTtl: parseInt(process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? (process.env.ENV as Environment) === Environment.Production ? '1200' : '86400', 10), // 20 minutes in prod, 1 day otherwise\n refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '604800', 10), // 7 days\n };\n});\n"]}
@@ -1,3 +1,3 @@
1
1
  import { ActiveUserData } from '../interfaces/active-user-data.interface';
2
- export declare const ActiveUser: (...dataOrPipes: (keyof ActiveUserData | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
2
+ export declare const ActiveUser: (...dataOrPipes: (import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>> | keyof ActiveUserData)[]) => ParameterDecorator;
3
3
  //# sourceMappingURL=active-user.decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-list-of-values.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-list-of-values.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAqB;IAI9B,IAAI,EAAE,MAAM,CAAC;IAIb,KAAK,EAAE,MAAM,CAAC;IAId,OAAO,EAAE,MAAM,CAAC;IAIhB,WAAW,EAAE,MAAM,CAAC;IAIpB,OAAO,EAAE,OAAO,CAAS;IAIzB,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"create-list-of-values.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-list-of-values.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,qBAAqB;IAI9B,IAAI,EAAE,MAAM,CAAC;IAIb,KAAK,EAAE,MAAM,CAAC;IAId,OAAO,EAAE,MAAM,CAAC;IAIhB,WAAW,EAAE,MAAM,CAAC;IAIpB,OAAO,EAAE,OAAO,CAAS;IAIzB,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
@@ -68,6 +68,7 @@ __decorate([
68
68
  __decorate([
69
69
  (0, class_validator_1.IsString)(),
70
70
  (0, class_validator_2.IsOptional)(),
71
+ (0, swagger_1.ApiProperty)(),
71
72
  __metadata("design:type", String)
72
73
  ], CreateListOfValuesDto.prototype, "moduleUserKey", void 0);
73
74
  //# sourceMappingURL=create-list-of-values.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-list-of-values.dto.js","sourceRoot":"","sources":["../../src/dtos/create-list-of-values.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAA2E;AAE3E,MAAa,qBAAqB;IAAlC;QAoBI,YAAO,GAAY,KAAK,CAAC;KAY5B;;6QAZsB,KAAK;;CAY3B;AAhCD,sDAgCC;AA5BG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;mDACD;AAIb;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;oDACA;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;sDACE;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;0DACM;AAIpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;sDACW;AAIzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAGjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;4DACS","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsBoolean, IsOptional, IsInt } from 'class-validator';\n\nexport class CreateListOfValuesDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n type: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n value: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n display: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n description: string;\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n default: boolean = false;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n sequence: number;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n moduleUserKey: string;\n}"]}
1
+ {"version":3,"file":"create-list-of-values.dto.js","sourceRoot":"","sources":["../../src/dtos/create-list-of-values.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAA2E;AAE3E,MAAa,qBAAqB;IAAlC;QAoBI,YAAO,GAAY,KAAK,CAAC;KAa5B;;6QAbsB,KAAK;;CAa3B;AAjCD,sDAiCC;AA7BG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;mDACD;AAIb;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;oDACA;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;sDACE;AAIhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;0DACM;AAIpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;sDACW;AAIzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsBoolean, IsOptional, IsInt } from 'class-validator';\n\nexport class CreateListOfValuesDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n type: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n value: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n display: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n description: string;\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n default: boolean = false;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n sequence: number;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"update-list-of-values.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-list-of-values.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,qBAAqB;IAG9B,EAAE,EAAE,MAAM,CAAC;IAKX,IAAI,EAAE,MAAM,CAAC;IAKb,KAAK,EAAE,MAAM,CAAC;IAKd,OAAO,EAAE,MAAM,CAAC;IAKhB,WAAW,EAAE,MAAM,CAAC;IAIpB,OAAO,EAAE,OAAO,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"update-list-of-values.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-list-of-values.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,qBAAqB;IAG9B,EAAE,EAAE,MAAM,CAAC;IAKX,IAAI,EAAE,MAAM,CAAC;IAKb,KAAK,EAAE,MAAM,CAAC;IAKd,OAAO,EAAE,MAAM,CAAC;IAKhB,WAAW,EAAE,MAAM,CAAC;IAIpB,OAAO,EAAE,OAAO,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,aAAa,EAAE,MAAM,CAAC;CACzB"}
@@ -73,6 +73,7 @@ __decorate([
73
73
  __decorate([
74
74
  (0, class_validator_1.IsString)(),
75
75
  (0, class_validator_1.IsOptional)(),
76
+ (0, swagger_1.ApiProperty)(),
76
77
  __metadata("design:type", String)
77
78
  ], UpdateListOfValuesDto.prototype, "moduleUserKey", void 0);
78
79
  //# sourceMappingURL=update-list-of-values.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-list-of-values.dto.js","sourceRoot":"","sources":["../../src/dtos/update-list-of-values.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAAqF;AACrF,6CAA8C;AAE9C,MAAa,qBAAqB;;;;CAuCjC;AAvCD,sDAuCC;AApCG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACG;AAKX;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;mDACD;AAKb;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;oDACA;AAKd;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;sDACE;AAKhB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;0DACM;AAIpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;sDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAGjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;4DACS","sourcesContent":["import { IsInt, IsOptional, IsString, IsNotEmpty, IsBoolean } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UpdateListOfValuesDto {\n @IsOptional()\n @IsInt()\n id: number;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n type: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n value: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n display: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n description: string;\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n default: boolean;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n sequence: number;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n moduleUserKey: string;\n}"]}
1
+ {"version":3,"file":"update-list-of-values.dto.js","sourceRoot":"","sources":["../../src/dtos/update-list-of-values.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAAqF;AACrF,6CAA8C;AAE9C,MAAa,qBAAqB;;;;CAwCjC;AAxCD,sDAwCC;AArCG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACG;AAKX;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;mDACD;AAKb;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;oDACA;AAKd;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;sDACE;AAKhB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;0DACM;AAIpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,GAAE;;sDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;uDACG;AAIjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;4DACQ","sourcesContent":["import { IsInt, IsOptional, IsString, IsNotEmpty, IsBoolean } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UpdateListOfValuesDto {\n @IsOptional()\n @IsInt()\n id: number;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n type: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n value: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n display: string;\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n description: string;\n @IsOptional()\n @IsBoolean()\n @ApiProperty()\n default: boolean;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n sequence: number;\n @IsOptional()\n @IsInt()\n @ApiProperty()\n moduleId: number;\n @IsString()\n @IsOptional()\n @ApiProperty()\n moduleUserKey: string;\n}"]}
@@ -45,7 +45,7 @@ __decorate([
45
45
  __metadata("design:type", Boolean)
46
46
  ], ListOfValues.prototype, "default", void 0);
47
47
  __decorate([
48
- (0, typeorm_1.Column)({ type: "int", nullable: true }),
48
+ (0, typeorm_1.Column)({ type: "integer", nullable: true }),
49
49
  __metadata("design:type", Number)
50
50
  ], ListOfValues.prototype, "sequence", void 0);
51
51
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"list-of-values.entity.js","sourceRoot":"","sources":["../../src/entities/list-of-values.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mDAAyD;AACzD,qCAA+D;AAC/D,qEAAoE;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAY;IAAvC;;QAUH,YAAO,GAAY,KAAK,CAAC;KAM5B;;6QANsB,KAAK;;CAM3B,CAAA;AAhBY,oCAAY;AAErB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;0CACf;AAEb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;2CACd;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;6CACZ;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;iDACR;AAEpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;6CACnC;AAEzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACvB;AAGjB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uCAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxE,IAAA,oBAAU,GAAE;8BACL,uCAAc;4CAAC;uBAfd,YAAY;IADxB,IAAA,gBAAM,EAAC,mBAAmB,CAAC;GACf,YAAY,CAgBxB","sourcesContent":["import { CommonEntity } from 'src/entities/common.entity'\nimport { Entity, Column, ManyToOne, JoinColumn } from 'typeorm'\nimport { ModuleMetadata } from 'src/entities/module-metadata.entity'\n\n@Entity(\"ss_list_of_values\")\nexport class ListOfValues extends CommonEntity {\n @Column({ type: \"varchar\" })\n type: string;\n @Column({ type: \"varchar\" })\n value: string;\n @Column({ type: \"varchar\" })\n display: string;\n @Column({ type: \"varchar\" })\n description: string;\n @Column({ type: \"boolean\", nullable: true, default: false })\n default: boolean = false;\n @Column({ type: \"int\", nullable: true })\n sequence: number;\n @ManyToOne(() => ModuleMetadata, { onDelete: \"CASCADE\", nullable: true })\n @JoinColumn()\n module: ModuleMetadata;\n}"]}
1
+ {"version":3,"file":"list-of-values.entity.js","sourceRoot":"","sources":["../../src/entities/list-of-values.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mDAAyD;AACzD,qCAA+D;AAC/D,qEAAoE;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAAY;IAAvC;;QAUH,YAAO,GAAY,KAAK,CAAC;KAM5B;;6QANsB,KAAK;;CAM3B,CAAA;AAhBY,oCAAY;AAErB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;0CACf;AAEb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;2CACd;AAEd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;6CACZ;AAEhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;iDACR;AAEpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;6CACnC;AAEzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC3B;AAGjB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uCAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxE,IAAA,oBAAU,GAAE;8BACL,uCAAc;4CAAC;uBAfd,YAAY;IADxB,IAAA,gBAAM,EAAC,mBAAmB,CAAC;GACf,YAAY,CAgBxB","sourcesContent":["import { CommonEntity } from 'src/entities/common.entity'\nimport { Entity, Column, ManyToOne, JoinColumn } from 'typeorm'\nimport { ModuleMetadata } from 'src/entities/module-metadata.entity'\n\n@Entity(\"ss_list_of_values\")\nexport class ListOfValues extends CommonEntity {\n @Column({ type: \"varchar\" })\n type: string;\n @Column({ type: \"varchar\" })\n value: string;\n @Column({ type: \"varchar\" })\n display: string;\n @Column({ type: \"varchar\" })\n description: string;\n @Column({ type: \"boolean\", nullable: true, default: false })\n default: boolean = false;\n @Column({ type: \"integer\", nullable: true })\n sequence: number;\n @ManyToOne(() => ModuleMetadata, { onDelete: \"CASCADE\", nullable: true })\n @JoinColumn()\n module: ModuleMetadata;\n}"]}
@@ -1,7 +1,7 @@
1
1
  import { CanActivate, ExecutionContext } from '@nestjs/common';
2
2
  import { ConfigType } from '@nestjs/config';
3
3
  import { JwtService } from '@nestjs/jwt';
4
- import { jwtConfig } from '../config/iam.config';
4
+ import { jwtConfig } from 'src/config/jwt.config';
5
5
  import { PermissionMetadataService } from '../services/permission-metadata.service';
6
6
  import { ClsService } from 'nestjs-cls';
7
7
  export declare class AccessTokenGuard implements CanActivate {
@@ -1 +1 @@
1
- {"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBACa,gBAAiB,YAAW,WAAW;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAJH,UAAU,EAAE,UAAU,EAEtB,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC9C,kBAAkB,EAAE,yBAAyB,EAC7C,GAAG,EAAE,UAAU;IAG5B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B9D,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBACa,gBAAiB,YAAW,WAAW;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAJH,UAAU,EAAE,UAAU,EAEtB,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC9C,kBAAkB,EAAE,yBAAyB,EAC7C,GAAG,EAAE,UAAU;IAG5B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B9D,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.AccessTokenGuard = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const jwt_1 = require("@nestjs/jwt");
18
- const iam_config_1 = require("../config/iam.config");
18
+ const jwt_config_1 = require("../config/jwt.config");
19
19
  const constants_1 = require("../constants");
20
20
  const permission_metadata_service_1 = require("../services/permission-metadata.service");
21
21
  const nestjs_cls_1 = require("nestjs-cls");
@@ -52,7 +52,7 @@ let AccessTokenGuard = class AccessTokenGuard {
52
52
  exports.AccessTokenGuard = AccessTokenGuard;
53
53
  exports.AccessTokenGuard = AccessTokenGuard = __decorate([
54
54
  (0, common_1.Injectable)(),
55
- __param(1, (0, common_1.Inject)(iam_config_1.jwtConfig.KEY)),
55
+ __param(1, (0, common_1.Inject)(jwt_config_1.jwtConfig.KEY)),
56
56
  __metadata("design:paramtypes", [jwt_1.JwtService, void 0, permission_metadata_service_1.PermissionMetadataService,
57
57
  nestjs_cls_1.ClsService])
58
58
  ], AccessTokenGuard);
@@ -1 +1 @@
1
- {"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAExB,qCAAyC;AAGzC,qDAAiD;AACjD,4CAAgD;AAChD,yFAAoF;AACpF,2CAAwC;AAGjC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmB,UAAsB,EAEtB,gBAA8C,EAC9C,kBAA6C,EAC7C,GAAe;QAJf,eAAU,GAAV,UAAU,CAAY;QAEtB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC9C,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,QAAG,GAAH,GAAG,CAAY;IAC9B,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAmB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAC/D,KAAK,EACL,IAAI,CAAC,gBAAgB,CACtB,CAAC;YAGF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEvE,OAAO,CAAC,4BAAgB,CAAC,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAAgB,EAAE,OAAO,CAAC,CAAC;QAG1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAG7C,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AA1CY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;qCADO,gBAAU,UAGF,uDAAyB;QACxC,uBAAU;GANvB,gBAAgB,CA0C5B","sourcesContent":["import {\n CanActivate,\n ExecutionContext,\n Inject,\n Injectable,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport { JwtService } from '@nestjs/jwt';\nimport { Request } from 'express';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { jwtConfig } from '../config/iam.config';\nimport { REQUEST_USER_KEY } from \"../constants\";\nimport { PermissionMetadataService } from '../services/permission-metadata.service';\nimport { ClsService } from 'nestjs-cls';\n\n@Injectable()\nexport class AccessTokenGuard implements CanActivate {\n constructor(\n private readonly jwtService: JwtService,\n @Inject(jwtConfig.KEY)\n private readonly jwtConfiguration: ConfigType<typeof jwtConfig>,\n private readonly permissionsService: PermissionMetadataService,\n private readonly cls: ClsService\n ) { }\n\n async canActivate(context: ExecutionContext): Promise<boolean> {\n // 💡 NOTE: For GraphQL applications, you'd have to use the wrapper GqlExecutionContext here instead.\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n const payload: ActiveUserData = await this.jwtService.verifyAsync(\n token,\n this.jwtConfiguration,\n );\n\n // Load permissions given the user. \n const permissions = await this.permissionsService.findAllUsingRoles(payload.roles);\n payload.permissions = permissions.map((permission) => permission.name);\n\n request[REQUEST_USER_KEY] = payload;\n this.cls.set(REQUEST_USER_KEY, payload);\n // console.log(`About to set payload in the request user key:`);\n // console.log(payload);\n } catch {\n throw new UnauthorizedException();\n }\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n // Since token is included in the Authorization header something like \n // Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoidXNlcjFAbmVzdGpzLmNvbSIsImlhdCI6MTcwMDk5NTk1MywiZXhwIjoxNzAwOTk5NTUzLCJhdWQiOiJsb2NhbGhvc3Q6MzAwMCIsImlzcyI6ImxvY2FsaG9zdDozMDAwIn0.303Y04SZjKqoPjJRq4hXHcarHeZYS878gPGWmw2SoUc\n const [_, token] = request.headers.authorization?.split(' ') ?? [];\n return token;\n }\n}\n"]}
1
+ {"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAExB,qCAAyC;AAGzC,qDAAkD;AAClD,4CAAgD;AAChD,yFAAoF;AACpF,2CAAwC;AAGjC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmB,UAAsB,EAEtB,gBAA8C,EAC9C,kBAA6C,EAC7C,GAAe;QAJf,eAAU,GAAV,UAAU,CAAY;QAEtB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC9C,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,QAAG,GAAH,GAAG,CAAY;IAC9B,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAmB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAC/D,KAAK,EACL,IAAI,CAAC,gBAAgB,CACtB,CAAC;YAGF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEvE,OAAO,CAAC,4BAAgB,CAAC,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAAgB,EAAE,OAAO,CAAC,CAAC;QAG1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAG7C,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AA1CY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;qCADO,gBAAU,UAGF,uDAAyB;QACxC,uBAAU;GANvB,gBAAgB,CA0C5B","sourcesContent":["import {\n CanActivate,\n ExecutionContext,\n Inject,\n Injectable,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport { JwtService } from '@nestjs/jwt';\nimport { Request } from 'express';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { jwtConfig } from 'src/config/jwt.config';\nimport { REQUEST_USER_KEY } from \"../constants\";\nimport { PermissionMetadataService } from '../services/permission-metadata.service';\nimport { ClsService } from 'nestjs-cls';\n\n@Injectable()\nexport class AccessTokenGuard implements CanActivate {\n constructor(\n private readonly jwtService: JwtService,\n @Inject(jwtConfig.KEY)\n private readonly jwtConfiguration: ConfigType<typeof jwtConfig>,\n private readonly permissionsService: PermissionMetadataService,\n private readonly cls: ClsService\n ) { }\n\n async canActivate(context: ExecutionContext): Promise<boolean> {\n // 💡 NOTE: For GraphQL applications, you'd have to use the wrapper GqlExecutionContext here instead.\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n const payload: ActiveUserData = await this.jwtService.verifyAsync(\n token,\n this.jwtConfiguration,\n );\n\n // Load permissions given the user. \n const permissions = await this.permissionsService.findAllUsingRoles(payload.roles);\n payload.permissions = permissions.map((permission) => permission.name);\n\n request[REQUEST_USER_KEY] = payload;\n this.cls.set(REQUEST_USER_KEY, payload);\n // console.log(`About to set payload in the request user key:`);\n // console.log(payload);\n } catch {\n throw new UnauthorizedException();\n }\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n // Since token is included in the Authorization header something like \n // Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoidXNlcjFAbmVzdGpzLmNvbSIsImlhdCI6MTcwMDk5NTk1MywiZXhwIjoxNzAwOTk5NTUzLCJhdWQiOiJsb2NhbGhvc3Q6MzAwMCIsImlzcyI6ImxvY2FsaG9zdDozMDAwIn0.303Y04SZjKqoPjJRq4hXHcarHeZYS878gPGWmw2SoUc\n const [_, token] = request.headers.authorization?.split(' ') ?? [];\n return token;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionDynamicFieldCrudManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAiD,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElH,MAAM,WAAW,4BAA4B;IACzC,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACrC,4BAA4B,EAAE,GAAG,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,gCAAiC,YAAW,gBAAgB;IAEzD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,4BAA4B;IAG5D,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoCpD,OAAO,CAAC,qBAAqB;YAkBf,gBAAgB;YAUhB,sBAAsB;IAQpC,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAKjC,OAAO,CAAC,yBAAyB;YAWnB,qBAAqB;IAOnC,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,yBAAyB;CAGpC"}
1
+ {"version":3,"file":"SelectionDynamicFieldCrudManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAiD,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElH,MAAM,WAAW,4BAA4B;IACzC,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACrC,4BAA4B,EAAE,GAAG,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,gCAAiC,YAAW,gBAAgB;IAEzD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,4BAA4B;IAG5D,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoCpD,OAAO,CAAC,qBAAqB;YAkBf,gBAAgB;YAUhB,sBAAsB;IAQpC,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAKjC,OAAO,CAAC,yBAAyB;YAWnB,qBAAqB;IAkBnC,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,yBAAyB;CAGpC"}
@@ -81,8 +81,18 @@ class SelectionDynamicFieldCrudManager {
81
81
  }
82
82
  async isValidSelectionValue(fieldValue, selectionDynamicProvider) {
83
83
  const providerInstance = this.providerInstance(selectionDynamicProvider);
84
- const values = await providerInstance.values('', JSON.parse(this.options.selectionDynamicProviderCtxt));
85
- return values.map(v => v.value).includes(fieldValue);
84
+ try {
85
+ const valueOption = await providerInstance.value(fieldValue, JSON.parse(this.options.selectionDynamicProviderCtxt));
86
+ if (valueOption && valueOption.value === fieldValue) {
87
+ return true;
88
+ }
89
+ return false;
90
+ }
91
+ catch (error) {
92
+ const values = await providerInstance.values('', JSON.parse(this.options.selectionDynamicProviderCtxt));
93
+ const isValid = values.some(v => v.value === fieldValue);
94
+ return isValid;
95
+ }
86
96
  }
87
97
  providerInstance(selectionDynamicProvider) {
88
98
  const provider = this.options.discoveryService
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionDynamicFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { DiscoveryService } from \"@nestjs/core\";\nimport { isEmpty, isInt, isNotEmpty, isString } from \"class-validator\";\nimport { SelectionValueType } from \"src/dtos/create-field-metadata.dto\";\nimport { FieldCrudManager, ISelectionProvider, ISelectionProviderContext, ValidationError } from \"src/interfaces\";\n\nexport interface SelectionDynamicFieldOptions {\n selectionDynamicProvider: string;\n selectionValueType: SelectionValueType;\n required: boolean | undefined | null;\n selectionDynamicProviderCtxt: any;\n fieldName: string;\n discoveryService: DiscoveryService;\n isMultiSelect: boolean | undefined | null;\n}\n\nexport class SelectionDynamicFieldCrudManager implements FieldCrudManager {\n\n constructor(private readonly options: SelectionDynamicFieldOptions) {\n }\n\n async validate(dto: any): Promise<ValidationError[]> {\n const fieldValue: any = dto[this.options.fieldName];\n // return this.applyValidations(fieldValue);\n const isMultiSelect = this.options?.isMultiSelect;\n if (isMultiSelect && fieldValue) {\n const arrayCheck = this.parseAndValidateArray(fieldValue);\n\n if (!arrayCheck.isValid) {\n return [\n {\n field: this.options.fieldName,\n error: `Field: ${this.options.fieldName} must be a valid array`,\n },\n ];\n }\n\n const values = arrayCheck.values;\n\n if (this.isApplyRequiredValidation() && values.length === 0) {\n return [\n {\n field: this.options.fieldName,\n error: `Field: ${this.options.fieldName} is required`,\n },\n ];\n }\n\n // Apply validations to each value\n const allErrors = await Promise.all(values.map((val) => this.applyValidations(val)));\n return allErrors.flat();\n } else {\n // For non-multi-select, apply validations to the single field value\n return this.applyValidations(fieldValue);\n }\n }\n\n private parseAndValidateArray(fieldValue: any): { isValid: boolean; values: any[] } {\n if (Array.isArray(fieldValue)) {\n return { isValid: true, values: fieldValue };\n }\n \n try {\n const parsed = typeof fieldValue === 'string' ? JSON.parse(fieldValue) : null;\n if (Array.isArray(parsed)) {\n return { isValid: true, values: parsed };\n }\n } catch {\n // fall through\n }\n \n return { isValid: false, values: [] };\n }\n \n\n private async applyValidations(fieldValue: any): Promise<ValidationError[]> {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldValue) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required` }) : \"no errors\";\n if (isNotEmpty(fieldValue)) {\n const formatErrors = await this.applyFormatValidations(fieldValue);\n errors.push(...formatErrors);\n }\n return errors;\n }\n\n private async applyFormatValidations(fieldValue: any): Promise<ValidationError[]> {\n const errors: ValidationError[] = [];\n !this.isValidSelectionValueType(fieldValue, this.options.selectionValueType) ? errors.push({ field: this.options.fieldName, error: 'Field value type is invalid' }) : \"no errors\";\n const _isValidSelectionValue = await this.isValidSelectionValue(fieldValue, this.options.selectionDynamicProvider)\n !_isValidSelectionValue ? errors.push({ field: this.options.fieldName, error: 'Field value is invalid' }) : \"no errors\";\n return errors;\n }\n\n transformForCreate(dto: any): any {\n return dto;\n }\n\n // Validation to be applied\n private isValidSelectionValueType(fieldValue: any, selectionValueType: SelectionValueType): boolean {\n switch (selectionValueType) {\n case SelectionValueType.string:\n return isString(fieldValue);\n case SelectionValueType.int:\n return isInt(fieldValue);\n default:\n throw new Error(`Validation for selection value type ${selectionValueType} is not implemented`);\n }\n }\n\n private async isValidSelectionValue(fieldValue: any, selectionDynamicProvider: string): Promise<boolean> {\n const providerInstance = this.providerInstance<any>(selectionDynamicProvider);\n const values = await providerInstance.values('', JSON.parse(this.options.selectionDynamicProviderCtxt));\n // return values.map(v => v.split(\":\")[0]).includes(fieldValue);\n return values.map(v => v.value).includes(fieldValue);\n }\n\n private providerInstance<T extends ISelectionProviderContext>(selectionDynamicProvider: string): ISelectionProvider<T> {\n const provider = this.options.discoveryService\n .getProviders()\n .filter((provider) => provider.name === selectionDynamicProvider)\n .pop();\n if (!provider) {\n throw new Error(`Provider for ${selectionDynamicProvider} not found`);\n }\n return provider.instance as ISelectionProvider<T>;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n}"]}
1
+ {"version":3,"file":"SelectionDynamicFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { DiscoveryService } from \"@nestjs/core\";\nimport { isEmpty, isInt, isNotEmpty, isString } from \"class-validator\";\nimport { SelectionValueType } from \"src/dtos/create-field-metadata.dto\";\nimport { FieldCrudManager, ISelectionProvider, ISelectionProviderContext, ValidationError } from \"src/interfaces\";\n\nexport interface SelectionDynamicFieldOptions {\n selectionDynamicProvider: string;\n selectionValueType: SelectionValueType;\n required: boolean | undefined | null;\n selectionDynamicProviderCtxt: any;\n fieldName: string;\n discoveryService: DiscoveryService;\n isMultiSelect: boolean | undefined | null;\n}\n\nexport class SelectionDynamicFieldCrudManager implements FieldCrudManager {\n\n constructor(private readonly options: SelectionDynamicFieldOptions) {\n }\n\n async validate(dto: any): Promise<ValidationError[]> {\n const fieldValue: any = dto[this.options.fieldName];\n // return this.applyValidations(fieldValue);\n const isMultiSelect = this.options?.isMultiSelect;\n if (isMultiSelect && fieldValue) {\n const arrayCheck = this.parseAndValidateArray(fieldValue);\n\n if (!arrayCheck.isValid) {\n return [\n {\n field: this.options.fieldName,\n error: `Field: ${this.options.fieldName} must be a valid array`,\n },\n ];\n }\n\n const values = arrayCheck.values;\n\n if (this.isApplyRequiredValidation() && values.length === 0) {\n return [\n {\n field: this.options.fieldName,\n error: `Field: ${this.options.fieldName} is required`,\n },\n ];\n }\n\n // Apply validations to each value\n const allErrors = await Promise.all(values.map((val) => this.applyValidations(val)));\n return allErrors.flat();\n } else {\n // For non-multi-select, apply validations to the single field value\n return this.applyValidations(fieldValue);\n }\n }\n\n private parseAndValidateArray(fieldValue: any): { isValid: boolean; values: any[] } {\n if (Array.isArray(fieldValue)) {\n return { isValid: true, values: fieldValue };\n }\n\n try {\n const parsed = typeof fieldValue === 'string' ? JSON.parse(fieldValue) : null;\n if (Array.isArray(parsed)) {\n return { isValid: true, values: parsed };\n }\n } catch {\n // fall through\n }\n\n return { isValid: false, values: [] };\n }\n\n\n private async applyValidations(fieldValue: any): Promise<ValidationError[]> {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldValue) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required` }) : \"no errors\";\n if (isNotEmpty(fieldValue)) {\n const formatErrors = await this.applyFormatValidations(fieldValue);\n errors.push(...formatErrors);\n }\n return errors;\n }\n\n private async applyFormatValidations(fieldValue: any): Promise<ValidationError[]> {\n const errors: ValidationError[] = [];\n !this.isValidSelectionValueType(fieldValue, this.options.selectionValueType) ? errors.push({ field: this.options.fieldName, error: 'Field value type is invalid' }) : \"no errors\";\n const _isValidSelectionValue = await this.isValidSelectionValue(fieldValue, this.options.selectionDynamicProvider)\n !_isValidSelectionValue ? errors.push({ field: this.options.fieldName, error: 'Field value is invalid' }) : \"no errors\";\n return errors;\n }\n\n transformForCreate(dto: any): any {\n return dto;\n }\n\n // Validation to be applied\n private isValidSelectionValueType(fieldValue: any, selectionValueType: SelectionValueType): boolean {\n switch (selectionValueType) {\n case SelectionValueType.string:\n return isString(fieldValue);\n case SelectionValueType.int:\n return isInt(fieldValue);\n default:\n throw new Error(`Validation for selection value type ${selectionValueType} is not implemented`);\n }\n }\n\n private async isValidSelectionValue(fieldValue: any, selectionDynamicProvider: string): Promise<boolean> {\n const providerInstance = this.providerInstance<any>(selectionDynamicProvider);\n try {\n // Use the value method first\n const valueOption = await providerInstance.value(fieldValue, JSON.parse(this.options.selectionDynamicProviderCtxt));\n if (valueOption && valueOption.value === fieldValue) {\n return true;\n }\n return false;\n }\n catch (error) {\n // Use the values method as a fallback, if the value method is not implemented\n const values = await providerInstance.values('', JSON.parse(this.options.selectionDynamicProviderCtxt));\n const isValid = values.some(v => v.value === fieldValue);\n return isValid;\n }\n }\n\n private providerInstance<T extends ISelectionProviderContext>(selectionDynamicProvider: string): ISelectionProvider<T> {\n const provider = this.options.discoveryService\n .getProviders()\n .filter((provider) => provider.name === selectionDynamicProvider)\n .pop();\n if (!provider) {\n throw new Error(`Provider for ${selectionDynamicProvider} not found`);\n }\n return provider.instance as ISelectionProvider<T>;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n}"]}
@@ -169,7 +169,14 @@ export interface IErrorCodeProvider {
169
169
  rules(): ReadonlyArray<ErrorRule>;
170
170
  resolve?(code: ErrorCode): ErrorMeta | undefined;
171
171
  }
172
- export type PlanStep = CreateNewFileStep | RegisterNestProviderStep | AddMethodToExistingClassStep | RegisterSolidXExtensionComponentStep | AddListViewButtonStep;
172
+ export type PlanStep = CreateNewFileStep | RegisterNestProviderStep | AddMethodToExistingClassStep | RegisterSolidXExtensionComponentStep | AddListViewButtonStep | AddFormViewButtonStep | AddImportStep;
173
+ export interface AddImportStep {
174
+ type: "addImport";
175
+ path: string;
176
+ importStatement: string;
177
+ overwrite?: boolean;
178
+ rationale?: string;
179
+ }
173
180
  export interface CreateNewFileStep {
174
181
  type: "createNewFile";
175
182
  path: string;
@@ -192,6 +199,7 @@ export interface AddMethodToExistingClassStep {
192
199
  className: string;
193
200
  methodName: string;
194
201
  content: string;
202
+ importStatements?: string[];
195
203
  rationale?: string;
196
204
  }
197
205
  export interface RegisterSolidXExtensionComponentStep {
@@ -207,6 +215,13 @@ export interface AddListViewButtonStep {
207
215
  buttonType?: string;
208
216
  content?: string;
209
217
  }
218
+ export interface AddFormViewButtonStep {
219
+ type: "addFormViewButton";
220
+ moduleName?: string;
221
+ modelName?: string;
222
+ buttonType?: string;
223
+ content?: string;
224
+ }
210
225
  export interface McpComputedProviderResponse {
211
226
  plan: PlanStep[];
212
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AA0JA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,gDAAmC,CAAA;AACrC,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED,MAAa,YAAY;IACvB,YACS,IAAS,EACT,OAAU;QADV,SAAI,GAAJ,IAAI,CAAK;QACT,YAAO,GAAP,OAAO,CAAG;IACf,CAAC;CACN;AALD,oCAKC;AAmED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB","sourcesContent":["import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';\nimport { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';\nimport { SignUpDto } from 'src/dtos/sign-up.dto';\nimport { Readable } from 'stream';\nimport { CreateMediaStorageProviderMetadataDto } from './dtos/create-media-storage-provider-metadata.dto';\nimport { DatasourceType } from './dtos/create-model-metadata.dto';\nimport { CreateModuleMetadataDto } from './dtos/create-module-metadata.dto';\nimport { CreateRoleMetadataDto } from './dtos/create-role-metadata.dto';\nimport { CreateSecurityRuleDto } from './dtos/create-security-rule.dto';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { ComputedFieldMetadata } from './helpers/solid-registry';\nimport { SqlExpression } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { CreateDashboardDto } from './dtos/create-dashboard.dto';\nimport { AiInteraction } from './entities/ai-interaction.entity';\n\nexport interface FieldCrudManager {\n // fieldMetadata: FieldMetadata;\n // entityManager?: EntityManager;\n // createDto: any;\n // files : Array<Express.Multer.File>;\n validate(\n dto: any,\n files: Array<Express.Multer.File>,\n ): ValidationError[] | Promise<ValidationError[]>;\n transformForCreate(dto: any, ctxt?: any): any | Promise<any>;\n}\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\n// export interface MediaStorage\nexport interface MediaStorageProvider<T> {\n store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;\n retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n // delete(file: string): Promise<void>;\n}\n\nexport interface ModuleMetadataConfiguration {\n moduleMetadata?: CreateModuleMetadataDto,\n roles?: CreateRoleMetadataDto[],\n users?: SignUpDto[],\n actions?: any[],\n menus?: any[],\n views?: any[],\n emailTemplates?: CreateEmailTemplateDto[],\n smsTemplates?: CreateSmsTemplateDto[],\n mediaStorageProviders?: CreateMediaStorageProviderMetadataDto[]\n securityRules?: CreateSecurityRuleDto[],\n dashboards?: CreateDashboardDto[],\n}\n\nexport interface CodeGenerationOptions {\n moduleId?: number;\n moduleUserKey?: string;\n modelId?: number;\n modelUserKey?: string;\n fieldIdsForRemoval?: number[];\n dryRun?: boolean;\n}\n\nexport interface TriggerMcpClientOptions {\n aiInteractionId: number;\n moduleName: string;\n}\n\nexport interface McpResponse {\n success: boolean;\n request: string;\n response: string;\n model?: string;\n tools_invoked?: string[];\n tool_calls?: any[];\n duration_ms?: number;\n errors?: string[];\n error_trace?: string[];\n content_type?: string;\n}\n\nexport interface ISelectionProviderContext {\n limit: number;\n offset: number;\n formValues: Record<string, any>;\n // query: string;\n}\n\nexport interface ISelectionProviderValues {\n label: string;\n value: string;\n}\n\nexport interface ISelectionProvider<T extends ISelectionProviderContext> {\n help(): string;\n\n name(): string;\n\n value(optionValue: string, ctxt: T): Promise<ISelectionProviderValues | any>;\n\n values(query: any, ctxt: T): Promise<readonly ISelectionProviderValues[]>;\n}\n\nexport interface IDashboardVariableSelectionProvider<T extends ISelectionProviderContext> extends ISelectionProvider<T> {\n}\n\nexport interface IMcpToolResponseHandler {\n apply(aiInteraction: AiInteraction);\n}\n\nexport interface IDashboardQuestionDataProvider<TContext, TData> {\n help(): string;\n\n name(): string;\n\n getData(question: DashboardQuestion, expressions?: SqlExpression[], ctxt?: TContext): Promise<TData[] | TData>;\n}\n\n/**\n * @deprecated Use `IEntityComputedFieldProvider` instead.\n */\nexport interface IComputedFieldProvider<T> {\n help(): string;\n\n name(): string;\n\n valueType(): string;\n\n computeValue(dto: any, ctxt: T): Promise<string | number>; // FIXME : Improve the types to make it more specific using generics\n}\n\nexport interface IEntityComputedFieldProvider {\n help(): string;\n\n name(): string;\n}\n\nexport interface IEntityPreComputeFieldProvider<TTriggerEntity, TContext, TValue = void> extends IEntityComputedFieldProvider {\n preComputeValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<TValue>;\n}\n\nexport interface IEntityPostComputeFieldProvider<TTriggerEntity, TContext> extends IEntityComputedFieldProvider {\n postComputeAndSaveValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<void>;\n}\n\nexport interface ISolidDatabaseModule {\n name(): string;\n\n type(): DatasourceType;\n}\n\nexport enum EventType {\n USER_REGISTERED = 'user.registered',\n}\n\nexport class EventDetails<T> {\n constructor(\n public type: any,\n public payload: T,\n ) { }\n}\n\nexport interface IMail<TResponse = unknown> {\n sendEmail(\n to: string,\n subject: string,\n body: string,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n cc?: string[],\n bcc?: string[],\n from?: string,\n ): Promise<TResponse>;\n\n sendEmailUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n cc?: string[],\n bcc?: string[],\n from?: string,\n ): Promise<TResponse>;\n}\n\nexport interface ISMS {\n sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any>;\n\n sendSMSUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueSms: boolean,\n ): Promise<any>;\n}\n\nexport interface IWhatsAppTransport {\n sendWhatsAppMessage(\n to: string,\n templateId: string,\n parameters: any,\n parentEntity?: any,\n parentEntityId?: any\n ): Promise<any>;\n}\n\nexport interface MailAttachmentWrapper {\n relativePath?: string;\n attachment?: MailAttachment;\n}\n\nexport interface MailAttachment {\n filename: string;\n templatePath?: string; // deprecated\n templateParams?: any; // deprecated\n content?: string | Buffer;\n contentType?: string;\n path?: string; //Filesystem absolute path or URL. \n}\n\nexport enum BrokerType {\n RabbitMQ = 'rabbitmq',\n Database = 'database'\n}\n\nexport interface QueuesModuleOptions {\n name: string;\n type: BrokerType;\n queueName: string;\n}\n\nexport type MediaWithFullUrl = Media & {\n _full_url: string;\n};\n\n\nexport type ErrorCode = string;\n\nexport type ErrorMeta = {\n message: string;\n httpStatus?: number;\n};\n\nexport type ErrorRule = {\n /** Canonical error code. Keep them kebab-case for consistency. */\n code: ErrorCode;\n /** Higher runs earlier. Defaults to 0 if not provided. */\n priority?: number;\n /** Return true if this rule matches the combined error text. */\n match: (combinedErrorText: string) => boolean;\n /** Display + HTTP mapping for this code. */\n meta: ErrorMeta;\n};\n\nexport interface IErrorCodeProvider {\n /** Used for registry identity & logs */\n name(): string;\n\n /**\n * Return all rules this provider contributes.\n * These will be merged with other providers’ rules, then sorted by priority.\n */\n rules(): ReadonlyArray<ErrorRule>;\n\n /**\n * Optional fallback meta for codes this provider owns (when called by getMessage/getHttpStatus).\n * If omitted, the ErrorMapperService will rely on the rule.meta of the first matching rule.\n */\n resolve?(code: ErrorCode): ErrorMeta | undefined;\n}\n\n// MCP Tool Related\n\nexport type PlanStep = CreateNewFileStep | RegisterNestProviderStep | AddMethodToExistingClassStep | RegisterSolidXExtensionComponentStep | AddListViewButtonStep;\n\nexport interface CreateNewFileStep {\n type: \"createNewFile\";\n path: string; // repo-relative e.g. solid-api/api/src/computed-providers/foo.provider.ts\n content: string; // full file content\n overwrite?: boolean; // default=false\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface RegisterNestProviderStep {\n type: \"registerNestProvider\";\n modulePath: string; // e.g. apps/api/src/address-master/address-master.module.ts\n providerClassName: string; // e.g. StateTotalCitiesComputedFieldProvider\n importFrom: string; // e.g. \"@/computed-providers/state-total-cities.provider\"\n registerIn: Array<\"providers\" | \"exports\">; // which arrays to add to\n uniqueGuard?: boolean; // default=true\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface AddMethodToExistingClassStep {\n type: \"addMethodToExistingClass\";\n path: string; // e.g. apps/api/src/address-master/services/address-master.service.ts\n className: string // e.g. CountryService\n methodName: string // e.g. addCountry\n content: string // Full Method Code\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface RegisterSolidXExtensionComponentStep {\n type: \"registerSolidXExtensionComponent\";\n path: string; // e.g. apps/api/src/address-master/services/address-master.service.ts\n content?: string; // Code\n importExtensionComponent?: string;\n}\n\nexport interface AddListViewButtonStep {\n type: \"addListViewButton\";\n moduleName?: string;\n modelName?: string;\n buttonType?: string;\n content?: string; // Code\n}\n\nexport interface McpComputedProviderResponse {\n plan: PlanStep[];\n // provider?: any; // (intentionally ignored per your note)\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AA0JA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,gDAAmC,CAAA;AACrC,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED,MAAa,YAAY;IACvB,YACS,IAAS,EACT,OAAU;QADV,SAAI,GAAJ,IAAI,CAAK;QACT,YAAO,GAAP,OAAO,CAAG;IACf,CAAC;CACN;AALD,oCAKC;AAmED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB","sourcesContent":["import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';\nimport { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';\nimport { SignUpDto } from 'src/dtos/sign-up.dto';\nimport { Readable } from 'stream';\nimport { CreateMediaStorageProviderMetadataDto } from './dtos/create-media-storage-provider-metadata.dto';\nimport { DatasourceType } from './dtos/create-model-metadata.dto';\nimport { CreateModuleMetadataDto } from './dtos/create-module-metadata.dto';\nimport { CreateRoleMetadataDto } from './dtos/create-role-metadata.dto';\nimport { CreateSecurityRuleDto } from './dtos/create-security-rule.dto';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { ComputedFieldMetadata } from './helpers/solid-registry';\nimport { SqlExpression } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { CreateDashboardDto } from './dtos/create-dashboard.dto';\nimport { AiInteraction } from './entities/ai-interaction.entity';\n\nexport interface FieldCrudManager {\n // fieldMetadata: FieldMetadata;\n // entityManager?: EntityManager;\n // createDto: any;\n // files : Array<Express.Multer.File>;\n validate(\n dto: any,\n files: Array<Express.Multer.File>,\n ): ValidationError[] | Promise<ValidationError[]>;\n transformForCreate(dto: any, ctxt?: any): any | Promise<any>;\n}\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\n// export interface MediaStorage\nexport interface MediaStorageProvider<T> {\n store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;\n retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n // delete(file: string): Promise<void>;\n}\n\nexport interface ModuleMetadataConfiguration {\n moduleMetadata?: CreateModuleMetadataDto,\n roles?: CreateRoleMetadataDto[],\n users?: SignUpDto[],\n actions?: any[],\n menus?: any[],\n views?: any[],\n emailTemplates?: CreateEmailTemplateDto[],\n smsTemplates?: CreateSmsTemplateDto[],\n mediaStorageProviders?: CreateMediaStorageProviderMetadataDto[]\n securityRules?: CreateSecurityRuleDto[],\n dashboards?: CreateDashboardDto[],\n}\n\nexport interface CodeGenerationOptions {\n moduleId?: number;\n moduleUserKey?: string;\n modelId?: number;\n modelUserKey?: string;\n fieldIdsForRemoval?: number[];\n dryRun?: boolean;\n}\n\nexport interface TriggerMcpClientOptions {\n aiInteractionId: number;\n moduleName: string;\n}\n\nexport interface McpResponse {\n success: boolean;\n request: string;\n response: string;\n model?: string;\n tools_invoked?: string[];\n tool_calls?: any[];\n duration_ms?: number;\n errors?: string[];\n error_trace?: string[];\n content_type?: string;\n}\n\nexport interface ISelectionProviderContext {\n limit: number;\n offset: number;\n formValues: Record<string, any>;\n // query: string;\n}\n\nexport interface ISelectionProviderValues {\n label: string;\n value: string;\n}\n\nexport interface ISelectionProvider<T extends ISelectionProviderContext> {\n help(): string;\n\n name(): string;\n\n value(optionValue: string, ctxt: T): Promise<ISelectionProviderValues | any>;\n\n values(query: any, ctxt: T): Promise<readonly ISelectionProviderValues[]>;\n}\n\nexport interface IDashboardVariableSelectionProvider<T extends ISelectionProviderContext> extends ISelectionProvider<T> {\n}\n\nexport interface IMcpToolResponseHandler {\n apply(aiInteraction: AiInteraction);\n}\n\nexport interface IDashboardQuestionDataProvider<TContext, TData> {\n help(): string;\n\n name(): string;\n\n getData(question: DashboardQuestion, expressions?: SqlExpression[], ctxt?: TContext): Promise<TData[] | TData>;\n}\n\n/**\n * @deprecated Use `IEntityComputedFieldProvider` instead.\n */\nexport interface IComputedFieldProvider<T> {\n help(): string;\n\n name(): string;\n\n valueType(): string;\n\n computeValue(dto: any, ctxt: T): Promise<string | number>; // FIXME : Improve the types to make it more specific using generics\n}\n\nexport interface IEntityComputedFieldProvider {\n help(): string;\n\n name(): string;\n}\n\nexport interface IEntityPreComputeFieldProvider<TTriggerEntity, TContext, TValue = void> extends IEntityComputedFieldProvider {\n preComputeValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<TValue>;\n}\n\nexport interface IEntityPostComputeFieldProvider<TTriggerEntity, TContext> extends IEntityComputedFieldProvider {\n postComputeAndSaveValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<void>;\n}\n\nexport interface ISolidDatabaseModule {\n name(): string;\n\n type(): DatasourceType;\n}\n\nexport enum EventType {\n USER_REGISTERED = 'user.registered',\n}\n\nexport class EventDetails<T> {\n constructor(\n public type: any,\n public payload: T,\n ) { }\n}\n\nexport interface IMail<TResponse = unknown> {\n sendEmail(\n to: string,\n subject: string,\n body: string,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n cc?: string[],\n bcc?: string[],\n from?: string,\n ): Promise<TResponse>;\n\n sendEmailUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n cc?: string[],\n bcc?: string[],\n from?: string,\n ): Promise<TResponse>;\n}\n\nexport interface ISMS {\n sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any>;\n\n sendSMSUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueSms: boolean,\n ): Promise<any>;\n}\n\nexport interface IWhatsAppTransport {\n sendWhatsAppMessage(\n to: string,\n templateId: string,\n parameters: any,\n parentEntity?: any,\n parentEntityId?: any\n ): Promise<any>;\n}\n\nexport interface MailAttachmentWrapper {\n relativePath?: string;\n attachment?: MailAttachment;\n}\n\nexport interface MailAttachment {\n filename: string;\n templatePath?: string; // deprecated\n templateParams?: any; // deprecated\n content?: string | Buffer;\n contentType?: string;\n path?: string; //Filesystem absolute path or URL. \n}\n\nexport enum BrokerType {\n RabbitMQ = 'rabbitmq',\n Database = 'database'\n}\n\nexport interface QueuesModuleOptions {\n name: string;\n type: BrokerType;\n queueName: string;\n}\n\nexport type MediaWithFullUrl = Media & {\n _full_url: string;\n};\n\n\nexport type ErrorCode = string;\n\nexport type ErrorMeta = {\n message: string;\n httpStatus?: number;\n};\n\nexport type ErrorRule = {\n /** Canonical error code. Keep them kebab-case for consistency. */\n code: ErrorCode;\n /** Higher runs earlier. Defaults to 0 if not provided. */\n priority?: number;\n /** Return true if this rule matches the combined error text. */\n match: (combinedErrorText: string) => boolean;\n /** Display + HTTP mapping for this code. */\n meta: ErrorMeta;\n};\n\nexport interface IErrorCodeProvider {\n /** Used for registry identity & logs */\n name(): string;\n\n /**\n * Return all rules this provider contributes.\n * These will be merged with other providers’ rules, then sorted by priority.\n */\n rules(): ReadonlyArray<ErrorRule>;\n\n /**\n * Optional fallback meta for codes this provider owns (when called by getMessage/getHttpStatus).\n * If omitted, the ErrorMapperService will rely on the rule.meta of the first matching rule.\n */\n resolve?(code: ErrorCode): ErrorMeta | undefined;\n}\n\n// MCP Tool Related\n\nexport type PlanStep = CreateNewFileStep | RegisterNestProviderStep | AddMethodToExistingClassStep | RegisterSolidXExtensionComponentStep | AddListViewButtonStep | AddFormViewButtonStep | AddImportStep;\nexport interface AddImportStep {\n type: \"addImport\";\n path: string; // e.g. apps/api/src/address-master/services/address-master.service.ts\n importStatement: string; // e.g. import { Something } from 'somewhere';\n overwrite?: boolean; // default=false\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface CreateNewFileStep {\n type: \"createNewFile\";\n path: string; // repo-relative e.g. solid-api/api/src/computed-providers/foo.provider.ts\n content: string; // full file content\n overwrite?: boolean; // default=false\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface RegisterNestProviderStep {\n type: \"registerNestProvider\";\n modulePath: string; // e.g. apps/api/src/address-master/address-master.module.ts\n providerClassName: string; // e.g. StateTotalCitiesComputedFieldProvider\n importFrom: string; // e.g. \"@/computed-providers/state-total-cities.provider\"\n registerIn: Array<\"providers\" | \"exports\">; // which arrays to add to\n uniqueGuard?: boolean; // default=true\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface AddMethodToExistingClassStep {\n type: \"addMethodToExistingClass\";\n path: string; // e.g. apps/api/src/address-master/services/address-master.service.ts\n className: string // e.g. CountryService\n methodName: string // e.g. addCountry\n content: string // Full Method Code\n importStatements?: string[]; // e.g. [ \"import { X } from 'y';\" ]\n rationale?: string; // optional, ignored by executor\n}\n\nexport interface RegisterSolidXExtensionComponentStep {\n type: \"registerSolidXExtensionComponent\";\n path: string; // e.g. apps/api/src/address-master/services/address-master.service.ts\n content?: string; // Code\n importExtensionComponent?: string;\n}\n\nexport interface AddListViewButtonStep {\n type: \"addListViewButton\";\n moduleName?: string;\n modelName?: string;\n buttonType?: string;\n content?: string; // Code\n}\n\nexport interface AddFormViewButtonStep {\n type: \"addFormViewButton\";\n moduleName?: string;\n modelName?: string;\n buttonType?: string;\n content?: string; // Code\n}\n\nexport interface McpComputedProviderResponse {\n plan: PlanStep[];\n // provider?: any; // (intentionally ignored per your note)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-mcp-client-subscriber-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,qBACa,kCAAmC,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAI3F,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAXxC,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAuD;gBAG3F,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,MAAM,EAAE,aAAa,EACrB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAClC,aAAa,EAAE,aAAa,EAE5B,mBAAmB,EAAE,mBAAmB;IAM7D,OAAO,IAAI,mBAAmB;IAM9B,mBAAmB,CAAC,UAAU,EAAE,WAAW;IA8BrC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC;CAkOjE"}
1
+ {"version":3,"file":"trigger-mcp-client-subscriber-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,qBACa,kCAAmC,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAI3F,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAXxC,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAuD;gBAG3F,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,MAAM,EAAE,aAAa,EACrB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAClC,aAAa,EAAE,aAAa,EAE5B,mBAAmB,EAAE,mBAAmB;IAM7D,OAAO,IAAI,mBAAmB;IAM9B,mBAAmB,CAAC,UAAU,EAAE,WAAW;IA8BrC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC;CAoPjE"}
@@ -122,6 +122,7 @@ let TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 =
122
122
  }
123
123
  },
124
124
  });
125
+ const existingControllerAndTheirMethods = this.solidRegistry.getControllers();
125
126
  const modulesSection = (existingModules ?? [])
126
127
  .map(m => [
127
128
  `### ${m.displayName}`,
@@ -151,6 +152,12 @@ let TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 =
151
152
  `- description: ${m.instance.help() ?? ""}`,
152
153
  ].join('\n'))
153
154
  .join('\n\n');
155
+ const controllersAndTheirMethods = (existingControllerAndTheirMethods ?? [])
156
+ .map(m => [
157
+ `### ${m.name}`,
158
+ `- methods: ${m.methods.length ? m.methods.map(m => `- ${m}`).join('\n') : '- No methods found'}`,
159
+ ].join('\n'))
160
+ .join('\n\n');
154
161
  const finalPrompt = `
155
162
  # User Prompt:
156
163
  ${prompt}