@aristid/leav-types 1.12.0-9cba6d9f → 1.12.0-a015a8b6

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 (45) hide show
  1. package/CLAUDE.md +42 -0
  2. package/apps/core/src/__tests__/e2e/_gqlTypes/index.d.ts +110 -4
  3. package/apps/core/src/__tests__/e2e/api/_fixtures/fakeplugin/domain/fakeDomain.d.ts +6 -2
  4. package/apps/core/src/__tests__/e2e/api/automation/automation.test.d.ts +1 -0
  5. package/apps/core/src/__tests__/e2e/api/e2eUtils.d.ts +12 -7
  6. package/apps/core/src/__tests__/integration/infra/automationRuleRepo.test.d.ts +1 -0
  7. package/apps/core/src/__tests__/integration/infra/integrationTestRepoUtils.d.ts +3 -0
  8. package/apps/core/src/_types/automation.d.ts +21 -0
  9. package/apps/core/src/_types/cronTask.d.ts +14 -0
  10. package/apps/core/src/_types/errors.d.ts +1 -0
  11. package/apps/core/src/_types/events.d.ts +3 -0
  12. package/apps/core/src/_types/extensionPoints.d.ts +5 -0
  13. package/apps/core/src/_types/permissions.d.ts +1 -0
  14. package/apps/core/src/app/core/attributeApp/attributeApp.d.ts +2 -0
  15. package/apps/core/src/app/core/automationApp.d.ts +17 -0
  16. package/apps/core/src/app/core/filesManagerApp.d.ts +3 -1
  17. package/apps/core/src/app/core/index.d.ts +1 -0
  18. package/apps/core/src/app/core/logApp.d.ts +3 -1
  19. package/apps/core/src/app/core/tasksManagerApp.d.ts +3 -1
  20. package/apps/core/src/domain/automation/automationDomain.d.ts +32 -0
  21. package/apps/core/src/domain/automation/index.d.ts +1 -0
  22. package/apps/core/src/domain/library/helpers/index.d.ts +0 -1
  23. package/apps/core/src/domain/record/helpers/getRecordIdentity.d.ts +27 -0
  24. package/apps/core/src/domain/record/helpers/getRecordIdentity.spec.d.ts +1 -0
  25. package/apps/core/src/domain/record/helpers/index.d.ts +1 -1
  26. package/apps/core/src/domain/record/recordDomain.d.ts +3 -11
  27. package/apps/core/src/domain/tasksManager/cronTasksManagerDomain.d.ts +13 -0
  28. package/apps/core/src/domain/tasksManager/cronTasksManagerDomain.spec.d.ts +1 -0
  29. package/apps/core/src/domain/tasksManager/index.d.ts +1 -0
  30. package/apps/core/src/domain/value/helpers/formatValue.d.ts +17 -0
  31. package/apps/core/src/domain/value/helpers/getRecordFieldValue.d.ts +27 -0
  32. package/apps/core/src/domain/value/helpers/getRecordFieldValue.spec.d.ts +1 -0
  33. package/apps/core/src/domain/value/helpers/getValues.d.ts +26 -0
  34. package/apps/core/src/domain/value/helpers/getValues.spec.d.ts +1 -0
  35. package/apps/core/src/domain/value/helpers/index.d.ts +7 -0
  36. package/apps/core/src/domain/value/helpers/runActionsList.d.ts +10 -0
  37. package/apps/core/src/domain/value/tasks/saveValueBulk.d.ts +7 -4
  38. package/apps/core/src/domain/value/valueDomain.d.ts +9 -1
  39. package/apps/core/src/infra/automation/automationRuleRepo.d.ts +23 -0
  40. package/apps/core/src/infra/automation/index.d.ts +1 -0
  41. package/apps/core/src/infra/db/migrations/019-automationRuleCollection.d.ts +7 -0
  42. package/apps/core/tsconfig.types.tsbuildinfo +1 -1
  43. package/libs/utils/src/types/events.d.ts +3 -0
  44. package/package.json +1 -1
  45. package/apps/core/src/domain/record/helpers/getRecordFieldValue.spec.d.ts +0 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,42 @@
1
+ # libs/types — CLAUDE.md
2
+
3
+ `@aristid/leav-types` — Types TypeScript de `apps/core` publiés sur npm pour les plugins externes.
4
+
5
+ ## Ce que c'est
6
+
7
+ Ce package ne contient **pas de code source** — c'est une projection des types générés
8
+ depuis `apps/core`, destinée aux **développeurs de plugins** qui étendent le core.
9
+
10
+ > ⚠️ Ce package **n'est pas utilisé dans le monorepo lui-même**. Il est uniquement
11
+ > consommé par des repos externes (plugins tiers du core).
12
+
13
+ ## Publication CI (GitLab)
14
+
15
+ Publié automatiquement sur **npm public** (`@aristid/leav-types`) via GitLab CI,
16
+ déclenché par tout changement dans `apps/core/**/*` :
17
+
18
+ - **`next`** — à chaque push sur `develop`
19
+ - **`latest`** — sur les releases taguées
20
+
21
+ ```bash
22
+ # Commande de génération (lancée par le CI)
23
+ yarn workspace @aristid/leav-types generate
24
+ ```
25
+
26
+ ## Problème connu : les enums ne sont pas exportés ⚠️
27
+
28
+ La commande `generate` (basée sur `build-types` du core) n'exporte pas les enums TypeScript.
29
+ Les consommateurs du package doivent **réécrire les enums manuellement** de leur côté —
30
+ ce qui est une source de désynchronisation et de maintenance coûteuse.
31
+
32
+ **Piste de résolution envisagée :** publier davantage de code du core directement
33
+ (pas uniquement les types), de façon à exposer les enums comme du code exécutable.
34
+ C'est un chantier à prioriser.
35
+
36
+ ## Ne jamais modifier manuellement
37
+
38
+ Toujours régénérer via le CI ou :
39
+
40
+ ```bash
41
+ yarn workspace @aristid/leav-types generate
42
+ ```
@@ -244,6 +244,17 @@ export declare enum AttributesSortableFields {
244
244
  multiple_values = "multiple_values",
245
245
  type = "type"
246
246
  }
247
+ export declare enum AutomationRuleSortableFields {
248
+ id = "id"
249
+ }
250
+ export type AutomationRulesFiltersInput = {
251
+ id?: InputMaybe<Scalars['ID']['input']>;
252
+ label?: InputMaybe<Scalars['String']['input']>;
253
+ };
254
+ export type AutomationRulesSortInput = {
255
+ field: AutomationRuleSortableFields;
256
+ order?: InputMaybe<SortOrder>;
257
+ };
247
258
  export declare enum AvailableLanguage {
248
259
  en = "en",
249
260
  fr = "fr"
@@ -263,6 +274,10 @@ export type ChildrenAsRecordValuePermissionFilterInput = {
263
274
  attributeId: Scalars['ID']['input'];
264
275
  libraryId: Scalars['ID']['input'];
265
276
  };
277
+ export type CreateAutomationRuleInput = {
278
+ description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
279
+ label: Scalars['SystemTranslation']['input'];
280
+ };
266
281
  export type CreateRecordDataInput = {
267
282
  values?: InputMaybe<Array<ValueBatchInput>>;
268
283
  version?: InputMaybe<Array<ValueVersionInput>>;
@@ -358,6 +373,16 @@ export declare enum FormsSortableFields {
358
373
  library = "library",
359
374
  system = "system"
360
375
  }
376
+ export declare enum GenerationStatus {
377
+ DONE = "DONE",
378
+ GENERATION_FAILED = "GENERATION_FAILED",
379
+ GENERATION_IN_PROGRESS = "GENERATION_IN_PROGRESS",
380
+ GENERATION_IN_PROGRESS_WITH_FAILURE = "GENERATION_IN_PROGRESS_WITH_FAILURE",
381
+ PREPARATION_FAILED = "PREPARATION_FAILED",
382
+ PREPARATION_IN_PROGRESS = "PREPARATION_IN_PROGRESS",
383
+ TRANSMISSION_FAILED = "TRANSMISSION_FAILED",
384
+ TRANSMISSION_IN_PROGRESS = "TRANSMISSION_IN_PROGRESS"
385
+ }
361
386
  export type GlobalSettingsFileInput = {
362
387
  library: Scalars['String']['input'];
363
388
  recordId: Scalars['String']['input'];
@@ -432,6 +457,8 @@ export declare enum LogAction {
432
457
  APP_SAVE = "APP_SAVE",
433
458
  ATTRIBUTE_DELETE = "ATTRIBUTE_DELETE",
434
459
  ATTRIBUTE_SAVE = "ATTRIBUTE_SAVE",
460
+ AUTOMATION_RULE_CREATE = "AUTOMATION_RULE_CREATE",
461
+ AUTOMATION_RULE_UPDATE = "AUTOMATION_RULE_UPDATE",
435
462
  CONFIG_IMPORT_END = "CONFIG_IMPORT_END",
436
463
  CONFIG_IMPORT_START = "CONFIG_IMPORT_START",
437
464
  DATA_IMPORT_END = "DATA_IMPORT_END",
@@ -443,6 +470,8 @@ export declare enum LogAction {
443
470
  LIBRARY_PURGE = "LIBRARY_PURGE",
444
471
  LIBRARY_SAVE = "LIBRARY_SAVE",
445
472
  PERMISSION_SAVE = "PERMISSION_SAVE",
473
+ PLANNING_RECONDUCTION_END = "PLANNING_RECONDUCTION_END",
474
+ PLANNING_RECONDUCTION_START = "PLANNING_RECONDUCTION_START",
446
475
  RECORD_DELETE = "RECORD_DELETE",
447
476
  RECORD_SAVE = "RECORD_SAVE",
448
477
  TASKS_DELETE = "TASKS_DELETE",
@@ -484,6 +513,7 @@ export declare enum LogSortableField {
484
513
  export type LogTopicFilterInput = {
485
514
  apiKey?: InputMaybe<Scalars['String']['input']>;
486
515
  attribute?: InputMaybe<Scalars['String']['input']>;
516
+ automationRule?: InputMaybe<Scalars['String']['input']>;
487
517
  filename?: InputMaybe<Scalars['String']['input']>;
488
518
  library?: InputMaybe<Scalars['String']['input']>;
489
519
  permission?: InputMaybe<LogTopicPermissionFilterInput>;
@@ -499,10 +529,6 @@ export type LogTopicRecordFilterInput = {
499
529
  id?: InputMaybe<Scalars['String']['input']>;
500
530
  libraryId?: InputMaybe<Scalars['String']['input']>;
501
531
  };
502
- export type MapValueInput = {
503
- after?: InputMaybe<Scalars['ID']['input']>;
504
- before?: InputMaybe<Scalars['ID']['input']>;
505
- };
506
532
  export declare enum MultiDisplayOption {
507
533
  avatar = "avatar",
508
534
  badge_qty = "badge_qty",
@@ -590,6 +616,7 @@ export declare enum PermissionsActions {
590
616
  admin_import_config_clear_database = "admin_import_config_clear_database",
591
617
  admin_library = "admin_library",
592
618
  admin_list_plugins = "admin_list_plugins",
619
+ admin_manage_automation = "admin_manage_automation",
593
620
  admin_manage_global_preferences = "admin_manage_global_preferences",
594
621
  create_record = "create_record",
595
622
  delete_record = "delete_record",
@@ -714,8 +741,17 @@ export type ReportFramingFiltersInput = {
714
741
  attributes?: InputMaybe<Array<ReportFramingAttributeFilterItemInput>>;
715
742
  campaigns?: InputMaybe<Array<RecordFilterInput>>;
716
743
  categories?: InputMaybe<Array<Scalars['String']['input']>>;
744
+ categoryStatus?: InputMaybe<Array<Scalars['String']['input']>>;
717
745
  search?: InputMaybe<Scalars['String']['input']>;
718
746
  };
747
+ export type SaveValueBulkMappingInput = {
748
+ dependenciesFilters?: InputMaybe<Array<InputMaybe<RecordFilterInput>>>;
749
+ values: Array<SaveValueBulkMappingValueInput>;
750
+ };
751
+ export type SaveValueBulkMappingValueInput = {
752
+ after?: InputMaybe<Scalars['ID']['input']>;
753
+ before?: InputMaybe<Scalars['ID']['input']>;
754
+ };
719
755
  export type SheetInput = {
720
756
  keyIndex?: InputMaybe<Scalars['Int']['input']>;
721
757
  keyToIndex?: InputMaybe<Scalars['Int']['input']>;
@@ -851,6 +887,12 @@ export declare enum TreesSortableFields {
851
887
  id = "id",
852
888
  system = "system"
853
889
  }
890
+ export type UpdateAutomationRuleInput = {
891
+ active?: InputMaybe<Scalars['Boolean']['input']>;
892
+ description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
893
+ id: Scalars['ID']['input'];
894
+ label?: InputMaybe<Scalars['SystemTranslation']['input']>;
895
+ };
854
896
  export type UploadFiltersInput = {
855
897
  uid?: InputMaybe<Scalars['String']['input']>;
856
898
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -914,6 +956,7 @@ export type ViewDisplayInput = {
914
956
  type: ViewTypes;
915
957
  };
916
958
  export type ViewInput = {
959
+ /** The whoAmI column should never be included in attributes because is already hard-coded to be present */
917
960
  attributes?: InputMaybe<Array<Scalars['String']['input']>>;
918
961
  color?: InputMaybe<Scalars['String']['input']>;
919
962
  description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
@@ -927,6 +970,7 @@ export type ViewInput = {
927
970
  valuesVersions?: InputMaybe<Array<ViewValuesVersionInput>>;
928
971
  };
929
972
  export type ViewInputPartial = {
973
+ /** The whoAmI column should never be included in attributes because is already hard-coded to be present */
930
974
  attributes?: InputMaybe<Array<Scalars['String']['input']>>;
931
975
  color?: InputMaybe<Scalars['String']['input']>;
932
976
  description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
@@ -1015,6 +1059,21 @@ export type SaveAttributeMutation = {
1015
1059
  id: string;
1016
1060
  };
1017
1061
  };
1062
+ export type GetLinkAttributeSmartFilterQueryVariables = Exact<{
1063
+ filters?: InputMaybe<AttributesFiltersInput>;
1064
+ }>;
1065
+ export type GetLinkAttributeSmartFilterQuery = {
1066
+ attributes?: {
1067
+ list: Array<{
1068
+ smart_filter?: {
1069
+ enable: boolean;
1070
+ through?: {
1071
+ id: string;
1072
+ } | null;
1073
+ } | null;
1074
+ }>;
1075
+ } | null;
1076
+ };
1018
1077
  export type MeQueryVariables = Exact<{
1019
1078
  [key: string]: never;
1020
1079
  }>;
@@ -1023,6 +1082,45 @@ export type MeQuery = {
1023
1082
  id: string;
1024
1083
  } | null;
1025
1084
  };
1085
+ export type GetAutomationRulesQueryVariables = Exact<{
1086
+ [key: string]: never;
1087
+ }>;
1088
+ export type GetAutomationRulesQuery = {
1089
+ automationRules: {
1090
+ list: Array<{
1091
+ id: string;
1092
+ label: any;
1093
+ description?: any | null;
1094
+ active: boolean;
1095
+ createdAt: number;
1096
+ createdBy: string;
1097
+ modifiedAt: number;
1098
+ modifiedBy: string;
1099
+ }>;
1100
+ };
1101
+ };
1102
+ export type CreateAutomationRuleMutationVariables = Exact<{
1103
+ rule: CreateAutomationRuleInput;
1104
+ }>;
1105
+ export type CreateAutomationRuleMutation = {
1106
+ createAutomationRule: {
1107
+ id: string;
1108
+ label: any;
1109
+ modifiedAt: number;
1110
+ };
1111
+ };
1112
+ export type UpdateAutomationRuleMutationVariables = Exact<{
1113
+ rule: UpdateAutomationRuleInput;
1114
+ }>;
1115
+ export type UpdateAutomationRuleMutation = {
1116
+ updateAutomationRule: {
1117
+ id: string;
1118
+ label: any;
1119
+ description?: any | null;
1120
+ active: boolean;
1121
+ modifiedAt: number;
1122
+ };
1123
+ };
1026
1124
  export type GetRecordsLinkValuesPropertyQueryVariables = Exact<{
1027
1125
  library: Scalars['ID']['input'];
1028
1126
  filters?: InputMaybe<Array<InputMaybe<RecordFilterInput>> | InputMaybe<RecordFilterInput>>;
@@ -1190,7 +1288,11 @@ export declare const SaveApiKeyDocument: import("graphql").DocumentNode;
1190
1288
  export declare const GetApiKeysDocument: import("graphql").DocumentNode;
1191
1289
  export declare const DeleteApiKeyDocument: import("graphql").DocumentNode;
1192
1290
  export declare const SaveAttributeDocument: import("graphql").DocumentNode;
1291
+ export declare const GetLinkAttributeSmartFilterDocument: import("graphql").DocumentNode;
1193
1292
  export declare const MeDocument: import("graphql").DocumentNode;
1293
+ export declare const GetAutomationRulesDocument: import("graphql").DocumentNode;
1294
+ export declare const CreateAutomationRuleDocument: import("graphql").DocumentNode;
1295
+ export declare const UpdateAutomationRuleDocument: import("graphql").DocumentNode;
1194
1296
  export declare const GetRecordsLinkValuesPropertyDocument: import("graphql").DocumentNode;
1195
1297
  export declare const SaveLibraryDocument: import("graphql").DocumentNode;
1196
1298
  export declare const DeleteLibraryDocument: import("graphql").DocumentNode;
@@ -1208,7 +1310,11 @@ export declare function getSdk(client: GraphQLClient, withWrapper?: SdkFunctionW
1208
1310
  GetApiKeys(variables?: GetApiKeysQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetApiKeysQuery>;
1209
1311
  DeleteApiKey(variables: DeleteApiKeyMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<DeleteApiKeyMutation>;
1210
1312
  SaveAttribute(variables?: SaveAttributeMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<SaveAttributeMutation>;
1313
+ getLinkAttributeSmartFilter(variables?: GetLinkAttributeSmartFilterQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetLinkAttributeSmartFilterQuery>;
1211
1314
  Me(variables?: MeQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<MeQuery>;
1315
+ GetAutomationRules(variables?: GetAutomationRulesQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetAutomationRulesQuery>;
1316
+ CreateAutomationRule(variables: CreateAutomationRuleMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<CreateAutomationRuleMutation>;
1317
+ UpdateAutomationRule(variables: UpdateAutomationRuleMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<UpdateAutomationRuleMutation>;
1212
1318
  GetRecordsLinkValuesProperty(variables: GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetRecordsLinkValuesPropertyQuery>;
1213
1319
  SaveLibrary(variables?: SaveLibraryMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<SaveLibraryMutation>;
1214
1320
  DeleteLibrary(variables?: DeleteLibraryMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<DeleteLibraryMutation>;
@@ -1,10 +1,14 @@
1
+ import { type IQueryInfos } from '../../../../../../_types/queryInfos';
1
2
  import { type IEventsManagerDomain } from '../../../../../../domain/eventsManager/eventsManagerDomain';
2
3
  export interface IFakeDomain {
3
- execWorker({ fromTask }: {
4
+ execWorker({ fromTask, ctx }: {
4
5
  fromTask: string;
5
- }): void;
6
+ ctx: IQueryInfos;
7
+ }): Promise<void>;
8
+ execCronTask(): Promise<void>;
6
9
  startPlugin(): void;
7
10
  getPluginStarted(): boolean;
11
+ getCronTaskExecuted(): boolean;
8
12
  }
9
13
  interface IDeps {
10
14
  'core.domain.eventsManager': IEventsManagerDomain;
@@ -41,7 +41,11 @@ export declare const adminUserSdk: {
41
41
  GetApiKeys(variables?: import("../_gqlTypes").GetApiKeysQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetApiKeysQuery>;
42
42
  DeleteApiKey(variables: import("../_gqlTypes").DeleteApiKeyMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteApiKeyMutation>;
43
43
  SaveAttribute(variables?: import("../_gqlTypes").SaveAttributeMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveAttributeMutation>;
44
+ getLinkAttributeSmartFilter(variables?: import("../_gqlTypes").GetLinkAttributeSmartFilterQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetLinkAttributeSmartFilterQuery>;
44
45
  Me(variables?: import("../_gqlTypes").MeQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").MeQuery>;
46
+ GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
47
+ CreateAutomationRule(variables: import("../_gqlTypes").CreateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").CreateAutomationRuleMutation>;
48
+ UpdateAutomationRule(variables: import("../_gqlTypes").UpdateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").UpdateAutomationRuleMutation>;
45
49
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
46
50
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
47
51
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -59,7 +63,11 @@ export declare const guestUserSdk: {
59
63
  GetApiKeys(variables?: import("../_gqlTypes").GetApiKeysQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetApiKeysQuery>;
60
64
  DeleteApiKey(variables: import("../_gqlTypes").DeleteApiKeyMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteApiKeyMutation>;
61
65
  SaveAttribute(variables?: import("../_gqlTypes").SaveAttributeMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveAttributeMutation>;
66
+ getLinkAttributeSmartFilter(variables?: import("../_gqlTypes").GetLinkAttributeSmartFilterQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetLinkAttributeSmartFilterQuery>;
62
67
  Me(variables?: import("../_gqlTypes").MeQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").MeQuery>;
68
+ GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
69
+ CreateAutomationRule(variables: import("../_gqlTypes").CreateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").CreateAutomationRuleMutation>;
70
+ UpdateAutomationRule(variables: import("../_gqlTypes").UpdateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").UpdateAutomationRuleMutation>;
63
71
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
64
72
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
65
73
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -77,7 +85,11 @@ export declare const nonAdminUserSdk: {
77
85
  GetApiKeys(variables?: import("../_gqlTypes").GetApiKeysQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetApiKeysQuery>;
78
86
  DeleteApiKey(variables: import("../_gqlTypes").DeleteApiKeyMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteApiKeyMutation>;
79
87
  SaveAttribute(variables?: import("../_gqlTypes").SaveAttributeMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveAttributeMutation>;
88
+ getLinkAttributeSmartFilter(variables?: import("../_gqlTypes").GetLinkAttributeSmartFilterQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetLinkAttributeSmartFilterQuery>;
80
89
  Me(variables?: import("../_gqlTypes").MeQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").MeQuery>;
90
+ GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
91
+ CreateAutomationRule(variables: import("../_gqlTypes").CreateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").CreateAutomationRuleMutation>;
92
+ UpdateAutomationRule(variables: import("../_gqlTypes").UpdateAutomationRuleMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").UpdateAutomationRuleMutation>;
81
93
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
82
94
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
83
95
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -92,13 +104,6 @@ export declare const nonAdminUserSdk: {
92
104
  };
93
105
  export declare function makeGraphQlCall(query: string | FormData, options?: IMakeGraphQlCallOptions): Promise<any>;
94
106
  export declare function importFileGraphQlCall(query: string, filePath: string, sheets?: any): Promise<any>;
95
- export declare function gqlSaveLibrary(id: string, label: string, additionalAttributes?: string[], settings?: string, recordIdentityConf?: {
96
- label: string;
97
- subLabel?: string;
98
- preview?: string;
99
- color?: string;
100
- treeColorPreview?: string;
101
- }): Promise<any>;
102
107
  export declare function gqlSaveApplication(id: string, label: string, endpoint: string): Promise<any>;
103
108
  export declare function gqlSaveAttribute(params: {
104
109
  id: string;
@@ -3,9 +3,12 @@ import { type IPermissionRepo } from '../../../infra/permission/permissionRepo';
3
3
  import { type INotificationRepo } from '../../../infra/notification/notificationRepo';
4
4
  import { type IRecordRepo } from '../../../infra/record/recordRepo';
5
5
  import { type ITreeRepo } from '../../../infra/tree/treeRepo';
6
+ import { type IAutomationRuleRepo } from '../../../infra/automation/automationRuleRepo';
6
7
  export declare const getLibraryRepo: () => ILibraryRepo;
7
8
  export declare const getRecordRepo: () => IRecordRepo;
8
9
  export declare const getTreeRepo: () => ITreeRepo;
9
10
  export declare const getPermissionRepo: () => IPermissionRepo;
10
11
  export declare const getNotificationRepo: () => INotificationRepo;
12
+ export declare const getAutomationRuleRepo: () => IAutomationRuleRepo;
13
+ export declare const clearAllCollectionDocuments: (collectionName: string) => Promise<void>;
11
14
  export * from '../integrationTestUtils';
@@ -0,0 +1,21 @@
1
+ import { type ISystemTranslation } from './systemTranslation';
2
+ export type IAutomationRule = ICoreEntity & {
3
+ id: string;
4
+ label: ISystemTranslation;
5
+ description?: ISystemTranslation;
6
+ active: boolean;
7
+ createdAt?: number;
8
+ createdBy?: string;
9
+ modifiedAt?: number;
10
+ modifiedBy?: string;
11
+ };
12
+ export type ICreateAutomationRule = {
13
+ label: ISystemTranslation;
14
+ description?: ISystemTranslation;
15
+ };
16
+ export type IUpdateAutomationRule = {
17
+ id: string;
18
+ label?: ISystemTranslation;
19
+ description?: ISystemTranslation;
20
+ active?: boolean;
21
+ };
@@ -0,0 +1,14 @@
1
+ import { type IQueryInfos } from './queryInfos';
2
+ import { type ITaskCreatePayload } from './tasksManager';
3
+ /**
4
+ * Should match https://github.com/node-cron/node-cron/blob/main/README.md#cron-syntax
5
+ *
6
+ * Note that 'never' is a special value that can be used to indicate that the task should never be scheduled.
7
+ * This can be useful for tasks that are conditionally scheduled based on configuration or other factors.
8
+ */
9
+ export type CronString = string | 'never';
10
+ export type RegisterCronTask = {
11
+ schedule: CronString;
12
+ name: string;
13
+ createTask: (ctx: IQueryInfos) => Promise<ITaskCreatePayload>;
14
+ };
@@ -91,6 +91,7 @@ export declare enum Errors {
91
91
  UNKNOWN_APPLICATION = "UNKNOWN_APPLICATION",
92
92
  UNKNOWN_ATTRIBUTE = "UNKNOWN_ATTRIBUTE",
93
93
  UNKNOWN_ATTRIBUTES = "UNKNOWN_ATTRIBUTES",
94
+ UNKNOWN_AUTOMATION_RULE = "UNKNOWN_AUTOMATION_RULE",
94
95
  UNKNOWN_ELEMENT = "UNKNOWN_ELEMENT",
95
96
  UNKNOWN_FORM = "UNKNOWN_FORM",
96
97
  UNKNOWN_FORM_ATTRIBUTES = "UNKNOWN_FORM_ATTRIBUTES",
@@ -9,6 +9,7 @@ import { type IValue } from './value';
9
9
  import { type IVersionProfile } from './versionProfile';
10
10
  import { type IPermission } from './permissions';
11
11
  import { type ITreeDbEvent, type ITree } from './tree';
12
+ import { type IAutomationRule } from './automation';
12
13
  type OnlyObject<T> = T extends object ? T : never;
13
14
  /**
14
15
  * Maybe move all DBPayloadData types in @leav/utils type to allow event consumers outside core to use them
@@ -30,6 +31,8 @@ interface IDBPayloadDataMap {
30
31
  [EventAction.API_KEY_DELETE]: IApiKey;
31
32
  [EventAction.APP_SAVE]: IApplication;
32
33
  [EventAction.APP_DELETE]: IApplication;
34
+ [EventAction.AUTOMATION_RULE_CREATE]: IAutomationRule;
35
+ [EventAction.AUTOMATION_RULE_UPDATE]: IAutomationRule;
33
36
  [EventAction.GLOBAL_SETTINGS_SAVE]: IGlobalSettings;
34
37
  [EventAction.LIBRARY_SAVE]: ILibraryDbEvent;
35
38
  [EventAction.LIBRARY_DELETE]: ILibraryDbEvent;
@@ -3,6 +3,7 @@ import { type IAppGraphQLSchema } from './graphql';
3
3
  import { type PermissionTypes } from './permissions';
4
4
  import { type PluginRegisterRoute } from './endpoint';
5
5
  import { type AuthPostOidcLoginCallback } from './auth';
6
+ import { type RegisterCronTask } from './cronTask';
6
7
  export interface IExtensionPoints {
7
8
  [name: string]: (...args: any[]) => void;
8
9
  }
@@ -35,4 +36,8 @@ export interface IExtensionPointsFunctions extends IExtensionPoints {
35
36
  * Useful to change user settings or to log some information after the user is authenticated but before the session is created.
36
37
  */
37
38
  registerAuthPostOidcLoginCallback: (callback: AuthPostOidcLoginCallback) => void;
39
+ /**
40
+ * Register a cron task to be executed on a schedule defined by the `schedule` property of `registerCronTask`.
41
+ */
42
+ registerCronTask: (registerCronTask: RegisterCronTask) => void;
38
43
  }
@@ -86,6 +86,7 @@ export declare enum AdminPermissionsActions {
86
86
  EDIT_GLOBAL_SETTINGS = "admin_edit_global_settings",
87
87
  LIST_PLUGINS = "admin_list_plugins",
88
88
  ACCESS_LOGS = "admin_access_logs",
89
+ MANAGE_AUTOMATION = "admin_manage_automation",
89
90
  IMPORT_CONFIG_CLEAR_DATABASE = "admin_import_config_clear_database"
90
91
  }
91
92
  export type PermissionsActions = LibraryPermissionsActions | RecordPermissionsActions | RecordAttributePermissionsActions | AdminPermissionsActions | AttributePermissionsActions | AttributeDependentValuesPermissionsActions | TreePermissionsActions | TreeNodePermissionsActions | ApplicationPermissionsActions;
@@ -3,6 +3,7 @@ import { type IAttributeDomain } from '../../../domain/attribute/attributeDomain
3
3
  import { type ILibraryDomain } from '../../../domain/library/libraryDomain';
4
4
  import { type IPermissionDomain } from '../../../domain/permission/permissionDomain';
5
5
  import { type IAttributeDependentValuesPermissionDomain } from '../../../domain/permission/attributeDependentValuesPermissionDomain';
6
+ import { type IfLibraryJoinLinkAttribute } from '../../../domain/attribute/helpers/ifLibraryJoinLinkAttribute';
6
7
  import { type IRecordDomain } from '../../../domain/record/recordDomain';
7
8
  import { type ITreeDomain } from '../../../domain/tree/treeDomain';
8
9
  import { type IVersionProfileDomain } from '../../../domain/versionProfile/versionProfileDomain';
@@ -12,6 +13,7 @@ import { type ICoreApp } from '../coreApp';
12
13
  export type ICoreAttributeApp = IGraphqlAppModule;
13
14
  interface IDeps {
14
15
  'core.domain.attribute': IAttributeDomain;
16
+ 'core.domain.attribute.helpers.ifLibraryJoinLinkAttribute': IfLibraryJoinLinkAttribute;
15
17
  'core.domain.library': ILibraryDomain;
16
18
  'core.domain.record': IRecordDomain;
17
19
  'core.domain.tree': ITreeDomain;
@@ -0,0 +1,17 @@
1
+ import { type IGraphqlAppModule } from '../graphql/graphqlApp';
2
+ import { type IAutomationDomain } from '../../domain/automation/automationDomain';
3
+ import { type IPaginationParams, type ISortParams } from '../../_types/list';
4
+ export type ICoreImportApp = IGraphqlAppModule;
5
+ interface IDeps {
6
+ 'core.domain.automation': IAutomationDomain;
7
+ }
8
+ export interface IGetAutomationRulesArgs {
9
+ filters?: ICoreEntityFilterOptions & {
10
+ id: string;
11
+ active: boolean;
12
+ };
13
+ pagination?: IPaginationParams;
14
+ sort?: ISortParams;
15
+ }
16
+ export default function ({ 'core.domain.automation': automationDomain }: IDeps): ICoreImportApp;
17
+ export {};
@@ -5,6 +5,7 @@ import { type IFilesManagerDomain } from '../../domain/filesManager/filesManager
5
5
  import { type ValidateRequestTokenFunc } from '../helpers/validateRequestToken';
6
6
  import { type IGraphqlAppModule } from '../graphql/graphqlApp';
7
7
  import { type IServerRouteAppModule } from '../../interface/server';
8
+ import { type IRecordPermissionDomain } from '../../domain/permission/recordPermissionDomain';
8
9
  export interface IFilesManagerApp extends IGraphqlAppModule, IServerRouteAppModule {
9
10
  init(): Promise<void>;
10
11
  }
@@ -13,7 +14,8 @@ interface IDeps {
13
14
  'core.app.helpers.validateRequestToken': ValidateRequestTokenFunc;
14
15
  'core.domain.filesManager': IFilesManagerDomain;
15
16
  'core.domain.eventsManager': IEventsManagerDomain;
17
+ 'core.domain.permission.record': IRecordPermissionDomain;
16
18
  config: IConfig;
17
19
  }
18
- export default function ({ 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.validateRequestToken': validateRequestToken, 'core.domain.filesManager': filesManagerDomain, 'core.domain.eventsManager': eventsManager, config, }: IDeps): IFilesManagerApp;
20
+ export default function ({ 'core.app.helpers.initQueryContext': initQueryContext, 'core.app.helpers.validateRequestToken': validateRequestToken, 'core.domain.filesManager': filesManagerDomain, 'core.domain.eventsManager': eventsManager, 'core.domain.permission.record': recordPermissionDomain, config, }: IDeps): IFilesManagerApp;
19
21
  export {};
@@ -1,6 +1,7 @@
1
1
  export { default as actionList } from './actionListApp';
2
2
  export { default as apiKey } from './apiKeyApp/apiKeyApp';
3
3
  export { default as attribute } from './attributeApp/attributeApp';
4
+ export { default as automation } from './automationApp';
4
5
  export { default } from './coreApp';
5
6
  export { default as eventsManager } from './eventsManagerApp';
6
7
  export { default as export } from './exportApp';
@@ -3,6 +3,7 @@ import { type IAttributeDomain } from '../../domain/attribute/attributeDomain';
3
3
  import { type IEventsManagerDomain } from '../../domain/eventsManager/eventsManagerDomain';
4
4
  import { type ILibraryDomain } from '../../domain/library/libraryDomain';
5
5
  import { type ILogDomain } from '../../domain/log/logDomain';
6
+ import { type IAutomationDomain } from '../../domain/automation/automationDomain';
6
7
  import { type ITreeDomain } from '../../domain/tree/treeDomain';
7
8
  import { type IVersionProfileDomain } from '../../domain/versionProfile/versionProfileDomain';
8
9
  import { type IAppModule } from '../../_types/shared';
@@ -21,9 +22,10 @@ interface IDeps {
21
22
  'core.domain.value.helpers.formatLogValue': IFormatLogValueHelper;
22
23
  'core.domain.versionProfile': IVersionProfileDomain;
23
24
  'core.domain.application': IApplicationDomain;
25
+ 'core.domain.automation': IAutomationDomain;
24
26
  'core.domain.record': IRecordDomain;
25
27
  translator: i18n;
26
28
  config: IConfig;
27
29
  }
28
- export default function ({ 'core.domain.log': logDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.domain.library': libraryDomain, 'core.domain.attribute': attributeDomain, 'core.domain.tree': treeDomain, 'core.domain.value.helpers.formatLogValue': formatLogValue, 'core.domain.versionProfile': versionProfileDomain, 'core.domain.application': applicationDomain, 'core.domain.record': recordDomain, translator, config, }: IDeps): ICoreLogApp;
30
+ export default function ({ 'core.domain.log': logDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.domain.library': libraryDomain, 'core.domain.attribute': attributeDomain, 'core.domain.tree': treeDomain, 'core.domain.value.helpers.formatLogValue': formatLogValue, 'core.domain.versionProfile': versionProfileDomain, 'core.domain.application': applicationDomain, 'core.domain.automation': automationDomain, 'core.domain.record': recordDomain, translator, config, }: IDeps): ICoreLogApp;
29
31
  export {};
@@ -9,6 +9,7 @@ import { TaskStatus } from '../../_types/tasksManager';
9
9
  import { type IGraphqlAppModule } from '../graphql/graphqlApp';
10
10
  import { type IAdminPermissionDomain } from '../../domain/permission/adminPermissionDomain';
11
11
  import { type IExtensionPoints } from '../../_types/extensionPoints';
12
+ import { type ICronTasksManagerDomain } from '../../domain/tasksManager/cronTasksManagerDomain';
12
13
  export interface ITasksManagerApp extends IGraphqlAppModule {
13
14
  initMaster(): Promise<NodeJS.Timeout>;
14
15
  initWorker(): Promise<void>;
@@ -16,6 +17,7 @@ export interface ITasksManagerApp extends IGraphqlAppModule {
16
17
  }
17
18
  interface IDeps {
18
19
  'core.domain.tasksManager'?: ITasksManagerDomain;
20
+ 'core.domain.tasksManager.cron'?: ICronTasksManagerDomain;
19
21
  'core.utils.logger'?: ILogger;
20
22
  config?: IConfig;
21
23
  'core.utils'?: IUtils;
@@ -32,5 +34,5 @@ export interface IGetTasksArgs {
32
34
  pagination?: IPaginationParams;
33
35
  sort?: ISortParams;
34
36
  }
35
- export default function ({ 'core.domain.record': recordDomain, 'core.domain.tasksManager': tasksManagerDomain, 'core.domain.eventsManager': eventsManager, 'core.domain.permission.admin': adminPermissionDomain, }: IDeps): ITasksManagerApp;
37
+ export default function ({ 'core.domain.record': recordDomain, 'core.domain.tasksManager': tasksManagerDomain, 'core.domain.tasksManager.cron': cronTasksManagerDomain, 'core.domain.eventsManager': eventsManager, 'core.domain.permission.admin': adminPermissionDomain, }: IDeps): ITasksManagerApp;
36
38
  export {};
@@ -0,0 +1,32 @@
1
+ import { type ICreateAutomationRule, type IAutomationRule, type IUpdateAutomationRule } from '../../_types/automation';
2
+ import { type IList } from '../../_types/list';
3
+ import { type IQueryInfos } from '../../_types/queryInfos';
4
+ import { type IGetCoreEntitiesParams } from '../../_types/shared';
5
+ import { type IAutomationRuleRepo } from '../../infra/automation/automationRuleRepo';
6
+ import { type IAdminPermissionDomain } from '../permission/adminPermissionDomain';
7
+ import { type IEventsManagerDomain } from '../eventsManager/eventsManagerDomain';
8
+ export interface IGetAutomationRulesParams extends IGetCoreEntitiesParams {
9
+ filters?: ICoreEntityFilterOptions & {
10
+ active?: boolean;
11
+ };
12
+ }
13
+ export interface IAutomationDomain {
14
+ getAutomationRules({ params, ctx, }: {
15
+ params: IGetAutomationRulesParams;
16
+ ctx: IQueryInfos;
17
+ }): Promise<IList<IAutomationRule>>;
18
+ createAutomationRule({ rule, ctx }: {
19
+ rule: ICreateAutomationRule;
20
+ ctx: IQueryInfos;
21
+ }): Promise<IAutomationRule>;
22
+ updateAutomationRule({ rule, ctx }: {
23
+ rule: IUpdateAutomationRule;
24
+ ctx: IQueryInfos;
25
+ }): Promise<IAutomationRule>;
26
+ }
27
+ export interface IAutomationDomainDeps {
28
+ 'core.domain.permission.admin': IAdminPermissionDomain;
29
+ 'core.domain.eventsManager': IEventsManagerDomain;
30
+ 'core.infra.automation.rule': IAutomationRuleRepo;
31
+ }
32
+ export default function ({ 'core.domain.permission.admin': adminPermissionDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.infra.automation.rule': automationRuleRepo, }: IAutomationDomainDeps): IAutomationDomain;
@@ -0,0 +1 @@
1
+ export { default } from './automationDomain';
@@ -1,4 +1,3 @@
1
1
  export { default as deleteAssociatedValues } from './deleteAssociatedValues';
2
- export { default as runBehaviorPostSave } from './runBehaviorPostSave';
3
2
  export { default as runPreDelete } from './runPreDelete';
4
3
  export { default as updateAssociatedForms } from './updateAssociatedForms';
@@ -0,0 +1,27 @@
1
+ import { type i18n } from 'i18next';
2
+ import { type IAttributeDomain } from '../../attribute/attributeDomain';
3
+ import { type IElementAncestorsHelper } from '../../tree/helpers/elementAncestors';
4
+ import { type GetCoreEntityByIdFunc } from '../../helpers/getCoreEntityById';
5
+ import { type IValidateHelper } from '../../helpers/validate';
6
+ import { type FindRecordsHelper } from './findRecords';
7
+ import { type ICachesService } from '../../../infra/cache/cacheService';
8
+ import { type IQueryInfos } from '../../../_types/queryInfos';
9
+ import { type IRecord, type IRecordIdentity } from '../../../_types/record';
10
+ import { type IUtils } from '../../../utils/utils';
11
+ import type * as Config from '../../../_types/config';
12
+ import { type GetRecordFieldValueHelper } from '../../value/helpers/getRecordFieldValue';
13
+ export type GetRecordIdentityHelper = (record: IRecord, ctx: IQueryInfos) => Promise<IRecordIdentity>;
14
+ interface IDeps {
15
+ config: Config.IConfig;
16
+ 'core.domain.attribute': IAttributeDomain;
17
+ 'core.domain.value.helpers.getRecordFieldValue': GetRecordFieldValueHelper;
18
+ 'core.domain.helpers.validate': IValidateHelper;
19
+ 'core.domain.helpers.getCoreEntityById': GetCoreEntityByIdFunc;
20
+ 'core.domain.tree.helpers.elementAncestors': IElementAncestorsHelper;
21
+ 'core.domain.record.helpers.findRecords': FindRecordsHelper;
22
+ 'core.infra.cache.cacheService': ICachesService;
23
+ 'core.utils': IUtils;
24
+ translator: i18n;
25
+ }
26
+ export default function ({ config, 'core.domain.attribute': attributeDomain, 'core.domain.value.helpers.getRecordFieldValue': getRecordFieldValueHelper, 'core.domain.helpers.validate': validateHelper, 'core.domain.helpers.getCoreEntityById': getCoreEntityById, 'core.domain.tree.helpers.elementAncestors': elementAncestorsHelper, 'core.domain.record.helpers.findRecords': findRecordsHelper, 'core.infra.cache.cacheService': cacheService, 'core.utils': utils, translator, }: IDeps): GetRecordIdentityHelper;
27
+ export {};