@smthrs/triggers 0.0.0-stage → 1.0.0-rc.3
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/CHANGELOG.md +219 -0
- package/LICENSE +21 -0
- package/README.md +109 -2
- package/dist/cjs/CatchUp.d.ts +25 -0
- package/dist/cjs/CatchUp.d.ts.map +1 -0
- package/dist/cjs/CatchUp.js +72 -0
- package/dist/cjs/CatchUp.js.map +7 -0
- package/dist/cjs/Channel.d.ts +108 -0
- package/dist/cjs/Channel.d.ts.map +1 -0
- package/dist/cjs/Channel.js +25 -0
- package/dist/cjs/Channel.js.map +7 -0
- package/dist/cjs/ClaimDecision.d.ts +183 -0
- package/dist/cjs/ClaimDecision.d.ts.map +1 -0
- package/dist/cjs/ClaimDecision.js +144 -0
- package/dist/cjs/ClaimDecision.js.map +7 -0
- package/dist/cjs/Cron.d.ts +91 -0
- package/dist/cjs/Cron.d.ts.map +1 -0
- package/dist/cjs/Cron.js +108 -0
- package/dist/cjs/Cron.js.map +7 -0
- package/dist/cjs/DispatchReader.d.ts +77 -0
- package/dist/cjs/DispatchReader.d.ts.map +1 -0
- package/dist/cjs/DispatchReader.js +121 -0
- package/dist/cjs/DispatchReader.js.map +7 -0
- package/dist/cjs/Overlap.d.ts +40 -0
- package/dist/cjs/Overlap.d.ts.map +1 -0
- package/dist/cjs/Overlap.js +37 -0
- package/dist/cjs/Overlap.js.map +7 -0
- package/dist/cjs/Schedule.d.ts +96 -0
- package/dist/cjs/Schedule.d.ts.map +1 -0
- package/dist/cjs/Schedule.js +61 -0
- package/dist/cjs/Schedule.js.map +7 -0
- package/dist/cjs/Scheduler.d.ts +248 -0
- package/dist/cjs/Scheduler.d.ts.map +1 -0
- package/dist/cjs/Scheduler.js +647 -0
- package/dist/cjs/Scheduler.js.map +7 -0
- package/dist/cjs/SqlTriggerStore.d.ts +29 -0
- package/dist/cjs/SqlTriggerStore.d.ts.map +1 -0
- package/dist/cjs/SqlTriggerStore.js +483 -0
- package/dist/cjs/SqlTriggerStore.js.map +7 -0
- package/dist/cjs/Trigger.d.ts +81 -0
- package/dist/cjs/Trigger.d.ts.map +1 -0
- package/dist/cjs/Trigger.js +54 -0
- package/dist/cjs/Trigger.js.map +7 -0
- package/dist/cjs/TriggerError.d.ts +58 -0
- package/dist/cjs/TriggerError.d.ts.map +1 -0
- package/dist/cjs/TriggerError.js +83 -0
- package/dist/cjs/TriggerError.js.map +7 -0
- package/dist/cjs/TriggerStore.d.ts +411 -0
- package/dist/cjs/TriggerStore.d.ts.map +1 -0
- package/dist/cjs/TriggerStore.js +127 -0
- package/dist/cjs/TriggerStore.js.map +7 -0
- package/dist/cjs/Webhook.d.ts +118 -0
- package/dist/cjs/Webhook.d.ts.map +1 -0
- package/dist/cjs/Webhook.js +153 -0
- package/dist/cjs/Webhook.js.map +7 -0
- package/dist/cjs/index.d.ts +30 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +57 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ActiveRuns.d.ts +51 -0
- package/dist/cjs/internal/ActiveRuns.d.ts.map +1 -0
- package/dist/cjs/internal/ActiveRuns.js +56 -0
- package/dist/cjs/internal/ActiveRuns.js.map +7 -0
- package/dist/cjs/internal/DueOccurrences.d.ts +32 -0
- package/dist/cjs/internal/DueOccurrences.d.ts.map +1 -0
- package/dist/cjs/internal/DueOccurrences.js +80 -0
- package/dist/cjs/internal/DueOccurrences.js.map +7 -0
- package/dist/cjs/internal/WallClock.d.ts +59 -0
- package/dist/cjs/internal/WallClock.d.ts.map +1 -0
- package/dist/cjs/internal/WallClock.js +132 -0
- package/dist/cjs/internal/WallClock.js.map +7 -0
- package/dist/cjs/migrations/0001_triggers.d.ts +15 -0
- package/dist/cjs/migrations/0001_triggers.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_triggers.js +64 -0
- package/dist/cjs/migrations/0001_triggers.js.map +7 -0
- package/dist/cjs/migrations/0002_reservation_lease.d.ts +15 -0
- package/dist/cjs/migrations/0002_reservation_lease.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_reservation_lease.js +41 -0
- package/dist/cjs/migrations/0002_reservation_lease.js.map +7 -0
- package/dist/cjs/migrations/0003_heartbeat.d.ts +16 -0
- package/dist/cjs/migrations/0003_heartbeat.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_heartbeat.js +44 -0
- package/dist/cjs/migrations/0003_heartbeat.js.map +7 -0
- package/dist/cjs/migrations/0004_fire_run_index.d.ts +17 -0
- package/dist/cjs/migrations/0004_fire_run_index.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_fire_run_index.js +40 -0
- package/dist/cjs/migrations/0004_fire_run_index.js.map +7 -0
- package/dist/cjs/migrations/index.d.ts +33 -0
- package/dist/cjs/migrations/index.d.ts.map +1 -0
- package/dist/cjs/migrations/index.js +50 -0
- package/dist/cjs/migrations/index.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestTriggers.d.ts +12 -0
- package/dist/cjs/test/TestTriggers.d.ts.map +1 -0
- package/dist/cjs/test/TestTriggers.js +421 -0
- package/dist/cjs/test/TestTriggers.js.map +7 -0
- package/dist/esm/CatchUp.d.ts +25 -0
- package/dist/esm/CatchUp.d.ts.map +1 -0
- package/dist/esm/CatchUp.js +52 -0
- package/dist/esm/CatchUp.js.map +1 -0
- package/dist/esm/Channel.d.ts +108 -0
- package/dist/esm/Channel.d.ts.map +1 -0
- package/dist/esm/Channel.js +19 -0
- package/dist/esm/Channel.js.map +1 -0
- package/dist/esm/ClaimDecision.d.ts +183 -0
- package/dist/esm/ClaimDecision.d.ts.map +1 -0
- package/dist/esm/ClaimDecision.js +172 -0
- package/dist/esm/ClaimDecision.js.map +1 -0
- package/dist/esm/Cron.d.ts +91 -0
- package/dist/esm/Cron.d.ts.map +1 -0
- package/dist/esm/Cron.js +132 -0
- package/dist/esm/Cron.js.map +1 -0
- package/dist/esm/DispatchReader.d.ts +77 -0
- package/dist/esm/DispatchReader.d.ts.map +1 -0
- package/dist/esm/DispatchReader.js +152 -0
- package/dist/esm/DispatchReader.js.map +1 -0
- package/dist/esm/Overlap.d.ts +40 -0
- package/dist/esm/Overlap.d.ts.map +1 -0
- package/dist/esm/Overlap.js +31 -0
- package/dist/esm/Overlap.js.map +1 -0
- package/dist/esm/Schedule.d.ts +96 -0
- package/dist/esm/Schedule.d.ts.map +1 -0
- package/dist/esm/Schedule.js +73 -0
- package/dist/esm/Schedule.js.map +1 -0
- package/dist/esm/Scheduler.d.ts +248 -0
- package/dist/esm/Scheduler.d.ts.map +1 -0
- package/dist/esm/Scheduler.js +734 -0
- package/dist/esm/Scheduler.js.map +1 -0
- package/dist/esm/SqlTriggerStore.d.ts +29 -0
- package/dist/esm/SqlTriggerStore.d.ts.map +1 -0
- package/dist/esm/SqlTriggerStore.js +483 -0
- package/dist/esm/SqlTriggerStore.js.map +1 -0
- package/dist/esm/Trigger.d.ts +81 -0
- package/dist/esm/Trigger.d.ts.map +1 -0
- package/dist/esm/Trigger.js +56 -0
- package/dist/esm/Trigger.js.map +1 -0
- package/dist/esm/TriggerError.d.ts +58 -0
- package/dist/esm/TriggerError.d.ts.map +1 -0
- package/dist/esm/TriggerError.js +110 -0
- package/dist/esm/TriggerError.js.map +1 -0
- package/dist/esm/TriggerStore.d.ts +411 -0
- package/dist/esm/TriggerStore.d.ts.map +1 -0
- package/dist/esm/TriggerStore.js +209 -0
- package/dist/esm/TriggerStore.js.map +1 -0
- package/dist/esm/Webhook.d.ts +118 -0
- package/dist/esm/Webhook.d.ts.map +1 -0
- package/dist/esm/Webhook.js +186 -0
- package/dist/esm/Webhook.js.map +1 -0
- package/dist/esm/index.d.ts +30 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +30 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ActiveRuns.d.ts +51 -0
- package/dist/esm/internal/ActiveRuns.d.ts.map +1 -0
- package/dist/esm/internal/ActiveRuns.js +34 -0
- package/dist/esm/internal/ActiveRuns.js.map +1 -0
- package/dist/esm/internal/DueOccurrences.d.ts +32 -0
- package/dist/esm/internal/DueOccurrences.d.ts.map +1 -0
- package/dist/esm/internal/DueOccurrences.js +55 -0
- package/dist/esm/internal/DueOccurrences.js.map +1 -0
- package/dist/esm/internal/WallClock.d.ts +59 -0
- package/dist/esm/internal/WallClock.d.ts.map +1 -0
- package/dist/esm/internal/WallClock.js +155 -0
- package/dist/esm/internal/WallClock.js.map +1 -0
- package/dist/esm/migrations/0001_triggers.d.ts +15 -0
- package/dist/esm/migrations/0001_triggers.d.ts.map +1 -0
- package/dist/esm/migrations/0001_triggers.js +42 -0
- package/dist/esm/migrations/0001_triggers.js.map +1 -0
- package/dist/esm/migrations/0002_reservation_lease.d.ts +15 -0
- package/dist/esm/migrations/0002_reservation_lease.d.ts.map +1 -0
- package/dist/esm/migrations/0002_reservation_lease.js +19 -0
- package/dist/esm/migrations/0002_reservation_lease.js.map +1 -0
- package/dist/esm/migrations/0003_heartbeat.d.ts +16 -0
- package/dist/esm/migrations/0003_heartbeat.d.ts.map +1 -0
- package/dist/esm/migrations/0003_heartbeat.js +23 -0
- package/dist/esm/migrations/0003_heartbeat.js.map +1 -0
- package/dist/esm/migrations/0004_fire_run_index.d.ts +17 -0
- package/dist/esm/migrations/0004_fire_run_index.d.ts.map +1 -0
- package/dist/esm/migrations/0004_fire_run_index.js +20 -0
- package/dist/esm/migrations/0004_fire_run_index.js.map +1 -0
- package/dist/esm/migrations/index.d.ts +33 -0
- package/dist/esm/migrations/index.d.ts.map +1 -0
- package/dist/esm/migrations/index.js +37 -0
- package/dist/esm/migrations/index.js.map +1 -0
- package/dist/esm/test/TestTriggers.d.ts +12 -0
- package/dist/esm/test/TestTriggers.d.ts.map +1 -0
- package/dist/esm/test/TestTriggers.js +439 -0
- package/dist/esm/test/TestTriggers.js.map +1 -0
- package/docs/README.md +140 -0
- package/docs/api.md +1186 -0
- package/docs/concepts/channels.md +103 -0
- package/docs/concepts/claim-protocol.md +229 -0
- package/docs/concepts/policies.md +124 -0
- package/docs/concepts/schedules.md +134 -0
- package/docs/guides/choose-a-policy.md +113 -0
- package/docs/guides/declare-a-trigger.md +136 -0
- package/docs/guides/ingest-a-webhook.md +164 -0
- package/docs/guides/run-the-scheduler.md +173 -0
- package/docs/guides/testing.md +157 -0
- package/docs/installation.md +81 -0
- package/docs/quickstart.md +163 -0
- package/docs/troubleshooting.md +281 -0
- package/package.json +241 -3
- package/src/CatchUp.ts +73 -0
- package/src/Channel.ts +121 -0
- package/src/ClaimDecision.ts +303 -0
- package/src/Cron.ts +173 -0
- package/src/DispatchReader.ts +179 -0
- package/src/Overlap.ts +53 -0
- package/src/Schedule.ts +112 -0
- package/src/Scheduler.ts +1154 -0
- package/src/SqlTriggerStore.ts +638 -0
- package/src/Trigger.ts +84 -0
- package/src/TriggerError.ts +129 -0
- package/src/TriggerStore.ts +514 -0
- package/src/Webhook.ts +270 -0
- package/src/index.ts +30 -0
- package/src/internal/ActiveRuns.ts +83 -0
- package/src/internal/DueOccurrences.ts +101 -0
- package/src/internal/WallClock.ts +172 -0
- package/src/migrations/0001_triggers.ts +43 -0
- package/src/migrations/0002_reservation_lease.ts +20 -0
- package/src/migrations/0003_heartbeat.ts +24 -0
- package/src/migrations/0004_fire_run_index.ts +21 -0
- package/src/migrations/index.ts +40 -0
- package/src/test/TestTriggers.ts +563 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable, Clock-driven trigger scheduling.
|
|
3
|
+
*
|
|
4
|
+
* @see packages/smithers/agent/triggers/docs/api.md
|
|
5
|
+
*
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Control from "@smthrs/control/Control";
|
|
9
|
+
import * as Context from "effect/Context";
|
|
10
|
+
import * as Duration from "effect/Duration";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as Layer from "effect/Layer";
|
|
13
|
+
import type * as Scope from "effect/Scope";
|
|
14
|
+
import { TriggerError } from "./TriggerError.ts";
|
|
15
|
+
import { TriggerStore } from "./TriggerStore.ts";
|
|
16
|
+
/**
|
|
17
|
+
* Arguments used to launch one scheduled flow.
|
|
18
|
+
*
|
|
19
|
+
* @category models
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
*/
|
|
22
|
+
export interface StartInput {
|
|
23
|
+
readonly flowId: string;
|
|
24
|
+
readonly input: unknown;
|
|
25
|
+
readonly idempotencyKey: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* What the runtime says about one scheduled run.
|
|
29
|
+
*
|
|
30
|
+
* `active` keeps the monitor polling. `completed` is the only state recorded as
|
|
31
|
+
* a completed occurrence; `failed`, `cancelled`, and `missing` (the runtime has
|
|
32
|
+
* no record of the run) are recorded as `failed` with the state in the error.
|
|
33
|
+
*
|
|
34
|
+
* @category models
|
|
35
|
+
* @since 1.0.0-rc.1
|
|
36
|
+
*/
|
|
37
|
+
export type RunState = "active" | "completed" | "failed" | "cancelled" | "missing";
|
|
38
|
+
/**
|
|
39
|
+
* Runtime operations required by the scheduler.
|
|
40
|
+
*
|
|
41
|
+
* @category models
|
|
42
|
+
* @since 0.1.0
|
|
43
|
+
*/
|
|
44
|
+
export interface RunnerService {
|
|
45
|
+
readonly start: (input: StartInput) => Effect.Effect<string, TriggerError>;
|
|
46
|
+
readonly inspect: (runId: string) => Effect.Effect<RunState, TriggerError>;
|
|
47
|
+
readonly cancel: (runId: string) => Effect.Effect<void, TriggerError>;
|
|
48
|
+
}
|
|
49
|
+
declare const Runner_base: Context.ServiceClass<Runner, "flows/triggers/Scheduler/Runner", RunnerService>;
|
|
50
|
+
/**
|
|
51
|
+
* Injectable scheduled-run launcher.
|
|
52
|
+
*
|
|
53
|
+
* Constructed with {@link makeRunner}, {@link makeNoopRunner}, or
|
|
54
|
+
* {@link layerNoopRunner}; the tag itself carries no constructors, so there is
|
|
55
|
+
* one spelling of each and the module's own `make`/`makeNoop` can only mean
|
|
56
|
+
* the scheduler.
|
|
57
|
+
*
|
|
58
|
+
* @category services
|
|
59
|
+
* @since 0.1.0
|
|
60
|
+
*/
|
|
61
|
+
export declare class Runner extends Runner_base {
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Constructs a scheduled-run launcher.
|
|
65
|
+
*
|
|
66
|
+
* @category constructors
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export declare const makeRunner: (implementation: RunnerService) => RunnerService;
|
|
70
|
+
/**
|
|
71
|
+
* Constructs a launcher that returns the idempotency key as a terminal run.
|
|
72
|
+
*
|
|
73
|
+
* @category constructors
|
|
74
|
+
* @since 0.1.0
|
|
75
|
+
*/
|
|
76
|
+
export declare const makeNoopRunner: (overrides?: Partial<RunnerService>) => RunnerService;
|
|
77
|
+
/**
|
|
78
|
+
* Provides the terminal no-op launcher.
|
|
79
|
+
*
|
|
80
|
+
* @category layers
|
|
81
|
+
* @since 0.1.0
|
|
82
|
+
*/
|
|
83
|
+
export declare const layerNoopRunner: (overrides?: Partial<RunnerService>) => Layer.Layer<Runner>;
|
|
84
|
+
/**
|
|
85
|
+
* How many times a parked plan is re-offered before the launch is abandoned.
|
|
86
|
+
*
|
|
87
|
+
* The delay doubles from one second, so the eighth attempt lands a little over
|
|
88
|
+
* two minutes in. A plan nobody approves used to be re-offered once a second
|
|
89
|
+
* for the life of the scope while the launch reservation behind it expired.
|
|
90
|
+
*
|
|
91
|
+
* @category constants
|
|
92
|
+
* @since 0.1.0
|
|
93
|
+
*/
|
|
94
|
+
export declare const parkedAttempts = 8;
|
|
95
|
+
/**
|
|
96
|
+
* Runner layer backed by the authoritative Control plan/run/list/cancel API.
|
|
97
|
+
*
|
|
98
|
+
* A parked plan waits for approval and retries the same idempotent run request
|
|
99
|
+
* a bounded number of times; this adapter never approves it or reconstructs an
|
|
100
|
+
* execution envelope.
|
|
101
|
+
*
|
|
102
|
+
* @category layers
|
|
103
|
+
* @since 0.1.0
|
|
104
|
+
*/
|
|
105
|
+
export declare const layerControlRunner: Layer.Layer<Runner, never, Control.Control>;
|
|
106
|
+
/**
|
|
107
|
+
* Scheduler timing configuration.
|
|
108
|
+
*
|
|
109
|
+
* @category models
|
|
110
|
+
* @since 0.1.0
|
|
111
|
+
*/
|
|
112
|
+
export interface Options {
|
|
113
|
+
readonly pollInterval?: Duration.Input | undefined;
|
|
114
|
+
readonly runPollInterval?: Duration.Input | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* How many triggers one tick processes at the same time. Defaults to
|
|
117
|
+
* {@link defaultConcurrency}. A tick never waits for a launch: the claim is
|
|
118
|
+
* durable and the launch runs on its own fiber.
|
|
119
|
+
*/
|
|
120
|
+
readonly concurrency?: number | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* How long one `Runner.start` may take before the launch is abandoned with
|
|
123
|
+
* `runner_timeout`. Defaults to four minutes: above the Control adapter's
|
|
124
|
+
* bounded parked-approval retries and below the five-minute reservation
|
|
125
|
+
* lease, so an abandoned launch still owns its reservation and re-arms the
|
|
126
|
+
* occurrence itself. The next tick retries it under the same idempotency
|
|
127
|
+
* key. A deadline above the lease is allowed; a start that answers after
|
|
128
|
+
* its lease is reconciled as a late launch.
|
|
129
|
+
*/
|
|
130
|
+
readonly startTimeout?: Duration.Input | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* How long one `Runner.inspect` may take. Defaults to thirty seconds. A
|
|
133
|
+
* timeout is an inspection failure: the monitor retries and then detaches,
|
|
134
|
+
* retaining the durable owner.
|
|
135
|
+
*/
|
|
136
|
+
readonly inspectTimeout?: Duration.Input | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* How long one `Runner.cancel` may take. Defaults to thirty seconds. A
|
|
139
|
+
* timeout fails the supersede, which restores the prior run as active and
|
|
140
|
+
* queues the replacement.
|
|
141
|
+
*/
|
|
142
|
+
readonly cancelTimeout?: Duration.Input | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* The name this scheduler records its heartbeat under, so a listing can say
|
|
145
|
+
* which host last polled the store. Defaults to {@link defaultHost}.
|
|
146
|
+
*/
|
|
147
|
+
readonly host?: string | undefined;
|
|
148
|
+
/**
|
|
149
|
+
* How long settled fire ledger rows are kept. Defaults to
|
|
150
|
+
* {@link defaultFireRetention}. A tick deletes older settled rows through
|
|
151
|
+
* `TriggerStore.pruneFires` at most once an hour; a failed prune is logged
|
|
152
|
+
* and the tick goes on.
|
|
153
|
+
*/
|
|
154
|
+
readonly fireRetention?: Duration.Input | undefined;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* The heartbeat host name a scheduler records under when its options name
|
|
158
|
+
* none.
|
|
159
|
+
*
|
|
160
|
+
* @category constants
|
|
161
|
+
* @since 1.0.0-rc.0
|
|
162
|
+
*/
|
|
163
|
+
export declare const defaultHost = "local";
|
|
164
|
+
/**
|
|
165
|
+
* How many triggers one tick processes at the same time when its options name
|
|
166
|
+
* no `concurrency`.
|
|
167
|
+
*
|
|
168
|
+
* @category constants
|
|
169
|
+
* @since 1.0.0-rc.0
|
|
170
|
+
*/
|
|
171
|
+
export declare const defaultConcurrency = 4;
|
|
172
|
+
/**
|
|
173
|
+
* How long settled fire ledger rows are kept when the options name no
|
|
174
|
+
* `fireRetention`: thirty days.
|
|
175
|
+
*
|
|
176
|
+
* @category constants
|
|
177
|
+
* @since 1.0.0-rc.1
|
|
178
|
+
*/
|
|
179
|
+
export declare const defaultFireRetention: Duration.Duration;
|
|
180
|
+
/**
|
|
181
|
+
* Histogram boundaries, in milliseconds, of `smithers.triggers.tick_duration_ms`
|
|
182
|
+
* and `smithers.triggers.launch_duration_ms`.
|
|
183
|
+
*
|
|
184
|
+
* @category constants
|
|
185
|
+
* @since 1.0.0-rc.1
|
|
186
|
+
*/
|
|
187
|
+
export declare const durationBoundaries: ReadonlyArray<number>;
|
|
188
|
+
/**
|
|
189
|
+
* Scheduler operations.
|
|
190
|
+
*
|
|
191
|
+
* @category models
|
|
192
|
+
* @since 0.1.0
|
|
193
|
+
*/
|
|
194
|
+
export interface Service {
|
|
195
|
+
readonly runOnce: Effect.Effect<void, TriggerError>;
|
|
196
|
+
}
|
|
197
|
+
declare const Scheduler_base: Context.ServiceClass<Scheduler, "flows/triggers/Scheduler", Service>;
|
|
198
|
+
/**
|
|
199
|
+
* The live trigger scheduler.
|
|
200
|
+
*
|
|
201
|
+
* @category services
|
|
202
|
+
* @since 0.1.0
|
|
203
|
+
*/
|
|
204
|
+
export declare class Scheduler extends Scheduler_base {
|
|
205
|
+
}
|
|
206
|
+
/** Stable Control request identity for one manual or scheduled occurrence.
|
|
207
|
+
* @category constructors
|
|
208
|
+
* @since 0.1.0
|
|
209
|
+
*/
|
|
210
|
+
export declare const idempotencyKey: (triggerId: string, occurrence: number) => string;
|
|
211
|
+
/**
|
|
212
|
+
* Constructs a scheduler service in the current Scope.
|
|
213
|
+
*
|
|
214
|
+
* @category constructors
|
|
215
|
+
* @since 0.1.0
|
|
216
|
+
*/
|
|
217
|
+
export declare const make: (options?: Options) => Effect.Effect<Service, TriggerError, Runner | Scope.Scope | TriggerStore>;
|
|
218
|
+
/**
|
|
219
|
+
* Constructs a scheduler that performs no work.
|
|
220
|
+
*
|
|
221
|
+
* @category constructors
|
|
222
|
+
* @since 0.1.0
|
|
223
|
+
*/
|
|
224
|
+
export declare const makeNoop: () => Service;
|
|
225
|
+
/**
|
|
226
|
+
* Scoped scheduler layer. Its supervisor sleeps only through the Effect Clock,
|
|
227
|
+
* so scope closure interrupts the poll loop and detaches every run monitor.
|
|
228
|
+
* Detaching is all it does: the runs themselves are durable and keep going,
|
|
229
|
+
* and the next incarnation re-attaches to them from the store.
|
|
230
|
+
*
|
|
231
|
+
* The loop recovers from the whole cause rather than the typed error alone. A
|
|
232
|
+
* defect raised anywhere under a tick, which `Effect.catch` by contract leaves
|
|
233
|
+
* alone, would otherwise kill this fiber and stop every trigger in the process
|
|
234
|
+
* with nothing written down.
|
|
235
|
+
*
|
|
236
|
+
* @category layers
|
|
237
|
+
* @since 0.1.0
|
|
238
|
+
*/
|
|
239
|
+
export declare const layer: (options?: Options) => Layer.Layer<Scheduler, TriggerError, Runner | TriggerStore>;
|
|
240
|
+
/**
|
|
241
|
+
* Provides an inert scheduler without allocating a supervisor fiber.
|
|
242
|
+
*
|
|
243
|
+
* @category layers
|
|
244
|
+
* @since 0.1.0
|
|
245
|
+
*/
|
|
246
|
+
export declare const layerNoop: Layer.Layer<Scheduler>;
|
|
247
|
+
export {};
|
|
248
|
+
//# sourceMappingURL=Scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/Scheduler.ts"],"names":[],"mappings":"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"}
|