@xemahq/temporal-runtime 0.6.0 → 0.8.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/README.md +203 -11
- package/dist/bin/controller-token-publisher.d.ts +3 -0
- package/dist/bin/controller-token-publisher.d.ts.map +1 -0
- package/dist/bin/controller-token-publisher.js +18 -0
- package/dist/bin/controller-token-publisher.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/access-token.d.ts +11 -0
- package/dist/lib/access-token.d.ts.map +1 -0
- package/dist/lib/access-token.js +30 -0
- package/dist/lib/access-token.js.map +1 -0
- package/dist/lib/base-temporal-client.service.d.ts +3 -2
- package/dist/lib/base-temporal-client.service.d.ts.map +1 -1
- package/dist/lib/base-temporal-client.service.js +5 -5
- package/dist/lib/base-temporal-client.service.js.map +1 -1
- package/dist/lib/biome-worker.d.ts +107 -0
- package/dist/lib/biome-worker.d.ts.map +1 -0
- package/dist/lib/biome-worker.js +348 -0
- package/dist/lib/biome-worker.js.map +1 -0
- package/dist/lib/bounded-retry.d.ts +22 -0
- package/dist/lib/bounded-retry.d.ts.map +1 -0
- package/dist/lib/bounded-retry.js +67 -0
- package/dist/lib/bounded-retry.js.map +1 -0
- package/dist/lib/client-credentials-token-source.d.ts +23 -0
- package/dist/lib/client-credentials-token-source.d.ts.map +1 -0
- package/dist/lib/client-credentials-token-source.js +108 -0
- package/dist/lib/client-credentials-token-source.js.map +1 -0
- package/dist/lib/connection.d.ts +48 -9
- package/dist/lib/connection.d.ts.map +1 -1
- package/dist/lib/connection.js +153 -41
- package/dist/lib/connection.js.map +1 -1
- package/dist/lib/controller-token-publisher.d.ts +51 -0
- package/dist/lib/controller-token-publisher.d.ts.map +1 -0
- package/dist/lib/controller-token-publisher.js +116 -0
- package/dist/lib/controller-token-publisher.js.map +1 -0
- package/dist/lib/fairness-constants.d.ts +4 -0
- package/dist/lib/fairness-constants.d.ts.map +1 -0
- package/dist/lib/fairness-constants.js +7 -0
- package/dist/lib/fairness-constants.js.map +1 -0
- package/dist/lib/fairness.d.ts +13 -0
- package/dist/lib/fairness.d.ts.map +1 -0
- package/dist/lib/fairness.js +56 -0
- package/dist/lib/fairness.js.map +1 -0
- package/dist/lib/nexus-constants.d.ts +8 -0
- package/dist/lib/nexus-constants.d.ts.map +1 -0
- package/dist/lib/nexus-constants.js +14 -0
- package/dist/lib/nexus-constants.js.map +1 -0
- package/dist/lib/nexus-contract.d.ts +43 -0
- package/dist/lib/nexus-contract.d.ts.map +1 -0
- package/dist/lib/nexus-contract.js +101 -0
- package/dist/lib/nexus-contract.js.map +1 -0
- package/dist/lib/nexus-handler.d.ts +32 -0
- package/dist/lib/nexus-handler.d.ts.map +1 -0
- package/dist/lib/nexus-handler.js +144 -0
- package/dist/lib/nexus-handler.js.map +1 -0
- package/dist/lib/nexus-workflow.d.ts +22 -0
- package/dist/lib/nexus-workflow.d.ts.map +1 -0
- package/dist/lib/nexus-workflow.js +74 -0
- package/dist/lib/nexus-workflow.js.map +1 -0
- package/dist/lib/org-erasure.d.ts +13 -0
- package/dist/lib/org-erasure.d.ts.map +1 -0
- package/dist/lib/org-erasure.js +68 -0
- package/dist/lib/org-erasure.js.map +1 -0
- package/dist/lib/proactive-token-refresher.d.ts +47 -0
- package/dist/lib/proactive-token-refresher.d.ts.map +1 -0
- package/dist/lib/proactive-token-refresher.js +147 -0
- package/dist/lib/proactive-token-refresher.js.map +1 -0
- package/dist/lib/search-attribute-constants.d.ts +3 -0
- package/dist/lib/search-attribute-constants.d.ts.map +1 -0
- package/dist/lib/search-attribute-constants.js +6 -0
- package/dist/lib/search-attribute-constants.js.map +1 -0
- package/dist/lib/search-attributes.d.ts +4 -18
- package/dist/lib/search-attributes.d.ts.map +1 -1
- package/dist/lib/search-attributes.js +33 -40
- package/dist/lib/search-attributes.js.map +1 -1
- package/dist/lib/standalone-activity.d.ts +23 -0
- package/dist/lib/standalone-activity.d.ts.map +1 -0
- package/dist/lib/standalone-activity.js +48 -0
- package/dist/lib/standalone-activity.js.map +1 -0
- package/dist/lib/versioned-worker.d.ts +26 -0
- package/dist/lib/versioned-worker.d.ts.map +1 -0
- package/dist/lib/versioned-worker.js +60 -0
- package/dist/lib/versioned-worker.js.map +1 -0
- package/dist/lib/worker-deployment-version.d.ts +8 -0
- package/dist/lib/worker-deployment-version.d.ts.map +1 -0
- package/dist/lib/worker-deployment-version.js +45 -0
- package/dist/lib/worker-deployment-version.js.map +1 -0
- package/dist/lib/worker.d.ts +8 -7
- package/dist/lib/worker.d.ts.map +1 -1
- package/dist/lib/worker.js +55 -37
- package/dist/lib/worker.js.map +1 -1
- package/dist/lib/workflow-interceptors/fairness-guard.d.ts +4 -0
- package/dist/lib/workflow-interceptors/fairness-guard.d.ts.map +1 -0
- package/dist/lib/workflow-interceptors/fairness-guard.js +79 -0
- package/dist/lib/workflow-interceptors/fairness-guard.js.map +1 -0
- package/dist/lib/workflow-interceptors/fairness-propagation.d.ts +3 -0
- package/dist/lib/workflow-interceptors/fairness-propagation.d.ts.map +1 -0
- package/dist/lib/workflow-interceptors/fairness-propagation.js +6 -0
- package/dist/lib/workflow-interceptors/fairness-propagation.js.map +1 -0
- package/dist/lib/workflow-interceptors/org-fairness-required.d.ts +3 -0
- package/dist/lib/workflow-interceptors/org-fairness-required.d.ts.map +1 -0
- package/dist/lib/workflow-interceptors/org-fairness-required.js +6 -0
- package/dist/lib/workflow-interceptors/org-fairness-required.js.map +1 -0
- package/dist/lib/workflow-interceptors/org-search-attribute.d.ts +3 -0
- package/dist/lib/workflow-interceptors/org-search-attribute.d.ts.map +1 -0
- package/dist/lib/workflow-interceptors/org-search-attribute.js +49 -0
- package/dist/lib/workflow-interceptors/org-search-attribute.js.map +1 -0
- package/dist/lib/workflow-purity.d.ts +27 -0
- package/dist/lib/workflow-purity.d.ts.map +1 -0
- package/dist/lib/workflow-purity.js +115 -0
- package/dist/lib/workflow-purity.js.map +1 -0
- package/package.json +33 -10
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProactiveTokenRefresher = exports.TokenRefreshFatalError = void 0;
|
|
4
|
+
const bounded_retry_1 = require("./bounded-retry");
|
|
5
|
+
const DEFAULT_REFRESH_AT_FRACTION = 0.75;
|
|
6
|
+
const DEFAULT_REFRESH_RETRY_INITIAL_MS = 1_000;
|
|
7
|
+
const DEFAULT_REFRESH_RETRY_MAX_MS = 30_000;
|
|
8
|
+
class TokenRefreshFatalError extends Error {
|
|
9
|
+
constructor(message, cause) {
|
|
10
|
+
super(message, cause === undefined ? undefined : { cause });
|
|
11
|
+
this.name = 'TokenRefreshFatalError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.TokenRefreshFatalError = TokenRefreshFatalError;
|
|
15
|
+
function throwUncaught(error) {
|
|
16
|
+
setImmediate(() => {
|
|
17
|
+
throw error;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
const SILENT_LOGGER = { log: () => { }, warn: () => { }, error: () => { } };
|
|
21
|
+
class ProactiveTokenRefresher {
|
|
22
|
+
options;
|
|
23
|
+
current;
|
|
24
|
+
obtainedAt;
|
|
25
|
+
timer = null;
|
|
26
|
+
stopped = false;
|
|
27
|
+
listeners = new Set();
|
|
28
|
+
clock;
|
|
29
|
+
logger;
|
|
30
|
+
fraction;
|
|
31
|
+
retryInitialMs;
|
|
32
|
+
retryMaxMs;
|
|
33
|
+
onFatal;
|
|
34
|
+
constructor(options, first) {
|
|
35
|
+
this.options = options;
|
|
36
|
+
this.clock = options.clock ?? bounded_retry_1.SYSTEM_CLOCK;
|
|
37
|
+
this.logger = options.logger ?? SILENT_LOGGER;
|
|
38
|
+
this.fraction = options.refreshAtFraction ?? DEFAULT_REFRESH_AT_FRACTION;
|
|
39
|
+
this.retryInitialMs = options.refreshRetryInitialDelayMs ?? DEFAULT_REFRESH_RETRY_INITIAL_MS;
|
|
40
|
+
this.retryMaxMs = options.refreshRetryMaxDelayMs ?? DEFAULT_REFRESH_RETRY_MAX_MS;
|
|
41
|
+
this.onFatal = options.onFatal ?? throwUncaught;
|
|
42
|
+
this.current = first;
|
|
43
|
+
this.obtainedAt = this.clock.now();
|
|
44
|
+
}
|
|
45
|
+
static async start(options) {
|
|
46
|
+
const fraction = options.refreshAtFraction ?? DEFAULT_REFRESH_AT_FRACTION;
|
|
47
|
+
if (!(fraction > 0 && fraction < 1)) {
|
|
48
|
+
throw new Error(`refreshAtFraction must be in (0, 1) (got ${fraction}).`);
|
|
49
|
+
}
|
|
50
|
+
const clock = options.clock ?? bounded_retry_1.SYSTEM_CLOCK;
|
|
51
|
+
const logger = options.logger ?? SILENT_LOGGER;
|
|
52
|
+
const first = await (0, bounded_retry_1.withBoundedRetry)(`Obtaining the Temporal access token for ${options.description}`, options.source, options.startupRetry ?? bounded_retry_1.DEFAULT_BOUNDED_RETRY_POLICY, clock, (attempt, error, delay) => logger.warn(`Temporal access token for ${options.description}: attempt ${attempt} failed ` +
|
|
53
|
+
`(${describe(error)}); retrying in ${delay}ms.`));
|
|
54
|
+
const refresher = new ProactiveTokenRefresher(options, first);
|
|
55
|
+
refresher.scheduleNext();
|
|
56
|
+
return refresher;
|
|
57
|
+
}
|
|
58
|
+
token() {
|
|
59
|
+
return this.currentToken().value;
|
|
60
|
+
}
|
|
61
|
+
currentToken() {
|
|
62
|
+
if (this.stopped) {
|
|
63
|
+
throw new TokenRefreshFatalError(`The Temporal access token refresher for ${this.options.description} is stopped.`);
|
|
64
|
+
}
|
|
65
|
+
return this.current;
|
|
66
|
+
}
|
|
67
|
+
async subscribe(listener) {
|
|
68
|
+
await listener(this.currentToken());
|
|
69
|
+
this.listeners.add(listener);
|
|
70
|
+
return () => {
|
|
71
|
+
this.listeners.delete(listener);
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
stop() {
|
|
75
|
+
this.stopped = true;
|
|
76
|
+
if (this.timer !== null) {
|
|
77
|
+
this.clock.clearTimeout(this.timer);
|
|
78
|
+
this.timer = null;
|
|
79
|
+
}
|
|
80
|
+
this.listeners.clear();
|
|
81
|
+
}
|
|
82
|
+
scheduleNext() {
|
|
83
|
+
const lifetime = this.current.expiresAt - this.obtainedAt;
|
|
84
|
+
const refreshAt = this.obtainedAt + Math.max(0, lifetime) * this.fraction;
|
|
85
|
+
this.arm(Math.max(0, refreshAt - this.clock.now()), 1);
|
|
86
|
+
}
|
|
87
|
+
arm(delayMs, attempt) {
|
|
88
|
+
if (this.stopped)
|
|
89
|
+
return;
|
|
90
|
+
this.timer = this.clock.setTimeout(() => {
|
|
91
|
+
this.timer = null;
|
|
92
|
+
void this.refresh(attempt);
|
|
93
|
+
}, delayMs);
|
|
94
|
+
}
|
|
95
|
+
async refresh(attempt) {
|
|
96
|
+
let next;
|
|
97
|
+
try {
|
|
98
|
+
next = await this.options.source();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (this.stopped)
|
|
102
|
+
return;
|
|
103
|
+
const now = this.clock.now();
|
|
104
|
+
const delay = Math.min(this.retryMaxMs, this.retryInitialMs * 2 ** (attempt - 1));
|
|
105
|
+
if (now + delay >= this.current.expiresAt) {
|
|
106
|
+
this.fail(new TokenRefreshFatalError(`The Temporal access token for ${this.options.description} expires before ` +
|
|
107
|
+
`another refresh attempt could complete (attempt ${attempt} failed: ` +
|
|
108
|
+
`${describe(error)}). Refusing to continue without a valid credential.`, error));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.logger.warn(`Temporal access token refresh for ${this.options.description}: attempt ${attempt} ` +
|
|
112
|
+
`failed (${describe(error)}); retrying in ${delay}ms ` +
|
|
113
|
+
`(${this.current.expiresAt - now}ms of validity left).`);
|
|
114
|
+
this.arm(delay, attempt + 1);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (this.stopped)
|
|
118
|
+
return;
|
|
119
|
+
this.current = next;
|
|
120
|
+
this.obtainedAt = this.clock.now();
|
|
121
|
+
for (const listener of [...this.listeners]) {
|
|
122
|
+
try {
|
|
123
|
+
await listener(next);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
this.fail(new TokenRefreshFatalError(`A holder of the Temporal access token for ${this.options.description} could ` +
|
|
127
|
+
`not apply the refreshed token: ${describe(error)}`, error));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (this.stopped)
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.scheduleNext();
|
|
134
|
+
}
|
|
135
|
+
fail(error) {
|
|
136
|
+
if (this.stopped)
|
|
137
|
+
return;
|
|
138
|
+
this.logger.error(error.message);
|
|
139
|
+
this.stop();
|
|
140
|
+
this.onFatal(error);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.ProactiveTokenRefresher = ProactiveTokenRefresher;
|
|
144
|
+
function describe(error) {
|
|
145
|
+
return error instanceof Error ? error.message : String(error);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=proactive-token-refresher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proactive-token-refresher.js","sourceRoot":"","sources":["../../src/lib/proactive-token-refresher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-attribute-constants.d.ts","sourceRoot":"","sources":["../../src/lib/search-attribute-constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAO1C,eAAO,MAAM,+BAA+B,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = exports.SEARCH_ATTR_ORG_ID = void 0;
|
|
4
|
+
exports.SEARCH_ATTR_ORG_ID = 'OrgId';
|
|
5
|
+
exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = 'ORG_SEARCH_ATTRIBUTE_OVERRIDDEN';
|
|
6
|
+
//# sourceMappingURL=search-attribute-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-attribute-constants.js","sourceRoot":"","sources":["../../src/lib/search-attribute-constants.ts"],"names":[],"mappings":";;;AAOa,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAO7B,QAAA,+BAA+B,GAAG,iCAAiC,CAAC"}
|
|
@@ -1,28 +1,14 @@
|
|
|
1
1
|
import { temporal } from '@temporalio/proto';
|
|
2
2
|
import type { Connection } from '@temporalio/client';
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export declare const SEARCH_ATTR_PROJECT_ID = "ProjectId";
|
|
6
|
-
export declare const SEARCH_ATTR_WORKFLOW_DOMAIN = "WorkflowDomain";
|
|
7
|
-
export declare const SEARCH_ATTR_SUBJECT_ID = "SubjectId";
|
|
8
|
-
export declare const SEARCH_ATTR_INTEGRATION_PROVIDER_ID = "IntegrationProviderId";
|
|
9
|
-
export declare const SEARCH_ATTR_REGISTRY_KIND = "RegistryKind";
|
|
10
|
-
export declare const SEARCH_ATTR_IMAGE_DIGEST = "ImageDigest";
|
|
11
|
-
interface PlatformSearchAttribute {
|
|
3
|
+
export { SEARCH_ATTR_ORG_ID, ORG_SEARCH_ATTRIBUTE_OVERRIDDEN, } from './search-attribute-constants';
|
|
4
|
+
export interface PlatformSearchAttribute {
|
|
12
5
|
readonly name: string;
|
|
13
6
|
readonly type: temporal.api.enums.v1.IndexedValueType;
|
|
14
7
|
}
|
|
15
8
|
export declare const PLATFORM_SEARCH_ATTRIBUTES: readonly PlatformSearchAttribute[];
|
|
16
9
|
export interface PlatformSearchAttributeInput {
|
|
17
|
-
readonly
|
|
18
|
-
readonly orgId?: string;
|
|
19
|
-
readonly projectId?: string;
|
|
20
|
-
readonly subjectId?: string;
|
|
10
|
+
readonly orgId: string | null;
|
|
21
11
|
}
|
|
22
12
|
export declare function buildPlatformSearchAttributes(input: PlatformSearchAttributeInput): Record<string, string[]>;
|
|
23
|
-
export
|
|
24
|
-
readonly registered: readonly string[];
|
|
25
|
-
}
|
|
26
|
-
export declare function registerPlatformSearchAttributes(connection: Connection, namespace: string): Promise<RegisterSearchAttributesResult>;
|
|
27
|
-
export {};
|
|
13
|
+
export declare function verifyPlatformSearchAttributes(connection: Pick<Connection, 'operatorService'>, namespace: string): Promise<void>;
|
|
28
14
|
//# sourceMappingURL=search-attributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-attributes.d.ts","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-attributes.d.ts","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAqBrD,OAAO,EACL,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC;CACvD;AAMD,eAAO,MAAM,0BAA0B,EAAE,SAAS,uBAAuB,EAExE,CAAC;AAGF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAOD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,4BAA4B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW1B;AAaD,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
|
@@ -1,58 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PLATFORM_SEARCH_ATTRIBUTES = exports.
|
|
3
|
+
exports.PLATFORM_SEARCH_ATTRIBUTES = exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = exports.SEARCH_ATTR_ORG_ID = void 0;
|
|
4
4
|
exports.buildPlatformSearchAttributes = buildPlatformSearchAttributes;
|
|
5
|
-
exports.
|
|
5
|
+
exports.verifyPlatformSearchAttributes = verifyPlatformSearchAttributes;
|
|
6
6
|
const proto_1 = require("@temporalio/proto");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.SEARCH_ATTR_INTEGRATION_PROVIDER_ID = 'IntegrationProviderId';
|
|
12
|
-
exports.SEARCH_ATTR_REGISTRY_KIND = 'RegistryKind';
|
|
13
|
-
exports.SEARCH_ATTR_IMAGE_DIGEST = 'ImageDigest';
|
|
7
|
+
const search_attribute_constants_1 = require("./search-attribute-constants");
|
|
8
|
+
var search_attribute_constants_2 = require("./search-attribute-constants");
|
|
9
|
+
Object.defineProperty(exports, "SEARCH_ATTR_ORG_ID", { enumerable: true, get: function () { return search_attribute_constants_2.SEARCH_ATTR_ORG_ID; } });
|
|
10
|
+
Object.defineProperty(exports, "ORG_SEARCH_ATTRIBUTE_OVERRIDDEN", { enumerable: true, get: function () { return search_attribute_constants_2.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN; } });
|
|
14
11
|
const KEYWORD = proto_1.temporal.api.enums.v1.IndexedValueType.INDEXED_VALUE_TYPE_KEYWORD;
|
|
15
12
|
exports.PLATFORM_SEARCH_ATTRIBUTES = [
|
|
16
|
-
{ name:
|
|
17
|
-
{ name: exports.SEARCH_ATTR_PROJECT_ID, type: KEYWORD },
|
|
18
|
-
{ name: exports.SEARCH_ATTR_WORKFLOW_DOMAIN, type: KEYWORD },
|
|
19
|
-
{ name: exports.SEARCH_ATTR_SUBJECT_ID, type: KEYWORD },
|
|
20
|
-
{ name: exports.SEARCH_ATTR_INTEGRATION_PROVIDER_ID, type: KEYWORD },
|
|
21
|
-
{ name: exports.SEARCH_ATTR_REGISTRY_KIND, type: KEYWORD },
|
|
22
|
-
{ name: exports.SEARCH_ATTR_IMAGE_DIGEST, type: KEYWORD },
|
|
13
|
+
{ name: search_attribute_constants_1.SEARCH_ATTR_ORG_ID, type: KEYWORD },
|
|
23
14
|
];
|
|
24
15
|
function buildPlatformSearchAttributes(input) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
if (input.orgId) {
|
|
29
|
-
attrs[exports.SEARCH_ATTR_ORG_ID] = [input.orgId];
|
|
16
|
+
if (input.orgId === null) {
|
|
17
|
+
return {};
|
|
30
18
|
}
|
|
31
|
-
if (input.
|
|
32
|
-
|
|
19
|
+
if (input.orgId.trim().length === 0 || input.orgId.trim() !== input.orgId) {
|
|
20
|
+
throw new Error(`buildPlatformSearchAttributes: orgId must be a non-empty string without ` +
|
|
21
|
+
`surrounding whitespace, or null for a cluster-wide run; got ${JSON.stringify(input.orgId)}.`);
|
|
33
22
|
}
|
|
34
|
-
|
|
35
|
-
attrs[exports.SEARCH_ATTR_SUBJECT_ID] = [input.subjectId];
|
|
36
|
-
}
|
|
37
|
-
return attrs;
|
|
23
|
+
return { [search_attribute_constants_1.SEARCH_ATTR_ORG_ID]: [input.orgId] };
|
|
38
24
|
}
|
|
39
|
-
async function
|
|
25
|
+
async function verifyPlatformSearchAttributes(connection, namespace) {
|
|
40
26
|
const listResponse = await connection.operatorService.listSearchAttributes({
|
|
41
27
|
namespace,
|
|
42
28
|
});
|
|
43
|
-
const existing =
|
|
44
|
-
const missing =
|
|
45
|
-
|
|
46
|
-
|
|
29
|
+
const existing = listResponse.customAttributes ?? {};
|
|
30
|
+
const missing = [];
|
|
31
|
+
const mistyped = [];
|
|
32
|
+
for (const attr of exports.PLATFORM_SEARCH_ATTRIBUTES) {
|
|
33
|
+
const declared = existing[attr.name];
|
|
34
|
+
if (declared === undefined || declared === null) {
|
|
35
|
+
missing.push(attr.name);
|
|
36
|
+
}
|
|
37
|
+
else if (declared !== attr.type) {
|
|
38
|
+
mistyped.push(`${attr.name} (declared ${proto_1.temporal.api.enums.v1.IndexedValueType[declared]}, ` +
|
|
39
|
+
`required ${proto_1.temporal.api.enums.v1.IndexedValueType[attr.type]})`);
|
|
40
|
+
}
|
|
47
41
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
if (missing.length > 0 || mistyped.length > 0) {
|
|
43
|
+
throw new Error(`Temporal namespace '${namespace}' does not declare the platform search ` +
|
|
44
|
+
`attributes: ${[
|
|
45
|
+
...(missing.length > 0 ? [`missing ${missing.join(', ')}`] : []),
|
|
46
|
+
...(mistyped.length > 0 ? [`mistyped ${mistyped.join(', ')}`] : []),
|
|
47
|
+
].join('; ')}. The shared-infra provisioning Job owns them; a workload ` +
|
|
48
|
+
'cannot register search attributes.');
|
|
51
49
|
}
|
|
52
|
-
await connection.operatorService.addSearchAttributes({
|
|
53
|
-
namespace,
|
|
54
|
-
searchAttributes,
|
|
55
|
-
});
|
|
56
|
-
return { registered: missing.map((attr) => attr.name) };
|
|
57
50
|
}
|
|
58
51
|
//# sourceMappingURL=search-attributes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-attributes.js","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"search-attributes.js","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":";;;AAqDA,sEAaC;AAaD,wEA+BC;AA9GD,6CAA6C;AAE7C,6EAAkE;AAuBlE,2EAGsC;AAFpC,gIAAA,kBAAkB,OAAA;AAClB,6IAAA,+BAA+B,OAAA;AAQjC,MAAM,OAAO,GACX,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;AAGvD,QAAA,0BAA0B,GAAuC;IAC5E,EAAE,IAAI,EAAE,+CAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5C,CAAC;AAYF,SAAgB,6BAA6B,CAC3C,KAAmC;IAEnC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,+DAA+D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,+CAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACjD,CAAC;AAaM,KAAK,UAAU,8BAA8B,CAClD,UAA+C,EAC/C,SAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC;QACzE,SAAS;KACV,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,kCAA0B,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,cAAc,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI;gBAC5E,YAAY,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,yCAAyC;YACvE,eAAe;gBACb,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D;YACxE,oCAAoC,CACvC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ActivityHandle, Client } from '@temporalio/client';
|
|
2
|
+
import type { Duration, RetryPolicy } from '@temporalio/common';
|
|
3
|
+
export declare enum StandaloneActivityIdConflict {
|
|
4
|
+
UseExisting = "use-existing",
|
|
5
|
+
Fail = "fail"
|
|
6
|
+
}
|
|
7
|
+
export interface StartStandaloneActivityOptions {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly type: string;
|
|
10
|
+
readonly taskQueue: string;
|
|
11
|
+
readonly orgId: string | null;
|
|
12
|
+
readonly idConflict: StandaloneActivityIdConflict;
|
|
13
|
+
readonly args?: readonly unknown[];
|
|
14
|
+
readonly startToCloseTimeout?: Duration;
|
|
15
|
+
readonly scheduleToCloseTimeout?: Duration;
|
|
16
|
+
readonly scheduleToStartTimeout?: Duration;
|
|
17
|
+
readonly heartbeatTimeout?: Duration;
|
|
18
|
+
readonly retry?: RetryPolicy;
|
|
19
|
+
readonly startDelay?: Duration;
|
|
20
|
+
readonly summary?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function startStandaloneActivity<R = unknown>(client: Pick<Client, 'activity'>, options: StartStandaloneActivityOptions): Promise<ActivityHandle<R>>;
|
|
23
|
+
//# sourceMappingURL=standalone-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-activity.d.ts","sourceRoot":"","sources":["../../src/lib/standalone-activity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,MAAM,EACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOhE,oBAAY,4BAA4B;IAEtC,WAAW,iBAAiB;IAE5B,IAAI,SAAS;CACd;AAYD,MAAM,WAAW,8BAA8B;IAE7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAO3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAEnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AASD,wBAAsB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACvD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAoC5B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandaloneActivityIdConflict = void 0;
|
|
4
|
+
exports.startStandaloneActivity = startStandaloneActivity;
|
|
5
|
+
const fairness_1 = require("./fairness");
|
|
6
|
+
var StandaloneActivityIdConflict;
|
|
7
|
+
(function (StandaloneActivityIdConflict) {
|
|
8
|
+
StandaloneActivityIdConflict["UseExisting"] = "use-existing";
|
|
9
|
+
StandaloneActivityIdConflict["Fail"] = "fail";
|
|
10
|
+
})(StandaloneActivityIdConflict || (exports.StandaloneActivityIdConflict = StandaloneActivityIdConflict = {}));
|
|
11
|
+
const ID_CONFLICT_POLICY = {
|
|
12
|
+
[StandaloneActivityIdConflict.UseExisting]: 'USE_EXISTING',
|
|
13
|
+
[StandaloneActivityIdConflict.Fail]: 'FAIL',
|
|
14
|
+
};
|
|
15
|
+
async function startStandaloneActivity(client, options) {
|
|
16
|
+
if (options.startToCloseTimeout === undefined &&
|
|
17
|
+
options.scheduleToCloseTimeout === undefined) {
|
|
18
|
+
throw new Error(`startStandaloneActivity(${options.type}): set startToCloseTimeout or ` +
|
|
19
|
+
'scheduleToCloseTimeout; an unbounded activity is never retried to a stop.');
|
|
20
|
+
}
|
|
21
|
+
return client.activity.start(options.type, {
|
|
22
|
+
id: options.id,
|
|
23
|
+
taskQueue: options.taskQueue,
|
|
24
|
+
idConflictPolicy: ID_CONFLICT_POLICY[options.idConflict],
|
|
25
|
+
...(options.orgId !== null
|
|
26
|
+
? { priority: { fairnessKey: (0, fairness_1.orgFairnessKey)(options.orgId) } }
|
|
27
|
+
: {}),
|
|
28
|
+
...(options.args !== undefined ? { args: [...options.args] } : {}),
|
|
29
|
+
...(options.startToCloseTimeout !== undefined
|
|
30
|
+
? { startToCloseTimeout: options.startToCloseTimeout }
|
|
31
|
+
: {}),
|
|
32
|
+
...(options.scheduleToCloseTimeout !== undefined
|
|
33
|
+
? { scheduleToCloseTimeout: options.scheduleToCloseTimeout }
|
|
34
|
+
: {}),
|
|
35
|
+
...(options.scheduleToStartTimeout !== undefined
|
|
36
|
+
? { scheduleToStartTimeout: options.scheduleToStartTimeout }
|
|
37
|
+
: {}),
|
|
38
|
+
...(options.heartbeatTimeout !== undefined
|
|
39
|
+
? { heartbeatTimeout: options.heartbeatTimeout }
|
|
40
|
+
: {}),
|
|
41
|
+
...(options.retry !== undefined ? { retry: options.retry } : {}),
|
|
42
|
+
...(options.startDelay !== undefined
|
|
43
|
+
? { startDelay: options.startDelay }
|
|
44
|
+
: {}),
|
|
45
|
+
...(options.summary !== undefined ? { summary: options.summary } : {}),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=standalone-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-activity.js","sourceRoot":"","sources":["../../src/lib/standalone-activity.ts"],"names":[],"mappings":";;;AAgEA,0DAuCC;AAvGD,yCAA4C;AAc5C,IAAY,4BAKX;AALD,WAAY,4BAA4B;IAEtC,4DAA4B,CAAA;IAE5B,6CAAa,CAAA;AACf,CAAC,EALW,4BAA4B,4CAA5B,4BAA4B,QAKvC;AAED,MAAM,kBAAkB,GAKpB;IACF,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,cAAc;IAC1D,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,MAAM;CAC5C,CAAC;AAmCK,KAAK,UAAU,uBAAuB,CAC3C,MAAgC,EAChC,OAAuC;IAEvC,IACE,OAAO,CAAC,mBAAmB,KAAK,SAAS;QACzC,OAAO,CAAC,sBAAsB,KAAK,SAAS,EAC5C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2BAA2B,OAAO,CAAC,IAAI,gCAAgC;YACrE,2EAA2E,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAI,OAAO,CAAC,IAAI,EAAE;QAC5C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI;YACxB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAA,yBAAc,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Worker, type ActivityInterceptorsFactory, type NativeConnection, type WorkerOptions, type WorkflowBundle } from '@temporalio/worker';
|
|
2
|
+
import { type WorkerDeploymentVersion } from './worker-deployment-version';
|
|
3
|
+
import type { PayloadCodec } from '@temporalio/common';
|
|
4
|
+
export type PlatformWorkerSinks = NonNullable<WorkerOptions['sinks']>;
|
|
5
|
+
export type PlatformNexusServiceHandler = NonNullable<WorkerOptions['nexusServices']>[number];
|
|
6
|
+
export interface PlatformWorkerTuning {
|
|
7
|
+
readonly maxConcurrentActivityTaskExecutions?: number;
|
|
8
|
+
readonly maxConcurrentWorkflowTaskExecutions?: number;
|
|
9
|
+
readonly maxConcurrentNexusTaskExecutions?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface VersionedWorkerParams extends PlatformWorkerTuning {
|
|
12
|
+
readonly connection: NativeConnection;
|
|
13
|
+
readonly namespace: string;
|
|
14
|
+
readonly taskQueue: string;
|
|
15
|
+
readonly version: WorkerDeploymentVersion;
|
|
16
|
+
readonly identity: string;
|
|
17
|
+
readonly workflowBundle?: WorkflowBundle;
|
|
18
|
+
readonly activities?: object;
|
|
19
|
+
readonly nexusServices?: readonly PlatformNexusServiceHandler[];
|
|
20
|
+
readonly payloadCodec?: PayloadCodec;
|
|
21
|
+
readonly activityInterceptors?: readonly ActivityInterceptorsFactory[];
|
|
22
|
+
readonly sinks?: PlatformWorkerSinks;
|
|
23
|
+
}
|
|
24
|
+
export declare function createVersionedWorker(params: VersionedWorkerParams): Promise<Worker>;
|
|
25
|
+
export declare function platformWorkerIdentity(role: string, namespace: string, taskQueue: string): string;
|
|
26
|
+
//# sourceMappingURL=versioned-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-worker.d.ts","sourceRoot":"","sources":["../../src/lib/versioned-worker.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,MAAM,EACN,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAGtE,MAAM,MAAM,2BAA2B,GAAG,WAAW,CACnD,aAAa,CAAC,eAAe,CAAC,CAC/B,CAAC,MAAM,CAAC,CAAC;AAGV,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,MAAM,CAAC;IACtD,QAAQ,CAAC,mCAAmC,CAAC,EAAE,MAAM,CAAC;IACtD,QAAQ,CAAC,gCAAgC,CAAC,EAAE,MAAM,CAAC;CACpD;AAOD,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAkDjB;AAGD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createVersionedWorker = createVersionedWorker;
|
|
4
|
+
exports.platformWorkerIdentity = platformWorkerIdentity;
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const worker_1 = require("@temporalio/worker");
|
|
7
|
+
const on_behalf_of_interceptor_1 = require("./on-behalf-of-interceptor");
|
|
8
|
+
const worker_deployment_version_1 = require("./worker-deployment-version");
|
|
9
|
+
async function createVersionedWorker(params) {
|
|
10
|
+
const version = (0, worker_deployment_version_1.assertWorkerDeploymentVersion)(params.version);
|
|
11
|
+
return worker_1.Worker.create({
|
|
12
|
+
connection: params.connection,
|
|
13
|
+
namespace: params.namespace,
|
|
14
|
+
taskQueue: params.taskQueue,
|
|
15
|
+
identity: params.identity,
|
|
16
|
+
...(params.workflowBundle !== undefined
|
|
17
|
+
? { workflowBundle: params.workflowBundle }
|
|
18
|
+
: {}),
|
|
19
|
+
...(params.activities !== undefined
|
|
20
|
+
? { activities: params.activities }
|
|
21
|
+
: {}),
|
|
22
|
+
...(params.nexusServices !== undefined && params.nexusServices.length > 0
|
|
23
|
+
? { nexusServices: [...params.nexusServices] }
|
|
24
|
+
: {}),
|
|
25
|
+
interceptors: {
|
|
26
|
+
activity: [
|
|
27
|
+
() => ({ inbound: new on_behalf_of_interceptor_1.OnBehalfOfActivityInterceptor() }),
|
|
28
|
+
...(params.activityInterceptors ?? []),
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
...(params.sinks !== undefined ? { sinks: params.sinks } : {}),
|
|
32
|
+
workerDeploymentOptions: {
|
|
33
|
+
version,
|
|
34
|
+
useWorkerVersioning: true,
|
|
35
|
+
defaultVersioningBehavior: 'PINNED',
|
|
36
|
+
},
|
|
37
|
+
...(params.payloadCodec
|
|
38
|
+
? { dataConverter: { payloadCodecs: [params.payloadCodec] } }
|
|
39
|
+
: {}),
|
|
40
|
+
...(params.maxConcurrentActivityTaskExecutions !== undefined
|
|
41
|
+
? {
|
|
42
|
+
maxConcurrentActivityTaskExecutions: params.maxConcurrentActivityTaskExecutions,
|
|
43
|
+
}
|
|
44
|
+
: {}),
|
|
45
|
+
...(params.maxConcurrentWorkflowTaskExecutions !== undefined
|
|
46
|
+
? {
|
|
47
|
+
maxConcurrentWorkflowTaskExecutions: params.maxConcurrentWorkflowTaskExecutions,
|
|
48
|
+
}
|
|
49
|
+
: {}),
|
|
50
|
+
...(params.maxConcurrentNexusTaskExecutions !== undefined
|
|
51
|
+
? {
|
|
52
|
+
maxConcurrentNexusTaskExecutions: params.maxConcurrentNexusTaskExecutions,
|
|
53
|
+
}
|
|
54
|
+
: {}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function platformWorkerIdentity(role, namespace, taskQueue) {
|
|
58
|
+
return `${role}-${namespace}-${taskQueue}-${(0, node_crypto_1.randomUUID)().slice(0, 8)}`;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=versioned-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-worker.js","sourceRoot":"","sources":["../../src/lib/versioned-worker.ts"],"names":[],"mappings":";;AA4DA,sDAoDC;AAGD,wDAMC;AApHD,6CAAyC;AAEzC,+CAM4B;AAE5B,yEAA2E;AAC3E,2EAGqC;AAyC9B,KAAK,UAAU,qBAAqB,CACzC,MAA6B;IAE7B,MAAM,OAAO,GAAG,IAAA,yDAA6B,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,eAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACvE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,wDAA6B,EAAE,EAAE,CAAC;gBACxD,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;aACvC;SACF;QACD,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,uBAAuB,EAAE;YACvB,OAAO;YACP,mBAAmB,EAAE,IAAI;YACzB,yBAAyB,EAAE,QAAQ;SACpC;QACD,GAAG,CAAC,MAAM,CAAC,YAAY;YACrB,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mCAAmC,KAAK,SAAS;YAC1D,CAAC,CAAC;gBACE,mCAAmC,EACjC,MAAM,CAAC,mCAAmC;aAC7C;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mCAAmC,KAAK,SAAS;YAC1D,CAAC,CAAC;gBACE,mCAAmC,EACjC,MAAM,CAAC,mCAAmC;aAC7C;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,gCAAgC,KAAK,SAAS;YACvD,CAAC,CAAC;gBACE,gCAAgC,EAC9B,MAAM,CAAC,gCAAgC;aAC1C;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAGD,SAAgB,sBAAsB,CACpC,IAAY,EACZ,SAAiB,EACjB,SAAiB;IAEjB,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI,IAAA,wBAAU,GAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TemporalEnvReader } from './namespace';
|
|
2
|
+
import type { WorkerDeploymentVersion } from '@temporalio/common';
|
|
3
|
+
export type { WorkerDeploymentVersion } from '@temporalio/common';
|
|
4
|
+
export declare const TEMPORAL_DEPLOYMENT_NAME_ENV = "TEMPORAL_DEPLOYMENT_NAME";
|
|
5
|
+
export declare const TEMPORAL_WORKER_BUILD_ID_ENV = "TEMPORAL_WORKER_BUILD_ID";
|
|
6
|
+
export declare function assertWorkerDeploymentVersion(version: WorkerDeploymentVersion): WorkerDeploymentVersion;
|
|
7
|
+
export declare function resolveWorkerDeploymentVersionFromEnv(env: TemporalEnvReader): WorkerDeploymentVersion;
|
|
8
|
+
//# sourceMappingURL=worker-deployment-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-deployment-version.d.ts","sourceRoot":"","sources":["../../src/lib/worker-deployment-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAMlE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAQvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAMvE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CAiBzB;AAUD,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,iBAAiB,GACrB,uBAAuB,CAwBzB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TEMPORAL_WORKER_BUILD_ID_ENV = exports.TEMPORAL_DEPLOYMENT_NAME_ENV = void 0;
|
|
4
|
+
exports.assertWorkerDeploymentVersion = assertWorkerDeploymentVersion;
|
|
5
|
+
exports.resolveWorkerDeploymentVersionFromEnv = resolveWorkerDeploymentVersionFromEnv;
|
|
6
|
+
exports.TEMPORAL_DEPLOYMENT_NAME_ENV = 'TEMPORAL_DEPLOYMENT_NAME';
|
|
7
|
+
exports.TEMPORAL_WORKER_BUILD_ID_ENV = 'TEMPORAL_WORKER_BUILD_ID';
|
|
8
|
+
function assertWorkerDeploymentVersion(version) {
|
|
9
|
+
for (const [field, value] of [
|
|
10
|
+
['deploymentName', version.deploymentName],
|
|
11
|
+
['buildId', version.buildId],
|
|
12
|
+
]) {
|
|
13
|
+
if (typeof value !== 'string' ||
|
|
14
|
+
value.length === 0 ||
|
|
15
|
+
value.trim() !== value) {
|
|
16
|
+
throw new Error(`Worker Deployment version ${field} must be a non-empty string without ` +
|
|
17
|
+
`surrounding whitespace; got ${JSON.stringify(value)}.`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return { deploymentName: version.deploymentName, buildId: version.buildId };
|
|
21
|
+
}
|
|
22
|
+
function resolveWorkerDeploymentVersionFromEnv(env) {
|
|
23
|
+
const deploymentName = env(exports.TEMPORAL_DEPLOYMENT_NAME_ENV);
|
|
24
|
+
const buildId = env(exports.TEMPORAL_WORKER_BUILD_ID_ENV);
|
|
25
|
+
const missing = [
|
|
26
|
+
deploymentName === undefined || deploymentName.length === 0
|
|
27
|
+
? exports.TEMPORAL_DEPLOYMENT_NAME_ENV
|
|
28
|
+
: undefined,
|
|
29
|
+
buildId === undefined || buildId.length === 0
|
|
30
|
+
? exports.TEMPORAL_WORKER_BUILD_ID_ENV
|
|
31
|
+
: undefined,
|
|
32
|
+
].filter((name) => name !== undefined);
|
|
33
|
+
if (missing.length > 0) {
|
|
34
|
+
throw new Error(`${missing.join(' and ')} ${missing.length === 1 ? 'is' : 'are'} required: ` +
|
|
35
|
+
'the Worker Deployment version is written into the pod by the Temporal ' +
|
|
36
|
+
'Worker Controller from the digest-pinned pod template. There is no ' +
|
|
37
|
+
'default and no unversioned mode — an unversioned worker would pick up ' +
|
|
38
|
+
'runs that were started on a different version.');
|
|
39
|
+
}
|
|
40
|
+
return assertWorkerDeploymentVersion({
|
|
41
|
+
deploymentName: deploymentName,
|
|
42
|
+
buildId: buildId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=worker-deployment-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-deployment-version.js","sourceRoot":"","sources":["../../src/lib/worker-deployment-version.ts"],"names":[],"mappings":";;;AAuBA,sEAmBC;AAUD,sFA0BC;AArEY,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAQ1D,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAMvE,SAAgB,6BAA6B,CAC3C,OAAgC;IAEhC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;QAC3B,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC;QAC1C,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;KACpB,EAAE,CAAC;QACX,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,EACtB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,sCAAsC;gBACtE,+BAA+B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC;AAUD,SAAgB,qCAAqC,CACnD,GAAsB;IAEtB,MAAM,cAAc,GAAG,GAAG,CAAC,oCAA4B,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,oCAA4B,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG;QACd,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YACzD,CAAC,CAAC,oCAA4B;YAC9B,CAAC,CAAC,SAAS;QACb,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3C,CAAC,CAAC,oCAA4B;YAC9B,CAAC,CAAC,SAAS;KACd,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa;YAC1E,wEAAwE;YACxE,qEAAqE;YACrE,wEAAwE;YACxE,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,6BAA6B,CAAC;QACnC,cAAc,EAAE,cAAwB;QACxC,OAAO,EAAE,OAAiB;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/lib/worker.d.ts
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ActivityInterceptorsFactory, type NativeConnection, type Worker, type WorkflowBundle } from '@temporalio/worker';
|
|
2
|
+
import { type PlatformWorkerSinks, type PlatformWorkerTuning } from './versioned-worker';
|
|
3
|
+
import type { WorkerDeploymentVersion } from './worker-deployment-version';
|
|
2
4
|
import type { PayloadCodec } from '@temporalio/common';
|
|
3
|
-
export type PlatformWorkerSinks
|
|
5
|
+
export type { PlatformNexusServiceHandler, PlatformWorkerSinks, PlatformWorkerTuning, } from './versioned-worker';
|
|
4
6
|
export interface BundlePlatformWorkflowsOptions {
|
|
5
7
|
readonly workflowInterceptorModules?: readonly string[];
|
|
8
|
+
readonly nexusEndpoints?: Readonly<Record<string, string>>;
|
|
6
9
|
}
|
|
7
10
|
export declare function bundlePlatformWorkflows(workflowsPath: string, options?: BundlePlatformWorkflowsOptions): Promise<WorkflowBundle>;
|
|
8
|
-
export
|
|
11
|
+
export declare function assertWorkflowsBundle(workflowsPath: string, options?: BundlePlatformWorkflowsOptions): Promise<void>;
|
|
12
|
+
export interface PlatformWorkerOptions extends PlatformWorkerTuning {
|
|
9
13
|
readonly connection: NativeConnection;
|
|
10
14
|
readonly namespace: string;
|
|
11
15
|
readonly taskQueue: string;
|
|
12
16
|
readonly workflowBundle: WorkflowBundle;
|
|
13
17
|
readonly activities: object;
|
|
14
|
-
readonly
|
|
15
|
-
readonly useVersioning?: boolean;
|
|
18
|
+
readonly version: WorkerDeploymentVersion;
|
|
16
19
|
readonly payloadCodec?: PayloadCodec;
|
|
17
|
-
readonly maxConcurrentActivityTaskExecutions?: number;
|
|
18
|
-
readonly maxConcurrentWorkflowTaskExecutions?: number;
|
|
19
20
|
readonly activityInterceptors?: readonly ActivityInterceptorsFactory[];
|
|
20
21
|
readonly sinks?: PlatformWorkerSinks;
|
|
21
22
|
}
|