@aristid/leav-types 0.0.7-ba308d0 → 0.0.7-bb0341a0

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 (79) hide show
  1. package/apps/core/config/default.d.ts +1 -0
  2. package/apps/core/src/__tests__/e2e/api/getConditionPart/getConditionPart.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 +1 -1
  5. package/apps/core/src/__tests__/mockers/logger.d.ts +4 -4
  6. package/apps/core/src/_types/config.d.ts +1 -0
  7. package/apps/core/src/_types/dbProfiler.d.ts +20 -1
  8. package/apps/core/src/_types/forms.d.ts +11 -7
  9. package/apps/core/src/_types/permissions.d.ts +2 -1
  10. package/apps/core/src/_types/queryInfos.d.ts +5 -0
  11. package/apps/core/src/_types/record.d.ts +4 -4
  12. package/apps/core/src/_types/tree.d.ts +1 -1
  13. package/apps/core/src/_types/value.d.ts +64 -5
  14. package/apps/core/src/app/application/applicationApp.d.ts +3 -7
  15. package/apps/core/src/app/auth/authApp.d.ts +4 -5
  16. package/apps/core/src/app/core/actionListApp.d.ts +2 -4
  17. package/apps/core/src/app/core/apiKeyApp/apiKeyApp.d.ts +2 -4
  18. package/apps/core/src/app/core/attributeApp/attributeApp.d.ts +2 -5
  19. package/apps/core/src/app/core/coreApp.d.ts +2 -4
  20. package/apps/core/src/app/core/exportApp.d.ts +2 -4
  21. package/apps/core/src/app/core/filesManagerApp.d.ts +3 -5
  22. package/apps/core/src/app/core/formApp/_types.d.ts +10 -0
  23. package/apps/core/src/app/core/formApp/formApp.d.ts +4 -5
  24. package/apps/core/src/app/core/globalSettingsApp.d.ts +3 -6
  25. package/apps/core/src/app/core/importApp.d.ts +2 -4
  26. package/apps/core/src/app/core/libraryApp/libraryApp.d.ts +2 -5
  27. package/apps/core/src/app/core/logApp.d.ts +2 -4
  28. package/apps/core/src/app/core/permissionApp/permissionApp.d.ts +2 -4
  29. package/apps/core/src/app/core/pluginsApp.d.ts +2 -3
  30. package/apps/core/src/app/core/recordApp/recordApp.d.ts +2 -5
  31. package/apps/core/src/app/core/tasksManagerApp.d.ts +2 -3
  32. package/apps/core/src/app/core/treeApp/treeApp.d.ts +5 -6
  33. package/apps/core/src/app/core/userDataApp.d.ts +2 -4
  34. package/apps/core/src/app/core/valueApp.d.ts +2 -4
  35. package/apps/core/src/app/core/versionProfileApp/versionProfileApp.d.ts +2 -4
  36. package/apps/core/src/app/core/viewApp.d.ts +2 -4
  37. package/apps/core/src/app/endpoint/endpointApp.d.ts +3 -8
  38. package/apps/core/src/app/graphql/graphqlApp.d.ts +8 -0
  39. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.d.ts +11 -0
  40. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.spec.d.ts +1 -0
  41. package/apps/core/src/domain/attribute/helpers/index.d.ts +1 -0
  42. package/apps/core/src/domain/filesManager/helpers/handleFileSystemEvent/handleMoveEvent.d.ts +1 -1
  43. package/apps/core/src/domain/form/formDomain.d.ts +9 -1
  44. package/apps/core/src/domain/import/importDomain.d.ts +1 -1
  45. package/apps/core/src/domain/indexationManager/indexationManagerDomain.d.ts +4 -2
  46. package/apps/core/src/domain/permission/_types.d.ts +10 -2
  47. package/apps/core/src/domain/permission/helpers/globalPermission.d.ts +3 -12
  48. package/apps/core/src/domain/permission/helpers/permissionByUserGroups.d.ts +7 -7
  49. package/apps/core/src/domain/permission/helpers/treeBasedPermissions.d.ts +0 -4
  50. package/apps/core/src/domain/permission/recordPermissionDomain.d.ts +4 -1
  51. package/apps/core/src/domain/permission/treeNodePermissionDomain.d.ts +2 -2
  52. package/apps/core/src/domain/record/_types.d.ts +1 -0
  53. package/apps/core/src/domain/record/helpers/createRecord.d.ts +22 -0
  54. package/apps/core/src/domain/record/helpers/deleteRecord.d.ts +19 -0
  55. package/apps/core/src/domain/record/helpers/getAccessPermissionFilters.d.ts +1 -1
  56. package/apps/core/src/domain/record/helpers/index.d.ts +2 -0
  57. package/apps/core/src/domain/record/recordDomain.d.ts +18 -4
  58. package/apps/core/src/domain/tree/treeDomain.d.ts +2 -2
  59. package/apps/core/src/domain/value/helpers/prepareValue.d.ts +3 -3
  60. package/apps/core/src/domain/value/helpers/saveOneValue.d.ts +2 -2
  61. package/apps/core/src/domain/value/helpers/validateValue.d.ts +3 -3
  62. package/apps/core/src/domain/value/valueDomain.d.ts +10 -4
  63. package/apps/core/src/infra/attributeTypes/attributeAdvancedLinkRepo.d.ts +5 -2
  64. package/apps/core/src/infra/attributeTypes/attributeAdvancedRepo.d.ts +3 -1
  65. package/apps/core/src/infra/attributeTypes/attributeSimpleLinkRepo.d.ts +5 -2
  66. package/apps/core/src/infra/attributeTypes/attributeSimpleRepo.d.ts +3 -1
  67. package/apps/core/src/infra/attributeTypes/attributeTreeRepo.d.ts +3 -1
  68. package/apps/core/src/infra/attributeTypes/attributeTypesRepo.d.ts +27 -21
  69. package/apps/core/src/infra/db/migrations/011-moveSkeletonApptoAppStudio.d.ts +7 -0
  70. package/apps/core/src/infra/record/helpers/getSearchVariableName.d.ts +1 -1
  71. package/apps/core/src/infra/record/recordRepo.d.ts +9 -0
  72. package/apps/core/src/infra/tree/treeRepo.d.ts +3 -2
  73. package/apps/core/src/infra/value/valueRepo.d.ts +3 -3
  74. package/apps/core/src/interface/server.d.ts +7 -0
  75. package/apps/core/src/utils/dataloader.d.ts +8 -0
  76. package/apps/core/src/utils/helpers/getSystemQueryContext.d.ts +8 -0
  77. package/apps/core/src/utils/index.d.ts +1 -0
  78. package/libs/utils/src/types/forms.d.ts +2 -1
  79. package/package.json +5 -2
@@ -1,8 +1,6 @@
1
1
  import { IUserDomain } from '../../domain/user/userDomain';
2
- import { IAppGraphQLSchema } from '_types/graphql';
3
- export interface ICoreImportApp {
4
- getGraphQLSchema(): Promise<IAppGraphQLSchema>;
5
- }
2
+ import { IGraphqlAppModule } from 'app/graphql/graphqlApp';
3
+ export type ICoreImportApp = IGraphqlAppModule;
6
4
  interface IDeps {
7
5
  'core.domain.user': IUserDomain;
8
6
  }
@@ -3,10 +3,8 @@ import { IAttributeDomain } from 'domain/attribute/attributeDomain';
3
3
  import { IRecordDomain } from 'domain/record/recordDomain';
4
4
  import { IValueDomain } from 'domain/value/valueDomain';
5
5
  import { IUtils } from 'utils/utils';
6
- import { IAppGraphQLSchema } from '_types/graphql';
7
- export interface ICoreValueApp {
8
- getGraphQLSchema(): Promise<IAppGraphQLSchema>;
9
- }
6
+ import { IGraphqlAppModule } from 'app/graphql/graphqlApp';
7
+ export type ICoreValueApp = IGraphqlAppModule;
10
8
  interface IDeps {
11
9
  'core.domain.value': IValueDomain;
12
10
  'core.domain.attribute': IAttributeDomain;
@@ -1,9 +1,7 @@
1
1
  import { ITreeDomain } from 'domain/tree/treeDomain';
2
2
  import { IVersionProfileDomain } from 'domain/versionProfile/versionProfileDomain';
3
- import { IAppGraphQLSchema } from '_types/graphql';
4
- export interface ICoreVersionProfileApp {
5
- getGraphQLSchema(): Promise<IAppGraphQLSchema>;
6
- }
3
+ import { IGraphqlAppModule } from 'app/graphql/graphqlApp';
4
+ export type ICoreVersionProfileApp = IGraphqlAppModule;
7
5
  interface IDeps {
8
6
  'core.domain.versionProfile'?: IVersionProfileDomain;
9
7
  'core.domain.tree'?: ITreeDomain;
@@ -1,16 +1,14 @@
1
1
  import { IRecordDomain } from 'domain/record/recordDomain';
2
2
  import { IViewDomain } from 'domain/view/viewDomain';
3
3
  import { IUtils } from 'utils/utils';
4
- import { IAppGraphQLSchema } from '_types/graphql';
5
4
  import { IAttributeDomain } from 'domain/attribute/attributeDomain';
5
+ import { IGraphqlAppModule } from 'app/graphql/graphqlApp';
6
6
  interface IDeps {
7
7
  'core.domain.record': IRecordDomain;
8
8
  'core.domain.view': IViewDomain;
9
9
  'core.domain.attribute': IAttributeDomain;
10
10
  'core.utils': IUtils;
11
11
  }
12
- export interface IViewApp {
13
- getGraphQLSchema(): Promise<IAppGraphQLSchema>;
14
- }
12
+ export type IViewApp = IGraphqlAppModule;
15
13
  export default function ({ 'core.domain.view': viewDomain, 'core.domain.record': recordDomain, 'core.domain.attribute': attributeDomain, 'core.utils': utils }: IDeps): IViewApp;
16
14
  export {};
@@ -1,17 +1,12 @@
1
- import type { Express, RequestHandler } from 'express';
1
+ import type { RequestHandler } from 'express';
2
2
  import type { IAppModule } from '../../_types/shared';
3
3
  import type { ExpressAppMethod } from '../../_types/endpoint';
4
4
  import type { InitQueryContextFunc } from '../helpers/initQueryContext';
5
5
  import type { ValidateRequestTokenFunc } from '../helpers/validateRequestToken';
6
6
  import { IConfig } from '_types/config';
7
7
  import { IValueDomain } from 'domain/value/valueDomain';
8
- interface IEndpointApp extends IAppModule {
9
- /**
10
- * Method call automatically by the LEAV Core: server.ts
11
- * @param app Express instance, can be used to extend the app
12
- */
13
- registerRoute(app: Express): void;
14
- }
8
+ import { IServerRouteAppModule } from 'interface/server';
9
+ type IEndpointApp = IAppModule & IServerRouteAppModule;
15
10
  export interface IPluginRoute {
16
11
  path: string;
17
12
  method: ExpressAppMethod;
@@ -1,12 +1,20 @@
1
1
  import { AwilixContainer } from 'awilix';
2
2
  import { GraphQLResolveInfo, GraphQLSchema } from 'graphql';
3
3
  import { IUtils } from 'utils/utils';
4
+ import { IAppGraphQLSchema } from '_types/graphql';
4
5
  import { IAppModule } from '_types/shared';
5
6
  import { IQueryField } from '../../_types/record';
6
7
  export interface IGraphqlApp extends IAppModule {
8
+ /**
9
+ * Parse all registered GraphQL schemas and return a single schema
10
+ * Very costly operation, should be called only once at application startup
11
+ */
7
12
  getSchema(): Promise<GraphQLSchema>;
8
13
  getQueryFields(info: GraphQLResolveInfo): IQueryField[];
9
14
  }
15
+ export interface IGraphqlAppModule {
16
+ getGraphQLSchema(): Promise<IAppGraphQLSchema>;
17
+ }
10
18
  interface IDeps {
11
19
  'core.depsManager'?: AwilixContainer;
12
20
  'core.utils'?: IUtils;
@@ -0,0 +1,11 @@
1
+ import { IAttribute } from '../../../_types/attribute';
2
+ import { IQueryInfos } from '../../../_types/queryInfos';
3
+ import { IAttributeDomain } from 'domain/attribute/attributeDomain';
4
+ import { GetCoreEntityByIdFunc } from 'domain/helpers/getCoreEntityById';
5
+ export type IfLibraryJoinLinkAttributeCallback<R> = (joinLibId: string, joinAttributeProps: IAttribute) => Promise<R>;
6
+ export type IfLibraryJoinLinkAttribute = <R = unknown>(attributeProps: IAttribute, callback: IfLibraryJoinLinkAttributeCallback<R>, ctx: IQueryInfos) => Promise<R | void>;
7
+ export interface IIfLibraryJoinLinkDeps {
8
+ 'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
9
+ 'core.domain.attribute': IAttributeDomain;
10
+ }
11
+ export default function ({ 'core.domain.helpers.getCoreEntityById': getCoreEntityById, 'core.domain.attribute': attributeDomain }: IIfLibraryJoinLinkDeps): IfLibraryJoinLinkAttribute;
@@ -0,0 +1 @@
1
+ export { default as ifLibraryJoinLinkAttribute } from './ifLibraryJoinLinkAttribute';
@@ -1,4 +1,4 @@
1
1
  import { IQueryInfos } from '_types/queryInfos';
2
2
  import { IFileEventData } from '../../../../_types/filesManager';
3
3
  import { IHandleFileSystemEventDeps, IHandleFileSystemEventResources } from './_types';
4
- export declare const handleMoveEvent: (scanMsg: IFileEventData, { library }: IHandleFileSystemEventResources, deps: IHandleFileSystemEventDeps, ctx: IQueryInfos) => Promise<boolean>;
4
+ export declare const handleMoveEvent: (scanMsg: IFileEventData, { library }: IHandleFileSystemEventResources, deps: IHandleFileSystemEventDeps, ctx: IQueryInfos) => Promise<boolean | void>;
@@ -13,7 +13,7 @@ import winston from 'winston';
13
13
  import { IQueryInfos } from '_types/queryInfos';
14
14
  import { IGetCoreEntitiesParams } from '_types/shared';
15
15
  import { IValueVersion } from '_types/value';
16
- import { IForm, IRecordForm } from '../../_types/forms';
16
+ import { IForm, IFormElementValues, IRecordForm } from '../../_types/forms';
17
17
  import { IList } from '../../_types/list';
18
18
  export interface IFormDomain {
19
19
  getFormsByLib({ library, params, ctx }: {
@@ -28,6 +28,14 @@ export interface IFormDomain {
28
28
  version?: IValueVersion;
29
29
  ctx: IQueryInfos;
30
30
  }): Promise<IRecordForm>;
31
+ getRecordFormElementsValues(params: {
32
+ recordId: string;
33
+ libraryId: string;
34
+ formId: string;
35
+ version?: IValueVersion;
36
+ ctx: IQueryInfos;
37
+ elementIds: string[];
38
+ }): Promise<IFormElementValues[]>;
31
39
  getFormProperties({ library, id, ctx }: {
32
40
  library: string;
33
41
  id: string;
@@ -42,7 +42,7 @@ interface IImportConfigParams {
42
42
  forceNoTask?: boolean;
43
43
  }
44
44
  export interface IImportDomain {
45
- importConfig(params: IImportConfigParams, task?: ITaskFuncParams): Promise<string>;
45
+ importConfig(params: IImportConfigParams, task?: ITaskFuncParams): Promise<string | undefined>;
46
46
  importData(params: IImportDataParams, task?: ITaskFuncParams): Promise<string>;
47
47
  importExcel({ filename, sheets, startAt }: IImportExcelParams, ctx: IQueryInfos): Promise<string>;
48
48
  }
@@ -11,6 +11,7 @@ import * as Config from '_types/config';
11
11
  import { IQueryInfos } from '_types/queryInfos';
12
12
  import { IIndexationService } from '../../infra/indexation/indexationService';
13
13
  import { ITaskFuncParams } from '../../_types/tasksManager';
14
+ import { GetSystemQueryContext } from '../../utils/helpers/getSystemQueryContext';
14
15
  interface IIndexDatabaseParams {
15
16
  findRecordParams: IFindRecordParams | IFindRecordParams[];
16
17
  attributes?: {
@@ -22,7 +23,7 @@ interface IIndexDatabaseParams {
22
23
  }
23
24
  export interface IIndexationManagerDomain {
24
25
  init(): Promise<void>;
25
- indexDatabase(params: IIndexDatabaseParams, task?: ITaskFuncParams): Promise<string>;
26
+ indexDatabase(params: IIndexDatabaseParams, task?: ITaskFuncParams): Promise<void>;
26
27
  }
27
28
  export interface IIndexationManagerDomainDeps {
28
29
  config: Config.IConfig;
@@ -34,7 +35,8 @@ export interface IIndexationManagerDomainDeps {
34
35
  'core.domain.tasksManager': ITasksManagerDomain;
35
36
  'core.domain.eventsManager': IEventsManagerDomain;
36
37
  'core.utils.logger': winston.Winston;
38
+ 'core.utils.getSystemQueryContext': GetSystemQueryContext;
37
39
  translator: i18n;
38
40
  }
39
- export default function ({ config, 'core.infra.amqpService': amqpService, 'core.domain.record': recordDomain, 'core.domain.library': libraryDomain, 'core.domain.attribute': attributeDomain, 'core.domain.tasksManager': tasksManagerDomain, 'core.infra.indexation.indexationService': indexationService, 'core.domain.eventsManager': eventsManager, 'core.utils.logger': logger, translator }: IIndexationManagerDomainDeps): IIndexationManagerDomain;
41
+ export default function ({ config, 'core.infra.amqpService': amqpService, 'core.domain.record': recordDomain, 'core.domain.library': libraryDomain, 'core.domain.attribute': attributeDomain, 'core.domain.tasksManager': tasksManagerDomain, 'core.infra.indexation.indexationService': indexationService, 'core.domain.eventsManager': eventsManager, 'core.utils.logger': logger, 'core.utils.getSystemQueryContext': getSystemQueryContext, translator }: IIndexationManagerDomainDeps): IIndexationManagerDomain;
40
42
  export {};
@@ -1,6 +1,6 @@
1
1
  import { AdminPermissionsActions, ApplicationPermissionsActions, AttributePermissionsActions, IPermissionsTreeTarget, ITreePermissionsConf, LibraryPermissionsActions, PermissionsActions, PermissionTypes, RecordAttributePermissionsActions, RecordPermissionsActions, TreeNodePermissionsActions, TreePermissionsActions } from '_types/permissions';
2
2
  import { IQueryInfos } from '_types/queryInfos';
3
- import { TreePaths } from '_types/tree';
3
+ import { TreePath } from '_types/tree';
4
4
  export declare const PERMISSIONS_CACHE_HEADER = "permissions";
5
5
  export declare const PERMISSIONS_NULL_PLACEHOLDER = "__null__";
6
6
  export interface IPermissionTarget {
@@ -163,7 +163,7 @@ export interface IGetDefaultPermissionParams {
163
163
  action?: any;
164
164
  applyTo?: string;
165
165
  userId?: string;
166
- userGroups?: TreePaths[];
166
+ userGroups?: TreePath[];
167
167
  }
168
168
  export interface IGetTreeBasedPermissionParams {
169
169
  type: PermissionTypes;
@@ -199,3 +199,11 @@ export interface IGetInheritedRecordPermissionParams {
199
199
  permTreeNode: string;
200
200
  ctx: IQueryInfos;
201
201
  }
202
+ export interface IEstimateTreeValueRecordPermissionParams {
203
+ action: RecordPermissionsActions;
204
+ userId: string;
205
+ libraryId: string;
206
+ attributeId: string;
207
+ nodeId: string;
208
+ ctx: IQueryInfos;
209
+ }
@@ -1,16 +1,11 @@
1
- import { IAttributeRepo } from 'infra/attribute/attributeRepo';
2
- import { IPermissionRepo } from 'infra/permission/permissionRepo';
3
- import { ITreeRepo } from 'infra/tree/treeRepo';
4
- import { IValueRepo } from 'infra/value/valueRepo';
5
1
  import { IQueryInfos } from '_types/queryInfos';
6
- import { ICachesService } from '../../../infra/cache/cacheService';
7
2
  import { PermissionsActions, PermissionTypes } from '../../../_types/permissions';
8
3
  import { IDefaultPermissionHelper } from './defaultPermission';
9
4
  import { IPermissionByUserGroupsHelper } from './permissionByUserGroups';
5
+ import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
10
6
  interface IGetGlobalPermissionParams {
11
7
  type: PermissionTypes;
12
8
  applyTo?: string;
13
- userId: string;
14
9
  action: PermissionsActions;
15
10
  getDefaultPermission?: (params?: IGetDefaultGlobalPermissionParams) => Promise<boolean> | boolean;
16
11
  }
@@ -35,11 +30,7 @@ export interface IGlobalPermissionHelper {
35
30
  export interface IGlobalPermissionDeps {
36
31
  'core.domain.permission.helpers.permissionByUserGroups': IPermissionByUserGroupsHelper;
37
32
  'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
38
- 'core.infra.permission': IPermissionRepo;
39
- 'core.infra.attribute': IAttributeRepo;
40
- 'core.infra.tree': ITreeRepo;
41
- 'core.infra.value': IValueRepo;
42
- 'core.infra.cache.cacheService': ICachesService;
33
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
43
34
  }
44
- export default function ({ 'core.domain.permission.helpers.permissionByUserGroups': permByUserGroupsHelper, 'core.domain.permission.helpers.defaultPermission': defaultPermHelper, 'core.infra.attribute': attributeRepo, 'core.infra.value': valueRepo, 'core.infra.tree': treeRepo, 'core.infra.cache.cacheService': cacheService }: IGlobalPermissionDeps): IGlobalPermissionHelper;
35
+ export default function ({ 'core.domain.permission.helpers.permissionByUserGroups': permByUserGroupsHelper, 'core.domain.permission.helpers.defaultPermission': defaultPermHelper, 'core.domain.tree.helpers.elementAncestors': elementAncestorsHelper }: IGlobalPermissionDeps): IGlobalPermissionHelper;
45
36
  export {};
@@ -1,26 +1,26 @@
1
- import { IPermissionRepo } from 'infra/permission/permissionRepo';
2
1
  import { IReducePermissionsArrayHelper } from './reducePermissionsArray';
3
2
  import { ISimplePermissionHelper } from './simplePermission';
4
3
  import { IDefaultPermissionHelper } from './defaultPermission';
5
- import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
6
- import { ITreeNode, TreePaths } from '../../../_types/tree';
4
+ import { TreePath } from '../../../_types/tree';
7
5
  import { PermissionsActions, PermissionTypes } from '../../../_types/permissions';
8
6
  import { IQueryInfos } from '../../../_types/queryInfos';
7
+ import { ICachesService } from '../../../infra/cache/cacheService';
8
+ import { IConfig } from '_types/config';
9
9
  export interface IPermissionByUserGroupsHelperDeps {
10
10
  'core.domain.permission.helpers.simplePermission': ISimplePermissionHelper;
11
11
  'core.domain.permission.helpers.reducePermissionsArray': IReducePermissionsArrayHelper;
12
12
  'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
13
- 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
14
- 'core.infra.permission'?: IPermissionRepo;
13
+ 'core.infra.cache.cacheService': ICachesService;
14
+ config: IConfig;
15
15
  }
16
16
  interface IGetPermissionByUserGroupsParams {
17
17
  type: PermissionTypes;
18
18
  action: PermissionsActions;
19
- userGroupsPaths: TreePaths[];
19
+ userGroupsPaths: TreePath[];
20
20
  applyTo?: string;
21
21
  treeTarget?: {
22
22
  tree: string;
23
- path: ITreeNode[];
23
+ path: TreePath;
24
24
  };
25
25
  getDefaultPermission?: () => Promise<boolean> | boolean;
26
26
  ctx: IQueryInfos;
@@ -2,19 +2,15 @@ import { IAttributeDomain } from 'domain/attribute/attributeDomain';
2
2
  import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
3
3
  import { IPermissionRepo } from 'infra/permission/permissionRepo';
4
4
  import { IQueryInfos } from '_types/queryInfos';
5
- import { ICachesService } from '../../../infra/cache/cacheService';
6
5
  import { IGetInheritedTreeBasedPermissionParams, IGetTreeBasedPermissionParams } from '../_types';
7
- import { IDefaultPermissionHelper } from './defaultPermission';
8
6
  import { IPermissionByUserGroupsHelper } from './permissionByUserGroups';
9
7
  import { IReducePermissionsArrayHelper } from './reducePermissionsArray';
10
8
  export interface ITreeBasedPermissionsDeps {
11
9
  'core.domain.attribute': IAttributeDomain;
12
10
  'core.domain.permission.helpers.permissionByUserGroups': IPermissionByUserGroupsHelper;
13
- 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
14
11
  'core.domain.permission.helpers.reducePermissionsArray': IReducePermissionsArrayHelper;
15
12
  'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
16
13
  'core.infra.permission': IPermissionRepo;
17
- 'core.infra.cache.cacheService': ICachesService;
18
14
  }
19
15
  export interface ITreeBasedPermissionHelper {
20
16
  getTreeBasedPermission(params: IGetTreeBasedPermissionParams, ctx: IQueryInfos): Promise<boolean>;
@@ -5,10 +5,12 @@ import { IDefaultPermissionHelper } from './helpers/defaultPermission';
5
5
  import { IPermissionByUserGroupsHelper } from './helpers/permissionByUserGroups';
6
6
  import { ITreeBasedPermissionHelper } from './helpers/treeBasedPermissions';
7
7
  import { ILibraryPermissionDomain } from './libraryPermissionDomain';
8
- import { IGetInheritedRecordPermissionParams, IGetRecordPermissionParams } from './_types';
8
+ import { IGetInheritedRecordPermissionParams, IGetRecordPermissionParams, IEstimateTreeValueRecordPermissionParams } from './_types';
9
+ import { ITreeRepo } from '../../infra/tree/treeRepo';
9
10
  export interface IRecordPermissionDomain {
10
11
  getRecordPermission(params: IGetRecordPermissionParams): Promise<boolean>;
11
12
  getInheritedRecordPermission(params: IGetInheritedRecordPermissionParams): Promise<boolean>;
13
+ evaluateTreeValueRecordPermission(params: IEstimateTreeValueRecordPermissionParams): Promise<boolean>;
12
14
  }
13
15
  export interface IRecordPermissionDomainDeps {
14
16
  'core.domain.permission.library': ILibraryPermissionDomain;
@@ -18,5 +20,6 @@ export interface IRecordPermissionDomainDeps {
18
20
  'core.domain.attribute': IAttributeDomain;
19
21
  'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
20
22
  'core.infra.value': IValueRepo;
23
+ 'core.infra.tree': ITreeRepo;
21
24
  }
22
25
  export default function (deps: IRecordPermissionDomainDeps): IRecordPermissionDomain;
@@ -2,12 +2,12 @@ import { GetCoreEntityByIdFunc } from 'domain/helpers/getCoreEntityById';
2
2
  import { ITreeRepo } from 'infra/tree/treeRepo';
3
3
  import { IValueRepo } from 'infra/value/valueRepo';
4
4
  import { IAttributeDomain } from '../attribute/attributeDomain';
5
- import { IDefaultPermissionHelper } from './helpers/defaultPermission';
6
5
  import { IPermissionByUserGroupsHelper } from './helpers/permissionByUserGroups';
7
6
  import { ITreeBasedPermissionHelper } from './helpers/treeBasedPermissions';
8
7
  import { ITreeLibraryPermissionDomain } from './treeLibraryPermissionDomain';
9
8
  import { ITreePermissionDomain } from './treePermissionDomain';
10
9
  import { IGetInheritedTreeNodePermissionParams, IGetTreeNodePermissionParams } from './_types';
10
+ import { IElementAncestorsHelper } from 'domain/tree/helpers/elementAncestors';
11
11
  export interface ITreeNodePermissionDomain {
12
12
  getTreeNodePermission(params: IGetTreeNodePermissionParams): Promise<boolean>;
13
13
  getInheritedTreeNodePermission(params: IGetInheritedTreeNodePermissionParams): Promise<boolean>;
@@ -17,7 +17,7 @@ export interface ITreeNodePermissionDomainDeps {
17
17
  'core.domain.permission.treeLibrary': ITreeLibraryPermissionDomain;
18
18
  'core.domain.permission.helpers.treeBasedPermissions': ITreeBasedPermissionHelper;
19
19
  'core.domain.permission.helpers.permissionByUserGroups': IPermissionByUserGroupsHelper;
20
- 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
20
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
21
21
  'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
22
22
  'core.infra.tree': ITreeRepo;
23
23
  'core.domain.attribute': IAttributeDomain;
@@ -12,6 +12,7 @@ export interface IFindRecordParams {
12
12
  withCount?: boolean;
13
13
  retrieveInactive?: boolean;
14
14
  fulltextSearch?: string;
15
+ ignorePermissions?: boolean;
15
16
  }
16
17
  export interface ICreateRecordParams {
17
18
  library: string;
@@ -0,0 +1,22 @@
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
+ active?: boolean;
15
+ }) => Promise<ICreateRecordResult>;
16
+ interface IDeps {
17
+ 'core.domain.eventsManager': IEventsManagerDomain;
18
+ 'core.domain.permission.library': ILibraryPermissionDomain;
19
+ 'core.infra.record': IRecordRepo;
20
+ }
21
+ export default function ({ 'core.domain.eventsManager': eventsManager, 'core.domain.permission.library': libraryPermissionDomain, 'core.infra.record': recordRepo }: IDeps): CreateRecordHelper;
22
+ 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 {};
@@ -19,6 +19,6 @@ export interface IGetAccessPermissionsValue {
19
19
  false: Array<ITreeNode['id']>;
20
20
  };
21
21
  }
22
- export type IGetAccessPermissions = (groupsIds: string[], library: string, deps: IAccessPermissionFilterDeps, ctx: IQueryInfos) => Promise<IGetAccessPermissionsValue[]>;
22
+ export type IGetAccessPermissions = (groupsIds: string[][], library: string, deps: IAccessPermissionFilterDeps, ctx: IQueryInfos) => Promise<IGetAccessPermissionsValue[]>;
23
23
  declare const getAccessPermissionsFilters: IGetAccessPermissions;
24
24
  export default getAccessPermissionsFilters;
@@ -1,2 +1,4 @@
1
+ export { default as createRecord } from './createRecord';
2
+ export { default as deleteRecord } from './deleteRecord';
1
3
  export { default as sendRecordUpdateEvent } from './sendRecordUpdateEvent';
2
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';
@@ -22,12 +22,23 @@ import { ICreateRecordResult, IFindRecordParams } from './_types';
22
22
  import { IFormRepo } from 'infra/form/formRepo';
23
23
  import { IRecordAttributePermissionDomain } from '../permission/recordAttributePermissionDomain';
24
24
  import { IAttributePermissionDomain } from '../permission/attributePermissionDomain';
25
- import { IPermissionRepo } from 'infra/permission/permissionRepo';
25
+ import { IPermissionRepo } from '../../infra/permission/permissionRepo';
26
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';
27
30
  export interface IRecordDomain {
31
+ /**
32
+ * Create empty record
33
+ * Used when create a record, set active to false and inCreation to true
34
+ */
35
+ createEmptyRecord(params: {
36
+ library: string;
37
+ ctx: IQueryInfos;
38
+ }): Promise<ICreateRecordResult>;
28
39
  createRecord(params: {
29
40
  library: string;
30
- values?: IValue[];
41
+ values?: ISaveValue[];
31
42
  verifyRequiredAttributes?: boolean;
32
43
  ctx: IQueryInfos;
33
44
  }): Promise<ICreateRecordResult>;
@@ -105,9 +116,12 @@ export interface IRecordDomainDeps {
105
116
  'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
106
117
  'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
107
118
  'core.domain.helpers.validate': IValidateHelper;
119
+ 'core.domain.record.helpers.createRecord': CreateRecordHelper;
120
+ 'core.domain.record.helpers.deleteRecord': DeleteRecordHelper;
108
121
  'core.domain.record.helpers.sendRecordUpdateEvent': SendRecordUpdateEventHelper;
109
122
  'core.infra.library': ILibraryRepo;
110
123
  'core.infra.tree': ITreeRepo;
124
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
111
125
  'core.infra.value': IValueRepo;
112
126
  'core.infra.form': IFormRepo;
113
127
  'core.infra.permission': IPermissionRepo;
@@ -116,4 +130,4 @@ export interface IRecordDomainDeps {
116
130
  'core.utils': IUtils;
117
131
  translator: i18n;
118
132
  }
119
- 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.sendRecordUpdateEvent': sendRecordUpdateEvent, 'core.infra.library': libraryRepo, 'core.infra.tree': treeRepo, '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;
133
+ 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;
@@ -11,7 +11,7 @@ import { IQueryInfos } from '_types/queryInfos';
11
11
  import { ICachesService } from '../../infra/cache/cacheService';
12
12
  import { IList, IPaginationParams } from '../../_types/list';
13
13
  import { IRecord } from '../../_types/record';
14
- import { IGetCoreTreesParams, ITree, ITreeElement, ITreeNode, ITreeNodeLight, TreePaths } from '../../_types/tree';
14
+ import { IGetCoreTreesParams, ITree, ITreeElement, ITreeNode, ITreeNodeLight, TreePath } from '../../_types/tree';
15
15
  import { IAttributeDomain } from '../attribute/attributeDomain';
16
16
  import { IRecordDomain } from '../record/recordDomain';
17
17
  import { IElementAncestorsHelper } from './helpers/elementAncestors';
@@ -112,7 +112,7 @@ export interface ITreeDomain {
112
112
  treeId: string;
113
113
  nodeId: string;
114
114
  ctx: IQueryInfos;
115
- }): Promise<TreePaths>;
115
+ }): Promise<TreePath>;
116
116
  /**
117
117
  * Retrieve all records linked to an element via given attribute
118
118
  */
@@ -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,10 +5,10 @@ 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
13
  recordId?: string;
14
14
  infos?: IQueryInfos;
@@ -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,7 +73,7 @@ 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;
76
79
  skipPermission?: boolean;
@@ -102,6 +105,9 @@ export interface IValueDomainDeps {
102
105
  'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
103
106
  'core.domain.tree.helpers.getDefaultElement': IGetDefaultElementHelper;
104
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;
105
111
  'core.domain.versionProfile': IVersionProfileDomain;
106
112
  'core.infra.record': IRecordRepo;
107
113
  'core.infra.tree': ITreeRepo;
@@ -110,5 +116,5 @@ export interface IValueDomainDeps {
110
116
  'core.utils.logger': winston.Winston;
111
117
  'core.domain.tree': ITreeDomain;
112
118
  }
113
- 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;
114
120
  export default valueDomain;