@kronos-ts/axon-server 0.1.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.
- package/dist/axon-server-event-store.d.ts +16 -0
- package/dist/axon-server-event-store.d.ts.map +1 -0
- package/dist/axon-server-event-store.js +282 -0
- package/dist/axon-server-event-store.js.map +1 -0
- package/dist/axon-server-snapshot-store.d.ts +12 -0
- package/dist/axon-server-snapshot-store.d.ts.map +1 -0
- package/dist/axon-server-snapshot-store.js +88 -0
- package/dist/axon-server-snapshot-store.js.map +1 -0
- package/dist/axon-server.d.ts +115 -0
- package/dist/axon-server.d.ts.map +1 -0
- package/dist/axon-server.js +986 -0
- package/dist/axon-server.js.map +1 -0
- package/dist/connection-manager.d.ts +49 -0
- package/dist/connection-manager.d.ts.map +1 -0
- package/dist/connection-manager.js +37 -0
- package/dist/connection-manager.js.map +1 -0
- package/dist/connection.d.ts +129 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +130 -0
- package/dist/connection.js.map +1 -0
- package/dist/errors.d.ts +96 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +189 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-processor-info.d.ts +35 -0
- package/dist/event-processor-info.d.ts.map +1 -0
- package/dist/event-processor-info.js +28 -0
- package/dist/event-processor-info.js.map +1 -0
- package/dist/flow-controlled-sender.d.ts +30 -0
- package/dist/flow-controlled-sender.d.ts.map +1 -0
- package/dist/flow-controlled-sender.js +60 -0
- package/dist/flow-controlled-sender.js.map +1 -0
- package/dist/generated/command.d.ts +158 -0
- package/dist/generated/command.d.ts.map +1 -0
- package/dist/generated/command.js +970 -0
- package/dist/generated/command.js.map +1 -0
- package/dist/generated/common.d.ts +130 -0
- package/dist/generated/common.d.ts.map +1 -0
- package/dist/generated/common.js +908 -0
- package/dist/generated/common.js.map +1 -0
- package/dist/generated/control.d.ts +293 -0
- package/dist/generated/control.d.ts.map +1 -0
- package/dist/generated/control.js +1938 -0
- package/dist/generated/control.js.map +1 -0
- package/dist/generated/dcb.d.ts +650 -0
- package/dist/generated/dcb.d.ts.map +1 -0
- package/dist/generated/dcb.js +2943 -0
- package/dist/generated/dcb.js.map +1 -0
- package/dist/generated/event.d.ts +667 -0
- package/dist/generated/event.d.ts.map +1 -0
- package/dist/generated/event.js +3185 -0
- package/dist/generated/event.js.map +1 -0
- package/dist/generated/google/protobuf/empty.d.ts +30 -0
- package/dist/generated/google/protobuf/empty.d.ts.map +1 -0
- package/dist/generated/google/protobuf/empty.js +46 -0
- package/dist/generated/google/protobuf/empty.js.map +1 -0
- package/dist/generated/query.d.ts +300 -0
- package/dist/generated/query.d.ts.map +1 -0
- package/dist/generated/query.js +2183 -0
- package/dist/generated/query.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/message-size.d.ts +38 -0
- package/dist/message-size.d.ts.map +1 -0
- package/dist/message-size.js +57 -0
- package/dist/message-size.js.map +1 -0
- package/dist/metadata-conversion.d.ts +11 -0
- package/dist/metadata-conversion.d.ts.map +1 -0
- package/dist/metadata-conversion.js +51 -0
- package/dist/metadata-conversion.js.map +1 -0
- package/dist/outbound-stream.d.ts +15 -0
- package/dist/outbound-stream.d.ts.map +1 -0
- package/dist/outbound-stream.js +39 -0
- package/dist/outbound-stream.js.map +1 -0
- package/dist/platform-service.d.ts +119 -0
- package/dist/platform-service.d.ts.map +1 -0
- package/dist/platform-service.js +250 -0
- package/dist/platform-service.js.map +1 -0
- package/dist/shutdown-latch.d.ts +38 -0
- package/dist/shutdown-latch.d.ts.map +1 -0
- package/dist/shutdown-latch.js +51 -0
- package/dist/shutdown-latch.js.map +1 -0
- package/package.json +69 -0
- package/src/axon-server-event-store.ts +358 -0
- package/src/axon-server-snapshot-store.ts +118 -0
- package/src/axon-server.ts +1202 -0
- package/src/connection-manager.ts +88 -0
- package/src/connection.ts +272 -0
- package/src/errors.ts +223 -0
- package/src/event-processor-info.ts +62 -0
- package/src/flow-controlled-sender.ts +91 -0
- package/src/generated/command.ts +1231 -0
- package/src/generated/common.ts +1097 -0
- package/src/generated/control.ts +2419 -0
- package/src/generated/dcb.ts +3826 -0
- package/src/generated/event.ts +4076 -0
- package/src/generated/google/protobuf/empty.ts +84 -0
- package/src/generated/query.ts +2723 -0
- package/src/index.ts +75 -0
- package/src/message-size.ts +75 -0
- package/src/metadata-conversion.ts +46 -0
- package/src/outbound-stream.ts +52 -0
- package/src/platform-service.ts +361 -0
- package/src/shutdown-latch.ts +97 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A shutdown latch that tracks in-flight operations and enables
|
|
3
|
+
* graceful shutdown by draining pending work.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* - `registerActivity()` before starting a dispatch — returns a handle
|
|
7
|
+
* - `handle.end()` when the dispatch completes
|
|
8
|
+
* - `initiateShutdown()` prevents new activities and returns a promise
|
|
9
|
+
* that resolves when all in-flight operations complete
|
|
10
|
+
*
|
|
11
|
+
* This is the TypeScript equivalent of AF5's ShutdownLatch pattern.
|
|
12
|
+
*/
|
|
13
|
+
export interface ShutdownLatch {
|
|
14
|
+
/**
|
|
15
|
+
* Register an in-flight activity. Throws if shutdown is in progress.
|
|
16
|
+
* Call `end()` on the returned handle when the activity completes.
|
|
17
|
+
*/
|
|
18
|
+
registerActivity(): ActivityHandle
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Begin graceful shutdown. Returns a promise that resolves when
|
|
22
|
+
* all in-flight activities have completed.
|
|
23
|
+
* New calls to `registerActivity()` will throw after this.
|
|
24
|
+
*/
|
|
25
|
+
initiateShutdown(): Promise<void>
|
|
26
|
+
|
|
27
|
+
/** Whether shutdown has been initiated. */
|
|
28
|
+
readonly shuttingDown: boolean
|
|
29
|
+
|
|
30
|
+
/** Number of currently in-flight activities. */
|
|
31
|
+
readonly activeCount: number
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface ActivityHandle {
|
|
35
|
+
/** Mark this activity as complete. */
|
|
36
|
+
end(): void
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class ShutdownInProgressError extends Error {
|
|
40
|
+
constructor(message: string = "Shutdown in progress") {
|
|
41
|
+
super(message)
|
|
42
|
+
this.name = "ShutdownInProgressError"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function createShutdownLatch(): ShutdownLatch {
|
|
47
|
+
let activeCount = 0
|
|
48
|
+
let shuttingDown = false
|
|
49
|
+
let drainResolve: (() => void) | null = null
|
|
50
|
+
|
|
51
|
+
function checkDrained() {
|
|
52
|
+
if (shuttingDown && activeCount === 0 && drainResolve) {
|
|
53
|
+
drainResolve()
|
|
54
|
+
drainResolve = null
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
registerActivity(): ActivityHandle {
|
|
60
|
+
if (shuttingDown) {
|
|
61
|
+
throw new ShutdownInProgressError()
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
activeCount++
|
|
65
|
+
let ended = false
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
end() {
|
|
69
|
+
if (ended) return
|
|
70
|
+
ended = true
|
|
71
|
+
activeCount--
|
|
72
|
+
checkDrained()
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
initiateShutdown(): Promise<void> {
|
|
78
|
+
shuttingDown = true
|
|
79
|
+
|
|
80
|
+
if (activeCount === 0) {
|
|
81
|
+
return Promise.resolve()
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return new Promise((resolve) => {
|
|
85
|
+
drainResolve = resolve
|
|
86
|
+
})
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
get shuttingDown() {
|
|
90
|
+
return shuttingDown
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
get activeCount() {
|
|
94
|
+
return activeCount
|
|
95
|
+
},
|
|
96
|
+
}
|
|
97
|
+
}
|