@iworkflow/temporal
Temporal для @iworkflow/core. Peer: @temporalio/{client,common,worker,workflow,activity} ^1.24.
Модуль объявляет в своих зависимостях все пять peer, даже если сам импортирует не все: сборка
сервера с external: ["@temporalio/*"] их не вкладывает, и без @temporalio/common под падает
на старте с Cannot find module.
temporalRuntime(workflowsPath, opts?).start(def)— воркер на task queuedef.app;opts.workflowBundlePath— готовый бандл прод-сборки.temporalClient(opts?)— старт, сигнал, query по id.temporalActivities(activities)— шаги порта для своегоWorker.create(слив старой очереди, тестовый воркер):Failure→ApplicationFailure, работаютheartbeatиstepAttempt. Шаги без неё в своём воркереheartbeat/stepAttemptне видят — с 0.6.0 рантайм шага ставится на время шага.temporalStep(fn)— тест шага без воркера:new MockActivityEnvironment().run(() => temporalStep(() => acts.send(x)));acts— сырые шаги (не результатtemporalActivities), отказ остаётсяFailure;@temporalio/testingставит сам модуль.@iworkflow/temporal/workflow— только для входа песочницы модуля:export const outreach = temporalFlow(flows.outreach, ["send-twice"]). Сигналы и query — только через порт (handle.signal,handle.query): сырые имена Temporal не принимаются, иначе модуль не переедет на DBOS.
opts (TemporalOptions): address, namespace, tls, apiKey — источник токена, меняется каждые apiKeyRenewMs;
plugins — плагины SDK воркерам и клиенту; temporalClient({ lazy: true }) — соединение при первом вызове.
Без них — переменные TEMPORAL_URL (по умолчанию 127.0.0.1:17233), TEMPORAL_NAMESPACE.