@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.
Files changed (116) hide show
  1. package/lib/activity-options.d.ts +138 -0
  2. package/lib/activity-options.js +15 -0
  3. package/lib/activity-options.js.map +1 -0
  4. package/lib/converter/data-converter.d.ts +20 -1
  5. package/lib/converter/data-converter.js +14 -3
  6. package/lib/converter/data-converter.js.map +1 -1
  7. package/lib/converter/failure-converter.d.ts +75 -0
  8. package/lib/converter/failure-converter.js +239 -0
  9. package/lib/converter/failure-converter.js.map +1 -0
  10. package/lib/converter/payload-codec.d.ts +1 -1
  11. package/lib/converter/payload-converter.d.ts +85 -1
  12. package/lib/converter/payload-converter.js +210 -1
  13. package/lib/converter/payload-converter.js.map +1 -1
  14. package/lib/converter/protobuf-payload-converters.d.ts +3 -3
  15. package/lib/converter/protobuf-payload-converters.js +20 -19
  16. package/lib/converter/protobuf-payload-converters.js.map +1 -1
  17. package/lib/converter/types.d.ts +0 -6
  18. package/lib/converter/types.js +7 -18
  19. package/lib/converter/types.js.map +1 -1
  20. package/lib/deprecated-time.d.ts +52 -0
  21. package/lib/deprecated-time.js +106 -0
  22. package/lib/deprecated-time.js.map +1 -0
  23. package/lib/{converter/encoding.d.ts → encoding.d.ts} +8 -0
  24. package/lib/{converter/encoding.js → encoding.js} +15 -1
  25. package/lib/encoding.js.map +1 -0
  26. package/lib/errors.d.ts +47 -0
  27. package/lib/errors.js +68 -0
  28. package/lib/errors.js.map +1 -0
  29. package/lib/failure.d.ts +0 -27
  30. package/lib/failure.js +9 -203
  31. package/lib/failure.js.map +1 -1
  32. package/lib/index.d.ts +25 -8
  33. package/lib/index.js +43 -7
  34. package/lib/index.js.map +1 -1
  35. package/lib/interceptors.d.ts +18 -0
  36. package/lib/interceptors.js +24 -0
  37. package/lib/interceptors.js.map +1 -0
  38. package/lib/interfaces.d.ts +52 -0
  39. package/lib/interfaces.js +3 -0
  40. package/lib/interfaces.js.map +1 -0
  41. package/lib/internal-non-workflow/codec-helpers.d.ts +82 -0
  42. package/lib/internal-non-workflow/codec-helpers.js +295 -0
  43. package/lib/internal-non-workflow/codec-helpers.js.map +1 -0
  44. package/lib/internal-non-workflow/codec-types.d.ts +22 -0
  45. package/lib/internal-non-workflow/codec-types.js +3 -0
  46. package/lib/internal-non-workflow/codec-types.js.map +1 -0
  47. package/lib/internal-non-workflow/data-converter-helpers.d.ts +11 -0
  48. package/lib/internal-non-workflow/data-converter-helpers.js +66 -0
  49. package/lib/internal-non-workflow/data-converter-helpers.js.map +1 -0
  50. package/lib/internal-non-workflow/index.d.ts +10 -0
  51. package/lib/internal-non-workflow/index.js +27 -0
  52. package/lib/internal-non-workflow/index.js.map +1 -0
  53. package/lib/internal-non-workflow/tls-config.d.ts +32 -0
  54. package/lib/internal-non-workflow/tls-config.js +11 -0
  55. package/lib/internal-non-workflow/tls-config.js.map +1 -0
  56. package/lib/internal-non-workflow/utils.d.ts +4 -0
  57. package/lib/internal-non-workflow/utils.js +11 -0
  58. package/lib/internal-non-workflow/utils.js.map +1 -0
  59. package/lib/otel.d.ts +1 -1
  60. package/lib/otel.js +2 -2
  61. package/lib/otel.js.map +1 -1
  62. package/lib/retry-policy.d.ts +48 -0
  63. package/lib/retry-policy.js +62 -0
  64. package/lib/retry-policy.js.map +1 -0
  65. package/lib/time.d.ts +18 -0
  66. package/lib/time.js +79 -0
  67. package/lib/time.js.map +1 -0
  68. package/lib/type-helpers.d.ts +21 -0
  69. package/lib/type-helpers.js +46 -0
  70. package/lib/type-helpers.js.map +1 -0
  71. package/lib/workflow-handle.d.ts +27 -0
  72. package/lib/workflow-handle.js +3 -0
  73. package/lib/workflow-handle.js.map +1 -0
  74. package/lib/workflow-options.d.ts +118 -0
  75. package/lib/workflow-options.js +53 -0
  76. package/lib/workflow-options.js.map +1 -0
  77. package/package.json +5 -4
  78. package/src/activity-options.ts +159 -0
  79. package/src/converter/data-converter.ts +24 -3
  80. package/src/converter/failure-converter.ts +355 -0
  81. package/src/converter/payload-codec.ts +1 -1
  82. package/src/converter/payload-converter.ts +246 -1
  83. package/src/converter/protobuf-payload-converters.ts +14 -25
  84. package/src/converter/types.ts +6 -19
  85. package/src/deprecated-time.ts +80 -0
  86. package/src/{converter/encoding.ts → encoding.ts} +14 -0
  87. package/src/errors.ts +55 -0
  88. package/src/failure.ts +3 -251
  89. package/src/index.ts +34 -8
  90. package/src/interceptors.ts +32 -0
  91. package/src/interfaces.ts +64 -0
  92. package/src/internal-non-workflow/codec-helpers.ts +348 -0
  93. package/src/internal-non-workflow/codec-types.ts +34 -0
  94. package/src/internal-non-workflow/data-converter-helpers.ts +81 -0
  95. package/src/internal-non-workflow/index.ts +10 -0
  96. package/src/internal-non-workflow/tls-config.ts +35 -0
  97. package/src/internal-non-workflow/utils.ts +6 -0
  98. package/src/otel.ts +2 -2
  99. package/src/retry-policy.ts +101 -0
  100. package/src/time.ts +79 -0
  101. package/src/type-helpers.ts +64 -0
  102. package/src/workflow-handle.ts +30 -0
  103. package/src/workflow-options.ts +156 -0
  104. package/lib/converter/encoding.js.map +0 -1
  105. package/lib/converter/json-payload-converter.d.ts +0 -10
  106. package/lib/converter/json-payload-converter.js +0 -39
  107. package/lib/converter/json-payload-converter.js.map +0 -1
  108. package/lib/converter/payload-converters.d.ts +0 -67
  109. package/lib/converter/payload-converters.js +0 -124
  110. package/lib/converter/payload-converters.js.map +0 -1
  111. package/lib/converter/search-attribute-payload-converter.d.ts +0 -12
  112. package/lib/converter/search-attribute-payload-converter.js +0 -64
  113. package/lib/converter/search-attribute-payload-converter.js.map +0 -1
  114. package/src/converter/json-payload-converter.ts +0 -37
  115. package/src/converter/payload-converters.ts +0 -148
  116. package/src/converter/search-attribute-payload-converter.ts +0 -71
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeTlsConfig = void 0;
4
+ /**
5
+ * Normalize {@link TLSConfigOption} by turning false and null to undefined and true to and empty object
6
+ */
7
+ function normalizeTlsConfig(tls) {
8
+ return typeof tls === 'object' ? (tls === null ? undefined : tls) : tls ? {} : undefined;
9
+ }
10
+ exports.normalizeTlsConfig = normalizeTlsConfig;
11
+ //# sourceMappingURL=tls-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tls-config.js","sourceRoot":"","sources":["../../src/internal-non-workflow/tls-config.ts"],"names":[],"mappings":";;;AA6BA;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAqB;IACtD,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC;AAFD,gDAEC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Helper to prevent undefined and null values overriding defaults when merging maps
3
+ */
4
+ export declare function filterNullAndUndefined<T extends Record<string, any>>(obj: T): T;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterNullAndUndefined = void 0;
4
+ /**
5
+ * Helper to prevent undefined and null values overriding defaults when merging maps
6
+ */
7
+ function filterNullAndUndefined(obj) {
8
+ return Object.fromEntries(Object.entries(obj).filter(([_k, v]) => v != null));
9
+ }
10
+ exports.filterNullAndUndefined = filterNullAndUndefined;
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal-non-workflow/utils.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,sBAAsB,CAAgC,GAAM;IAC1E,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAQ,CAAC;AACvF,CAAC;AAFD,wDAEC"}
package/lib/otel.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as otel from '@opentelemetry/api';
2
- import { Headers } from '@temporalio/internal-workflow-common';
2
+ import { Headers } from './interceptors';
3
3
  /** Default trace header for opentelemetry interceptors */
4
4
  export declare const TRACE_HEADER = "_tracer-data";
5
5
  /** As in workflow run id */
package/lib/otel.js CHANGED
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.linkSpans = exports.headersWithContext = exports.extractSpanContextFromHeaders = exports.extractContextFromHeaders = exports.NUM_JOBS_ATTR_KEY = exports.TASK_TOKEN_ATTR_KEY = exports.RUN_ID_ATTR_KEY = exports.TRACE_HEADER = void 0;
27
27
  const otel = __importStar(require("@opentelemetry/api"));
28
- const payload_converters_1 = require("./converter/payload-converters");
28
+ const payload_converter_1 = require("./converter/payload-converter");
29
29
  /** Default trace header for opentelemetry interceptors */
30
30
  exports.TRACE_HEADER = '_tracer-data';
31
31
  /** As in workflow run id */
@@ -34,7 +34,7 @@ exports.RUN_ID_ATTR_KEY = 'run_id';
34
34
  exports.TASK_TOKEN_ATTR_KEY = 'task_token';
35
35
  /** Number of jobs in a workflow activation */
36
36
  exports.NUM_JOBS_ATTR_KEY = 'num_jobs';
37
- const payloadConverter = payload_converters_1.defaultPayloadConverter;
37
+ const payloadConverter = payload_converter_1.defaultPayloadConverter;
38
38
  /**
39
39
  * If found, return an otel Context deserialized from the provided headers
40
40
  */
package/lib/otel.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAE3C,uEAAyE;AAEzE,0DAA0D;AAC7C,QAAA,YAAY,GAAG,cAAc,CAAC;AAC3C,4BAA4B;AACf,QAAA,eAAe,GAAG,QAAQ,CAAC;AACxC,sCAAsC;AACzB,QAAA,mBAAmB,GAAG,YAAY,CAAC;AAChD,8CAA8C;AACjC,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAE5C,MAAM,gBAAgB,GAAG,4CAAuB,CAAC;AAEjD;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAAC,OAAgB;IAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAY,CAAC,CAAC;IACjD,IAAI,kBAAkB,KAAK,SAAS,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAA2B,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7F,CAAC;AAPD,8DAOC;AAED;;GAEG;AACI,KAAK,UAAU,6BAA6B,CAAC,OAAgB;IAClE,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAPD,sEAOC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAgB;IACvD,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnF,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,oBAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7E,CAAC;AAJD,gDAIC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAmB,EAAE,SAA4B;IACzE,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,2DAA2D;QAC3D,yEAAyE;QACzE,MAAM,KAAK,GAAI,QAAgB,CAAC,KAAK,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS,EAAE;YACtB,QAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACpD;aAAM;YACL,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACpC;KACF;AACH,CAAC;AAXD,8BAWC"}
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAE3C,qEAAwE;AAExE,0DAA0D;AAC7C,QAAA,YAAY,GAAG,cAAc,CAAC;AAC3C,4BAA4B;AACf,QAAA,eAAe,GAAG,QAAQ,CAAC;AACxC,sCAAsC;AACzB,QAAA,mBAAmB,GAAG,YAAY,CAAC;AAChD,8CAA8C;AACjC,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAE5C,MAAM,gBAAgB,GAAG,2CAAuB,CAAC;AAEjD;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAAC,OAAgB;IAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAY,CAAC,CAAC;IACjD,IAAI,kBAAkB,KAAK,SAAS,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAA2B,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7F,CAAC;AAPD,8DAOC;AAED;;GAEG;AACI,KAAK,UAAU,6BAA6B,CAAC,OAAgB;IAClE,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAPD,sEAOC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAgB;IACvD,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnF,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,oBAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7E,CAAC;AAJD,gDAIC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAmB,EAAE,SAA4B;IACzE,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,2DAA2D;QAC3D,yEAAyE;QACzE,MAAM,KAAK,GAAI,QAAgB,CAAC,KAAK,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS,EAAE;YACtB,QAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACpD;aAAM;YACL,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACpC;KACF;AACH,CAAC;AAXD,8BAWC"}
@@ -0,0 +1,48 @@
1
+ import type { temporal } from '@temporalio/proto';
2
+ /**
3
+ * Options for retrying Workflows and Activities
4
+ */
5
+ export interface RetryPolicy {
6
+ /**
7
+ * Coefficient used to calculate the next retry interval.
8
+ * The next retry interval is previous interval multiplied by this coefficient.
9
+ * @minimum 1
10
+ * @default 2
11
+ */
12
+ backoffCoefficient?: number;
13
+ /**
14
+ * Interval of the first retry.
15
+ * If coefficient is 1 then it is used for all retries
16
+ * @format number of milliseconds or {@link https://www.npmjs.com/package/ms | ms-formatted string}
17
+ * @default 1 second
18
+ */
19
+ initialInterval?: string | number;
20
+ /**
21
+ * Maximum number of attempts. When exceeded, retries stop (even if {@link ActivityOptions.scheduleToCloseTimeout}
22
+ * hasn't been reached).
23
+ *
24
+ * @default Infinity
25
+ */
26
+ maximumAttempts?: number;
27
+ /**
28
+ * Maximum interval between retries.
29
+ * Exponential backoff leads to interval increase.
30
+ * This value is the cap of the increase.
31
+ *
32
+ * @default 100x of {@link initialInterval}
33
+ * @format number of milliseconds or {@link https://www.npmjs.com/package/ms | ms-formatted string}
34
+ */
35
+ maximumInterval?: string | number;
36
+ /**
37
+ * List of application failures types to not retry.
38
+ */
39
+ nonRetryableErrorTypes?: string[];
40
+ }
41
+ /**
42
+ * Turn a TS RetryPolicy into a proto compatible RetryPolicy
43
+ */
44
+ export declare function compileRetryPolicy(retryPolicy: RetryPolicy): temporal.api.common.v1.IRetryPolicy;
45
+ /**
46
+ * Turn a proto compatible RetryPolicy into a TS RetryPolicy
47
+ */
48
+ export declare function decompileRetryPolicy(retryPolicy?: temporal.api.common.v1.IRetryPolicy | null): RetryPolicy | undefined;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decompileRetryPolicy = exports.compileRetryPolicy = void 0;
4
+ const errors_1 = require("./errors");
5
+ const time_1 = require("./time");
6
+ /**
7
+ * Turn a TS RetryPolicy into a proto compatible RetryPolicy
8
+ */
9
+ function compileRetryPolicy(retryPolicy) {
10
+ if (retryPolicy.backoffCoefficient != null && retryPolicy.backoffCoefficient <= 0) {
11
+ throw new errors_1.ValueError('RetryPolicy.backoffCoefficient must be greater than 0');
12
+ }
13
+ if (retryPolicy.maximumAttempts != null) {
14
+ if (retryPolicy.maximumAttempts === Number.POSITIVE_INFINITY) {
15
+ // drop field (Infinity is the default)
16
+ const { maximumAttempts: _, ...without } = retryPolicy;
17
+ retryPolicy = without;
18
+ }
19
+ else if (retryPolicy.maximumAttempts <= 0) {
20
+ throw new errors_1.ValueError('RetryPolicy.maximumAttempts must be a positive integer');
21
+ }
22
+ else if (!Number.isInteger(retryPolicy.maximumAttempts)) {
23
+ throw new errors_1.ValueError('RetryPolicy.maximumAttempts must be an integer');
24
+ }
25
+ }
26
+ const maximumInterval = (0, time_1.msOptionalToNumber)(retryPolicy.maximumInterval);
27
+ const initialInterval = (0, time_1.msToNumber)(retryPolicy.initialInterval ?? 1000);
28
+ if (maximumInterval === 0) {
29
+ throw new errors_1.ValueError('RetryPolicy.maximumInterval cannot be 0');
30
+ }
31
+ if (initialInterval === 0) {
32
+ throw new errors_1.ValueError('RetryPolicy.initialInterval cannot be 0');
33
+ }
34
+ if (maximumInterval != null && maximumInterval < initialInterval) {
35
+ throw new errors_1.ValueError('RetryPolicy.maximumInterval cannot be less than its initialInterval');
36
+ }
37
+ return {
38
+ maximumAttempts: retryPolicy.maximumAttempts,
39
+ initialInterval: (0, time_1.msToTs)(initialInterval),
40
+ maximumInterval: (0, time_1.msOptionalToTs)(maximumInterval),
41
+ backoffCoefficient: retryPolicy.backoffCoefficient,
42
+ nonRetryableErrorTypes: retryPolicy.nonRetryableErrorTypes,
43
+ };
44
+ }
45
+ exports.compileRetryPolicy = compileRetryPolicy;
46
+ /**
47
+ * Turn a proto compatible RetryPolicy into a TS RetryPolicy
48
+ */
49
+ function decompileRetryPolicy(retryPolicy) {
50
+ if (!retryPolicy) {
51
+ return undefined;
52
+ }
53
+ return {
54
+ backoffCoefficient: retryPolicy.backoffCoefficient ?? undefined,
55
+ maximumAttempts: retryPolicy.maximumAttempts ?? undefined,
56
+ maximumInterval: (0, time_1.optionalTsToMs)(retryPolicy.maximumInterval),
57
+ initialInterval: (0, time_1.optionalTsToMs)(retryPolicy.initialInterval),
58
+ nonRetryableErrorTypes: retryPolicy.nonRetryableErrorTypes ?? undefined,
59
+ };
60
+ }
61
+ exports.decompileRetryPolicy = decompileRetryPolicy;
62
+ //# sourceMappingURL=retry-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.js","sourceRoot":"","sources":["../src/retry-policy.ts"],"names":[],"mappings":";;;AACA,qCAAsC;AACtC,iCAAgG;AA2ChG;;GAEG;AACH,SAAgB,kBAAkB,CAAC,WAAwB;IACzD,IAAI,WAAW,CAAC,kBAAkB,IAAI,IAAI,IAAI,WAAW,CAAC,kBAAkB,IAAI,CAAC,EAAE;QACjF,MAAM,IAAI,mBAAU,CAAC,uDAAuD,CAAC,CAAC;KAC/E;IACD,IAAI,WAAW,CAAC,eAAe,IAAI,IAAI,EAAE;QACvC,IAAI,WAAW,CAAC,eAAe,KAAK,MAAM,CAAC,iBAAiB,EAAE;YAC5D,uCAAuC;YACvC,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,WAAW,CAAC;YACvD,WAAW,GAAG,OAAO,CAAC;SACvB;aAAM,IAAI,WAAW,CAAC,eAAe,IAAI,CAAC,EAAE;YAC3C,MAAM,IAAI,mBAAU,CAAC,wDAAwD,CAAC,CAAC;SAChF;aAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE;YACzD,MAAM,IAAI,mBAAU,CAAC,gDAAgD,CAAC,CAAC;SACxE;KACF;IACD,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAA,iBAAU,EAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;IACxE,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,mBAAU,CAAC,yCAAyC,CAAC,CAAC;KACjE;IACD,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,mBAAU,CAAC,yCAAyC,CAAC,CAAC;KACjE;IACD,IAAI,eAAe,IAAI,IAAI,IAAI,eAAe,GAAG,eAAe,EAAE;QAChE,MAAM,IAAI,mBAAU,CAAC,qEAAqE,CAAC,CAAC;KAC7F;IACD,OAAO;QACL,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,eAAe,EAAE,IAAA,aAAM,EAAC,eAAe,CAAC;QACxC,eAAe,EAAE,IAAA,qBAAc,EAAC,eAAe,CAAC;QAChD,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;QAClD,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;KAC3D,CAAC;AACJ,CAAC;AAjCD,gDAiCC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,WAAwD;IAExD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO;QACL,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,IAAI,SAAS;QAC/D,eAAe,EAAE,WAAW,CAAC,eAAe,IAAI,SAAS;QACzD,eAAe,EAAE,IAAA,qBAAc,EAAC,WAAW,CAAC,eAAe,CAAC;QAC5D,eAAe,EAAE,IAAA,qBAAc,EAAC,WAAW,CAAC,eAAe,CAAC;QAC5D,sBAAsB,EAAE,WAAW,CAAC,sBAAsB,IAAI,SAAS;KACxE,CAAC;AACJ,CAAC;AAdD,oDAcC"}
package/lib/time.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import type { google } from '@temporalio/proto';
2
+ export declare type Timestamp = google.protobuf.ITimestamp;
3
+ /**
4
+ * Lossy conversion function from Timestamp to number due to possible overflow.
5
+ * If ts is null or undefined returns undefined.
6
+ */
7
+ export declare function optionalTsToMs(ts: Timestamp | null | undefined): number | undefined;
8
+ /**
9
+ * Lossy conversion function from Timestamp to number due to possible overflow
10
+ */
11
+ export declare function tsToMs(ts: Timestamp | null | undefined): number;
12
+ export declare function msNumberToTs(millis: number): Timestamp;
13
+ export declare function msToTs(str: string | number): Timestamp;
14
+ export declare function msOptionalToTs(str: string | number | undefined): Timestamp | undefined;
15
+ export declare function msOptionalToNumber(val: string | number | undefined): number | undefined;
16
+ export declare function msToNumber(val: string | number): number;
17
+ export declare function tsToDate(ts: Timestamp): Date;
18
+ export declare function optionalTsToDate(ts: Timestamp | null | undefined): Date | undefined;
package/lib/time.js ADDED
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.optionalTsToDate = exports.tsToDate = exports.msToNumber = exports.msOptionalToNumber = exports.msOptionalToTs = exports.msToTs = exports.msNumberToTs = exports.tsToMs = exports.optionalTsToMs = void 0;
7
+ const long_1 = __importDefault(require("long"));
8
+ const ms_1 = __importDefault(require("ms"));
9
+ const errors_1 = require("./errors");
10
+ /**
11
+ * Lossy conversion function from Timestamp to number due to possible overflow.
12
+ * If ts is null or undefined returns undefined.
13
+ */
14
+ function optionalTsToMs(ts) {
15
+ if (ts === undefined || ts === null) {
16
+ return undefined;
17
+ }
18
+ return tsToMs(ts);
19
+ }
20
+ exports.optionalTsToMs = optionalTsToMs;
21
+ /**
22
+ * Lossy conversion function from Timestamp to number due to possible overflow
23
+ */
24
+ function tsToMs(ts) {
25
+ if (ts === undefined || ts === null) {
26
+ throw new Error(`Expected timestamp, got ${ts}`);
27
+ }
28
+ const { seconds, nanos } = ts;
29
+ return (seconds || long_1.default.UZERO)
30
+ .mul(1000)
31
+ .add(Math.floor((nanos || 0) / 1000000))
32
+ .toNumber();
33
+ }
34
+ exports.tsToMs = tsToMs;
35
+ function msNumberToTs(millis) {
36
+ const seconds = Math.floor(millis / 1000);
37
+ const nanos = (millis % 1000) * 1000000;
38
+ if (Number.isNaN(seconds) || Number.isNaN(nanos)) {
39
+ throw new errors_1.ValueError(`Invalid millis ${millis}`);
40
+ }
41
+ return { seconds: long_1.default.fromNumber(seconds), nanos };
42
+ }
43
+ exports.msNumberToTs = msNumberToTs;
44
+ function msToTs(str) {
45
+ if (typeof str === 'number') {
46
+ return msNumberToTs(str);
47
+ }
48
+ return msNumberToTs((0, ms_1.default)(str));
49
+ }
50
+ exports.msToTs = msToTs;
51
+ function msOptionalToTs(str) {
52
+ return str ? msToTs(str) : undefined;
53
+ }
54
+ exports.msOptionalToTs = msOptionalToTs;
55
+ function msOptionalToNumber(val) {
56
+ if (val === undefined)
57
+ return undefined;
58
+ return msToNumber(val);
59
+ }
60
+ exports.msOptionalToNumber = msOptionalToNumber;
61
+ function msToNumber(val) {
62
+ if (typeof val === 'number') {
63
+ return val;
64
+ }
65
+ return (0, ms_1.default)(val);
66
+ }
67
+ exports.msToNumber = msToNumber;
68
+ function tsToDate(ts) {
69
+ return new Date(tsToMs(ts));
70
+ }
71
+ exports.tsToDate = tsToDate;
72
+ function optionalTsToDate(ts) {
73
+ if (ts === undefined || ts === null) {
74
+ return undefined;
75
+ }
76
+ return new Date(tsToMs(ts));
77
+ }
78
+ exports.optionalTsToDate = optionalTsToDate;
79
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AACxB,4CAAoB;AACpB,qCAAsC;AAStC;;;GAGG;AACH,SAAgB,cAAc,CAAC,EAAgC;IAC7D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE;QACnC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AALD,wCAKC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,EAAgC;IACrD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;KAClD;IACD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,OAAO,IAAI,cAAI,CAAC,KAAK,CAAC;SAC3B,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;SACvC,QAAQ,EAAE,CAAC;AAChB,CAAC;AATD,wBASC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAChD,MAAM,IAAI,mBAAU,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;KAClD;IACD,OAAO,EAAE,OAAO,EAAE,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;AAPD,oCAOC;AAED,SAAgB,MAAM,CAAC,GAAoB;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,YAAY,CAAC,IAAA,YAAE,EAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AALD,wBAKC;AAED,SAAgB,cAAc,CAAC,GAAgC;IAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAFD,wCAEC;AAED,SAAgB,kBAAkB,CAAC,GAAgC;IACjE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAHD,gDAGC;AAED,SAAgB,UAAU,CAAC,GAAoB;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAA,YAAE,EAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AALD,gCAKC;AAED,SAAgB,QAAQ,CAAC,EAAa;IACpC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAFD,4BAEC;AAED,SAAgB,gBAAgB,CAAC,EAAgC;IAC/D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE;QACnC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AALD,4CAKC"}
@@ -0,0 +1,21 @@
1
+ /** Shorthand alias */
2
+ export declare type AnyFunc = (...args: any[]) => any;
3
+ /** A tuple without its last element */
4
+ export declare type OmitLast<T> = T extends [...infer REST, any] ? REST : never;
5
+ /** F with all arguments but the last */
6
+ export declare type OmitLastParam<F extends AnyFunc> = (...args: OmitLast<Parameters<F>>) => ReturnType<F>;
7
+ /** Verify that an type _Copy extends _Orig */
8
+ export declare function checkExtends<_Orig, _Copy extends _Orig>(): void;
9
+ export declare type Replace<Base, New> = Omit<Base, keyof New> & New;
10
+ export declare type MakeOptional<Base, Keys extends keyof Base> = Omit<Base, Keys> & Partial<Pick<Base, Keys>>;
11
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
12
+ export declare function hasOwnProperty<X extends Record<string, unknown>, Y extends PropertyKey>(record: X, prop: Y): record is X & Record<Y, unknown>;
13
+ export declare function hasOwnProperties<X extends Record<string, unknown>, Y extends PropertyKey>(record: X, props: Y[]): record is X & Record<Y, unknown>;
14
+ /**
15
+ * Get `error.message` (or `undefined` if not present)
16
+ */
17
+ export declare function errorMessage(error: unknown): string | undefined;
18
+ /**
19
+ * Get `error.code` (or `undefined` if not present)
20
+ */
21
+ export declare function errorCode(error: unknown): string | undefined;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorCode = exports.errorMessage = exports.hasOwnProperties = exports.hasOwnProperty = exports.isRecord = exports.checkExtends = void 0;
4
+ /** Verify that an type _Copy extends _Orig */
5
+ function checkExtends() {
6
+ // noop, just type check
7
+ }
8
+ exports.checkExtends = checkExtends;
9
+ function isRecord(value) {
10
+ return typeof value === 'object' && value !== null;
11
+ }
12
+ exports.isRecord = isRecord;
13
+ function hasOwnProperty(record, prop) {
14
+ return prop in record;
15
+ }
16
+ exports.hasOwnProperty = hasOwnProperty;
17
+ function hasOwnProperties(record, props) {
18
+ return props.every((prop) => prop in record);
19
+ }
20
+ exports.hasOwnProperties = hasOwnProperties;
21
+ /**
22
+ * Get `error.message` (or `undefined` if not present)
23
+ */
24
+ function errorMessage(error) {
25
+ if (typeof error === 'string') {
26
+ return error;
27
+ }
28
+ if (error instanceof Error) {
29
+ return error.message;
30
+ }
31
+ return undefined;
32
+ }
33
+ exports.errorMessage = errorMessage;
34
+ /**
35
+ * Get `error.code` (or `undefined` if not present)
36
+ */
37
+ function errorCode(error) {
38
+ if (typeof error === 'object' &&
39
+ error.code !== undefined &&
40
+ typeof error.code === 'string') {
41
+ return error.code;
42
+ }
43
+ return undefined;
44
+ }
45
+ exports.errorCode = errorCode;
46
+ //# sourceMappingURL=type-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-helpers.js","sourceRoot":"","sources":["../src/type-helpers.ts"],"names":[],"mappings":";;;AAOA,8CAA8C;AAC9C,SAAgB,YAAY;IAC1B,wBAAwB;AAC1B,CAAC;AAFD,oCAEC;AAMD,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAFD,4BAEC;AAED,SAAgB,cAAc,CAC5B,MAAS,EACT,IAAO;IAEP,OAAO,IAAI,IAAI,MAAM,CAAC;AACxB,CAAC;AALD,wCAKC;AAED,SAAgB,gBAAgB,CAC9B,MAAS,EACT,KAAU;IAEV,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;AAC/C,CAAC;AALD,4CAKC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC;KACtB;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AARD,oCAQC;AAKD;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,IACE,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAuB,CAAC,IAAI,KAAK,SAAS;QAC3C,OAAQ,KAAuB,CAAC,IAAI,KAAK,QAAQ,EACjD;QACA,OAAQ,KAAuB,CAAC,IAAI,CAAC;KACtC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAVD,8BAUC"}
@@ -0,0 +1,27 @@
1
+ import { Workflow, WorkflowResultType, SignalDefinition } from './interfaces';
2
+ /**
3
+ * Base WorkflowHandle interface, extended in workflow and client libs.
4
+ *
5
+ * Transforms a workflow interface `T` into a client interface.
6
+ */
7
+ export interface BaseWorkflowHandle<T extends Workflow> {
8
+ /**
9
+ * Promise that resolves when Workflow execution completes
10
+ */
11
+ result(): Promise<WorkflowResultType<T>>;
12
+ /**
13
+ * Signal a running Workflow.
14
+ *
15
+ * @param def a signal definition as returned from {@link defineSignal}
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * await handle.signal(incrementSignal, 3);
20
+ * ```
21
+ */
22
+ signal<Args extends any[] = []>(def: SignalDefinition<Args> | string, ...args: Args): Promise<void>;
23
+ /**
24
+ * The workflowId of the current Workflow
25
+ */
26
+ readonly workflowId: string;
27
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=workflow-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-handle.js","sourceRoot":"","sources":["../src/workflow-handle.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import type { google } from '@temporalio/proto';
2
+ import { SearchAttributes, Workflow } from './interfaces';
3
+ import { RetryPolicy } from './retry-policy';
4
+ import { Replace } from './type-helpers';
5
+ /**
6
+ * Concept: {@link https://docs.temporal.io/concepts/what-is-a-workflow-id-reuse-policy/ | Workflow Id Reuse Policy}
7
+ *
8
+ * Whether a Workflow can be started with a Workflow Id of a Closed Workflow.
9
+ *
10
+ * *Note: A Workflow can never be started with a Workflow Id of a Running Workflow.*
11
+ */
12
+ export declare enum WorkflowIdReusePolicy {
13
+ /**
14
+ * No need to use this.
15
+ *
16
+ * (If a `WorkflowIdReusePolicy` is set to this, or is not set at all, the default value will be used.)
17
+ */
18
+ WORKFLOW_ID_REUSE_POLICY_UNSPECIFIED = 0,
19
+ /**
20
+ * The Workflow can be started if the previous Workflow is in a Closed state.
21
+ * @default
22
+ */
23
+ WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE = 1,
24
+ /**
25
+ * The Workflow can be started if the previous Workflow is in a Closed state that is not Completed.
26
+ */
27
+ WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY = 2,
28
+ /**
29
+ * The Workflow cannot be started.
30
+ */
31
+ WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE = 3,
32
+ /**
33
+ * Terminate the current workflow if one is already running.
34
+ */
35
+ WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING = 4
36
+ }
37
+ export interface BaseWorkflowOptions {
38
+ /**
39
+ * Whether a Workflow can be started with a Workflow Id of a Closed Workflow.
40
+ *
41
+ * *Note: A Workflow can never be started with a Workflow Id of a Running Workflow.*
42
+ *
43
+ * @default {@link WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY}
44
+ */
45
+ workflowIdReusePolicy?: WorkflowIdReusePolicy;
46
+ /**
47
+ * Controls how a Workflow Execution is retried.
48
+ *
49
+ * By default, Workflow Executions are not retried. Do not override this behavior unless you know what you're doing.
50
+ * {@link https://docs.temporal.io/concepts/what-is-a-retry-policy/ | More information}.
51
+ */
52
+ retry?: RetryPolicy;
53
+ /**
54
+ * Optional cron schedule for Workflow. If a cron schedule is specified, the Workflow will run as a cron based on the
55
+ * schedule. The scheduling will be based on UTC time. The schedule for the next run only happens after the current
56
+ * run is completed/failed/timeout. If a RetryPolicy is also supplied, and the Workflow failed or timed out, the
57
+ * Workflow will be retried based on the retry policy. While the Workflow is retrying, it won't schedule its next run.
58
+ * If the next schedule is due while the Workflow is running (or retrying), then it will skip that schedule. Cron
59
+ * Workflow will not stop until it is terminated or cancelled (by returning temporal.CanceledError).
60
+ * https://crontab.guru/ is useful for testing your cron expressions.
61
+ */
62
+ cronSchedule?: string;
63
+ /**
64
+ * Specifies additional non-indexed information to attach to the Workflow Execution. The values can be anything that
65
+ * is serializable by {@link DataConverter}.
66
+ */
67
+ memo?: Record<string, any>;
68
+ /**
69
+ * Specifies additional indexed information to attach to the Workflow Execution. More info:
70
+ * https://docs.temporal.io/docs/typescript/search-attributes
71
+ *
72
+ * Values are always converted using {@link JsonPayloadConverter}, even when a custom data converter is provided.
73
+ */
74
+ searchAttributes?: SearchAttributes;
75
+ }
76
+ export declare type WithWorkflowArgs<W extends Workflow, T> = T & (Parameters<W> extends [any, ...any[]] ? {
77
+ /**
78
+ * Arguments to pass to the Workflow
79
+ */
80
+ args: Parameters<W>;
81
+ } : {
82
+ /**
83
+ * Arguments to pass to the Workflow
84
+ */
85
+ args?: Parameters<W>;
86
+ });
87
+ export interface WorkflowDurationOptions {
88
+ /**
89
+ * The time after which workflow run is automatically terminated by Temporal service. Do not
90
+ * rely on run timeout for business level timeouts. It is preferred to use in workflow timers
91
+ * for this purpose.
92
+ *
93
+ * @format number of milliseconds or {@link https://www.npmjs.com/package/ms | ms-formatted string}
94
+ */
95
+ workflowRunTimeout?: string | number;
96
+ /**
97
+ *
98
+ * The time after which workflow execution (which includes run retries and continue as new) is
99
+ * automatically terminated by Temporal service. Do not rely on execution timeout for business
100
+ * level timeouts. It is preferred to use in workflow timers for this purpose.
101
+ *
102
+ * @format number of milliseconds or {@link https://www.npmjs.com/package/ms | ms-formatted string}
103
+ */
104
+ workflowExecutionTimeout?: string | number;
105
+ /**
106
+ * Maximum execution time of a single workflow task. Default is 10 seconds.
107
+ *
108
+ * @format number of milliseconds or {@link https://www.npmjs.com/package/ms | ms-formatted string}
109
+ */
110
+ workflowTaskTimeout?: string | number;
111
+ }
112
+ export declare type CommonWorkflowOptions = BaseWorkflowOptions & WorkflowDurationOptions;
113
+ export declare type WithCompiledWorkflowOptions<T extends CommonWorkflowOptions> = Replace<T, {
114
+ workflowExecutionTimeout?: google.protobuf.IDuration;
115
+ workflowRunTimeout?: google.protobuf.IDuration;
116
+ workflowTaskTimeout?: google.protobuf.IDuration;
117
+ }>;
118
+ export declare function compileWorkflowOptions<T extends CommonWorkflowOptions>(options: T): WithCompiledWorkflowOptions<T>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileWorkflowOptions = exports.WorkflowIdReusePolicy = void 0;
4
+ const time_1 = require("./time");
5
+ const type_helpers_1 = require("./type-helpers");
6
+ // Avoid importing the proto implementation to reduce workflow bundle size
7
+ // Copied from temporal.api.enums.v1.WorkflowIdReusePolicy
8
+ /**
9
+ * Concept: {@link https://docs.temporal.io/concepts/what-is-a-workflow-id-reuse-policy/ | Workflow Id Reuse Policy}
10
+ *
11
+ * Whether a Workflow can be started with a Workflow Id of a Closed Workflow.
12
+ *
13
+ * *Note: A Workflow can never be started with a Workflow Id of a Running Workflow.*
14
+ */
15
+ var WorkflowIdReusePolicy;
16
+ (function (WorkflowIdReusePolicy) {
17
+ /**
18
+ * No need to use this.
19
+ *
20
+ * (If a `WorkflowIdReusePolicy` is set to this, or is not set at all, the default value will be used.)
21
+ */
22
+ WorkflowIdReusePolicy[WorkflowIdReusePolicy["WORKFLOW_ID_REUSE_POLICY_UNSPECIFIED"] = 0] = "WORKFLOW_ID_REUSE_POLICY_UNSPECIFIED";
23
+ /**
24
+ * The Workflow can be started if the previous Workflow is in a Closed state.
25
+ * @default
26
+ */
27
+ WorkflowIdReusePolicy[WorkflowIdReusePolicy["WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE"] = 1] = "WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE";
28
+ /**
29
+ * The Workflow can be started if the previous Workflow is in a Closed state that is not Completed.
30
+ */
31
+ WorkflowIdReusePolicy[WorkflowIdReusePolicy["WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY"] = 2] = "WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY";
32
+ /**
33
+ * The Workflow cannot be started.
34
+ */
35
+ WorkflowIdReusePolicy[WorkflowIdReusePolicy["WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE"] = 3] = "WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE";
36
+ /**
37
+ * Terminate the current workflow if one is already running.
38
+ */
39
+ WorkflowIdReusePolicy[WorkflowIdReusePolicy["WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING"] = 4] = "WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING";
40
+ })(WorkflowIdReusePolicy = exports.WorkflowIdReusePolicy || (exports.WorkflowIdReusePolicy = {}));
41
+ (0, type_helpers_1.checkExtends)();
42
+ (0, type_helpers_1.checkExtends)();
43
+ function compileWorkflowOptions(options) {
44
+ const { workflowExecutionTimeout, workflowRunTimeout, workflowTaskTimeout, ...rest } = options;
45
+ return {
46
+ ...rest,
47
+ workflowExecutionTimeout: (0, time_1.msOptionalToTs)(workflowExecutionTimeout),
48
+ workflowRunTimeout: (0, time_1.msOptionalToTs)(workflowRunTimeout),
49
+ workflowTaskTimeout: (0, time_1.msOptionalToTs)(workflowTaskTimeout),
50
+ };
51
+ }
52
+ exports.compileWorkflowOptions = compileWorkflowOptions;
53
+ //# sourceMappingURL=workflow-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-options.js","sourceRoot":"","sources":["../src/workflow-options.ts"],"names":[],"mappings":";;;AAGA,iCAAwC;AACxC,iDAAuD;AAEvD,0EAA0E;AAC1E,0DAA0D;AAC1D;;;;;;GAMG;AACH,IAAY,qBA4BX;AA5BD,WAAY,qBAAqB;IAC/B;;;;OAIG;IACH,iIAAwC,CAAA;IAExC;;;OAGG;IACH,yIAA4C,CAAA;IAE5C;;OAEG;IACH,iKAAwD,CAAA;IAExD;;OAEG;IACH,2IAA6C,CAAA;IAE7C;;OAEG;IACH,mJAAiD,CAAA;AACnD,CAAC,EA5BW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QA4BhC;AAED,IAAA,2BAAY,GAAsE,CAAC;AACnF,IAAA,2BAAY,GAAsE,CAAC;AAoGnF,SAAgB,sBAAsB,CAAkC,OAAU;IAChF,MAAM,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/F,OAAO;QACL,GAAG,IAAI;QACP,wBAAwB,EAAE,IAAA,qBAAc,EAAC,wBAAwB,CAAC;QAClE,kBAAkB,EAAE,IAAA,qBAAc,EAAC,kBAAkB,CAAC;QACtD,mBAAmB,EAAE,IAAA,qBAAc,EAAC,mBAAmB,CAAC;KACzD,CAAC;AACJ,CAAC;AATD,wDASC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporalio/common",
3
- "version": "1.1.0",
3
+ "version": "1.4.0",
4
4
  "description": "Common library for code that's used across the Client, Worker, and/or Workflow",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -13,8 +13,9 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "@opentelemetry/api": "^1.0.3",
16
- "@temporalio/internal-workflow-common": "^1.1.0",
17
- "@temporalio/proto": "^1.1.0",
16
+ "@temporalio/proto": "^1.4.0",
17
+ "long": "^5.2.0",
18
+ "ms": "^2.1.3",
18
19
  "proto3-json-serializer": "^1.0.3",
19
20
  "protobufjs": "^7.0.0"
20
21
  },
@@ -29,5 +30,5 @@
29
30
  "src",
30
31
  "lib"
31
32
  ],
32
- "gitHead": "132f23a47a93fecf3f39836b31f08ea837b30320"
33
+ "gitHead": "4b757ebbc052f327cc37e5693f46c8127c156b0c"
33
34
  }