@sekiban/dcb-runtime 0.2.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.
Files changed (153) hide show
  1. package/LICENSE +86 -0
  2. package/README.md +13 -0
  3. package/dist/allocator/AllocatorDurableObject.d.ts +36 -0
  4. package/dist/allocator/AllocatorDurableObject.js +658 -0
  5. package/dist/allocator/IssuanceLedger.d.ts +188 -0
  6. package/dist/allocator/IssuanceLedger.js +608 -0
  7. package/dist/allocator/IssuanceReconciler.d.ts +41 -0
  8. package/dist/allocator/IssuanceReconciler.js +191 -0
  9. package/dist/allocator/OrderClock.d.ts +41 -0
  10. package/dist/allocator/OrderClock.js +92 -0
  11. package/dist/allocator/SortableUniqueId.d.ts +46 -0
  12. package/dist/allocator/SortableUniqueId.js +156 -0
  13. package/dist/allocator/types.d.ts +52 -0
  14. package/dist/allocator/types.js +1 -0
  15. package/dist/bootstrap/BootstrapCoordinatorDurableObject.d.ts +28 -0
  16. package/dist/bootstrap/BootstrapCoordinatorDurableObject.js +357 -0
  17. package/dist/bootstrap/BootstrapStoreAdapter.d.ts +51 -0
  18. package/dist/bootstrap/BootstrapStoreAdapter.js +162 -0
  19. package/dist/bootstrap/OperatorBootstrap.d.ts +20 -0
  20. package/dist/bootstrap/OperatorBootstrap.js +104 -0
  21. package/dist/bootstrap/manifest.d.ts +9 -0
  22. package/dist/bootstrap/manifest.js +115 -0
  23. package/dist/bootstrap/types.d.ts +75 -0
  24. package/dist/bootstrap/types.js +1 -0
  25. package/dist/cli/OperatorRepairCli.d.ts +11 -0
  26. package/dist/cli/OperatorRepairCli.js +108 -0
  27. package/dist/cloudflare.d.ts +164 -0
  28. package/dist/cloudflare.js +19487 -0
  29. package/dist/commit/CommitWorker.d.ts +101 -0
  30. package/dist/commit/CommitWorker.js +921 -0
  31. package/dist/commit/types.d.ts +25 -0
  32. package/dist/commit/types.js +13 -0
  33. package/dist/completeness/GlobalCompletenessReconciler.d.ts +77 -0
  34. package/dist/completeness/GlobalCompletenessReconciler.js +572 -0
  35. package/dist/completeness/types.d.ts +85 -0
  36. package/dist/completeness/types.js +6 -0
  37. package/dist/composition.d.ts +123 -0
  38. package/dist/composition.js +237 -0
  39. package/dist/cosmos.d.ts +11 -0
  40. package/dist/cosmos.js +1411 -0
  41. package/dist/d1-mv.d.ts +8 -0
  42. package/dist/d1-mv.js +2001 -0
  43. package/dist/d1.d.ts +16 -0
  44. package/dist/d1.js +3418 -0
  45. package/dist/diagnostics/G60DurableHop.d.ts +99 -0
  46. package/dist/diagnostics/G60DurableHop.js +248 -0
  47. package/dist/diagnostics/G65Admission.d.ts +23 -0
  48. package/dist/diagnostics/G65Admission.js +43 -0
  49. package/dist/diagnostics/G65DirectRing.d.ts +33 -0
  50. package/dist/diagnostics/G65DirectRing.js +85 -0
  51. package/dist/diagnostics/G69AdmissionAttempt.d.ts +43 -0
  52. package/dist/diagnostics/G69AdmissionAttempt.js +22 -0
  53. package/dist/downstream/DeliveryCore.d.ts +127 -0
  54. package/dist/downstream/DeliveryCore.js +304 -0
  55. package/dist/downstream/Doorbell.d.ts +43 -0
  56. package/dist/downstream/Doorbell.js +137 -0
  57. package/dist/downstream/DownstreamAdapter.d.ts +52 -0
  58. package/dist/downstream/DownstreamAdapter.js +299 -0
  59. package/dist/downstream/ExclusionLookup.d.ts +36 -0
  60. package/dist/downstream/ExclusionLookup.js +50 -0
  61. package/dist/downstream/InconsistencyDetector.d.ts +27 -0
  62. package/dist/downstream/InconsistencyDetector.js +82 -0
  63. package/dist/downstream/OutboxDrain.d.ts +35 -0
  64. package/dist/downstream/OutboxDrain.js +126 -0
  65. package/dist/downstream/types.d.ts +77 -0
  66. package/dist/downstream/types.js +64 -0
  67. package/dist/eventIdentity.d.ts +30 -0
  68. package/dist/eventIdentity.js +49 -0
  69. package/dist/eventRecord.d.ts +26 -0
  70. package/dist/eventRecord.js +53 -0
  71. package/dist/g42-probe.d.ts +9 -0
  72. package/dist/g42-probe.js +9 -0
  73. package/dist/http/SerializedQueryWorker.d.ts +58 -0
  74. package/dist/http/SerializedQueryWorker.js +497 -0
  75. package/dist/http/commitResponse.d.ts +46 -0
  76. package/dist/http/commitResponse.js +80 -0
  77. package/dist/http/testServiceId.d.ts +17 -0
  78. package/dist/http/testServiceId.js +14 -0
  79. package/dist/index.d.ts +112 -0
  80. package/dist/index.js +19926 -0
  81. package/dist/journal/JournalDurableObject.d.ts +30 -0
  82. package/dist/journal/JournalDurableObject.js +481 -0
  83. package/dist/journal/JournalFirstTouchProbe.d.ts +190 -0
  84. package/dist/journal/JournalFirstTouchProbe.js +375 -0
  85. package/dist/journal/types.d.ts +116 -0
  86. package/dist/journal/types.js +52 -0
  87. package/dist/mv/MaterializedViewCatchUp.d.ts +60 -0
  88. package/dist/mv/MaterializedViewCatchUp.js +353 -0
  89. package/dist/mv/MaterializedViewRuntime.d.ts +80 -0
  90. package/dist/mv/MaterializedViewRuntime.js +328 -0
  91. package/dist/mv/MaterializedViewStore.d.ts +257 -0
  92. package/dist/mv/MaterializedViewStore.js +875 -0
  93. package/dist/mv/UnsafeWindowMaterializedView.d.ts +112 -0
  94. package/dist/mv/UnsafeWindowMaterializedView.js +495 -0
  95. package/dist/mv/index.d.ts +8 -0
  96. package/dist/mv/index.js +2357 -0
  97. package/dist/projection/LiveProjectionWorker.d.ts +86 -0
  98. package/dist/projection/LiveProjectionWorker.js +240 -0
  99. package/dist/projection/ProjectionRuntime.d.ts +113 -0
  100. package/dist/projection/ProjectionRuntime.js +346 -0
  101. package/dist/projection/ProjectorRegistry.d.ts +51 -0
  102. package/dist/projection/ProjectorRegistry.js +116 -0
  103. package/dist/query/ProjectionQueryStore.d.ts +102 -0
  104. package/dist/query/ProjectionQueryStore.js +185 -0
  105. package/dist/query/QueryRegistry.d.ts +22 -0
  106. package/dist/query/QueryRegistry.js +36 -0
  107. package/dist/read/SerializedReadWorker.d.ts +36 -0
  108. package/dist/read/SerializedReadWorker.js +225 -0
  109. package/dist/repair/RepairWorker.d.ts +72 -0
  110. package/dist/repair/RepairWorker.js +461 -0
  111. package/dist/safeWindow.d.ts +20 -0
  112. package/dist/safeWindow.js +36 -0
  113. package/dist/scope/ControlRouteScope.d.ts +22 -0
  114. package/dist/scope/ControlRouteScope.js +36 -0
  115. package/dist/scope/ScopeName.d.ts +34 -0
  116. package/dist/scope/ScopeName.js +67 -0
  117. package/dist/service/ServiceIdentityProvider.d.ts +35 -0
  118. package/dist/service/ServiceIdentityProvider.js +56 -0
  119. package/dist/store/CosmosEventStore.d.ts +126 -0
  120. package/dist/store/CosmosEventStore.js +950 -0
  121. package/dist/store/D1EventStore.d.ts +111 -0
  122. package/dist/store/D1EventStore.js +1111 -0
  123. package/dist/store/PostgresEventStore.d.ts +35 -0
  124. package/dist/store/PostgresEventStore.js +811 -0
  125. package/dist/store/provider.d.ts +25 -0
  126. package/dist/store/provider.js +32 -0
  127. package/dist/store/types.d.ts +205 -0
  128. package/dist/store/types.js +18 -0
  129. package/dist/tag/EventDigest.d.ts +40 -0
  130. package/dist/tag/EventDigest.js +158 -0
  131. package/dist/tag/TagDurableObject.d.ts +286 -0
  132. package/dist/tag/TagDurableObject.js +4071 -0
  133. package/dist/tag/TagSqlMeasurement.d.ts +26 -0
  134. package/dist/tag/TagSqlMeasurement.js +44 -0
  135. package/dist/tag/TagSqlSchema.d.ts +29 -0
  136. package/dist/tag/TagSqlSchema.js +211 -0
  137. package/dist/tag/types.d.ts +173 -0
  138. package/dist/tag/types.js +3 -0
  139. package/dist/tagstate/TagStateDurableObject.d.ts +57 -0
  140. package/dist/tagstate/TagStateDurableObject.js +499 -0
  141. package/dist/trace/AttributionRatio.d.ts +12 -0
  142. package/dist/trace/AttributionRatio.js +68 -0
  143. package/dist/trace/CloudflareTracing.d.ts +7 -0
  144. package/dist/trace/CloudflareTracing.js +9 -0
  145. package/dist/trace/CommitTrace.d.ts +405 -0
  146. package/dist/trace/CommitTrace.js +1008 -0
  147. package/dist/trace/CommitTraceConsoleSink.d.ts +68 -0
  148. package/dist/trace/CommitTraceConsoleSink.js +114 -0
  149. package/dist/trace/CommitTraceVerifier.d.ts +22 -0
  150. package/dist/trace/CommitTraceVerifier.js +295 -0
  151. package/dist/trace/ObservationStream.d.ts +118 -0
  152. package/dist/trace/ObservationStream.js +148 -0
  153. package/package.json +71 -0
@@ -0,0 +1,111 @@
1
+ import type { WaitForTargetLookup, WaitForTargetSourcePort } from "../query/ProjectionQueryStore";
2
+ import type { DeliverySource, DownstreamOutboxMessage } from "../downstream/types";
3
+ import { CanonicalEventIdentityConflictError, type DeliveryIncident, type DeliveryAttemptContext, type DeliveryOutcome, type DetectorStore, type EventStore, type GlobalReceiptJoin, type InconsistencyClassification, type InconsistencyFinding, type PendingArrivalRecord, type ProjectionCheckpoint, type ProjectionCheckpointAdvance, type ProjectionLag, type ProjectionStore, type StoredEvent } from "./types";
4
+ /** Write batches exposed only as a test fault-injection seam. */
5
+ export type D1BatchOperation = "recordDelivery" | "upsertPending";
6
+ /** Single-statement write boundaries exposed only to fault tests. */
7
+ export type D1WriteOperation = "advanceProjectionCheckpoint" | "appendFinding" | "appendDeliveryIncident";
8
+ export interface D1StoreOptions {
9
+ /**
10
+ * Test-only hook. It may append a failing prepared statement to prove that
11
+ * D1 rolls the predeclared batch back atomically. Production composition
12
+ * leaves this unset.
13
+ */
14
+ readonly beforeBatch?: (operation: D1BatchOperation, statements: readonly D1PreparedStatement[], database: D1Database) => readonly D1PreparedStatement[] | Promise<readonly D1PreparedStatement[]>;
15
+ /**
16
+ * Test-only replacement for a single durable statement. Production leaves
17
+ * this unset; each such statement is already atomic in D1.
18
+ */
19
+ readonly beforeWrite?: (operation: D1WriteOperation, statement: D1PreparedStatement, database: D1Database) => D1PreparedStatement;
20
+ /**
21
+ * Test-only delay seam for proving G69 evidence never gates core admission.
22
+ * Production composition leaves this unset.
23
+ */
24
+ readonly beforeG69AdmissionAttempt?: () => void | Promise<void>;
25
+ }
26
+ /** A contradictory EventId identity is a typed fail-closed outcome. */
27
+ export declare class D1IdentityConflictError extends CanonicalEventIdentityConflictError {
28
+ readonly beforeMutation: boolean;
29
+ constructor(message: string, beforeMutation?: boolean);
30
+ }
31
+ /** V1 SUIDs and path names are opaque bytewise ordinals, never locale/numeric values. */
32
+ export declare function binaryCompare(left: string, right: string): number;
33
+ /**
34
+ * Cloudflare D1 PipelineStore implementation.
35
+ *
36
+ * All schema changes live in migrations/d1. Writes that span several tables
37
+ * are one predeclared D1 batch; there is no interactive transaction or
38
+ * TypeScript read/branch between statements in the durable mutation.
39
+ */
40
+ export declare class D1EventStore implements EventStore, DetectorStore, ProjectionStore, WaitForTargetSourcePort {
41
+ private readonly database;
42
+ private readonly options;
43
+ private initialized;
44
+ constructor(database: D1Database, options?: D1StoreOptions);
45
+ initialize(): Promise<void>;
46
+ recordDelivery(message: DownstreamOutboxMessage, arrivedAt: number, deliverySource?: DeliverySource, attemptContext?: DeliveryAttemptContext): Promise<DeliveryOutcome>;
47
+ private recordDeliveryCore;
48
+ readGlobalReceiptJoin(message: DownstreamOutboxMessage): Promise<GlobalReceiptJoin | undefined>;
49
+ readAllEvents(serviceId: string, since: string): Promise<StoredEvent[]>;
50
+ /**
51
+ * G69 strict-order detector: find an event admitted after a projection
52
+ * checkpoint whose opaque SUID is lower than that checkpoint. A replay of
53
+ * an event already known before the checkpoint is deliberately excluded by
54
+ * FirstArrivedAt, so the detector reports new lower-SUID admission rather
55
+ * than ordinary Queue redelivery.
56
+ */
57
+ findLateLowerSuid(serviceId: string, checkpointSuid: string, checkpointUpdatedAt: number): Promise<StoredEvent | undefined>;
58
+ findLateLowerSuidEvidence(serviceId: string, checkpointSuid: string, checkpointUpdatedAt: number, generation?: number): Promise<{
59
+ readonly kind: "late-lower-suid" | "replay" | "miss" | "unknown";
60
+ readonly event?: StoredEvent;
61
+ readonly reason?: string;
62
+ readonly durationMs?: number;
63
+ }>;
64
+ /**
65
+ * G31 source proof: one indexed target-SUID lookup distinguishes pending,
66
+ * unique stored, and contradictory/incident states. It intentionally never
67
+ * delegates to readAllEvents, which would make waitFor history-size bound.
68
+ */
69
+ readWaitForTarget(serviceId: string, suid: string): Promise<WaitForTargetLookup>;
70
+ currentLagBound(serviceId: string, nowMs?: number): Promise<number>;
71
+ lagBoundDiagnostics(serviceId: string, nowMs: number): Promise<{
72
+ serviceIdUsed: string;
73
+ dynamicLagBoundMs: number;
74
+ rowFound: boolean;
75
+ rawEstimateMs: null;
76
+ rawObservedAt: null;
77
+ nowMs: number;
78
+ } | {
79
+ serviceIdUsed: string;
80
+ dynamicLagBoundMs: number;
81
+ rowFound: boolean;
82
+ rawEstimateMs: number;
83
+ rawObservedAt: number;
84
+ nowMs: number;
85
+ }>;
86
+ listProjectionTags(serviceId: string): Promise<string[]>;
87
+ readProjectionCheckpoint(serviceId: string, projectionId: string): Promise<ProjectionCheckpoint | undefined>;
88
+ advanceProjectionCheckpoint(input: ProjectionCheckpointAdvance): Promise<boolean>;
89
+ projectionLag(serviceId: string, projectionId: string, tag: string): Promise<ProjectionLag>;
90
+ upsertPending(message: DownstreamOutboxMessage, firstObservedAt: number, lagBoundMs: number): Promise<PendingArrivalRecord>;
91
+ listPending(serviceId?: string): Promise<PendingArrivalRecord[]>;
92
+ appendFinding(finding: InconsistencyFinding): Promise<void>;
93
+ hasFinding(serviceId: string, eventId: string, path: string, classification: InconsistencyClassification): Promise<boolean>;
94
+ listFindings(serviceId?: string, eventId?: string): Promise<InconsistencyFinding[]>;
95
+ appendDeliveryIncident(incident: DeliveryIncident): Promise<void>;
96
+ hasDeliveryIncident(serviceId: string, identityKey: string): Promise<boolean>;
97
+ listDeliveryIncidents(serviceId?: string): Promise<DeliveryIncident[]>;
98
+ private batch;
99
+ private write;
100
+ private rows;
101
+ private eventById;
102
+ private eventFromRow;
103
+ private pendingById;
104
+ private lineageBinding;
105
+ private collisionEvent;
106
+ private incidentByIdentity;
107
+ private eventArrivalOps;
108
+ private admissionMutationEvidence;
109
+ private bestEffortG69AdmissionAttempt;
110
+ private ready;
111
+ }