@appxdigital/appx-core 0.1.68

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 (196) hide show
  1. package/dist/appx-core.module.d.ts +7 -0
  2. package/dist/appx-core.module.d.ts.map +1 -0
  3. package/dist/appx-core.module.js +46 -0
  4. package/dist/common/config/default-permissions.config.d.ts +3 -0
  5. package/dist/common/config/default-permissions.config.d.ts.map +1 -0
  6. package/dist/common/config/default-permissions.config.js +6 -0
  7. package/dist/common/config/permissions.config.provider.d.ts +8 -0
  8. package/dist/common/config/permissions.config.provider.d.ts.map +1 -0
  9. package/dist/common/config/permissions.config.provider.js +12 -0
  10. package/dist/common/config/permissions.service.d.ts +7 -0
  11. package/dist/common/config/permissions.service.d.ts.map +1 -0
  12. package/dist/common/config/permissions.service.js +31 -0
  13. package/dist/common/config/permissionsConfigTypes.d.ts +18 -0
  14. package/dist/common/config/permissionsConfigTypes.d.ts.map +1 -0
  15. package/dist/common/config/permissionsConfigTypes.js +2 -0
  16. package/dist/common/contants.d.ts +3 -0
  17. package/dist/common/contants.d.ts.map +1 -0
  18. package/dist/common/contants.js +5 -0
  19. package/dist/common/decorators/guard.decorator.d.ts +5 -0
  20. package/dist/common/decorators/guard.decorator.d.ts.map +1 -0
  21. package/dist/common/decorators/guard.decorator.js +22 -0
  22. package/dist/common/decorators/permission.decorator.d.ts +3 -0
  23. package/dist/common/decorators/permission.decorator.d.ts.map +1 -0
  24. package/dist/common/decorators/permission.decorator.js +7 -0
  25. package/dist/common/decorators/transaction.decorator.d.ts +8 -0
  26. package/dist/common/decorators/transaction.decorator.d.ts.map +1 -0
  27. package/dist/common/decorators/transaction.decorator.js +12 -0
  28. package/dist/common/enums/role.enum.d.ts +6 -0
  29. package/dist/common/enums/role.enum.d.ts.map +1 -0
  30. package/dist/common/enums/role.enum.js +9 -0
  31. package/dist/common/guards/rbac.guard.d.ts +10 -0
  32. package/dist/common/guards/rbac.guard.d.ts.map +1 -0
  33. package/dist/common/guards/rbac.guard.js +56 -0
  34. package/dist/common/guards/role.guard.d.ts +12 -0
  35. package/dist/common/guards/role.guard.d.ts.map +1 -0
  36. package/dist/common/guards/role.guard.js +44 -0
  37. package/dist/common/interceptors/file.interceptor.d.ts +9 -0
  38. package/dist/common/interceptors/file.interceptor.d.ts.map +1 -0
  39. package/dist/common/interceptors/file.interceptor.js +74 -0
  40. package/dist/common/interceptors/prisma.interceptor.d.ts +14 -0
  41. package/dist/common/interceptors/prisma.interceptor.d.ts.map +1 -0
  42. package/dist/common/interceptors/prisma.interceptor.js +82 -0
  43. package/dist/common/interfaces/file-upload.interface.d.ts +13 -0
  44. package/dist/common/interfaces/file-upload.interface.d.ts.map +1 -0
  45. package/dist/common/interfaces/file-upload.interface.js +2 -0
  46. package/dist/common/interfaces/storage-service.interface.d.ts +4 -0
  47. package/dist/common/interfaces/storage-service.interface.d.ts.map +1 -0
  48. package/dist/common/interfaces/storage-service.interface.js +2 -0
  49. package/dist/common/interfaces/user.interface.d.ts +12 -0
  50. package/dist/common/interfaces/user.interface.d.ts.map +1 -0
  51. package/dist/common/interfaces/user.interface.js +2 -0
  52. package/dist/common/providers/aws-storage.service.d.ts +10 -0
  53. package/dist/common/providers/aws-storage.service.d.ts.map +1 -0
  54. package/dist/common/providers/aws-storage.service.js +60 -0
  55. package/dist/common/providers/gcp-storage.service.d.ts +10 -0
  56. package/dist/common/providers/gcp-storage.service.d.ts.map +1 -0
  57. package/dist/common/providers/gcp-storage.service.js +87 -0
  58. package/dist/common/providers/local-storage.service.d.ts +7 -0
  59. package/dist/common/providers/local-storage.service.d.ts.map +1 -0
  60. package/dist/common/providers/local-storage.service.js +80 -0
  61. package/dist/common/types.d.ts +21 -0
  62. package/dist/common/types.d.ts.map +1 -0
  63. package/dist/common/types.js +3 -0
  64. package/dist/common/utils/context-transformer.util.d.ts +6 -0
  65. package/dist/common/utils/context-transformer.util.d.ts.map +1 -0
  66. package/dist/common/utils/context-transformer.util.js +28 -0
  67. package/dist/common/utils/error-handler.d.ts +2 -0
  68. package/dist/common/utils/error-handler.d.ts.map +1 -0
  69. package/dist/common/utils/error-handler.js +38 -0
  70. package/dist/config/admin/create.d.ts +2 -0
  71. package/dist/config/admin/create.d.ts.map +1 -0
  72. package/dist/config/admin/create.js +25 -0
  73. package/dist/config/admin/generate-admin.d.ts +2 -0
  74. package/dist/config/admin/generate-admin.d.ts.map +1 -0
  75. package/dist/config/admin/generate-admin.js +75 -0
  76. package/dist/config/admin/templates/admin.template.d.ts +2 -0
  77. package/dist/config/admin/templates/admin.template.d.ts.map +1 -0
  78. package/dist/config/admin/templates/admin.template.js +131 -0
  79. package/dist/config/admin/templates/component-loader.template.d.ts +2 -0
  80. package/dist/config/admin/templates/component-loader.template.d.ts.map +1 -0
  81. package/dist/config/admin/templates/component-loader.template.js +17 -0
  82. package/dist/config/admin/templates/dashboard.template.d.ts +2 -0
  83. package/dist/config/admin/templates/dashboard.template.d.ts.map +1 -0
  84. package/dist/config/admin/templates/dashboard.template.js +40 -0
  85. package/dist/config/admin/templates/utils.template.d.ts +2 -0
  86. package/dist/config/admin/templates/utils.template.d.ts.map +1 -0
  87. package/dist/config/admin/templates/utils.template.js +135 -0
  88. package/dist/config/generate-all.d.ts +3 -0
  89. package/dist/config/generate-all.d.ts.map +1 -0
  90. package/dist/config/generate-all.js +64 -0
  91. package/dist/config/generate-controllers.d.ts +2 -0
  92. package/dist/config/generate-controllers.d.ts.map +1 -0
  93. package/dist/config/generate-controllers.js +83 -0
  94. package/dist/config/generate-modules.d.ts +2 -0
  95. package/dist/config/generate-modules.d.ts.map +1 -0
  96. package/dist/config/generate-modules.js +158 -0
  97. package/dist/config/generate-resolvers.d.ts +2 -0
  98. package/dist/config/generate-resolvers.d.ts.map +1 -0
  99. package/dist/config/generate-resolvers.js +97 -0
  100. package/dist/config/generate-services.d.ts +2 -0
  101. package/dist/config/generate-services.d.ts.map +1 -0
  102. package/dist/config/generate-services.js +72 -0
  103. package/dist/config/generate-session-schema.d.ts +2 -0
  104. package/dist/config/generate-session-schema.d.ts.map +1 -0
  105. package/dist/config/generate-session-schema.js +78 -0
  106. package/dist/config/setup-fileupload.d.ts +3 -0
  107. package/dist/config/setup-fileupload.d.ts.map +1 -0
  108. package/dist/config/setup-fileupload.js +265 -0
  109. package/dist/config/utils.d.ts +3 -0
  110. package/dist/config/utils.d.ts.map +1 -0
  111. package/dist/config/utils.js +55 -0
  112. package/dist/graphql/batch.payload.d.ts +4 -0
  113. package/dist/graphql/batch.payload.d.ts.map +1 -0
  114. package/dist/graphql/batch.payload.js +23 -0
  115. package/dist/graphql/generic.resolver.d.ts +15 -0
  116. package/dist/graphql/generic.resolver.d.ts.map +1 -0
  117. package/dist/graphql/generic.resolver.js +107 -0
  118. package/dist/graphql/graphql.module.d.ts +3 -0
  119. package/dist/graphql/graphql.module.d.ts.map +1 -0
  120. package/dist/graphql/graphql.module.js +28 -0
  121. package/dist/index.d.ts +24 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +39 -0
  124. package/dist/modules/auth/auth-field.decorator.d.ts +10 -0
  125. package/dist/modules/auth/auth-field.decorator.d.ts.map +1 -0
  126. package/dist/modules/auth/auth-field.decorator.js +18 -0
  127. package/dist/modules/auth/auth.controller.d.ts +25 -0
  128. package/dist/modules/auth/auth.controller.d.ts.map +1 -0
  129. package/dist/modules/auth/auth.controller.js +158 -0
  130. package/dist/modules/auth/auth.module.d.ts +3 -0
  131. package/dist/modules/auth/auth.module.d.ts.map +1 -0
  132. package/dist/modules/auth/auth.module.js +28 -0
  133. package/dist/modules/auth/auth.resolver.d.ts +6 -0
  134. package/dist/modules/auth/auth.resolver.d.ts.map +1 -0
  135. package/dist/modules/auth/auth.resolver.js +24 -0
  136. package/dist/modules/auth/auth.service.d.ts +28 -0
  137. package/dist/modules/auth/auth.service.d.ts.map +1 -0
  138. package/dist/modules/auth/auth.service.js +197 -0
  139. package/dist/modules/auth/authenticated.guard.d.ts +5 -0
  140. package/dist/modules/auth/authenticated.guard.d.ts.map +1 -0
  141. package/dist/modules/auth/authenticated.guard.js +20 -0
  142. package/dist/modules/auth/dto/register.dto.d.ts +6 -0
  143. package/dist/modules/auth/dto/register.dto.d.ts.map +1 -0
  144. package/dist/modules/auth/dto/register.dto.js +21 -0
  145. package/dist/modules/auth/dto/user.dto.d.ts +5 -0
  146. package/dist/modules/auth/dto/user.dto.d.ts.map +1 -0
  147. package/dist/modules/auth/dto/user.dto.js +36 -0
  148. package/dist/modules/auth/local-auth.guard.d.ts +7 -0
  149. package/dist/modules/auth/local-auth.guard.d.ts.map +1 -0
  150. package/dist/modules/auth/local-auth.guard.js +31 -0
  151. package/dist/modules/auth/local.strategy.d.ts +15 -0
  152. package/dist/modules/auth/local.strategy.d.ts.map +1 -0
  153. package/dist/modules/auth/local.strategy.js +48 -0
  154. package/dist/modules/auth/session/session-auth.guard.d.ts +5 -0
  155. package/dist/modules/auth/session/session-auth.guard.d.ts.map +1 -0
  156. package/dist/modules/auth/session/session-auth.guard.js +30 -0
  157. package/dist/modules/auth/session/session-serializer.d.ts +9 -0
  158. package/dist/modules/auth/session/session-serializer.d.ts.map +1 -0
  159. package/dist/modules/auth/session/session-serializer.js +44 -0
  160. package/dist/modules/auth/session/session-store.d.ts +11 -0
  161. package/dist/modules/auth/session/session-store.d.ts.map +1 -0
  162. package/dist/modules/auth/session/session-store.js +97 -0
  163. package/dist/modules/common.module.d.ts +3 -0
  164. package/dist/modules/common.module.d.ts.map +1 -0
  165. package/dist/modules/common.module.js +20 -0
  166. package/dist/modules/core/core.controller.d.ts +14 -0
  167. package/dist/modules/core/core.controller.d.ts.map +1 -0
  168. package/dist/modules/core/core.controller.js +114 -0
  169. package/dist/modules/core/core.module.d.ts +3 -0
  170. package/dist/modules/core/core.module.d.ts.map +1 -0
  171. package/dist/modules/core/core.module.js +22 -0
  172. package/dist/modules/core/core.service.d.ts +44 -0
  173. package/dist/modules/core/core.service.d.ts.map +1 -0
  174. package/dist/modules/core/core.service.js +121 -0
  175. package/dist/modules/file/file-upload.controller.d.ts +11 -0
  176. package/dist/modules/file/file-upload.controller.d.ts.map +1 -0
  177. package/dist/modules/file/file-upload.controller.js +52 -0
  178. package/dist/modules/file/file-upload.module.d.ts +6 -0
  179. package/dist/modules/file/file-upload.module.d.ts.map +1 -0
  180. package/dist/modules/file/file-upload.module.js +62 -0
  181. package/dist/modules/file/file-upload.service.d.ts +27 -0
  182. package/dist/modules/file/file-upload.service.d.ts.map +1 -0
  183. package/dist/modules/file/file-upload.service.js +69 -0
  184. package/dist/modules/user/user.module.d.ts +3 -0
  185. package/dist/modules/user/user.module.d.ts.map +1 -0
  186. package/dist/modules/user/user.module.js +20 -0
  187. package/dist/modules/user/user.service.d.ts +10 -0
  188. package/dist/modules/user/user.service.d.ts.map +1 -0
  189. package/dist/modules/user/user.service.js +49 -0
  190. package/dist/prisma/prisma.service.d.ts +128 -0
  191. package/dist/prisma/prisma.service.d.ts.map +1 -0
  192. package/dist/prisma/prisma.service.js +512 -0
  193. package/dist/tasks/session-cleanup.service.d.ts +7 -0
  194. package/dist/tasks/session-cleanup.service.d.ts.map +1 -0
  195. package/dist/tasks/session-cleanup.service.js +38 -0
  196. package/package.json +66 -0
@@ -0,0 +1,52 @@
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.FileUploadController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const file_interceptor_1 = require("../../common/interceptors/file.interceptor");
18
+ const file_upload_service_1 = require("./file-upload.service");
19
+ let FileUploadController = class FileUploadController {
20
+ constructor(fileUploadService) {
21
+ this.fileUploadService = fileUploadService;
22
+ }
23
+ async upload(req) {
24
+ const fileData = req.file || req.files;
25
+ if (!fileData) {
26
+ throw new common_1.BadRequestException('No file uploaded');
27
+ }
28
+ const files = Array.isArray(fileData) ? fileData : [fileData];
29
+ const result = await Promise.all(files.map((file) => {
30
+ if (file && file.originalname && file.buffer) {
31
+ return this.fileUploadService.uploadFile(file);
32
+ }
33
+ else {
34
+ throw new common_1.BadRequestException('Invalid file structure');
35
+ }
36
+ }));
37
+ return { message: 'File uploaded successfully', data: result };
38
+ }
39
+ };
40
+ exports.FileUploadController = FileUploadController;
41
+ __decorate([
42
+ (0, common_1.Post)(':path'),
43
+ (0, common_1.UseInterceptors)(file_interceptor_1.FileUploadInterceptor),
44
+ __param(0, (0, common_1.Req)()),
45
+ __metadata("design:type", Function),
46
+ __metadata("design:paramtypes", [Object]),
47
+ __metadata("design:returntype", Promise)
48
+ ], FileUploadController.prototype, "upload", null);
49
+ exports.FileUploadController = FileUploadController = __decorate([
50
+ (0, common_1.Controller)('upload'),
51
+ __metadata("design:paramtypes", [file_upload_service_1.FileUploadService])
52
+ ], FileUploadController);
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { FileUploadModuleOptions } from '../../common/interfaces/file-upload.interface';
3
+ export declare class FileUploadModule {
4
+ static register(options: FileUploadModuleOptions): DynamicModule;
5
+ }
6
+ //# sourceMappingURL=file-upload.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.module.d.ts","sourceRoot":"","sources":["../../../src/modules/file/file-upload.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,aAAa,EAAW,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAC,uBAAuB,EAAC,MAAM,+CAA+C,CAAC;AAMtF,qBACa,gBAAgB;IACzB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CA0CnE"}
@@ -0,0 +1,62 @@
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 FileUploadModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.FileUploadModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const file_upload_service_1 = require("./file-upload.service");
13
+ const file_upload_controller_1 = require("./file-upload.controller");
14
+ const aws_storage_service_1 = require("../../common/providers/aws-storage.service");
15
+ const local_storage_service_1 = require("../../common/providers/local-storage.service");
16
+ const contants_1 = require("../../common/contants");
17
+ const gcp_storage_service_1 = require("../../common/providers/gcp-storage.service");
18
+ let FileUploadModule = FileUploadModule_1 = class FileUploadModule {
19
+ static register(options) {
20
+ const providers = [
21
+ file_upload_service_1.FileUploadService,
22
+ {
23
+ provide: contants_1.FILE_UPLOAD_OPTIONS,
24
+ useValue: options,
25
+ },
26
+ ];
27
+ let storageProvider;
28
+ switch (options.cloudProvider) {
29
+ case 'aws':
30
+ storageProvider = {
31
+ provide: contants_1.STORAGE_SERVICE,
32
+ useClass: aws_storage_service_1.AwsStorageService,
33
+ };
34
+ break;
35
+ case 'gcp':
36
+ storageProvider = {
37
+ provide: contants_1.STORAGE_SERVICE,
38
+ useClass: gcp_storage_service_1.GcpStorageService,
39
+ };
40
+ break;
41
+ case 'local':
42
+ storageProvider = {
43
+ provide: contants_1.STORAGE_SERVICE,
44
+ useClass: local_storage_service_1.LocalStorageService,
45
+ };
46
+ break;
47
+ default:
48
+ throw new Error('Unsupported cloud provider');
49
+ }
50
+ providers.push(storageProvider);
51
+ return {
52
+ module: FileUploadModule_1,
53
+ controllers: [file_upload_controller_1.FileUploadController],
54
+ providers: providers,
55
+ exports: [file_upload_service_1.FileUploadService, contants_1.FILE_UPLOAD_OPTIONS, contants_1.STORAGE_SERVICE],
56
+ };
57
+ }
58
+ };
59
+ exports.FileUploadModule = FileUploadModule;
60
+ exports.FileUploadModule = FileUploadModule = FileUploadModule_1 = __decorate([
61
+ (0, common_1.Module)({})
62
+ ], FileUploadModule);
@@ -0,0 +1,27 @@
1
+ import { FileUploadModuleOptions, EndpointConfig } from '../../common/interfaces/file-upload.interface';
2
+ import { StorageService } from '../../common/interfaces/storage-service.interface';
3
+ export declare class FileUploadService {
4
+ private options;
5
+ private storageService;
6
+ constructor(options: FileUploadModuleOptions, storageService: StorageService);
7
+ /**
8
+ * Retrieves the configuration for the specified endpoint or its aliases.
9
+ * @param endpoint - The endpoint to get the configuration for.
10
+ */
11
+ getEndpointConfig(endpoint: string): EndpointConfig | undefined;
12
+ /**
13
+ * Verifies if the user's role is allowed for the specified endpoint.
14
+ * Skips verification if the roles array contains 'ALL'.
15
+ * Throws a ForbiddenException if the role is not allowed.
16
+ * @param endpointSuffix - The endpoint to check access for.
17
+ * @param userRole - The role of the user making the request.
18
+ */
19
+ validateUserRole(endpointSuffix: string, userRole: string): void;
20
+ /**
21
+ * Uploads one or multiple files to the storage service.
22
+ * @param file - A single file or an array of files to upload.
23
+ * @returns The result of the upload operation(s).
24
+ */
25
+ uploadFile(file: Express.Multer.File | Express.Multer.File[]): Promise<any>;
26
+ }
27
+ //# sourceMappingURL=file-upload.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-upload.service.d.ts","sourceRoot":"","sources":["../../../src/modules/file/file-upload.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAE,cAAc,EAAC,MAAM,+CAA+C,CAAC;AACtG,OAAO,EAAC,cAAc,EAAC,MAAM,mDAAmD,CAAC;AAGjF,qBACa,iBAAiB;IAEO,OAAO,CAAC,OAAO;IACnB,OAAO,CAAC,cAAc;gBADV,OAAO,EAAE,uBAAuB,EACpC,cAAc,EAAE,cAAc;IAInE;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAM/D;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAczD;;;;OAIG;IACG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAOpF"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FileUploadService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const contants_1 = require("../../common/contants");
18
+ let FileUploadService = class FileUploadService {
19
+ constructor(options, storageService) {
20
+ this.options = options;
21
+ this.storageService = storageService;
22
+ }
23
+ /**
24
+ * Retrieves the configuration for the specified endpoint or its aliases.
25
+ * @param endpoint - The endpoint to get the configuration for.
26
+ */
27
+ getEndpointConfig(endpoint) {
28
+ return (this.options.endpoints || []).find(config => config.endpoint === endpoint || config.aliases?.includes(endpoint));
29
+ }
30
+ /**
31
+ * Verifies if the user's role is allowed for the specified endpoint.
32
+ * Skips verification if the roles array contains 'ALL'.
33
+ * Throws a ForbiddenException if the role is not allowed.
34
+ * @param endpointSuffix - The endpoint to check access for.
35
+ * @param userRole - The role of the user making the request.
36
+ */
37
+ validateUserRole(endpointSuffix, userRole) {
38
+ const config = this.getEndpointConfig(endpointSuffix);
39
+ if (!config) {
40
+ throw new common_1.BadRequestException(`Endpoint not configured for suffix: ${endpointSuffix}`);
41
+ }
42
+ if (config.roles.includes('ALL')) {
43
+ return;
44
+ }
45
+ if (!config.roles.includes(userRole)) {
46
+ throw new common_1.ForbiddenException(`Your role (${userRole}) is not permitted to upload to this endpoint`);
47
+ }
48
+ }
49
+ /**
50
+ * Uploads one or multiple files to the storage service.
51
+ * @param file - A single file or an array of files to upload.
52
+ * @returns The result of the upload operation(s).
53
+ */
54
+ async uploadFile(file) {
55
+ if (Array.isArray(file)) {
56
+ return Promise.all(file.map((f) => this.storageService.uploadFile(f)));
57
+ }
58
+ else {
59
+ return this.storageService.uploadFile(file);
60
+ }
61
+ }
62
+ };
63
+ exports.FileUploadService = FileUploadService;
64
+ exports.FileUploadService = FileUploadService = __decorate([
65
+ (0, common_1.Injectable)(),
66
+ __param(0, (0, common_1.Inject)(contants_1.FILE_UPLOAD_OPTIONS)),
67
+ __param(1, (0, common_1.Inject)(contants_1.STORAGE_SERVICE)),
68
+ __metadata("design:paramtypes", [Object, Object])
69
+ ], FileUploadService);
@@ -0,0 +1,3 @@
1
+ export declare class UserModule {
2
+ }
3
+ //# sourceMappingURL=user.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.module.d.ts","sourceRoot":"","sources":["../../../src/modules/user/user.module.ts"],"names":[],"mappings":"AAGA,qBAIa,UAAU;CAAG"}
@@ -0,0 +1,20 @@
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.UserModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const user_service_1 = require("./user.service");
12
+ let UserModule = class UserModule {
13
+ };
14
+ exports.UserModule = UserModule;
15
+ exports.UserModule = UserModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [user_service_1.UserService],
18
+ exports: [user_service_1.UserService],
19
+ })
20
+ ], UserModule);
@@ -0,0 +1,10 @@
1
+ import { PrismaService } from '../../prisma/prisma.service';
2
+ import { UserCreateInput } from '../../common/interfaces/user.interface';
3
+ export declare class UserService {
4
+ private prisma;
5
+ constructor(prisma: PrismaService);
6
+ createUser(createUserInput: UserCreateInput): Promise<any>;
7
+ findByField(field: string, value: any): Promise<any>;
8
+ findByEmail(email: string): Promise<any>;
9
+ }
10
+ //# sourceMappingURL=user.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../../src/modules/user/user.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,wCAAwC,CAAC;AAEvE,qBACa,WAAW;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,UAAU,CAAC,eAAe,EAAE,eAAe;IAM3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAUpD,WAAW,CAAC,KAAK,EAAE,MAAM;CAYlC"}
@@ -0,0 +1,49 @@
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.UserService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const prisma_service_1 = require("../../prisma/prisma.service");
15
+ let UserService = class UserService {
16
+ constructor(prisma) {
17
+ this.prisma = prisma;
18
+ }
19
+ async createUser(createUserInput) {
20
+ return this.prisma.user.create({
21
+ data: createUserInput,
22
+ });
23
+ }
24
+ async findByField(field, value) {
25
+ const where = {
26
+ [field]: value,
27
+ };
28
+ return this.prisma.user.findFirst({
29
+ where,
30
+ });
31
+ }
32
+ async findByEmail(email) {
33
+ return this.prisma.user.findUnique({
34
+ where: { email },
35
+ select: {
36
+ id: true,
37
+ password: true,
38
+ email: true,
39
+ name: true,
40
+ role: true,
41
+ },
42
+ });
43
+ }
44
+ };
45
+ exports.UserService = UserService;
46
+ exports.UserService = UserService = __decorate([
47
+ (0, common_1.Injectable)(),
48
+ __metadata("design:paramtypes", [prisma_service_1.PrismaService])
49
+ ], UserService);
@@ -0,0 +1,128 @@
1
+ import { Prisma, PrismaClient } from '@prisma/client';
2
+ import { PermissionsConfigType } from '../common/config/permissionsConfigTypes';
3
+ import type { PrismaClient as RuntimeClient } from '.prisma/client';
4
+ type ModelKey = keyof RuntimeClient;
5
+ export declare class PrismaService {
6
+ private readonly permissionsConfig;
7
+ private fieldConfigs;
8
+ prismaClient: PrismaClient;
9
+ private schemaPath;
10
+ constructor(prismaClient: PrismaClient, permissionsConfig: PermissionsConfigType);
11
+ $transaction<T>(fn: (prisma: Prisma.TransactionClient) => Promise<T>): any;
12
+ proxyModels(): void;
13
+ /**
14
+ * Retrieves the model delegate from the Prisma client.
15
+ * Used in the graphql generic resolver
16
+ * @param model
17
+ */
18
+ getModelDelegate<M extends ModelKey>(model: M): RuntimeClient[M];
19
+ get model(): RuntimeClient;
20
+ get user(): any;
21
+ get session(): any;
22
+ /**
23
+ * Parses the Prisma schema to extract model information and field configurations
24
+ * including custom annotations (e.g., @Role(CLIENT)) and enums.
25
+ */
26
+ parseSchema(): void;
27
+ /**
28
+ * Extracts enums from the Prisma schema.
29
+ * @param schema - The raw schema content as a string.
30
+ * @returns An array of enum names.
31
+ */
32
+ private extractEnumsFromSchema;
33
+ /**
34
+ * Extracts models and custom annotations from the Prisma schema.
35
+ * @param schema - The raw schema content as a string.
36
+ * @param enums - An array of enum names for determining scalar fields.
37
+ * @returns A parsed object with models and their custom annotations.
38
+ */
39
+ private extractModelsFromSchema;
40
+ /**
41
+ * Extracts fields from the model and looks for custom annotations like @Role.
42
+ * @param modelBody - The body of the model in the schema.
43
+ * @returns A parsed object with fields and their custom annotations.
44
+ */
45
+ private extractFieldsFromModel;
46
+ private isScalarType;
47
+ /**
48
+ * Applies field omission logic based on the user's role.
49
+ * Fields that the user does not have permission to access are removed from the query.
50
+ *
51
+ * @param modelName - The name of the Prisma model being queried.
52
+ * @param userRole - The current user's role (e.g., 'ADMIN', 'CLIENT').
53
+ * @param args - The query arguments, including `select` or `include`.
54
+ * @returns The modified query arguments with omitted fields.
55
+ */
56
+ private applyFieldOmission;
57
+ get normalizedPermissionsConfig(): any;
58
+ /**
59
+ * Applies `where` conditions to the query based on the user's role and the action being performed.
60
+ * The conditions are pulled from the `PermissionsConfig`.
61
+ *
62
+ * @param modelName - The name of the model being queried.
63
+ * @param userRole - The role of the user making the request.
64
+ * @param args - The query arguments (including `where`).
65
+ * @param user - The user object containing information like `id`.
66
+ * @param action - The action being performed (e.g., 'find', 'update').
67
+ * @returns The modified query arguments with the appropriate `where` conditions applied.
68
+ * @throws ForbiddenException if no valid `where` conditions are present after applying permissions.
69
+ */
70
+ private applyWhereConditions;
71
+ getRelationType(parentModel: string, relatedField: string): {
72
+ relation: null;
73
+ identifier: null;
74
+ } | {
75
+ relation: string;
76
+ identifier: any;
77
+ };
78
+ /**
79
+ * Builds dynamic conditions based on the type of clause (OR, AND, or field conditions).
80
+ * Each condition is processed, and placeholders (like `$USER_ID`) are replaced with actual values.
81
+ *
82
+ * @param conditions - An array of clauses that define the conditions for the query.
83
+ * @param user - The user object used to replace placeholders.
84
+ * @returns The constructed `where` clause object.
85
+ */
86
+ private buildConditions;
87
+ /**
88
+ * Replaces placeholders (like `$USER_ID`) in the condition with actual values from the user object.
89
+ * Handles conditions in the form of strings, arrays, or objects.
90
+ *
91
+ * @param condition - The condition that might contain placeholders.
92
+ * @param user - The user object containing values like `id`.
93
+ * @returns The condition with placeholders replaced by actual values.
94
+ */
95
+ private replacePlaceholders;
96
+ /**
97
+ * Retrieves the list of fields to omit based on the user's role.
98
+ * It checks the field configurations stored in `fieldConfigs` and compares them against the role.
99
+ *
100
+ * @param modelName - The name of the model being queried.
101
+ * @param role - The role of the user making the request.
102
+ * @returns An array of field names to be omitted from the query.
103
+ */
104
+ private getFieldsToOmit;
105
+ /**
106
+ * Builds the `select` object for Prisma queries, omitting fields based on the user's role.
107
+ * It handles both scalar fields and relation fields.
108
+ *
109
+ * @param modelName - The name of the model being queried.
110
+ * @param omitFields - A list of fields to omit based on the user's role.
111
+ * @param includeRelations - The relations to include in the query.
112
+ * @param userRole - The role of the user making the request.
113
+ * @returns A `select` object for Prisma queries.
114
+ */
115
+ private buildSelectFields;
116
+ /**
117
+ * Retrieves the related model's name for a given relation field.
118
+ * This is used to navigate relations between models when constructing the `select` object.
119
+ *
120
+ * @param parentModelName - The name of the parent model.
121
+ * @param relationKey - The key of the relation field.
122
+ * @returns The name of the related model.
123
+ * @throws Error if the relation field is not found in the parent model.
124
+ */
125
+ private getRelatedModelName;
126
+ }
127
+ export {};
128
+ //# sourceMappingURL=prisma.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma.service.d.ts","sourceRoot":"","sources":["../../src/prisma/prisma.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yCAAyC,CAAC;AAI9E,OAAO,KAAK,EAAC,YAAY,IAAI,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAElE,KAAK,QAAQ,GAAG,MAAM,aAAa,CAAC;AAEpC,qBACa,aAAa;IAOY,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANpE,OAAO,CAAC,YAAY,CAA2B;IAC/C,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,UAAU,CAAc;gBAG5B,YAAY,EAAE,YAAY,EACqB,iBAAiB,EAAE,qBAAqB;IAO3F,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC;IAIpE,WAAW;IA4CX;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAYhE,IAAI,KAAK,IAAI,aAAa,CAUzB;IAED,IAAI,IAAI,QAEP;IAED,IAAI,OAAO,QAEV;IAED;;;OAGG;IACH,WAAW;IASX;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAsD9B,OAAO,CAAC,YAAY;IAKpB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,IAAI,2BAA2B,QAM9B;IAED;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAmG5B,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;;;;IAoCzD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;CAgB9B"}