@aristid/leav-types 0.0.7-e9aa834 → 0.0.7-e9c61db6

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 (77) hide show
  1. package/apps/core/config/default.d.ts +4 -1
  2. package/apps/core/config/test.d.ts +1 -0
  3. package/apps/core/src/__tests__/e2e/api/joinLibraries/joinLibraries.test.d.ts +1 -0
  4. package/apps/core/src/__tests__/mockers/amqp.d.ts +8 -0
  5. package/apps/core/src/__tests__/mockers/logger.d.ts +7 -0
  6. package/apps/core/src/__tests__/mocks/actionsList.d.ts +6 -0
  7. package/apps/core/src/__tests__/mocks/attribute.d.ts +6 -2
  8. package/apps/core/src/__tests__/mocks/cache.d.ts +4 -0
  9. package/apps/core/src/__tests__/mocks/view.d.ts +1 -0
  10. package/apps/core/src/_constants/attributes.d.ts +1 -0
  11. package/apps/core/src/_constants/globalSettings.d.ts +1 -0
  12. package/apps/core/src/_types/actionsList.d.ts +2 -1
  13. package/apps/core/src/_types/attribute.d.ts +10 -2
  14. package/apps/core/src/_types/config.d.ts +5 -1
  15. package/apps/core/src/_types/errors.d.ts +3 -1
  16. package/apps/core/src/_types/forms.d.ts +10 -0
  17. package/apps/core/src/_types/globalSettings.d.ts +3 -0
  18. package/apps/core/src/_types/library.d.ts +5 -1
  19. package/apps/core/src/_types/queryInfos.d.ts +1 -1
  20. package/apps/core/src/_types/tree.d.ts +1 -0
  21. package/apps/core/src/_types/value.d.ts +64 -3
  22. package/apps/core/src/_types/views.d.ts +38 -43
  23. package/apps/core/src/app/application/applicationApp.d.ts +3 -1
  24. package/apps/core/src/app/auth/authApp.d.ts +3 -1
  25. package/apps/core/src/app/core/formApp/formApp.d.ts +3 -1
  26. package/apps/core/src/app/core/viewApp.d.ts +3 -1
  27. package/apps/core/src/domain/attribute/attributeDomain.d.ts +2 -0
  28. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.d.ts +11 -0
  29. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.spec.d.ts +1 -0
  30. package/apps/core/src/domain/attribute/helpers/index.d.ts +1 -0
  31. package/apps/core/src/domain/export/exportDomain.d.ts +8 -2
  32. package/apps/core/src/domain/globalSettings/globalSettingsDomain.d.ts +5 -1
  33. package/apps/core/src/domain/helpers/calculationVariable/index.d.ts +2 -1
  34. package/apps/core/src/domain/permission/_types.d.ts +1 -9
  35. package/apps/core/src/domain/permission/helpers/globalPermission.d.ts +1 -1
  36. package/apps/core/src/domain/permission/helpers/permissionByUserGroups.d.ts +22 -4
  37. package/apps/core/src/domain/permission/helpers/reducePermissionsArray.d.ts +1 -1
  38. package/apps/core/src/domain/record/_types.d.ts +4 -3
  39. package/apps/core/src/domain/record/helpers/createRecord.d.ts +21 -0
  40. package/apps/core/src/domain/record/helpers/deleteRecord.d.ts +19 -0
  41. package/apps/core/src/domain/record/helpers/getAccessPermissionFilters.d.ts +24 -0
  42. package/apps/core/src/domain/record/helpers/index.d.ts +3 -0
  43. package/apps/core/src/domain/record/recordDomain.d.ts +26 -3
  44. package/apps/core/src/domain/value/helpers/{canSaveValue.d.ts → canSaveRecordValue.d.ts} +3 -3
  45. package/apps/core/src/domain/value/helpers/isEmptyValue.d.ts +5 -0
  46. package/apps/core/src/domain/value/helpers/prepareValue.d.ts +3 -3
  47. package/apps/core/src/domain/value/helpers/saveOneValue.d.ts +2 -2
  48. package/apps/core/src/domain/value/helpers/validateValue.d.ts +4 -4
  49. package/apps/core/src/domain/value/valueDomain.d.ts +11 -4
  50. package/apps/core/src/domain/view/viewDomain.d.ts +1 -0
  51. package/apps/core/src/errors/ApplicationError.d.ts +1 -1
  52. package/apps/core/src/errors/LeavError.d.ts +9 -3
  53. package/apps/core/src/infra/attributeTypes/attributeAdvancedLinkRepo.d.ts +5 -2
  54. package/apps/core/src/infra/attributeTypes/attributeAdvancedRepo.d.ts +3 -1
  55. package/apps/core/src/infra/attributeTypes/attributeSimpleLinkRepo.d.ts +5 -2
  56. package/apps/core/src/infra/attributeTypes/attributeSimpleRepo.d.ts +3 -1
  57. package/apps/core/src/infra/attributeTypes/attributeTreeRepo.d.ts +3 -1
  58. package/apps/core/src/infra/attributeTypes/attributeTypesRepo.d.ts +29 -23
  59. package/apps/core/src/infra/attributeTypes/helpers/getConditionPart.d.ts +1 -1
  60. package/apps/core/src/infra/db/dbUtils.d.ts +1 -3
  61. package/apps/core/src/infra/db/migrations/005-viewSortToArray.d.ts +7 -0
  62. package/apps/core/src/infra/db/migrations/006-addRequiredAttributeProperty.d.ts +11 -0
  63. package/apps/core/src/infra/db/migrations/007-updateHexColor.d.ts +9 -0
  64. package/apps/core/src/infra/db/migrations/008-addSkeletonApp.d.ts +7 -0
  65. package/apps/core/src/infra/db/migrations/009-addDisplayMultiLinkOptAttributeProperty.d.ts +11 -0
  66. package/apps/core/src/infra/db/migrations/010-formSidePanel.d.ts +8 -0
  67. package/apps/core/src/infra/db/migrations/011-moveSkeletonApptoAppStudio.d.ts +7 -0
  68. package/apps/core/src/infra/oidc/oidcClientService.d.ts +3 -1
  69. package/apps/core/src/infra/permission/permissionRepo.d.ts +9 -1
  70. package/apps/core/src/infra/record/recordRepo.d.ts +2 -0
  71. package/apps/core/src/infra/tree/treeRepo.d.ts +1 -1
  72. package/apps/core/src/infra/value/valueRepo.d.ts +10 -5
  73. package/apps/core/src/infra/view/_types.d.ts +1 -0
  74. package/apps/core/src/pluginsLoader.d.ts +1 -1
  75. package/apps/core/src/utils/utils.d.ts +1 -0
  76. package/libs/utils/src/types/forms.d.ts +7 -1
  77. package/package.json +19 -4
@@ -0,0 +1 @@
1
+ export { default as ifLibraryJoinLinkAttribute } from './ifLibraryJoinLinkAttribute';
@@ -19,12 +19,18 @@ export interface IExportParams {
19
19
  }
20
20
  export interface IExportDomain {
21
21
  exportExcel(params: IExportParams, task?: ITaskFuncParams): Promise<string>;
22
- exportData(jsonMapping: string, elements: Array<{
22
+ exportData(mapping: IExportMapping, elements: Array<{
23
23
  [libraryId: string]: string;
24
24
  }>, ctx: IQueryInfos): Promise<Array<{
25
- [mappingKey: string]: string;
25
+ [key: string]: any;
26
26
  }>>;
27
27
  }
28
+ export interface IExportMapping {
29
+ [key: string]: {
30
+ attribute: string;
31
+ rawValue?: boolean;
32
+ };
33
+ }
28
34
  export interface IExportDomainDeps {
29
35
  'core.domain.record': IRecordDomain;
30
36
  'core.domain.attribute': IAttributeDomain;
@@ -3,6 +3,8 @@ import { IAdminPermissionDomain } from 'domain/permission/adminPermissionDomain'
3
3
  import { IGlobalSettingsRepo } from 'infra/globalSettings/globalSettingsRepo';
4
4
  import { IGlobalSettings } from '_types/globalSettings';
5
5
  import { IQueryInfos } from '_types/queryInfos';
6
+ import { IUtils } from '../../utils/utils';
7
+ import { ICachesService } from '../../infra/cache/cacheService';
6
8
  export interface IGlobalSettingsDomain {
7
9
  saveSettings({ settings, ctx }: {
8
10
  settings: IGlobalSettings;
@@ -14,5 +16,7 @@ export interface IGlobalSettingsDomainDeps {
14
16
  'core.domain.permission.admin': IAdminPermissionDomain;
15
17
  'core.domain.eventsManager': IEventsManagerDomain;
16
18
  'core.infra.globalSettings': IGlobalSettingsRepo;
19
+ 'core.infra.cache.cacheService': ICachesService;
20
+ 'core.utils': IUtils;
17
21
  }
18
- export default function ({ 'core.domain.permission.admin': adminPermissionDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.infra.globalSettings': globalSettingsRepo }: IGlobalSettingsDomainDeps): IGlobalSettingsDomain;
22
+ export default function ({ 'core.domain.permission.admin': adminPermissionDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.infra.globalSettings': globalSettingsRepo, 'core.infra.cache.cacheService': cacheService, 'core.utils': utils }: IGlobalSettingsDomainDeps): IGlobalSettingsDomain;
@@ -1,12 +1,13 @@
1
1
  import { ActionsListValueType, IActionsListContext } from '_types/actionsList';
2
2
  import { IVariableFunctions } from '../calculationsVariableFunctions';
3
+ import { ITreeNode } from '../../../_types/tree';
3
4
  interface IDeps {
4
5
  'core.domain.helpers.calculationsVariableFunctions': IVariableFunctions;
5
6
  }
6
7
  export interface IVariableValue {
7
8
  recordId: string;
8
9
  library: string;
9
- payload: string | number | boolean | Record<string, any>;
10
+ payload: string | number | boolean | ITreeNode | Record<string, any>;
10
11
  raw_payload?: string | number | boolean | Record<string, any>;
11
12
  }
12
13
  export interface ICalculationVariable {
@@ -28,14 +28,6 @@ export interface IGetPermissionsByActionsParams {
28
28
  export type PermByActionsRes = {
29
29
  [name: string]: boolean | null;
30
30
  } | null;
31
- export interface IGetPermissionByUserGroupsParams {
32
- type: PermissionTypes;
33
- action: PermissionsActions;
34
- userGroupsPaths: TreePaths[];
35
- applyTo?: string;
36
- permissionTreeTarget?: IPermissionsTreeTarget;
37
- ctx: IQueryInfos;
38
- }
39
31
  export interface IGetAdminPermissionParams {
40
32
  action: AdminPermissionsActions;
41
33
  userId: string;
@@ -63,7 +55,7 @@ export interface IGetTreeLibraryPermissionParams {
63
55
  treeId: string;
64
56
  libraryId: string;
65
57
  userId: string;
66
- getDefaultPermission?: (params?: IGetDefaultTreeLibraryPermissionParams) => boolean | null;
58
+ getDefaultPermission?: (params?: IGetDefaultTreeLibraryPermissionParams) => Promise<boolean> | boolean;
67
59
  ctx: IQueryInfos;
68
60
  }
69
61
  export interface IGetApplicationPermissionParams {
@@ -12,7 +12,7 @@ interface IGetGlobalPermissionParams {
12
12
  applyTo?: string;
13
13
  userId: string;
14
14
  action: PermissionsActions;
15
- getDefaultPermission?: (params?: IGetDefaultGlobalPermissionParams) => boolean;
15
+ getDefaultPermission?: (params?: IGetDefaultGlobalPermissionParams) => Promise<boolean> | boolean;
16
16
  }
17
17
  interface IGetInheritedGlobalPermissionParams {
18
18
  type: PermissionTypes;
@@ -1,14 +1,32 @@
1
1
  import { IPermissionRepo } from 'infra/permission/permissionRepo';
2
- import { IGetPermissionByUserGroupsParams } from '../_types';
3
2
  import { IReducePermissionsArrayHelper } from './reducePermissionsArray';
4
3
  import { ISimplePermissionHelper } from './simplePermission';
5
- interface IDeps {
4
+ import { IDefaultPermissionHelper } from './defaultPermission';
5
+ import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
6
+ import { ITreeNode, TreePaths } from '../../../_types/tree';
7
+ import { PermissionsActions, PermissionTypes } from '../../../_types/permissions';
8
+ import { IQueryInfos } from '../../../_types/queryInfos';
9
+ export interface IPermissionByUserGroupsHelperDeps {
6
10
  'core.domain.permission.helpers.simplePermission': ISimplePermissionHelper;
7
11
  'core.domain.permission.helpers.reducePermissionsArray': IReducePermissionsArrayHelper;
12
+ 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
13
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
8
14
  'core.infra.permission'?: IPermissionRepo;
9
15
  }
16
+ interface IGetPermissionByUserGroupsParams {
17
+ type: PermissionTypes;
18
+ action: PermissionsActions;
19
+ userGroupsPaths: TreePaths[];
20
+ applyTo?: string;
21
+ treeTarget?: {
22
+ tree: string;
23
+ path: ITreeNode[];
24
+ };
25
+ getDefaultPermission?: () => Promise<boolean> | boolean;
26
+ ctx: IQueryInfos;
27
+ }
10
28
  export interface IPermissionByUserGroupsHelper {
11
- getPermissionByUserGroups: (params: IGetPermissionByUserGroupsParams) => Promise<boolean | null>;
29
+ getPermissionByUserGroups: (params: IGetPermissionByUserGroupsParams) => Promise<boolean>;
12
30
  }
13
- export default function (deps: IDeps): IPermissionByUserGroupsHelper;
31
+ export default function (deps: IPermissionByUserGroupsHelperDeps): IPermissionByUserGroupsHelper;
14
32
  export {};
@@ -1,4 +1,4 @@
1
1
  export interface IReducePermissionsArrayHelper {
2
- reducePermissionsArray: (permissions: Array<boolean | null>) => boolean | null;
2
+ reducePermissionsArray: (permissions: boolean[]) => boolean;
3
3
  }
4
4
  export default function (): IReducePermissionsArrayHelper;
@@ -1,4 +1,5 @@
1
1
  import { ErrorTypes } from '@leav/utils';
2
+ import { Errors } from '_types/errors';
2
3
  import { ICursorPaginationParams, IPaginationParams } from '_types/list';
3
4
  import { IRecord, IRecordFilterLight, IRecordSortLight } from '_types/record';
4
5
  import { IValue, IValuesOptions, IValueVersion } from '_types/value';
@@ -11,6 +12,7 @@ export interface IFindRecordParams {
11
12
  withCount?: boolean;
12
13
  retrieveInactive?: boolean;
13
14
  fulltextSearch?: string;
15
+ ignorePermissions?: boolean;
14
16
  }
15
17
  export interface ICreateRecordParams {
16
18
  library: string;
@@ -20,10 +22,9 @@ export interface ICreateRecordParams {
20
22
  };
21
23
  }
22
24
  export interface ICreateRecordValueError {
23
- attributeId: string;
24
- type: ErrorTypes;
25
+ attribute: string;
26
+ type: ErrorTypes | Errors;
25
27
  message: string;
26
- id_value?: string;
27
28
  input?: any;
28
29
  }
29
30
  export interface ICreateRecordResult {
@@ -0,0 +1,21 @@
1
+ import { IEventsManagerDomain } from 'domain/eventsManager/eventsManagerDomain';
2
+ import { ILibraryPermissionDomain } from 'domain/permission/libraryPermissionDomain';
3
+ import { IRecordRepo } from 'infra/record/recordRepo';
4
+ import { IQueryInfos } from '../../../_types/queryInfos';
5
+ import { ICreateRecordResult, ICreateRecordValueError } from '../_types';
6
+ export type IPreCreateRecordCallback = () => Promise<ICreateRecordValueError[]>;
7
+ export type CreateRecordHelper = (params: {
8
+ library: string;
9
+ /**
10
+ * Can be use to validate potential values to post create insert to record
11
+ */
12
+ preCreateCallback?: IPreCreateRecordCallback;
13
+ ctx: IQueryInfos;
14
+ }) => Promise<ICreateRecordResult>;
15
+ interface IDeps {
16
+ 'core.domain.eventsManager': IEventsManagerDomain;
17
+ 'core.domain.permission.library': ILibraryPermissionDomain;
18
+ 'core.infra.record': IRecordRepo;
19
+ }
20
+ export default function ({ 'core.domain.eventsManager': eventsManager, 'core.domain.permission.library': libraryPermissionDomain, 'core.infra.record': recordRepo }: IDeps): CreateRecordHelper;
21
+ export {};
@@ -0,0 +1,19 @@
1
+ import { IEventsManagerDomain } from 'domain/eventsManager/eventsManagerDomain';
2
+ import { IQueryInfos } from '../../../_types/queryInfos';
3
+ import { IRecordPermissionDomain } from 'domain/permission/recordPermissionDomain';
4
+ import { IValidateHelper } from 'domain/helpers/validate';
5
+ import { IRecordRepo } from 'infra/record/recordRepo';
6
+ import { ITreeRepo } from 'infra/tree/treeRepo';
7
+ import { IValueRepo } from 'infra/value/valueRepo';
8
+ import { IRecord } from '../../../_types/record';
9
+ export type DeleteRecordHelper = (library: string, id: string, ctx: IQueryInfos) => Promise<IRecord>;
10
+ interface IDeps {
11
+ 'core.domain.helpers.validate': IValidateHelper;
12
+ 'core.domain.eventsManager': IEventsManagerDomain;
13
+ 'core.domain.permission.record': IRecordPermissionDomain;
14
+ 'core.infra.record': IRecordRepo;
15
+ 'core.infra.tree': ITreeRepo;
16
+ 'core.infra.value': IValueRepo;
17
+ }
18
+ export default function ({ 'core.domain.eventsManager': eventsManager, 'core.domain.helpers.validate': validateHelper, 'core.domain.permission.record': recordPermissionDomain, 'core.infra.record': recordRepo, 'core.infra.tree': treeRepo, 'core.infra.value': valueRepo }: IDeps): DeleteRecordHelper;
19
+ export {};
@@ -0,0 +1,24 @@
1
+ import { IAttribute } from '_types/attribute';
2
+ import { IQueryInfos } from '_types/queryInfos';
3
+ import { ITreeNode } from '_types/tree';
4
+ import { GetCoreEntityByIdFunc } from 'domain/helpers/getCoreEntityById';
5
+ import { IPermissionRepo } from 'infra/permission/permissionRepo';
6
+ import { ITreeRepo } from 'infra/tree/treeRepo';
7
+ import { IDefaultPermissionHelper } from 'domain/permission/helpers/defaultPermission';
8
+ interface IAccessPermissionFilterDeps {
9
+ 'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
10
+ 'core.infra.tree': ITreeRepo;
11
+ 'core.infra.permission': IPermissionRepo;
12
+ 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
13
+ }
14
+ export interface IGetAccessPermissionsValue {
15
+ treeId: string;
16
+ attribute: IAttribute;
17
+ permissions: {
18
+ true: Array<ITreeNode['id']>;
19
+ false: Array<ITreeNode['id']>;
20
+ };
21
+ }
22
+ export type IGetAccessPermissions = (groupsIds: string[][], library: string, deps: IAccessPermissionFilterDeps, ctx: IQueryInfos) => Promise<IGetAccessPermissionsValue[]>;
23
+ declare const getAccessPermissionsFilters: IGetAccessPermissions;
24
+ export default getAccessPermissionsFilters;
@@ -1 +1,4 @@
1
+ export { default as createRecord } from './createRecord';
2
+ export { default as deleteRecord } from './deleteRecord';
1
3
  export { default as sendRecordUpdateEvent } from './sendRecordUpdateEvent';
4
+ export { default as getAccessPermissionFilters } from './getAccessPermissionFilters';
@@ -11,7 +11,7 @@ import { IValueRepo } from 'infra/value/valueRepo';
11
11
  import { IUtils } from 'utils/utils';
12
12
  import * as Config from '_types/config';
13
13
  import { IListWithCursor } from '_types/list';
14
- import { IValue, IValuesOptions } from '_types/value';
14
+ import { ISaveValue, IValue, IValuesOptions } from '_types/value';
15
15
  import { ICachesService } from '../../infra/cache/cacheService';
16
16
  import { IQueryInfos } from '../../_types/queryInfos';
17
17
  import { IRecord, IRecordFilterLight, IRecordIdentity } from '../../_types/record';
@@ -19,10 +19,19 @@ import { IAttributeDomain } from '../attribute/attributeDomain';
19
19
  import { IRecordPermissionDomain } from '../permission/recordPermissionDomain';
20
20
  import { SendRecordUpdateEventHelper } from './helpers/sendRecordUpdateEvent';
21
21
  import { ICreateRecordResult, IFindRecordParams } from './_types';
22
+ import { IFormRepo } from 'infra/form/formRepo';
23
+ import { IRecordAttributePermissionDomain } from '../permission/recordAttributePermissionDomain';
24
+ import { IAttributePermissionDomain } from '../permission/attributePermissionDomain';
25
+ import { IPermissionRepo } from '../../infra/permission/permissionRepo';
26
+ import { IDefaultPermissionHelper } from 'domain/permission/helpers/defaultPermission';
27
+ import { DeleteRecordHelper } from './helpers/deleteRecord';
28
+ import { CreateRecordHelper } from './helpers/createRecord';
29
+ import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
22
30
  export interface IRecordDomain {
23
31
  createRecord(params: {
24
32
  library: string;
25
- values?: IValue[];
33
+ values?: ISaveValue[];
34
+ verifyRequiredAttributes?: boolean;
26
35
  ctx: IQueryInfos;
27
36
  }): Promise<ICreateRecordResult>;
28
37
  /**
@@ -76,6 +85,12 @@ export interface IRecordDomain {
76
85
  filters?: IRecordFilterLight[];
77
86
  ctx: IQueryInfos;
78
87
  }): Promise<IRecord[]>;
88
+ activateRecordsBatch(params: {
89
+ libraryId: string;
90
+ recordsIds?: string[];
91
+ filters?: IRecordFilterLight[];
92
+ ctx: IQueryInfos;
93
+ }): Promise<IRecord[]>;
79
94
  purgeInactiveRecords(params: {
80
95
  libraryId: string;
81
96
  ctx: IQueryInfos;
@@ -88,15 +103,23 @@ export interface IRecordDomainDeps {
88
103
  'core.domain.value': IValueDomain;
89
104
  'core.domain.permission.record': IRecordPermissionDomain;
90
105
  'core.domain.permission.library': ILibraryPermissionDomain;
106
+ 'core.domain.permission.attribute': IAttributePermissionDomain;
107
+ 'core.domain.permission.recordAttribute': IRecordAttributePermissionDomain;
108
+ 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
91
109
  'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
92
110
  'core.domain.helpers.validate': IValidateHelper;
111
+ 'core.domain.record.helpers.createRecord': CreateRecordHelper;
112
+ 'core.domain.record.helpers.deleteRecord': DeleteRecordHelper;
93
113
  'core.domain.record.helpers.sendRecordUpdateEvent': SendRecordUpdateEventHelper;
94
114
  'core.infra.library': ILibraryRepo;
95
115
  'core.infra.tree': ITreeRepo;
116
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
96
117
  'core.infra.value': IValueRepo;
118
+ 'core.infra.form': IFormRepo;
119
+ 'core.infra.permission': IPermissionRepo;
97
120
  'core.domain.eventsManager': IEventsManagerDomain;
98
121
  'core.infra.cache.cacheService': ICachesService;
99
122
  'core.utils': IUtils;
100
123
  translator: i18n;
101
124
  }
102
- export default function ({ config, 'core.infra.record': recordRepo, 'core.domain.attribute': attributeDomain, 'core.domain.value': valueDomain, 'core.domain.permission.record': recordPermissionDomain, 'core.domain.permission.library': libraryPermissionDomain, 'core.domain.helpers.getCoreEntityById': getCoreEntityById, 'core.domain.helpers.validate': validateHelper, 'core.domain.record.helpers.sendRecordUpdateEvent': sendRecordUpdateEvent, 'core.infra.library': libraryRepo, 'core.infra.tree': treeRepo, 'core.infra.value': valueRepo, 'core.domain.eventsManager': eventsManager, 'core.infra.cache.cacheService': cacheService, 'core.utils': utils, translator }: IRecordDomainDeps): IRecordDomain;
125
+ export default function ({ config, 'core.infra.record': recordRepo, 'core.domain.attribute': attributeDomain, 'core.domain.value': valueDomain, 'core.domain.permission.record': recordPermissionDomain, 'core.domain.permission.library': libraryPermissionDomain, 'core.domain.permission.attribute': attrPermissionDomain, 'core.domain.permission.recordAttribute': recordAttributePermissionDomain, 'core.domain.permission.helpers.defaultPermission': defaultPermHelper, 'core.domain.helpers.getCoreEntityById': getCoreEntityById, 'core.domain.helpers.validate': validateHelper, 'core.domain.record.helpers.createRecord': createRecordHelper, 'core.domain.record.helpers.deleteRecord': deleteRecordHelper, 'core.domain.record.helpers.sendRecordUpdateEvent': sendRecordUpdateEvent, 'core.infra.library': libraryRepo, 'core.infra.tree': treeRepo, 'core.domain.tree.helpers.elementAncestors': elementAncestorsHelper, 'core.infra.value': valueRepo, 'core.infra.form': formRepo, 'core.infra.permission': permissionRepo, 'core.domain.eventsManager': eventsManager, 'core.infra.cache.cacheService': cacheService, 'core.utils': utils, translator }: IRecordDomainDeps): IRecordDomain;
@@ -6,12 +6,12 @@ import { IQueryInfos } from '_types/queryInfos';
6
6
  import { IValue } from '_types/value';
7
7
  import { ErrorFieldDetail, Errors } from '../../../_types/errors';
8
8
  import { RecordAttributePermissionsActions, RecordPermissionsActions } from '../../../_types/permissions';
9
- interface ICanSaveValueRes {
9
+ interface ICanSaveRecordValueRes {
10
10
  canSave: boolean;
11
11
  reason?: RecordAttributePermissionsActions | RecordPermissionsActions | Errors;
12
12
  fields?: ErrorFieldDetail<IValue>;
13
13
  }
14
- interface ICanSaveValueParams {
14
+ interface ICanSaveRecordValueParams {
15
15
  attributeProps: IAttribute;
16
16
  value: IValue;
17
17
  library: string;
@@ -24,5 +24,5 @@ interface ICanSaveValueParams {
24
24
  config: IConfig;
25
25
  };
26
26
  }
27
- declare const _default: (params: ICanSaveValueParams) => Promise<ICanSaveValueRes>;
27
+ declare const _default: (params: ICanSaveRecordValueParams) => Promise<ICanSaveRecordValueRes>;
28
28
  export default _default;
@@ -0,0 +1,5 @@
1
+ import { IValue, EmptyValue } from '_types/value';
2
+ declare const _default: (value: IValue) => value is IValue & {
3
+ payload: EmptyValue;
4
+ };
5
+ export default _default;
@@ -3,10 +3,10 @@ import { IAttributeDomain } from 'domain/attribute/attributeDomain';
3
3
  import { IUtils } from 'utils/utils';
4
4
  import { IAttribute } from '_types/attribute';
5
5
  import { IQueryInfos } from '_types/queryInfos';
6
- import { IValue } from '_types/value';
6
+ import { ISaveValue } from '_types/value';
7
7
  interface IPrepareValueParams {
8
8
  attributeProps: IAttribute;
9
- value: IValue;
9
+ value: ISaveValue;
10
10
  library: string;
11
11
  recordId: string;
12
12
  infos?: IQueryInfos;
@@ -18,5 +18,5 @@ interface IPrepareValueParams {
18
18
  };
19
19
  ctx: IQueryInfos;
20
20
  }
21
- declare const _default: (params: IPrepareValueParams) => Promise<IValue[]>;
21
+ declare const _default: (params: IPrepareValueParams) => Promise<ISaveValue[]>;
22
22
  export default _default;
@@ -7,7 +7,7 @@ import { ITreeRepo } from 'infra/tree/treeRepo';
7
7
  import { IValueRepo } from 'infra/value/valueRepo';
8
8
  import { IQueryInfos } from '_types/queryInfos';
9
9
  import { IAttribute } from '../../../_types/attribute';
10
- import { IValue } from '../../../_types/value';
10
+ import { ISaveValue, IValue } from '../../../_types/value';
11
11
  interface ISaveOneValueDeps {
12
12
  valueRepo: IValueRepo;
13
13
  recordRepo: IRecordRepo;
@@ -17,5 +17,5 @@ interface ISaveOneValueDeps {
17
17
  attributeDomain: IAttributeDomain;
18
18
  versionProfileDomain: IVersionProfileDomain;
19
19
  }
20
- declare const _default: (library: string, recordId: string, attribute: IAttribute, value: IValue, deps: ISaveOneValueDeps, ctx: IQueryInfos) => Promise<IValue>;
20
+ declare const _default: (library: string, recordId: string, attribute: IAttribute, value: ISaveValue, deps: ISaveOneValueDeps, ctx: IQueryInfos) => Promise<IValue>;
21
21
  export default _default;
@@ -5,12 +5,12 @@ import { IValueRepo } from 'infra/value/valueRepo';
5
5
  import { IAttribute } from '../../../_types/attribute';
6
6
  import { ErrorFieldDetail } from '../../../_types/errors';
7
7
  import { IQueryInfos } from '../../../_types/queryInfos';
8
- import { IValue } from '../../../_types/value';
8
+ import { ISaveValue } from '../../../_types/value';
9
9
  interface IValidateValueParams {
10
10
  attributeProps: IAttribute;
11
- value: IValue;
11
+ value: ISaveValue;
12
12
  library: string;
13
- recordId: string;
13
+ recordId?: string;
14
14
  infos?: IQueryInfos;
15
15
  keepEmpty: boolean;
16
16
  deps: {
@@ -21,5 +21,5 @@ interface IValidateValueParams {
21
21
  };
22
22
  ctx: IQueryInfos;
23
23
  }
24
- declare const _default: (params: IValidateValueParams) => Promise<ErrorFieldDetail<IValue>>;
24
+ declare const _default: (params: IValidateValueParams) => Promise<ErrorFieldDetail<ISaveValue>>;
25
25
  export default _default;
@@ -14,13 +14,16 @@ import * as Config from '_types/config';
14
14
  import { IRecord } from '_types/record';
15
15
  import { IAttribute } from '../../_types/attribute';
16
16
  import { IQueryInfos } from '../../_types/queryInfos';
17
- import { IValue, IValuesOptions } from '../../_types/value';
17
+ import { ISaveValue, IValue, IValuesOptions } from '../../_types/value';
18
18
  import { IActionsListDomain } from '../actionsList/actionsListDomain';
19
19
  import { IAttributeDomain } from '../attribute/attributeDomain';
20
20
  import { IValidateHelper } from '../helpers/validate';
21
21
  import { IRecordAttributePermissionDomain } from '../permission/recordAttributePermissionDomain';
22
22
  import { IRecordPermissionDomain } from '../permission/recordPermissionDomain';
23
23
  import { IDeleteValueParams, IRunActionListParams } from './_types';
24
+ import { DeleteRecordHelper } from 'domain/record/helpers/deleteRecord';
25
+ import { CreateRecordHelper } from 'domain/record/helpers/createRecord';
26
+ import { IfLibraryJoinLinkAttribute } from '../attribute/helpers/ifLibraryJoinLinkAttribute';
24
27
  export interface ISaveBatchValueError {
25
28
  type: string;
26
29
  message: string;
@@ -58,7 +61,7 @@ export interface IValueDomain {
58
61
  library: string;
59
62
  recordId: string;
60
63
  attribute: string;
61
- value: IValue;
64
+ value: ISaveValue;
62
65
  ctx: IQueryInfos;
63
66
  }): Promise<IValue[]>;
64
67
  /**
@@ -70,9 +73,10 @@ export interface IValueDomain {
70
73
  saveValueBatch(params: {
71
74
  library: string;
72
75
  recordId: string;
73
- values: IValue[];
76
+ values: ISaveValue[];
74
77
  ctx: IQueryInfos;
75
78
  keepEmpty?: boolean;
79
+ skipPermission?: boolean;
76
80
  }): Promise<ISaveBatchValueResult>;
77
81
  deleteValue(params: IDeleteValueParams): Promise<IValue[]>;
78
82
  formatValue(params: {
@@ -101,6 +105,9 @@ export interface IValueDomainDeps {
101
105
  'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
102
106
  'core.domain.tree.helpers.getDefaultElement': IGetDefaultElementHelper;
103
107
  'core.domain.record.helpers.sendRecordUpdateEvent': SendRecordUpdateEventHelper;
108
+ 'core.domain.record.helpers.createRecord': CreateRecordHelper;
109
+ 'core.domain.record.helpers.deleteRecord': DeleteRecordHelper;
110
+ 'core.domain.attribute.helpers.ifLibraryJoinLinkAttribute': IfLibraryJoinLinkAttribute;
104
111
  'core.domain.versionProfile': IVersionProfileDomain;
105
112
  'core.infra.record': IRecordRepo;
106
113
  'core.infra.tree': ITreeRepo;
@@ -109,5 +116,5 @@ export interface IValueDomainDeps {
109
116
  'core.utils.logger': winston.Winston;
110
117
  'core.domain.tree': ITreeDomain;
111
118
  }
112
- declare const valueDomain: ({ config, "core.domain.actionsList": actionsListDomain, "core.domain.attribute": attributeDomain, "core.domain.permission.recordAttribute": recordAttributePermissionDomain, "core.domain.permission.record": recordPermissionDomain, "core.domain.eventsManager": eventsManager, "core.domain.helpers.validate": validate, "core.domain.helpers.updateRecordLastModif": updateRecordLastModif, "core.domain.tree.helpers.elementAncestors": elementAncestors, "core.domain.tree.helpers.getDefaultElement": getDefaultElementHelper, "core.domain.record.helpers.sendRecordUpdateEvent": sendRecordUpdateEvent, "core.domain.versionProfile": versionProfileDomain, "core.infra.record": recordRepo, "core.infra.tree": treeRepo, "core.infra.value": valueRepo, "core.utils": utils, "core.utils.logger": logger }: IValueDomainDeps) => IValueDomain;
119
+ declare const valueDomain: ({ config, "core.domain.actionsList": actionsListDomain, "core.domain.attribute": attributeDomain, "core.domain.permission.recordAttribute": recordAttributePermissionDomain, "core.domain.permission.record": recordPermissionDomain, "core.domain.eventsManager": eventsManager, "core.domain.helpers.validate": validate, "core.domain.helpers.updateRecordLastModif": updateRecordLastModif, "core.domain.tree.helpers.elementAncestors": elementAncestors, "core.domain.tree.helpers.getDefaultElement": getDefaultElementHelper, "core.domain.record.helpers.sendRecordUpdateEvent": sendRecordUpdateEvent, "core.domain.record.helpers.createRecord": createRecordHelper, "core.domain.record.helpers.deleteRecord": deleteRecordHelper, "core.domain.attribute.helpers.ifLibraryJoinLinkAttribute": ifLibraryJoinLinkAttribute, "core.domain.versionProfile": versionProfileDomain, "core.infra.record": recordRepo, "core.infra.tree": treeRepo, "core.infra.value": valueRepo, "core.utils": utils, "core.utils.logger": logger }: IValueDomainDeps) => IValueDomain;
113
120
  export default valueDomain;
@@ -4,6 +4,7 @@ import { IViewRepo } from 'infra/view/_types';
4
4
  import { IUtils } from 'utils/utils';
5
5
  import { IList } from '_types/list';
6
6
  import { IQueryInfos } from '_types/queryInfos';
7
+ import { IView } from '_types/views';
7
8
  export interface IViewDomain {
8
9
  saveView(view: IView, ctx: IQueryInfos): Promise<IView>;
9
10
  getViews(library: string, ctx: IQueryInfos): Promise<IList<IView>>;
@@ -3,7 +3,7 @@ export declare enum ApplicationErrorType {
3
3
  UNKNOWN_APP_ERROR = "unknown_app",
4
4
  FORBIDDEN_ERROR = "forbidden"
5
5
  }
6
- export default class ApplicationError extends LeavError<{}> {
6
+ export default class ApplicationError extends LeavError<{}, ApplicationErrorType> {
7
7
  applicationErrorType: ApplicationErrorType;
8
8
  appEndpoint: string;
9
9
  statusCode: number;
@@ -7,13 +7,19 @@ interface ILeavErrorDetails {
7
7
  fields?: ErrorFieldDetail<any>;
8
8
  record?: ILeavErrorRecord;
9
9
  }
10
- export default class LeavError<T> extends Error {
10
+ export default class LeavError<T, E = ErrorTypes> extends Error {
11
11
  /**
12
12
  * Details about fields concerned by this permission
13
13
  */
14
14
  fields?: ErrorFieldDetail<T>;
15
- type: ErrorTypes;
15
+ type: E;
16
16
  record?: ILeavErrorRecord;
17
- constructor(type: ErrorTypes, message?: string, details?: ILeavErrorDetails);
17
+ /**
18
+ * Use this ID to identify the error in logs or for debugging purposes.
19
+ * It is generated using uuid v1, which includes a timestamp and a unique identifier.
20
+ * This allows for tracking the error across different systems and logs.
21
+ */
22
+ errorId: string;
23
+ constructor(type: E, message?: string, details?: ILeavErrorDetails);
18
24
  }
19
25
  export {};
@@ -1,16 +1,19 @@
1
1
  import { IFilterTypesHelper } from 'infra/record/helpers/filterTypes';
2
2
  import { IUtils } from 'utils/utils';
3
+ import { AttributeTypes } from '../../_types/attribute';
3
4
  import { IDbService } from '../db/dbService';
4
5
  import { IDbUtils } from '../db/dbUtils';
5
6
  import { IAttributeTypeRepo } from './attributeTypesRepo';
6
7
  import { GetConditionPart } from './helpers/getConditionPart';
8
+ import { IAttributeSimpleLinkRepo } from './attributeSimpleLinkRepo';
9
+ export type IAttributeAdvancedLinkRepo = IAttributeTypeRepo<AttributeTypes.ADVANCED_LINK>;
7
10
  interface IDeps {
8
11
  'core.infra.db.dbService'?: IDbService;
9
12
  'core.infra.db.dbUtils'?: IDbUtils;
10
- 'core.infra.attributeTypes.attributeSimpleLink'?: IAttributeTypeRepo;
13
+ 'core.infra.attributeTypes.attributeSimpleLink'?: IAttributeSimpleLinkRepo;
11
14
  'core.infra.attributeTypes.helpers.getConditionPart'?: GetConditionPart;
12
15
  'core.infra.record.helpers.filterTypes'?: IFilterTypesHelper;
13
16
  'core.utils'?: IUtils;
14
17
  }
15
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.attributeSimpleLink': attributeSimpleLinkRepo, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypes, 'core.utils': utils }?: IDeps): IAttributeTypeRepo;
18
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.attributeSimpleLink': attributeSimpleLinkRepo, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypes, 'core.utils': utils }?: IDeps): IAttributeAdvancedLinkRepo;
16
19
  export {};
@@ -1,5 +1,6 @@
1
1
  import { IDbUtils } from 'infra/db/dbUtils';
2
2
  import { IFilterTypesHelper } from 'infra/record/helpers/filterTypes';
3
+ import { AttributeTypes } from '../../_types/attribute';
3
4
  import { IDbService } from '../db/dbService';
4
5
  import { IAttributeTypeRepo } from './attributeTypesRepo';
5
6
  import { GetConditionPart } from './helpers/getConditionPart';
@@ -9,4 +10,5 @@ export interface IAttributeAdvancedRepoDeps {
9
10
  'core.infra.attributeTypes.helpers.getConditionPart': GetConditionPart;
10
11
  'core.infra.record.helpers.filterTypes': IFilterTypesHelper;
11
12
  }
12
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }: IAttributeAdvancedRepoDeps): IAttributeTypeRepo;
13
+ export type IAttributeAdvancedRepo = IAttributeTypeRepo<AttributeTypes.ADVANCED>;
14
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }: IAttributeAdvancedRepoDeps): IAttributeAdvancedRepo;
@@ -1,14 +1,17 @@
1
1
  import { IFilterTypesHelper } from 'infra/record/helpers/filterTypes';
2
+ import { AttributeTypes } from '../../_types/attribute';
2
3
  import { IDbService } from '../db/dbService';
3
4
  import { IDbUtils } from '../db/dbUtils';
4
5
  import { IAttributeTypeRepo } from './attributeTypesRepo';
5
6
  import { GetConditionPart } from './helpers/getConditionPart';
7
+ import { IAttributeSimpleRepo } from './attributeSimpleRepo';
6
8
  interface IDeps {
7
9
  'core.infra.db.dbService'?: IDbService;
8
10
  'core.infra.db.dbUtils'?: IDbUtils;
9
- 'core.infra.attributeTypes.attributeSimple'?: IAttributeTypeRepo;
11
+ 'core.infra.attributeTypes.attributeSimple'?: IAttributeSimpleRepo;
10
12
  'core.infra.attributeTypes.helpers.getConditionPart'?: GetConditionPart;
11
13
  'core.infra.record.helpers.filterTypes'?: IFilterTypesHelper;
12
14
  }
13
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.attributeSimple': attributeSimpleRepo, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }?: IDeps): IAttributeTypeRepo;
15
+ export type IAttributeSimpleLinkRepo = IAttributeTypeRepo<AttributeTypes.SIMPLE_LINK>;
16
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.attributeSimple': attributeSimpleRepo, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }?: IDeps): IAttributeSimpleLinkRepo;
14
17
  export {};
@@ -1,4 +1,5 @@
1
1
  import { IFilterTypesHelper } from 'infra/record/helpers/filterTypes';
2
+ import { AttributeTypes } from '../../_types/attribute';
2
3
  import { IDbService } from '../db/dbService';
3
4
  import { IAttributeTypeRepo } from './attributeTypesRepo';
4
5
  import { GetConditionPart } from './helpers/getConditionPart';
@@ -7,5 +8,6 @@ interface IDeps {
7
8
  'core.infra.attributeTypes.helpers.getConditionPart'?: GetConditionPart;
8
9
  'core.infra.record.helpers.filterTypes'?: IFilterTypesHelper;
9
10
  }
10
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }?: IDeps): IAttributeTypeRepo;
11
+ export type IAttributeSimpleRepo = IAttributeTypeRepo<AttributeTypes.SIMPLE>;
12
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypesHelper }?: IDeps): IAttributeSimpleRepo;
11
13
  export {};
@@ -1,5 +1,6 @@
1
1
  import { IFilterTypesHelper } from 'infra/record/helpers/filterTypes';
2
2
  import { IUtils } from 'utils/utils';
3
+ import { AttributeTypes } from '../../_types/attribute';
3
4
  import { IDbService } from '../db/dbService';
4
5
  import { IDbUtils } from '../db/dbUtils';
5
6
  import { IAttributeTypeRepo } from './attributeTypesRepo';
@@ -11,5 +12,6 @@ interface IDeps {
11
12
  'core.infra.record.helpers.filterTypes'?: IFilterTypesHelper;
12
13
  'core.utils'?: IUtils;
13
14
  }
14
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypes, 'core.utils': utils }?: IDeps): IAttributeTypeRepo;
15
+ export type IAttributeTreeRepo = IAttributeTypeRepo<AttributeTypes.TREE>;
16
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.db.dbUtils': dbUtils, 'core.infra.attributeTypes.helpers.getConditionPart': getConditionPart, 'core.infra.record.helpers.filterTypes': filterTypes, 'core.utils': utils }?: IDeps): IAttributeTreeRepo;
15
17
  export {};