@aristid/leav-types 1.12.0-ca805ec3 → 1.12.0-e51612da

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 (34) hide show
  1. package/CLAUDE.md +42 -0
  2. package/apps/core/config/default.d.ts +4 -0
  3. package/apps/core/config/development.d.ts +4 -0
  4. package/apps/core/config/test.d.ts +4 -0
  5. package/apps/core/src/__tests__/e2e/_gqlTypes/index.d.ts +164 -47
  6. package/apps/core/src/__tests__/e2e/api/e2eUtils.d.ts +6 -7
  7. package/apps/core/src/_types/automation.d.ts +22 -4
  8. package/apps/core/src/_types/config.d.ts +4 -0
  9. package/apps/core/src/_types/errors.d.ts +1 -0
  10. package/apps/core/src/_types/events.d.ts +1 -0
  11. package/apps/core/src/app/core/attributeApp/attributeApp.d.ts +2 -0
  12. package/apps/core/src/app/core/automationApp.d.ts +9 -4
  13. package/apps/core/src/app/core/eventsManagerApp.d.ts +2 -1
  14. package/apps/core/src/domain/automation/automationDomain.d.ts +15 -2
  15. package/apps/core/src/domain/record/helpers/createRecord.d.ts +3 -1
  16. package/apps/core/src/domain/record/helpers/getRecordIdentity.d.ts +27 -0
  17. package/apps/core/src/domain/record/helpers/getRecordIdentity.spec.d.ts +1 -0
  18. package/apps/core/src/domain/record/helpers/index.d.ts +1 -0
  19. package/apps/core/src/domain/record/recordDomain.d.ts +3 -11
  20. package/apps/core/src/domain/value/helpers/formatValue.d.ts +17 -0
  21. package/apps/core/src/domain/value/helpers/getRecordFieldValue.d.ts +27 -0
  22. package/apps/core/src/domain/value/helpers/getRecordFieldValue.spec.d.ts +1 -0
  23. package/apps/core/src/domain/value/helpers/getValues.d.ts +26 -0
  24. package/apps/core/src/domain/value/helpers/getValues.spec.d.ts +1 -0
  25. package/apps/core/src/domain/value/helpers/index.d.ts +7 -0
  26. package/apps/core/src/domain/value/helpers/manageEventMetadata.d.ts +4 -0
  27. package/apps/core/src/domain/value/helpers/runActionsList.d.ts +10 -0
  28. package/apps/core/src/domain/value/valueDomain.d.ts +11 -1
  29. package/apps/core/src/infra/automation/automationRuleRepo.d.ts +8 -1
  30. package/apps/core/src/infra/db/dbUtils.d.ts +5 -1
  31. package/apps/core/tsconfig.types.tsbuildinfo +1 -1
  32. package/libs/utils/src/types/events.d.ts +1 -0
  33. package/package.json +1 -1
  34. 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
+ ```
@@ -287,4 +287,8 @@ export declare namespace logsCollector {
287
287
  let queue: string;
288
288
  }
289
289
  export declare let pluginsPath: string[];
290
+ export declare namespace automation {
291
+ let enable_7: boolean;
292
+ export { enable_7 as enable };
293
+ }
290
294
  export { debug_1 as debug, _export as export, _import as import };
@@ -14,3 +14,7 @@ export namespace dbProfiler {
14
14
  export namespace bugsnag {
15
15
  let releaseStage: string;
16
16
  }
17
+ export namespace automation {
18
+ let enable_1: boolean;
19
+ export { enable_1 as enable };
20
+ }
@@ -90,3 +90,7 @@ export namespace applications {
90
90
  let rootFolder: string;
91
91
  let assetsMaxAge: string;
92
92
  }
93
+ export namespace automation {
94
+ let enable_3: boolean;
95
+ export { enable_3 as enable };
96
+ }
@@ -244,12 +244,53 @@ export declare enum AttributesSortableFields {
244
244
  multiple_values = "multiple_values",
245
245
  type = "type"
246
246
  }
247
+ export declare enum AutomationRuleEventAction {
248
+ API_KEY_DELETE = "API_KEY_DELETE",
249
+ API_KEY_SAVE = "API_KEY_SAVE",
250
+ APP_DELETE = "APP_DELETE",
251
+ APP_SAVE = "APP_SAVE",
252
+ ATTRIBUTE_DELETE = "ATTRIBUTE_DELETE",
253
+ ATTRIBUTE_SAVE = "ATTRIBUTE_SAVE",
254
+ AUTOMATION_RULE_CREATE = "AUTOMATION_RULE_CREATE",
255
+ AUTOMATION_RULE_UPDATE = "AUTOMATION_RULE_UPDATE",
256
+ CONFIG_IMPORT_END = "CONFIG_IMPORT_END",
257
+ CONFIG_IMPORT_START = "CONFIG_IMPORT_START",
258
+ DATA_IMPORT_END = "DATA_IMPORT_END",
259
+ DATA_IMPORT_START = "DATA_IMPORT_START",
260
+ EXPORT_END = "EXPORT_END",
261
+ EXPORT_START = "EXPORT_START",
262
+ GLOBAL_SETTINGS_SAVE = "GLOBAL_SETTINGS_SAVE",
263
+ LIBRARY_DELETE = "LIBRARY_DELETE",
264
+ LIBRARY_PURGE = "LIBRARY_PURGE",
265
+ LIBRARY_SAVE = "LIBRARY_SAVE",
266
+ PERMISSION_SAVE = "PERMISSION_SAVE",
267
+ RECORD_DELETE = "RECORD_DELETE",
268
+ RECORD_INIT = "RECORD_INIT",
269
+ RECORD_SAVE = "RECORD_SAVE",
270
+ TASKS_DELETE = "TASKS_DELETE",
271
+ TREE_ADD_ELEMENT = "TREE_ADD_ELEMENT",
272
+ TREE_DELETE = "TREE_DELETE",
273
+ TREE_DELETE_ELEMENT = "TREE_DELETE_ELEMENT",
274
+ TREE_MOVE_ELEMENT = "TREE_MOVE_ELEMENT",
275
+ TREE_SAVE = "TREE_SAVE",
276
+ VALUE_DELETE = "VALUE_DELETE",
277
+ VALUE_SAVE = "VALUE_SAVE",
278
+ VERSION_PROFILE_DELETE = "VERSION_PROFILE_DELETE",
279
+ VERSION_PROFILE_SAVE = "VERSION_PROFILE_SAVE"
280
+ }
247
281
  export declare enum AutomationRuleSortableFields {
248
282
  id = "id"
249
283
  }
284
+ export type AutomationRuleTriggerInput = {
285
+ eventAction: AutomationRuleEventAction;
286
+ eventTopic?: InputMaybe<EventTopicInput>;
287
+ synchronous: Scalars['Boolean']['input'];
288
+ };
250
289
  export type AutomationRulesFiltersInput = {
290
+ active?: InputMaybe<Scalars['Boolean']['input']>;
251
291
  id?: InputMaybe<Scalars['ID']['input']>;
252
292
  label?: InputMaybe<Scalars['String']['input']>;
293
+ trigger?: InputMaybe<PartialAutomationRuleTriggerInput>;
253
294
  };
254
295
  export type AutomationRulesSortInput = {
255
296
  field: AutomationRuleSortableFields;
@@ -259,16 +300,6 @@ export declare enum AvailableLanguage {
259
300
  en = "en",
260
301
  fr = "fr"
261
302
  }
262
- export type CampaignToRenew = {
263
- endDate: Scalars['String']['input'];
264
- id: Scalars['String']['input'];
265
- startDate: Scalars['String']['input'];
266
- };
267
- export type CampaignToUpdateDates = {
268
- endDate: Scalars['String']['input'];
269
- id: Scalars['String']['input'];
270
- startDate: Scalars['String']['input'];
271
- };
272
303
  export type ChildrenAsRecordValuePermissionFilterInput = {
273
304
  action: RecordPermissionsActions;
274
305
  attributeId: Scalars['ID']['input'];
@@ -277,6 +308,7 @@ export type ChildrenAsRecordValuePermissionFilterInput = {
277
308
  export type CreateAutomationRuleInput = {
278
309
  description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
279
310
  label: Scalars['SystemTranslation']['input'];
311
+ trigger: AutomationRuleTriggerInput;
280
312
  };
281
313
  export type CreateRecordDataInput = {
282
314
  values?: InputMaybe<Array<ValueBatchInput>>;
@@ -313,6 +345,59 @@ export type EmbeddedAttributeInput = {
313
345
  label?: InputMaybe<Scalars['SystemTranslation']['input']>;
314
346
  validation_regex?: InputMaybe<Scalars['String']['input']>;
315
347
  };
348
+ export declare enum EventAction {
349
+ API_KEY_DELETE = "API_KEY_DELETE",
350
+ API_KEY_SAVE = "API_KEY_SAVE",
351
+ APP_DELETE = "APP_DELETE",
352
+ APP_SAVE = "APP_SAVE",
353
+ ATTRIBUTE_DELETE = "ATTRIBUTE_DELETE",
354
+ ATTRIBUTE_SAVE = "ATTRIBUTE_SAVE",
355
+ AUTOMATION_RULE_CREATE = "AUTOMATION_RULE_CREATE",
356
+ AUTOMATION_RULE_UPDATE = "AUTOMATION_RULE_UPDATE",
357
+ CONFIG_IMPORT_END = "CONFIG_IMPORT_END",
358
+ CONFIG_IMPORT_START = "CONFIG_IMPORT_START",
359
+ DATA_IMPORT_END = "DATA_IMPORT_END",
360
+ DATA_IMPORT_START = "DATA_IMPORT_START",
361
+ EXPORT_END = "EXPORT_END",
362
+ EXPORT_START = "EXPORT_START",
363
+ GLOBAL_SETTINGS_SAVE = "GLOBAL_SETTINGS_SAVE",
364
+ LIBRARY_DELETE = "LIBRARY_DELETE",
365
+ LIBRARY_PURGE = "LIBRARY_PURGE",
366
+ LIBRARY_SAVE = "LIBRARY_SAVE",
367
+ PERMISSION_SAVE = "PERMISSION_SAVE",
368
+ RECORD_DELETE = "RECORD_DELETE",
369
+ RECORD_SAVE = "RECORD_SAVE",
370
+ TASKS_DELETE = "TASKS_DELETE",
371
+ TREE_ADD_ELEMENT = "TREE_ADD_ELEMENT",
372
+ TREE_DELETE = "TREE_DELETE",
373
+ TREE_DELETE_ELEMENT = "TREE_DELETE_ELEMENT",
374
+ TREE_MOVE_ELEMENT = "TREE_MOVE_ELEMENT",
375
+ TREE_SAVE = "TREE_SAVE",
376
+ VALUE_DELETE = "VALUE_DELETE",
377
+ VALUE_SAVE = "VALUE_SAVE",
378
+ VERSION_PROFILE_DELETE = "VERSION_PROFILE_DELETE",
379
+ VERSION_PROFILE_SAVE = "VERSION_PROFILE_SAVE"
380
+ }
381
+ export type EventTopicInput = {
382
+ apiKey?: InputMaybe<Scalars['String']['input']>;
383
+ application?: InputMaybe<Scalars['String']['input']>;
384
+ attribute?: InputMaybe<Scalars['String']['input']>;
385
+ automationRule?: InputMaybe<Scalars['String']['input']>;
386
+ filename?: InputMaybe<Scalars['String']['input']>;
387
+ library?: InputMaybe<Scalars['String']['input']>;
388
+ permission?: InputMaybe<EventTopicPermissionInput>;
389
+ profile?: InputMaybe<Scalars['String']['input']>;
390
+ record?: InputMaybe<EventTopicRecordInput>;
391
+ tree?: InputMaybe<Scalars['String']['input']>;
392
+ };
393
+ export type EventTopicPermissionInput = {
394
+ applyTo?: InputMaybe<Scalars['String']['input']>;
395
+ id: Scalars['String']['input'];
396
+ };
397
+ export type EventTopicRecordInput = {
398
+ id: Scalars['String']['input'];
399
+ libraryId: Scalars['String']['input'];
400
+ };
316
401
  export type FileInput = {
317
402
  data: Scalars['Upload']['input'];
318
403
  replace?: InputMaybe<Scalars['Boolean']['input']>;
@@ -373,16 +458,6 @@ export declare enum FormsSortableFields {
373
458
  library = "library",
374
459
  system = "system"
375
460
  }
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
- }
386
461
  export type GlobalSettingsFileInput = {
387
462
  library: Scalars['String']['input'];
388
463
  recordId: Scalars['String']['input'];
@@ -457,6 +532,8 @@ export declare enum LogAction {
457
532
  APP_SAVE = "APP_SAVE",
458
533
  ATTRIBUTE_DELETE = "ATTRIBUTE_DELETE",
459
534
  ATTRIBUTE_SAVE = "ATTRIBUTE_SAVE",
535
+ AUTOMATION_RULE_CREATE = "AUTOMATION_RULE_CREATE",
536
+ AUTOMATION_RULE_UPDATE = "AUTOMATION_RULE_UPDATE",
460
537
  CONFIG_IMPORT_END = "CONFIG_IMPORT_END",
461
538
  CONFIG_IMPORT_START = "CONFIG_IMPORT_START",
462
539
  DATA_IMPORT_END = "DATA_IMPORT_END",
@@ -509,6 +586,7 @@ export declare enum LogSortableField {
509
586
  export type LogTopicFilterInput = {
510
587
  apiKey?: InputMaybe<Scalars['String']['input']>;
511
588
  attribute?: InputMaybe<Scalars['String']['input']>;
589
+ automationRule?: InputMaybe<Scalars['String']['input']>;
512
590
  filename?: InputMaybe<Scalars['String']['input']>;
513
591
  library?: InputMaybe<Scalars['String']['input']>;
514
592
  permission?: InputMaybe<LogTopicPermissionFilterInput>;
@@ -539,6 +617,11 @@ export type Pagination = {
539
617
  limit: Scalars['Int']['input'];
540
618
  offset: Scalars['Int']['input'];
541
619
  };
620
+ export type PartialAutomationRuleTriggerInput = {
621
+ eventAction?: InputMaybe<AutomationRuleEventAction>;
622
+ eventTopic?: InputMaybe<EventTopicInput>;
623
+ synchronous?: InputMaybe<Scalars['Boolean']['input']>;
624
+ };
542
625
  export type PermissionActionInput = {
543
626
  allowed?: InputMaybe<Scalars['Boolean']['input']>;
544
627
  name: PermissionsActions;
@@ -719,26 +802,6 @@ export type RecordsPagination = {
719
802
  limit: Scalars['Int']['input'];
720
803
  offset?: InputMaybe<Scalars['Int']['input']>;
721
804
  };
722
- export type ReportFramingAttributeFilterItemInput = {
723
- attributeId: Scalars['String']['input'];
724
- values: Array<ReportFramingAttributeFilterValueItemInput>;
725
- withEmptyValues?: InputMaybe<Scalars['Boolean']['input']>;
726
- };
727
- export type ReportFramingAttributeFilterValueItemInput = {
728
- formattedValue?: InputMaybe<Scalars['String']['input']>;
729
- rawValue: Scalars['String']['input'];
730
- };
731
- export type ReportFramingContentInput = {
732
- filters?: InputMaybe<ReportFramingFiltersInput>;
733
- };
734
- export type ReportFramingFiltersInput = {
735
- /** only for excel header filter display */
736
- attributes?: InputMaybe<Array<ReportFramingAttributeFilterItemInput>>;
737
- campaigns?: InputMaybe<Array<RecordFilterInput>>;
738
- categories?: InputMaybe<Array<Scalars['String']['input']>>;
739
- categoryStatus?: InputMaybe<Array<Scalars['String']['input']>>;
740
- search?: InputMaybe<Scalars['String']['input']>;
741
- };
742
805
  export type SaveValueBulkMappingInput = {
743
806
  dependenciesFilters?: InputMaybe<Array<InputMaybe<RecordFilterInput>>>;
744
807
  values: Array<SaveValueBulkMappingValueInput>;
@@ -810,18 +873,12 @@ export declare enum TaskStatus {
810
873
  }
811
874
  export declare enum TaskType {
812
875
  EXPORT = "EXPORT",
813
- FRAMING_REPORT = "FRAMING_REPORT",
814
876
  IMPORT_CONFIG = "IMPORT_CONFIG",
815
877
  IMPORT_DATA = "IMPORT_DATA",
816
878
  INDEXATION = "INDEXATION",
817
879
  PURGE_MULTIPLE_VALUES = "PURGE_MULTIPLE_VALUES",
818
- RENEW_CAMPAIGNS = "RENEW_CAMPAIGNS",
819
880
  SAVE_VALUE_BULK = "SAVE_VALUE_BULK"
820
881
  }
821
- export type ThematicToRenew = {
822
- campaignId: Scalars['String']['input'];
823
- thematicId: Scalars['String']['input'];
824
- };
825
882
  export declare enum TreeBehavior {
826
883
  files = "files",
827
884
  standard = "standard"
@@ -882,6 +939,13 @@ export declare enum TreesSortableFields {
882
939
  id = "id",
883
940
  system = "system"
884
941
  }
942
+ export type UpdateAutomationRuleInput = {
943
+ active?: InputMaybe<Scalars['Boolean']['input']>;
944
+ description?: InputMaybe<Scalars['SystemTranslationOptional']['input']>;
945
+ id: Scalars['ID']['input'];
946
+ label?: InputMaybe<Scalars['SystemTranslation']['input']>;
947
+ trigger?: InputMaybe<PartialAutomationRuleTriggerInput>;
948
+ };
885
949
  export type UploadFiltersInput = {
886
950
  uid?: InputMaybe<Scalars['String']['input']>;
887
951
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -1048,6 +1112,21 @@ export type SaveAttributeMutation = {
1048
1112
  id: string;
1049
1113
  };
1050
1114
  };
1115
+ export type GetLinkAttributeSmartFilterQueryVariables = Exact<{
1116
+ filters?: InputMaybe<AttributesFiltersInput>;
1117
+ }>;
1118
+ export type GetLinkAttributeSmartFilterQuery = {
1119
+ attributes?: {
1120
+ list: Array<{
1121
+ smart_filter?: {
1122
+ enable: boolean;
1123
+ through?: {
1124
+ id: string;
1125
+ } | null;
1126
+ } | null;
1127
+ }>;
1128
+ } | null;
1129
+ };
1051
1130
  export type MeQueryVariables = Exact<{
1052
1131
  [key: string]: never;
1053
1132
  }>;
@@ -1057,7 +1136,7 @@ export type MeQuery = {
1057
1136
  } | null;
1058
1137
  };
1059
1138
  export type GetAutomationRulesQueryVariables = Exact<{
1060
- [key: string]: never;
1139
+ filters?: InputMaybe<AutomationRulesFiltersInput>;
1061
1140
  }>;
1062
1141
  export type GetAutomationRulesQuery = {
1063
1142
  automationRules: {
@@ -1070,6 +1149,13 @@ export type GetAutomationRulesQuery = {
1070
1149
  createdBy: string;
1071
1150
  modifiedAt: number;
1072
1151
  modifiedBy: string;
1152
+ trigger: {
1153
+ synchronous: boolean;
1154
+ eventAction: AutomationRuleEventAction;
1155
+ eventTopic?: {
1156
+ library?: string | null;
1157
+ } | null;
1158
+ };
1073
1159
  }>;
1074
1160
  };
1075
1161
  };
@@ -1080,6 +1166,33 @@ export type CreateAutomationRuleMutation = {
1080
1166
  createAutomationRule: {
1081
1167
  id: string;
1082
1168
  label: any;
1169
+ modifiedAt: number;
1170
+ trigger: {
1171
+ synchronous: boolean;
1172
+ eventAction: AutomationRuleEventAction;
1173
+ eventTopic?: {
1174
+ library?: string | null;
1175
+ } | null;
1176
+ };
1177
+ };
1178
+ };
1179
+ export type UpdateAutomationRuleMutationVariables = Exact<{
1180
+ rule: UpdateAutomationRuleInput;
1181
+ }>;
1182
+ export type UpdateAutomationRuleMutation = {
1183
+ updateAutomationRule: {
1184
+ id: string;
1185
+ label: any;
1186
+ description?: any | null;
1187
+ active: boolean;
1188
+ modifiedAt: number;
1189
+ trigger: {
1190
+ synchronous: boolean;
1191
+ eventAction: AutomationRuleEventAction;
1192
+ eventTopic?: {
1193
+ library?: string | null;
1194
+ } | null;
1195
+ };
1083
1196
  };
1084
1197
  };
1085
1198
  export type GetRecordsLinkValuesPropertyQueryVariables = Exact<{
@@ -1249,9 +1362,11 @@ export declare const SaveApiKeyDocument: import("graphql").DocumentNode;
1249
1362
  export declare const GetApiKeysDocument: import("graphql").DocumentNode;
1250
1363
  export declare const DeleteApiKeyDocument: import("graphql").DocumentNode;
1251
1364
  export declare const SaveAttributeDocument: import("graphql").DocumentNode;
1365
+ export declare const GetLinkAttributeSmartFilterDocument: import("graphql").DocumentNode;
1252
1366
  export declare const MeDocument: import("graphql").DocumentNode;
1253
1367
  export declare const GetAutomationRulesDocument: import("graphql").DocumentNode;
1254
1368
  export declare const CreateAutomationRuleDocument: import("graphql").DocumentNode;
1369
+ export declare const UpdateAutomationRuleDocument: import("graphql").DocumentNode;
1255
1370
  export declare const GetRecordsLinkValuesPropertyDocument: import("graphql").DocumentNode;
1256
1371
  export declare const SaveLibraryDocument: import("graphql").DocumentNode;
1257
1372
  export declare const DeleteLibraryDocument: import("graphql").DocumentNode;
@@ -1269,9 +1384,11 @@ export declare function getSdk(client: GraphQLClient, withWrapper?: SdkFunctionW
1269
1384
  GetApiKeys(variables?: GetApiKeysQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetApiKeysQuery>;
1270
1385
  DeleteApiKey(variables: DeleteApiKeyMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<DeleteApiKeyMutation>;
1271
1386
  SaveAttribute(variables?: SaveAttributeMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<SaveAttributeMutation>;
1387
+ getLinkAttributeSmartFilter(variables?: GetLinkAttributeSmartFilterQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetLinkAttributeSmartFilterQuery>;
1272
1388
  Me(variables?: MeQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<MeQuery>;
1273
1389
  GetAutomationRules(variables?: GetAutomationRulesQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetAutomationRulesQuery>;
1274
1390
  CreateAutomationRule(variables: CreateAutomationRuleMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<CreateAutomationRuleMutation>;
1391
+ UpdateAutomationRule(variables: UpdateAutomationRuleMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<UpdateAutomationRuleMutation>;
1275
1392
  GetRecordsLinkValuesProperty(variables: GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<GetRecordsLinkValuesPropertyQuery>;
1276
1393
  SaveLibrary(variables?: SaveLibraryMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<SaveLibraryMutation>;
1277
1394
  DeleteLibrary(variables?: DeleteLibraryMutationVariables, requestHeaders?: GraphQLClientRequestHeaders, signal?: RequestInit["signal"]): Promise<DeleteLibraryMutation>;
@@ -41,9 +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>;
45
46
  GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
46
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>;
47
49
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
48
50
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
49
51
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -61,9 +63,11 @@ export declare const guestUserSdk: {
61
63
  GetApiKeys(variables?: import("../_gqlTypes").GetApiKeysQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetApiKeysQuery>;
62
64
  DeleteApiKey(variables: import("../_gqlTypes").DeleteApiKeyMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteApiKeyMutation>;
63
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>;
64
67
  Me(variables?: import("../_gqlTypes").MeQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").MeQuery>;
65
68
  GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
66
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>;
67
71
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
68
72
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
69
73
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -81,9 +85,11 @@ export declare const nonAdminUserSdk: {
81
85
  GetApiKeys(variables?: import("../_gqlTypes").GetApiKeysQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetApiKeysQuery>;
82
86
  DeleteApiKey(variables: import("../_gqlTypes").DeleteApiKeyMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteApiKeyMutation>;
83
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>;
84
89
  Me(variables?: import("../_gqlTypes").MeQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").MeQuery>;
85
90
  GetAutomationRules(variables?: import("../_gqlTypes").GetAutomationRulesQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetAutomationRulesQuery>;
86
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>;
87
93
  GetRecordsLinkValuesProperty(variables: import("../_gqlTypes").GetRecordsLinkValuesPropertyQueryVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").GetRecordsLinkValuesPropertyQuery>;
88
94
  SaveLibrary(variables?: import("../_gqlTypes").SaveLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").SaveLibraryMutation>;
89
95
  DeleteLibrary(variables?: import("../_gqlTypes").DeleteLibraryMutationVariables, requestHeaders?: HeadersInit, signal?: RequestInit["signal"]): Promise<import("../_gqlTypes").DeleteLibraryMutation>;
@@ -98,13 +104,6 @@ export declare const nonAdminUserSdk: {
98
104
  };
99
105
  export declare function makeGraphQlCall(query: string | FormData, options?: IMakeGraphQlCallOptions): Promise<any>;
100
106
  export declare function importFileGraphQlCall(query: string, filePath: string, sheets?: any): Promise<any>;
101
- export declare function gqlSaveLibrary(id: string, label: string, additionalAttributes?: string[], settings?: string, recordIdentityConf?: {
102
- label: string;
103
- subLabel?: string;
104
- preview?: string;
105
- color?: string;
106
- treeColorPreview?: string;
107
- }): Promise<any>;
108
107
  export declare function gqlSaveApplication(id: string, label: string, endpoint: string): Promise<any>;
109
108
  export declare function gqlSaveAttribute(params: {
110
109
  id: string;
@@ -1,15 +1,33 @@
1
1
  import { type ISystemTranslation } from './systemTranslation';
2
+ import { type EventAction, type IDbPayload } from '@leav/utils';
2
3
  export type IAutomationRule = ICoreEntity & {
4
+ createdAt: number;
5
+ createdBy: string;
6
+ modifiedAt: number;
7
+ modifiedBy: string;
3
8
  id: string;
4
9
  label: ISystemTranslation;
5
10
  description?: ISystemTranslation;
6
11
  active: boolean;
7
- createdAt?: number;
8
- createdBy?: string;
9
- modifiedAt?: number;
10
- modifiedBy?: string;
12
+ trigger: AutomationRuleTrigger;
11
13
  };
12
14
  export type ICreateAutomationRule = {
13
15
  label: ISystemTranslation;
14
16
  description?: ISystemTranslation;
17
+ trigger: AutomationRuleTrigger;
15
18
  };
19
+ export type IUpdateAutomationRule = {
20
+ id: string;
21
+ label?: ISystemTranslation;
22
+ description?: ISystemTranslation;
23
+ active?: boolean;
24
+ trigger?: Partial<AutomationRuleTrigger>;
25
+ };
26
+ export type AutomationRuleTrigger = {
27
+ synchronous: boolean;
28
+ eventAction: EventAction | SyncAutomationRuleEventAction;
29
+ eventTopic?: IDbPayload['topic'];
30
+ };
31
+ export declare enum SyncAutomationRuleEventAction {
32
+ RECORD_INIT = "RECORD_INIT"
33
+ }
@@ -35,6 +35,10 @@ export interface IConfig {
35
35
  pluginsPath: string[];
36
36
  bugsnag: IBugsnag;
37
37
  matomo: IMatomo;
38
+ automation: IAutomation;
39
+ }
40
+ export interface IAutomation {
41
+ enable: boolean;
38
42
  }
39
43
  export declare enum CoreMode {
40
44
  SERVER = "server",
@@ -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",
@@ -32,6 +32,7 @@ interface IDBPayloadDataMap {
32
32
  [EventAction.APP_SAVE]: IApplication;
33
33
  [EventAction.APP_DELETE]: IApplication;
34
34
  [EventAction.AUTOMATION_RULE_CREATE]: IAutomationRule;
35
+ [EventAction.AUTOMATION_RULE_UPDATE]: IAutomationRule;
35
36
  [EventAction.GLOBAL_SETTINGS_SAVE]: IGlobalSettings;
36
37
  [EventAction.LIBRARY_SAVE]: ILibraryDbEvent;
37
38
  [EventAction.LIBRARY_DELETE]: ILibraryDbEvent;
@@ -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;
@@ -1,17 +1,22 @@
1
1
  import { type IGraphqlAppModule } from '../graphql/graphqlApp';
2
2
  import { type IAutomationDomain } from '../../domain/automation/automationDomain';
3
+ import { type IAutomationRule } from '../../_types/automation';
3
4
  import { type IPaginationParams, type ISortParams } from '../../_types/list';
5
+ import { type IEventsManagerDomain } from '../../domain/eventsManager/eventsManagerDomain';
4
6
  export type ICoreImportApp = IGraphqlAppModule;
5
- interface IDeps {
7
+ interface IAutomationAppDeps {
6
8
  'core.domain.automation': IAutomationDomain;
9
+ 'core.domain.eventsManager': IEventsManagerDomain;
7
10
  }
8
11
  export interface IGetAutomationRulesArgs {
9
12
  filters?: ICoreEntityFilterOptions & {
10
- id: string;
11
- active: boolean;
13
+ active?: boolean;
14
+ synchronous?: boolean;
15
+ eventAction?: IAutomationRule['trigger']['eventAction'];
16
+ eventTopic?: IAutomationRule['trigger']['eventTopic'];
12
17
  };
13
18
  pagination?: IPaginationParams;
14
19
  sort?: ISortParams;
15
20
  }
16
- export default function ({ 'core.domain.automation': automationDomain }: IDeps): ICoreImportApp;
21
+ export default function ({ 'core.domain.automation': automationDomain, 'core.domain.eventsManager': eventsManagerDomain, }: IAutomationAppDeps): ICoreImportApp;
17
22
  export {};
@@ -2,7 +2,8 @@ import { type InitQueryContextFunc } from '../helpers/initQueryContext';
2
2
  import { type IEventsManagerDomain } from '../../domain/eventsManager/eventsManagerDomain';
3
3
  import { type IConfig } from '../../_types/config';
4
4
  import { type IAppModule } from '../../_types/shared';
5
- export type IEventsManagerApp = IAppModule;
5
+ import { type IGraphqlAppModule } from '../graphql/graphqlApp';
6
+ export type IEventsManagerApp = IAppModule & IGraphqlAppModule;
6
7
  interface IDeps {
7
8
  'core.domain.eventsManager': IEventsManagerDomain;
8
9
  'core.app.helpers.initQueryContext': InitQueryContextFunc;
@@ -1,13 +1,17 @@
1
- import { type ICreateAutomationRule, type IAutomationRule } from '../../_types/automation';
1
+ import { type ICreateAutomationRule, type IAutomationRule, type IUpdateAutomationRule } from '../../_types/automation';
2
2
  import { type IList } from '../../_types/list';
3
3
  import { type IQueryInfos } from '../../_types/queryInfos';
4
4
  import { type IGetCoreEntitiesParams } from '../../_types/shared';
5
5
  import { type IAutomationRuleRepo } from '../../infra/automation/automationRuleRepo';
6
6
  import { type IAdminPermissionDomain } from '../permission/adminPermissionDomain';
7
7
  import { type IEventsManagerDomain } from '../eventsManager/eventsManagerDomain';
8
+ import { type IConfig } from '../../_types/config';
8
9
  export interface IGetAutomationRulesParams extends IGetCoreEntitiesParams {
9
10
  filters?: ICoreEntityFilterOptions & {
10
11
  active?: boolean;
12
+ synchronous?: boolean;
13
+ eventAction?: IAutomationRule['trigger']['eventAction'];
14
+ eventTopic?: IAutomationRule['trigger']['eventTopic'];
11
15
  };
12
16
  }
13
17
  export interface IAutomationDomain {
@@ -19,10 +23,19 @@ export interface IAutomationDomain {
19
23
  rule: ICreateAutomationRule;
20
24
  ctx: IQueryInfos;
21
25
  }): Promise<IAutomationRule>;
26
+ updateAutomationRule({ rule, ctx }: {
27
+ rule: IUpdateAutomationRule;
28
+ ctx: IQueryInfos;
29
+ }): Promise<IAutomationRule>;
30
+ triggerRules(event: {
31
+ action: IAutomationRule['trigger']['eventAction'];
32
+ topic?: IAutomationRule['trigger']['eventTopic'];
33
+ }, synchronous: boolean, ctx: IQueryInfos): Promise<void>;
22
34
  }
23
35
  export interface IAutomationDomainDeps {
24
36
  'core.domain.permission.admin': IAdminPermissionDomain;
25
37
  'core.domain.eventsManager': IEventsManagerDomain;
26
38
  'core.infra.automation.rule': IAutomationRuleRepo;
39
+ config: IConfig;
27
40
  }
28
- export default function ({ 'core.domain.permission.admin': adminPermissionDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.infra.automation.rule': automationRuleRepo, }: IAutomationDomainDeps): IAutomationDomain;
41
+ export default function ({ 'core.domain.permission.admin': adminPermissionDomain, 'core.domain.eventsManager': eventsManagerDomain, 'core.infra.automation.rule': automationRuleRepo, config, }: IAutomationDomainDeps): IAutomationDomain;
@@ -4,6 +4,7 @@ import { type IRecordRepo } from '../../../infra/record/recordRepo';
4
4
  import { type IQueryInfos } from '../../../_types/queryInfos';
5
5
  import { type IRecord } from '../../../_types/record';
6
6
  import { type ICreateRecordValueError } from '../_types';
7
+ import { type IAutomationDomain } from '../../automation/automationDomain';
7
8
  export type IPreCreateRecordCallback = () => Promise<ICreateRecordValueError[]>;
8
9
  export type CreateRecordHelper = (params: {
9
10
  library: string;
@@ -14,6 +15,7 @@ interface IDeps {
14
15
  'core.domain.eventsManager': IEventsManagerDomain;
15
16
  'core.domain.permission.library': ILibraryPermissionDomain;
16
17
  'core.infra.record': IRecordRepo;
18
+ 'core.domain.automation': IAutomationDomain;
17
19
  }
18
- export default function ({ 'core.domain.eventsManager': eventsManager, 'core.domain.permission.library': libraryPermissionDomain, 'core.infra.record': recordRepo, }: IDeps): CreateRecordHelper;
20
+ export default function ({ 'core.domain.eventsManager': eventsManager, 'core.domain.permission.library': libraryPermissionDomain, 'core.infra.record': recordRepo, 'core.domain.automation': automationDomain, }: IDeps): CreateRecordHelper;
19
21
  export {};