@flusys/nestjs-entity-builder 9.1.0 → 9.1.1

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 (61) hide show
  1. package/README.md +52 -25
  2. package/config/entity-builder.constants.d.ts +2 -0
  3. package/config/message-keys.d.ts +93 -12
  4. package/controllers/definition-bundle.controller.d.ts +15 -0
  5. package/controllers/flow-definition.controller.d.ts +7 -1
  6. package/controllers/index.d.ts +1 -1
  7. package/dtos/definition-bundle.dto.d.ts +57 -0
  8. package/dtos/flow.dto.d.ts +12 -20
  9. package/dtos/index.d.ts +1 -0
  10. package/entities/flow-definition.entity.d.ts +3 -9
  11. package/entities/flow-execution.entity.d.ts +3 -0
  12. package/entities/flow-version.entity.d.ts +10 -0
  13. package/entities/index.d.ts +3 -3
  14. package/fesm/21.js +96 -14
  15. package/fesm/458.js +695 -0
  16. package/fesm/{489.js → 582.js} +22 -30
  17. package/fesm/{996.js → 677.js} +1453 -1078
  18. package/fesm/794.js +135 -240
  19. package/fesm/{719.js → 870.js} +1955 -220
  20. package/fesm/{362.js → 897.js} +566 -2
  21. package/fesm/{606.js → 946.js} +564 -290
  22. package/fesm/config/index.js +15 -2
  23. package/fesm/controllers/index.js +9 -9
  24. package/fesm/docs/index.js +7 -4
  25. package/fesm/dtos/index.js +451 -256
  26. package/fesm/entities/index.js +58 -3
  27. package/fesm/guards/index.js +101 -22
  28. package/fesm/index.js +429 -948
  29. package/fesm/interfaces/index.js +19 -2
  30. package/fesm/modules/index.js +10 -628
  31. package/fesm/rule-engine/index.js +12 -3
  32. package/fesm/services/index.js +97 -27
  33. package/flow-engine/flow-api-key.d.ts +3 -7
  34. package/flow-engine/flow-graph.validator.d.ts +4 -2
  35. package/flow-engine/flow-permission-logic.d.ts +2 -0
  36. package/flow-engine/flow-run.types.d.ts +17 -8
  37. package/flow-engine/flow.types.d.ts +101 -13
  38. package/guards/designer-writable.interceptor.d.ts +12 -0
  39. package/guards/index.d.ts +1 -0
  40. package/interfaces/definition-bundle.interface.d.ts +111 -0
  41. package/interfaces/entity-builder-module.interface.d.ts +6 -0
  42. package/interfaces/flow-definition.interface.d.ts +13 -9
  43. package/interfaces/index.d.ts +1 -0
  44. package/package.json +5 -5
  45. package/rule-engine/rule-engine.service.d.ts +1 -0
  46. package/rule-engine/rule-permission.d.ts +3 -7
  47. package/services/definition-bundle.diff.d.ts +62 -0
  48. package/services/definition-bundle.file.d.ts +7 -0
  49. package/services/definition-bundle.service.d.ts +32 -0
  50. package/services/entity-builder-config.service.d.ts +2 -0
  51. package/services/entity-flow-scaffold.d.ts +1 -1
  52. package/services/flow-definition.service.d.ts +25 -12
  53. package/services/flow-execution.service.d.ts +7 -0
  54. package/services/flow-executor.service.d.ts +8 -8
  55. package/services/generic-entity.service.d.ts +1 -1
  56. package/services/index.d.ts +3 -1
  57. package/services/schema-evolution.service.d.ts +3 -1
  58. package/services/schema-sync.service.d.ts +5 -1
  59. package/controllers/flow-api-key.controller.d.ts +0 -14
  60. package/entities/flow-api-key.entity.d.ts +0 -10
  61. package/services/flow-api-key.service.d.ts +0 -31
@@ -0,0 +1,57 @@
1
+ import { EntityStatus } from '../enums/entity-status.enum.js';
2
+ import { FieldType } from '../enums/field-type.enum.js';
3
+ import { type IFlowEdge, type IFlowNode } from '../flow-engine/flow.types.js';
4
+ import { DEFINITION_BUNDLE_FORMAT, DEFINITION_BUNDLE_VERSION } from '../interfaces/definition-bundle.interface.js';
5
+ export declare class BundleFieldDto {
6
+ id: string;
7
+ code: string;
8
+ label: string;
9
+ fieldType: FieldType;
10
+ nullable: boolean;
11
+ unique: boolean;
12
+ isIndexed: boolean;
13
+ defaultValue: unknown;
14
+ validationRules: Record<string, unknown> | null;
15
+ selectOptions: unknown[] | null;
16
+ relationTarget: string | null;
17
+ order: number;
18
+ uiConfig: Record<string, unknown> | null;
19
+ isSearchable: boolean;
20
+ deprecated: boolean;
21
+ }
22
+ export declare class BundleEntityDto {
23
+ id: string;
24
+ code: string;
25
+ label: string;
26
+ description: string | null;
27
+ status: EntityStatus;
28
+ isSoftDeleteEnabled: boolean;
29
+ isAuditEnabled: boolean;
30
+ uiConfig: Record<string, unknown> | null;
31
+ fields: BundleFieldDto[];
32
+ }
33
+ export declare class BundleFlowDto {
34
+ name: string;
35
+ slug: string;
36
+ description: string | null;
37
+ isActive: boolean;
38
+ retainExecutions: number;
39
+ nodes: IFlowNode[];
40
+ edges: IFlowEdge[];
41
+ }
42
+ export declare class DefinitionBundleDto {
43
+ format: typeof DEFINITION_BUNDLE_FORMAT;
44
+ version: typeof DEFINITION_BUNDLE_VERSION;
45
+ entities: BundleEntityDto[];
46
+ flows: BundleFlowDto[];
47
+ }
48
+ export declare class ExportBundleDto {
49
+ entityCodes?: string[];
50
+ flowSlugs?: string[];
51
+ }
52
+ export declare class ImportBundleOptionsDto {
53
+ deprecateMissingFields?: boolean;
54
+ confirm?: boolean;
55
+ expectedChecksum?: string;
56
+ expectedPlanChecksum?: string;
57
+ }
@@ -1,19 +1,12 @@
1
1
  import { IdentityResponseDto } from '@flusys/nestjs-shared/dtos';
2
- import { type FlowAuthMode, type FlowBodyType, type FlowInput, type FlowRunAs, type IFlowEdge, type IFlowInputField, type IFlowNode } from '../flow-engine/flow.types.js';
2
+ import { type IFlowSnapshot } from '../interfaces/flow-definition.interface.js';
3
+ import { type FlowInput, type IFlowEdge, type IFlowNode } from '../flow-engine/flow.types.js';
3
4
  export declare class CreateFlowDefinitionDto {
4
5
  name: string;
5
6
  slug: string;
6
7
  description?: string;
7
8
  isActive?: boolean;
8
- authMode?: FlowAuthMode;
9
- permissionCode?: string;
10
- runAs?: FlowRunAs;
11
- isTransactional?: boolean;
12
- timeoutMs?: number;
13
- rateLimitPerMinute?: number;
14
9
  retainExecutions?: number;
15
- bodyType?: FlowBodyType;
16
- inputSchema?: IFlowInputField[];
17
10
  nodes: IFlowNode[];
18
11
  edges: IFlowEdge[];
19
12
  }
@@ -26,6 +19,7 @@ export declare class FlowDraftDto extends FlowDraftDto_base {
26
19
  name?: string;
27
20
  id?: string;
28
21
  version?: unknown;
22
+ draft?: unknown;
29
23
  createdAt?: unknown;
30
24
  updatedAt?: unknown;
31
25
  deletedAt?: unknown;
@@ -52,9 +46,12 @@ export declare class ValidateFlowDto {
52
46
  export declare class FlowIdDto {
53
47
  flowId: string;
54
48
  }
55
- export declare class CreateFlowApiKeyDto extends FlowIdDto {
56
- name: string;
57
- expiresAt?: string;
49
+ export declare class PublishFlowDto {
50
+ id: string;
51
+ note?: string;
52
+ }
53
+ export declare class FlowVersionRefDto extends FlowIdDto {
54
+ version: number;
58
55
  }
59
56
  export declare class IdBodyDto {
60
57
  id: string;
@@ -62,6 +59,8 @@ export declare class IdBodyDto {
62
59
  export declare class ListFlowExecutionsDto {
63
60
  flowId?: string;
64
61
  status?: string;
62
+ trigger?: string;
63
+ endpointNodeId?: string;
65
64
  page?: number;
66
65
  pageSize?: number;
67
66
  }
@@ -70,17 +69,10 @@ export declare class FlowDefinitionResponseDto extends IdentityResponseDto {
70
69
  slug: string;
71
70
  description: string | null;
72
71
  isActive: boolean;
73
- authMode: FlowAuthMode;
74
- permissionCode: string | null;
75
- runAs: FlowRunAs;
76
- isTransactional: boolean;
77
- timeoutMs: number;
78
- rateLimitPerMinute: number;
79
72
  retainExecutions: number;
80
- bodyType: FlowBodyType;
81
- inputSchema: IFlowInputField[];
82
73
  nodes: IFlowNode[];
83
74
  edges: IFlowEdge[];
84
75
  version: number;
76
+ draft: IFlowSnapshot | null;
85
77
  }
86
78
  export {};
package/dtos/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './entity-definition.dto.js';
2
2
  export * from './field-definition.dto.js';
3
3
  export * from './schema-change.dto.js';
4
+ export * from './definition-bundle.dto.js';
@@ -1,20 +1,14 @@
1
1
  import { Identity } from '@flusys/nestjs-shared';
2
- import type { FlowAuthMode, FlowBodyType, FlowRunAs, IFlowEdge, IFlowInputField, IFlowNode } from '../flow-engine/flow.types.js';
2
+ import type { IFlowEdge, IFlowNode } from '../flow-engine/flow.types.js';
3
+ import type { IFlowSnapshot } from '../interfaces/flow-definition.interface.js';
3
4
  export declare class FlowDefinition extends Identity {
4
5
  name: string;
5
6
  slug: string;
6
7
  description: string | null;
7
8
  isActive: boolean;
8
- authMode: FlowAuthMode;
9
- permissionCode: string | null;
10
- runAs: FlowRunAs;
11
- isTransactional: boolean;
12
- timeoutMs: number;
13
- rateLimitPerMinute: number;
14
9
  retainExecutions: number;
15
- bodyType: FlowBodyType;
16
- inputSchema: IFlowInputField[];
17
10
  nodes: IFlowNode[];
18
11
  edges: IFlowEdge[];
19
12
  version: number;
13
+ draft: IFlowSnapshot | null;
20
14
  }
@@ -3,8 +3,11 @@ import type { IFlowTraceEntry } from '../flow-engine/flow-run.types.js';
3
3
  export declare class FlowExecution extends Identity {
4
4
  flowId: string | null;
5
5
  flowSlug: string;
6
+ flowVersion: number | null;
6
7
  status: string;
7
8
  trigger: string;
9
+ endpointNodeId: string | null;
10
+ endpointPath: string | null;
8
11
  mode: string;
9
12
  statusCode: number;
10
13
  input: Record<string, unknown> | null;
@@ -0,0 +1,10 @@
1
+ import { Identity } from '@flusys/nestjs-shared';
2
+ import type { IFlowSnapshot } from '../interfaces/flow-definition.interface.js';
3
+ export declare class FlowVersion extends Identity {
4
+ flowId: string;
5
+ version: number;
6
+ definition: IFlowSnapshot;
7
+ note: string | null;
8
+ publishedAt: Date;
9
+ publishedById: string | null;
10
+ }
@@ -2,13 +2,13 @@ export * from './entity-definition.entity.js';
2
2
  export * from './field-definition.entity.js';
3
3
  export * from './schema-change-log.entity.js';
4
4
  export * from './flow-definition.entity.js';
5
- export * from './flow-api-key.entity.js';
6
5
  export * from './flow-execution.entity.js';
6
+ export * from './flow-version.entity.js';
7
7
  import { EntityDefinition } from './entity-definition.entity.js';
8
8
  import { FieldDefinition } from './field-definition.entity.js';
9
9
  import { SchemaChangeLog } from './schema-change-log.entity.js';
10
10
  import { FlowDefinition } from './flow-definition.entity.js';
11
- import { FlowApiKey } from './flow-api-key.entity.js';
12
11
  import { FlowExecution } from './flow-execution.entity.js';
13
- export declare const EntityBuilderEntities: (typeof EntityDefinition | typeof FieldDefinition | typeof SchemaChangeLog | typeof FlowDefinition | typeof FlowApiKey | typeof FlowExecution)[];
12
+ import { FlowVersion } from './flow-version.entity.js';
13
+ export declare const EntityBuilderEntities: (typeof EntityDefinition | typeof FieldDefinition | typeof SchemaChangeLog | typeof FlowDefinition | typeof FlowExecution | typeof FlowVersion)[];
14
14
  export declare function getEntityBuilderEntities(): typeof EntityBuilderEntities;
package/fesm/21.js CHANGED
@@ -262,15 +262,9 @@ const FLOW_MESSAGES = {
262
262
  SLUG_TAKEN: 'entity_builder.flow.slug.taken',
263
263
  RATE_LIMITED: 'entity_builder.flow.rate.limited',
264
264
  API_KEY_INVALID: 'entity_builder.flow.api.key.invalid',
265
- API_KEY_NOT_FOUND: 'entity_builder.flow.api.key.not.found',
266
- API_KEY_CREATE_SUCCESS: 'entity_builder.flow.api.key.create.success',
267
- API_KEY_LIST_SUCCESS: 'entity_builder.flow.api.key.list.success',
268
- API_KEY_REVOKE_SUCCESS: 'entity_builder.flow.api.key.revoke.success',
269
- API_KEY_DELETE_SUCCESS: 'entity_builder.flow.api.key.delete.success',
270
- API_KEY_EXPIRED: 'entity_builder.flow.api.key.expired',
271
- API_KEY_EXPIRY_IN_PAST: 'entity_builder.flow.api.key.expiry.in.past',
272
265
  CALLED_BY_OTHER_FLOWS: 'entity_builder.flow.called.by.other.flows',
273
266
  ENDPOINT_CALLED_BY_OTHER_FLOWS: 'entity_builder.flow.endpoint.called.by.other.flows',
267
+ CALLERS_BROKEN: 'entity_builder.flow.callers.broken',
274
268
  EXECUTION_NOT_FOUND: 'entity_builder.flow.execution.not.found',
275
269
  EXECUTIONS_SUCCESS: 'entity_builder.flow.executions.success',
276
270
  EXECUTION_SUCCESS: 'entity_builder.flow.execution.success',
@@ -287,7 +281,15 @@ const FLOW_MESSAGES = {
287
281
  INPUT_BODY_NOT_LIST: 'entity_builder.flow.input.body.not.list',
288
282
  INPUT_BODY_ITEM_NOT_OBJECT: 'entity_builder.flow.input.body.item.not.object',
289
283
  CHECKS_FAILED: 'entity_builder.flow.checks.failed',
290
- PERMISSION_DENIED: 'entity_builder.flow.permission.denied'
284
+ PERMISSION_DENIED: 'entity_builder.flow.permission.denied',
285
+ PUBLISH_SUCCESS: 'entity_builder.flow.publish.success',
286
+ NOTHING_TO_PUBLISH: 'entity_builder.flow.nothing.to.publish',
287
+ VERSIONS_SUCCESS: 'entity_builder.flow.versions.success',
288
+ VERSION_SUCCESS: 'entity_builder.flow.version.success',
289
+ VERSION_NOT_FOUND: 'entity_builder.flow.version.not.found',
290
+ VERSION_RESTORED: 'entity_builder.flow.version.restored',
291
+ DRAFT_DISCARDED: 'entity_builder.flow.draft.discarded',
292
+ NO_DRAFT: 'entity_builder.flow.no.draft'
291
293
  };
292
294
  /** Why a run was stopped or a node failed (`trace[].error`, `body.messageKey`). */ const FLOW_ERROR_MESSAGES = {
293
295
  NO_TRIGGER: 'entity_builder.flow.error.no.trigger',
@@ -323,21 +325,34 @@ const FLOW_MESSAGES = {
323
325
  CALLED_FLOW_TOO_DEEP: 'entity_builder.flow.error.called.flow.too.deep',
324
326
  CALLED_FLOW_FAILED: 'entity_builder.flow.error.called.flow.failed',
325
327
  CALLED_FLOW_FAILED_AT_NODE: 'entity_builder.flow.error.called.flow.failed.at.node',
326
- RUN_AS_NOT_ALLOWED: 'entity_builder.flow.error.run.as.not.allowed',
327
- FILTER_VALUE_MISSING: 'entity_builder.flow.error.filter.value.missing'
328
+ FILTER_VALUE_MISSING: 'entity_builder.flow.error.filter.value.missing',
329
+ TOO_MANY_MESSAGES: 'entity_builder.flow.error.too.many.messages',
330
+ TOO_MANY_RECIPIENTS: 'entity_builder.flow.error.too.many.recipients',
331
+ NOTIFICATION_UNAVAILABLE: 'entity_builder.flow.error.notification.unavailable',
332
+ NOTIFICATION_RECIPIENT_INVALID: 'entity_builder.flow.error.notification.recipient.invalid',
333
+ NOTIFICATION_COMPANY_INVALID: 'entity_builder.flow.error.notification.company.invalid',
334
+ NOTIFICATION_BRANCH_INVALID: 'entity_builder.flow.error.notification.branch.invalid',
335
+ NOTIFICATION_COMPANY_UNAVAILABLE: 'entity_builder.flow.error.notification.company.unavailable',
336
+ NOTIFICATION_TITLE_EMPTY: 'entity_builder.flow.error.notification.title.empty',
337
+ NOTIFICATION_FAILED: 'entity_builder.flow.error.notification.failed',
338
+ EMAIL_UNAVAILABLE: 'entity_builder.flow.error.email.unavailable',
339
+ EMAIL_ADDRESS_INVALID: 'entity_builder.flow.error.email.address.invalid',
340
+ EMAIL_SUBJECT_EMPTY: 'entity_builder.flow.error.email.subject.empty',
341
+ EMAIL_BODY_EMPTY: 'entity_builder.flow.error.email.body.empty',
342
+ EMAIL_FAILED: 'entity_builder.flow.error.email.failed'
328
343
  };
329
344
  /** Why a node was not executed in a test run (`output.reasonKey`). */ const FLOW_SKIP_MESSAGES = {
330
345
  HTTP: 'entity_builder.flow.skip.http',
331
346
  EVENTS: 'entity_builder.flow.skip.events',
347
+ NOTIFICATION: 'entity_builder.flow.skip.notification',
348
+ EMAIL: 'entity_builder.flow.skip.email',
349
+ NO_RECIPIENTS: 'entity_builder.flow.skip.no.recipients',
332
350
  COMMIT_DRY_RUN: 'entity_builder.flow.skip.commit.dry.run',
333
351
  COMMIT_NO_TRANSACTION: 'entity_builder.flow.skip.commit.no.transaction',
334
352
  COMMIT_JOINED: 'entity_builder.flow.skip.commit.joined'
335
353
  };
336
354
  /** Save-time findings about a flow (`validateFlow`). */ const FLOW_VALIDATION_MESSAGES = {
337
355
  SLUG_INVALID: 'entity_builder.flow.validation.slug.invalid',
338
- RUN_AS_CALLER_NEEDS_AUTH: 'entity_builder.flow.validation.run.as.caller.needs.auth',
339
- RUN_AS_INVALID: 'entity_builder.flow.validation.run.as.invalid',
340
- AUTH_MODE_INVALID: 'entity_builder.flow.validation.auth.mode.invalid',
341
356
  NO_NODES: 'entity_builder.flow.validation.no.nodes',
342
357
  TOO_MANY_NODES: 'entity_builder.flow.validation.too.many.nodes',
343
358
  TOO_MANY_EDGES: 'entity_builder.flow.validation.too.many.edges',
@@ -362,8 +377,17 @@ const FLOW_MESSAGES = {
362
377
  COMMIT_NOT_TRANSACTIONAL: 'entity_builder.flow.validation.commit.not.transactional',
363
378
  COMMIT_IN_LOOP: 'entity_builder.flow.validation.commit.in.loop',
364
379
  COMMIT_IN_CALLED_FLOW: 'entity_builder.flow.validation.commit.in.called.flow',
365
- PUBLIC_SYSTEM_ENTITY: 'entity_builder.flow.validation.public.system.entity',
366
380
  PERMISSION_WITHOUT_USER: 'entity_builder.flow.validation.permission.without.user',
381
+ KEYLESS_ENTITY: 'entity_builder.flow.validation.keyless.entity',
382
+ TRIGGER_AUTH_INVALID: 'entity_builder.flow.validation.trigger.auth.invalid',
383
+ TRIGGER_TRANSACTION_INVALID: 'entity_builder.flow.validation.trigger.transaction.invalid',
384
+ TRIGGER_TIMEOUT_RANGE: 'entity_builder.flow.validation.trigger.timeout.range',
385
+ TRIGGER_RATE_LIMIT_RANGE: 'entity_builder.flow.validation.trigger.rate.limit.range',
386
+ TRIGGER_API_KEY_REQUIRED: 'entity_builder.flow.validation.trigger.api.key.required',
387
+ TRIGGER_API_KEY_INVALID: 'entity_builder.flow.validation.trigger.api.key.invalid',
388
+ NODE_FORWARDS_TOKEN: 'entity_builder.flow.validation.node.forwards.token',
389
+ NODE_ACCESS_TARGET_REQUIRED: 'entity_builder.flow.validation.node.access.target.required',
390
+ NODE_ACCESS_USER_REQUIRED: 'entity_builder.flow.validation.node.access.user.required',
367
391
  INPUT_TOO_MANY: 'entity_builder.flow.validation.input.too.many',
368
392
  INPUT_NAME_INVALID: 'entity_builder.flow.validation.input.name.invalid',
369
393
  INPUT_NAME_DUPLICATE: 'entity_builder.flow.validation.input.name.duplicate',
@@ -385,6 +409,7 @@ const FLOW_MESSAGES = {
385
409
  NODE_CASE_DUPLICATE: 'entity_builder.flow.validation.node.case.duplicate',
386
410
  NODE_MAX_ITEMS_RANGE: 'entity_builder.flow.validation.node.max.items.range',
387
411
  NODE_LIMIT_RANGE: 'entity_builder.flow.validation.node.limit.range',
412
+ NODE_SORT_INVALID: 'entity_builder.flow.validation.node.sort.invalid',
388
413
  NODE_WRITE_TARGET_INVALID: 'entity_builder.flow.validation.node.write.target.invalid',
389
414
  NODE_NOT_FOUND_INVALID: 'entity_builder.flow.validation.node.not.found.invalid',
390
415
  NODE_FILTER_REQUIRED: 'entity_builder.flow.validation.node.filter.required',
@@ -409,6 +434,15 @@ const FLOW_MESSAGES = {
409
434
  NODE_CHOOSE_METHOD: 'entity_builder.flow.validation.node.choose.method',
410
435
  NODE_TIMEOUT_RANGE: 'entity_builder.flow.validation.node.timeout.range',
411
436
  NODE_EVENT_NAME_INVALID: 'entity_builder.flow.validation.node.event.name.invalid',
437
+ NODE_NOTIFICATION_UNAVAILABLE: 'entity_builder.flow.validation.node.notification.unavailable',
438
+ NODE_NOTIFICATION_OPTION_INVALID: 'entity_builder.flow.validation.node.notification.option.invalid',
439
+ NODE_NOTIFICATION_COMPANY_UNAVAILABLE: 'entity_builder.flow.validation.node.notification.company.unavailable',
440
+ NODE_MESSAGE_TARGET_INVALID: 'entity_builder.flow.validation.node.message.target.invalid',
441
+ NODE_EMAIL_UNAVAILABLE: 'entity_builder.flow.validation.node.email.unavailable',
442
+ NODE_EMAIL_OPTION_INVALID: 'entity_builder.flow.validation.node.email.option.invalid',
443
+ NODE_EMAIL_TEMPLATE_REQUIRED: 'entity_builder.flow.validation.node.email.template.required',
444
+ MESSAGE_AFTER_COMMIT: 'entity_builder.flow.validation.message.after.commit',
445
+ PUBLIC_MESSAGE: 'entity_builder.flow.validation.public.message',
412
446
  NODE_STATUS_2XX_5XX: 'entity_builder.flow.validation.node.status.2xx.5xx',
413
447
  REF_BAD_SCOPE: 'entity_builder.flow.validation.ref.bad.scope',
414
448
  REF_NODE_MISSING: 'entity_builder.flow.validation.ref.node.missing',
@@ -476,6 +510,22 @@ const FLOW_MESSAGES = {
476
510
  THE_URL: 'entity_builder.flow.subject.the.url',
477
511
  THE_INPUT_LIST: 'entity_builder.flow.subject.the.input.list',
478
512
  THE_RESPONSE: 'entity_builder.flow.subject.the.response',
513
+ THE_RECIPIENTS: 'entity_builder.flow.subject.the.recipients',
514
+ THE_TITLE: 'entity_builder.flow.subject.the.title',
515
+ THE_MESSAGE: 'entity_builder.flow.subject.the.message',
516
+ THE_COMPANY: 'entity_builder.flow.subject.the.company',
517
+ THE_COMPANIES: 'entity_builder.flow.subject.the.companies',
518
+ THE_BRANCHES: 'entity_builder.flow.subject.the.branches',
519
+ THE_USER: 'entity_builder.flow.subject.the.user',
520
+ THE_CC: 'entity_builder.flow.subject.the.cc',
521
+ THE_BCC: 'entity_builder.flow.subject.the.bcc',
522
+ THE_REPLY_TO: 'entity_builder.flow.subject.the.reply.to',
523
+ THE_SUBJECT: 'entity_builder.flow.subject.the.subject',
524
+ THE_BODY: 'entity_builder.flow.subject.the.body',
525
+ DATA_VALUES: 'entity_builder.flow.subject.data.values',
526
+ DATA_VALUE: 'entity_builder.flow.subject.data.value',
527
+ TEMPLATE_VALUES: 'entity_builder.flow.subject.template.values',
528
+ TEMPLATE_VALUE: 'entity_builder.flow.subject.template.value',
479
529
  VARIABLES: 'entity_builder.flow.subject.variables',
480
530
  VARIABLE: 'entity_builder.flow.subject.variable',
481
531
  FIELDS: 'entity_builder.flow.subject.fields',
@@ -493,6 +543,37 @@ const FLOW_MESSAGES = {
493
543
  RESPONSE_VALUES: 'entity_builder.flow.subject.response.values',
494
544
  RESPONSE_VALUE: 'entity_builder.flow.subject.response.value'
495
545
  };
546
+ /** Promoting entity and flow definitions between environments (export / plan-import / apply-import). */ const BUNDLE_MESSAGES = {
547
+ SETTINGS_SUCCESS: 'entity_builder.bundle.settings.success',
548
+ EXPORT_SUCCESS: 'entity_builder.bundle.export.success',
549
+ PLAN_SUCCESS: 'entity_builder.bundle.plan.success',
550
+ APPLY_SUCCESS: 'entity_builder.bundle.apply.success',
551
+ APPLY_PARTIAL: 'entity_builder.bundle.apply.partial',
552
+ APPLY_BLOCKED: 'entity_builder.bundle.apply.blocked',
553
+ CHECKSUM_MISMATCH: 'entity_builder.bundle.checksum.mismatch',
554
+ PLAN_CHANGED: 'entity_builder.bundle.plan.changed',
555
+ PLAN_CHECKSUM_REQUIRED: 'entity_builder.bundle.plan.checksum.required',
556
+ ENTITY_DRAFT_IN_BUNDLE: 'entity_builder.bundle.entity.draft.in.bundle',
557
+ ENTITY_DRAFT_HERE: 'entity_builder.bundle.entity.draft.here',
558
+ ENTITY_DRAFT_SKIPPED: 'entity_builder.bundle.entity.draft.skipped',
559
+ RENAME_VIA_TEMPORARY: 'entity_builder.bundle.rename.via.temporary',
560
+ FILE_REQUIRED: 'entity_builder.bundle.file.required',
561
+ FILE_INVALID: 'entity_builder.bundle.file.invalid',
562
+ CONFIRM_REQUIRED: 'entity_builder.bundle.confirm.required',
563
+ DUPLICATE_ENTITY: 'entity_builder.bundle.duplicate.entity',
564
+ DUPLICATE_FIELD: 'entity_builder.bundle.duplicate.field',
565
+ DUPLICATE_FLOW: 'entity_builder.bundle.duplicate.flow',
566
+ RELATION_TARGET_UNKNOWN: 'entity_builder.bundle.relation.target.unknown',
567
+ ENTITY_CODE_CHANGED: 'entity_builder.bundle.entity.code.changed',
568
+ VARIABLE_MISSING: 'entity_builder.bundle.variable.missing',
569
+ FLOW_SLUG_DELETED: 'entity_builder.bundle.flow.slug.deleted',
570
+ FLOW_UNPUBLISHED_SKIPPED: 'entity_builder.bundle.flow.unpublished.skipped',
571
+ FLOW_DRAFT_REPLACED: 'entity_builder.bundle.flow.draft.replaced',
572
+ FLOW_API_KEY_GENERATED: 'entity_builder.bundle.flow.api.key.generated',
573
+ STEP_AFTER_EARLIER: 'entity_builder.bundle.step.after.earlier',
574
+ FLOWS_CHECKED_ON_APPLY: 'entity_builder.bundle.flows.checked.on.apply',
575
+ DESIGNER_READ_ONLY: 'entity_builder.designer.read.only'
576
+ };
496
577
 
497
578
  __webpack_require__.d(__webpack_exports__, {
498
579
  }, {
@@ -508,6 +589,7 @@ __webpack_require__.d(__webpack_exports__, {
508
589
  Vu: SCHEMA_FINDING_MESSAGES,
509
590
  aB: SCHEMA_IMPACT_MESSAGES,
510
591
  bc: FLOW_SUBJECT_MESSAGES,
592
+ iX: BUNDLE_MESSAGES,
511
593
  j4: GENERIC_RECORD_MESSAGES,
512
594
  oc: FIELD_DEFINITION_MESSAGES,
513
595
  pL: ENTITY_DEFINITION_MESSAGES,