@temporalio/testing 1.14.1 → 1.15.0

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/index.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module
9
9
  */
10
- export { TestWorkflowEnvironment, type LocalTestWorkflowEnvironmentOptions, type TimeSkippingTestWorkflowEnvironmentOptions, type ExistingServerTestWorkflowEnvironmentOptions, } from './testing-workflow-environment';
10
+ export { TestWorkflowEnvironment, type LocalTestWorkflowEnvironmentOptions, type TimeSkippingTestWorkflowEnvironmentOptions, type ExistingServerTestWorkflowEnvironmentOptions, type NexusEndpointIdentifier, } from './testing-workflow-environment';
11
11
  export { type DevServerConfig, type TimeSkippingServerConfig, type EphemeralServerExecutable, } from './ephemeral-server';
12
12
  export { type ClientOptionsForTestEnv, TimeSkippingWorkflowClient } from './client';
13
13
  export { type MockActivityEnvironmentOptions, MockActivityEnvironment, defaultActivityInfo, } from './mocking-activity-environment';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;AAEH,0DAA6B;AAE7B,+EAKwC;AAJtC,uIAAA,uBAAuB,OAAA;AAYzB,mCAAoF;AAA7C,oHAAA,0BAA0B,OAAA;AAEjE,+EAIwC;AAFtC,uIAAA,uBAAuB,OAAA;AACvB,mIAAA,mBAAmB,OAAA;AAGrB;;;;;GAKG;AACU,QAAA,0BAA0B,GAAG,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;AAEH,0DAA6B;AAE7B,+EAMwC;AALtC,uIAAA,uBAAuB,OAAA;AAazB,mCAAoF;AAA7C,oHAAA,0BAA0B,OAAA;AAEjE,+EAIwC;AAFtC,uIAAA,uBAAuB,OAAA;AACvB,mIAAA,mBAAmB,OAAA;AAGrB;;;;;GAKG;AACU,QAAA,0BAA0B,GAAG,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { AsyncCompletionClient, Client, ClientPlugin, Connection, ConnectionPlug
3
3
  import { Duration } from '@temporalio/common';
4
4
  import { NativeConnection, NativeConnectionPlugin, Runtime } from '@temporalio/worker';
5
5
  import { native } from '@temporalio/core-bridge';
6
+ import { temporal } from '@temporalio/proto';
6
7
  import { DevServerConfig, TimeSkippingServerConfig } from './ephemeral-server';
7
8
  import { ClientOptionsForTestEnv } from './client';
8
9
  /**
@@ -200,7 +201,45 @@ export declare class TestWorkflowEnvironment {
200
201
  * time has been skipped to.
201
202
  */
202
203
  currentTimeMs(): Promise<number>;
204
+ /**
205
+ * Create a Nexus endpoint targeting a worker task queue.
206
+ *
207
+ * This is a convenience method that wraps `connection.operatorService.createNexusEndpoint` for easier
208
+ * testing of Nexus services.
209
+ *
210
+ * @param name - The name of the Nexus endpoint
211
+ * @param taskQueue - The task queue that will handle Nexus operations
212
+ * @returns The created Nexus endpoint
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
217
+ * const endpointId = endpoint.id;
218
+ * ```
219
+ */
220
+ createNexusEndpoint(name: string, taskQueue: string): Promise<NexusEndpointIdentifier>;
221
+ /**
222
+ * Delete a Nexus endpoint.
223
+ *
224
+ * This is a convenience method that wraps `connection.operatorService.deleteNexusEndpoint` for easier
225
+ * testing of Nexus services.
226
+ *
227
+ * @param endpoint - The endpoint to delete (can pass the full endpoint object or just an object with id and version)
228
+ *
229
+ * @example
230
+ * ```ts
231
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
232
+ * // ... use the endpoint ...
233
+ * await testEnv.deleteNexusEndpoint(endpoint);
234
+ * ```
235
+ */
236
+ deleteNexusEndpoint(endpoint: Pick<NexusEndpointIdentifier, 'id' | 'version'>): Promise<void>;
203
237
  }
238
+ export type NexusEndpointIdentifier = {
239
+ id: NonNullable<temporal.api.nexus.v1.IEndpoint['id']>;
240
+ version: NonNullable<temporal.api.nexus.v1.IEndpoint['version']>;
241
+ raw: temporal.api.nexus.v1.IEndpoint;
242
+ };
204
243
  /**
205
244
  * Options for {@link TestWorkflowEnvironment.create}
206
245
  */
@@ -79,8 +79,8 @@ class TestWorkflowEnvironment {
79
79
  plugins: options.plugins,
80
80
  ...options.client,
81
81
  });
82
- this.asyncCompletionClient = this.client.activity; // eslint-disable-line deprecation/deprecation
83
- this.workflowClient = this.client.workflow; // eslint-disable-line deprecation/deprecation
82
+ this.asyncCompletionClient = this.client.activity; // eslint-disable-line @typescript-eslint/no-deprecated
83
+ this.workflowClient = this.client.workflow; // eslint-disable-line @typescript-eslint/no-deprecated
84
84
  }
85
85
  /**
86
86
  * Start a time skipping workflow environment.
@@ -289,6 +289,61 @@ class TestWorkflowEnvironment {
289
289
  return Date.now();
290
290
  }
291
291
  }
292
+ /**
293
+ * Create a Nexus endpoint targeting a worker task queue.
294
+ *
295
+ * This is a convenience method that wraps `connection.operatorService.createNexusEndpoint` for easier
296
+ * testing of Nexus services.
297
+ *
298
+ * @param name - The name of the Nexus endpoint
299
+ * @param taskQueue - The task queue that will handle Nexus operations
300
+ * @returns The created Nexus endpoint
301
+ *
302
+ * @example
303
+ * ```ts
304
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
305
+ * const endpointId = endpoint.id;
306
+ * ```
307
+ */
308
+ async createNexusEndpoint(name, taskQueue) {
309
+ const response = await this.connection.operatorService.createNexusEndpoint({
310
+ spec: {
311
+ name,
312
+ target: {
313
+ worker: {
314
+ namespace: this.namespace ?? 'default',
315
+ taskQueue,
316
+ },
317
+ },
318
+ },
319
+ });
320
+ if (!response.endpoint?.id || !response.endpoint?.version) {
321
+ throw new TypeError('Unexpected response from createNexusEndpoint');
322
+ }
323
+ return {
324
+ id: response.endpoint.id,
325
+ version: response.endpoint.version,
326
+ raw: response.endpoint,
327
+ };
328
+ }
329
+ /**
330
+ * Delete a Nexus endpoint.
331
+ *
332
+ * This is a convenience method that wraps `connection.operatorService.deleteNexusEndpoint` for easier
333
+ * testing of Nexus services.
334
+ *
335
+ * @param endpoint - The endpoint to delete (can pass the full endpoint object or just an object with id and version)
336
+ *
337
+ * @example
338
+ * ```ts
339
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
340
+ * // ... use the endpoint ...
341
+ * await testEnv.deleteNexusEndpoint(endpoint);
342
+ * ```
343
+ */
344
+ async deleteNexusEndpoint(endpoint) {
345
+ await this.connection.operatorService.deleteNexusEndpoint(endpoint);
346
+ }
292
347
  }
293
348
  exports.TestWorkflowEnvironment = TestWorkflowEnvironment;
294
349
  function addDefaults(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"testing-workflow-environment.js","sourceRoot":"","sources":["../src/testing-workflow-environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing-workflow-environment.js","sourceRoot":"","sources":["../src/testing-workflow-environment.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporalio/testing",
3
- "version": "1.14.1",
3
+ "version": "1.15.0",
4
4
  "description": "Temporal.io SDK Testing sub-package",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -12,14 +12,14 @@
12
12
  "author": "Temporal Technologies Inc. <sdk@temporal.io>",
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@temporalio/activity": "1.14.1",
16
- "@temporalio/client": "1.14.1",
17
- "@temporalio/common": "1.14.1",
18
- "@temporalio/core-bridge": "1.14.1",
19
- "@temporalio/proto": "1.14.1",
20
- "@temporalio/worker": "1.14.1",
21
- "@temporalio/workflow": "1.14.1",
22
- "abort-controller": "^3.0.0"
15
+ "abort-controller": "^3.0.0",
16
+ "@temporalio/activity": "1.15.0",
17
+ "@temporalio/client": "1.15.0",
18
+ "@temporalio/core-bridge": "1.15.0",
19
+ "@temporalio/proto": "1.15.0",
20
+ "@temporalio/common": "1.15.0",
21
+ "@temporalio/workflow": "1.15.0",
22
+ "@temporalio/worker": "1.15.0"
23
23
  },
24
24
  "bugs": {
25
25
  "url": "https://github.com/temporalio/sdk-typescript/issues"
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/temporalio/sdk-typescript/tree/main/packages/testing",
33
33
  "engines": {
34
- "node": ">= 18.0.0"
34
+ "node": ">= 20.0.0"
35
35
  },
36
36
  "files": [
37
37
  "lib",
@@ -39,6 +39,5 @@
39
39
  ],
40
40
  "publishConfig": {
41
41
  "access": "public"
42
- },
43
- "gitHead": "42bf6087946b7bbda61c7856bc0723c1616f9973"
44
- }
42
+ }
43
+ }
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ export {
15
15
  type LocalTestWorkflowEnvironmentOptions,
16
16
  type TimeSkippingTestWorkflowEnvironmentOptions,
17
17
  type ExistingServerTestWorkflowEnvironmentOptions,
18
+ type NexusEndpointIdentifier,
18
19
  } from './testing-workflow-environment';
19
20
 
20
21
  export {
@@ -16,6 +16,7 @@ import { Duration, TypedSearchAttributes } from '@temporalio/common';
16
16
  import { msToNumber, msToTs, tsToMs } from '@temporalio/common/lib/time';
17
17
  import { NativeConnection, NativeConnectionPlugin, NativeConnectionOptions, Runtime } from '@temporalio/worker';
18
18
  import { native } from '@temporalio/core-bridge';
19
+ import { temporal } from '@temporalio/proto';
19
20
  import { filterNullAndUndefined } from '@temporalio/common/lib/internal-workflow';
20
21
  import { toNativeEphemeralServerConfig, DevServerConfig, TimeSkippingServerConfig } from './ephemeral-server';
21
22
  import { ClientOptionsForTestEnv, TimeSkippingClient } from './client';
@@ -122,8 +123,8 @@ export class TestWorkflowEnvironment {
122
123
  plugins: options.plugins,
123
124
  ...options.client,
124
125
  });
125
- this.asyncCompletionClient = this.client.activity; // eslint-disable-line deprecation/deprecation
126
- this.workflowClient = this.client.workflow; // eslint-disable-line deprecation/deprecation
126
+ this.asyncCompletionClient = this.client.activity; // eslint-disable-line @typescript-eslint/no-deprecated
127
+ this.workflowClient = this.client.workflow; // eslint-disable-line @typescript-eslint/no-deprecated
127
128
  }
128
129
 
129
130
  /**
@@ -357,8 +358,71 @@ export class TestWorkflowEnvironment {
357
358
  return Date.now();
358
359
  }
359
360
  }
361
+
362
+ /**
363
+ * Create a Nexus endpoint targeting a worker task queue.
364
+ *
365
+ * This is a convenience method that wraps `connection.operatorService.createNexusEndpoint` for easier
366
+ * testing of Nexus services.
367
+ *
368
+ * @param name - The name of the Nexus endpoint
369
+ * @param taskQueue - The task queue that will handle Nexus operations
370
+ * @returns The created Nexus endpoint
371
+ *
372
+ * @example
373
+ * ```ts
374
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
375
+ * const endpointId = endpoint.id;
376
+ * ```
377
+ */
378
+ async createNexusEndpoint(name: string, taskQueue: string): Promise<NexusEndpointIdentifier> {
379
+ const response = await this.connection.operatorService.createNexusEndpoint({
380
+ spec: {
381
+ name,
382
+ target: {
383
+ worker: {
384
+ namespace: this.namespace ?? 'default',
385
+ taskQueue,
386
+ },
387
+ },
388
+ },
389
+ });
390
+ if (!response.endpoint?.id || !response.endpoint?.version) {
391
+ throw new TypeError('Unexpected response from createNexusEndpoint');
392
+ }
393
+ return {
394
+ id: response.endpoint.id,
395
+ version: response.endpoint.version,
396
+ raw: response.endpoint,
397
+ };
398
+ }
399
+
400
+ /**
401
+ * Delete a Nexus endpoint.
402
+ *
403
+ * This is a convenience method that wraps `connection.operatorService.deleteNexusEndpoint` for easier
404
+ * testing of Nexus services.
405
+ *
406
+ * @param endpoint - The endpoint to delete (can pass the full endpoint object or just an object with id and version)
407
+ *
408
+ * @example
409
+ * ```ts
410
+ * const endpoint = await testEnv.createNexusEndpoint('my-endpoint', 'my-task-queue');
411
+ * // ... use the endpoint ...
412
+ * await testEnv.deleteNexusEndpoint(endpoint);
413
+ * ```
414
+ */
415
+ async deleteNexusEndpoint(endpoint: Pick<NexusEndpointIdentifier, 'id' | 'version'>): Promise<void> {
416
+ await this.connection.operatorService.deleteNexusEndpoint(endpoint);
417
+ }
360
418
  }
361
419
 
420
+ export type NexusEndpointIdentifier = {
421
+ id: NonNullable<temporal.api.nexus.v1.IEndpoint['id']>;
422
+ version: NonNullable<temporal.api.nexus.v1.IEndpoint['version']>;
423
+ raw: temporal.api.nexus.v1.IEndpoint;
424
+ };
425
+
362
426
  /**
363
427
  * Options for {@link TestWorkflowEnvironment.create}
364
428
  */