@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.
- package/lib/resolver/resolver.js +3 -1
- package/lib/resolver/state-machine/schema/schema.d.ts +5 -1
- package/lib/resolver/state-machine/schema/schema.js +16 -5
- package/lib/resolver/state-machine/schema/schema.types.d.ts +1 -0
- package/lib/resolver/state-machine/state-machine.d.ts +1 -0
- package/lib/resolver/state-machine/state-machine.js +14 -3
- package/lib/resolver/state-machine/state-machine.types.d.ts +1 -0
- package/package.json +4 -4
package/lib/resolver/resolver.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
|
@@ -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.
|
|
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
|
-
|
|
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;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lafken/state-machine",
|
|
3
|
-
"version": "0.
|
|
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.
|
|
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.
|
|
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.
|
|
72
|
+
"@lafken/common": "0.11.1"
|
|
73
73
|
},
|
|
74
74
|
"engines": {
|
|
75
75
|
"node": ">=20.19"
|