@aristid/leav-types 0.0.7-ce462f0 → 0.0.7-ceed596d

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 (114) hide show
  1. package/apps/core/config/default.d.ts +15 -1
  2. package/apps/core/config/test.d.ts +1 -0
  3. package/apps/core/src/__tests__/e2e/api/getConditionPart/getConditionPart.test.d.ts +1 -0
  4. package/apps/core/src/__tests__/e2e/api/globalSetup.d.ts +6 -1
  5. package/apps/core/src/__tests__/e2e/api/joinLibraries/joinLibraries.test.d.ts +1 -0
  6. package/apps/core/src/__tests__/integration/globalSetup.d.ts +1 -0
  7. package/apps/core/src/__tests__/integration/globalSetupHook.d.ts +1 -0
  8. package/apps/core/src/__tests__/integration/infra/attributeAdvancedLinkRepo.test.d.ts +1 -0
  9. package/apps/core/src/__tests__/integration/infra/attributeAdvancedRepo.test.d.ts +1 -0
  10. package/apps/core/src/__tests__/integration/infra/attributeSimpleLinkRepo.test.d.ts +1 -0
  11. package/apps/core/src/__tests__/integration/infra/attributeSimpleRepo.test.d.ts +1 -0
  12. package/apps/core/src/__tests__/integration/infra/attributeTreeRepo.test.d.ts +1 -0
  13. package/apps/core/src/__tests__/integration/infra/integrationTestRepoUtils.d.ts +7 -0
  14. package/apps/core/src/__tests__/integration/infra/recordRepo.test.d.ts +1 -0
  15. package/apps/core/src/__tests__/integration/teardown.d.ts +1 -0
  16. package/apps/core/src/__tests__/mockers/amqp.d.ts +8 -0
  17. package/apps/core/src/__tests__/mockers/logger.d.ts +7 -0
  18. package/apps/core/src/__tests__/mocks/attribute.d.ts +4 -1
  19. package/apps/core/src/__tests__/mocks/cache.d.ts +4 -0
  20. package/apps/core/src/_constants/attributes.d.ts +1 -0
  21. package/apps/core/src/_types/attribute.d.ts +8 -1
  22. package/apps/core/src/_types/config.d.ts +34 -2
  23. package/apps/core/src/_types/dbProfiler.d.ts +20 -1
  24. package/apps/core/src/_types/forms.d.ts +17 -7
  25. package/apps/core/src/_types/globalSettings.d.ts +2 -0
  26. package/apps/core/src/_types/library.d.ts +5 -1
  27. package/apps/core/src/_types/permissions.d.ts +3 -1
  28. package/apps/core/src/_types/queryInfos.d.ts +6 -1
  29. package/apps/core/src/_types/record.d.ts +4 -4
  30. package/apps/core/src/_types/tree.d.ts +2 -1
  31. package/apps/core/src/_types/value.d.ts +66 -5
  32. package/apps/core/src/_types/views.d.ts +4 -0
  33. package/apps/core/src/app/application/applicationApp.d.ts +3 -7
  34. package/apps/core/src/app/auth/authApp.d.ts +7 -6
  35. package/apps/core/src/app/core/actionListApp.d.ts +2 -4
  36. package/apps/core/src/app/core/apiKeyApp/apiKeyApp.d.ts +2 -4
  37. package/apps/core/src/app/core/attributeApp/attributeApp.d.ts +2 -5
  38. package/apps/core/src/app/core/coreApp.d.ts +2 -4
  39. package/apps/core/src/app/core/exportApp.d.ts +2 -4
  40. package/apps/core/src/app/core/filesManagerApp.d.ts +3 -5
  41. package/apps/core/src/app/core/formApp/_types.d.ts +10 -0
  42. package/apps/core/src/app/core/formApp/formApp.d.ts +4 -5
  43. package/apps/core/src/app/core/globalSettingsApp.d.ts +3 -6
  44. package/apps/core/src/app/core/importApp.d.ts +2 -4
  45. package/apps/core/src/app/core/libraryApp/libraryApp.d.ts +2 -5
  46. package/apps/core/src/app/core/logApp.d.ts +2 -4
  47. package/apps/core/src/app/core/permissionApp/permissionApp.d.ts +2 -4
  48. package/apps/core/src/app/core/pluginsApp.d.ts +2 -3
  49. package/apps/core/src/app/core/recordApp/recordApp.d.ts +2 -5
  50. package/apps/core/src/app/core/tasksManagerApp.d.ts +2 -3
  51. package/apps/core/src/app/core/treeApp/treeApp.d.ts +5 -6
  52. package/apps/core/src/app/core/userDataApp.d.ts +2 -4
  53. package/apps/core/src/app/core/valueApp.d.ts +2 -4
  54. package/apps/core/src/app/core/versionProfileApp/versionProfileApp.d.ts +2 -4
  55. package/apps/core/src/app/core/viewApp.d.ts +2 -4
  56. package/apps/core/src/app/endpoint/endpointApp.d.ts +3 -8
  57. package/apps/core/src/app/graphql/graphqlApp.d.ts +8 -0
  58. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.d.ts +11 -0
  59. package/apps/core/src/domain/attribute/helpers/ifLibraryJoinLinkAttribute.spec.d.ts +1 -0
  60. package/apps/core/src/domain/attribute/helpers/index.d.ts +1 -0
  61. package/apps/core/src/domain/filesManager/helpers/handleFileSystemEvent/handleMoveEvent.d.ts +1 -1
  62. package/apps/core/src/domain/form/formDomain.d.ts +9 -1
  63. package/apps/core/src/domain/globalSettings/globalSettingsDomain.d.ts +5 -1
  64. package/apps/core/src/domain/helpers/calculationVariable/index.d.ts +2 -1
  65. package/apps/core/src/domain/import/importDomain.d.ts +12 -2
  66. package/apps/core/src/domain/indexationManager/indexationManagerDomain.d.ts +4 -2
  67. package/apps/core/src/domain/log/logDomain.d.ts +3 -1
  68. package/apps/core/src/domain/permission/_types.d.ts +11 -11
  69. package/apps/core/src/domain/permission/helpers/globalPermission.d.ts +4 -13
  70. package/apps/core/src/domain/permission/helpers/permissionByUserGroups.d.ts +24 -6
  71. package/apps/core/src/domain/permission/helpers/reducePermissionsArray.d.ts +1 -1
  72. package/apps/core/src/domain/permission/helpers/treeBasedPermissions.d.ts +0 -4
  73. package/apps/core/src/domain/permission/permissionDomain.d.ts +1 -0
  74. package/apps/core/src/domain/permission/recordPermissionDomain.d.ts +4 -1
  75. package/apps/core/src/domain/permission/treeNodePermissionDomain.d.ts +2 -2
  76. package/apps/core/src/domain/record/_types.d.ts +4 -3
  77. package/apps/core/src/domain/record/helpers/createRecord.d.ts +22 -0
  78. package/apps/core/src/domain/record/helpers/deleteRecord.d.ts +19 -0
  79. package/apps/core/src/domain/record/helpers/getAccessPermissionFilters.d.ts +24 -0
  80. package/apps/core/src/domain/record/helpers/index.d.ts +3 -0
  81. package/apps/core/src/domain/record/recordDomain.d.ts +31 -3
  82. package/apps/core/src/domain/tree/treeDomain.d.ts +2 -2
  83. package/apps/core/src/domain/value/helpers/{canSaveValue.d.ts → canSaveRecordValue.d.ts} +3 -3
  84. package/apps/core/src/domain/value/helpers/isEmptyValue.d.ts +5 -0
  85. package/apps/core/src/domain/value/helpers/prepareValue.d.ts +3 -3
  86. package/apps/core/src/domain/value/helpers/saveOneValue.d.ts +2 -2
  87. package/apps/core/src/domain/value/helpers/validateValue.d.ts +4 -4
  88. package/apps/core/src/domain/value/valueDomain.d.ts +11 -4
  89. package/apps/core/src/errors/LeavError.d.ts +6 -0
  90. package/apps/core/src/infra/attributeTypes/attributeAdvancedLinkRepo.d.ts +5 -2
  91. package/apps/core/src/infra/attributeTypes/attributeAdvancedRepo.d.ts +3 -1
  92. package/apps/core/src/infra/attributeTypes/attributeSimpleLinkRepo.d.ts +5 -2
  93. package/apps/core/src/infra/attributeTypes/attributeSimpleRepo.d.ts +3 -1
  94. package/apps/core/src/infra/attributeTypes/attributeTreeRepo.d.ts +3 -1
  95. package/apps/core/src/infra/attributeTypes/attributeTypesRepo.d.ts +54 -24
  96. package/apps/core/src/infra/db/dbUtils.d.ts +1 -3
  97. package/apps/core/src/infra/db/migrations/008-addSkeletonApp.d.ts +7 -0
  98. package/apps/core/src/infra/db/migrations/009-addDisplayMultiLinkOptAttributeProperty.d.ts +11 -0
  99. package/apps/core/src/infra/db/migrations/010-formSidePanel.d.ts +8 -0
  100. package/apps/core/src/infra/db/migrations/011-moveSkeletonApptoAppStudio.d.ts +7 -0
  101. package/apps/core/src/infra/oidc/oidcClientService.d.ts +3 -1
  102. package/apps/core/src/infra/permission/permissionRepo.d.ts +9 -1
  103. package/apps/core/src/infra/record/helpers/getSearchVariableName.d.ts +1 -1
  104. package/apps/core/src/infra/record/recordRepo.d.ts +11 -0
  105. package/apps/core/src/infra/tree/treeRepo.d.ts +4 -3
  106. package/apps/core/src/infra/value/valueRepo.d.ts +17 -10
  107. package/apps/core/src/interface/server.d.ts +7 -0
  108. package/apps/core/src/pluginsLoader.d.ts +1 -1
  109. package/apps/core/src/utils/dataloader.d.ts +8 -0
  110. package/apps/core/src/utils/helpers/getSystemQueryContext.d.ts +8 -0
  111. package/apps/core/src/utils/index.d.ts +1 -0
  112. package/apps/core/src/utils/utils.d.ts +1 -0
  113. package/libs/utils/src/types/forms.d.ts +8 -1
  114. package/package.json +5 -2
@@ -25,6 +25,14 @@ export declare namespace db {
25
25
  export declare namespace diskCache {
26
26
  let directory: string;
27
27
  }
28
+ export declare namespace dataLoaders {
29
+ namespace valueRepo {
30
+ namespace getValues {
31
+ let enableCache: string | boolean;
32
+ let useBatch: string | boolean;
33
+ }
34
+ }
35
+ }
28
36
  export declare namespace auth {
29
37
  let scheme: string;
30
38
  let key: string;
@@ -41,6 +49,9 @@ export declare namespace auth {
41
49
  let wellKnownEndpoint: string;
42
50
  let clientId: string;
43
51
  let postLogoutRedirectUri: string;
52
+ let skipLogoutConfirmationPage: string | boolean;
53
+ let idTokenUserClaim: string;
54
+ let enableAutoProvisioning: string | boolean;
44
55
  }
45
56
  let testApiKey: string;
46
57
  }
@@ -67,10 +78,13 @@ export declare namespace logs {
67
78
  let level: string;
68
79
  let transport: string;
69
80
  let destinationFile: string;
81
+ let useJsonFormat: string | boolean;
70
82
  }
71
83
  export declare namespace permissions {
72
84
  let _default_1: boolean;
73
85
  export { _default_1 as default };
86
+ let enableCache_1: string | boolean;
87
+ export { enableCache_1 as enableCache };
74
88
  }
75
89
  export declare namespace amqp {
76
90
  namespace connOpt {
@@ -186,5 +200,5 @@ export declare namespace elasticSearch {
186
200
  let url_1: string;
187
201
  export { url_1 as url };
188
202
  }
189
- export declare let pluginsPath: string;
203
+ export declare let pluginsPath: string | any[];
190
204
  export { _export as export, _import as import };
@@ -50,3 +50,4 @@ export let debug: boolean;
50
50
  export namespace redis {
51
51
  let database: number;
52
52
  }
53
+ export let pluginsPath: string[];
@@ -1,3 +1,8 @@
1
+ import { AwilixContainer } from 'awilix';
1
2
  import { IConfig } from '../../../_types/config';
2
- export declare const init: (conf: IConfig) => Promise<any>;
3
+ import { IDbUtils } from 'infra/db/dbUtils';
4
+ export declare const init: (conf: IConfig) => Promise<{
5
+ coreContainer: AwilixContainer;
6
+ dbUtils: IDbUtils;
7
+ }>;
3
8
  export declare function setup(): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare function setup(): Promise<void>;
@@ -0,0 +1 @@
1
+ export default function (): Promise<any>;
@@ -0,0 +1,7 @@
1
+ import { ILibraryRepo } from 'infra/library/libraryRepo';
2
+ import { IRecordRepo } from 'infra/record/recordRepo';
3
+ import { ITreeRepo } from 'infra/tree/treeRepo';
4
+ export declare const getCoreDep: <T>(path: any) => T;
5
+ export declare const getLibraryRepo: () => ILibraryRepo;
6
+ export declare const getRecordRepo: () => IRecordRepo;
7
+ export declare const getTreeRepo: () => ITreeRepo;
@@ -0,0 +1 @@
1
+ export default function (): Promise<void>;
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ consumer: {
3
+ channel: {
4
+ ack: jest.Mock<any, any>;
5
+ };
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ info: jest.Mock<any, any>;
3
+ warn: jest.Mock<any, any>;
4
+ error: jest.Mock<any, any>;
5
+ debug: jest.Mock<any, any>;
6
+ };
7
+ export default _default;
@@ -1,5 +1,6 @@
1
- import { AttributeFormats, AttributeTypes, IAttribute } from '../../_types/attribute';
1
+ import { AttributeFormats, AttributeTypes, MultiLinkDisplayOption, IAttribute } from '../../_types/attribute';
2
2
  export declare const mockAttrSimple: IAttribute;
3
+ export declare const mockUniqueAttrSimple: IAttribute;
3
4
  export declare const mockAttrId: IAttribute;
4
5
  export declare const mockAttrAdv: IAttribute;
5
6
  export declare const mockAttrAdvMultiVal: IAttribute;
@@ -29,6 +30,8 @@ export declare const mockAttrTree: {
29
30
  reverse_link?: string | IAttribute;
30
31
  unique?: boolean;
31
32
  description?: import("../../_types/systemTranslation").ISystemTranslation;
33
+ settings?: import("../../_types/shared").IKeyValue<any>;
34
+ multi_link_display_option?: MultiLinkDisplayOption;
32
35
  label?: import("../../_types/systemTranslation").ISystemTranslation | string;
33
36
  };
34
37
  export declare const mockAttrTreeVersionable: IAttribute;
@@ -0,0 +1,4 @@
1
+ import { Mockify } from '@leav/utils';
2
+ import { ICacheService, ICachesService } from '../../infra/cache/cacheService';
3
+ export declare const mockCacheService: Mockify<ICacheService>;
4
+ export declare const mockCachesService: Mockify<ICachesService>;
@@ -0,0 +1 @@
1
+ export declare const baseAttributes: string[];
@@ -1,7 +1,7 @@
1
1
  import { ActionsListEvents, ActionsListIOTypes, ActionsListConfig } from './actionsList';
2
2
  import { ITreePermissionsConf } from './permissions';
3
3
  import { IRecord } from './record';
4
- import { IGetCoreEntitiesParams } from './shared';
4
+ import { IGetCoreEntitiesParams, IKeyValue } from './shared';
5
5
  import { ISystemTranslation } from './systemTranslation';
6
6
  import { ITreeElement } from './tree';
7
7
  import { IDateRangeValue } from './value';
@@ -24,6 +24,8 @@ export interface IAttribute extends ICoreEntity {
24
24
  reverse_link?: string | IAttribute;
25
25
  unique?: boolean;
26
26
  description?: ISystemTranslation;
27
+ settings?: IKeyValue<any>;
28
+ multi_link_display_option?: MultiLinkDisplayOption;
27
29
  }
28
30
  export declare enum ValueVersionMode {
29
31
  SIMPLE = "simple",
@@ -87,6 +89,11 @@ export declare enum AttributeFormats {
87
89
  COLOR = "color",
88
90
  RICH_TEXT = "rich_text"
89
91
  }
92
+ export declare enum MultiLinkDisplayOption {
93
+ AVATAR = "avatar",
94
+ TAG = "tag",
95
+ BADGE_QTY = "badge_qty"
96
+ }
90
97
  export declare enum IOTypes {
91
98
  STRING = "string",
92
99
  NUMBER = "number",
@@ -5,6 +5,7 @@ export interface IConfig {
5
5
  server: IServer;
6
6
  db: IDb;
7
7
  diskCache: IDiskCache;
8
+ dataLoaders: IDataLoaders;
8
9
  auth: IAuth;
9
10
  mailer: IMailer;
10
11
  lang: ILang;
@@ -28,7 +29,7 @@ export interface IConfig {
28
29
  dbProfiler: IDbProfilerConfig;
29
30
  instanceId: string;
30
31
  elasticSearch: IElasticSearchConfig;
31
- pluginsPath: string;
32
+ pluginsPath: string[];
32
33
  }
33
34
  export declare enum CoreMode {
34
35
  SERVER = "server",
@@ -36,7 +37,8 @@ export declare enum CoreMode {
36
37
  FILES_MANAGER = "filesManager",
37
38
  INDEXATION_MANAGER = "indexationManager",
38
39
  TASKS_MANAGER_MASTER = "tasksManager:master",
39
- TASKS_MANAGER_WORKER = "tasksManager:worker"
40
+ TASKS_MANAGER_WORKER = "tasksManager:worker",
41
+ CLI = "cli"
40
42
  }
41
43
  export interface IServer {
42
44
  host: string;
@@ -75,11 +77,16 @@ export interface IAuth {
75
77
  wellKnownEndpoint?: string;
76
78
  clientId?: string;
77
79
  postLogoutRedirectUri?: string;
80
+ skipLogoutConfirmationPage?: boolean;
81
+ idTokenUserClaim?: string;
78
82
  } | {
79
83
  enable: true;
80
84
  wellKnownEndpoint: string;
81
85
  clientId: string;
82
86
  postLogoutRedirectUri: string;
87
+ skipLogoutConfirmationPage?: boolean;
88
+ idTokenUserClaim: string;
89
+ enableAutoProvisioning: boolean;
83
90
  };
84
91
  testApiKey?: string;
85
92
  }
@@ -103,6 +110,7 @@ export interface ILogs {
103
110
  }
104
111
  export interface IPermissions {
105
112
  default: boolean;
113
+ enableCache: boolean;
106
114
  }
107
115
  export interface IAmqp {
108
116
  connOpt: Options.Connect;
@@ -172,6 +180,30 @@ export interface IImport {
172
180
  groupData: number;
173
181
  maxStackedElements: number;
174
182
  }
183
+ /**
184
+ * Data loaders configuration for performances
185
+ */
186
+ export interface IDataLoaders {
187
+ valueRepo: {
188
+ getValues: {
189
+ /**
190
+ * @default false
191
+ *
192
+ * Enable cache inside data loaders in the query context
193
+ * Before enable, ensure that it has no side effects, for instance on saveValue/deleteValue mutations
194
+ */
195
+ enableCache: boolean;
196
+ /**
197
+ * @default true
198
+ *
199
+ * Enable: do batch arangodb query
200
+ * Disable: do one arangodb query per value, as before data loader use. For rollback if issue with batch query
201
+ * Temporary, to be removed in future
202
+ */
203
+ useBatch: boolean;
204
+ };
205
+ };
206
+ }
175
207
  export interface IDiskCache {
176
208
  directory: string;
177
209
  }
@@ -2,7 +2,26 @@ import { AqlQuery } from 'arangojs/aql';
2
2
  export interface IDbProfilerQuery {
3
3
  count: number;
4
4
  query: string | AqlQuery;
5
- callers: Set<string>;
5
+ callers: Record<string, {
6
+ /**
7
+ * Stacktrace of caller
8
+ */
9
+ stack: string;
10
+ count: number;
11
+ /**
12
+ * Stats for each call for that query
13
+ */
14
+ stats: Array<{
15
+ /**
16
+ * Arangodb query execution time in ms
17
+ */
18
+ executionTimeMs: number | null;
19
+ /**
20
+ * Time spent in nodejs to process the query in ms
21
+ */
22
+ nodejsTimeMs: number;
23
+ }>;
24
+ }>;
6
25
  }
7
26
  export interface IDbProfiler {
8
27
  totalCount: number;
@@ -1,3 +1,4 @@
1
+ import { IAttribute } from './attribute';
1
2
  import { IKeyValue } from './shared';
2
3
  import { IValue } from './value';
3
4
  export interface IForm extends ICoreEntity {
@@ -5,6 +6,11 @@ export interface IForm extends ICoreEntity {
5
6
  system?: boolean;
6
7
  dependencyAttributes?: string[];
7
8
  elements?: IFormDependentElements[];
9
+ sidePanel: IFormSidePanel;
10
+ }
11
+ export interface IFormSidePanel {
12
+ enable: boolean;
13
+ isOpenByDefault: boolean;
8
14
  }
9
15
  export interface IRecordForm {
10
16
  id: string;
@@ -12,10 +18,12 @@ export interface IRecordForm {
12
18
  system: boolean;
13
19
  recordId: string;
14
20
  dependencyAttributes?: string[];
15
- elements: IFormElementWithValues[];
21
+ elements: IFormElement[];
22
+ sidePanel: IFormSidePanel;
16
23
  }
17
24
  export declare enum FormElementTypes {
18
25
  field = "field",
26
+ tabs = "tabs",
19
27
  layout = "layout"
20
28
  }
21
29
  export type IFormStrict = Required<IForm>;
@@ -34,17 +42,19 @@ export interface IFormElement {
34
42
  uiElementType: string;
35
43
  containerId: string;
36
44
  settings?: IKeyValue<any>;
45
+ children?: IFormElement[];
37
46
  }
38
- export interface IFormElementWithValues extends IFormElement {
39
- values?: IValue[];
47
+ export interface IFormElementValues {
48
+ id: string;
49
+ values: IValue[];
40
50
  valueError?: string;
41
51
  }
42
- export type IFormElementWithValuesAndChildren = IFormElementWithValues & {
43
- children: IFormElementWithValuesAndChildren[];
44
- };
45
52
  /**
46
- * Accepted fields to filter attributes list
53
+ * Accepted fields to filter an attribute list
47
54
  */
48
55
  export interface IFormFilterOptions extends ICoreEntityFilterOptions {
49
56
  library?: string;
50
57
  }
58
+ export interface IFormElementJoinLibraryContext {
59
+ mandatoryAttribute: IAttribute;
60
+ }
@@ -1,3 +1,4 @@
1
+ import { IKeyValue } from './shared';
1
2
  export interface IGlobalSettings {
2
3
  defaultApp: string;
3
4
  name: string;
@@ -9,4 +10,5 @@ export interface IGlobalSettings {
9
10
  library: string;
10
11
  recordId: string;
11
12
  };
13
+ settings?: IKeyValue<any>;
12
14
  }
@@ -3,9 +3,11 @@ import { IPreviewVersion } from './filesManager';
3
3
  import { ITreePermissionsConf } from './permissions';
4
4
  import { IRecordIdentityConf } from './record';
5
5
  import { ISystemTranslation } from './systemTranslation';
6
+ import { IKeyValue } from './shared';
6
7
  export interface ILibrary extends ICoreEntity {
7
8
  system?: boolean;
8
9
  behavior?: LibraryBehavior;
10
+ mandatoryAttribute?: string;
9
11
  /**
10
12
  * List of attributes usable in this library
11
13
  */
@@ -31,6 +33,7 @@ export interface ILibrary extends ICoreEntity {
31
33
  recordId: string;
32
34
  };
33
35
  previewsSettings?: ILibraryPreviewsSettings[];
36
+ settings?: IKeyValue<any>;
34
37
  }
35
38
  export interface ILibraryFilterOptions extends ICoreEntityFilterOptions {
36
39
  system?: boolean;
@@ -43,8 +46,9 @@ export interface ILibraryPreviewsSettings {
43
46
  }
44
47
  export declare enum LibraryBehavior {
45
48
  STANDARD = "standard",
49
+ DIRECTORIES = "directories",
46
50
  FILES = "files",
47
- DIRECTORIES = "directories"
51
+ JOIN = "join"
48
52
  }
49
53
  export declare const USERS_LIBRARY = "users";
50
54
  export declare const USERS_GROUPS_LIBRARY = "users_groups";
@@ -76,7 +76,9 @@ export declare enum AdminPermissionsActions {
76
76
  CREATE_API_KEY = "admin_create_api_key",
77
77
  EDIT_API_KEY = "admin_edit_api_key",
78
78
  DELETE_API_KEY = "admin_delete_api_key",
79
- EDIT_GLOBAL_SETTINGS = "admin_edit_global_settings"
79
+ EDIT_GLOBAL_SETTINGS = "admin_edit_global_settings",
80
+ ACCESS_LOGS = "admin_access_logs",
81
+ IMPORT_CONFIG_CLEAR_DATABASE = "admin_import_config_clear_database"
80
82
  }
81
83
  export type PermissionsActions = LibraryPermissionsActions | RecordPermissionsActions | RecordAttributePermissionsActions | AdminPermissionsActions | AttributePermissionsActions | TreePermissionsActions | TreeNodePermissionsActions | ApplicationPermissionsActions;
82
84
  export interface ILabeledPermissionsAction {
@@ -1,16 +1,21 @@
1
+ import DataLoader from 'dataloader';
1
2
  import type LeavError from 'errors/LeavError';
2
3
  import { IDbProfiler } from './dbProfiler';
3
4
  import { IValueVersion } from './value';
4
5
  export interface IQueryInfos {
5
6
  userId: string;
7
+ groupsId?: string[];
6
8
  lang?: string;
7
9
  defaultLang?: string;
8
10
  queryId?: string;
9
11
  version?: IValueVersion;
10
12
  treeId?: string;
11
- groupsId?: string[];
12
13
  applicationId?: string;
13
14
  dbProfiler?: IDbProfiler;
14
15
  trigger?: string;
15
16
  errors?: Array<LeavError<unknown>>;
17
+ /**
18
+ * For request duration store dataloader on demand with getOrCreateDataLoaderInCtx
19
+ */
20
+ dataLoaders?: Record<string, DataLoader<unknown, unknown>>;
16
21
  }
@@ -75,10 +75,10 @@ export interface IQueryField {
75
75
  export interface IRecordIdentity {
76
76
  id: string;
77
77
  library: ILibrary;
78
- label?: string;
79
- subLabel?: string;
80
- color?: string;
81
- preview?: IPreview;
78
+ getLabel?: () => Promise<string | null>;
79
+ getSubLabel?: () => Promise<string | null>;
80
+ getColor?: () => Promise<string | null>;
81
+ getPreview?: () => Promise<IPreview | null>;
82
82
  }
83
83
  export interface IRecordIdentityConf {
84
84
  label?: string;
@@ -11,6 +11,7 @@ export interface ITree extends ICoreEntity {
11
11
  behavior?: TreeBehavior;
12
12
  system?: boolean;
13
13
  permissions_conf?: ITreeNodePermissionsConf;
14
+ settings?: IKeyValue<any>;
14
15
  }
15
16
  export interface ITreeFilterOptions extends ICoreEntityFilterOptions {
16
17
  system?: boolean;
@@ -37,7 +38,7 @@ export type ITreeNodeLight = Pick<ITreeNode, 'id' | 'order'>;
37
38
  export interface ITreeNodeWithTreeId extends ITreeNode {
38
39
  treeId: string;
39
40
  }
40
- export type TreePaths = ITreeNode[];
41
+ export type TreePath = ITreeNode[];
41
42
  export declare enum TreeBehavior {
42
43
  STANDARD = "standard",
43
44
  FILES = "files"
@@ -1,7 +1,9 @@
1
1
  import { AnyPrimitive, Override } from '@leav/utils';
2
2
  import { IDbEdge } from 'infra/db/_types';
3
3
  import { IRecord } from './record';
4
- import { ITreeNode, TreePaths } from './tree';
4
+ import { ITreeNode, TreePath } from './tree';
5
+ import { EMPTY_VALUE } from 'infra/value/valueRepo';
6
+ import { AttributeTypes } from './attribute';
5
7
  export type IValueFromGql = Override<Omit<IValue, 'version'>, {
6
8
  value: IValue['payload'];
7
9
  metadata: Array<{
@@ -28,8 +30,13 @@ export interface IDbValueVersion {
28
30
  export interface IValueMetadata {
29
31
  [fieldName: string]: IStandardValue | AnyPrimitive;
30
32
  }
31
- export interface IGenericValue {
32
- id_value?: string;
33
+ export type EmptyValue = typeof EMPTY_VALUE;
34
+ interface ICommonGenericSaveValue {
35
+ /**
36
+ * The id of the edge for advanced, advanced link or tree values
37
+ * In case of advanced reverse link from simple link, this is the id of the linked record
38
+ */
39
+ id_value?: string | null;
33
40
  attribute?: string;
34
41
  created_at?: number;
35
42
  modified_at?: number;
@@ -37,21 +44,60 @@ export interface IGenericValue {
37
44
  modified_by?: string;
38
45
  version?: IValueVersion;
39
46
  metadata?: IValueMetadata;
47
+ }
48
+ export interface IGenericValue extends ICommonGenericSaveValue {
40
49
  isInherited?: boolean;
41
50
  isCalculated?: boolean;
42
51
  }
43
52
  export interface IStandardValue extends IGenericValue {
44
- payload?: any;
53
+ /**
54
+ * Computed value after get actions on attribute are done
55
+ * TODO remove that any when possible
56
+ * TODO remove optional when possible
57
+ */
58
+ payload?: any | EmptyValue;
59
+ /**
60
+ * Raw value from the database, before any computation
61
+ * TODO, remove that any when possible
62
+ */
45
63
  raw_payload?: any;
46
64
  }
47
65
  export interface ILinkValue extends IGenericValue {
66
+ /**
67
+ * Linked record
68
+ * TODO remove optional when possible
69
+ */
48
70
  payload?: IRecord;
49
71
  }
50
72
  export interface ITreeValue extends IGenericValue {
73
+ /**
74
+ * Linked tree node
75
+ * TODO remove optional when possible
76
+ */
51
77
  payload?: ITreeNode;
52
78
  treeId: string;
53
79
  }
54
80
  export type IValue = IStandardValue | ILinkValue | ITreeValue;
81
+ type IGenericSaveValue = ICommonGenericSaveValue;
82
+ export interface ISaveStandardValue extends IGenericSaveValue {
83
+ /**
84
+ * Any base type value to save
85
+ */
86
+ payload: number | string | boolean | EmptyValue | null;
87
+ }
88
+ export interface ISaveLinkValue extends IGenericSaveValue {
89
+ /**
90
+ * Record id to link
91
+ */
92
+ payload: string | null;
93
+ }
94
+ export interface ISaveTreeValue extends IGenericSaveValue {
95
+ /**
96
+ * Tree node id to link
97
+ */
98
+ payload: string | null;
99
+ }
100
+ export type ISaveValue = ISaveStandardValue | ISaveLinkValue | ISaveTreeValue;
55
101
  export interface IDateRangeValue<T = string | number> {
56
102
  from: T;
57
103
  to: T;
@@ -65,7 +111,7 @@ export interface IValuesOptions {
65
111
  export interface IFindValueTree {
66
112
  name: string;
67
113
  currentIndex: number;
68
- elements: TreePaths;
114
+ elements: TreePath;
69
115
  }
70
116
  export interface IValueEdge extends IDbEdge {
71
117
  attribute: string;
@@ -76,3 +122,18 @@ export interface IValueEdge extends IDbEdge {
76
122
  version?: IDbValueVersion;
77
123
  metadata?: IValueMetadata;
78
124
  }
125
+ export interface IValueByAttributeType {
126
+ [AttributeTypes.SIMPLE]: IStandardValue;
127
+ [AttributeTypes.SIMPLE_LINK]: ILinkValue;
128
+ [AttributeTypes.ADVANCED]: IStandardValue;
129
+ [AttributeTypes.ADVANCED_LINK]: ILinkValue;
130
+ [AttributeTypes.TREE]: ITreeValue;
131
+ }
132
+ export interface ISaveValueByAttributeType {
133
+ [AttributeTypes.SIMPLE]: ISaveStandardValue;
134
+ [AttributeTypes.SIMPLE_LINK]: ISaveLinkValue;
135
+ [AttributeTypes.ADVANCED]: ISaveStandardValue;
136
+ [AttributeTypes.ADVANCED_LINK]: ISaveLinkValue;
137
+ [AttributeTypes.TREE]: ISaveTreeValue;
138
+ }
139
+ export {};
@@ -40,6 +40,10 @@ export interface IViewValuesVersionForGraphql {
40
40
  export type ViewFromGraphQL = Omit<IView, 'valuesVersions' | 'settings'> & {
41
41
  valuesVersions: IViewValuesVersionForGraphql[];
42
42
  };
43
+ export type PartialViewFromGraphQL = Omit<IView, 'id' | 'valuesVersions' | 'settings'> & {
44
+ id: string;
45
+ valuesVersions: IViewValuesVersionForGraphql[];
46
+ };
43
47
  export interface IViewFilterOptions extends ICoreEntityFilterOptions {
44
48
  created_by?: string;
45
49
  library?: string;
@@ -1,21 +1,17 @@
1
1
  import { ICoreSubscriptionsHelpersApp } from 'app/core/helpers/subscriptions';
2
- import { IGraphqlApp } from 'app/graphql/graphqlApp';
2
+ import { IGraphqlAppModule, IGraphqlApp } from 'app/graphql/graphqlApp';
3
3
  import { InitQueryContextFunc } from 'app/helpers/initQueryContext';
4
4
  import { IEventsManagerDomain } from 'domain/eventsManager/eventsManagerDomain';
5
5
  import { IPermissionDomain } from 'domain/permission/permissionDomain';
6
6
  import { IRecordDomain } from 'domain/record/recordDomain';
7
- import { Express } from 'express';
8
7
  import { IUtils } from 'utils/utils';
9
8
  import winston from 'winston';
10
- import { IAppGraphQLSchema } from '_types/graphql';
11
9
  import { IApplicationDomain } from '../../domain/application/applicationDomain';
12
10
  import { ValidateRequestTokenFunc } from '../helpers/validateRequestToken';
13
11
  import { IAuthApp } from '../auth/authApp';
14
12
  import { IGlobalSettingsDomain } from '../../domain/globalSettings/globalSettingsDomain';
15
- export interface IApplicationApp {
16
- registerRoute(app: Express): void;
17
- getGraphQLSchema(): Promise<IAppGraphQLSchema>;
18
- }
13
+ import { IServerRouteAppModule } from 'interface/server';
14
+ export type IApplicationApp = IGraphqlAppModule & IServerRouteAppModule;
19
15
  export interface IApplicationAppDeps {
20
16
  'core.app.graphql': IGraphqlApp;
21
17
  'core.app.auth': IAuthApp;
@@ -2,9 +2,8 @@ import { IApiKeyDomain } from 'domain/apiKey/apiKeyDomain';
2
2
  import { IRecordDomain } from 'domain/record/recordDomain';
3
3
  import { IUserDomain } from 'domain/user/userDomain';
4
4
  import { IValueDomain } from 'domain/value/valueDomain';
5
- import { Express, Response } from 'express';
5
+ import { Response } from 'express';
6
6
  import { IConfig } from '_types/config';
7
- import { IAppGraphQLSchema } from '_types/graphql';
8
7
  import { ICachesService } from '../../infra/cache/cacheService';
9
8
  import { ITokenUserData } from '../../_types/auth';
10
9
  import { IRequestWithContext } from '../../_types/express';
@@ -13,19 +12,21 @@ import { IOIDCClientService } from '../../infra/oidc/oidcClientService';
13
12
  import { InitQueryContextFunc } from '../helpers/initQueryContext';
14
13
  import { IConvertOIDCIdentifier } from '../helpers/convertOIDCIdentifier';
15
14
  import { IncomingHttpHeaders } from 'http';
16
- export interface IAuthApp {
17
- getGraphQLSchema(): IAppGraphQLSchema;
15
+ import { IRecordRepo } from '../../infra/record/recordRepo';
16
+ import { IGraphqlAppModule } from 'app/graphql/graphqlApp';
17
+ import { IServerRouteAppModule } from 'interface/server';
18
+ export interface IAuthApp extends IGraphqlAppModule, IServerRouteAppModule {
18
19
  validateRequestToken(params: {
19
20
  apiKey?: string;
20
21
  headers: IncomingHttpHeaders;
21
22
  cookies?: {};
22
23
  }, res: Response<unknown>): Promise<ITokenUserData>;
23
- registerRoute(app: Express): void;
24
24
  authenticateWithOIDCService(req: IRequestWithContext, res: Response<unknown>): Promise<void | Response>;
25
25
  }
26
26
  export interface IAuthAppDeps {
27
27
  'core.domain.value': IValueDomain;
28
28
  'core.domain.record': IRecordDomain;
29
+ 'core.infra.record': IRecordRepo;
29
30
  'core.domain.apiKey': IApiKeyDomain;
30
31
  'core.domain.user': IUserDomain;
31
32
  'core.infra.cache.cacheService': ICachesService;
@@ -35,4 +36,4 @@ export interface IAuthAppDeps {
35
36
  'core.app.helpers.convertOIDCIdentifier': IConvertOIDCIdentifier;
36
37
  config: IConfig;
37
38
  }
38
- export default function ({ 'core.domain.value': valueDomain, 'core.domain.record': recordDomain, 'core.domain.apiKey': apiKeyDomain, 'core.domain.user': userDomain, 'core.utils.logger': logger, 'core.infra.cache.cacheService': cacheService, 'core.infra.oidc.oidcClientService': oidcClientService, 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.convertOIDCIdentifier': convertOIDCIdentifier, config }: IAuthAppDeps): IAuthApp;
39
+ export default function ({ 'core.domain.value': valueDomain, 'core.domain.record': recordDomain, 'core.infra.record': recordRepo, 'core.domain.apiKey': apiKeyDomain, 'core.domain.user': userDomain, 'core.utils.logger': logger, 'core.infra.cache.cacheService': cacheService, 'core.infra.oidc.oidcClientService': oidcClientService, 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.convertOIDCIdentifier': convertOIDCIdentifier, config }: IAuthAppDeps): IAuthApp;