@smthrs/journal 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 +149 -0
- package/LICENSE +21 -0
- package/README.md +206 -2
- package/dist/cjs/CallFact.d.ts +129 -0
- package/dist/cjs/CallFact.d.ts.map +1 -0
- package/dist/cjs/CallFact.js +106 -0
- package/dist/cjs/CallFact.js.map +7 -0
- package/dist/cjs/Consensus.d.ts +440 -0
- package/dist/cjs/Consensus.d.ts.map +1 -0
- package/dist/cjs/Consensus.js +251 -0
- package/dist/cjs/Consensus.js.map +7 -0
- package/dist/cjs/EngineEvent.d.ts +890 -0
- package/dist/cjs/EngineEvent.d.ts.map +1 -0
- package/dist/cjs/EngineEvent.js +383 -0
- package/dist/cjs/EngineEvent.js.map +7 -0
- package/dist/cjs/ExecutionFact.d.ts +216 -0
- package/dist/cjs/ExecutionFact.d.ts.map +1 -0
- package/dist/cjs/ExecutionFact.js +303 -0
- package/dist/cjs/ExecutionFact.js.map +7 -0
- package/dist/cjs/Journal.d.ts +617 -0
- package/dist/cjs/Journal.d.ts.map +1 -0
- package/dist/cjs/Journal.js +190 -0
- package/dist/cjs/Journal.js.map +7 -0
- package/dist/cjs/JournalEvent.d.ts +421 -0
- package/dist/cjs/JournalEvent.d.ts.map +1 -0
- package/dist/cjs/JournalEvent.js +281 -0
- package/dist/cjs/JournalEvent.js.map +7 -0
- package/dist/cjs/JournalGeneration.d.ts +34 -0
- package/dist/cjs/JournalGeneration.d.ts.map +1 -0
- package/dist/cjs/JournalGeneration.js +72 -0
- package/dist/cjs/JournalGeneration.js.map +7 -0
- package/dist/cjs/JournalMetrics.d.ts +72 -0
- package/dist/cjs/JournalMetrics.d.ts.map +1 -0
- package/dist/cjs/JournalMetrics.js +55 -0
- package/dist/cjs/JournalMetrics.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +42 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +58 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/OwnerId.d.ts +40 -0
- package/dist/cjs/OwnerId.d.ts.map +1 -0
- package/dist/cjs/OwnerId.js +40 -0
- package/dist/cjs/OwnerId.js.map +7 -0
- package/dist/cjs/Projection.d.ts +29 -0
- package/dist/cjs/Projection.d.ts.map +1 -0
- package/dist/cjs/Projection.js +25 -0
- package/dist/cjs/Projection.js.map +7 -0
- package/dist/cjs/RedactedLogger.d.ts +121 -0
- package/dist/cjs/RedactedLogger.d.ts.map +1 -0
- package/dist/cjs/RedactedLogger.js +235 -0
- package/dist/cjs/RedactedLogger.js.map +7 -0
- package/dist/cjs/Redaction.d.ts +350 -0
- package/dist/cjs/Redaction.d.ts.map +1 -0
- package/dist/cjs/Redaction.js +928 -0
- package/dist/cjs/Redaction.js.map +7 -0
- package/dist/cjs/SqlConsensus.d.ts +44 -0
- package/dist/cjs/SqlConsensus.d.ts.map +1 -0
- package/dist/cjs/SqlConsensus.js +243 -0
- package/dist/cjs/SqlConsensus.js.map +7 -0
- package/dist/cjs/SqlJournal.d.ts +173 -0
- package/dist/cjs/SqlJournal.d.ts.map +1 -0
- package/dist/cjs/SqlJournal.js +1568 -0
- package/dist/cjs/SqlJournal.js.map +7 -0
- package/dist/cjs/StepFact.d.ts +66 -0
- package/dist/cjs/StepFact.d.ts.map +1 -0
- package/dist/cjs/StepFact.js +68 -0
- package/dist/cjs/StepFact.js.map +7 -0
- package/dist/cjs/index.d.ts +95 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +63 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/JournalInternalFault.d.ts +37 -0
- package/dist/cjs/internal/JournalInternalFault.d.ts.map +1 -0
- package/dist/cjs/internal/JournalInternalFault.js +43 -0
- package/dist/cjs/internal/JournalInternalFault.js.map +7 -0
- package/dist/cjs/migrations/0001_initial.d.ts +15 -0
- package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_initial.js +54 -0
- package/dist/cjs/migrations/0001_initial.js.map +7 -0
- package/dist/cjs/migrations/0002_checkpoints.d.ts +27 -0
- package/dist/cjs/migrations/0002_checkpoints.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_checkpoints.js +48 -0
- package/dist/cjs/migrations/0002_checkpoints.js.map +7 -0
- package/dist/cjs/migrations/0003_startup_index.d.ts +15 -0
- package/dist/cjs/migrations/0003_startup_index.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_startup_index.js +40 -0
- package/dist/cjs/migrations/0003_startup_index.js.map +7 -0
- package/dist/cjs/migrations/0004_dedup.d.ts +15 -0
- package/dist/cjs/migrations/0004_dedup.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_dedup.js +57 -0
- package/dist/cjs/migrations/0004_dedup.js.map +7 -0
- package/dist/cjs/migrations/0005_run_event_type.d.ts +15 -0
- package/dist/cjs/migrations/0005_run_event_type.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_run_event_type.js +40 -0
- package/dist/cjs/migrations/0005_run_event_type.js.map +7 -0
- package/dist/cjs/migrations/0006_consensus.d.ts +22 -0
- package/dist/cjs/migrations/0006_consensus.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_consensus.js +84 -0
- package/dist/cjs/migrations/0006_consensus.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/Notifying.d.ts +65 -0
- package/dist/cjs/test/Notifying.d.ts.map +1 -0
- package/dist/cjs/test/Notifying.js +62 -0
- package/dist/cjs/test/Notifying.js.map +7 -0
- package/dist/cjs/test/TestJournal.d.ts +43 -0
- package/dist/cjs/test/TestJournal.d.ts.map +1 -0
- package/dist/cjs/test/TestJournal.js +43 -0
- package/dist/cjs/test/TestJournal.js.map +7 -0
- package/dist/esm/CallFact.d.ts +129 -0
- package/dist/esm/CallFact.d.ts.map +1 -0
- package/dist/esm/CallFact.js +96 -0
- package/dist/esm/CallFact.js.map +1 -0
- package/dist/esm/Consensus.d.ts +440 -0
- package/dist/esm/Consensus.d.ts.map +1 -0
- package/dist/esm/Consensus.js +454 -0
- package/dist/esm/Consensus.js.map +1 -0
- package/dist/esm/EngineEvent.d.ts +890 -0
- package/dist/esm/EngineEvent.d.ts.map +1 -0
- package/dist/esm/EngineEvent.js +614 -0
- package/dist/esm/EngineEvent.js.map +1 -0
- package/dist/esm/ExecutionFact.d.ts +216 -0
- package/dist/esm/ExecutionFact.d.ts.map +1 -0
- package/dist/esm/ExecutionFact.js +374 -0
- package/dist/esm/ExecutionFact.js.map +1 -0
- package/dist/esm/Journal.d.ts +617 -0
- package/dist/esm/Journal.d.ts.map +1 -0
- package/dist/esm/Journal.js +323 -0
- package/dist/esm/Journal.js.map +1 -0
- package/dist/esm/JournalEvent.d.ts +421 -0
- package/dist/esm/JournalEvent.d.ts.map +1 -0
- package/dist/esm/JournalEvent.js +517 -0
- package/dist/esm/JournalEvent.js.map +1 -0
- package/dist/esm/JournalGeneration.d.ts +34 -0
- package/dist/esm/JournalGeneration.d.ts.map +1 -0
- package/dist/esm/JournalGeneration.js +65 -0
- package/dist/esm/JournalGeneration.js.map +1 -0
- package/dist/esm/JournalMetrics.d.ts +72 -0
- package/dist/esm/JournalMetrics.d.ts.map +1 -0
- package/dist/esm/JournalMetrics.js +79 -0
- package/dist/esm/JournalMetrics.js.map +1 -0
- package/dist/esm/Migrations.d.ts +42 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +59 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/OwnerId.d.ts +40 -0
- package/dist/esm/OwnerId.d.ts.map +1 -0
- package/dist/esm/OwnerId.js +33 -0
- package/dist/esm/OwnerId.js.map +1 -0
- package/dist/esm/Projection.d.ts +29 -0
- package/dist/esm/Projection.d.ts.map +1 -0
- package/dist/esm/Projection.js +13 -0
- package/dist/esm/Projection.js.map +1 -0
- package/dist/esm/RedactedLogger.d.ts +121 -0
- package/dist/esm/RedactedLogger.d.ts.map +1 -0
- package/dist/esm/RedactedLogger.js +445 -0
- package/dist/esm/RedactedLogger.js.map +1 -0
- package/dist/esm/Redaction.d.ts +350 -0
- package/dist/esm/Redaction.d.ts.map +1 -0
- package/dist/esm/Redaction.js +1584 -0
- package/dist/esm/Redaction.js.map +1 -0
- package/dist/esm/SqlConsensus.d.ts +44 -0
- package/dist/esm/SqlConsensus.d.ts.map +1 -0
- package/dist/esm/SqlConsensus.js +252 -0
- package/dist/esm/SqlConsensus.js.map +1 -0
- package/dist/esm/SqlJournal.d.ts +173 -0
- package/dist/esm/SqlJournal.d.ts.map +1 -0
- package/dist/esm/SqlJournal.js +1858 -0
- package/dist/esm/SqlJournal.js.map +1 -0
- package/dist/esm/StepFact.d.ts +66 -0
- package/dist/esm/StepFact.d.ts.map +1 -0
- package/dist/esm/StepFact.js +50 -0
- package/dist/esm/StepFact.js.map +1 -0
- package/dist/esm/index.d.ts +95 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +95 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/JournalInternalFault.d.ts +37 -0
- package/dist/esm/internal/JournalInternalFault.d.ts.map +1 -0
- package/dist/esm/internal/JournalInternalFault.js +28 -0
- package/dist/esm/internal/JournalInternalFault.js.map +1 -0
- package/dist/esm/migrations/0001_initial.d.ts +15 -0
- package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
- package/dist/esm/migrations/0001_initial.js +32 -0
- package/dist/esm/migrations/0001_initial.js.map +1 -0
- package/dist/esm/migrations/0002_checkpoints.d.ts +27 -0
- package/dist/esm/migrations/0002_checkpoints.d.ts.map +1 -0
- package/dist/esm/migrations/0002_checkpoints.js +38 -0
- package/dist/esm/migrations/0002_checkpoints.js.map +1 -0
- package/dist/esm/migrations/0003_startup_index.d.ts +15 -0
- package/dist/esm/migrations/0003_startup_index.d.ts.map +1 -0
- package/dist/esm/migrations/0003_startup_index.js +18 -0
- package/dist/esm/migrations/0003_startup_index.js.map +1 -0
- package/dist/esm/migrations/0004_dedup.d.ts +15 -0
- package/dist/esm/migrations/0004_dedup.d.ts.map +1 -0
- package/dist/esm/migrations/0004_dedup.js +38 -0
- package/dist/esm/migrations/0004_dedup.js.map +1 -0
- package/dist/esm/migrations/0005_run_event_type.d.ts +15 -0
- package/dist/esm/migrations/0005_run_event_type.d.ts.map +1 -0
- package/dist/esm/migrations/0005_run_event_type.js +18 -0
- package/dist/esm/migrations/0005_run_event_type.js.map +1 -0
- package/dist/esm/migrations/0006_consensus.d.ts +22 -0
- package/dist/esm/migrations/0006_consensus.d.ts.map +1 -0
- package/dist/esm/migrations/0006_consensus.js +69 -0
- package/dist/esm/migrations/0006_consensus.js.map +1 -0
- package/dist/esm/test/Notifying.d.ts +65 -0
- package/dist/esm/test/Notifying.d.ts.map +1 -0
- package/dist/esm/test/Notifying.js +62 -0
- package/dist/esm/test/Notifying.js.map +1 -0
- package/dist/esm/test/TestJournal.d.ts +43 -0
- package/dist/esm/test/TestJournal.d.ts.map +1 -0
- package/dist/esm/test/TestJournal.js +27 -0
- package/dist/esm/test/TestJournal.js.map +1 -0
- package/docs/README.md +164 -0
- package/docs/api.md +639 -0
- package/docs/concepts/compaction.md +157 -0
- package/docs/concepts/idempotency.md +127 -0
- package/docs/concepts/owner-fence.md +124 -0
- package/docs/concepts/redaction.md +218 -0
- package/docs/concepts/state-event-authority.md +159 -0
- package/docs/concepts/two-channels.md +167 -0
- package/docs/guides/commit-state-and-entry.md +114 -0
- package/docs/guides/compact-a-run.md +134 -0
- package/docs/guides/fold-a-projection.md +106 -0
- package/docs/guides/read-a-run.md +139 -0
- package/docs/guides/redact-log-output.md +94 -0
- package/docs/guides/testing.md +124 -0
- package/docs/guides/write-lifecycle-events.md +110 -0
- package/docs/installation.md +133 -0
- package/docs/quickstart.md +143 -0
- package/docs/troubleshooting.md +214 -0
- package/package.json +263 -3
- package/src/CallFact.ts +117 -0
- package/src/Consensus.ts +683 -0
- package/src/EngineEvent.ts +823 -0
- package/src/ExecutionFact.ts +433 -0
- package/src/Journal.ts +688 -0
- package/src/JournalEvent.ts +654 -0
- package/src/JournalGeneration.ts +77 -0
- package/src/JournalMetrics.ts +89 -0
- package/src/Migrations.ts +62 -0
- package/src/OwnerId.ts +42 -0
- package/src/Projection.ts +31 -0
- package/src/RedactedLogger.ts +483 -0
- package/src/Redaction.ts +1784 -0
- package/src/SqlConsensus.ts +344 -0
- package/src/SqlJournal.ts +2732 -0
- package/src/StepFact.ts +69 -0
- package/src/index.ts +109 -0
- package/src/internal/JournalInternalFault.ts +40 -0
- package/src/migrations/0001_initial.ts +41 -0
- package/src/migrations/0002_checkpoints.ts +46 -0
- package/src/migrations/0003_startup_index.ts +19 -0
- package/src/migrations/0004_dedup.ts +43 -0
- package/src/migrations/0005_run_event_type.ts +19 -0
- package/src/migrations/0006_consensus.ts +83 -0
- package/src/test/Notifying.ts +101 -0
- package/src/test/TestJournal.ts +52 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable journal services: the immutable event history and nothing else.
|
|
3
|
+
*
|
|
4
|
+
* Run and attempt state live in `@smthrs/run-store`, sealed step results in
|
|
5
|
+
* `@smthrs/step-cache`, and the durable deferred/clock tables in
|
|
6
|
+
* `@smthrs/engine-store`.
|
|
7
|
+
*
|
|
8
|
+
* This entry point is browser-bundleable: every service here is written
|
|
9
|
+
* against the driver-neutral `@smthrs/database` contract. The test doubles are
|
|
10
|
+
* kept out of it and live under explicit subpaths; of the two, only
|
|
11
|
+
* `TestJournal` binds a Node SQLite database:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Journal, SqlJournal } from "@smthrs/journal"
|
|
15
|
+
* import * as TestJournal from "@smthrs/journal/test/TestJournal"
|
|
16
|
+
* import * as Notifying from "@smthrs/journal/test/Notifying"
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* @category events
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
export * as JournalEvent from "./JournalEvent.ts";
|
|
26
|
+
/**
|
|
27
|
+
* @category events
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
export * as EngineEvent from "./EngineEvent.ts";
|
|
31
|
+
/**
|
|
32
|
+
* @category events
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
*/
|
|
35
|
+
export * as ExecutionFact from "./ExecutionFact.ts";
|
|
36
|
+
/**
|
|
37
|
+
* @category events
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
*/
|
|
40
|
+
export * as CallFact from "./CallFact.ts";
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
*/
|
|
44
|
+
export * as StepFact from "./StepFact.ts";
|
|
45
|
+
/**
|
|
46
|
+
* @category services
|
|
47
|
+
* @since 0.1.0
|
|
48
|
+
*/
|
|
49
|
+
export * as Journal from "./Journal.ts";
|
|
50
|
+
/**
|
|
51
|
+
* @category layers
|
|
52
|
+
* @since 0.1.0
|
|
53
|
+
*/
|
|
54
|
+
export * as SqlJournal from "./SqlJournal.ts";
|
|
55
|
+
/**
|
|
56
|
+
* @category services
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
*/
|
|
59
|
+
export * as Consensus from "./Consensus.ts";
|
|
60
|
+
/**
|
|
61
|
+
* @category layers
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
*/
|
|
64
|
+
export * as SqlConsensus from "./SqlConsensus.ts";
|
|
65
|
+
/**
|
|
66
|
+
* @category metrics
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export * as JournalMetrics from "./JournalMetrics.ts";
|
|
70
|
+
/**
|
|
71
|
+
* @category redaction
|
|
72
|
+
* @since 0.1.0
|
|
73
|
+
*/
|
|
74
|
+
export * as Redaction from "./Redaction.ts";
|
|
75
|
+
/**
|
|
76
|
+
* @category redaction
|
|
77
|
+
* @since 0.1.0
|
|
78
|
+
*/
|
|
79
|
+
export * as RedactedLogger from "./RedactedLogger.ts";
|
|
80
|
+
/**
|
|
81
|
+
* @category projections
|
|
82
|
+
* @since 0.1.0
|
|
83
|
+
*/
|
|
84
|
+
export * as Projection from "./Projection.ts";
|
|
85
|
+
/**
|
|
86
|
+
* @category models
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
*/
|
|
89
|
+
export * as OwnerId from "./OwnerId.ts";
|
|
90
|
+
/**
|
|
91
|
+
* @category migrations
|
|
92
|
+
* @since 0.1.0
|
|
93
|
+
*/
|
|
94
|
+
export * as Migrations from "./Migrations.ts";
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;GAGG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;GAGG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;GAGG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;GAGG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;GAGG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;GAGG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable journal services: the immutable event history and nothing else.
|
|
3
|
+
*
|
|
4
|
+
* Run and attempt state live in `@smthrs/run-store`, sealed step results in
|
|
5
|
+
* `@smthrs/step-cache`, and the durable deferred/clock tables in
|
|
6
|
+
* `@smthrs/engine-store`.
|
|
7
|
+
*
|
|
8
|
+
* This entry point is browser-bundleable: every service here is written
|
|
9
|
+
* against the driver-neutral `@smthrs/database` contract. The test doubles are
|
|
10
|
+
* kept out of it and live under explicit subpaths; of the two, only
|
|
11
|
+
* `TestJournal` binds a Node SQLite database:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Journal, SqlJournal } from "@smthrs/journal"
|
|
15
|
+
* import * as TestJournal from "@smthrs/journal/test/TestJournal"
|
|
16
|
+
* import * as Notifying from "@smthrs/journal/test/Notifying"
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* @category events
|
|
23
|
+
* @since 0.1.0
|
|
24
|
+
*/
|
|
25
|
+
export * as JournalEvent from "./JournalEvent.js";
|
|
26
|
+
/**
|
|
27
|
+
* @category events
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
export * as EngineEvent from "./EngineEvent.js";
|
|
31
|
+
/**
|
|
32
|
+
* @category events
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
*/
|
|
35
|
+
export * as ExecutionFact from "./ExecutionFact.js";
|
|
36
|
+
/**
|
|
37
|
+
* @category events
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
*/
|
|
40
|
+
export * as CallFact from "./CallFact.js";
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
*/
|
|
44
|
+
export * as StepFact from "./StepFact.js";
|
|
45
|
+
/**
|
|
46
|
+
* @category services
|
|
47
|
+
* @since 0.1.0
|
|
48
|
+
*/
|
|
49
|
+
export * as Journal from "./Journal.js";
|
|
50
|
+
/**
|
|
51
|
+
* @category layers
|
|
52
|
+
* @since 0.1.0
|
|
53
|
+
*/
|
|
54
|
+
export * as SqlJournal from "./SqlJournal.js";
|
|
55
|
+
/**
|
|
56
|
+
* @category services
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
*/
|
|
59
|
+
export * as Consensus from "./Consensus.js";
|
|
60
|
+
/**
|
|
61
|
+
* @category layers
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
*/
|
|
64
|
+
export * as SqlConsensus from "./SqlConsensus.js";
|
|
65
|
+
/**
|
|
66
|
+
* @category metrics
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export * as JournalMetrics from "./JournalMetrics.js";
|
|
70
|
+
/**
|
|
71
|
+
* @category redaction
|
|
72
|
+
* @since 0.1.0
|
|
73
|
+
*/
|
|
74
|
+
export * as Redaction from "./Redaction.js";
|
|
75
|
+
/**
|
|
76
|
+
* @category redaction
|
|
77
|
+
* @since 0.1.0
|
|
78
|
+
*/
|
|
79
|
+
export * as RedactedLogger from "./RedactedLogger.js";
|
|
80
|
+
/**
|
|
81
|
+
* @category projections
|
|
82
|
+
* @since 0.1.0
|
|
83
|
+
*/
|
|
84
|
+
export * as Projection from "./Projection.js";
|
|
85
|
+
/**
|
|
86
|
+
* @category models
|
|
87
|
+
* @since 0.1.0
|
|
88
|
+
*/
|
|
89
|
+
export * as OwnerId from "./OwnerId.js";
|
|
90
|
+
/**
|
|
91
|
+
* @category migrations
|
|
92
|
+
* @since 0.1.0
|
|
93
|
+
*/
|
|
94
|
+
export * as Migrations from "./Migrations.js";
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;GAGG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;GAGG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;GAGG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;GAGG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;GAGG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;GAGG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA","sourcesContent":["/**\n * Durable journal services: the immutable event history and nothing else.\n *\n * Run and attempt state live in `@smthrs/run-store`, sealed step results in\n * `@smthrs/step-cache`, and the durable deferred/clock tables in\n * `@smthrs/engine-store`.\n *\n * This entry point is browser-bundleable: every service here is written\n * against the driver-neutral `@smthrs/database` contract. The test doubles are\n * kept out of it and live under explicit subpaths; of the two, only\n * `TestJournal` binds a Node SQLite database:\n *\n * ```ts\n * import { Journal, SqlJournal } from \"@smthrs/journal\"\n * import * as TestJournal from \"@smthrs/journal/test/TestJournal\"\n * import * as Notifying from \"@smthrs/journal/test/Notifying\"\n * ```\n *\n * @since 0.1.0\n */\n\n/**\n * @category events\n * @since 0.1.0\n */\nexport * as JournalEvent from \"./JournalEvent.ts\"\n\n/**\n * @category events\n * @since 1.0.0\n */\nexport * as EngineEvent from \"./EngineEvent.ts\"\n\n/**\n * @category events\n * @since 1.0.0\n */\nexport * as ExecutionFact from \"./ExecutionFact.ts\"\n\n/**\n * @category events\n * @since 1.0.0\n */\nexport * as CallFact from \"./CallFact.ts\"\n\n/**\n * @since 1.0.0\n */\nexport * as StepFact from \"./StepFact.ts\"\n\n/**\n * @category services\n * @since 0.1.0\n */\nexport * as Journal from \"./Journal.ts\"\n\n/**\n * @category layers\n * @since 0.1.0\n */\nexport * as SqlJournal from \"./SqlJournal.ts\"\n\n/**\n * @category services\n * @since 1.0.0\n */\nexport * as Consensus from \"./Consensus.ts\"\n\n/**\n * @category layers\n * @since 1.0.0\n */\nexport * as SqlConsensus from \"./SqlConsensus.ts\"\n\n/**\n * @category metrics\n * @since 0.1.0\n */\nexport * as JournalMetrics from \"./JournalMetrics.ts\"\n\n/**\n * @category redaction\n * @since 0.1.0\n */\nexport * as Redaction from \"./Redaction.ts\"\n\n/**\n * @category redaction\n * @since 0.1.0\n */\nexport * as RedactedLogger from \"./RedactedLogger.ts\"\n\n/**\n * @category projections\n * @since 0.1.0\n */\nexport * as Projection from \"./Projection.ts\"\n\n/**\n * @category models\n * @since 0.1.0\n */\nexport * as OwnerId from \"./OwnerId.ts\"\n\n/**\n * @category migrations\n * @since 0.1.0\n */\nexport * as Migrations from \"./Migrations.ts\"\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Faults of the journal's own background maintenance. They are logged and
|
|
3
|
+
* damped, never surfaced to a caller's write, so a log reader classifies one by
|
|
4
|
+
* `_tag` and `code` instead of a message.
|
|
5
|
+
*
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Schema from "effect/Schema";
|
|
9
|
+
/**
|
|
10
|
+
* Which background step refused.
|
|
11
|
+
*
|
|
12
|
+
* @category models
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export declare const JournalInternalFaultCode: Schema.Literals<readonly ["compaction_capture_timeout"]>;
|
|
16
|
+
/**
|
|
17
|
+
* The stable code of a {@link JournalInternalFault}.
|
|
18
|
+
*
|
|
19
|
+
* @category models
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export type JournalInternalFaultCode = typeof JournalInternalFaultCode.Type;
|
|
23
|
+
declare const JournalInternalFault_base: Schema.Class<JournalInternalFault, Schema.TaggedStruct<"@smthrs/journal/JournalInternalFault", {
|
|
24
|
+
readonly code: Schema.Literals<readonly ["compaction_capture_timeout"]>;
|
|
25
|
+
readonly message: Schema.String;
|
|
26
|
+
}>, import("effect/Cause").YieldableError>;
|
|
27
|
+
/**
|
|
28
|
+
* A post-commit maintenance step that refused.
|
|
29
|
+
*
|
|
30
|
+
* @category errors
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
export declare class JournalInternalFault extends JournalInternalFault_base {
|
|
34
|
+
readonly name = "JournalInternalFault";
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=JournalInternalFault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JournalInternalFault.d.ts","sourceRoot":"","sources":["../../../src/internal/JournalInternalFault.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,0DAAkD,CAAA;AAEvF;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAA;;;;;AAE3E;;;;;GAKG;AACH,qBAAa,oBACX,SAAQ,yBAGN;IAEF,SAAkB,IAAI,0BAAyB;CAChD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Faults of the journal's own background maintenance. They are logged and
|
|
3
|
+
* damped, never surfaced to a caller's write, so a log reader classifies one by
|
|
4
|
+
* `_tag` and `code` instead of a message.
|
|
5
|
+
*
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Schema from "effect/Schema";
|
|
9
|
+
/**
|
|
10
|
+
* Which background step refused.
|
|
11
|
+
*
|
|
12
|
+
* @category models
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
export const JournalInternalFaultCode = Schema.Literals(["compaction_capture_timeout"]);
|
|
16
|
+
/**
|
|
17
|
+
* A post-commit maintenance step that refused.
|
|
18
|
+
*
|
|
19
|
+
* @category errors
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
*/
|
|
22
|
+
export class JournalInternalFault extends Schema.TaggedError()("@smthrs/journal/JournalInternalFault", {
|
|
23
|
+
code: JournalInternalFaultCode,
|
|
24
|
+
message: Schema.String
|
|
25
|
+
}) {
|
|
26
|
+
name = "JournalInternalFault";
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=JournalInternalFault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JournalInternalFault.js","sourceRoot":"","sources":["../../../src/internal/JournalInternalFault.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;AAUvF;;;;;GAKG;AACH,MAAM,OAAO,oBACX,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sCAAsC,EAAE;IACzF,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;IAEgB,IAAI,GAAG,sBAAsB,CAAA;CAChD","sourcesContent":["/**\n * Faults of the journal's own background maintenance. They are logged and\n * damped, never surfaced to a caller's write, so a log reader classifies one by\n * `_tag` and `code` instead of a message.\n *\n * @since 1.0.0\n */\n\nimport * as Schema from \"effect/Schema\"\n\n/**\n * Which background step refused.\n *\n * @category models\n * @since 1.0.0\n */\nexport const JournalInternalFaultCode = Schema.Literals([\"compaction_capture_timeout\"])\n\n/**\n * The stable code of a {@link JournalInternalFault}.\n *\n * @category models\n * @since 1.0.0\n */\nexport type JournalInternalFaultCode = typeof JournalInternalFaultCode.Type\n\n/**\n * A post-commit maintenance step that refused.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class JournalInternalFault\n extends Schema.TaggedError<JournalInternalFault>()(\"@smthrs/journal/JournalInternalFault\", {\n code: JournalInternalFaultCode,\n message: Schema.String\n })\n{\n override readonly name = \"JournalInternalFault\"\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initial durable journal event schema.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Creates the `flows_journal_events` table and its event-type index.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const initial: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
15
|
+
//# sourceMappingURL=0001_initial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0001_initial.d.ts","sourceRoot":"","sources":["../../../src/migrations/0001_initial.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAwBpE,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initial durable journal event schema.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Dialect from "@smthrs/database/Dialect";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
9
|
+
/**
|
|
10
|
+
* Creates the `flows_journal_events` table and its event-type index.
|
|
11
|
+
*
|
|
12
|
+
* @category migrations
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
*/
|
|
15
|
+
export const initial = Effect.gen(function* () {
|
|
16
|
+
const sql = yield* SqlClient.SqlClient;
|
|
17
|
+
yield* sql `CREATE TABLE flows_journal_events (
|
|
18
|
+
run_id TEXT NOT NULL CHECK (length(run_id) > 0),
|
|
19
|
+
seq ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `seq`)} AND seq >= 0 AND seq <= 9007199254740991),
|
|
20
|
+
event_id TEXT NOT NULL UNIQUE CHECK (length(event_id) > 0),
|
|
21
|
+
source_id TEXT NOT NULL CHECK (length(source_id) > 0),
|
|
22
|
+
source_seq ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `source_seq`)} AND source_seq >= 0 AND source_seq <= 9007199254740991),
|
|
23
|
+
emitted_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `emitted_at_ms`)} AND emitted_at_ms >= 0 AND emitted_at_ms <= 9007199254740991),
|
|
24
|
+
event_type TEXT NOT NULL CHECK (length(event_type) > 0),
|
|
25
|
+
payload_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql `payload_json`)}),
|
|
26
|
+
meta_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql `meta_json`)}),
|
|
27
|
+
PRIMARY KEY (run_id, seq),
|
|
28
|
+
UNIQUE (run_id, source_id, source_seq)
|
|
29
|
+
)`;
|
|
30
|
+
yield* sql `CREATE INDEX flows_journal_events_event_type_idx ON flows_journal_events (event_type)`;
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=0001_initial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0001_initial.js","sourceRoot":"","sources":["../../../src/migrations/0001_initial.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAsD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IAEtC,KAAK,CAAC,CAAC,GAAG,CAAA;;UAEF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,KAAK,CACjC;;;iBAGe,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBACjC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,YAAY,CACxC;oBACkB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBACpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,eAAe,CAC3C;;wCAEsC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,cAAc,CAAC;qCAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,WAAW,CAAC;;;IAGvE,CAAA;IAEF,KAAK,CAAC,CAAC,GAAG,CAAA,uFAAuF,CAAA;AACnG,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Initial durable journal event schema.\n *\n * @since 0.1.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Creates the `flows_journal_events` table and its event-type index.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const initial: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n\n yield* sql`CREATE TABLE flows_journal_events (\n run_id TEXT NOT NULL CHECK (length(run_id) > 0),\n seq ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`seq`)\n } AND seq >= 0 AND seq <= 9007199254740991),\n event_id TEXT NOT NULL UNIQUE CHECK (length(event_id) > 0),\n source_id TEXT NOT NULL CHECK (length(source_id) > 0),\n source_seq ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`source_seq`)\n } AND source_seq >= 0 AND source_seq <= 9007199254740991),\n emitted_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`emitted_at_ms`)\n } AND emitted_at_ms >= 0 AND emitted_at_ms <= 9007199254740991),\n event_type TEXT NOT NULL CHECK (length(event_type) > 0),\n payload_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`payload_json`)}),\n meta_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`meta_json`)}),\n PRIMARY KEY (run_id, seq),\n UNIQUE (run_id, source_id, source_seq)\n )`\n\n yield* sql`CREATE INDEX flows_journal_events_event_type_idx ON flows_journal_events (event_type)`\n})\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable journal checkpoints and the compaction floor.
|
|
3
|
+
*
|
|
4
|
+
* One row per `(run_id, seq)`: the caller-captured state that replays the run
|
|
5
|
+
* from `seq` without the entries before it. `compacted_at_ms` is NULL until a
|
|
6
|
+
* compaction has truncated the entries strictly below `seq`; the largest
|
|
7
|
+
* compacted `seq` per run is the run's compaction floor, and reads whose
|
|
8
|
+
* cursor starts below it fail with `compacted` instead of returning a
|
|
9
|
+
* silently shortened history.
|
|
10
|
+
*
|
|
11
|
+
* Prior art: Temporal's mutable state is exactly this shape, a durable
|
|
12
|
+
* snapshot pinned to a history offset (`last_first_event_id` in
|
|
13
|
+
* `reference/temporal/proto/internal/temporal/server/api/persistence/v1/executions.proto`),
|
|
14
|
+
* with history below it never replayed.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
import * as Effect from "effect/Effect";
|
|
19
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
20
|
+
/**
|
|
21
|
+
* Creates the `flows_journal_checkpoints` table.
|
|
22
|
+
*
|
|
23
|
+
* @category migrations
|
|
24
|
+
* @since 0.1.0
|
|
25
|
+
*/
|
|
26
|
+
export declare const checkpoints: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
27
|
+
//# sourceMappingURL=0002_checkpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0002_checkpoints.d.ts","sourceRoot":"","sources":["../../../src/migrations/0002_checkpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAiBxE,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable journal checkpoints and the compaction floor.
|
|
3
|
+
*
|
|
4
|
+
* One row per `(run_id, seq)`: the caller-captured state that replays the run
|
|
5
|
+
* from `seq` without the entries before it. `compacted_at_ms` is NULL until a
|
|
6
|
+
* compaction has truncated the entries strictly below `seq`; the largest
|
|
7
|
+
* compacted `seq` per run is the run's compaction floor, and reads whose
|
|
8
|
+
* cursor starts below it fail with `compacted` instead of returning a
|
|
9
|
+
* silently shortened history.
|
|
10
|
+
*
|
|
11
|
+
* Prior art: Temporal's mutable state is exactly this shape, a durable
|
|
12
|
+
* snapshot pinned to a history offset (`last_first_event_id` in
|
|
13
|
+
* `reference/temporal/proto/internal/temporal/server/api/persistence/v1/executions.proto`),
|
|
14
|
+
* with history below it never replayed.
|
|
15
|
+
*
|
|
16
|
+
* @since 0.1.0
|
|
17
|
+
*/
|
|
18
|
+
import * as Dialect from "@smthrs/database/Dialect";
|
|
19
|
+
import * as Effect from "effect/Effect";
|
|
20
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
21
|
+
/**
|
|
22
|
+
* Creates the `flows_journal_checkpoints` table.
|
|
23
|
+
*
|
|
24
|
+
* @category migrations
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
*/
|
|
27
|
+
export const checkpoints = Effect.gen(function* () {
|
|
28
|
+
const sql = yield* SqlClient.SqlClient;
|
|
29
|
+
yield* sql `CREATE TABLE flows_journal_checkpoints (
|
|
30
|
+
run_id TEXT NOT NULL CHECK (length(run_id) > 0),
|
|
31
|
+
seq ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `seq`)} AND seq >= 0 AND seq <= 9007199254740991),
|
|
32
|
+
state_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql `state_json`)}),
|
|
33
|
+
created_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `created_at_ms`)} AND created_at_ms >= 0 AND created_at_ms <= 9007199254740991),
|
|
34
|
+
compacted_at_ms ${Dialect.integer(sql)} CHECK (compacted_at_ms IS NULL OR (${Dialect.isInteger(sql, sql `compacted_at_ms`)} AND compacted_at_ms >= 0 AND compacted_at_ms <= 9007199254740991)),
|
|
35
|
+
PRIMARY KEY (run_id, seq)
|
|
36
|
+
)`;
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=0002_checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0002_checkpoints.js","sourceRoot":"","sources":["../../../src/migrations/0002_checkpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAsD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IAEtC,KAAK,CAAC,CAAC,GAAG,CAAA;;UAEF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,KAAK,CACjC;sCACoC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,YAAY,CAAC;oBACzD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBACpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,eAAe,CAC3C;sBACoB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,uCACtC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,iBAAiB,CAC7C;;IAEE,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Durable journal checkpoints and the compaction floor.\n *\n * One row per `(run_id, seq)`: the caller-captured state that replays the run\n * from `seq` without the entries before it. `compacted_at_ms` is NULL until a\n * compaction has truncated the entries strictly below `seq`; the largest\n * compacted `seq` per run is the run's compaction floor, and reads whose\n * cursor starts below it fail with `compacted` instead of returning a\n * silently shortened history.\n *\n * Prior art: Temporal's mutable state is exactly this shape, a durable\n * snapshot pinned to a history offset (`last_first_event_id` in\n * `reference/temporal/proto/internal/temporal/server/api/persistence/v1/executions.proto`),\n * with history below it never replayed.\n *\n * @since 0.1.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Creates the `flows_journal_checkpoints` table.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const checkpoints: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n\n yield* sql`CREATE TABLE flows_journal_checkpoints (\n run_id TEXT NOT NULL CHECK (length(run_id) > 0),\n seq ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`seq`)\n } AND seq >= 0 AND seq <= 9007199254740991),\n state_json TEXT NOT NULL CHECK (${Dialect.jsonValid(sql, sql`state_json`)}),\n created_at_ms ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`created_at_ms`)\n } AND created_at_ms >= 0 AND created_at_ms <= 9007199254740991),\n compacted_at_ms ${Dialect.integer(sql)} CHECK (compacted_at_ms IS NULL OR (${\n Dialect.isInteger(sql, sql`compacted_at_ms`)\n } AND compacted_at_ms >= 0 AND compacted_at_ms <= 9007199254740991)),\n PRIMARY KEY (run_id, seq)\n )`\n})\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index for the bounded journal source-event startup window.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Preserves deterministic timestamp/run/sequence ordering without sorting the retained history.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const startupIndex: Effect.Effect<void, import("effect/unstable/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
15
|
+
//# sourceMappingURL=0003_startup_index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0003_startup_index.d.ts","sourceRoot":"","sources":["../../../src/migrations/0003_startup_index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,2FAGvB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index for the bounded journal source-event startup window.
|
|
3
|
+
*
|
|
4
|
+
* @since 0.1.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Preserves deterministic timestamp/run/sequence ordering without sorting the retained history.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
export const startupIndex = Effect.gen(function* () {
|
|
15
|
+
const sql = yield* SqlClient.SqlClient;
|
|
16
|
+
yield* sql `CREATE INDEX flows_journal_events_startup_idx ON flows_journal_events (emitted_at_ms DESC, run_id DESC, seq DESC)`;
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=0003_startup_index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0003_startup_index.js","sourceRoot":"","sources":["../../../src/migrations/0003_startup_index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IACtC,KAAK,CAAC,CAAC,GAAG,CAAA,mHAAmH,CAAA;AAC/H,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Index for the bounded journal source-event startup window.\n *\n * @since 0.1.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Preserves deterministic timestamp/run/sequence ordering without sorting the retained history.\n *\n * @category migrations\n * @since 0.1.0\n */\nexport const startupIndex = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n yield* sql`CREATE INDEX flows_journal_events_startup_idx ON flows_journal_events (emitted_at_ms DESC, run_id DESC, seq DESC)`\n})\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Producer identities retained when compaction deletes event payloads.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0-rc.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Creates the durable compacted-identity index.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 1.0.0-rc.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const dedup: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
15
|
+
//# sourceMappingURL=0004_dedup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0004_dedup.d.ts","sourceRoot":"","sources":["../../../src/migrations/0004_dedup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CA0BlE,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Producer identities retained when compaction deletes event payloads.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0-rc.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Dialect from "@smthrs/database/Dialect";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
9
|
+
/**
|
|
10
|
+
* Creates the durable compacted-identity index.
|
|
11
|
+
*
|
|
12
|
+
* @category migrations
|
|
13
|
+
* @since 1.0.0-rc.0
|
|
14
|
+
*/
|
|
15
|
+
export const dedup = Effect.gen(function* () {
|
|
16
|
+
const sql = yield* SqlClient.SqlClient;
|
|
17
|
+
yield* sql `CREATE TABLE flows_journal_dedup (
|
|
18
|
+
run_id TEXT NOT NULL CHECK (length(run_id) > 0),
|
|
19
|
+
source_id TEXT NOT NULL CHECK (length(source_id) > 0),
|
|
20
|
+
source_seq ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `source_seq`)} AND source_seq >= 0 AND source_seq <= 9007199254740991),
|
|
21
|
+
event_id TEXT NOT NULL UNIQUE CHECK (length(event_id) > 0),
|
|
22
|
+
seq ${Dialect.integer(sql)} NOT NULL CHECK (${Dialect.isInteger(sql, sql `seq`)} AND seq >= 0 AND seq <= 9007199254740991),
|
|
23
|
+
content_hash TEXT NOT NULL CHECK (length(content_hash) = 64),
|
|
24
|
+
PRIMARY KEY (run_id, source_id, source_seq)
|
|
25
|
+
)`;
|
|
26
|
+
// Enforce the same identity constraints after their event rows are removed.
|
|
27
|
+
// RAISE(IGNORE) leaves INSERT ... RETURNING empty, so the existing duplicate
|
|
28
|
+
// path checks the owner fence and then resolves the original receipt.
|
|
29
|
+
yield* Dialect.trigger(sql, {
|
|
30
|
+
name: "flows_journal_dedup_insert_guard",
|
|
31
|
+
table: "flows_journal_events",
|
|
32
|
+
event: "BEFORE INSERT",
|
|
33
|
+
when: `EXISTS (SELECT 1 FROM flows_journal_dedup WHERE event_id = NEW.event_id
|
|
34
|
+
OR (run_id = NEW.run_id AND source_id = NEW.source_id AND source_seq = NEW.source_seq))`,
|
|
35
|
+
ignore: true
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=0004_dedup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0004_dedup.js","sourceRoot":"","sources":["../../../src/migrations/0004_dedup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAsD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IACtC,KAAK,CAAC,CAAC,GAAG,CAAA;;;iBAGK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBACjC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,YAAY,CACxC;;UAEQ,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA,KAAK,CACjC;;;IAGE,CAAA;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE;8FACoF;QAC1F,MAAM,EAAE,IAAI;KACb,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Producer identities retained when compaction deletes event payloads.\n *\n * @since 1.0.0-rc.0\n */\n\nimport * as Dialect from \"@smthrs/database/Dialect\"\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Creates the durable compacted-identity index.\n *\n * @category migrations\n * @since 1.0.0-rc.0\n */\nexport const dedup: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n yield* sql`CREATE TABLE flows_journal_dedup (\n run_id TEXT NOT NULL CHECK (length(run_id) > 0),\n source_id TEXT NOT NULL CHECK (length(source_id) > 0),\n source_seq ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`source_seq`)\n } AND source_seq >= 0 AND source_seq <= 9007199254740991),\n event_id TEXT NOT NULL UNIQUE CHECK (length(event_id) > 0),\n seq ${Dialect.integer(sql)} NOT NULL CHECK (${\n Dialect.isInteger(sql, sql`seq`)\n } AND seq >= 0 AND seq <= 9007199254740991),\n content_hash TEXT NOT NULL CHECK (length(content_hash) = 64),\n PRIMARY KEY (run_id, source_id, source_seq)\n )`\n // Enforce the same identity constraints after their event rows are removed.\n // RAISE(IGNORE) leaves INSERT ... RETURNING empty, so the existing duplicate\n // path checks the owner fence and then resolves the original receipt.\n yield* Dialect.trigger(sql, {\n name: \"flows_journal_dedup_insert_guard\",\n table: \"flows_journal_events\",\n event: \"BEFORE INSERT\",\n when: `EXISTS (SELECT 1 FROM flows_journal_dedup WHERE event_id = NEW.event_id\n OR (run_id = NEW.run_id AND source_id = NEW.source_id AND source_seq = NEW.source_seq))`,\n ignore: true\n })\n})\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indexed exact event-type reads within a run.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Keeps filtered cursor reads proportional to the matching entries.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export declare const runEventType: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
15
|
+
//# sourceMappingURL=0005_run_event_type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0005_run_event_type.d.ts","sourceRoot":"","sources":["../../../src/migrations/0005_run_event_type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAGzE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indexed exact event-type reads within a run.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
8
|
+
/**
|
|
9
|
+
* Keeps filtered cursor reads proportional to the matching entries.
|
|
10
|
+
*
|
|
11
|
+
* @category migrations
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export const runEventType = Effect.gen(function* () {
|
|
15
|
+
const sql = yield* SqlClient.SqlClient;
|
|
16
|
+
yield* sql `CREATE INDEX flows_journal_events_run_event_type_idx ON flows_journal_events (run_id, event_type, seq)`;
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=0005_run_event_type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0005_run_event_type.js","sourceRoot":"","sources":["../../../src/migrations/0005_run_event_type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IACtC,KAAK,CAAC,CAAC,GAAG,CAAA,wGAAwG,CAAA;AACpH,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Indexed exact event-type reads within a run.\n *\n * @since 1.0.0\n */\n\nimport * as Effect from \"effect/Effect\"\nimport * as SqlClient from \"effect/unstable/sql/SqlClient\"\n\n/**\n * Keeps filtered cursor reads proportional to the matching entries.\n *\n * @category migrations\n * @since 1.0.0\n */\nexport const runEventType: Effect.Effect<void, unknown, SqlClient.SqlClient> = Effect.gen(function*() {\n const sql = yield* SqlClient.SqlClient\n yield* sql`CREATE INDEX flows_journal_events_run_event_type_idx ON flows_journal_events (run_id, event_type, seq)`\n})\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `SqlConsensus` lease table.
|
|
3
|
+
*
|
|
4
|
+
* This is the private schema of the default consensus strategy: the owner
|
|
5
|
+
* tuple, the two-phase claim columns, and the grant timestamp relocated from
|
|
6
|
+
* `flows_runs`. Lease rows are strategy evidence, never history: heartbeats
|
|
7
|
+
* and lease state never enter the journal.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
13
|
+
/**
|
|
14
|
+
* Creates the `flows_consensus_leases` table and backfills a lease for every
|
|
15
|
+
* running or claimed run when `flows_runs` is already present, so an owner
|
|
16
|
+
* that was driving a run before this migration keeps its fence afterwards.
|
|
17
|
+
*
|
|
18
|
+
* @category migrations
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
export declare const consensus: Effect.Effect<void, unknown, SqlClient.SqlClient>;
|
|
22
|
+
//# sourceMappingURL=0006_consensus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0006_consensus.d.ts","sourceRoot":"","sources":["../../../src/migrations/0006_consensus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CA2DtE,CAAA"}
|