@aristid/leav-types 0.0.7-eab60f2 → 0.0.7-eccd77a

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 (51) hide show
  1. package/apps/core/config/default.d.ts +3 -1
  2. package/apps/core/config/test.d.ts +1 -0
  3. package/apps/core/src/__tests__/mockers/amqp.d.ts +8 -0
  4. package/apps/core/src/__tests__/mockers/logger.d.ts +7 -0
  5. package/apps/core/src/__tests__/mocks/actionsList.d.ts +6 -0
  6. package/apps/core/src/__tests__/mocks/attribute.d.ts +4 -1
  7. package/apps/core/src/__tests__/mocks/view.d.ts +1 -0
  8. package/apps/core/src/_constants/globalSettings.d.ts +1 -0
  9. package/apps/core/src/_types/actionsList.d.ts +2 -1
  10. package/apps/core/src/_types/attribute.d.ts +4 -2
  11. package/apps/core/src/_types/config.d.ts +5 -1
  12. package/apps/core/src/_types/errors.d.ts +3 -1
  13. package/apps/core/src/_types/globalSettings.d.ts +3 -0
  14. package/apps/core/src/_types/library.d.ts +2 -0
  15. package/apps/core/src/_types/tree.d.ts +1 -0
  16. package/apps/core/src/_types/value.d.ts +4 -2
  17. package/apps/core/src/_types/views.d.ts +38 -43
  18. package/apps/core/src/app/application/applicationApp.d.ts +3 -1
  19. package/apps/core/src/app/core/viewApp.d.ts +3 -1
  20. package/apps/core/src/domain/attribute/attributeDomain.d.ts +2 -0
  21. package/apps/core/src/domain/export/exportDomain.d.ts +8 -2
  22. package/apps/core/src/domain/helpers/calculationVariable/index.d.ts +2 -1
  23. package/apps/core/src/domain/permission/_types.d.ts +1 -9
  24. package/apps/core/src/domain/permission/helpers/globalPermission.d.ts +1 -1
  25. package/apps/core/src/domain/permission/helpers/permissionByUserGroups.d.ts +22 -4
  26. package/apps/core/src/domain/permission/helpers/reducePermissionsArray.d.ts +1 -1
  27. package/apps/core/src/domain/record/helpers/getAccessPermissionFilters.d.ts +24 -0
  28. package/apps/core/src/domain/record/helpers/index.d.ts +1 -0
  29. package/apps/core/src/domain/record/recordDomain.d.ts +12 -1
  30. package/apps/core/src/domain/value/helpers/{canSaveValue.d.ts → canSaveRecordValue.d.ts} +3 -3
  31. package/apps/core/src/domain/value/helpers/isEmptyValue.d.ts +5 -0
  32. package/apps/core/src/domain/value/helpers/validateValue.d.ts +1 -1
  33. package/apps/core/src/domain/view/viewDomain.d.ts +1 -0
  34. package/apps/core/src/errors/ApplicationError.d.ts +1 -1
  35. package/apps/core/src/errors/LeavError.d.ts +3 -3
  36. package/apps/core/src/infra/attributeTypes/attributeTypesRepo.d.ts +2 -2
  37. package/apps/core/src/infra/attributeTypes/helpers/getConditionPart.d.ts +1 -1
  38. package/apps/core/src/infra/db/dbUtils.d.ts +1 -3
  39. package/apps/core/src/infra/db/migrations/005-viewSortToArray.d.ts +7 -0
  40. package/apps/core/src/infra/db/migrations/006-addRequiredAttributeProperty.d.ts +11 -0
  41. package/apps/core/src/infra/db/migrations/007-updateHexColor.d.ts +9 -0
  42. package/apps/core/src/infra/db/migrations/008-addSkeletonApp.d.ts +7 -0
  43. package/apps/core/src/infra/oidc/oidcClientService.d.ts +3 -1
  44. package/apps/core/src/infra/permission/permissionRepo.d.ts +9 -1
  45. package/apps/core/src/infra/record/recordRepo.d.ts +2 -0
  46. package/apps/core/src/infra/tree/treeRepo.d.ts +1 -1
  47. package/apps/core/src/infra/value/valueRepo.d.ts +7 -2
  48. package/apps/core/src/infra/view/_types.d.ts +1 -0
  49. package/apps/core/src/pluginsLoader.d.ts +1 -1
  50. package/libs/utils/src/types/forms.d.ts +6 -1
  51. package/package.json +7 -2
@@ -41,6 +41,8 @@ export declare namespace auth {
41
41
  let wellKnownEndpoint: string;
42
42
  let clientId: string;
43
43
  let postLogoutRedirectUri: string;
44
+ let skipLogoutConfirmationPage: string | boolean;
45
+ let idTokenUserClaim: string;
44
46
  }
45
47
  let testApiKey: string;
46
48
  }
@@ -186,5 +188,5 @@ export declare namespace elasticSearch {
186
188
  let url_1: string;
187
189
  export { url_1 as url };
188
190
  }
189
- export declare let pluginsPath: string;
191
+ export declare let pluginsPath: string | any[];
190
192
  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[];
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ consumer: {
3
+ channel: {
4
+ ack: jest.Mock<any, any, any>;
5
+ };
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ info: jest.Mock<any, any, any>;
3
+ warn: jest.Mock<any, any, any>;
4
+ error: jest.Mock<any, any, any>;
5
+ debug: jest.Mock<any, any, any>;
6
+ };
7
+ export default _default;
@@ -7,6 +7,7 @@ export declare const mockActionStringOutput: {
7
7
  input_types: ActionsListIOTypes[];
8
8
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
9
9
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
10
+ compute: boolean;
10
11
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
11
12
  };
12
13
  export declare const mockActionNumberOutput: {
@@ -17,6 +18,7 @@ export declare const mockActionNumberOutput: {
17
18
  input_types: ActionsListIOTypes[];
18
19
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
19
20
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
21
+ compute: boolean;
20
22
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
21
23
  };
22
24
  export declare const mockActionBooleanOutput: {
@@ -27,6 +29,7 @@ export declare const mockActionBooleanOutput: {
27
29
  input_types: ActionsListIOTypes[];
28
30
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
29
31
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
32
+ compute: boolean;
30
33
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
31
34
  };
32
35
  export declare const mockActionObjectOutput: {
@@ -37,6 +40,7 @@ export declare const mockActionObjectOutput: {
37
40
  input_types: ActionsListIOTypes[];
38
41
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
39
42
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
43
+ compute: boolean;
40
44
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
41
45
  };
42
46
  export declare const mockActionAllOutput: {
@@ -47,6 +51,7 @@ export declare const mockActionAllOutput: {
47
51
  output_types: ActionsListIOTypes[];
48
52
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
49
53
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
54
+ compute: boolean;
50
55
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
51
56
  };
52
57
  export declare const mockActionValidateFormat: {
@@ -57,6 +62,7 @@ export declare const mockActionValidateFormat: {
57
62
  input_types: ActionsListIOTypes[];
58
63
  params?: import("../../_types/actionsList").ActionsListParamsConfig<Record<string | number | symbol, boolean>>[];
59
64
  error_message?: import("../../_types/systemTranslation").ISystemTranslation;
65
+ compute: boolean;
60
66
  action: (values: import("../../_types/value").IValue[], params: {} & {}, ctx: import("../../_types/actionsList").IActionsListContext) => import("../../_types/actionsList").IActionsListFunctionResult | Promise<import("../../_types/actionsList").IActionsListFunctionResult>;
61
67
  };
62
68
  export declare const mockAvailActions: IActionsListFunction[];
@@ -1,5 +1,6 @@
1
1
  import { AttributeFormats, AttributeTypes, 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;
@@ -15,6 +16,8 @@ export declare const mockAttrTree: {
15
16
  linked_tree: string;
16
17
  system?: boolean;
17
18
  readonly?: boolean;
19
+ required?: boolean;
20
+ character_limit?: number;
18
21
  format?: AttributeFormats;
19
22
  linked_library?: string;
20
23
  embedded_fields?: import("../../_types/attribute").IEmbeddedAttribute[];
@@ -26,8 +29,8 @@ export declare const mockAttrTree: {
26
29
  values_list?: import("../../_types/attribute").IValuesListConf;
27
30
  reverse_link?: string | IAttribute;
28
31
  unique?: boolean;
29
- maxLength?: number;
30
32
  description?: import("../../_types/systemTranslation").ISystemTranslation;
33
+ settings?: import("../../_types/shared").IKeyValue<any>;
31
34
  label?: import("../../_types/systemTranslation").ISystemTranslation | string;
32
35
  };
33
36
  export declare const mockAttrTreeVersionable: IAttribute;
@@ -1,2 +1,3 @@
1
+ import { IView } from '../../_types/views';
1
2
  export declare const mockViewBeforeCreation: IView;
2
3
  export declare const mockView: MandatoryId<IView>;
@@ -1 +1,2 @@
1
1
  export declare const APP_DEFAULT_NAME = "LEAV Engine";
2
+ export declare const DEFAULT_APPLICATION = "portal";
@@ -30,7 +30,7 @@ export type ActionsListParamsConfig<ParamsRequired extends Record<string, boolea
30
30
  type: 'boolean' | 'string' | 'number';
31
31
  description: string;
32
32
  required: ParamsRequired[Name];
33
- default_value: string;
33
+ helper_value: string;
34
34
  };
35
35
  }[keyof ParamsRequired];
36
36
  export interface IActionsListFunctionResult {
@@ -57,6 +57,7 @@ export interface IActionsListFunction<ParamsRequired extends Record<string | num
57
57
  output_types: ActionsListIOTypes[];
58
58
  params?: Array<ActionsListParamsConfig<ParamsRequired>>;
59
59
  error_message?: ISystemTranslation;
60
+ compute: boolean;
60
61
  action: (values: IValue[], params: PartialByCondition<ActionsListParams<keyof ParamsRequired>, ParamsRequired>, ctx: IActionsListContext) => IActionsListFunctionResult | Promise<IActionsListFunctionResult>;
61
62
  }
62
63
  export interface IActionsListSavedAction {
@@ -1,13 +1,15 @@
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';
8
8
  export interface IAttribute extends ICoreEntity {
9
9
  system?: boolean;
10
10
  readonly?: boolean;
11
+ required?: boolean;
12
+ character_limit?: number;
11
13
  type: AttributeTypes;
12
14
  format?: AttributeFormats;
13
15
  linked_library?: string;
@@ -21,8 +23,8 @@ export interface IAttribute extends ICoreEntity {
21
23
  values_list?: IValuesListConf;
22
24
  reverse_link?: string | IAttribute;
23
25
  unique?: boolean;
24
- maxLength?: number;
25
26
  description?: ISystemTranslation;
27
+ settings?: IKeyValue<any>;
26
28
  }
27
29
  export declare enum ValueVersionMode {
28
30
  SIMPLE = "simple",
@@ -28,7 +28,7 @@ export interface IConfig {
28
28
  dbProfiler: IDbProfilerConfig;
29
29
  instanceId: string;
30
30
  elasticSearch: IElasticSearchConfig;
31
- pluginsPath: string;
31
+ pluginsPath: string[];
32
32
  }
33
33
  export declare enum CoreMode {
34
34
  SERVER = "server",
@@ -75,11 +75,15 @@ export interface IAuth {
75
75
  wellKnownEndpoint?: string;
76
76
  clientId?: string;
77
77
  postLogoutRedirectUri?: string;
78
+ skipLogoutConfirmationPage?: boolean;
79
+ idTokenUserClaim?: string;
78
80
  } | {
79
81
  enable: true;
80
82
  wellKnownEndpoint: string;
81
83
  clientId: string;
82
84
  postLogoutRedirectUri: string;
85
+ skipLogoutConfirmationPage?: boolean;
86
+ idTokenUserClaim: string;
83
87
  };
84
88
  testApiKey?: string;
85
89
  }
@@ -63,6 +63,7 @@ export declare enum Errors {
63
63
  PREVIEWS_SETTINGS_NOT_ALLOWED = "PREVIEWS_SETTINGS_NOT_ALLOWED",
64
64
  PROTECTED_ENDPOINT = "PROTECTED_ENDPOINT",
65
65
  READONLY_ATTRIBUTE = "READONLY_ATTRIBUTE",
66
+ REQUIRED_ATTRIBUTE = "REQUIRED_ATTRIBUTE",
66
67
  REQUIRED_ATTRIBUTE_FORMAT = "REQUIRED_ATTRIBUTE_FORMAT",
67
68
  REQUIRED_ATTRIBUTE_LABEL = "REQUIRED_ATTRIBUTE_LABEL",
68
69
  REQUIRED_ATTRIBUTE_LINKED_LIBRARY = "REQUIRED_ATTRIBUTE_LINKED_LIBRARY",
@@ -96,7 +97,8 @@ export declare enum Errors {
96
97
  UNKNOWN_VERSION_TREE = "UNKNOWN_VERSION_TREE",
97
98
  UNKNOWN_VIEW = "UNKNOWN_VIEW",
98
99
  USER_IS_NOT_VIEW_OWNER = "USER_IS_NOT_VIEW_OWNER",
99
- VALUE_NOT_UNIQUE = "VALUE_NOT_UNIQUE"
100
+ VALUE_NOT_UNIQUE = "VALUE_NOT_UNIQUE",
101
+ VALUE_EXCEEDS_CHARACTER_LIMIT = "VALUE_EXCEEDS_CHARACTER_LIMIT"
100
102
  }
101
103
  export interface IExtendedErrorMsg {
102
104
  msg: Errors | string;
@@ -1,4 +1,6 @@
1
+ import { IKeyValue } from './shared';
1
2
  export interface IGlobalSettings {
3
+ defaultApp: string;
2
4
  name: string;
3
5
  icon?: {
4
6
  library: string;
@@ -8,4 +10,5 @@ export interface IGlobalSettings {
8
10
  library: string;
9
11
  recordId: string;
10
12
  };
13
+ settings?: IKeyValue<any>;
11
14
  }
@@ -3,6 +3,7 @@ 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;
@@ -31,6 +32,7 @@ export interface ILibrary extends ICoreEntity {
31
32
  recordId: string;
32
33
  };
33
34
  previewsSettings?: ILibraryPreviewsSettings[];
35
+ settings?: IKeyValue<any>;
34
36
  }
35
37
  export interface ILibraryFilterOptions extends ICoreEntityFilterOptions {
36
38
  system?: boolean;
@@ -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;
@@ -2,6 +2,7 @@ import { AnyPrimitive, Override } from '@leav/utils';
2
2
  import { IDbEdge } from 'infra/db/_types';
3
3
  import { IRecord } from './record';
4
4
  import { ITreeNode, TreePaths } from './tree';
5
+ import { EMPTY_VALUE } from 'infra/value/valueRepo';
5
6
  export type IValueFromGql = Override<Omit<IValue, 'version'>, {
6
7
  value: IValue['payload'];
7
8
  metadata: Array<{
@@ -28,6 +29,7 @@ export interface IDbValueVersion {
28
29
  export interface IValueMetadata {
29
30
  [fieldName: string]: IStandardValue | AnyPrimitive;
30
31
  }
32
+ export type EmptyValue = typeof EMPTY_VALUE;
31
33
  export interface IGenericValue {
32
34
  id_value?: string;
33
35
  attribute?: string;
@@ -41,8 +43,8 @@ export interface IGenericValue {
41
43
  isCalculated?: boolean;
42
44
  }
43
45
  export interface IStandardValue extends IGenericValue {
44
- payload?: any;
45
- raw_payload?: any;
46
+ payload?: any | EmptyValue;
47
+ raw_payload?: any | EmptyValue;
46
48
  }
47
49
  export interface ILinkValue extends IGenericValue {
48
50
  payload?: IRecord;
@@ -10,48 +10,43 @@ export declare enum ViewSizes {
10
10
  MEDIUM = "MEDIUM",
11
11
  BIG = "BIG"
12
12
  }
13
- declare global {
14
- interface IView extends ICoreEntity {
15
- shared?: boolean;
16
- created_by?: string;
17
- created_at?: number;
18
- modified_at?: number;
19
- library?: string;
20
- description?: ISystemTranslation;
21
- color?: string;
22
- display?: IViewDisplay;
23
- filters?: IRecordFilterLight[];
24
- sort?: IRecordSortLight;
25
- valuesVersions?: IViewValuesVersion;
26
- settings: IViewSettings;
27
- }
28
- interface IViewDisplay {
29
- type: ViewTypes;
30
- size: ViewSizes;
31
- }
32
- interface IViewSettingsNameVal {
33
- name: string;
34
- value: unknown;
35
- }
36
- type ViewFromGraphQL = Omit<IView, 'valuesVersions' | 'settings'> & {
37
- valuesVersions: IViewValuesVersionForGraphql[];
38
- settings: IViewSettingsNameVal[];
13
+ interface IViewDisplay {
14
+ type: ViewTypes;
15
+ size: ViewSizes;
16
+ }
17
+ interface IViewValuesVersion {
18
+ [treeId: string]: string;
19
+ }
20
+ export interface IView extends ICoreEntity {
21
+ shared?: boolean;
22
+ created_by?: string;
23
+ created_at?: number;
24
+ modified_at?: number;
25
+ library?: string;
26
+ description?: ISystemTranslation;
27
+ color?: string;
28
+ display?: IViewDisplay;
29
+ filters?: IRecordFilterLight[];
30
+ sort?: IRecordSortLight[];
31
+ valuesVersions?: IViewValuesVersion;
32
+ attributes?: string[];
33
+ }
34
+ export interface IViewValuesVersionForGraphql {
35
+ treeId: string;
36
+ treeNode: {
37
+ id: string;
39
38
  };
40
- interface IViewSettings {
41
- [key: string]: unknown;
42
- }
43
- interface IViewFilterOptions extends ICoreEntityFilterOptions {
44
- created_by?: string;
45
- library?: string;
46
- type?: ViewTypes;
47
- }
48
- interface IViewValuesVersion {
49
- [treeId: string]: string;
50
- }
51
- interface IViewValuesVersionForGraphql {
52
- treeId: string;
53
- treeNode: {
54
- id: string;
55
- };
56
- }
57
39
  }
40
+ export type ViewFromGraphQL = Omit<IView, 'valuesVersions' | 'settings'> & {
41
+ valuesVersions: IViewValuesVersionForGraphql[];
42
+ };
43
+ export type PartialViewFromGraphQL = Omit<IView, 'id' | 'valuesVersions' | 'settings'> & {
44
+ id: string;
45
+ valuesVersions: IViewValuesVersionForGraphql[];
46
+ };
47
+ export interface IViewFilterOptions extends ICoreEntityFilterOptions {
48
+ created_by?: string;
49
+ library?: string;
50
+ type?: ViewTypes;
51
+ }
52
+ export {};
@@ -11,6 +11,7 @@ import { IAppGraphQLSchema } from '_types/graphql';
11
11
  import { IApplicationDomain } from '../../domain/application/applicationDomain';
12
12
  import { ValidateRequestTokenFunc } from '../helpers/validateRequestToken';
13
13
  import { IAuthApp } from '../auth/authApp';
14
+ import { IGlobalSettingsDomain } from '../../domain/globalSettings/globalSettingsDomain';
14
15
  export interface IApplicationApp {
15
16
  registerRoute(app: Express): void;
16
17
  getGraphQLSchema(): Promise<IAppGraphQLSchema>;
@@ -25,8 +26,9 @@ export interface IApplicationAppDeps {
25
26
  'core.domain.permission': IPermissionDomain;
26
27
  'core.domain.record': IRecordDomain;
27
28
  'core.domain.eventsManager': IEventsManagerDomain;
29
+ 'core.domain.globalSettings': IGlobalSettingsDomain;
28
30
  'core.utils.logger': winston.Winston;
29
31
  'core.utils': IUtils;
30
32
  config: any;
31
33
  }
32
- export default function ({ 'core.app.graphql': graphqlApp, 'core.app.auth': authApp, 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.validateRequestToken': validateRequestToken, 'core.app.core.subscriptionsHelper': subscriptionsHelper, 'core.domain.application': applicationDomain, 'core.domain.permission': permissionDomain, 'core.domain.record': recordDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.utils.logger': logger, 'core.utils': utils, config }: IApplicationAppDeps): IApplicationApp;
34
+ export default function ({ 'core.app.graphql': graphqlApp, 'core.app.auth': authApp, 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.validateRequestToken': validateRequestToken, 'core.app.core.subscriptionsHelper': subscriptionsHelper, 'core.domain.application': applicationDomain, 'core.domain.permission': permissionDomain, 'core.domain.record': recordDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.domain.globalSettings': globalSettings, 'core.utils.logger': logger, 'core.utils': utils, config }: IApplicationAppDeps): IApplicationApp;
@@ -2,13 +2,15 @@ import { IRecordDomain } from 'domain/record/recordDomain';
2
2
  import { IViewDomain } from 'domain/view/viewDomain';
3
3
  import { IUtils } from 'utils/utils';
4
4
  import { IAppGraphQLSchema } from '_types/graphql';
5
+ import { IAttributeDomain } from 'domain/attribute/attributeDomain';
5
6
  interface IDeps {
6
7
  'core.domain.record': IRecordDomain;
7
8
  'core.domain.view': IViewDomain;
9
+ 'core.domain.attribute': IAttributeDomain;
8
10
  'core.utils': IUtils;
9
11
  }
10
12
  export interface IViewApp {
11
13
  getGraphQLSchema(): Promise<IAppGraphQLSchema>;
12
14
  }
13
- export default function ({ 'core.domain.view': viewDomain, 'core.domain.record': recordDomain, 'core.utils': utils }: IDeps): IViewApp;
15
+ export default function ({ 'core.domain.view': viewDomain, 'core.domain.record': recordDomain, 'core.domain.attribute': attributeDomain, 'core.utils': utils }: IDeps): IViewApp;
14
16
  export {};
@@ -57,6 +57,8 @@ export interface IAttributeDomain {
57
57
  attributeId: string;
58
58
  ctx: IQueryInfos;
59
59
  }): Promise<ILibrary[]>;
60
+ getFormAttributes(libraryId: string, formId: string, ctx: IQueryInfos): Promise<IAttribute[]>;
61
+ doesCompute(attrData: IAttribute): boolean;
60
62
  }
61
63
  export interface IAttributeDomainDeps {
62
64
  'core.infra.attribute': IAttributeRepo;
@@ -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;
@@ -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;
@@ -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,2 @@
1
1
  export { default as sendRecordUpdateEvent } from './sendRecordUpdateEvent';
2
+ export { default as getAccessPermissionFilters } from './getAccessPermissionFilters';
@@ -19,10 +19,16 @@ 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';
22
27
  export interface IRecordDomain {
23
28
  createRecord(params: {
24
29
  library: string;
25
30
  values?: IValue[];
31
+ verifyRequiredAttributes?: boolean;
26
32
  ctx: IQueryInfos;
27
33
  }): Promise<ICreateRecordResult>;
28
34
  /**
@@ -88,15 +94,20 @@ export interface IRecordDomainDeps {
88
94
  'core.domain.value': IValueDomain;
89
95
  'core.domain.permission.record': IRecordPermissionDomain;
90
96
  'core.domain.permission.library': ILibraryPermissionDomain;
97
+ 'core.domain.permission.attribute': IAttributePermissionDomain;
98
+ 'core.domain.permission.recordAttribute': IRecordAttributePermissionDomain;
99
+ 'core.domain.permission.helpers.defaultPermission': IDefaultPermissionHelper;
91
100
  'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
92
101
  'core.domain.helpers.validate': IValidateHelper;
93
102
  'core.domain.record.helpers.sendRecordUpdateEvent': SendRecordUpdateEventHelper;
94
103
  'core.infra.library': ILibraryRepo;
95
104
  'core.infra.tree': ITreeRepo;
96
105
  'core.infra.value': IValueRepo;
106
+ 'core.infra.form': IFormRepo;
107
+ 'core.infra.permission': IPermissionRepo;
97
108
  'core.domain.eventsManager': IEventsManagerDomain;
98
109
  'core.infra.cache.cacheService': ICachesService;
99
110
  'core.utils': IUtils;
100
111
  translator: i18n;
101
112
  }
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;
113
+ 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;
@@ -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;
@@ -10,7 +10,7 @@ interface IValidateValueParams {
10
10
  attributeProps: IAttribute;
11
11
  value: IValue;
12
12
  library: string;
13
- recordId: string;
13
+ recordId?: string;
14
14
  infos?: IQueryInfos;
15
15
  keepEmpty: boolean;
16
16
  deps: {
@@ -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,13 @@ 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
+ constructor(type: E, message?: string, details?: ILeavErrorDetails);
18
18
  }
19
19
  export {};
@@ -48,9 +48,9 @@ export interface IAttributeTypeRepo {
48
48
  /**
49
49
  * Check if a value is unique
50
50
  */
51
- isValueUnique?({ library, recordId, attribute, value, ctx }: {
51
+ isValueUsed?({ library, excludedRecordId, attribute, value, ctx }: {
52
52
  library: string;
53
- recordId: string;
53
+ excludedRecordId?: string;
54
54
  attribute: IAttribute;
55
55
  value: IValue;
56
56
  ctx: IQueryInfos;
@@ -1,5 +1,5 @@
1
1
  import { AqlLiteral, GeneratedAqlQuery } from 'arangojs/aql';
2
2
  import { IAttribute } from '../../../_types/attribute';
3
3
  import { AttributeCondition } from '../../../_types/record';
4
- export type GetConditionPart = (valueIdentifier: string | AqlLiteral, condition: AttributeCondition, value: string | number | boolean, attribute: IAttribute) => GeneratedAqlQuery;
4
+ export type GetConditionPart = (valueIdentifier: string | AqlLiteral, condition: AttributeCondition, value: string | number | boolean, attribute: IAttribute, isCountFilter: boolean) => GeneratedAqlQuery;
5
5
  export default function (): GetConditionPart;
@@ -1,6 +1,5 @@
1
1
  import { GeneratedAqlQuery } from 'arangojs/aql';
2
2
  import { AwilixContainer } from 'awilix';
3
- import { IPluginsRepo } from 'infra/plugins/pluginsRepo';
4
3
  import * as winston from 'winston';
5
4
  import { IConfig } from '_types/config';
6
5
  import { IList, IPaginationParams, ISortParams } from '_types/list';
@@ -33,8 +32,7 @@ interface IDeps {
33
32
  'core.infra.db.dbService'?: IDbService;
34
33
  'core.infra.cache.cacheService'?: ICachesService;
35
34
  'core.utils.logger'?: winston.Winston;
36
- 'core.infra.plugins'?: IPluginsRepo;
37
35
  config?: IConfig;
38
36
  }
39
- export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.cache.cacheService': cacheService, 'core.utils.logger': logger, 'core.infra.plugins': pluginsRepo, config }?: IDeps): IDbUtils;
37
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.cache.cacheService': cacheService, 'core.utils.logger': logger, config }?: IDeps): IDbUtils;
40
38
  export {};
@@ -0,0 +1,7 @@
1
+ import { IDbService } from '../dbService';
2
+ import { IMigration } from '_types/migration';
3
+ interface IDeps {
4
+ 'core.infra.db.dbService'?: IDbService;
5
+ }
6
+ export default function ({ 'core.infra.db.dbService': dbService }?: IDeps): IMigration;
7
+ export {};
@@ -0,0 +1,11 @@
1
+ import { type i18n } from 'i18next';
2
+ import { type IDbService } from '../dbService';
3
+ import { type IConfig } from '../../../_types/config';
4
+ import { type IMigration } from '../../../_types/migration';
5
+ interface IDeps {
6
+ 'core.infra.db.dbService'?: IDbService;
7
+ translator?: i18n;
8
+ config?: IConfig;
9
+ }
10
+ export default function ({ 'core.infra.db.dbService': dbService }?: IDeps): IMigration;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import { type IDbService } from '../dbService';
2
+ import { type IMigration } from '../../../_types/migration';
3
+ import { IAttributeRepo } from 'infra/attribute/attributeRepo';
4
+ interface IDeps {
5
+ 'core.infra.db.dbService'?: IDbService;
6
+ 'core.infra.attribute'?: IAttributeRepo;
7
+ }
8
+ export default function ({ 'core.infra.db.dbService': dbService, 'core.infra.attribute': attributeRepo }?: IDeps): IMigration;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ import { type IDbService } from '../dbService';
2
+ import { type IMigration } from '../../../_types/migration';
3
+ interface IDeps {
4
+ 'core.infra.db.dbService'?: IDbService;
5
+ }
6
+ export default function ({ 'core.infra.db.dbService': dbService }?: IDeps): IMigration;
7
+ export {};
@@ -12,7 +12,9 @@ export interface IOIDCClientService {
12
12
  redirectUri: string;
13
13
  queryId: string;
14
14
  }) => Promise<string>;
15
- getLogoutUrl: () => string;
15
+ getLogoutUrl: (params: {
16
+ userId: string;
17
+ }) => Promise<string>;
16
18
  saveOIDCTokens: (params: {
17
19
  userId: string;
18
20
  tokens: TokenSet;
@@ -1,5 +1,5 @@
1
1
  import { IQueryInfos } from '_types/queryInfos';
2
- import { IPermission, IPermissionsTreeTarget, PermissionTypes } from '../../_types/permissions';
2
+ import { IPermission, IPermissionsTreeTarget, PermissionsActions, PermissionTypes } from '../../_types/permissions';
3
3
  import { IDbService } from '../db/dbService';
4
4
  import { IDbUtils } from '../db/dbUtils';
5
5
  export interface IPermissionRepo {
@@ -14,6 +14,14 @@ export interface IPermissionRepo {
14
14
  permissionTreeTarget?: IPermissionsTreeTarget;
15
15
  ctx: IQueryInfos;
16
16
  }): Promise<IPermission | null>;
17
+ getAllPermissionsForTree({ type, applyTo, actionKey, treeId, groupsIds, ctx }: {
18
+ type: PermissionTypes;
19
+ applyTo: string;
20
+ actionKey: PermissionsActions;
21
+ treeId: string;
22
+ groupsIds: string[];
23
+ ctx: IQueryInfos;
24
+ }): Promise<IPermission[]>;
17
25
  }
18
26
  export declare const PERM_COLLECTION_NAME = "core_permissions";
19
27
  export declare const USERS_GROUP_ATTRIBUTE_NAME = "user_groups";
@@ -11,6 +11,7 @@ import { IDbUtils } from '../db/dbUtils';
11
11
  import { IFilterTypesHelper } from './helpers/filterTypes';
12
12
  import { GetSearchVariableName } from './helpers/getSearchVariableName';
13
13
  import { GetSearchVariablesQueryPart } from './helpers/getSearchVariablesQueryPart';
14
+ import { IGetAccessPermissionsValue } from 'domain/record/helpers/getAccessPermissionFilters';
14
15
  export interface IFindRequestResult {
15
16
  initialVars: GeneratedAqlQuery[];
16
17
  queryPart: GeneratedAqlQuery;
@@ -44,6 +45,7 @@ export interface IRecordRepo {
44
45
  retrieveInactive?: boolean;
45
46
  fulltextSearch?: string;
46
47
  ctx: IQueryInfos;
48
+ accessPermissionFilters?: IGetAccessPermissionsValue[];
47
49
  }): Promise<IListWithCursor<IRecord>>;
48
50
  }
49
51
  export interface IRecordRepoDeps {
@@ -115,7 +115,7 @@ export interface ITreeRepo {
115
115
  ctx: IQueryInfos;
116
116
  }): Promise<IList<ITreeNode>>;
117
117
  /**
118
- * Return all ancestors of an element, including element itself, but excluding tree root
118
+ * Return all ancestors of an element, from root to element, but excluding tree root
119
119
  *
120
120
  * @param treeId
121
121
  * @param element
@@ -5,6 +5,7 @@ import { IValue, IValuesOptions } from '_types/value';
5
5
  import { IAttributeTypesRepo, IAttributeWithRevLink } from '../attributeTypes/attributeTypesRepo';
6
6
  export declare const VALUES_LINKS_COLLECTION = "core_edge_values_links";
7
7
  export declare const VALUES_COLLECTION = "core_values";
8
+ export declare const EMPTY_VALUE = "__empty_value__";
8
9
  export interface IValueRepo {
9
10
  createValue({ library, recordId, attribute, value, ctx }: {
10
11
  library: string;
@@ -33,9 +34,13 @@ export interface IValueRepo {
33
34
  value: IValue;
34
35
  ctx: IQueryInfos;
35
36
  }): Promise<IValue>;
36
- isValueUnique({ library, recordId, attribute, value, ctx }: {
37
+ /**
38
+ * Check if a value is unique expeted for the given record
39
+ * if recordId is null, it will check for the whole library
40
+ */
41
+ isValueUsed({ library, excludedRecordId, attribute, value, ctx }: {
37
42
  library: string;
38
- recordId: string;
43
+ excludedRecordId?: string;
39
44
  attribute: IAttribute;
40
45
  value: IValue;
41
46
  ctx: IQueryInfos;
@@ -3,6 +3,7 @@ import { IDbUtils } from 'infra/db/dbUtils';
3
3
  import { IList } from '_types/list';
4
4
  import { IGetCoreEntitiesParams } from '_types/shared';
5
5
  import { IQueryInfos } from '../../_types/queryInfos';
6
+ import { IView } from '_types/views';
6
7
  export declare const VIEWS_COLLECTION_NAME = "core_views";
7
8
  export interface IViewRepo {
8
9
  createView(view: IView, ctx: IQueryInfos): Promise<IView>;
@@ -1,2 +1,2 @@
1
1
  import { AwilixContainer } from 'awilix';
2
- export declare const initPlugins: (folder: string | null, depsManager: AwilixContainer) => Promise<void>;
2
+ export declare const initPlugins: (pluginsPath: string[], depsManager: AwilixContainer) => Promise<void>;
@@ -4,7 +4,8 @@ export declare enum FormUIElementTypes {
4
4
  FIELDS_CONTAINER = "fields_container",
5
5
  TAB_FIELDS_CONTAINER = "tab_fields_container",
6
6
  TEXT_BLOCK = "text_block",
7
- TABS = "tabs"
7
+ TABS = "tabs",
8
+ FRAME = "frame"
8
9
  }
9
10
  export declare enum FormFieldTypes {
10
11
  TEXT_INPUT = "input_field",
@@ -41,6 +42,10 @@ export interface IFormTabsSettings {
41
42
  export interface IFormTextBlockSettings {
42
43
  content?: string;
43
44
  }
45
+ export interface IFormFrameSettings {
46
+ url: string;
47
+ height?: string;
48
+ }
44
49
  export interface IFormDateFieldSettings extends ICommonFieldsSettings {
45
50
  withTime: boolean;
46
51
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aristid/leav-types",
3
- "version": "0.0.7-eab60f2",
3
+ "version": "0.0.7-eccd77a",
4
4
  "description": "Shared Leav types",
5
5
  "scripts": {
6
6
  "tscheck": "",
@@ -12,9 +12,14 @@
12
12
  "repository": "https://github.com/leav-solutions/leav-engine",
13
13
  "dependencies": {
14
14
  "@leav/utils": "0.0.3",
15
+ "@types/amqplib": "^0",
15
16
  "@types/express": "5.0.0",
16
17
  "@types/jest": "29.5.14",
18
+ "amqplib": "0.10.5",
17
19
  "arangojs": "8.1.0",
18
- "jest": "29.7.0"
20
+ "awilix": "12.0.4",
21
+ "i18next": "24.2.0",
22
+ "jest": "29.7.0",
23
+ "winston": "2.4.6"
19
24
  }
20
25
  }