@kurrent/kurrentdb-client 1.0.0-alpha.1

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 (281) hide show
  1. package/README.md +201 -0
  2. package/dist/Client/ServerFeatures.d.ts +17 -0
  3. package/dist/Client/ServerFeatures.js +56 -0
  4. package/dist/Client/ServerFeatures.js.map +1 -0
  5. package/dist/Client/discovery.d.ts +15 -0
  6. package/dist/Client/discovery.js +135 -0
  7. package/dist/Client/discovery.js.map +1 -0
  8. package/dist/Client/http.d.ts +19 -0
  9. package/dist/Client/http.js +97 -0
  10. package/dist/Client/http.js.map +1 -0
  11. package/dist/Client/index.d.ts +119 -0
  12. package/dist/Client/index.js +390 -0
  13. package/dist/Client/index.js.map +1 -0
  14. package/dist/Client/parseConnectionString.d.ts +23 -0
  15. package/dist/Client/parseConnectionString.js +238 -0
  16. package/dist/Client/parseConnectionString.js.map +1 -0
  17. package/dist/bridge/index.d.ts +66 -0
  18. package/dist/bridge/index.js +83 -0
  19. package/dist/bridge/index.js.map +1 -0
  20. package/dist/bridge/load.d.ts +1 -0
  21. package/dist/bridge/load.js +20 -0
  22. package/dist/bridge/load.js.map +1 -0
  23. package/dist/constants.d.ts +58 -0
  24. package/dist/constants.js +75 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/events/binaryEvent.d.ts +16 -0
  27. package/dist/events/binaryEvent.js +14 -0
  28. package/dist/events/binaryEvent.js.map +1 -0
  29. package/dist/events/convertMetadata.d.ts +1 -0
  30. package/dist/events/convertMetadata.js +11 -0
  31. package/dist/events/convertMetadata.js.map +1 -0
  32. package/dist/events/index.d.ts +2 -0
  33. package/dist/events/index.js +19 -0
  34. package/dist/events/index.js.map +1 -0
  35. package/dist/events/jsonEvent.d.ts +8 -0
  36. package/dist/events/jsonEvent.js +14 -0
  37. package/dist/events/jsonEvent.js.map +1 -0
  38. package/dist/index.d.ts +13 -0
  39. package/dist/index.js +32 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/persistentSubscription/createPersistentSubscriptionToAll.d.ts +23 -0
  42. package/dist/persistentSubscription/createPersistentSubscriptionToAll.js +90 -0
  43. package/dist/persistentSubscription/createPersistentSubscriptionToAll.js.map +1 -0
  44. package/dist/persistentSubscription/createPersistentSubscriptionToStream.d.ts +17 -0
  45. package/dist/persistentSubscription/createPersistentSubscriptionToStream.js +49 -0
  46. package/dist/persistentSubscription/createPersistentSubscriptionToStream.js.map +1 -0
  47. package/dist/persistentSubscription/deletePersistentSubscriptionToAll.d.ts +13 -0
  48. package/dist/persistentSubscription/deletePersistentSubscriptionToAll.js +30 -0
  49. package/dist/persistentSubscription/deletePersistentSubscriptionToAll.js.map +1 -0
  50. package/dist/persistentSubscription/deletePersistentSubscriptionToStream.d.ts +13 -0
  51. package/dist/persistentSubscription/deletePersistentSubscriptionToStream.js +28 -0
  52. package/dist/persistentSubscription/deletePersistentSubscriptionToStream.js.map +1 -0
  53. package/dist/persistentSubscription/getPersistentSubscriptionToAllInfo.d.ts +13 -0
  54. package/dist/persistentSubscription/getPersistentSubscriptionToAllInfo.js +31 -0
  55. package/dist/persistentSubscription/getPersistentSubscriptionToAllInfo.js.map +1 -0
  56. package/dist/persistentSubscription/getPersistentSubscriptionToStreamInfo.d.ts +14 -0
  57. package/dist/persistentSubscription/getPersistentSubscriptionToStreamInfo.js +49 -0
  58. package/dist/persistentSubscription/getPersistentSubscriptionToStreamInfo.js.map +1 -0
  59. package/dist/persistentSubscription/index.d.ts +16 -0
  60. package/dist/persistentSubscription/index.js +33 -0
  61. package/dist/persistentSubscription/index.js.map +1 -0
  62. package/dist/persistentSubscription/listAllPersistentSubscriptions.d.ts +13 -0
  63. package/dist/persistentSubscription/listAllPersistentSubscriptions.js +42 -0
  64. package/dist/persistentSubscription/listAllPersistentSubscriptions.js.map +1 -0
  65. package/dist/persistentSubscription/listPersistentSubscriptionsToAll.d.ts +13 -0
  66. package/dist/persistentSubscription/listPersistentSubscriptionsToAll.js +33 -0
  67. package/dist/persistentSubscription/listPersistentSubscriptionsToAll.js.map +1 -0
  68. package/dist/persistentSubscription/listPersistentSubscriptionsToStream.d.ts +14 -0
  69. package/dist/persistentSubscription/listPersistentSubscriptionsToStream.js +51 -0
  70. package/dist/persistentSubscription/listPersistentSubscriptionsToStream.js.map +1 -0
  71. package/dist/persistentSubscription/replayParkedMessagesToAll.d.ts +18 -0
  72. package/dist/persistentSubscription/replayParkedMessagesToAll.js +36 -0
  73. package/dist/persistentSubscription/replayParkedMessagesToAll.js.map +1 -0
  74. package/dist/persistentSubscription/replayParkedMessagesToStream.d.ts +19 -0
  75. package/dist/persistentSubscription/replayParkedMessagesToStream.js +57 -0
  76. package/dist/persistentSubscription/replayParkedMessagesToStream.js.map +1 -0
  77. package/dist/persistentSubscription/restartPersistentSubscriptionSubsystem.d.ts +11 -0
  78. package/dist/persistentSubscription/restartPersistentSubscriptionSubsystem.js +30 -0
  79. package/dist/persistentSubscription/restartPersistentSubscriptionSubsystem.js.map +1 -0
  80. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToAll.d.ts +20 -0
  81. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToAll.js +38 -0
  82. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToAll.js.map +1 -0
  83. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToStream.d.ts +20 -0
  84. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToStream.js +37 -0
  85. package/dist/persistentSubscription/subscribeToPersistentSubscriptionToStream.js.map +1 -0
  86. package/dist/persistentSubscription/updatePersistentSubscriptionToAll.d.ts +15 -0
  87. package/dist/persistentSubscription/updatePersistentSubscriptionToAll.js +53 -0
  88. package/dist/persistentSubscription/updatePersistentSubscriptionToAll.js.map +1 -0
  89. package/dist/persistentSubscription/updatePersistentSubscriptionToStream.d.ts +15 -0
  90. package/dist/persistentSubscription/updatePersistentSubscriptionToStream.js +49 -0
  91. package/dist/persistentSubscription/updatePersistentSubscriptionToStream.js.map +1 -0
  92. package/dist/persistentSubscription/utils/PersistentSubscriptionImpl.d.ts +18 -0
  93. package/dist/persistentSubscription/utils/PersistentSubscriptionImpl.js +112 -0
  94. package/dist/persistentSubscription/utils/PersistentSubscriptionImpl.js.map +1 -0
  95. package/dist/persistentSubscription/utils/mapPersistentSubscriptionInfo.d.ts +146 -0
  96. package/dist/persistentSubscription/utils/mapPersistentSubscriptionInfo.js +204 -0
  97. package/dist/persistentSubscription/utils/mapPersistentSubscriptionInfo.js.map +1 -0
  98. package/dist/persistentSubscription/utils/persistentSubscriptionSettings.d.ts +90 -0
  99. package/dist/persistentSubscription/utils/persistentSubscriptionSettings.js +39 -0
  100. package/dist/persistentSubscription/utils/persistentSubscriptionSettings.js.map +1 -0
  101. package/dist/persistentSubscription/utils/settingsToGRPC.d.ts +5 -0
  102. package/dist/persistentSubscription/utils/settingsToGRPC.js +49 -0
  103. package/dist/persistentSubscription/utils/settingsToGRPC.js.map +1 -0
  104. package/dist/projections/createProjection.d.ts +24 -0
  105. package/dist/projections/createProjection.js +48 -0
  106. package/dist/projections/createProjection.js.map +1 -0
  107. package/dist/projections/deleteProjection.d.ts +28 -0
  108. package/dist/projections/deleteProjection.js +33 -0
  109. package/dist/projections/deleteProjection.js.map +1 -0
  110. package/dist/projections/disableProjection.d.ts +19 -0
  111. package/dist/projections/disableProjection.js +34 -0
  112. package/dist/projections/disableProjection.js.map +1 -0
  113. package/dist/projections/enableProjection.d.ts +12 -0
  114. package/dist/projections/enableProjection.js +25 -0
  115. package/dist/projections/enableProjection.js.map +1 -0
  116. package/dist/projections/getProjectionResult.d.ts +17 -0
  117. package/dist/projections/getProjectionResult.js +29 -0
  118. package/dist/projections/getProjectionResult.js.map +1 -0
  119. package/dist/projections/getProjectionState.d.ts +17 -0
  120. package/dist/projections/getProjectionState.js +29 -0
  121. package/dist/projections/getProjectionState.js.map +1 -0
  122. package/dist/projections/getProjectionStatus.d.ts +12 -0
  123. package/dist/projections/getProjectionStatus.js +36 -0
  124. package/dist/projections/getProjectionStatus.js.map +1 -0
  125. package/dist/projections/index.d.ts +11 -0
  126. package/dist/projections/index.js +28 -0
  127. package/dist/projections/index.js.map +1 -0
  128. package/dist/projections/listProjections.d.ts +12 -0
  129. package/dist/projections/listProjections.js +36 -0
  130. package/dist/projections/listProjections.js.map +1 -0
  131. package/dist/projections/resetProjection.d.ts +13 -0
  132. package/dist/projections/resetProjection.js +25 -0
  133. package/dist/projections/resetProjection.js.map +1 -0
  134. package/dist/projections/restartSubsystem.d.ts +11 -0
  135. package/dist/projections/restartSubsystem.js +21 -0
  136. package/dist/projections/restartSubsystem.js.map +1 -0
  137. package/dist/projections/updateProjection.d.ts +20 -0
  138. package/dist/projections/updateProjection.js +34 -0
  139. package/dist/projections/updateProjection.js.map +1 -0
  140. package/dist/projections/utils/mapGrpcProjectionDetails.d.ts +3 -0
  141. package/dist/projections/utils/mapGrpcProjectionDetails.js +31 -0
  142. package/dist/projections/utils/mapGrpcProjectionDetails.js.map +1 -0
  143. package/dist/streams/appendToStream/append.d.ts +5 -0
  144. package/dist/streams/appendToStream/append.js +131 -0
  145. package/dist/streams/appendToStream/append.js.map +1 -0
  146. package/dist/streams/appendToStream/batchAppend.d.ts +5 -0
  147. package/dist/streams/appendToStream/batchAppend.js +145 -0
  148. package/dist/streams/appendToStream/batchAppend.js.map +1 -0
  149. package/dist/streams/appendToStream/index.d.ts +24 -0
  150. package/dist/streams/appendToStream/index.js +24 -0
  151. package/dist/streams/appendToStream/index.js.map +1 -0
  152. package/dist/streams/appendToStream/unpackError.d.ts +5 -0
  153. package/dist/streams/appendToStream/unpackError.js +54 -0
  154. package/dist/streams/appendToStream/unpackError.js.map +1 -0
  155. package/dist/streams/deleteStream.d.ts +18 -0
  156. package/dist/streams/deleteStream.js +51 -0
  157. package/dist/streams/deleteStream.js.map +1 -0
  158. package/dist/streams/getStreamMetadata.d.ts +27 -0
  159. package/dist/streams/getStreamMetadata.js +40 -0
  160. package/dist/streams/getStreamMetadata.js.map +1 -0
  161. package/dist/streams/index.d.ts +9 -0
  162. package/dist/streams/index.js +27 -0
  163. package/dist/streams/index.js.map +1 -0
  164. package/dist/streams/readAll.d.ts +35 -0
  165. package/dist/streams/readAll.js +37 -0
  166. package/dist/streams/readAll.js.map +1 -0
  167. package/dist/streams/readStream.d.ts +35 -0
  168. package/dist/streams/readStream.js +58 -0
  169. package/dist/streams/readStream.js.map +1 -0
  170. package/dist/streams/setStreamMetadata.d.ts +20 -0
  171. package/dist/streams/setStreamMetadata.js +20 -0
  172. package/dist/streams/setStreamMetadata.js.map +1 -0
  173. package/dist/streams/subscribeToAll.d.ts +30 -0
  174. package/dist/streams/subscribeToAll.js +89 -0
  175. package/dist/streams/subscribeToAll.js.map +1 -0
  176. package/dist/streams/subscribeToStream.d.ts +27 -0
  177. package/dist/streams/subscribeToStream.js +52 -0
  178. package/dist/streams/subscribeToStream.js.map +1 -0
  179. package/dist/streams/tombstoneStream.d.ts +18 -0
  180. package/dist/streams/tombstoneStream.js +51 -0
  181. package/dist/streams/tombstoneStream.js.map +1 -0
  182. package/dist/streams/utils/ReadStream.d.ts +14 -0
  183. package/dist/streams/utils/ReadStream.js +61 -0
  184. package/dist/streams/utils/ReadStream.js.map +1 -0
  185. package/dist/streams/utils/Subscription.d.ts +16 -0
  186. package/dist/streams/utils/Subscription.js +71 -0
  187. package/dist/streams/utils/Subscription.js.map +1 -0
  188. package/dist/streams/utils/streamMetadata.d.ts +53 -0
  189. package/dist/streams/utils/streamMetadata.js +77 -0
  190. package/dist/streams/utils/streamMetadata.js.map +1 -0
  191. package/dist/streams/utils/systemStreams.d.ts +20 -0
  192. package/dist/streams/utils/systemStreams.js +28 -0
  193. package/dist/streams/utils/systemStreams.js.map +1 -0
  194. package/dist/types/events.d.ts +157 -0
  195. package/dist/types/events.js +3 -0
  196. package/dist/types/events.js.map +1 -0
  197. package/dist/types/index.d.ts +348 -0
  198. package/dist/types/index.js +22 -0
  199. package/dist/types/index.js.map +1 -0
  200. package/dist/utils/CommandError.d.ts +174 -0
  201. package/dist/utils/CommandError.js +403 -0
  202. package/dist/utils/CommandError.js.map +1 -0
  203. package/dist/utils/backpressuredWrite.d.ts +2 -0
  204. package/dist/utils/backpressuredWrite.js +50 -0
  205. package/dist/utils/backpressuredWrite.js.map +1 -0
  206. package/dist/utils/convertBridgeError.d.ts +1 -0
  207. package/dist/utils/convertBridgeError.js +41 -0
  208. package/dist/utils/convertBridgeError.js.map +1 -0
  209. package/dist/utils/convertGrpcEvent.d.ts +10 -0
  210. package/dist/utils/convertGrpcEvent.js +135 -0
  211. package/dist/utils/convertGrpcEvent.js.map +1 -0
  212. package/dist/utils/convertRustEvent.d.ts +4 -0
  213. package/dist/utils/convertRustEvent.js +85 -0
  214. package/dist/utils/convertRustEvent.js.map +1 -0
  215. package/dist/utils/debug.d.ts +7 -0
  216. package/dist/utils/debug.js +30 -0
  217. package/dist/utils/debug.js.map +1 -0
  218. package/dist/utils/filter.d.ts +44 -0
  219. package/dist/utils/filter.js +29 -0
  220. package/dist/utils/filter.js.map +1 -0
  221. package/dist/utils/grpcStreamIdentifier.d.ts +2 -0
  222. package/dist/utils/grpcStreamIdentifier.js +11 -0
  223. package/dist/utils/grpcStreamIdentifier.js.map +1 -0
  224. package/dist/utils/grpcUUID.d.ts +4 -0
  225. package/dist/utils/grpcUUID.js +29 -0
  226. package/dist/utils/grpcUUID.js.map +1 -0
  227. package/dist/utils/index.d.ts +9 -0
  228. package/dist/utils/index.js +26 -0
  229. package/dist/utils/index.js.map +1 -0
  230. package/dist/utils/isClientCancellationError.d.ts +1 -0
  231. package/dist/utils/isClientCancellationError.js +13 -0
  232. package/dist/utils/isClientCancellationError.js.map +1 -0
  233. package/dist/utils/utilityTypes.d.ts +2 -0
  234. package/dist/utils/utilityTypes.js +3 -0
  235. package/dist/utils/utilityTypes.js.map +1 -0
  236. package/generated/cluster_grpc_pb.d.ts +211 -0
  237. package/generated/cluster_grpc_pb.js +247 -0
  238. package/generated/cluster_pb.d.ts +546 -0
  239. package/generated/cluster_pb.js +4357 -0
  240. package/generated/code_grpc_pb.js +1 -0
  241. package/generated/code_pb.d.ts +27 -0
  242. package/generated/code_pb.js +48 -0
  243. package/generated/gossip_grpc_pb.d.ts +42 -0
  244. package/generated/gossip_grpc_pb.js +45 -0
  245. package/generated/gossip_pb.d.ts +111 -0
  246. package/generated/gossip_pb.js +727 -0
  247. package/generated/monitoring_grpc_pb.d.ts +39 -0
  248. package/generated/monitoring_grpc_pb.js +44 -0
  249. package/generated/monitoring_pb.d.ts +52 -0
  250. package/generated/monitoring_pb.js +361 -0
  251. package/generated/operations_grpc_pb.d.ts +144 -0
  252. package/generated/operations_grpc_pb.js +144 -0
  253. package/generated/operations_pb.d.ts +151 -0
  254. package/generated/operations_pb.js +1050 -0
  255. package/generated/persistent_grpc_pb.d.ts +160 -0
  256. package/generated/persistent_grpc_pb.js +265 -0
  257. package/generated/persistent_pb.d.ts +1702 -0
  258. package/generated/persistent_pb.js +12340 -0
  259. package/generated/projections_grpc_pb.d.ts +194 -0
  260. package/generated/projections_grpc_pb.js +332 -0
  261. package/generated/projections_pb.d.ts +821 -0
  262. package/generated/projections_pb.js +6065 -0
  263. package/generated/serverfeatures_grpc_pb.d.ts +42 -0
  264. package/generated/serverfeatures_grpc_pb.js +45 -0
  265. package/generated/serverfeatures_pb.d.ts +61 -0
  266. package/generated/serverfeatures_pb.js +476 -0
  267. package/generated/shared_grpc_pb.js +1 -0
  268. package/generated/shared_pb.d.ts +335 -0
  269. package/generated/shared_pb.js +2374 -0
  270. package/generated/status_grpc_pb.js +1 -0
  271. package/generated/status_pb.d.ts +38 -0
  272. package/generated/status_pb.js +261 -0
  273. package/generated/streams_grpc_pb.d.ts +112 -0
  274. package/generated/streams_grpc_pb.js +180 -0
  275. package/generated/streams_pb.d.ts +1660 -0
  276. package/generated/streams_pb.js +11556 -0
  277. package/generated/users_grpc_pb.d.ts +158 -0
  278. package/generated/users_grpc_pb.js +275 -0
  279. package/generated/users_pb.d.ts +601 -0
  280. package/generated/users_pb.js +4451 -0
  281. package/package.json +65 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadStream = void 0;
4
+ const stream_1 = require("stream");
5
+ const utils_1 = require("../../utils");
6
+ class ReadStream extends stream_1.Transform {
7
+ #convertGrpcEvent;
8
+ #grpcStream;
9
+ constructor(createGRPCStream, convertGrpcEvent, options) {
10
+ super({ ...options, objectMode: true });
11
+ this.#convertGrpcEvent = convertGrpcEvent;
12
+ this.#grpcStream = createGRPCStream();
13
+ this.initialize();
14
+ }
15
+ initialize = async () => {
16
+ try {
17
+ (await this.#grpcStream)
18
+ .on("error", (err) => {
19
+ if ((0, utils_1.isClientCancellationError)(err))
20
+ return;
21
+ const error = (0, utils_1.convertToCommandError)(err);
22
+ this.emit("error", error);
23
+ })
24
+ .pipe(this);
25
+ }
26
+ catch (error) {
27
+ this.emit("error", error);
28
+ }
29
+ };
30
+ _transform(resp, _encoding, next) {
31
+ if (resp.hasConfirmation?.()) {
32
+ this.emit("confirmation");
33
+ }
34
+ if (resp.hasStreamNotFound?.()) {
35
+ const streamNotFound = resp.getStreamNotFound();
36
+ this.#grpcStream.then((stream) => {
37
+ stream.destroy(new utils_1.StreamNotFoundError(null, streamNotFound.getStreamIdentifier()?.getStreamName()));
38
+ next();
39
+ });
40
+ return;
41
+ }
42
+ if (resp.hasEvent?.()) {
43
+ const resolved = this.#convertGrpcEvent(resp.getEvent());
44
+ return next(null, resolved);
45
+ }
46
+ next();
47
+ }
48
+ async cancel() {
49
+ const stream = await this.#grpcStream;
50
+ return new Promise((resolve) => {
51
+ // https://github.com/grpc/grpc-node/issues/1464
52
+ // https://github.com/grpc/grpc-node/issues/1652
53
+ setImmediate(() => {
54
+ stream.cancel();
55
+ resolve();
56
+ });
57
+ });
58
+ }
59
+ }
60
+ exports.ReadStream = ReadStream;
61
+ //# sourceMappingURL=ReadStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadStream.js","sourceRoot":"","sources":["../../../src/streams/utils/ReadStream.ts"],"names":[],"mappings":";;;AAAA,mCAAwE;AAOxE,uCAKqB;AAIrB,MAAa,UAAc,SAAQ,kBAAS;IAC1C,iBAAiB,CAA0C;IAC3D,WAAW,CAA0C;IAErD,YACE,gBAAkC,EAClC,gBAAyD,EACzD,OAAyB;QAEzB,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU,GAAG,KAAK,IAAI,EAAE;QAC9B,IAAI,CAAC;YACH,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC;iBACrB,EAAE,CAAC,OAAO,EAAE,CAAC,GAAiB,EAAE,EAAE;gBACjC,IAAI,IAAA,iCAAyB,EAAC,GAAG,CAAC;oBAAE,OAAO;gBAC3C,MAAM,KAAK,GAAG,IAAA,6BAAqB,EAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,UAAU,CAAC,IAAc,EAAE,SAAiB,EAAE,IAAuB;QACnE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAG,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,MAAM,CAAC,OAAO,CACZ,IAAI,2BAAmB,CACrB,IAAa,EACb,cAAc,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,CACtD,CACF,CAAC;gBACF,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;QACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,gDAAgD;YAChD,gDAAgD;YAChD,YAAY,CAAC,GAAG,EAAE;gBAChB,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnED,gCAmEC"}
@@ -0,0 +1,16 @@
1
+ import { Transform, TransformCallback, TransformOptions } from "stream";
2
+ import type { ClientReadableStream } from "@grpc/grpc-js";
3
+ import type { ReadResp } from "../../../generated/streams_pb";
4
+ import type { Filter, ReadableSubscription } from "../../types";
5
+ import { ConvertGrpcEvent } from "../../utils";
6
+ type CreateGRPCStream = () => Promise<ClientReadableStream<ReadResp>>;
7
+ export declare class Subscription<E> extends Transform implements ReadableSubscription<E> {
8
+ #private;
9
+ protected convertGrpcEvent: ConvertGrpcEvent<ReadResp.ReadEvent, E>;
10
+ id?: string;
11
+ constructor(createGRPCStream: CreateGRPCStream, convertGrpcEvent: ConvertGrpcEvent<ReadResp.ReadEvent, E>, options: TransformOptions, checkpointReached?: Filter["checkpointReached"]);
12
+ private initialize;
13
+ _transform(resp: ReadResp, _encoding: string, next: TransformCallback): Promise<void>;
14
+ unsubscribe(): Promise<void>;
15
+ }
16
+ export {};
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Subscription = void 0;
4
+ const stream_1 = require("stream");
5
+ const utils_1 = require("../../utils");
6
+ class Subscription extends stream_1.Transform {
7
+ convertGrpcEvent;
8
+ #grpcStream;
9
+ #checkpointReached;
10
+ id;
11
+ constructor(createGRPCStream, convertGrpcEvent, options, checkpointReached) {
12
+ super({ ...options, objectMode: true });
13
+ this.convertGrpcEvent = convertGrpcEvent;
14
+ this.#grpcStream = createGRPCStream();
15
+ this.#checkpointReached = checkpointReached;
16
+ this.initialize();
17
+ }
18
+ initialize = async () => {
19
+ try {
20
+ (await this.#grpcStream)
21
+ .on("error", (err) => {
22
+ if ((0, utils_1.isClientCancellationError)(err))
23
+ return;
24
+ const error = (0, utils_1.convertToCommandError)(err);
25
+ this.emit("error", error);
26
+ })
27
+ .pipe(this);
28
+ }
29
+ catch (error) {
30
+ this.emit("error", error);
31
+ }
32
+ };
33
+ async _transform(resp, _encoding, next) {
34
+ if (resp.hasConfirmation?.()) {
35
+ this.id = resp.getConfirmation()?.getSubscriptionId();
36
+ this.emit("confirmation");
37
+ }
38
+ if (resp.hasCaughtUp?.()) {
39
+ this.emit("caughtUp");
40
+ }
41
+ if (resp.hasFellBehind?.()) {
42
+ this.emit("fellBehind");
43
+ }
44
+ if (resp.hasCheckpoint?.() && this.#checkpointReached) {
45
+ const checkpoint = resp.getCheckpoint();
46
+ const position = {
47
+ commit: BigInt(checkpoint.getCommitPosition()),
48
+ prepare: BigInt(checkpoint.getPreparePosition()),
49
+ };
50
+ await this.#checkpointReached(this, position);
51
+ }
52
+ if (resp.hasEvent?.()) {
53
+ const resolved = this.convertGrpcEvent(resp.getEvent());
54
+ return next(null, resolved);
55
+ }
56
+ next();
57
+ }
58
+ async unsubscribe() {
59
+ const stream = await this.#grpcStream;
60
+ return new Promise((resolve) => {
61
+ // https://github.com/grpc/grpc-node/issues/1464
62
+ // https://github.com/grpc/grpc-node/issues/1652
63
+ setImmediate(() => {
64
+ stream.cancel();
65
+ resolve();
66
+ });
67
+ });
68
+ }
69
+ }
70
+ exports.Subscription = Subscription;
71
+ //# sourceMappingURL=Subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.js","sourceRoot":"","sources":["../../../src/streams/utils/Subscription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { END, START } from "../../constants";
2
+ /**
3
+ * Represents an access control list for a stream.
4
+ */
5
+ export interface StreamACL {
6
+ /**
7
+ * Roles and users permitted to read the stream.
8
+ */
9
+ readRoles?: string[];
10
+ /**
11
+ * Roles and users permitted to write to the stream.
12
+ */
13
+ writeRoles?: string[];
14
+ /**
15
+ * Roles and users permitted to delete the stream.
16
+ */
17
+ deleteRoles?: string[];
18
+ /**
19
+ * Roles and users permitted to read stream metadata.
20
+ */
21
+ metaReadRoles?: string[];
22
+ /**
23
+ * Roles and users permitted to write stream metadata.
24
+ */
25
+ metaWriteRoles?: string[];
26
+ }
27
+ export interface SystemStreamMetadata {
28
+ /**
29
+ * The optional maximum age (in seconds) of events allowed in the stream.
30
+ */
31
+ maxAge?: number;
32
+ /**
33
+ * The optional streamPositon from which previous events can be scavenged.
34
+ * This is used to implement soft-deletion of streams.
35
+ */
36
+ truncateBefore?: typeof START | typeof END | number;
37
+ /**
38
+ * The optional amount of time (in seconds) for which the stream head is cacheable.
39
+ */
40
+ cacheControl?: number;
41
+ /**
42
+ * The optional ACL for the stream.
43
+ */
44
+ acl?: StreamACL;
45
+ /**
46
+ * The optional maximum number of events allowed in the stream.
47
+ */
48
+ maxCount?: number;
49
+ }
50
+ export type CustomStreamMetadata = Record<string | number, unknown>;
51
+ export type StreamMetadata<CustomMetadata extends CustomStreamMetadata = CustomStreamMetadata> = SystemStreamMetadata & CustomMetadata;
52
+ export declare const prepareStreamMetadata: <CustomMetadata extends CustomStreamMetadata = CustomStreamMetadata>(metadata: StreamMetadata<CustomMetadata>) => Record<string, unknown>;
53
+ export declare const readStreamMetadata: <CustomMetadata extends CustomStreamMetadata = CustomStreamMetadata>(metadata: Record<string, unknown>) => StreamMetadata<CustomMetadata>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readStreamMetadata = exports.prepareStreamMetadata = void 0;
4
+ const MAX_AGE = "$maxAge";
5
+ const MAX_COUNT = "$maxCount";
6
+ const TRUNCATE_BEFORE = "$tb";
7
+ const CACHE_CONTROL = "$cacheControl";
8
+ const ACL = "$acl";
9
+ const ACL_READ = "$r";
10
+ const ACL_WRITE = "$w";
11
+ const ACL_DELETE = "$d";
12
+ const ACL_META_READ = "$mr";
13
+ const ACL_META_WRITE = "$mw";
14
+ const convertAcl = (keyLookup) => (acl) => {
15
+ if (typeof acl === "string")
16
+ return acl;
17
+ return Object.entries(acl).reduce((acc, [key, value]) => {
18
+ if (keyLookup[key])
19
+ return { ...acc, [keyLookup[key]]: value };
20
+ console.warn(`Unknown key "${key}" in acl will be ignored`);
21
+ return acc;
22
+ }, {});
23
+ };
24
+ const prepareAcl = convertAcl({
25
+ readRoles: ACL_READ,
26
+ writeRoles: ACL_WRITE,
27
+ deleteRoles: ACL_DELETE,
28
+ metaReadRoles: ACL_META_READ,
29
+ metaWriteRoles: ACL_META_WRITE,
30
+ });
31
+ const readAcl = convertAcl({
32
+ [ACL_READ]: "readRoles",
33
+ [ACL_WRITE]: "writeRoles",
34
+ [ACL_DELETE]: "deleteRoles",
35
+ [ACL_META_READ]: "metaReadRoles",
36
+ [ACL_META_WRITE]: "metaWriteRoles",
37
+ });
38
+ const ensureInteger = (key, value) => {
39
+ if (Number.isInteger(value))
40
+ return value;
41
+ throw new Error(`Invalid stream metadata: "${key}" must be an integer.`);
42
+ };
43
+ const prepareStreamMetadata = (metadata) => Object.entries(metadata).reduce((acc, [key, value]) => {
44
+ switch (key) {
45
+ case "maxAge":
46
+ return { ...acc, [MAX_AGE]: ensureInteger(key, value) };
47
+ case "truncateBefore":
48
+ return { ...acc, [TRUNCATE_BEFORE]: ensureInteger(key, value) };
49
+ case "cacheControl":
50
+ return { ...acc, [CACHE_CONTROL]: ensureInteger(key, value) };
51
+ case "maxCount":
52
+ return { ...acc, [MAX_COUNT]: ensureInteger(key, value) };
53
+ case "acl":
54
+ return { ...acc, [ACL]: prepareAcl(value) };
55
+ default:
56
+ return { ...acc, [key]: value };
57
+ }
58
+ }, {});
59
+ exports.prepareStreamMetadata = prepareStreamMetadata;
60
+ const readStreamMetadata = (metadata) => Object.entries(metadata).reduce((acc, [key, value]) => {
61
+ switch (key) {
62
+ case MAX_AGE:
63
+ return { ...acc, maxAge: value };
64
+ case TRUNCATE_BEFORE:
65
+ return { ...acc, truncateBefore: value };
66
+ case CACHE_CONTROL:
67
+ return { ...acc, cacheControl: value };
68
+ case MAX_COUNT:
69
+ return { ...acc, maxCount: value };
70
+ case ACL:
71
+ return { ...acc, acl: readAcl(value) };
72
+ default:
73
+ return { ...acc, [key]: value };
74
+ }
75
+ }, {});
76
+ exports.readStreamMetadata = readStreamMetadata;
77
+ //# sourceMappingURL=streamMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamMetadata.js","sourceRoot":"","sources":["../../../src/streams/utils/streamMetadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Returns true if the stream is a system stream.
3
+ * @param streamId - The stream id to test against.
4
+ */
5
+ export declare const isSystemStream: (streamId: string) => boolean;
6
+ /**
7
+ * Returns true if the stream is a metadata stream.
8
+ * @param streamId - The stream id to test against.
9
+ */
10
+ export declare const isMetastream: (streamId: string) => boolean;
11
+ /**
12
+ * Returns the metadata stream of the stream.
13
+ * @param streamId - The stream id to get the metastream name of.
14
+ */
15
+ export declare const metastreamOf: (streamId: string) => string;
16
+ /**
17
+ * Returns the original stream of the metadata stream.
18
+ * @param metastreamId - The metastream id to get the original stream name of.
19
+ */
20
+ export declare const originalStreamOf: (metastreamId: string) => string;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.originalStreamOf = exports.metastreamOf = exports.isMetastream = exports.isSystemStream = void 0;
4
+ /**
5
+ * Returns true if the stream is a system stream.
6
+ * @param streamId - The stream id to test against.
7
+ */
8
+ const isSystemStream = (streamId) => streamId[0] === "$";
9
+ exports.isSystemStream = isSystemStream;
10
+ /**
11
+ * Returns true if the stream is a metadata stream.
12
+ * @param streamId - The stream id to test against.
13
+ */
14
+ const isMetastream = (streamId) => streamId.slice(0, 2) == "$$";
15
+ exports.isMetastream = isMetastream;
16
+ /**
17
+ * Returns the metadata stream of the stream.
18
+ * @param streamId - The stream id to get the metastream name of.
19
+ */
20
+ const metastreamOf = (streamId) => `$$${streamId}`;
21
+ exports.metastreamOf = metastreamOf;
22
+ /**
23
+ * Returns the original stream of the metadata stream.
24
+ * @param metastreamId - The metastream id to get the original stream name of.
25
+ */
26
+ const originalStreamOf = (metastreamId) => metastreamId.slice(2);
27
+ exports.originalStreamOf = originalStreamOf;
28
+ //# sourceMappingURL=systemStreams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemStreams.js","sourceRoot":"","sources":["../../../src/streams/utils/systemStreams.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC1D,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AADT,QAAA,cAAc,kBACL;AAEtB;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAW,EAAE,CACxD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;AADlB,QAAA,YAAY,gBACM;AAE/B;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;AAA7D,QAAA,YAAY,gBAAiD;AAE1E;;;GAGG;AACI,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAC/D,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AADX,QAAA,gBAAgB,oBACL"}
@@ -0,0 +1,157 @@
1
+ import type { Position } from "../types";
2
+ export type JSONType = Record<string | number, unknown> | unknown[] | string;
3
+ export type MetadataType = JSONType | Uint8Array;
4
+ export type JSONEventType<Type extends string = string, Data extends JSONType = JSONType, Metadata extends MetadataType | unknown = unknown> = Metadata extends MetadataType ? {
5
+ type: Type;
6
+ data: Data;
7
+ metadata: Metadata;
8
+ } : {
9
+ type: Type;
10
+ data: Data;
11
+ metadata?: Metadata;
12
+ };
13
+ export type BinaryEventType<Type extends string = string, Metadata extends MetadataType | unknown = unknown> = Metadata extends MetadataType ? {
14
+ type: Type;
15
+ data: Uint8Array;
16
+ metadata: Metadata;
17
+ } : {
18
+ type: Type;
19
+ data: Uint8Array;
20
+ metadata?: Metadata;
21
+ };
22
+ export type EventType = JSONEventType | BinaryEventType;
23
+ export type JSONEventData<E extends JSONEventType = JSONEventType> = E extends JSONEventType ? {
24
+ id: string;
25
+ contentType: "application/json";
26
+ type: E["type"];
27
+ data: E["data"];
28
+ metadata: E["metadata"] extends MetadataType ? E["metadata"] : MetadataType | undefined;
29
+ } : never;
30
+ export type BinaryEventData<E extends BinaryEventType = BinaryEventType> = E extends BinaryEventType ? {
31
+ id: string;
32
+ contentType: "application/octet-stream";
33
+ type: E["type"];
34
+ data: E["data"];
35
+ metadata: E["metadata"] extends MetadataType ? E["metadata"] : MetadataType | undefined;
36
+ } : never;
37
+ export type EventData<E extends EventType = EventType> = E extends BinaryEventType ? BinaryEventData<E> : E extends JSONEventType ? JSONEventData<E> : never;
38
+ export type LinkEvent = BinaryEventType<"$>", {
39
+ $causedBy?: string;
40
+ $correlationId?: string;
41
+ [key: string]: unknown;
42
+ }>;
43
+ /**
44
+ * Represents a previously written event.
45
+ */
46
+ export type RecordedEvent<E extends EventType = EventType> = E extends EventType ? {
47
+ /**
48
+ * The event stream that events belongs to.
49
+ */
50
+ streamId: string;
51
+ /**
52
+ * Unique identifier representing this event. UUID format.
53
+ */
54
+ id: string;
55
+ /**
56
+ * Indicates whether the content is internally marked as JSON.
57
+ */
58
+ isJson: E extends JSONEventType ? true : false;
59
+ /**
60
+ * Number of this event in the stream.
61
+ */
62
+ revision: bigint;
63
+ /**
64
+ * Type of this event.
65
+ */
66
+ type: E["type"];
67
+ /**
68
+ * Representing when this event was created in the database system.
69
+ */
70
+ created: Date;
71
+ /**
72
+ * Data of this event.
73
+ */
74
+ data: E extends JSONEventType ? E["data"] : Uint8Array;
75
+ /**
76
+ * Representing the metadata associated with this event.
77
+ */
78
+ metadata: E["metadata"] extends MetadataType ? E["metadata"] : MetadataType | undefined;
79
+ /**
80
+ * Position of this event in the transaction log.
81
+ * Only returned on server versions later than 22.6.0.
82
+ */
83
+ position?: Position;
84
+ } : never;
85
+ export type JSONRecordedEvent<E extends JSONEventType = JSONEventType> = RecordedEvent<E>;
86
+ export type BinaryRecordedEvent<E extends BinaryEventType = BinaryEventType> = RecordedEvent<E>;
87
+ export type AllStreamJSONRecordedEvent<E extends JSONEventType = JSONEventType> = RecordedEvent<E> & {
88
+ /**
89
+ * Position of this event in the transaction log.
90
+ */
91
+ position: Position;
92
+ };
93
+ export type AllStreamBinaryRecordedEvent<E extends BinaryEventType = BinaryEventType> = RecordedEvent<E> & {
94
+ /**
95
+ * Position of this event in the transaction log.
96
+ */
97
+ position: Position;
98
+ };
99
+ export type AllStreamRecordedEvent = AllStreamJSONRecordedEvent | AllStreamBinaryRecordedEvent;
100
+ /**
101
+ * A structure representing a single event or an resolved link event.
102
+ */
103
+ export interface ResolvedEvent<Event extends EventType = EventType> {
104
+ /**
105
+ * The event, or the resolved link event if this {@link ResolvedEvent} is a link event.
106
+ */
107
+ event?: EventTypeToRecordedEvent<Event>;
108
+ /**
109
+ * The link event if this ResolvedEvent is a link event.
110
+ */
111
+ link?: EventTypeToRecordedEvent<LinkEvent>;
112
+ /**
113
+ * Commit position of the record.
114
+ */
115
+ commitPosition?: bigint;
116
+ }
117
+ /**
118
+ * A structure representing a single event or a resolved link event from a persistent subscription to a stream.
119
+ */
120
+ export interface PersistentSubscriptionToStreamResolvedEvent<Event extends EventType = EventType> extends ResolvedEvent<Event> {
121
+ /**
122
+ * The number of times this event has been retried.
123
+ */
124
+ retryCount: number;
125
+ }
126
+ /**
127
+ * A structure representing a single event or an resolved link event.
128
+ */
129
+ export interface AllStreamResolvedEvent {
130
+ /**
131
+ * The event, or the resolved link event if this {@link ResolvedEvent} is a link event.
132
+ */
133
+ event?: AllStreamRecordedEvent;
134
+ /**
135
+ * The link event if this ResolvedEvent is a link event.
136
+ */
137
+ link?: AllStreamBinaryRecordedEvent<LinkEvent>;
138
+ /**
139
+ * Commit position of the record.
140
+ */
141
+ commitPosition?: bigint;
142
+ }
143
+ /**
144
+ * A structure representing a single event or a resolved link event from a persistent subscription to $all.
145
+ */
146
+ export interface PersistentSubscriptionToAllResolvedEvent extends AllStreamResolvedEvent {
147
+ /**
148
+ * The number of times this event has been retried.
149
+ */
150
+ retryCount: number;
151
+ }
152
+ export type EventTypeToRecordedEvent<T extends EventType> = T extends JSONEventType ? JSONRecordedEvent<T> : T extends BinaryEventType ? BinaryRecordedEvent<T> : never;
153
+ export type RecordedEventToEventType<T extends RecordedEvent> = T extends JSONRecordedEvent<infer E> ? E : T extends BinaryRecordedEvent<infer E> ? E : never;
154
+ export type EventTypeToEventData<T extends EventType> = T extends JSONEventType ? JSONEventData<T> : T extends BinaryEventType ? BinaryEventData<T> : never;
155
+ export type EventDataToEventType<T extends EventData> = T extends JSONEventData<infer E> ? E : T extends BinaryEventData<infer E> ? E : never;
156
+ export type RecordedEventToEventData<T extends RecordedEvent> = T extends JSONRecordedEvent<infer E> ? JSONEventData<E> : T extends BinaryRecordedEvent<infer E> ? BinaryEventData<E> : never;
157
+ export type EventDataToRecordedEvent<T extends EventData> = T extends JSONRecordedEvent<infer E> ? JSONEventData<E> : T extends BinaryRecordedEvent<infer E> ? BinaryEventData<E> : never;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":""}