Skip to content

Commit 5a050fb

Browse files
Merge branch 'add-get-workflow-metadata' of github.com:antlai-temporal/sdk-typescript into add-get-workflow-metadata
2 parents 9cc0ef9 + 0c3a6b5 commit 5a050fb

File tree

4 files changed

+33
-20
lines changed

4 files changed

+33
-20
lines changed

packages/common/src/interfaces.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ export type Payload = temporal.api.common.v1.IPayload;
66
export type WorkflowReturnType = Promise<any>;
77
export type WorkflowUpdateType = (...args: any[]) => Promise<any> | any;
88
export type WorkflowUpdateValidatorType = (...args: any[]) => void;
9+
export type WorkflowUpdateAnnotatedType = {
10+
handler: WorkflowUpdateType;
11+
validator?: WorkflowUpdateValidatorType;
12+
description?: string;
13+
};
914
export type WorkflowSignalType = (...args: any[]) => Promise<void> | void;
15+
export type WorkflowSignalAnnotatedType = { handler: WorkflowSignalType; description?: string };
1016
export type WorkflowQueryType = (...args: any[]) => any;
1117

1218
/**

packages/workflow/src/interfaces.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,3 +464,18 @@ export type DefaultSignalHandler = (signalName: string, ...args: unknown[]) => v
464464
* A validation function capable of accepting the arguments for a given UpdateDefinition.
465465
*/
466466
export type UpdateValidator<Args extends any[]> = (...args: Args) => void;
467+
468+
/**
469+
* A description of a signal or query handler.
470+
*/
471+
export type SignalOrQueryHandlerOptions = { description?: string };
472+
473+
/**
474+
* A validator and description of an update handler.
475+
*/
476+
export type UpdateHandlerOptions<Args extends any[]> = { validator?: UpdateValidator<Args>; description?: string };
477+
478+
/**
479+
* Options for a generic handler.
480+
*/
481+
export type AnyHandlerOptions<Args extends any[]> = UpdateHandlerOptions<Args>;

packages/workflow/src/internals.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ import {
1111
Workflow,
1212
WorkflowExecutionAlreadyStartedError,
1313
WorkflowQueryType,
14-
WorkflowSignalType,
15-
WorkflowUpdateType,
14+
WorkflowSignalAnnotatedType,
15+
WorkflowUpdateAnnotatedType,
1616
ProtoFailure,
17-
WorkflowUpdateValidatorType,
1817
ApplicationFailure,
1918
} from '@temporalio/common';
2019
import { composeInterceptors } from '@temporalio/common/lib/interceptors';
@@ -125,15 +124,12 @@ export class Activator implements ActivationHandler {
125124
/**
126125
* Mapping of update name to handler and validator
127126
*/
128-
readonly updateHandlers = new Map<
129-
string,
130-
{ handler: WorkflowUpdateType; validator?: WorkflowUpdateValidatorType; description?: string }
131-
>();
127+
readonly updateHandlers = new Map<string, WorkflowUpdateAnnotatedType>();
132128

133129
/**
134130
* Mapping of signal name to handler
135131
*/
136-
readonly signalHandlers = new Map<string, { handler: WorkflowSignalType; description?: string }>();
132+
readonly signalHandlers = new Map<string, WorkflowSignalAnnotatedType>();
137133

138134
/**
139135
* A signal handler that catches calls for non-registered signal names.
@@ -205,7 +201,6 @@ export class Activator implements ActivationHandler {
205201
{
206202
handler: (): temporal.api.sdk.v1.IWorkflowMetadata => {
207203
const workflowType = this.info.workflowType;
208-
const description = this.info?.memo?.__temporal_workflow_description;
209204
const queryDefinitions = Array.from(this.queryHandlers.entries()).map(([name, value]) => ({
210205
name,
211206
description: value.description,
@@ -221,15 +216,14 @@ export class Activator implements ActivationHandler {
221216
return {
222217
definition: {
223218
type: workflowType,
224-
description: typeof description === 'string' ? description : null,
219+
description: null, // For now, do not set the workflow description in the TS SDK.
225220
queryDefinitions,
226221
signalDefinitions,
227222
updateDefinitions,
228223
},
229224
};
230225
},
231-
description:
232-
'Returns metadata associated with this workflow. Use `memo.__temporal_workflow_description` to add a workflow description.',
226+
description: 'Returns metadata associated with this workflow.',
233227
},
234228
],
235229
]);

packages/workflow/src/workflow.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
TimerInput,
3333
} from './interceptors';
3434
import {
35+
AnyHandlerOptions,
3536
ChildWorkflowCancellationType,
3637
ChildWorkflowOptions,
3738
ChildWorkflowOptionsWithDefaults,
@@ -40,7 +41,8 @@ import {
4041
DefaultSignalHandler,
4142
EnhancedStackTrace,
4243
Handler,
43-
UpdateValidator,
44+
SignalOrQueryHandlerOptions,
45+
UpdateHandlerOptions,
4446
WorkflowInfo,
4547
} from './interfaces';
4648
import { LocalActivityDoBackoff } from './errors';
@@ -1149,12 +1151,12 @@ export function defineQuery<Ret, Args extends any[] = [], Name extends string =
11491151
export function setHandler<Ret, Args extends any[], T extends SignalDefinition<Args> | QueryDefinition<Ret, Args>>(
11501152
def: T,
11511153
handler: Handler<Ret, Args, T> | undefined,
1152-
options?: { description?: string }
1154+
options?: SignalOrQueryHandlerOptions
11531155
): void;
11541156
export function setHandler<Ret, Args extends any[], T extends UpdateDefinition<Ret, Args>>(
11551157
def: T,
11561158
handler: Handler<Ret, Args, T> | undefined,
1157-
options?: { validator?: UpdateValidator<Args>; description?: string }
1159+
options?: UpdateHandlerOptions<Args>
11581160
): void;
11591161

11601162
// For Updates and Signals we want to make a public guarantee something like the
@@ -1243,11 +1245,7 @@ export function setHandler<
12431245
Ret,
12441246
Args extends any[],
12451247
T extends UpdateDefinition<Ret, Args> | SignalDefinition<Args> | QueryDefinition<Ret, Args>,
1246-
>(
1247-
def: T,
1248-
handler: Handler<Ret, Args, T> | undefined,
1249-
options?: { validator?: UpdateValidator<Args>; description?: string }
1250-
): void {
1248+
>(def: T, handler: Handler<Ret, Args, T> | undefined, options?: AnyHandlerOptions<Args>): void {
12511249
const activator = assertInWorkflowContext('Workflow.setHandler(...) may only be used from a Workflow Execution.');
12521250
const description = options?.description;
12531251
if (def.type === 'update') {

0 commit comments

Comments
 (0)