@temporalio/common 1.1.0 → 1.4.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/activity-options.d.ts +138 -0
- package/lib/activity-options.js +15 -0
- package/lib/activity-options.js.map +1 -0
- package/lib/converter/data-converter.d.ts +20 -1
- package/lib/converter/data-converter.js +14 -3
- package/lib/converter/data-converter.js.map +1 -1
- package/lib/converter/failure-converter.d.ts +75 -0
- package/lib/converter/failure-converter.js +239 -0
- package/lib/converter/failure-converter.js.map +1 -0
- package/lib/converter/payload-codec.d.ts +1 -1
- package/lib/converter/payload-converter.d.ts +85 -1
- package/lib/converter/payload-converter.js +210 -1
- package/lib/converter/payload-converter.js.map +1 -1
- package/lib/converter/protobuf-payload-converters.d.ts +3 -3
- package/lib/converter/protobuf-payload-converters.js +20 -19
- package/lib/converter/protobuf-payload-converters.js.map +1 -1
- package/lib/converter/types.d.ts +0 -6
- package/lib/converter/types.js +7 -18
- package/lib/converter/types.js.map +1 -1
- package/lib/deprecated-time.d.ts +52 -0
- package/lib/deprecated-time.js +106 -0
- package/lib/deprecated-time.js.map +1 -0
- package/lib/{converter/encoding.d.ts → encoding.d.ts} +8 -0
- package/lib/{converter/encoding.js → encoding.js} +15 -1
- package/lib/encoding.js.map +1 -0
- package/lib/errors.d.ts +47 -0
- package/lib/errors.js +68 -0
- package/lib/errors.js.map +1 -0
- package/lib/failure.d.ts +0 -27
- package/lib/failure.js +9 -203
- package/lib/failure.js.map +1 -1
- package/lib/index.d.ts +25 -8
- package/lib/index.js +43 -7
- package/lib/index.js.map +1 -1
- package/lib/interceptors.d.ts +18 -0
- package/lib/interceptors.js +24 -0
- package/lib/interceptors.js.map +1 -0
- package/lib/interfaces.d.ts +52 -0
- package/lib/interfaces.js +3 -0
- package/lib/interfaces.js.map +1 -0
- package/lib/internal-non-workflow/codec-helpers.d.ts +82 -0
- package/lib/internal-non-workflow/codec-helpers.js +295 -0
- package/lib/internal-non-workflow/codec-helpers.js.map +1 -0
- package/lib/internal-non-workflow/codec-types.d.ts +22 -0
- package/lib/internal-non-workflow/codec-types.js +3 -0
- package/lib/internal-non-workflow/codec-types.js.map +1 -0
- package/lib/internal-non-workflow/data-converter-helpers.d.ts +11 -0
- package/lib/internal-non-workflow/data-converter-helpers.js +66 -0
- package/lib/internal-non-workflow/data-converter-helpers.js.map +1 -0
- package/lib/internal-non-workflow/index.d.ts +10 -0
- package/lib/internal-non-workflow/index.js +27 -0
- package/lib/internal-non-workflow/index.js.map +1 -0
- package/lib/internal-non-workflow/tls-config.d.ts +32 -0
- package/lib/internal-non-workflow/tls-config.js +11 -0
- package/lib/internal-non-workflow/tls-config.js.map +1 -0
- package/lib/internal-non-workflow/utils.d.ts +4 -0
- package/lib/internal-non-workflow/utils.js +11 -0
- package/lib/internal-non-workflow/utils.js.map +1 -0
- package/lib/otel.d.ts +1 -1
- package/lib/otel.js +2 -2
- package/lib/otel.js.map +1 -1
- package/lib/retry-policy.d.ts +48 -0
- package/lib/retry-policy.js +62 -0
- package/lib/retry-policy.js.map +1 -0
- package/lib/time.d.ts +18 -0
- package/lib/time.js +79 -0
- package/lib/time.js.map +1 -0
- package/lib/type-helpers.d.ts +21 -0
- package/lib/type-helpers.js +46 -0
- package/lib/type-helpers.js.map +1 -0
- package/lib/workflow-handle.d.ts +27 -0
- package/lib/workflow-handle.js +3 -0
- package/lib/workflow-handle.js.map +1 -0
- package/lib/workflow-options.d.ts +118 -0
- package/lib/workflow-options.js +53 -0
- package/lib/workflow-options.js.map +1 -0
- package/package.json +5 -4
- package/src/activity-options.ts +159 -0
- package/src/converter/data-converter.ts +24 -3
- package/src/converter/failure-converter.ts +355 -0
- package/src/converter/payload-codec.ts +1 -1
- package/src/converter/payload-converter.ts +246 -1
- package/src/converter/protobuf-payload-converters.ts +14 -25
- package/src/converter/types.ts +6 -19
- package/src/deprecated-time.ts +80 -0
- package/src/{converter/encoding.ts → encoding.ts} +14 -0
- package/src/errors.ts +55 -0
- package/src/failure.ts +3 -251
- package/src/index.ts +34 -8
- package/src/interceptors.ts +32 -0
- package/src/interfaces.ts +64 -0
- package/src/internal-non-workflow/codec-helpers.ts +348 -0
- package/src/internal-non-workflow/codec-types.ts +34 -0
- package/src/internal-non-workflow/data-converter-helpers.ts +81 -0
- package/src/internal-non-workflow/index.ts +10 -0
- package/src/internal-non-workflow/tls-config.ts +35 -0
- package/src/internal-non-workflow/utils.ts +6 -0
- package/src/otel.ts +2 -2
- package/src/retry-policy.ts +101 -0
- package/src/time.ts +79 -0
- package/src/type-helpers.ts +64 -0
- package/src/workflow-handle.ts +30 -0
- package/src/workflow-options.ts +156 -0
- package/lib/converter/encoding.js.map +0 -1
- package/lib/converter/json-payload-converter.d.ts +0 -10
- package/lib/converter/json-payload-converter.js +0 -39
- package/lib/converter/json-payload-converter.js.map +0 -1
- package/lib/converter/payload-converters.d.ts +0 -67
- package/lib/converter/payload-converters.js +0 -124
- package/lib/converter/payload-converters.js.map +0 -1
- package/lib/converter/search-attribute-payload-converter.d.ts +0 -12
- package/lib/converter/search-attribute-payload-converter.js +0 -64
- package/lib/converter/search-attribute-payload-converter.js.map +0 -1
- package/src/converter/json-payload-converter.ts +0 -37
- package/src/converter/payload-converters.ts +0 -148
- package/src/converter/search-attribute-payload-converter.ts +0 -71
package/src/failure.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { checkExtends, hasOwnProperties, isRecord } from '@temporalio/internal-workflow-common';
|
|
2
1
|
import type { temporal } from '@temporalio/proto';
|
|
3
|
-
import {
|
|
2
|
+
import { checkExtends, isRecord } from './type-helpers';
|
|
4
3
|
|
|
5
4
|
export const FAILURE_SOURCE = 'TypeScriptSDK';
|
|
6
5
|
export type ProtoFailure = temporal.api.failure.v1.IFailure;
|
|
@@ -16,6 +15,7 @@ export enum TimeoutType {
|
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
checkExtends<temporal.api.enums.v1.TimeoutType, TimeoutType>();
|
|
18
|
+
checkExtends<TimeoutType, temporal.api.enums.v1.TimeoutType>();
|
|
19
19
|
|
|
20
20
|
// Avoid importing the proto implementation to reduce workflow bundle size
|
|
21
21
|
// Copied from temporal.api.enums.v1.RetryState
|
|
@@ -31,6 +31,7 @@ export enum RetryState {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
checkExtends<temporal.api.enums.v1.RetryState, RetryState>();
|
|
34
|
+
checkExtends<RetryState, temporal.api.enums.v1.RetryState>();
|
|
34
35
|
|
|
35
36
|
export type WorkflowExecution = temporal.api.common.v1.IWorkflowExecution;
|
|
36
37
|
|
|
@@ -261,153 +262,6 @@ export class ChildWorkflowFailure extends TemporalFailure {
|
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
/**
|
|
265
|
-
* Converts an error to a Failure proto message if defined or returns undefined
|
|
266
|
-
*/
|
|
267
|
-
export function optionalErrorToOptionalFailure(
|
|
268
|
-
err: unknown,
|
|
269
|
-
payloadConverter: PayloadConverter
|
|
270
|
-
): ProtoFailure | undefined {
|
|
271
|
-
return err ? errorToFailure(err, payloadConverter) : undefined;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Stack traces will be cutoff when on of these patterns is matched
|
|
276
|
-
*/
|
|
277
|
-
const CUTOFF_STACK_PATTERNS = [
|
|
278
|
-
/** Activity execution */
|
|
279
|
-
/\s+at Activity\.execute \(.*[\\/]worker[\\/](?:src|lib)[\\/]activity\.[jt]s:\d+:\d+\)/,
|
|
280
|
-
/** Workflow activation */
|
|
281
|
-
/\s+at Activator\.\S+NextHandler \(.*[\\/]workflow[\\/](?:src|lib)[\\/]internals\.[jt]s:\d+:\d+\)/,
|
|
282
|
-
/** Workflow run anything in context */
|
|
283
|
-
/\s+at Script\.runInContext \((?:node:vm|vm\.js):\d+:\d+\)/,
|
|
284
|
-
];
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Cuts out the framework part of a stack trace, leaving only user code entries
|
|
288
|
-
*/
|
|
289
|
-
export function cutoffStackTrace(stack?: string): string {
|
|
290
|
-
const lines = (stack ?? '').split(/\r?\n/);
|
|
291
|
-
const acc = Array<string>();
|
|
292
|
-
lineLoop: for (const line of lines) {
|
|
293
|
-
for (const pattern of CUTOFF_STACK_PATTERNS) {
|
|
294
|
-
if (pattern.test(line)) break lineLoop;
|
|
295
|
-
}
|
|
296
|
-
acc.push(line);
|
|
297
|
-
}
|
|
298
|
-
return acc.join('\n');
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Converts a caught error to a Failure proto message
|
|
303
|
-
*/
|
|
304
|
-
export function errorToFailure(err: unknown, payloadConverter: PayloadConverter): ProtoFailure {
|
|
305
|
-
if (err instanceof TemporalFailure) {
|
|
306
|
-
if (err.failure) return err.failure;
|
|
307
|
-
|
|
308
|
-
const base = {
|
|
309
|
-
message: err.message,
|
|
310
|
-
stackTrace: cutoffStackTrace(err.stack),
|
|
311
|
-
cause: optionalErrorToOptionalFailure(err.cause, payloadConverter),
|
|
312
|
-
source: FAILURE_SOURCE,
|
|
313
|
-
};
|
|
314
|
-
if (err instanceof ActivityFailure) {
|
|
315
|
-
return {
|
|
316
|
-
...base,
|
|
317
|
-
activityFailureInfo: {
|
|
318
|
-
...err,
|
|
319
|
-
activityType: { name: err.activityType },
|
|
320
|
-
},
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
if (err instanceof ChildWorkflowFailure) {
|
|
324
|
-
return {
|
|
325
|
-
...base,
|
|
326
|
-
childWorkflowExecutionFailureInfo: {
|
|
327
|
-
...err,
|
|
328
|
-
workflowExecution: err.execution,
|
|
329
|
-
workflowType: { name: err.workflowType },
|
|
330
|
-
},
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
if (err instanceof ApplicationFailure) {
|
|
334
|
-
return {
|
|
335
|
-
...base,
|
|
336
|
-
applicationFailureInfo: {
|
|
337
|
-
type: err.type,
|
|
338
|
-
nonRetryable: err.nonRetryable,
|
|
339
|
-
details:
|
|
340
|
-
err.details && err.details.length ? { payloads: toPayloads(payloadConverter, ...err.details) } : undefined,
|
|
341
|
-
},
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
if (err instanceof CancelledFailure) {
|
|
345
|
-
return {
|
|
346
|
-
...base,
|
|
347
|
-
canceledFailureInfo: {
|
|
348
|
-
details:
|
|
349
|
-
err.details && err.details.length ? { payloads: toPayloads(payloadConverter, ...err.details) } : undefined,
|
|
350
|
-
},
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
if (err instanceof TimeoutFailure) {
|
|
354
|
-
return {
|
|
355
|
-
...base,
|
|
356
|
-
timeoutFailureInfo: {
|
|
357
|
-
timeoutType: err.timeoutType,
|
|
358
|
-
lastHeartbeatDetails: err.lastHeartbeatDetails
|
|
359
|
-
? { payloads: toPayloads(payloadConverter, err.lastHeartbeatDetails) }
|
|
360
|
-
: undefined,
|
|
361
|
-
},
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
if (err instanceof TerminatedFailure) {
|
|
365
|
-
return {
|
|
366
|
-
...base,
|
|
367
|
-
terminatedFailureInfo: {},
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
if (err instanceof ServerFailure) {
|
|
371
|
-
return {
|
|
372
|
-
...base,
|
|
373
|
-
serverFailureInfo: { nonRetryable: err.nonRetryable },
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
|
-
// Just a TemporalFailure
|
|
377
|
-
return base;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
const base = {
|
|
381
|
-
source: FAILURE_SOURCE,
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
if (isRecord(err) && hasOwnProperties(err, ['message', 'stack'])) {
|
|
385
|
-
return {
|
|
386
|
-
...base,
|
|
387
|
-
message: String(err.message) ?? '',
|
|
388
|
-
stackTrace: cutoffStackTrace(String(err.stack)),
|
|
389
|
-
cause: optionalErrorToOptionalFailure(err.cause, payloadConverter),
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
const recommendation = ` [A non-Error value was thrown from your code. We recommend throwing Error objects so that we can provide a stack trace]`;
|
|
394
|
-
|
|
395
|
-
if (typeof err === 'string') {
|
|
396
|
-
return { ...base, message: err + recommendation };
|
|
397
|
-
}
|
|
398
|
-
if (typeof err === 'object') {
|
|
399
|
-
let message = '';
|
|
400
|
-
try {
|
|
401
|
-
message = JSON.stringify(err);
|
|
402
|
-
} catch (_err) {
|
|
403
|
-
message = String(err);
|
|
404
|
-
}
|
|
405
|
-
return { ...base, message: message + recommendation };
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
return { ...base, message: String(err) + recommendation };
|
|
409
|
-
}
|
|
410
|
-
|
|
411
265
|
/**
|
|
412
266
|
* If `error` is already an `ApplicationFailure`, returns `error`.
|
|
413
267
|
*
|
|
@@ -443,108 +297,6 @@ export function ensureTemporalFailure(err: unknown): TemporalFailure {
|
|
|
443
297
|
return ensureApplicationFailure(err);
|
|
444
298
|
}
|
|
445
299
|
|
|
446
|
-
/**
|
|
447
|
-
* Converts a Failure proto message to a JS Error object if defined or returns undefined.
|
|
448
|
-
*/
|
|
449
|
-
export function optionalFailureToOptionalError(
|
|
450
|
-
failure: ProtoFailure | undefined | null,
|
|
451
|
-
payloadConverter: PayloadConverter
|
|
452
|
-
): TemporalFailure | undefined {
|
|
453
|
-
return failure ? failureToError(failure, payloadConverter) : undefined;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Converts a Failure proto message to a JS Error object.
|
|
458
|
-
*
|
|
459
|
-
* Does not set common properties, that is done in {@link failureToError}.
|
|
460
|
-
*/
|
|
461
|
-
export function failureToErrorInner(failure: ProtoFailure, payloadConverter: PayloadConverter): TemporalFailure {
|
|
462
|
-
if (failure.applicationFailureInfo) {
|
|
463
|
-
return new ApplicationFailure(
|
|
464
|
-
failure.message ?? undefined,
|
|
465
|
-
failure.applicationFailureInfo.type,
|
|
466
|
-
Boolean(failure.applicationFailureInfo.nonRetryable),
|
|
467
|
-
arrayFromPayloads(payloadConverter, failure.applicationFailureInfo.details?.payloads),
|
|
468
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
469
|
-
);
|
|
470
|
-
}
|
|
471
|
-
if (failure.serverFailureInfo) {
|
|
472
|
-
return new ServerFailure(
|
|
473
|
-
failure.message ?? undefined,
|
|
474
|
-
Boolean(failure.serverFailureInfo.nonRetryable),
|
|
475
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
476
|
-
);
|
|
477
|
-
}
|
|
478
|
-
if (failure.timeoutFailureInfo) {
|
|
479
|
-
return new TimeoutFailure(
|
|
480
|
-
failure.message ?? undefined,
|
|
481
|
-
fromPayloadsAtIndex(payloadConverter, 0, failure.timeoutFailureInfo.lastHeartbeatDetails?.payloads),
|
|
482
|
-
failure.timeoutFailureInfo.timeoutType ?? TimeoutType.TIMEOUT_TYPE_UNSPECIFIED
|
|
483
|
-
);
|
|
484
|
-
}
|
|
485
|
-
if (failure.terminatedFailureInfo) {
|
|
486
|
-
return new TerminatedFailure(
|
|
487
|
-
failure.message ?? undefined,
|
|
488
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
489
|
-
);
|
|
490
|
-
}
|
|
491
|
-
if (failure.canceledFailureInfo) {
|
|
492
|
-
return new CancelledFailure(
|
|
493
|
-
failure.message ?? undefined,
|
|
494
|
-
arrayFromPayloads(payloadConverter, failure.canceledFailureInfo.details?.payloads),
|
|
495
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
496
|
-
);
|
|
497
|
-
}
|
|
498
|
-
if (failure.resetWorkflowFailureInfo) {
|
|
499
|
-
return new ApplicationFailure(
|
|
500
|
-
failure.message ?? undefined,
|
|
501
|
-
'ResetWorkflow',
|
|
502
|
-
false,
|
|
503
|
-
arrayFromPayloads(payloadConverter, failure.resetWorkflowFailureInfo.lastHeartbeatDetails?.payloads),
|
|
504
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
505
|
-
);
|
|
506
|
-
}
|
|
507
|
-
if (failure.childWorkflowExecutionFailureInfo) {
|
|
508
|
-
const { namespace, workflowType, workflowExecution, retryState } = failure.childWorkflowExecutionFailureInfo;
|
|
509
|
-
if (!(workflowType?.name && workflowExecution)) {
|
|
510
|
-
throw new TypeError('Missing attributes on childWorkflowExecutionFailureInfo');
|
|
511
|
-
}
|
|
512
|
-
return new ChildWorkflowFailure(
|
|
513
|
-
namespace ?? undefined,
|
|
514
|
-
workflowExecution,
|
|
515
|
-
workflowType.name,
|
|
516
|
-
retryState ?? RetryState.RETRY_STATE_UNSPECIFIED,
|
|
517
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
518
|
-
);
|
|
519
|
-
}
|
|
520
|
-
if (failure.activityFailureInfo) {
|
|
521
|
-
if (!failure.activityFailureInfo.activityType?.name) {
|
|
522
|
-
throw new TypeError('Missing activityType?.name on activityFailureInfo');
|
|
523
|
-
}
|
|
524
|
-
return new ActivityFailure(
|
|
525
|
-
failure.activityFailureInfo.activityType.name,
|
|
526
|
-
failure.activityFailureInfo.activityId ?? undefined,
|
|
527
|
-
failure.activityFailureInfo.retryState ?? RetryState.RETRY_STATE_UNSPECIFIED,
|
|
528
|
-
failure.activityFailureInfo.identity ?? undefined,
|
|
529
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
530
|
-
);
|
|
531
|
-
}
|
|
532
|
-
return new TemporalFailure(
|
|
533
|
-
failure.message ?? undefined,
|
|
534
|
-
optionalFailureToOptionalError(failure.cause, payloadConverter)
|
|
535
|
-
);
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
/**
|
|
539
|
-
* Converts a Failure proto message to a JS Error object.
|
|
540
|
-
*/
|
|
541
|
-
export function failureToError(failure: ProtoFailure, payloadConverter: PayloadConverter): TemporalFailure {
|
|
542
|
-
const err = failureToErrorInner(failure, payloadConverter);
|
|
543
|
-
err.stack = failure.stackTrace ?? '';
|
|
544
|
-
err.failure = failure;
|
|
545
|
-
return err;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
300
|
/**
|
|
549
301
|
* Get the root cause message of given `error`.
|
|
550
302
|
*
|
package/src/index.ts
CHANGED
|
@@ -3,16 +3,42 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
export { Headers, Next
|
|
7
|
-
|
|
8
|
-
export * from '
|
|
9
|
-
export * from '@temporalio/internal-workflow-common/lib/interfaces';
|
|
10
|
-
export * from '@temporalio/internal-workflow-common/lib/time';
|
|
11
|
-
export * from '@temporalio/internal-workflow-common/lib/workflow-options';
|
|
6
|
+
export { Headers, Next } from './interceptors';
|
|
7
|
+
|
|
8
|
+
export * from './activity-options';
|
|
12
9
|
export * from './converter/data-converter';
|
|
10
|
+
export * from './converter/failure-converter';
|
|
13
11
|
export * from './converter/payload-codec';
|
|
14
12
|
export * from './converter/payload-converter';
|
|
15
|
-
export * from './converter/payload-converters';
|
|
16
|
-
export * from './converter/json-payload-converter';
|
|
17
13
|
export * from './converter/types';
|
|
14
|
+
export * from './errors';
|
|
18
15
|
export * from './failure';
|
|
16
|
+
export * from './failure';
|
|
17
|
+
export * from './interfaces';
|
|
18
|
+
export * from './retry-policy';
|
|
19
|
+
export { Timestamp } from './time';
|
|
20
|
+
export * from './workflow-options';
|
|
21
|
+
export * from './workflow-handle';
|
|
22
|
+
export * from './deprecated-time';
|
|
23
|
+
|
|
24
|
+
import * as encoding from './encoding';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Encode a UTF-8 string into a Uint8Array
|
|
28
|
+
*
|
|
29
|
+
* @hidden
|
|
30
|
+
* @deprecated - meant for internal use only
|
|
31
|
+
*/
|
|
32
|
+
export function u8(s: string): Uint8Array {
|
|
33
|
+
return encoding.encode(s);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Decode a Uint8Array into a UTF-8 string
|
|
38
|
+
*
|
|
39
|
+
* @hidden
|
|
40
|
+
* @deprecated - meant for internal use only
|
|
41
|
+
*/
|
|
42
|
+
export function str(arr: Uint8Array): string {
|
|
43
|
+
return encoding.decode(arr);
|
|
44
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AnyFunc, OmitLastParam } from './type-helpers';
|
|
2
|
+
import { Payload } from './interfaces';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Type of the next function for a given interceptor function
|
|
6
|
+
*
|
|
7
|
+
* Called from an interceptor to continue the interception chain
|
|
8
|
+
*/
|
|
9
|
+
export type Next<IF, FN extends keyof IF> = Required<IF>[FN] extends AnyFunc ? OmitLastParam<Required<IF>[FN]> : never;
|
|
10
|
+
|
|
11
|
+
/** Headers are just a mapping of header name to Payload */
|
|
12
|
+
export type Headers = Record<string, Payload>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Composes all interceptor methods into a single function
|
|
16
|
+
*
|
|
17
|
+
* @param interceptors a list of interceptors
|
|
18
|
+
* @param method the name of the interceptor method to compose
|
|
19
|
+
* @param next the original function to be executed at the end of the interception chain
|
|
20
|
+
*/
|
|
21
|
+
export function composeInterceptors<I, M extends keyof I>(interceptors: I[], method: M, next: Next<I, M>): Next<I, M> {
|
|
22
|
+
for (let i = interceptors.length - 1; i >= 0; --i) {
|
|
23
|
+
const interceptor = interceptors[i];
|
|
24
|
+
if (interceptor[method] !== undefined) {
|
|
25
|
+
const prev = next;
|
|
26
|
+
// We loose type safety here because Typescript can't deduce that interceptor[method] is a function that returns
|
|
27
|
+
// the same type as Next<I, M>
|
|
28
|
+
next = ((input: any) => (interceptor[method] as any)(input, prev)) as any;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return next;
|
|
32
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { temporal } from '@temporalio/proto';
|
|
2
|
+
|
|
3
|
+
export type Payload = temporal.api.common.v1.IPayload;
|
|
4
|
+
|
|
5
|
+
/** Type that can be returned from a Workflow `execute` function */
|
|
6
|
+
export type WorkflowReturnType = Promise<any>;
|
|
7
|
+
export type WorkflowSignalType = (...args: any[]) => Promise<void> | void;
|
|
8
|
+
export type WorkflowQueryType = (...args: any[]) => any;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Broad Workflow function definition, specific Workflows will typically use a narrower type definition, e.g:
|
|
12
|
+
* ```ts
|
|
13
|
+
* export async function myWorkflow(arg1: number, arg2: string): Promise<string>;
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type Workflow = (...args: any[]) => WorkflowReturnType;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* An interface representing a Workflow signal definition, as returned from {@link defineSignal}
|
|
20
|
+
*
|
|
21
|
+
* @remarks `_Args` can be used for parameter type inference in handler functions and *WorkflowHandle methods.
|
|
22
|
+
*/
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
+
export interface SignalDefinition<_Args extends any[] = []> {
|
|
25
|
+
type: 'signal';
|
|
26
|
+
name: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* An interface representing a Workflow query definition as returned from {@link defineQuery}
|
|
31
|
+
*
|
|
32
|
+
* @remarks `_Args` and `_Ret` can be used for parameter type inference in handler functions and *WorkflowHandle methods.
|
|
33
|
+
*/
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
|
+
export interface QueryDefinition<_Ret, _Args extends any[] = []> {
|
|
36
|
+
type: 'query';
|
|
37
|
+
name: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Get the "unwrapped" return type (without Promise) of the execute handler from Workflow type `W` */
|
|
41
|
+
export type WorkflowResultType<W extends Workflow> = ReturnType<W> extends Promise<infer R> ? R : never;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* If another SDK creates a Search Attribute that's not an array, we wrap it in an array.
|
|
45
|
+
*
|
|
46
|
+
* Dates are serialized as ISO strings.
|
|
47
|
+
*/
|
|
48
|
+
export type SearchAttributes = Record<string, SearchAttributeValue | undefined>;
|
|
49
|
+
export type SearchAttributeValue = string[] | number[] | boolean[] | Date[];
|
|
50
|
+
|
|
51
|
+
export interface ActivityFunction<P extends any[] = any[], R = any> {
|
|
52
|
+
(...args: P): Promise<R>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Mapping of Activity name to function
|
|
57
|
+
* @deprecated not required anymore, for untyped activities use {@link UntypedActivities}
|
|
58
|
+
*/
|
|
59
|
+
export type ActivityInterface = Record<string, ActivityFunction>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Mapping of Activity name to function
|
|
63
|
+
*/
|
|
64
|
+
export type UntypedActivities = Record<string, ActivityFunction>;
|