Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a60e864

Browse files
authored
feat!: Rename ExternalDependencies to Sinks (temporalio#370)
1 parent 96d99c4 commit a60e864

28 files changed

+188
-210
lines changed

packages/interceptors-opentelemetry/src/worker/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
ActivityInboundCallsInterceptor,
99
DataConverter,
1010
defaultDataConverter,
11-
InjectedDependency,
11+
InjectedSink,
1212
Next,
1313
} from '@temporalio/worker';
1414
import { OpenTelemetryWorkflowExporter, SerializableSpan, SpanName, SPAN_DELIMITER } from '../workflow';
@@ -42,12 +42,12 @@ export class OpenTelemetryActivityInboundInterceptor implements ActivityInboundC
4242
}
4343

4444
/**
45-
* Takes an opentelemetry SpanExporter and turns it into an injected Workflow span exporter dependency
45+
* Takes an opentelemetry SpanExporter and turns it into an injected Workflow span exporter sink
4646
*/
4747
export function makeWorkflowExporter(
4848
exporter: SpanExporter,
4949
resource: Resource
50-
): InjectedDependency<OpenTelemetryWorkflowExporter> {
50+
): InjectedSink<OpenTelemetryWorkflowExporter> {
5151
return {
5252
export: {
5353
fn: (info, spanData) => {

packages/interceptors-opentelemetry/src/workflow/definitions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as otel from '@opentelemetry/api';
22
import * as tracing from '@opentelemetry/sdk-trace-base';
33
import { InstrumentationLibrary } from '@opentelemetry/core';
4-
import { ExternalDependency, ExternalDependencies } from '@temporalio/workflow';
4+
import { Sink, Sinks } from '@temporalio/workflow';
55

66
/**
77
* Serializable version of the opentelemetry Span for cross isolate copying
@@ -23,14 +23,14 @@ export interface SerializableSpan {
2323
readonly instrumentationLibrary: InstrumentationLibrary;
2424
}
2525

26-
export interface OpenTelemetryWorkflowExporter extends ExternalDependency {
26+
export interface OpenTelemetryWorkflowExporter extends Sink {
2727
export(span: SerializableSpan[]): void;
2828
}
2929

3030
/**
3131
* Required external dependencies for Workflow interceptor to export spans
3232
*/
33-
export interface OpenTelemetryDependencies extends ExternalDependencies {
33+
export interface OpenTelemetrySinks extends Sinks {
3434
exporter: OpenTelemetryWorkflowExporter;
3535
}
3636

packages/interceptors-opentelemetry/src/workflow/span-exporter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as tracing from '@opentelemetry/sdk-trace-base';
22
import { ExportResult, ExportResultCode } from '@opentelemetry/core';
33
import * as wf from '@temporalio/workflow';
4-
import { OpenTelemetryDependencies, SerializableSpan } from './definitions';
4+
import { OpenTelemetrySinks, SerializableSpan } from './definitions';
55

6-
const { exporter } = wf.dependencies<OpenTelemetryDependencies>();
6+
const { exporter } = wf.proxySinks<OpenTelemetrySinks>();
77

88
export class SpanExporter implements tracing.SpanExporter {
99
public export(spans: tracing.ReadableSpan[], resultCallback: (result: ExportResult) => void): void {

packages/test/src/test-interceptors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ if (RUN_INTEGRATION_TESTS) {
222222
// Co-exists with the Workflow
223223
workflowModules: [require.resolve('./workflows/internals-interceptor-example')],
224224
},
225-
dependencies: {
225+
sinks: {
226226
logger: {
227227
log: {
228228
fn: (_: WorkflowInfo, event: string): void => {

packages/test/src/test-otel.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Manual tests to inspect tracing output
33
*/
44
import test from 'ava';
5-
import { Core, DefaultLogger, InjectedDependencies, Worker } from '@temporalio/worker';
5+
import { Core, DefaultLogger, InjectedSinks, Worker } from '@temporalio/worker';
66
import { ExportResultCode } from '@opentelemetry/core';
77
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector-grpc';
88

@@ -14,11 +14,7 @@ import {
1414
makeWorkflowExporter,
1515
OpenTelemetryActivityInboundInterceptor,
1616
} from '@temporalio/interceptors-opentelemetry/lib/worker';
17-
import {
18-
OpenTelemetryDependencies,
19-
SpanName,
20-
SPAN_DELIMITER,
21-
} from '@temporalio/interceptors-opentelemetry/lib/workflow';
17+
import { OpenTelemetrySinks, SpanName, SPAN_DELIMITER } from '@temporalio/interceptors-opentelemetry/lib/workflow';
2218

2319
import * as activities from './activities';
2420
import * as workflows from './workflows';
@@ -46,7 +42,7 @@ if (RUN_INTEGRATION_TESTS) {
4642
});
4743
await otel.start();
4844

49-
const dependencies: InjectedDependencies<OpenTelemetryDependencies> = {
45+
const sinks: InjectedSinks<OpenTelemetrySinks> = {
5046
exporter: makeWorkflowExporter(traceExporter, staticResource),
5147
};
5248
const worker = await Worker.create({
@@ -57,7 +53,7 @@ if (RUN_INTEGRATION_TESTS) {
5753
workflowModules: [require.resolve('./workflows/otel-interceptors')],
5854
activityInbound: [(ctx) => new OpenTelemetryActivityInboundInterceptor(ctx)],
5955
},
60-
dependencies,
56+
sinks,
6157
});
6258

6359
const client = new WorkflowClient(undefined, {
@@ -154,7 +150,7 @@ if (RUN_INTEGRATION_TESTS) {
154150
logForwardingLevel: 'INFO',
155151
},
156152
});
157-
const dependencies: InjectedDependencies<OpenTelemetryDependencies> = {
153+
const sinks: InjectedSinks<OpenTelemetrySinks> = {
158154
exporter: makeWorkflowExporter(exporter, staticResource),
159155
};
160156
const worker = await Worker.create({
@@ -166,7 +162,7 @@ if (RUN_INTEGRATION_TESTS) {
166162
workflowModules: [require.resolve('./workflows/otel-interceptors')],
167163
activityInbound: [(ctx) => new OpenTelemetryActivityInboundInterceptor(ctx)],
168164
},
169-
dependencies,
165+
sinks,
170166
});
171167

172168
const client = new WorkflowClient(undefined, {

packages/test/src/test-dependencies.ts renamed to packages/test/src/test-sinks.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import test from 'ava';
33
import { WorkflowInfo } from '@temporalio/workflow';
44
import { WorkflowClient } from '@temporalio/client';
5-
import { Worker, DefaultLogger, Core, InjectedDependencies } from '@temporalio/worker';
5+
import { Worker, DefaultLogger, Core, InjectedSinks } from '@temporalio/worker';
66
import { defaultOptions } from './mock-native-worker';
77
import { RUN_INTEGRATION_TESTS } from './helpers';
88
import * as workflows from './workflows';
@@ -24,16 +24,16 @@ if (RUN_INTEGRATION_TESTS) {
2424
test.before(async (_) => {
2525
await Core.install({
2626
logger: new DefaultLogger('DEBUG', ({ level, message, meta }) => {
27-
if (message === 'External dependency function threw an error') recordedLogs.push({ level, message, meta });
27+
if (message === 'External sink function threw an error') recordedLogs.push({ level, message, meta });
2828
}),
2929
});
3030
});
3131

32-
test('Worker injects external dependencies', async (t) => {
32+
test('Worker injects sinks', async (t) => {
3333
const recordedCalls: RecordedCall[] = [];
34-
const taskQueue = 'test-dependencies';
34+
const taskQueue = 'test-sinks';
3535
const thrownErrors = Array<DependencyError>();
36-
const dependencies: InjectedDependencies<workflows.TestDependencies> = {
36+
const sinks: InjectedSinks<workflows.TestSinks> = {
3737
success: {
3838
runAsync: {
3939
async fn(info, counter) {
@@ -69,11 +69,11 @@ if (RUN_INTEGRATION_TESTS) {
6969
const worker = await Worker.create({
7070
...defaultOptions,
7171
taskQueue,
72-
dependencies,
72+
sinks,
7373
});
7474
const p = worker.run();
7575
const conn = new WorkflowClient();
76-
const wf = await conn.start(workflows.dependenciesWorkflow, { taskQueue });
76+
const wf = await conn.start(workflows.sinksWorkflow, { taskQueue });
7777
await wf.result();
7878
worker.shutdown();
7979
await p;
@@ -82,7 +82,7 @@ if (RUN_INTEGRATION_TESTS) {
8282
taskQueue,
8383
workflowId: wf.workflowId,
8484
runId: wf.originalRunId,
85-
workflowType: 'dependenciesWorkflow',
85+
workflowType: 'sinksWorkflow',
8686
isReplaying: false,
8787
};
8888

@@ -97,7 +97,7 @@ if (RUN_INTEGRATION_TESTS) {
9797
recordedLogs,
9898
thrownErrors.map((error) => ({
9999
level: 'ERROR',
100-
message: 'External dependency function threw an error',
100+
message: 'External sink function threw an error',
101101
meta: {
102102
error,
103103
ifaceName: error.ifaceName,
@@ -108,5 +108,5 @@ if (RUN_INTEGRATION_TESTS) {
108108
);
109109
});
110110

111-
test.todo('Dependency functions are called during replay if callDuringReplay is set');
111+
test.todo('Sink functions are called during replay if callDuringReplay is set');
112112
}

packages/test/src/test-workflows.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,7 @@ test('logAndTimeout', async (t) => {
15031503
await t.throwsAsync(activate(t, makeStartWorkflow(workflowType)), {
15041504
message: 'Script execution timed out.',
15051505
});
1506-
const calls = await workflow.getAndResetExternalCalls();
1506+
const calls = await workflow.getAndResetSinkCalls();
15071507
t.deepEqual(calls, [{ ifaceName: 'logger', fnName: 'info', args: ['logging before getting stuck'] }]);
15081508
});
15091509

packages/test/src/worker/external-logger-example.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
// @@@SNIPSTART typescript-external-dependencies-logger-worker
2-
import { Worker, InjectedDependencies } from '@temporalio/worker';
3-
import { LoggerDependencies } from '../workflows';
1+
// @@@SNIPSTART typescript-logger-sink-worker
2+
import { Worker, InjectedSinks } from '@temporalio/worker';
3+
import { LoggerSinks } from '../workflows';
44

55
async function main() {
6-
const dependencies: InjectedDependencies<LoggerDependencies> = {
6+
const sinks: InjectedSinks<LoggerSinks> = {
77
logger: {
88
info: {
99
fn(workflowInfo, message) {
@@ -16,7 +16,7 @@ async function main() {
1616
const worker = await Worker.create({
1717
workflowsPath: require.resolve('../workflows'),
1818
taskQueue: 'sample',
19-
dependencies,
19+
sinks,
2020
});
2121
await worker.run();
2222
console.log('Worker gracefully shutdown');

packages/test/src/workflows/definitions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { defineSignal } from '@temporalio/workflow';
2-
// @@@SNIPSTART typescript-external-dependencies-logger-interface
3-
import { ExternalDependencies } from '@temporalio/workflow';
2+
// @@@SNIPSTART typescript-logger-sink-interface
3+
import { Sinks } from '@temporalio/workflow';
44

5-
export interface LoggerDependencies extends ExternalDependencies {
5+
export interface LoggerSinks extends Sinks {
66
logger: {
77
info(message: string): void;
88
};

packages/test/src/workflows/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export * from './activity-failure';
4444
export * from './activity-failures';
4545
export * from './sleep';
4646
export * from './http';
47-
export * from './dependencies';
47+
export * from './sinks';
4848
export * from './interrupt-signal';
4949
export * from './patched';
5050
export * from './patched-top-level';

packages/test/src/workflows/internals-interceptor-example.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { dependencies, WorkflowInterceptors, ExternalDependencies, sleep } from '@temporalio/workflow';
1+
import { proxySinks, WorkflowInterceptors, Sinks, sleep } from '@temporalio/workflow';
22

3-
export interface Dependencies extends ExternalDependencies {
3+
export interface LoggerSinks extends Sinks {
44
logger: {
55
log(event: string): void;
66
};
77
}
88

9-
const { logger } = dependencies<Dependencies>();
9+
const { logger } = proxySinks<LoggerSinks>();
1010

1111
export async function internalsInterceptorExample(): Promise<void> {
1212
await sleep(10);

packages/test/src/workflows/log-before-timing-out.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { dependencies } from '@temporalio/workflow';
2-
import { LoggerDependencies } from './definitions';
1+
import { proxySinks } from '@temporalio/workflow';
2+
import { LoggerSinks } from './definitions';
33

4-
const { logger } = dependencies<LoggerDependencies>();
4+
const { logger } = proxySinks<LoggerSinks>();
55

66
export async function logAndTimeout(): Promise<void> {
77
logger.info('logging before getting stuck');

packages/test/src/workflows/log-sample.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
// @@@SNIPSTART typescript-external-dependencies-logger-workflow
1+
// @@@SNIPSTART typescript-logger-sink-workflow
22
import * as wf from '@temporalio/workflow';
3-
import { LoggerDependencies } from './definitions';
3+
import { LoggerSinks } from './definitions';
44

5-
const { logger } = wf.dependencies<LoggerDependencies>();
6-
// logger cannot be used at the top level as exernal dependencies are not injected yet.
7-
// Wait for Workflow to start (execute called) before calling injected dependencies.
5+
const { logger } = wf.proxySinks<LoggerSinks>();
86

97
export async function logSampleWorkflow(): Promise<void> {
108
logger.info('Workflow execution started');

packages/test/src/workflows/dependencies.ts renamed to packages/test/src/workflows/sinks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { dependencies, ExternalDependencies } from '@temporalio/workflow';
1+
import { proxySinks, Sinks } from '@temporalio/workflow';
22

3-
export interface TestDependencies extends ExternalDependencies {
3+
export interface TestSinks extends Sinks {
44
success: {
55
runAsync(counter: number): void;
66
runSync(counter: number): void;
@@ -11,9 +11,9 @@ export interface TestDependencies extends ExternalDependencies {
1111
};
1212
}
1313

14-
const { success, error } = dependencies<TestDependencies>();
14+
const { success, error } = proxySinks<TestSinks>();
1515

16-
export async function dependenciesWorkflow(): Promise<void> {
16+
export async function sinksWorkflow(): Promise<void> {
1717
let i = 0;
1818
success.runSync(i++);
1919
success.runAsync(i++);

packages/worker/src/dependencies.ts

Lines changed: 0 additions & 48 deletions
This file was deleted.

packages/worker/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ export { WorkerOptions, CompiledWorkerOptions } from './worker-options';
1313
export { ServerOptions, TLSConfig } from './server-options';
1414
export { Core } from './core';
1515
export * from './logger';
16-
export * from './dependencies';
16+
export * from './sinks';
1717
export * from './interceptors';
1818
export { bundleWorkflowCode } from './workflow/bundler';

0 commit comments

Comments
 (0)