@effect-app/infra 4.0.0-beta.257 → 4.0.0-beta.258
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 +11 -0
- package/dist/WorkflowEngineSqlite.d.ts +24 -0
- package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
- package/dist/WorkflowEngineSqlite.js +550 -0
- package/package.json +7 -206
- package/src/WorkflowEngineCosmos.ts +719 -0
- package/src/WorkflowEngineSqlite.ts +813 -0
- package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
- package/test/workflow-engine-cosmos.test.ts +354 -0
- package/test/workflow-engine-sqlite.test.ts +299 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.258
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0520dd4: Add Cosmos DB backed `WorkflowEngine` adapter (`layerCosmos` in `WorkflowEngineCosmos.ts`). Persists workflow state in a single container partitioned by `executionId` so per-execution writes share a partition key (TransactionalBatch-eligible). Optimistic concurrency via `_etag` + `IfMatch` on Replace; first-writer-wins via create-only batch ops for activity results and durable-deferred completions; a persisted _suspended_ activity is overwritten via upsert on resume. Values crossing the storage boundary round-trip through `Schema` codecs (`S.fromJsonString(S.toCodecJson(...))`) using the workflow's own `payloadSchema` / `successSchema` / `errorSchema` for typed values, and the cluster engine's opaque `AnyOrVoid` codec for activity / deferred payloads. Includes time-bound lease + heartbeat fiber, scope-bound recovery poller for crashed-driver takeover, and cross-partition clock poller for restart-survivable durable timers.
|
|
8
|
+
- 0ddda6f: Add SQLite backed `WorkflowEngine` adapter (`layerSqlite` in `WorkflowEngineSqlite.ts`). Persists workflow state across `workflow_exec` / `workflow_activity` / `workflow_deferred` / `workflow_clock` tables via `SqlClient`. Uses `sql.withTransaction` for atomicity, etag-based optimistic concurrency (`UPDATE ... WHERE etag = ? RETURNING etag`), and `INSERT ... ON CONFLICT DO NOTHING RETURNING` for first-writer-wins on activity / deferred / clock writes. Values crossing the storage boundary round-trip through `Schema` codecs (`S.fromJsonString(S.toCodecJson(...))`) using the workflow's own `payloadSchema` / `successSchema` / `errorSchema` for typed values, and the cluster engine's opaque `AnyOrVoid` codec for activity / deferred payloads. Includes time-bound lease + heartbeat fiber, scope-bound recovery poller for crashed-driver takeover, and cross-partition clock poller for restart-survivable durable timers.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- effect-app@4.0.0-beta.258
|
|
13
|
+
|
|
3
14
|
## 4.0.0-beta.257
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as Layer from "effect-app/Layer";
|
|
2
|
+
import * as Duration from "effect/Duration";
|
|
3
|
+
import { SqlClient } from "effect/unstable/sql";
|
|
4
|
+
import { WorkflowEngine } from "effect/unstable/workflow/WorkflowEngine";
|
|
5
|
+
export interface WorkflowEngineSqliteConfig {
|
|
6
|
+
/** Optional prefix for table names (e.g. `tenant_`). */
|
|
7
|
+
readonly prefix?: string;
|
|
8
|
+
/** Lease duration before a claim is considered stale. Default 30s. */
|
|
9
|
+
readonly leaseTtl?: Duration.Duration;
|
|
10
|
+
/** Renewal cadence — should be < leaseTtl. Default 10s. */
|
|
11
|
+
readonly heartbeatInterval?: Duration.Duration;
|
|
12
|
+
/** Cadence for scanning stale leases. Default 15s. Set to `Duration.zero` to disable. */
|
|
13
|
+
readonly recoveryInterval?: Duration.Duration;
|
|
14
|
+
/** Cadence for scanning due clocks. Default 5s. Set to `Duration.zero` to disable. */
|
|
15
|
+
readonly clockPollInterval?: Duration.Duration;
|
|
16
|
+
/** Stable worker identity; defaults to a random UUID per process. */
|
|
17
|
+
readonly workerId?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* SQLite backed `WorkflowEngine` layer. Requires an ambient `SqlClient`
|
|
21
|
+
* (`@effect/sql-sqlite-node` or a compatible client).
|
|
22
|
+
*/
|
|
23
|
+
export declare const layerSqlite: (cfg?: WorkflowEngineSqliteConfig) => Layer.Layer<WorkflowEngine, never, SqlClient.SqlClient>;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2Zsb3dFbmdpbmVTcWxpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Xb3JrZmxvd0VuZ2luZVNxbGl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUd6QyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBTTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUUvQyxPQUFPLEVBQTRCLGNBQWMsRUFBb0IsTUFBTSx5Q0FBeUMsQ0FBQTtBQUtwSCxNQUFNLFdBQVcsMEJBQTBCO0lBQ3pDLHdEQUF3RDtJQUN4RCxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0lBQ3hCLHNFQUFzRTtJQUN0RSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUNyQywyREFBMkQ7SUFDM0QsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUM5Qyx5RkFBeUY7SUFDekYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUM3QyxzRkFBc0Y7SUFDdEYsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUM5QyxxRUFBcUU7SUFDckUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUMzQjtBQW91QkQ7OztHQUdHO0FBQ0gsZUFBTyxNQUFNLFdBQVcsU0FDakIsMEJBQTBCLEtBQzlCLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsU0FBUyxDQUNJLENBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowEngineSqlite.d.ts","sourceRoot":"","sources":["../src/WorkflowEngineSqlite.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAGzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAM3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EAA4B,cAAc,EAAoB,MAAM,yCAAyC,CAAA;AAKpH,MAAM,WAAW,0BAA0B;IACzC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC9C,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC7C,sFAAsF;IACtF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAouBD;;;GAGG;AACH,eAAO,MAAM,WAAW,SACjB,0BAA0B,KAC9B,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,SAAS,CACI,CAAA"}
|