@btravstack/temporal-worker 0.30.1 → 0.32.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 +4 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +19 -7
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -233,6 +233,10 @@ shutdown, so "stop waiting" is the escalation. `Result` → activity failure is
|
|
|
233
233
|
`declareActivitiesHandler`'s and is deliberately not duplicated here. The rest
|
|
234
234
|
is on the [documentation site](https://btravstack.github.io/btravstack/reference/temporal-worker).
|
|
235
235
|
|
|
236
|
+
`TemporalModule` automatically exports publicly available `Logger` and `HealthChecks`
|
|
237
|
+
ports, including whole-module re-exports and providers declared at the root.
|
|
238
|
+
It keeps private infrastructure hidden and business exports explicit.
|
|
239
|
+
|
|
236
240
|
## License
|
|
237
241
|
|
|
238
242
|
[MIT](./LICENSE) © Benoit TRAVERS
|
package/dist/index.d.mts
CHANGED
|
@@ -246,7 +246,7 @@ type TemporalModuleOptions<C extends ContractDefinition, ActivitiesError, Activi
|
|
|
246
246
|
};
|
|
247
247
|
readonly imports?: I;
|
|
248
248
|
readonly provides?: P;
|
|
249
|
-
/** The application's own exports; `TemporalRuntime`
|
|
249
|
+
/** The application's own exports; `TemporalRuntime` and visible kernel infrastructure are added. */
|
|
250
250
|
readonly exports?: X;
|
|
251
251
|
/**
|
|
252
252
|
* What this root's OWN providers expect from outside. di's gate is re-stated
|
|
@@ -271,7 +271,7 @@ type TemporalModuleOptions<C extends ContractDefinition, ActivitiesError, Activi
|
|
|
271
271
|
* await runMain(OrderTemporalWorker);
|
|
272
272
|
* ```
|
|
273
273
|
*/
|
|
274
|
-
export declare const TemporalModule: <const Name extends string>(name: Name) => <C extends ContractDefinition, ActivitiesError, ActivitiesNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, C, Unit>, Provides<P, C, ActivitiesError, ActivitiesNeeds>>[] = [], const N extends readonly AnyPort[] = []>(options: TemporalModuleOptions<C, ActivitiesError, ActivitiesNeeds, Declared, Unit, I, P, X, N>) => Module<(Extract<(readonly [typeof TemporalRuntime, ...
|
|
274
|
+
export declare const TemporalModule: <const Name extends string>(name: Name) => <C extends ContractDefinition, ActivitiesError, ActivitiesNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, C, Unit>, Provides<P, C, ActivitiesError, ActivitiesNeeds>>[] = [], const N extends readonly AnyPort[] = []>(options: TemporalModuleOptions<C, ActivitiesError, ActivitiesNeeds, Declared, Unit, I, P, X, N>) => Module<(Extract<(readonly [typeof TemporalRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> extends (infer T_2) ? T_2 extends Extract<(readonly [typeof TemporalRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> ? T_2 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [typeof TemporalRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T) ? T extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number] extends (infer E_1) ? E_1 extends AnyPort ? InstanceType<E_1> : E_1 extends AnyProvider ? InstanceType<E_1["port"]> : never : never), ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_3) ? T_3 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_3 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[1] | ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T_4) ? T_4 extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T_4 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[1], Exclude<((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[2], ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]> | Exclude<((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[2], ((readonly [...I, TemporalStarter<C, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, TemporalStarter<C, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<ActivitiesInstanceOf<C>, ActivitiesError, ActivitiesNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]>>;
|
|
275
275
|
/** One piece of the activities record — what `TemporalWorkflowActivities(contract, key)(…)` returns. */
|
|
276
276
|
type PieceOf<C extends ContractDefinition> = { readonly [K in ActivitiesKeyOf<C>]: {
|
|
277
277
|
readonly port: WorkflowActivitiesPortOf<C, K>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observers, RuntimePort, RuntimeStartFailed, composeByPrefix, dispatchUnit, mintPiece, noObserverMember, releasedBy, withUnitRecord } from "@btravstack/core";
|
|
1
|
+
import { Observers, RuntimePort, RuntimeStartFailed, composeByPrefix, dispatchUnit, infrastructureExports, mintPiece, noObserverMember, releasedBy, withUnitRecord } from "@btravstack/core";
|
|
2
2
|
import { Module, Port, Provider } from "@btravstack/di";
|
|
3
3
|
import { Config, Env } from "@btravstack/config";
|
|
4
4
|
import { declareActivitiesHandler } from "@temporal-contract/worker/activity";
|
|
@@ -174,6 +174,7 @@ const DEFAULT_FORCE_MS = 15e3;
|
|
|
174
174
|
* have to reach the worker as the same number.
|
|
175
175
|
*/
|
|
176
176
|
const durationMs = (duration) => duration === void 0 ? void 0 : msToNumber(duration);
|
|
177
|
+
const workerRuns = /* @__PURE__ */ new WeakMap();
|
|
177
178
|
/**
|
|
178
179
|
* The Temporal starter: a module providing the runtime, its configuration
|
|
179
180
|
* (bound from the `TEMPORAL_*` variables unless pinned) and the connection (a
|
|
@@ -210,7 +211,11 @@ const temporal = (options) => {
|
|
|
210
211
|
address: bound.address,
|
|
211
212
|
cause
|
|
212
213
|
})),
|
|
213
|
-
release: (connection) => connection.close().catch((cause) =>
|
|
214
|
+
release: (connection) => connection.close().catch((cause) => {
|
|
215
|
+
const running = workerRuns.get(connection);
|
|
216
|
+
if (!heldByWorker(cause) || running === void 0) return Promise.reject(cause);
|
|
217
|
+
return Promise.resolve(running).then(() => connection.close());
|
|
218
|
+
})
|
|
214
219
|
}),
|
|
215
220
|
noObserverMember,
|
|
216
221
|
Provider(TemporalRuntime)({
|
|
@@ -255,7 +260,7 @@ const createWorker = (host, connection, config, activities, options, observers)
|
|
|
255
260
|
activities: handler,
|
|
256
261
|
shutdownGraceTime: config.gracePeriodMs,
|
|
257
262
|
shutdownForceTime: config.forceAfterMs
|
|
258
|
-
}), startFailed)).map((worker) => poll(worker, taskQueue, namespace));
|
|
263
|
+
}), startFailed)).map((worker) => poll(worker, taskQueue, namespace, connection));
|
|
259
264
|
};
|
|
260
265
|
/**
|
|
261
266
|
* The `Serving` over a started worker.
|
|
@@ -265,8 +270,9 @@ const createWorker = (host, connection, config, activities, options, observers)
|
|
|
265
270
|
* to make a real one do that without taking the shared Temporal server down for
|
|
266
271
|
* every other spec. A stub worker is what reaches that arm.
|
|
267
272
|
*/
|
|
268
|
-
const poll = (worker, taskQueue, namespace) => {
|
|
273
|
+
const poll = (worker, taskQueue, namespace, connection) => {
|
|
269
274
|
const running = fromSafePromise(worker.run());
|
|
275
|
+
if (connection !== void 0) workerRuns.set(connection, running);
|
|
270
276
|
const stopPolling = () => {
|
|
271
277
|
if (worker.getState() === "RUNNING") worker.shutdown();
|
|
272
278
|
};
|
|
@@ -318,10 +324,16 @@ const TemporalModule = (name) => (options) => {
|
|
|
318
324
|
const provides = options.provides ?? [];
|
|
319
325
|
const exports = options.exports ?? [];
|
|
320
326
|
const starter = temporal(options);
|
|
327
|
+
const rootImports = [...imports, starter];
|
|
328
|
+
const rootProvides = [activities, ...provides];
|
|
321
329
|
return Module(name)({
|
|
322
|
-
imports:
|
|
323
|
-
provides:
|
|
324
|
-
exports: [
|
|
330
|
+
imports: rootImports,
|
|
331
|
+
provides: rootProvides,
|
|
332
|
+
exports: [
|
|
333
|
+
TemporalRuntime,
|
|
334
|
+
...infrastructureExports(rootImports, rootProvides),
|
|
335
|
+
...exports
|
|
336
|
+
],
|
|
325
337
|
needs: options.needs ?? []
|
|
326
338
|
});
|
|
327
339
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@btravstack/temporal-worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "The Temporal worker runtime for @btravstack/core: one unit per activity attempt, and a drain that honours the kernel's deadline",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graceful-shutdown",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@btravstack/config": "0.
|
|
50
|
-
"@btravstack/core": "0.
|
|
51
|
-
"@btravstack/di": "0.
|
|
49
|
+
"@btravstack/config": "0.32.0",
|
|
50
|
+
"@btravstack/core": "0.32.0",
|
|
51
|
+
"@btravstack/di": "0.32.0",
|
|
52
52
|
"@btravstack/internal-test-infra": "0.0.0",
|
|
53
|
-
"@btravstack/testing": "0.
|
|
53
|
+
"@btravstack/testing": "0.32.0",
|
|
54
54
|
"@btravstack/tsconfig": "0.4.0",
|
|
55
55
|
"@temporal-contract/client": "8.0.0-beta.11",
|
|
56
56
|
"@temporal-contract/contract": "8.0.0-beta.11",
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
"zod": "4.6.5"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
|
-
"@btravstack/config": "^0.
|
|
75
|
-
"@btravstack/core": "^0.
|
|
76
|
-
"@btravstack/di": "^0.
|
|
74
|
+
"@btravstack/config": "^0.32.0",
|
|
75
|
+
"@btravstack/core": "^0.32.0",
|
|
76
|
+
"@btravstack/di": "^0.32.0",
|
|
77
77
|
"@temporal-contract/client": "^8.0.0-beta.9",
|
|
78
78
|
"@temporal-contract/contract": "^8.0.0-beta.9",
|
|
79
79
|
"@temporal-contract/worker": "^8.0.0-beta.9",
|