identity-admin 1.28.6 → 1.28.8

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 (183) hide show
  1. package/README.md +294 -294
  2. package/lib/Dashboard.d.ts +14 -14
  3. package/lib/Dashboard.js +95 -95
  4. package/lib/container/helpers/HelperInversify.d.ts +6 -6
  5. package/lib/container/helpers/HelperInversify.js +10 -10
  6. package/lib/container/helpers/HelperTypes.d.ts +5 -5
  7. package/lib/container/helpers/HelperTypes.js +7 -7
  8. package/lib/container/index.d.ts +1 -1
  9. package/lib/container/index.js +14 -14
  10. package/lib/container/repositories/RepositoryInversify.d.ts +4 -4
  11. package/lib/container/repositories/RepositoryInversify.js +13 -13
  12. package/lib/container/repositories/RepositoryTypes.d.ts +4 -4
  13. package/lib/container/repositories/RepositoryTypes.js +6 -6
  14. package/lib/container/types.d.ts +8 -8
  15. package/lib/container/types.js +9 -9
  16. package/lib/controllers/ActionController.d.ts +9 -8
  17. package/lib/controllers/ActionController.js +136 -96
  18. package/lib/controllers/AdminNotificationController.d.ts +8 -8
  19. package/lib/controllers/AdminNotificationController.js +69 -69
  20. package/lib/controllers/DashboardController.d.ts +44 -44
  21. package/lib/controllers/DashboardController.js +787 -787
  22. package/lib/controllers/ResourceController.d.ts +15 -15
  23. package/lib/controllers/ResourceController.js +135 -135
  24. package/lib/helpers/ActionsGenerator.d.ts +11 -11
  25. package/lib/helpers/ActionsGenerator.js +179 -179
  26. package/lib/helpers/AdminNotifications/AdminNotificationCreation.d.ts +49 -49
  27. package/lib/helpers/AdminNotifications/AdminNotificationCreation.js +66 -66
  28. package/lib/helpers/AdminNotifications/AdminNotificationFetcher.d.ts +51 -51
  29. package/lib/helpers/AdminNotifications/AdminNotificationFetcher.js +39 -39
  30. package/lib/helpers/FilterQueryHelper.d.ts +9 -9
  31. package/lib/helpers/FilterQueryHelper.js +83 -83
  32. package/lib/helpers/FiltersHelper.d.ts +9 -9
  33. package/lib/helpers/FiltersHelper.js +126 -126
  34. package/lib/helpers/LocalesHelper.d.ts +4 -4
  35. package/lib/helpers/LocalesHelper.js +73 -73
  36. package/lib/helpers/LocalizedStringHelper.d.ts +11 -11
  37. package/lib/helpers/LocalizedStringHelper.js +74 -74
  38. package/lib/helpers/Permissions/PermissionFetcher.d.ts +8 -8
  39. package/lib/helpers/Permissions/PermissionFetcher.js +95 -95
  40. package/lib/helpers/Permissions/PermissionLabel.d.ts +2 -2
  41. package/lib/helpers/Permissions/PermissionLabel.js +42 -42
  42. package/lib/helpers/Permissions/PermissionMapper.d.ts +13 -13
  43. package/lib/helpers/Permissions/PermissionMapper.js +35 -35
  44. package/lib/helpers/Permissions/PermissionResource.d.ts +6 -6
  45. package/lib/helpers/Permissions/PermissionResource.js +62 -62
  46. package/lib/helpers/Permissions/PermissionSavingService.d.ts +13 -13
  47. package/lib/helpers/Permissions/PermissionSavingService.js +32 -32
  48. package/lib/helpers/Permissions/SavePermissionGroup.d.ts +6 -6
  49. package/lib/helpers/Permissions/SavePermissionGroup.js +32 -32
  50. package/lib/helpers/Permissions/UpdatePermissionGroup.d.ts +6 -6
  51. package/lib/helpers/Permissions/UpdatePermissionGroup.js +50 -50
  52. package/lib/helpers/Permissions/types.d.ts +17 -17
  53. package/lib/helpers/Permissions/types.js +2 -2
  54. package/lib/helpers/PopulationHelper.d.ts +12 -12
  55. package/lib/helpers/PopulationHelper.js +50 -50
  56. package/lib/helpers/RecordsCounter.d.ts +10 -10
  57. package/lib/helpers/RecordsCounter.js +33 -33
  58. package/lib/helpers/ReportsGenerator.d.ts +26 -26
  59. package/lib/helpers/ReportsGenerator.js +162 -162
  60. package/lib/helpers/ResourceGenerator.d.ts +9 -9
  61. package/lib/helpers/ResourceGenerator.js +172 -172
  62. package/lib/helpers/ResourceHelper.d.ts +28 -28
  63. package/lib/helpers/ResourceHelper.js +395 -395
  64. package/lib/helpers/RportsGenerator.d.ts +10 -10
  65. package/lib/helpers/RportsGenerator.js +21 -21
  66. package/lib/helpers/SchemaGenerator.d.ts +7 -7
  67. package/lib/helpers/SchemaGenerator.js +132 -130
  68. package/lib/helpers/SchemaHelper.d.ts +5 -5
  69. package/lib/helpers/SchemaHelper.js +21 -21
  70. package/lib/helpers/UserActionsLog/UserActionsLogHelper.d.ts +2 -2
  71. package/lib/helpers/UserActionsLog/UserActionsLogHelper.js +49 -49
  72. package/lib/locales/en.json +53 -53
  73. package/lib/middlewares/cache/decorator.d.ts +3 -3
  74. package/lib/middlewares/cache/decorator.js +60 -60
  75. package/lib/middlewares/cache/deletionMethods.d.ts +3 -3
  76. package/lib/middlewares/cache/deletionMethods.js +23 -23
  77. package/lib/middlewares/isAuth.d.ts +13 -13
  78. package/lib/middlewares/isAuth.js +43 -43
  79. package/lib/models/ModelNames.d.ts +10 -9
  80. package/lib/models/ModelNames.js +13 -12
  81. package/lib/models/adminNotification/AdminNotification.d.ts +5 -5
  82. package/lib/models/adminNotification/AdminNotification.js +53 -53
  83. package/lib/models/adminNotification/IAdminNotification.d.ts +30 -30
  84. package/lib/models/adminNotification/IAdminNotification.js +15 -15
  85. package/lib/models/adminpermission/AdminPermission.d.ts +11 -11
  86. package/lib/models/adminpermission/AdminPermission.js +23 -23
  87. package/lib/models/adminpermission/IAdminPermission.d.ts +13 -13
  88. package/lib/models/adminpermission/IAdminPermission.js +2 -2
  89. package/lib/models/customPage/CustomPage.d.ts +2 -2
  90. package/lib/models/customPage/CustomPage.js +38 -38
  91. package/lib/models/customPage/ICustomPage.d.ts +17 -17
  92. package/lib/models/customPage/ICustomPage.js +2 -2
  93. package/lib/models/file/File.d.ts +2 -2
  94. package/lib/models/file/File.js +23 -23
  95. package/lib/models/file/IFile.d.ts +15 -15
  96. package/lib/models/file/IFile.js +2 -2
  97. package/lib/models/location/ILocation.d.ts +14 -14
  98. package/lib/models/location/ILocation.js +2 -2
  99. package/lib/models/location/Location.d.ts +2 -2
  100. package/lib/models/location/Location.js +21 -21
  101. package/lib/models/mailLog/IMailLog.d.ts +14 -0
  102. package/lib/models/mailLog/IMailLog.js +2 -0
  103. package/lib/models/mailLog/MailLog.d.ts +3 -0
  104. package/lib/models/mailLog/MailLog.js +23 -0
  105. package/lib/models/modelConfiguration/IModelConfigurations.d.ts +29 -29
  106. package/lib/models/modelConfiguration/IModelConfigurations.js +2 -2
  107. package/lib/models/modelConfiguration/ModelConfiguration.d.ts +13 -13
  108. package/lib/models/modelConfiguration/ModelConfiguration.js +95 -95
  109. package/lib/models/permission/IPermission.d.ts +14 -14
  110. package/lib/models/permission/IPermission.js +2 -2
  111. package/lib/models/permission/Permission.d.ts +2 -2
  112. package/lib/models/permission/Permission.js +21 -21
  113. package/lib/models/request-log/IRequestLog.d.ts +22 -22
  114. package/lib/models/request-log/IRequestLog.js +2 -2
  115. package/lib/models/request-log/RequestLog.d.ts +3 -3
  116. package/lib/models/request-log/RequestLog.js +51 -51
  117. package/lib/models/userActionsLog/IUserActionsLog.d.ts +26 -26
  118. package/lib/models/userActionsLog/IUserActionsLog.js +11 -11
  119. package/lib/models/userActionsLog/UserActionsLog.d.ts +3 -3
  120. package/lib/models/userActionsLog/UserActionsLog.js +41 -41
  121. package/lib/pdf/ReportTemplate.d.ts +71 -71
  122. package/lib/pdf/ReportTemplate.js +94 -94
  123. package/lib/repositories/AdminNotificationRepository.d.ts +7 -7
  124. package/lib/repositories/AdminNotificationRepository.js +23 -23
  125. package/lib/repositories/DashboardRepository.d.ts +5 -5
  126. package/lib/repositories/DashboardRepository.js +12 -12
  127. package/lib/repositories/Repository.d.ts +68 -68
  128. package/lib/repositories/Repository.js +215 -215
  129. package/lib/repositories/RequestLogRepository.d.ts +10 -10
  130. package/lib/repositories/RequestLogRepository.js +54 -54
  131. package/lib/repositories/SaveResult.d.ts +14 -14
  132. package/lib/repositories/SaveResult.js +18 -18
  133. package/lib/resources/AdminNotificationsResource.d.ts +3 -3
  134. package/lib/resources/AdminNotificationsResource.js +23 -23
  135. package/lib/resources/parents.d.ts +4 -4
  136. package/lib/resources/parents.js +7 -7
  137. package/lib/router/index.d.ts +8 -8
  138. package/lib/router/index.js +104 -104
  139. package/lib/types/DashbordConfig.d.ts +21 -21
  140. package/lib/types/DashbordConfig.js +2 -2
  141. package/lib/types/IConfigurationFile.d.ts +11 -11
  142. package/lib/types/IConfigurationFile.js +2 -2
  143. package/lib/types/IResourceFile.d.ts +719 -710
  144. package/lib/types/IResourceFile.js +2 -2
  145. package/lib/types/IResourceResponse.d.ts +95 -95
  146. package/lib/types/IResourceResponse.js +2 -2
  147. package/lib/types/helpers.d.ts +67 -67
  148. package/lib/types/helpers.js +82 -82
  149. package/lib/utils/DateUtils.d.ts +7 -7
  150. package/lib/utils/DateUtils.js +45 -45
  151. package/lib/utils/ResourceUtils.d.ts +2 -2
  152. package/lib/utils/ResourceUtils.js +7 -7
  153. package/lib/utils/ResponseUtils.d.ts +11 -11
  154. package/lib/utils/ResponseUtils.js +41 -41
  155. package/lib/utils/StringUtils.d.ts +9 -9
  156. package/lib/utils/StringUtils.js +46 -46
  157. package/lib/view/asset-manifest.json +18 -18
  158. package/lib/view/assets/icons/delete_icon.svg +3 -3
  159. package/lib/view/assets/icons/flags/ic_flag_cn.svg +9 -9
  160. package/lib/view/assets/icons/flags/ic_flag_sa.svg +9 -9
  161. package/lib/view/assets/icons/flags/ic_flag_vn.svg +9 -9
  162. package/lib/view/assets/icons/info_icon.svg +3 -3
  163. package/lib/view/assets/icons/navbar/ic_banking.svg +5 -5
  164. package/lib/view/assets/icons/navbar/ic_invoice.svg +4 -4
  165. package/lib/view/assets/icons/navbar/ic_kanban.svg +7 -7
  166. package/lib/view/assets/icons/navbar/ic_menu_item.svg +8 -8
  167. package/lib/view/assets/icons/small_info_icon.svg +3 -3
  168. package/lib/view/assets/illustrations/Group 16.svg +4 -4
  169. package/lib/view/assets/illustrations/logo.svg +5 -5
  170. package/lib/view/favicon/browserconfig.xml +9 -9
  171. package/lib/view/favicon/safari-pinned-tab.svg +182 -182
  172. package/lib/view/favicon/site.webmanifest +19 -19
  173. package/lib/view/fonts/index.css +18 -18
  174. package/lib/view/index.html +52 -52
  175. package/lib/view/manifest.json +20 -20
  176. package/lib/view/robots.txt +3 -3
  177. package/lib/view/static/css/main.54de06ef.css +1 -1
  178. package/lib/view/static/js/574.778b5963.chunk.js +1 -1
  179. package/lib/view/static/js/678.521704a3.chunk.js +1 -1
  180. package/lib/view/static/js/798.54856416.chunk.js +1 -1
  181. package/lib/view/static/js/main.4687f255.js +2 -2
  182. package/lib/view/static/js/main.4687f255.js.LICENSE.txt +214 -214
  183. package/package.json +63 -63
@@ -1,51 +1,51 @@
1
- /// <reference types="mongoose" />
2
- /// <reference types="mongoose" />
3
- /// <reference types="mongoose" />
4
- /// <reference types="mongoose" />
5
- /// <reference types="mongoose" />
6
- /// <reference types="mongoose" />
7
- /// <reference types="mongoose" />
8
- /// <reference types="mongoose" />
9
- /// <reference types="mongoose" />
10
- /// <reference types="mongoose" />
11
- /// <reference types="mongoose" />
12
- /// <reference types="mongoose" />
13
- /// <reference types="mongoose" />
14
- /// <reference types="mongoose" />
15
- /// <reference types="mongoose" />
16
- /// <reference types="mongoose" />
17
- /// <reference types="mongoose" />
18
- /// <reference types="mongoose" />
19
- /// <reference types="mongoose" />
20
- /// <reference types="mongoose" />
21
- /// <reference types="mongoose" />
22
- /// <reference types="mongoose" />
23
- /// <reference types="mongoose" />
24
- /// <reference types="mongoose" />
25
- /// <reference types="passport-local-mongoose" />
26
- /// <reference types="mongoose" />
27
- import { AdminNotificationNavigationType, AdminNotificationTypePriority } from '../../models/adminNotification/IAdminNotification';
28
- export interface IMappedAdminNotification {
29
- id: string;
30
- text: string;
31
- createdAt: Date;
32
- clickable: boolean;
33
- redirectUrl?: string;
34
- redirectUrlType: AdminNotificationNavigationType;
35
- isRead: boolean;
36
- priority: AdminNotificationTypePriority;
37
- type?: string;
38
- }
39
- export declare class AdminNotificationFetcher {
40
- static fetchNotifications(): Promise<{
41
- id: import("mongoose").Types.ObjectId;
42
- text: string;
43
- createdAt: Date;
44
- clickable: boolean;
45
- redirectUrl: String | undefined;
46
- redirectUrlType: AdminNotificationNavigationType | undefined;
47
- isRead: boolean | undefined;
48
- priority: AdminNotificationTypePriority | undefined;
49
- type: string | undefined;
50
- }[]>;
51
- }
1
+ /// <reference types="mongoose" />
2
+ /// <reference types="mongoose" />
3
+ /// <reference types="mongoose" />
4
+ /// <reference types="mongoose" />
5
+ /// <reference types="mongoose" />
6
+ /// <reference types="mongoose" />
7
+ /// <reference types="mongoose" />
8
+ /// <reference types="mongoose" />
9
+ /// <reference types="mongoose" />
10
+ /// <reference types="mongoose" />
11
+ /// <reference types="mongoose" />
12
+ /// <reference types="mongoose" />
13
+ /// <reference types="mongoose" />
14
+ /// <reference types="mongoose" />
15
+ /// <reference types="mongoose" />
16
+ /// <reference types="mongoose" />
17
+ /// <reference types="mongoose" />
18
+ /// <reference types="mongoose" />
19
+ /// <reference types="mongoose" />
20
+ /// <reference types="mongoose" />
21
+ /// <reference types="mongoose" />
22
+ /// <reference types="mongoose" />
23
+ /// <reference types="mongoose" />
24
+ /// <reference types="mongoose" />
25
+ /// <reference types="passport-local-mongoose" />
26
+ /// <reference types="mongoose" />
27
+ import { AdminNotificationNavigationType, AdminNotificationTypePriority } from '../../models/adminNotification/IAdminNotification';
28
+ export interface IMappedAdminNotification {
29
+ id: string;
30
+ text: string;
31
+ createdAt: Date;
32
+ clickable: boolean;
33
+ redirectUrl?: string;
34
+ redirectUrlType: AdminNotificationNavigationType;
35
+ isRead: boolean;
36
+ priority: AdminNotificationTypePriority;
37
+ type?: string;
38
+ }
39
+ export declare class AdminNotificationFetcher {
40
+ static fetchNotifications(): Promise<{
41
+ id: import("mongoose").Types.ObjectId;
42
+ text: string;
43
+ createdAt: Date;
44
+ clickable: boolean;
45
+ redirectUrl: String | undefined;
46
+ redirectUrlType: AdminNotificationNavigationType | undefined;
47
+ isRead: boolean | undefined;
48
+ priority: AdminNotificationTypePriority | undefined;
49
+ type: string | undefined;
50
+ }[]>;
51
+ }
@@ -1,39 +1,39 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.AdminNotificationFetcher = void 0;
16
- const AdminNotification_1 = __importDefault(require("../../models/adminNotification/AdminNotification"));
17
- const IAdminNotification_1 = require("../../models/adminNotification/IAdminNotification");
18
- class AdminNotificationFetcher {
19
- static fetchNotifications() {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- const notifications = yield AdminNotification_1.default.find({ isRead: false }).sort({ createdAt: -1 });
22
- const mappedNotifications = notifications.map((notification) => {
23
- return {
24
- id: notification._id,
25
- text: notification.title,
26
- createdAt: notification.createdAt,
27
- clickable: notification.redirectUrlType === IAdminNotification_1.AdminNotificationNavigationType.NONE ? false : true,
28
- redirectUrl: notification.redirectUrl,
29
- redirectUrlType: notification.redirectUrlType,
30
- isRead: notification.isRead,
31
- priority: notification.priority,
32
- type: notification.type,
33
- };
34
- });
35
- return mappedNotifications;
36
- });
37
- }
38
- }
39
- exports.AdminNotificationFetcher = AdminNotificationFetcher;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AdminNotificationFetcher = void 0;
16
+ const AdminNotification_1 = __importDefault(require("../../models/adminNotification/AdminNotification"));
17
+ const IAdminNotification_1 = require("../../models/adminNotification/IAdminNotification");
18
+ class AdminNotificationFetcher {
19
+ static fetchNotifications() {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const notifications = yield AdminNotification_1.default.find({ isRead: false }).sort({ createdAt: -1 });
22
+ const mappedNotifications = notifications.map((notification) => {
23
+ return {
24
+ id: notification._id,
25
+ text: notification.title,
26
+ createdAt: notification.createdAt,
27
+ clickable: notification.redirectUrlType === IAdminNotification_1.AdminNotificationNavigationType.NONE ? false : true,
28
+ redirectUrl: notification.redirectUrl,
29
+ redirectUrlType: notification.redirectUrlType,
30
+ isRead: notification.isRead,
31
+ priority: notification.priority,
32
+ type: notification.type,
33
+ };
34
+ });
35
+ return mappedNotifications;
36
+ });
37
+ }
38
+ }
39
+ exports.AdminNotificationFetcher = AdminNotificationFetcher;
@@ -1,9 +1,9 @@
1
- import { IRequest } from '../middlewares/isAuth';
2
- import { IResourceFile } from '../types/IResourceFile';
3
- import { IModelConfigurationDocument } from '../models/modelConfiguration/IModelConfigurations';
4
- export declare class FilterQueryHelper {
5
- static getFilter(req: IRequest, resource: IResourceFile, modelConfigurations?: Map<string, IModelConfigurationDocument> | undefined): Promise<{
6
- [key: string]: any;
7
- } | undefined>;
8
- private static getSearchableSubStringFilter;
9
- }
1
+ import { IRequest } from '../middlewares/isAuth';
2
+ import { IResourceFile } from '../types/IResourceFile';
3
+ import { IModelConfigurationDocument } from '../models/modelConfiguration/IModelConfigurations';
4
+ export declare class FilterQueryHelper {
5
+ static getFilter(req: IRequest, resource: IResourceFile, modelConfigurations?: Map<string, IModelConfigurationDocument> | undefined): Promise<{
6
+ [key: string]: any;
7
+ } | undefined>;
8
+ private static getSearchableSubStringFilter;
9
+ }
@@ -1,83 +1,83 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.FilterQueryHelper = void 0;
16
- const mongoose_1 = __importDefault(require("mongoose"));
17
- const FiltersHelper_1 = __importDefault(require("./FiltersHelper"));
18
- const LocalizedStringHelper_1 = __importDefault(require("./LocalizedStringHelper"));
19
- const ResourceHelper_1 = __importDefault(require("./ResourceHelper"));
20
- class FilterQueryHelper {
21
- static getFilter(req, resource, modelConfigurations) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const searchableSubString = req.query.filter ? new RegExp(req.query.filter, 'i') : undefined;
24
- const scope = req.query.scope;
25
- const currentUser = req.user;
26
- const filtersQuery = req.query.filters;
27
- const filters = filtersQuery ? filtersQuery.split('^^') : undefined;
28
- if (!resource) {
29
- return;
30
- }
31
- if (!currentUser) {
32
- return;
33
- }
34
- const sort = req.query.order;
35
- const sortBy = req.query.orderBy;
36
- const sortQuery = {};
37
- sortQuery[sortBy] = sort;
38
- if (sortBy !== '_id') {
39
- sortQuery._id = 'asc';
40
- }
41
- var filter = {};
42
- if (scope && resource.properties.filters && resource.properties.filters.scopes && resource.properties.filters.scopes.isAccessible) {
43
- if (resource.properties.filters.scopes.manual) {
44
- filter = yield resource.properties.filters.scopes.manual.handler(filter, scope, currentUser);
45
- }
46
- else if (resource.properties.filters.scopes.auto) {
47
- const key = resource.properties.filters.scopes.auto.key;
48
- if (key) {
49
- filter[key] = scope;
50
- }
51
- }
52
- }
53
- if (searchableSubString) {
54
- filter = this.getSearchableSubStringFilter(resource, filter, searchableSubString, modelConfigurations);
55
- }
56
- filter = yield FiltersHelper_1.default.appendFilters(filter, filters, resource);
57
- const crudOperations = resource.properties.crudOperations;
58
- if (crudOperations && crudOperations.index && crudOperations.index.before) {
59
- filter = yield crudOperations.index.before(req, filter, currentUser);
60
- }
61
- return filter;
62
- });
63
- }
64
- static getSearchableSubStringFilter(resource, filter, subString, modelConfigurations) {
65
- const schema = resource.properties.resource.schema.paths;
66
- const searchBy = ResourceHelper_1.default.getSchemaTitle(schema, resource, modelConfigurations === null || modelConfigurations === void 0 ? void 0 : modelConfigurations.get(resource.properties.modelName));
67
- if (searchBy === '_id') {
68
- if (!mongoose_1.default.isValidObjectId(subString.source)) {
69
- return filter;
70
- }
71
- filter[searchBy] = subString.source;
72
- return filter;
73
- }
74
- if (LocalizedStringHelper_1.default.checkLocalizedStringType(resource, searchBy)) {
75
- filter.$or = [LocalizedStringHelper_1.default.getFilterObject(searchBy, '0', subString), LocalizedStringHelper_1.default.getFilterObject(searchBy, '1', subString)];
76
- }
77
- else {
78
- filter[searchBy] = subString;
79
- }
80
- return filter;
81
- }
82
- }
83
- exports.FilterQueryHelper = FilterQueryHelper;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FilterQueryHelper = void 0;
16
+ const mongoose_1 = __importDefault(require("mongoose"));
17
+ const FiltersHelper_1 = __importDefault(require("./FiltersHelper"));
18
+ const LocalizedStringHelper_1 = __importDefault(require("./LocalizedStringHelper"));
19
+ const ResourceHelper_1 = __importDefault(require("./ResourceHelper"));
20
+ class FilterQueryHelper {
21
+ static getFilter(req, resource, modelConfigurations) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const searchableSubString = req.query.filter ? new RegExp(req.query.filter, 'i') : undefined;
24
+ const scope = req.query.scope;
25
+ const currentUser = req.user;
26
+ const filtersQuery = req.query.filters;
27
+ const filters = filtersQuery ? filtersQuery.split('^^') : undefined;
28
+ if (!resource) {
29
+ return;
30
+ }
31
+ if (!currentUser) {
32
+ return;
33
+ }
34
+ const sort = req.query.order;
35
+ const sortBy = req.query.orderBy;
36
+ const sortQuery = {};
37
+ sortQuery[sortBy] = sort;
38
+ if (sortBy !== '_id') {
39
+ sortQuery._id = 'asc';
40
+ }
41
+ var filter = {};
42
+ if (scope && resource.properties.filters && resource.properties.filters.scopes && resource.properties.filters.scopes.isAccessible) {
43
+ if (resource.properties.filters.scopes.manual) {
44
+ filter = yield resource.properties.filters.scopes.manual.handler(filter, scope, currentUser);
45
+ }
46
+ else if (resource.properties.filters.scopes.auto) {
47
+ const key = resource.properties.filters.scopes.auto.key;
48
+ if (key) {
49
+ filter[key] = scope;
50
+ }
51
+ }
52
+ }
53
+ if (searchableSubString) {
54
+ filter = this.getSearchableSubStringFilter(resource, filter, searchableSubString, modelConfigurations);
55
+ }
56
+ filter = yield FiltersHelper_1.default.appendFilters(filter, filters, resource);
57
+ const crudOperations = resource.properties.crudOperations;
58
+ if (crudOperations && crudOperations.index && crudOperations.index.before) {
59
+ filter = yield crudOperations.index.before(req, filter, currentUser);
60
+ }
61
+ return filter;
62
+ });
63
+ }
64
+ static getSearchableSubStringFilter(resource, filter, subString, modelConfigurations) {
65
+ const schema = resource.properties.resource.schema.paths;
66
+ const searchBy = ResourceHelper_1.default.getSchemaTitle(schema, resource, modelConfigurations === null || modelConfigurations === void 0 ? void 0 : modelConfigurations.get(resource.properties.modelName));
67
+ if (searchBy === '_id') {
68
+ if (!mongoose_1.default.isValidObjectId(subString.source)) {
69
+ return filter;
70
+ }
71
+ filter[searchBy] = subString.source;
72
+ return filter;
73
+ }
74
+ if (LocalizedStringHelper_1.default.checkLocalizedStringType(resource, searchBy)) {
75
+ filter.$or = [LocalizedStringHelper_1.default.getFilterObject(searchBy, '0', subString), LocalizedStringHelper_1.default.getFilterObject(searchBy, '1', subString)];
76
+ }
77
+ else {
78
+ filter[searchBy] = subString;
79
+ }
80
+ return filter;
81
+ }
82
+ }
83
+ exports.FilterQueryHelper = FilterQueryHelper;
@@ -1,9 +1,9 @@
1
- import { IResourceFile } from '../types/IResourceFile';
2
- export default class FilterHelper {
3
- static appendFilters(filterQuery: {
4
- [key: string]: any;
5
- }, filters: string[] | undefined, resource?: IResourceFile): Promise<{
6
- [key: string]: any;
7
- }>;
8
- private static getVirtualFilter;
9
- }
1
+ import { IResourceFile } from '../types/IResourceFile';
2
+ export default class FilterHelper {
3
+ static appendFilters(filterQuery: {
4
+ [key: string]: any;
5
+ }, filters: string[] | undefined, resource?: IResourceFile): Promise<{
6
+ [key: string]: any;
7
+ }>;
8
+ private static getVirtualFilter;
9
+ }
@@ -1,126 +1,126 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const mongoose_1 = __importDefault(require("mongoose"));
16
- const helpers_1 = require("../types/helpers");
17
- const LocalizedStringHelper_1 = __importDefault(require("./LocalizedStringHelper"));
18
- var pluralize = require('pluralize');
19
- class FilterHelper {
20
- static appendFilters(filterQuery, filters, resource) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- if (!filters) {
23
- return filterQuery;
24
- }
25
- for (var i = 0; i < filters.length; i++) {
26
- const filter = filters[i];
27
- if (!filter || filter === '' || !filter.includes(';;')) {
28
- continue;
29
- }
30
- const filterQueryString = filter.split(';;');
31
- const fieldType = filterQueryString[1];
32
- if (fieldType === helpers_1.FieldTypes.NUMBER || fieldType === helpers_1.FieldTypes.DATE) {
33
- const rangeObject = filterQueryString[0].split(':');
34
- const fieldName = rangeObject[0];
35
- const fromToObject = rangeObject[1].split(',');
36
- const from = fromToObject[0].split('=')[1];
37
- const to = fromToObject[1].split('=')[1];
38
- var filterRange = {};
39
- if (from && from !== '' && from !== 'null') {
40
- filterRange.$gte = from;
41
- }
42
- if (to && to !== '' && to !== 'null') {
43
- filterRange.$lte = to;
44
- }
45
- if (filterRange.$lte || filterRange.$gte) {
46
- filterQuery[fieldName] = filterRange;
47
- }
48
- continue;
49
- }
50
- if (!filterQueryString[0] || !fieldType || !filterQueryString[0].includes('=')) {
51
- continue;
52
- }
53
- const splittedQueryString = filterQueryString[0].split('=');
54
- const key = splittedQueryString[0];
55
- const value = splittedQueryString[1].includes('%20') ? splittedQueryString[1].replace(/%20/g, ' ') : splittedQueryString[1];
56
- switch (fieldType) {
57
- case helpers_1.FieldTypes.OBJECTID:
58
- if (!mongoose_1.default.isValidObjectId(value)) {
59
- break;
60
- }
61
- filterQuery[key] = value;
62
- break;
63
- case helpers_1.FieldTypes.STRING:
64
- filterQuery[key] = new RegExp(value, 'i');
65
- break;
66
- case helpers_1.FieldTypes.LOCALIZEDSTRING:
67
- filterQuery.$or = [
68
- LocalizedStringHelper_1.default.getFilterObject(key, '0', new RegExp(value, 'i')),
69
- LocalizedStringHelper_1.default.getFilterObject(key, '1', new RegExp(value, 'i')),
70
- ];
71
- break;
72
- case helpers_1.FieldTypes.REFERENCE:
73
- if (value !== 'null' && value !== 'undefined') {
74
- filterQuery = yield this.getVirtualFilter(filterQuery, key, value, resource);
75
- }
76
- break;
77
- case helpers_1.FieldTypes.ENUM:
78
- if (value !== 'null' && value !== 'undefined') {
79
- const valueArray = value.split(',');
80
- if (valueArray.length > 1) {
81
- filterQuery[key] = {
82
- $in: value.split(','),
83
- };
84
- }
85
- else {
86
- filterQuery[key] = value;
87
- }
88
- }
89
- break;
90
- default:
91
- if (value !== 'null' && value !== 'undefined') {
92
- filterQuery[key] = value;
93
- }
94
- }
95
- }
96
- return filterQuery;
97
- });
98
- }
99
- static getVirtualFilter(filterQuery, key, value, resource) {
100
- return __awaiter(this, void 0, void 0, function* () {
101
- if (resource && resource.properties.model) {
102
- const virtuals = resource.properties.model.virtuals;
103
- if (virtuals && virtuals[key] && virtuals[key].showIn === helpers_1.Virtuals.FILTER && virtuals[key].handler) {
104
- const virtual = virtuals[key];
105
- filterQuery = yield virtual.handler(filterQuery, value);
106
- }
107
- else {
108
- const fieldProps = resource.properties.model[key];
109
- if (fieldProps && fieldProps.multipleInFilter) {
110
- filterQuery[key] = {
111
- $in: value.split(','),
112
- };
113
- }
114
- else {
115
- filterQuery[key] = value;
116
- }
117
- }
118
- }
119
- else {
120
- filterQuery[key] = value;
121
- }
122
- return filterQuery;
123
- });
124
- }
125
- }
126
- exports.default = FilterHelper;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const mongoose_1 = __importDefault(require("mongoose"));
16
+ const helpers_1 = require("../types/helpers");
17
+ const LocalizedStringHelper_1 = __importDefault(require("./LocalizedStringHelper"));
18
+ var pluralize = require('pluralize');
19
+ class FilterHelper {
20
+ static appendFilters(filterQuery, filters, resource) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ if (!filters) {
23
+ return filterQuery;
24
+ }
25
+ for (var i = 0; i < filters.length; i++) {
26
+ const filter = filters[i];
27
+ if (!filter || filter === '' || !filter.includes(';;')) {
28
+ continue;
29
+ }
30
+ const filterQueryString = filter.split(';;');
31
+ const fieldType = filterQueryString[1];
32
+ if (fieldType === helpers_1.FieldTypes.NUMBER || fieldType === helpers_1.FieldTypes.DATE) {
33
+ const rangeObject = filterQueryString[0].split(':');
34
+ const fieldName = rangeObject[0];
35
+ const fromToObject = rangeObject[1].split(',');
36
+ const from = fromToObject[0].split('=')[1];
37
+ const to = fromToObject[1].split('=')[1];
38
+ var filterRange = {};
39
+ if (from && from !== '' && from !== 'null') {
40
+ filterRange.$gte = from;
41
+ }
42
+ if (to && to !== '' && to !== 'null') {
43
+ filterRange.$lte = to;
44
+ }
45
+ if (filterRange.$lte || filterRange.$gte) {
46
+ filterQuery[fieldName] = filterRange;
47
+ }
48
+ continue;
49
+ }
50
+ if (!filterQueryString[0] || !fieldType || !filterQueryString[0].includes('=')) {
51
+ continue;
52
+ }
53
+ const splittedQueryString = filterQueryString[0].split('=');
54
+ const key = splittedQueryString[0];
55
+ const value = splittedQueryString[1].includes('%20') ? splittedQueryString[1].replace(/%20/g, ' ') : splittedQueryString[1];
56
+ switch (fieldType) {
57
+ case helpers_1.FieldTypes.OBJECTID:
58
+ if (!mongoose_1.default.isValidObjectId(value)) {
59
+ break;
60
+ }
61
+ filterQuery[key] = value;
62
+ break;
63
+ case helpers_1.FieldTypes.STRING:
64
+ filterQuery[key] = new RegExp(value, 'i');
65
+ break;
66
+ case helpers_1.FieldTypes.LOCALIZEDSTRING:
67
+ filterQuery.$or = [
68
+ LocalizedStringHelper_1.default.getFilterObject(key, '0', new RegExp(value, 'i')),
69
+ LocalizedStringHelper_1.default.getFilterObject(key, '1', new RegExp(value, 'i')),
70
+ ];
71
+ break;
72
+ case helpers_1.FieldTypes.REFERENCE:
73
+ if (value !== 'null' && value !== 'undefined') {
74
+ filterQuery = yield this.getVirtualFilter(filterQuery, key, value, resource);
75
+ }
76
+ break;
77
+ case helpers_1.FieldTypes.ENUM:
78
+ if (value !== 'null' && value !== 'undefined') {
79
+ const valueArray = value.split(',');
80
+ if (valueArray.length > 1) {
81
+ filterQuery[key] = {
82
+ $in: value.split(','),
83
+ };
84
+ }
85
+ else {
86
+ filterQuery[key] = value;
87
+ }
88
+ }
89
+ break;
90
+ default:
91
+ if (value !== 'null' && value !== 'undefined') {
92
+ filterQuery[key] = value;
93
+ }
94
+ }
95
+ }
96
+ return filterQuery;
97
+ });
98
+ }
99
+ static getVirtualFilter(filterQuery, key, value, resource) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ if (resource && resource.properties.model) {
102
+ const virtuals = resource.properties.model.virtuals;
103
+ if (virtuals && virtuals[key] && virtuals[key].showIn === helpers_1.Virtuals.FILTER && virtuals[key].handler) {
104
+ const virtual = virtuals[key];
105
+ filterQuery = yield virtual.handler(filterQuery, value);
106
+ }
107
+ else {
108
+ const fieldProps = resource.properties.model[key];
109
+ if (fieldProps && fieldProps.multipleInFilter) {
110
+ filterQuery[key] = {
111
+ $in: value.split(','),
112
+ };
113
+ }
114
+ else {
115
+ filterQuery[key] = value;
116
+ }
117
+ }
118
+ }
119
+ else {
120
+ filterQuery[key] = value;
121
+ }
122
+ return filterQuery;
123
+ });
124
+ }
125
+ }
126
+ exports.default = FilterHelper;