@lafken/state-machine 0.10.6 → 0.11.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.
@@ -8,6 +8,7 @@ const state_machine_1 = require("./state-machine/state-machine");
8
8
  class StateMachineResolver {
9
9
  type = main_1.RESOURCE_TYPE;
10
10
  async create(module, resource) {
11
+ const minify = (0, resolver_1.getContextValueByScope)(module, 'minify');
11
12
  const metadata = (0, common_1.getResourceMetadata)(resource);
12
13
  const handlers = (0, common_1.getResourceHandlerMetadata)(resource);
13
14
  resolver_1.lambdaAssets.initializeMetadata({
@@ -15,9 +16,10 @@ class StateMachineResolver {
15
16
  filename: metadata.filename,
16
17
  className: metadata.originalName,
17
18
  methods: handlers.map((handler) => handler.name),
18
- minify: metadata.minify,
19
+ minify: metadata.minify ?? minify,
19
20
  });
20
21
  const stateMachine = new state_machine_1.StateMachine(module, metadata.name, {
22
+ minify,
21
23
  classResource: resource,
22
24
  resourceMetadata: metadata,
23
25
  moduleName: module.id,
@@ -1,9 +1,11 @@
1
1
  import { type ClassResource } from '@lafken/common';
2
+ import type { TerraformResource } from 'cdktn';
2
3
  import type { Construct } from 'constructs';
3
4
  import type { BucketPermission, DefinitionSchema, SchemaProps } from './schema.types';
4
5
  export declare class Schema {
5
6
  private scope;
6
7
  private resource;
8
+ private props;
7
9
  private states;
8
10
  private resourceMetadata;
9
11
  private handlers;
@@ -11,8 +13,10 @@ export declare class Schema {
11
13
  private lambdaStates;
12
14
  private unresolvedDependency;
13
15
  private bucketPermissions;
16
+ private lambdaResources;
14
17
  constructor(scope: Construct, resource: ClassResource, props?: SchemaProps);
15
- getDefinition(): DefinitionSchema;
18
+ get definition(): DefinitionSchema;
19
+ get resources(): TerraformResource[];
16
20
  resolveArguments(definition: DefinitionSchema): Promise<DefinitionSchema>;
17
21
  get hasUnresolvedDependency(): boolean;
18
22
  get buckets(): BucketPermission;
@@ -8,6 +8,7 @@ const schema_utils_1 = require("./schema.utils");
8
8
  class Schema {
9
9
  scope;
10
10
  resource;
11
+ props;
11
12
  states = {};
12
13
  resourceMetadata;
13
14
  handlers = {};
@@ -15,20 +16,25 @@ class Schema {
15
16
  lambdaStates;
16
17
  unresolvedDependency = false;
17
18
  bucketPermissions = {};
19
+ lambdaResources = [];
18
20
  constructor(scope, resource, props = {}) {
19
21
  this.scope = scope;
20
22
  this.resource = resource;
23
+ this.props = props;
21
24
  this.stateNames = props.stateNames || new schema_utils_1.StateNames();
22
25
  this.lambdaStates = props.lambdas || new schema_utils_1.LambdaStates();
23
26
  this.getMetadata(props.initializeAssets ?? false);
24
27
  }
25
- getDefinition() {
28
+ get definition() {
26
29
  const startName = this.getNextState(this.resourceMetadata.startAt);
27
30
  return {
28
31
  StartAt: startName,
29
32
  States: this.states,
30
33
  };
31
34
  }
35
+ get resources() {
36
+ return this.lambdaResources;
37
+ }
32
38
  async resolveArguments(definition) {
33
39
  for (const key in definition.States) {
34
40
  const state = definition.States[key];
@@ -52,7 +58,7 @@ class Schema {
52
58
  get buckets() {
53
59
  return this.bucketPermissions;
54
60
  }
55
- getMetadata(initializeAssets) {
61
+ getMetadata(initializeAssets, minify) {
56
62
  this.resourceMetadata = (0, common_1.getResourceMetadata)(this.resource);
57
63
  const handlers = (0, common_1.getResourceHandlerMetadata)(this.resource);
58
64
  this.handlers = handlers.reduce((acc, handler) => {
@@ -65,7 +71,7 @@ class Schema {
65
71
  filename: this.resourceMetadata.filename,
66
72
  className: this.resourceMetadata.originalName,
67
73
  methods: handlers.map((handler) => handler.name),
68
- minify: this.resourceMetadata.minify,
74
+ minify: this.resourceMetadata.minify ?? minify,
69
75
  });
70
76
  }
71
77
  }
@@ -135,8 +141,10 @@ class Schema {
135
141
  initializeAssets: true,
136
142
  lambdas: this.lambdaStates,
137
143
  stateNames: this.stateNames,
144
+ minify: this.props.minify,
138
145
  });
139
- branchStates.push(branchSchema.getDefinition());
146
+ this.resources.push(...this.resources);
147
+ branchStates.push(branchSchema.definition);
140
148
  this.mergeBucketPermissions(branchSchema.buckets);
141
149
  this.setUnresolvedDependency(branchSchema.unresolvedDependency);
142
150
  }
@@ -157,9 +165,11 @@ class Schema {
157
165
  initializeAssets: true,
158
166
  lambdas: this.lambdaStates,
159
167
  stateNames: this.stateNames,
168
+ minify: this.props.minify,
160
169
  });
170
+ this.resources.push(...this.resources);
161
171
  this.mergeBucketPermissions(mapSchema.buckets);
162
- const mapState = mapSchema.getDefinition();
172
+ const mapState = mapSchema.definition;
163
173
  this.setUnresolvedDependency(mapSchema.hasUnresolvedDependency);
164
174
  const itemProcessor = {
165
175
  ...mapState,
@@ -275,6 +285,7 @@ class Schema {
275
285
  suffix: 'states',
276
286
  },
277
287
  ]);
288
+ this.resources.push(lambdaHandler);
278
289
  return {
279
290
  Resource: 'arn:aws:states:::lambda:invoke',
280
291
  Arguments: {
@@ -137,6 +137,7 @@ export type States = StateTask | ParallelTask | MapTask | ChoiceTask | WaitTask
137
137
  export type StatesWithCatchErrors = StateTask | ParallelTask | MapTask;
138
138
  export interface SchemaProps {
139
139
  initializeAssets?: boolean;
140
+ minify?: boolean;
140
141
  stateNames?: StateNames | undefined;
141
142
  lambdas?: LambdaStates | undefined;
142
143
  }
@@ -15,5 +15,6 @@ export declare class StateMachine extends StateMachine_base {
15
15
  private overrideDefinition;
16
16
  private overrideRole;
17
17
  private addLoggingConfiguration;
18
+ private addDependency;
18
19
  }
19
20
  export {};
@@ -4,6 +4,7 @@ exports.StateMachine = void 0;
4
4
  const cloudwatch_log_group_1 = require("@cdktn/provider-aws/lib/cloudwatch-log-group");
5
5
  const sfn_state_machine_1 = require("@cdktn/provider-aws/lib/sfn-state-machine");
6
6
  const resolver_1 = require("@lafken/resolver");
7
+ const cdktn_1 = require("cdktn");
7
8
  const schema_1 = require("./schema/schema");
8
9
  class StateMachine extends resolver_1.lafkenResource.make(sfn_state_machine_1.SfnStateMachine) {
9
10
  props;
@@ -26,15 +27,17 @@ class StateMachine extends resolver_1.lafkenResource.make(sfn_state_machine_1.Sf
26
27
  }
27
28
  async attachDefinition() {
28
29
  const { classResource } = this.props;
29
- const schema = new schema_1.Schema(this, classResource);
30
- const definition = await schema.getDefinition();
30
+ const schema = new schema_1.Schema(this, classResource, { minify: this.props.minify });
31
+ const definition = await schema.definition;
31
32
  this.overrideRole(schema);
32
33
  if (!schema.hasUnresolvedDependency) {
33
34
  this.overrideDefinition(definition);
35
+ this.addDependency(...schema.resources);
34
36
  }
35
- if (schema.hasUnresolvedDependency) {
37
+ else {
36
38
  this.isDependent(async () => {
37
39
  this.overrideDefinition(await schema.resolveArguments(definition));
40
+ this.addDependency(...schema.resources);
38
41
  });
39
42
  }
40
43
  }
@@ -76,6 +79,7 @@ class StateMachine extends resolver_1.lafkenResource.make(sfn_state_machine_1.Sf
76
79
  },
77
80
  principal: 'states.amazonaws.com',
78
81
  });
82
+ this.addDependency(role, role.policy);
79
83
  this.addOverride('role_arn', role.arn);
80
84
  }
81
85
  addLoggingConfiguration(resourceMetadata) {
@@ -91,6 +95,13 @@ class StateMachine extends resolver_1.lafkenResource.make(sfn_state_machine_1.Sf
91
95
  level: resourceMetadata.loggingConfiguration.level?.toUpperCase(),
92
96
  logDestination: `${logGroup.arn}:*`,
93
97
  });
98
+ this.addDependency(logGroup);
99
+ }
100
+ addDependency(...resource) {
101
+ this.dependsOn = [
102
+ ...(this.dependsOn || []),
103
+ ...resource.map((res) => (0, cdktn_1.dependable)(res)),
104
+ ];
94
105
  }
95
106
  }
96
107
  exports.StateMachine = StateMachine;
@@ -4,4 +4,5 @@ export interface StateMachineProps {
4
4
  classResource: ClassResource;
5
5
  resourceMetadata: StateMachineResourceMetadata;
6
6
  moduleName: string;
7
+ minify?: boolean;
7
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lafken/state-machine",
3
- "version": "0.10.6",
3
+ "version": "0.11.1",
4
4
  "private": false,
5
5
  "description": "Build Step Functions workflows with TypeScript decorators - declarative orchestration with Lafken",
6
6
  "keywords": [
@@ -50,7 +50,7 @@
50
50
  ],
51
51
  "dependencies": {
52
52
  "reflect-metadata": "^0.2.2",
53
- "@lafken/resolver": "0.10.6"
53
+ "@lafken/resolver": "0.11.1"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@cdktn/provider-aws": "^23.5.0",
@@ -63,13 +63,13 @@
63
63
  "typescript": "6.0.2",
64
64
  "unplugin-swc": "^1.5.9",
65
65
  "vitest": "^4.1.2",
66
- "@lafken/common": "0.10.6"
66
+ "@lafken/common": "0.11.1"
67
67
  },
68
68
  "peerDependencies": {
69
69
  "@cdktn/provider-aws": ">=23.0.0",
70
70
  "cdktn": ">=0.22.0",
71
71
  "constructs": "^10.4.5",
72
- "@lafken/common": "0.10.6"
72
+ "@lafken/common": "0.11.1"
73
73
  },
74
74
  "engines": {
75
75
  "node": ">=20.19"