Skip to content

Commit e7f4dd6

Browse files
committed
Review fixes
1 parent f18b1ca commit e7f4dd6

File tree

12 files changed

+47
-50
lines changed

12 files changed

+47
-50
lines changed

packages/common/src/worker-deployments.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { temporal } from '@temporalio/proto';
1+
import type { temporal } from '@temporalio/proto';
22
import { makeProtoEnumConverters } from './internal-workflow';
33

44
/**

packages/common/src/workflow-definition-options.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { VersioningBehavior } from './worker-deployments';
22

33
/**
4-
* Options that can be used when defining a workflow via {@link defineWorkflowWithOptions}.
4+
* Options that can be used when defining a workflow via {@link setWorkflowOptions}.
55
*/
66
export interface WorkflowDefinitionOptions {
77
versioningBehavior?: VersioningBehavior;
@@ -14,6 +14,5 @@ export type WorkflowDefinitionOptionsOrGetter = WorkflowDefinitionOptions | (()
1414
* A workflow function that has been defined with options from {@link WorkflowDefinitionOptions}.
1515
*/
1616
export interface WorkflowFunctionWithOptions<Args extends any[], ReturnType> extends AsyncFunction<Args, ReturnType> {
17-
__temporal_is_workflow_function_with_options: true;
18-
options: WorkflowDefinitionOptionsOrGetter;
17+
workflowDefinitionOptions: WorkflowDefinitionOptionsOrGetter;
1918
}

packages/common/src/workflow-options.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -260,5 +260,5 @@ export function extractWorkflowType<T extends Workflow>(
260260
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
261261
export function isWorkflowFunctionWithOptions(obj: any): obj is WorkflowFunctionWithOptions<any[], any> {
262262
if (obj == null) return false;
263-
return obj.__temporal_is_workflow_function_with_options === true;
263+
return Object.hasOwn(obj, 'workflowDefinitionOptions');
264264
}

packages/test/src/deployment-versioning-v1/index.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { setHandler, condition, defineWorkflowWithOptions, workflowInfo } from '@temporalio/workflow';
1+
import { setHandler, condition, setWorkflowOptions, workflowInfo } from '@temporalio/workflow';
22
import { unblockSignal, versionQuery } from '../workflows';
33

4-
defineWorkflowWithOptions({ versioningBehavior: 'AUTO_UPGRADE' }, deploymentVersioning);
4+
setWorkflowOptions({ versioningBehavior: 'AUTO_UPGRADE' }, deploymentVersioning);
55
export async function deploymentVersioning(): Promise<string> {
66
let doFinish = false;
77
setHandler(unblockSignal, () => void (doFinish = true));
@@ -11,12 +11,12 @@ export async function deploymentVersioning(): Promise<string> {
1111
}
1212

1313
// Dynamic/default workflow handler
14-
export default defineWorkflowWithOptions({ versioningBehavior: 'PINNED' }, _default);
15-
async function _default(): Promise<string> {
14+
setWorkflowOptions({ versioningBehavior: 'PINNED' }, module.exports.default);
15+
export default async function (): Promise<string> {
1616
return 'dynamic';
1717
}
1818

19-
defineWorkflowWithOptions(() => {
19+
setWorkflowOptions(() => {
2020
// Need to ensure accessing workflow context still works in here
2121
workflowInfo();
2222
return {

packages/test/src/deployment-versioning-v2/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { setHandler, condition, defineWorkflowWithOptions } from '@temporalio/workflow';
1+
import { setHandler, condition, setWorkflowOptions } from '@temporalio/workflow';
22
import { unblockSignal, versionQuery } from '../workflows';
33

4-
defineWorkflowWithOptions({ versioningBehavior: 'PINNED' }, deploymentVersioning);
4+
setWorkflowOptions({ versioningBehavior: 'PINNED' }, deploymentVersioning);
55
export async function deploymentVersioning(): Promise<string> {
66
let doFinish = false;
77
setHandler(unblockSignal, () => void (doFinish = true));

packages/test/src/deployment-versioning-v3/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { setHandler, condition, defineWorkflowWithOptions } from '@temporalio/workflow';
1+
import { setHandler, condition, setWorkflowOptions } from '@temporalio/workflow';
22
import { unblockSignal, versionQuery } from '../workflows';
33

4-
defineWorkflowWithOptions({ versioningBehavior: 'AUTO_UPGRADE' }, deploymentVersioning);
4+
setWorkflowOptions({ versioningBehavior: 'AUTO_UPGRADE' }, deploymentVersioning);
55
export async function deploymentVersioning(): Promise<string> {
66
let doFinish = false;
77
setHandler(unblockSignal, () => void (doFinish = true));

packages/test/src/helpers-integration.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export function makeTestFunction(opts: {
137137
createTestContext: async (_t: ExecutionContext): Promise<Context> => {
138138
let env: TestWorkflowEnvironment;
139139
if (process.env.TEMPORAL_SERVICE_ADDRESS) {
140-
env = await TestWorkflowEnvironment.createExistingServer({
140+
env = await TestWorkflowEnvironment.createFromExistingServer({
141141
address: process.env.TEMPORAL_SERVICE_ADDRESS,
142142
});
143143
} else {

packages/test/src/helpers.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ export class TestWorkflowEnvironment extends RealTestWorkflowEnvironment {
215215
});
216216
}
217217

218-
static async createExistingServer(
218+
static async createFromExistingServer(
219219
opts?: ExistingServerTestWorkflowEnvironmentOptions
220220
): Promise<TestWorkflowEnvironment> {
221-
return RealTestWorkflowEnvironment.createExistingServer(opts);
221+
return RealTestWorkflowEnvironment.createFromExistingServer(opts);
222222
}
223223
}
224224

packages/testing/src/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export type LocalTestWorkflowEnvironmentOptions = {
151151
};
152152

153153
/**
154-
* Options for {@link TestWorkflowEnvironment.createExistingServer}
154+
* Options for {@link TestWorkflowEnvironment.createFromExistingServer}
155155
*/
156156
export type ExistingServerTestWorkflowEnvironmentOptions = {
157157
/** If not set, defaults to localhost:7233 */
@@ -302,7 +302,7 @@ export class TestWorkflowEnvironment {
302302
});
303303
}
304304

305-
static async createExistingServer(
305+
static async createFromExistingServer(
306306
opts?: ExistingServerTestWorkflowEnvironmentOptions
307307
): Promise<TestWorkflowEnvironment> {
308308
return await this.create({

packages/worker/src/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ export function convertToParentWorkflowType(
3333
export function convertDeploymentVersion(
3434
v: coresdk.common.IWorkerDeploymentVersion | null | undefined
3535
): WorkerDeploymentVersion | undefined {
36-
if (v == null) {
36+
if (v == null || v.buildId == null) {
3737
return undefined;
3838
}
3939

4040
return {
41-
buildId: v.buildId ?? '',
41+
buildId: v.buildId,
4242
deploymentName: v.deploymentName ?? '',
4343
};
4444
}

packages/workflow/src/worker-interface.ts

+18-14
Original file line numberDiff line numberDiff line change
@@ -79,24 +79,28 @@ export function initRuntime(options: WorkflowCreateOptionsInternal): void {
7979
const workflowFn = mod[activator.info.workflowType];
8080
const defaultWorkflowFn = mod['default'];
8181

82-
if (isWorkflowFunctionWithOptions(workflowFn)) {
83-
activator.workflow = workflowFn;
84-
if (typeof workflowFn.options === 'object') {
85-
activator.versioningBehavior = workflowFn.options.versioningBehavior;
82+
if (typeof workflowFn === 'function') {
83+
if (isWorkflowFunctionWithOptions(workflowFn)) {
84+
activator.workflow = workflowFn;
85+
if (typeof workflowFn.workflowDefinitionOptions === 'object') {
86+
activator.versioningBehavior = workflowFn.workflowDefinitionOptions.versioningBehavior;
87+
} else {
88+
activator.workflowDefinitionOptionsGetter = workflowFn.workflowDefinitionOptions;
89+
}
8690
} else {
87-
activator.workflowDefinitionOptionsGetter = workflowFn.options;
91+
activator.workflow = workflowFn;
8892
}
89-
} else if (isWorkflowFunctionWithOptions(defaultWorkflowFn)) {
90-
activator.workflow = defaultWorkflowFn;
91-
if (typeof defaultWorkflowFn.options === 'object') {
92-
activator.versioningBehavior = defaultWorkflowFn.options.versioningBehavior;
93+
} else if (typeof defaultWorkflowFn === 'function') {
94+
if (isWorkflowFunctionWithOptions(defaultWorkflowFn)) {
95+
activator.workflow = defaultWorkflowFn;
96+
if (typeof defaultWorkflowFn.workflowDefinitionOptions === 'object') {
97+
activator.versioningBehavior = defaultWorkflowFn.workflowDefinitionOptions.versioningBehavior;
98+
} else {
99+
activator.workflowDefinitionOptionsGetter = defaultWorkflowFn.workflowDefinitionOptions;
100+
}
93101
} else {
94-
activator.workflowDefinitionOptionsGetter = defaultWorkflowFn.options;
102+
activator.workflow = defaultWorkflowFn;
95103
}
96-
} else if (typeof workflowFn === 'function') {
97-
activator.workflow = workflowFn;
98-
} else if (typeof defaultWorkflowFn === 'function') {
99-
activator.workflow = defaultWorkflowFn;
100104
} else {
101105
const details =
102106
workflowFn === undefined

packages/workflow/src/workflow.ts

+9-15
Original file line numberDiff line numberDiff line change
@@ -1593,14 +1593,12 @@ export function allHandlersFinished(): boolean {
15931593
}
15941594

15951595
/**
1596-
* Can be used to alter or define workflow functions with certain options specified at definition
1597-
* time. In order to ensure that workflows are loaded properly by their name, you typically will not
1598-
* need to use the return value of this function.
1596+
* Can be used to alter workflow functions with certain options specified at definition time.
15991597
*
16001598
* @example
16011599
* For example:
16021600
* ```ts
1603-
* defineWorkflowWithOptions({ versioningBehavior: 'pinned' }, myWorkflow);
1601+
* setWorkflowOptions({ versioningBehavior: 'PINNED' }, myWorkflow);
16041602
* export async function myWorkflow(): Promise<string> {
16051603
* // Workflow code here
16061604
* return "hi";
@@ -1610,29 +1608,25 @@ export function allHandlersFinished(): boolean {
16101608
* @example
16111609
* To annotate a default or dynamic workflow:
16121610
* ```ts
1613-
* export default defineWorkflowWithOptions({ versioningBehavior: 'pinned' }, myDefaultWorkflow);
1614-
* async function myDefaultWorkflow(): Promise<string> {
1611+
* export default async function (): Promise<string> {
16151612
* // Workflow code here
16161613
* return "hi";
16171614
* }
1615+
* setWorkflowOptions({ versioningBehavior: 'PINNED' }, module.exports.default);
16181616
* ```
16191617
*
16201618
* @param options Options for the workflow defintion, or a function that returns options. If a
16211619
* function is provided, it will be called once just before the workflow function is called for the
1622-
* first time.
1620+
* first time. It is safe to call {@link workflowInfo} inside such a function.
16231621
* @param fn The workflow function.
1624-
* @returns The same passed in workflow function, with the specified options applied. You can export
1625-
* this function to make it available as a workflow function.
16261622
*/
1627-
export function defineWorkflowWithOptions<A extends any[], RT>(
1623+
export function setWorkflowOptions<A extends any[], RT>(
16281624
options: WorkflowDefinitionOptionsOrGetter,
16291625
fn: (...args: A) => Promise<RT>
1630-
): WorkflowFunctionWithOptions<A, RT> {
1631-
const wrappedFn = Object.assign(fn, {
1632-
options,
1633-
__temporal_is_workflow_function_with_options: true as const,
1626+
) {
1627+
Object.assign(fn, {
1628+
workflowDefinitionOptions: options,
16341629
});
1635-
return wrappedFn;
16361630
}
16371631

16381632
export const stackTraceQuery = defineQuery<string>('__stack_trace');

0 commit comments

Comments
 (0)