@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.
Files changed (106) hide show
  1. package/dist/axon-server-event-store.d.ts +16 -0
  2. package/dist/axon-server-event-store.d.ts.map +1 -0
  3. package/dist/axon-server-event-store.js +282 -0
  4. package/dist/axon-server-event-store.js.map +1 -0
  5. package/dist/axon-server-snapshot-store.d.ts +12 -0
  6. package/dist/axon-server-snapshot-store.d.ts.map +1 -0
  7. package/dist/axon-server-snapshot-store.js +88 -0
  8. package/dist/axon-server-snapshot-store.js.map +1 -0
  9. package/dist/axon-server.d.ts +115 -0
  10. package/dist/axon-server.d.ts.map +1 -0
  11. package/dist/axon-server.js +986 -0
  12. package/dist/axon-server.js.map +1 -0
  13. package/dist/connection-manager.d.ts +49 -0
  14. package/dist/connection-manager.d.ts.map +1 -0
  15. package/dist/connection-manager.js +37 -0
  16. package/dist/connection-manager.js.map +1 -0
  17. package/dist/connection.d.ts +129 -0
  18. package/dist/connection.d.ts.map +1 -0
  19. package/dist/connection.js +130 -0
  20. package/dist/connection.js.map +1 -0
  21. package/dist/errors.d.ts +96 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +189 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/event-processor-info.d.ts +35 -0
  26. package/dist/event-processor-info.d.ts.map +1 -0
  27. package/dist/event-processor-info.js +28 -0
  28. package/dist/event-processor-info.js.map +1 -0
  29. package/dist/flow-controlled-sender.d.ts +30 -0
  30. package/dist/flow-controlled-sender.d.ts.map +1 -0
  31. package/dist/flow-controlled-sender.js +60 -0
  32. package/dist/flow-controlled-sender.js.map +1 -0
  33. package/dist/generated/command.d.ts +158 -0
  34. package/dist/generated/command.d.ts.map +1 -0
  35. package/dist/generated/command.js +970 -0
  36. package/dist/generated/command.js.map +1 -0
  37. package/dist/generated/common.d.ts +130 -0
  38. package/dist/generated/common.d.ts.map +1 -0
  39. package/dist/generated/common.js +908 -0
  40. package/dist/generated/common.js.map +1 -0
  41. package/dist/generated/control.d.ts +293 -0
  42. package/dist/generated/control.d.ts.map +1 -0
  43. package/dist/generated/control.js +1938 -0
  44. package/dist/generated/control.js.map +1 -0
  45. package/dist/generated/dcb.d.ts +650 -0
  46. package/dist/generated/dcb.d.ts.map +1 -0
  47. package/dist/generated/dcb.js +2943 -0
  48. package/dist/generated/dcb.js.map +1 -0
  49. package/dist/generated/event.d.ts +667 -0
  50. package/dist/generated/event.d.ts.map +1 -0
  51. package/dist/generated/event.js +3185 -0
  52. package/dist/generated/event.js.map +1 -0
  53. package/dist/generated/google/protobuf/empty.d.ts +30 -0
  54. package/dist/generated/google/protobuf/empty.d.ts.map +1 -0
  55. package/dist/generated/google/protobuf/empty.js +46 -0
  56. package/dist/generated/google/protobuf/empty.js.map +1 -0
  57. package/dist/generated/query.d.ts +300 -0
  58. package/dist/generated/query.d.ts.map +1 -0
  59. package/dist/generated/query.js +2183 -0
  60. package/dist/generated/query.js.map +1 -0
  61. package/dist/index.d.ts +12 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +12 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/message-size.d.ts +38 -0
  66. package/dist/message-size.d.ts.map +1 -0
  67. package/dist/message-size.js +57 -0
  68. package/dist/message-size.js.map +1 -0
  69. package/dist/metadata-conversion.d.ts +11 -0
  70. package/dist/metadata-conversion.d.ts.map +1 -0
  71. package/dist/metadata-conversion.js +51 -0
  72. package/dist/metadata-conversion.js.map +1 -0
  73. package/dist/outbound-stream.d.ts +15 -0
  74. package/dist/outbound-stream.d.ts.map +1 -0
  75. package/dist/outbound-stream.js +39 -0
  76. package/dist/outbound-stream.js.map +1 -0
  77. package/dist/platform-service.d.ts +119 -0
  78. package/dist/platform-service.d.ts.map +1 -0
  79. package/dist/platform-service.js +250 -0
  80. package/dist/platform-service.js.map +1 -0
  81. package/dist/shutdown-latch.d.ts +38 -0
  82. package/dist/shutdown-latch.d.ts.map +1 -0
  83. package/dist/shutdown-latch.js +51 -0
  84. package/dist/shutdown-latch.js.map +1 -0
  85. package/package.json +69 -0
  86. package/src/axon-server-event-store.ts +358 -0
  87. package/src/axon-server-snapshot-store.ts +118 -0
  88. package/src/axon-server.ts +1202 -0
  89. package/src/connection-manager.ts +88 -0
  90. package/src/connection.ts +272 -0
  91. package/src/errors.ts +223 -0
  92. package/src/event-processor-info.ts +62 -0
  93. package/src/flow-controlled-sender.ts +91 -0
  94. package/src/generated/command.ts +1231 -0
  95. package/src/generated/common.ts +1097 -0
  96. package/src/generated/control.ts +2419 -0
  97. package/src/generated/dcb.ts +3826 -0
  98. package/src/generated/event.ts +4076 -0
  99. package/src/generated/google/protobuf/empty.ts +84 -0
  100. package/src/generated/query.ts +2723 -0
  101. package/src/index.ts +75 -0
  102. package/src/message-size.ts +75 -0
  103. package/src/metadata-conversion.ts +46 -0
  104. package/src/outbound-stream.ts +52 -0
  105. package/src/platform-service.ts +361 -0
  106. package/src/shutdown-latch.ts +97 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Flow-controlled sender for subscription query updates.
3
+ *
4
+ * Implements request-based backpressure: the receiver requests N updates,
5
+ * and the sender only sends when permits are available. When permits are
6
+ * exhausted, updates are buffered until more permits arrive.
7
+ *
8
+ * Aligned with Java's `FlowControlledResponseSender`.
9
+ */
10
+ export interface FlowControlledSender<T> {
11
+ /** Send an update. Buffers if no permits available. */
12
+ offer(value: T): boolean
13
+ /** Grant additional permits to the sender. */
14
+ addPermits(count: number): void
15
+ /** Complete the stream normally. */
16
+ complete(): void
17
+ /** Complete the stream with an error. */
18
+ completeExceptionally(error: Error): void
19
+ /** Whether the stream is still active. */
20
+ readonly active: boolean
21
+ }
22
+
23
+ /**
24
+ * Creates a flow-controlled sender that buffers updates when permits are
25
+ * exhausted and drains the buffer when new permits arrive.
26
+ *
27
+ * @param send Function called to actually send an update downstream.
28
+ * @param maxBufferSize Maximum number of updates to buffer. Default: 256.
29
+ */
30
+ export function createFlowControlledSender<T>(
31
+ send: (value: T) => void,
32
+ onComplete?: () => void,
33
+ onError?: (error: Error) => void,
34
+ maxBufferSize: number = 256,
35
+ ): FlowControlledSender<T> {
36
+ const buffer: T[] = []
37
+ let permits = 0
38
+ let isActive = true
39
+
40
+ function drain() {
41
+ while (permits > 0 && buffer.length > 0 && isActive) {
42
+ const value = buffer.shift()!
43
+ permits--
44
+ try {
45
+ send(value)
46
+ } catch (err) {
47
+ console.warn("FlowControlledSender: send error", err)
48
+ }
49
+ }
50
+ }
51
+
52
+ return {
53
+ offer(value: T): boolean {
54
+ if (!isActive) return false
55
+
56
+ if (permits > 0) {
57
+ permits--
58
+ send(value)
59
+ return true
60
+ }
61
+
62
+ if (buffer.length >= maxBufferSize) {
63
+ return false
64
+ }
65
+
66
+ buffer.push(value)
67
+ return true
68
+ },
69
+
70
+ addPermits(count: number) {
71
+ permits += count
72
+ drain()
73
+ },
74
+
75
+ complete() {
76
+ isActive = false
77
+ buffer.length = 0
78
+ if (onComplete) onComplete()
79
+ },
80
+
81
+ completeExceptionally(error: Error) {
82
+ isActive = false
83
+ buffer.length = 0
84
+ if (onError) onError(error)
85
+ },
86
+
87
+ get active() {
88
+ return isActive
89
+ },
90
+ }
91
+ }