Skip to content

Commit 58bcd87

Browse files
authored
Merge pull request #3266 from SeedCompany/bugfix/workflow-granter-type
2 parents daa0c68 + d67f655 commit 58bcd87

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/components/workflow/define-workflow.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,18 @@ export const defineWorkflow =
7373
transitionByKey: (key: ID) => {
7474
const transition = workflow.transitions.find((t) => t.key === key);
7575
if (!transition) {
76-
throw new NotFoundException('Transition does not exist');
76+
throw new NotFoundException(
77+
`${workflow.name} workflow transition for key "${key}" does not exist.`,
78+
);
79+
}
80+
return transition;
81+
},
82+
transitionByName: (name: TransitionNames) => {
83+
const transition = workflow.transitions.find((t) => t.name === name);
84+
if (!transition) {
85+
throw new NotFoundException(
86+
`${workflow.name} workflow transition named "${name}" does not exist`,
87+
);
7788
}
7889
return transition;
7990
},
@@ -130,6 +141,9 @@ export interface Workflow<
130141
/** type only */
131142
readonly resolvedTransition: Omit<Transition, 'to'> & { to: State };
132143
readonly transitionByKey: (key: ID) => Transition;
144+
readonly transitionByName: <Names extends TransitionNames>(
145+
name: Names,
146+
) => Transition;
133147
readonly pickNames: <Names extends TransitionNames>(
134148
...keys: Array<Many<Names>>
135149
) => ReadonlySet<Names>;

src/components/workflow/workflow.granter.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ export function WorkflowEventGranter<
1515
W extends Workflow,
1616
EventClass extends W['eventResource'],
1717
>(workflow: () => W) {
18-
type State = Workflow['state'];
19-
type Names = Workflow['transition']['name'];
18+
type State = W['state'];
19+
type Names = W['transition']['name'];
2020

2121
abstract class WorkflowEventGranterClass extends ResourceGranter<EventClass> {
2222
get read() {
@@ -102,7 +102,7 @@ export class TransitionCondition<W extends Workflow>
102102
return new TransitionCondition(
103103
[...allowed].map((name) => ({
104104
name,
105-
key: [workflow.transitions.find((t) => t.name === name)!.key],
105+
key: [workflow.transitionByName(name).key],
106106
})),
107107
);
108108
}

0 commit comments

Comments
 (0)