@streamr/node 100.0.0-rc.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 (238) hide show
  1. package/LICENSE +78 -0
  2. package/README.md +54 -0
  3. package/bin/broker.ts +36 -0
  4. package/bin/config-wizard.js +4 -0
  5. package/bin/config-wizard.ts +17 -0
  6. package/bin/delete-expired-data.ts +41 -0
  7. package/bin/entry-point.ts +27 -0
  8. package/configs/development-1.env.json +68 -0
  9. package/configs/development-2.env.json +53 -0
  10. package/configs/development-3.env.json +53 -0
  11. package/configs/development-prod-resend.env.json +21 -0
  12. package/configs/docker-1.env.json +72 -0
  13. package/configs/docker-2.env.json +58 -0
  14. package/configs/docker-3.env.json +58 -0
  15. package/configuration.md +38 -0
  16. package/dist/bin/broker.d.ts +2 -0
  17. package/dist/bin/broker.js +42 -0
  18. package/dist/bin/broker.js.map +1 -0
  19. package/dist/bin/config-wizard.d.ts +2 -0
  20. package/dist/bin/config-wizard.js +22 -0
  21. package/dist/bin/config-wizard.js.map +1 -0
  22. package/dist/bin/delete-expired-data.d.ts +2 -0
  23. package/dist/bin/delete-expired-data.js +44 -0
  24. package/dist/bin/delete-expired-data.js.map +1 -0
  25. package/dist/bin/entry-point.d.ts +2 -0
  26. package/dist/bin/entry-point.js +28 -0
  27. package/dist/bin/entry-point.js.map +1 -0
  28. package/dist/package.json +78 -0
  29. package/dist/src/Plugin.d.ts +33 -0
  30. package/dist/src/Plugin.js +43 -0
  31. package/dist/src/Plugin.js.map +1 -0
  32. package/dist/src/apiAuthentication.d.ts +4 -0
  33. package/dist/src/apiAuthentication.js +16 -0
  34. package/dist/src/apiAuthentication.js.map +1 -0
  35. package/dist/src/broker.d.ts +8 -0
  36. package/dist/src/broker.js +69 -0
  37. package/dist/src/broker.js.map +1 -0
  38. package/dist/src/config/ConfigWizard.d.ts +5 -0
  39. package/dist/src/config/ConfigWizard.js +466 -0
  40. package/dist/src/config/ConfigWizard.js.map +1 -0
  41. package/dist/src/config/config.d.ts +26 -0
  42. package/dist/src/config/config.js +92 -0
  43. package/dist/src/config/config.js.map +1 -0
  44. package/dist/src/config/config.schema.json +86 -0
  45. package/dist/src/config/definitions.schema.json +35 -0
  46. package/dist/src/config/migration.d.ts +6 -0
  47. package/dist/src/config/migration.js +210 -0
  48. package/dist/src/config/migration.js.map +1 -0
  49. package/dist/src/config/validateConfig.d.ts +4 -0
  50. package/dist/src/config/validateConfig.js +40 -0
  51. package/dist/src/config/validateConfig.js.map +1 -0
  52. package/dist/src/exports.d.ts +3 -0
  53. package/dist/src/exports.js +6 -0
  54. package/dist/src/exports.js.map +1 -0
  55. package/dist/src/helpers/PayloadFormat.d.ts +19 -0
  56. package/dist/src/helpers/PayloadFormat.js +85 -0
  57. package/dist/src/helpers/PayloadFormat.js.map +1 -0
  58. package/dist/src/helpers/applyPluginClientConfigs.d.ts +3 -0
  59. package/dist/src/helpers/applyPluginClientConfigs.js +29 -0
  60. package/dist/src/helpers/applyPluginClientConfigs.js.map +1 -0
  61. package/dist/src/helpers/fetchOrThrow.d.ts +2 -0
  62. package/dist/src/helpers/fetchOrThrow.js +20 -0
  63. package/dist/src/helpers/fetchOrThrow.js.map +1 -0
  64. package/dist/src/helpers/generateMnemonicFromAddress.d.ts +5 -0
  65. package/dist/src/helpers/generateMnemonicFromAddress.js +16 -0
  66. package/dist/src/helpers/generateMnemonicFromAddress.js.map +1 -0
  67. package/dist/src/helpers/multiply.d.ts +1 -0
  68. package/dist/src/helpers/multiply.js +10 -0
  69. package/dist/src/helpers/multiply.js.map +1 -0
  70. package/dist/src/helpers/parser.d.ts +9 -0
  71. package/dist/src/helpers/parser.js +62 -0
  72. package/dist/src/helpers/parser.js.map +1 -0
  73. package/dist/src/helpers/partitions.d.ts +8 -0
  74. package/dist/src/helpers/partitions.js +32 -0
  75. package/dist/src/helpers/partitions.js.map +1 -0
  76. package/dist/src/helpers/weightedSample.d.ts +16 -0
  77. package/dist/src/helpers/weightedSample.js +35 -0
  78. package/dist/src/helpers/weightedSample.js.map +1 -0
  79. package/dist/src/httpServer.d.ts +16 -0
  80. package/dist/src/httpServer.js +71 -0
  81. package/dist/src/httpServer.js.map +1 -0
  82. package/dist/src/pluginRegistry.d.ts +3 -0
  83. package/dist/src/pluginRegistry.js +35 -0
  84. package/dist/src/pluginRegistry.js.map +1 -0
  85. package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.d.ts +12 -0
  86. package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.js +36 -0
  87. package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.js.map +1 -0
  88. package/dist/src/plugins/consoleMetrics/config.schema.json +18 -0
  89. package/dist/src/plugins/http/HttpPlugin.d.ts +8 -0
  90. package/dist/src/plugins/http/HttpPlugin.js +23 -0
  91. package/dist/src/plugins/http/HttpPlugin.js.map +1 -0
  92. package/dist/src/plugins/http/config.schema.json +12 -0
  93. package/dist/src/plugins/http/publishEndpoint.d.ts +3 -0
  94. package/dist/src/plugins/http/publishEndpoint.js +72 -0
  95. package/dist/src/plugins/http/publishEndpoint.js.map +1 -0
  96. package/dist/src/plugins/info/InfoPlugin.d.ts +9 -0
  97. package/dist/src/plugins/info/InfoPlugin.js +31 -0
  98. package/dist/src/plugins/info/InfoPlugin.js.map +1 -0
  99. package/dist/src/plugins/info/config.schema.json +12 -0
  100. package/dist/src/plugins/mqtt/Bridge.d.ts +40 -0
  101. package/dist/src/plugins/mqtt/Bridge.js +136 -0
  102. package/dist/src/plugins/mqtt/Bridge.js.map +1 -0
  103. package/dist/src/plugins/mqtt/MqttPlugin.d.ts +14 -0
  104. package/dist/src/plugins/mqtt/MqttPlugin.js +30 -0
  105. package/dist/src/plugins/mqtt/MqttPlugin.js.map +1 -0
  106. package/dist/src/plugins/mqtt/MqttServer.d.ts +22 -0
  107. package/dist/src/plugins/mqtt/MqttServer.js +109 -0
  108. package/dist/src/plugins/mqtt/MqttServer.js.map +1 -0
  109. package/dist/src/plugins/mqtt/config.schema.json +26 -0
  110. package/dist/src/plugins/operator/ConsistentHashRing.d.ts +20 -0
  111. package/dist/src/plugins/operator/ConsistentHashRing.js +64 -0
  112. package/dist/src/plugins/operator/ConsistentHashRing.js.map +1 -0
  113. package/dist/src/plugins/operator/ContractFacade.d.ts +80 -0
  114. package/dist/src/plugins/operator/ContractFacade.js +364 -0
  115. package/dist/src/plugins/operator/ContractFacade.js.map +1 -0
  116. package/dist/src/plugins/operator/MaintainTopologyHelper.d.ts +23 -0
  117. package/dist/src/plugins/operator/MaintainTopologyHelper.js +75 -0
  118. package/dist/src/plugins/operator/MaintainTopologyHelper.js.map +1 -0
  119. package/dist/src/plugins/operator/MaintainTopologyService.d.ts +11 -0
  120. package/dist/src/plugins/operator/MaintainTopologyService.js +57 -0
  121. package/dist/src/plugins/operator/MaintainTopologyService.js.map +1 -0
  122. package/dist/src/plugins/operator/OperatorFleetState.d.ts +33 -0
  123. package/dist/src/plugins/operator/OperatorFleetState.js +112 -0
  124. package/dist/src/plugins/operator/OperatorFleetState.js.map +1 -0
  125. package/dist/src/plugins/operator/OperatorPlugin.d.ts +50 -0
  126. package/dist/src/plugins/operator/OperatorPlugin.js +159 -0
  127. package/dist/src/plugins/operator/OperatorPlugin.js.map +1 -0
  128. package/dist/src/plugins/operator/StreamPartAssignments.d.ts +28 -0
  129. package/dist/src/plugins/operator/StreamPartAssignments.js +104 -0
  130. package/dist/src/plugins/operator/StreamPartAssignments.js.map +1 -0
  131. package/dist/src/plugins/operator/announceNodeToContract.d.ts +3 -0
  132. package/dist/src/plugins/operator/announceNodeToContract.js +39 -0
  133. package/dist/src/plugins/operator/announceNodeToContract.js.map +1 -0
  134. package/dist/src/plugins/operator/announceNodeToStream.d.ts +3 -0
  135. package/dist/src/plugins/operator/announceNodeToStream.js +25 -0
  136. package/dist/src/plugins/operator/announceNodeToStream.js.map +1 -0
  137. package/dist/src/plugins/operator/checkOperatorValueBreach.d.ts +2 -0
  138. package/dist/src/plugins/operator/checkOperatorValueBreach.js +21 -0
  139. package/dist/src/plugins/operator/checkOperatorValueBreach.js.map +1 -0
  140. package/dist/src/plugins/operator/closeExpiredFlags.d.ts +3 -0
  141. package/dist/src/plugins/operator/closeExpiredFlags.js +24 -0
  142. package/dist/src/plugins/operator/closeExpiredFlags.js.map +1 -0
  143. package/dist/src/plugins/operator/config.schema.json +152 -0
  144. package/dist/src/plugins/operator/createIsLeaderFn.d.ts +4 -0
  145. package/dist/src/plugins/operator/createIsLeaderFn.js +14 -0
  146. package/dist/src/plugins/operator/createIsLeaderFn.js.map +1 -0
  147. package/dist/src/plugins/operator/fetchRedundancyFactor.d.ts +2 -0
  148. package/dist/src/plugins/operator/fetchRedundancyFactor.js +43 -0
  149. package/dist/src/plugins/operator/fetchRedundancyFactor.js.map +1 -0
  150. package/dist/src/plugins/operator/formCoordinationStreamId.d.ts +3 -0
  151. package/dist/src/plugins/operator/formCoordinationStreamId.js +9 -0
  152. package/dist/src/plugins/operator/formCoordinationStreamId.js.map +1 -0
  153. package/dist/src/plugins/operator/heartbeatUtils.d.ts +67 -0
  154. package/dist/src/plugins/operator/heartbeatUtils.js +26 -0
  155. package/dist/src/plugins/operator/heartbeatUtils.js.map +1 -0
  156. package/dist/src/plugins/operator/inspectOverTime.d.ts +22 -0
  157. package/dist/src/plugins/operator/inspectOverTime.js +146 -0
  158. package/dist/src/plugins/operator/inspectOverTime.js.map +1 -0
  159. package/dist/src/plugins/operator/inspectRandomNode.d.ts +8 -0
  160. package/dist/src/plugins/operator/inspectRandomNode.js +44 -0
  161. package/dist/src/plugins/operator/inspectRandomNode.js.map +1 -0
  162. package/dist/src/plugins/operator/inspectionUtils.d.ts +23 -0
  163. package/dist/src/plugins/operator/inspectionUtils.js +120 -0
  164. package/dist/src/plugins/operator/inspectionUtils.js.map +1 -0
  165. package/dist/src/plugins/operator/maintainOperatorValue.d.ts +2 -0
  166. package/dist/src/plugins/operator/maintainOperatorValue.js +21 -0
  167. package/dist/src/plugins/operator/maintainOperatorValue.js.map +1 -0
  168. package/dist/src/plugins/operator/reviewSuspectNode.d.ts +24 -0
  169. package/dist/src/plugins/operator/reviewSuspectNode.js +56 -0
  170. package/dist/src/plugins/operator/reviewSuspectNode.js.map +1 -0
  171. package/dist/src/plugins/storage/Batch.d.ts +51 -0
  172. package/dist/src/plugins/storage/Batch.js +121 -0
  173. package/dist/src/plugins/storage/Batch.js.map +1 -0
  174. package/dist/src/plugins/storage/BatchManager.d.ts +27 -0
  175. package/dist/src/plugins/storage/BatchManager.js +117 -0
  176. package/dist/src/plugins/storage/BatchManager.js.map +1 -0
  177. package/dist/src/plugins/storage/Bucket.d.ts +23 -0
  178. package/dist/src/plugins/storage/Bucket.js +90 -0
  179. package/dist/src/plugins/storage/Bucket.js.map +1 -0
  180. package/dist/src/plugins/storage/BucketManager.d.ts +56 -0
  181. package/dist/src/plugins/storage/BucketManager.js +306 -0
  182. package/dist/src/plugins/storage/BucketManager.js.map +1 -0
  183. package/dist/src/plugins/storage/DataQueryFormat.d.ts +10 -0
  184. package/dist/src/plugins/storage/DataQueryFormat.js +51 -0
  185. package/dist/src/plugins/storage/DataQueryFormat.js.map +1 -0
  186. package/dist/src/plugins/storage/DeleteExpiredCmd.d.ts +28 -0
  187. package/dist/src/plugins/storage/DeleteExpiredCmd.js +155 -0
  188. package/dist/src/plugins/storage/DeleteExpiredCmd.js.map +1 -0
  189. package/dist/src/plugins/storage/SetMembershipSynchronizer.d.ts +33 -0
  190. package/dist/src/plugins/storage/SetMembershipSynchronizer.js +102 -0
  191. package/dist/src/plugins/storage/SetMembershipSynchronizer.js.map +1 -0
  192. package/dist/src/plugins/storage/Storage.d.ts +47 -0
  193. package/dist/src/plugins/storage/Storage.js +459 -0
  194. package/dist/src/plugins/storage/Storage.js.map +1 -0
  195. package/dist/src/plugins/storage/StorageConfig.d.ts +43 -0
  196. package/dist/src/plugins/storage/StorageConfig.js +83 -0
  197. package/dist/src/plugins/storage/StorageConfig.js.map +1 -0
  198. package/dist/src/plugins/storage/StorageEventListener.d.ts +17 -0
  199. package/dist/src/plugins/storage/StorageEventListener.js +46 -0
  200. package/dist/src/plugins/storage/StorageEventListener.js.map +1 -0
  201. package/dist/src/plugins/storage/StoragePlugin.d.ts +32 -0
  202. package/dist/src/plugins/storage/StoragePlugin.js +103 -0
  203. package/dist/src/plugins/storage/StoragePlugin.js.map +1 -0
  204. package/dist/src/plugins/storage/StoragePoller.d.ts +15 -0
  205. package/dist/src/plugins/storage/StoragePoller.js +47 -0
  206. package/dist/src/plugins/storage/StoragePoller.js.map +1 -0
  207. package/dist/src/plugins/storage/config.schema.json +88 -0
  208. package/dist/src/plugins/storage/dataMetadataEndpoint.d.ts +3 -0
  209. package/dist/src/plugins/storage/dataMetadataEndpoint.js +35 -0
  210. package/dist/src/plugins/storage/dataMetadataEndpoint.js.map +1 -0
  211. package/dist/src/plugins/storage/dataQueryEndpoint.d.ts +6 -0
  212. package/dist/src/plugins/storage/dataQueryEndpoint.js +181 -0
  213. package/dist/src/plugins/storage/dataQueryEndpoint.js.map +1 -0
  214. package/dist/src/plugins/storage/storageConfigEndpoint.d.ts +3 -0
  215. package/dist/src/plugins/storage/storageConfigEndpoint.js +31 -0
  216. package/dist/src/plugins/storage/storageConfigEndpoint.js.map +1 -0
  217. package/dist/src/plugins/subscriber/SubscriberPlugin.d.ts +16 -0
  218. package/dist/src/plugins/subscriber/SubscriberPlugin.js +22 -0
  219. package/dist/src/plugins/subscriber/SubscriberPlugin.js.map +1 -0
  220. package/dist/src/plugins/subscriber/config.schema.json +31 -0
  221. package/dist/src/plugins/websocket/Connection.d.ts +9 -0
  222. package/dist/src/plugins/websocket/Connection.js +45 -0
  223. package/dist/src/plugins/websocket/Connection.js.map +1 -0
  224. package/dist/src/plugins/websocket/PublishConnection.d.ts +12 -0
  225. package/dist/src/plugins/websocket/PublishConnection.js +46 -0
  226. package/dist/src/plugins/websocket/PublishConnection.js.map +1 -0
  227. package/dist/src/plugins/websocket/SubscribeConnection.d.ts +13 -0
  228. package/dist/src/plugins/websocket/SubscribeConnection.js +50 -0
  229. package/dist/src/plugins/websocket/SubscribeConnection.js.map +1 -0
  230. package/dist/src/plugins/websocket/WebsocketPlugin.d.ts +19 -0
  231. package/dist/src/plugins/websocket/WebsocketPlugin.js +26 -0
  232. package/dist/src/plugins/websocket/WebsocketPlugin.js.map +1 -0
  233. package/dist/src/plugins/websocket/WebsocketServer.d.ts +16 -0
  234. package/dist/src/plugins/websocket/WebsocketServer.js +132 -0
  235. package/dist/src/plugins/websocket/WebsocketServer.js.map +1 -0
  236. package/dist/src/plugins/websocket/config.schema.json +51 -0
  237. package/package.json +78 -0
  238. package/plugins.md +318 -0
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Bucket = void 0;
4
+ class Bucket {
5
+ id;
6
+ streamId;
7
+ partition;
8
+ size;
9
+ records;
10
+ dateCreate;
11
+ maxSize;
12
+ maxRecordCount;
13
+ keepAliveSeconds;
14
+ ttl;
15
+ stored;
16
+ constructor(id, streamId, partition, size, records, dateCreate, maxSize, maxRecordCount, keepAliveSeconds) {
17
+ if (!id || !id.length) {
18
+ throw new TypeError('id must be not empty string');
19
+ }
20
+ if (!streamId || !streamId.length) {
21
+ throw new TypeError('streamId must be not empty string');
22
+ }
23
+ if (partition < 0) {
24
+ throw new TypeError('partition must be >= 0');
25
+ }
26
+ if (size < 0) {
27
+ throw new TypeError('size must be => 0');
28
+ }
29
+ if (records < 0) {
30
+ throw new TypeError('records must be => 0');
31
+ }
32
+ if (!(dateCreate instanceof Date)) {
33
+ throw new TypeError('dateCreate must be instance of Date');
34
+ }
35
+ if (maxSize <= 0) {
36
+ throw new TypeError('maxSize must be > 0');
37
+ }
38
+ if (maxRecordCount <= 0) {
39
+ throw new TypeError('maxRecordCount must be > 0');
40
+ }
41
+ if (keepAliveSeconds <= 0) {
42
+ throw new Error('keepAliveSeconds must be > 0');
43
+ }
44
+ this.id = id;
45
+ this.streamId = streamId;
46
+ this.partition = partition;
47
+ this.size = size;
48
+ this.records = records;
49
+ this.dateCreate = dateCreate;
50
+ this.maxSize = maxSize;
51
+ this.maxRecordCount = maxRecordCount;
52
+ this.keepAliveSeconds = keepAliveSeconds;
53
+ this.ttl = new Date();
54
+ this.stored = false;
55
+ this.updateTTL();
56
+ }
57
+ isStored() {
58
+ return this.stored;
59
+ }
60
+ setStored() {
61
+ this.stored = true;
62
+ }
63
+ checkSize(percentDeduction = 0) {
64
+ const maxPercentSize = (this.maxSize * (100 - percentDeduction)) / 100;
65
+ const maxRecordCount = (this.maxRecordCount * (100 - percentDeduction)) / 100;
66
+ return this.size >= maxPercentSize || this.records >= maxRecordCount;
67
+ }
68
+ isAlmostFull(percentDeduction = 30) {
69
+ return this.checkSize(percentDeduction);
70
+ }
71
+ getId() {
72
+ return this.id;
73
+ }
74
+ incrementBucket(size) {
75
+ this.size += size;
76
+ this.records += 1;
77
+ this.stored = false;
78
+ this.updateTTL();
79
+ }
80
+ updateTTL() {
81
+ this.ttl = new Date();
82
+ this.ttl.setSeconds(this.ttl.getSeconds() + this.keepAliveSeconds);
83
+ }
84
+ isAlive() {
85
+ const now = new Date();
86
+ return this.ttl >= now;
87
+ }
88
+ }
89
+ exports.Bucket = Bucket;
90
+ //# sourceMappingURL=Bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bucket.js","sourceRoot":"","sources":["../../../../src/plugins/storage/Bucket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { Client } from 'cassandra-driver';
2
+ import Heap from 'heap';
3
+ import { Bucket, BucketId } from './Bucket';
4
+ type StreamPartKey = string;
5
+ interface StreamPartState {
6
+ streamId: string;
7
+ partition: number;
8
+ buckets: Heap<Bucket>;
9
+ minTimestamp?: number;
10
+ }
11
+ export interface BucketManagerOptions {
12
+ checkFullBucketsTimeout: number;
13
+ storeBucketsTimeout: number;
14
+ maxBucketSize: number;
15
+ maxBucketRecords: number;
16
+ bucketKeepAliveSeconds: number;
17
+ }
18
+ export declare class BucketManager {
19
+ opts: BucketManagerOptions;
20
+ streamParts: Record<StreamPartKey, StreamPartState>;
21
+ buckets: Record<BucketId, Bucket>;
22
+ cassandraClient: Client;
23
+ private checkFullBucketsTimeout?;
24
+ private storeBucketsTimeout?;
25
+ constructor(cassandraClient: Client, opts?: Partial<BucketManagerOptions>);
26
+ getBucketId(streamId: string, partition: number, timestamp: number): string | undefined;
27
+ incrementBucket(bucketId: BucketId, size: number): void;
28
+ private getLatestInMemoryBucket;
29
+ private findBucketId;
30
+ private checkFullBuckets;
31
+ /**
32
+ * Get buckets by timestamp range or all known from some timestamp or all buckets before some timestamp
33
+ *
34
+ * @param streamId
35
+ * @param partition
36
+ * @param fromTimestamp
37
+ * @param toTimestamp
38
+ * @returns {Promise<[]>}
39
+ */
40
+ getBucketsByTimestamp(streamId: string, partition: number, fromTimestamp?: number | undefined, toTimestamp?: number | undefined): Promise<Bucket[]>;
41
+ /**
42
+ * Get latest N buckets or get latest N buckets before some date (to check buckets in the past)
43
+ *
44
+ * @param streamId
45
+ * @param partition
46
+ * @param limit
47
+ * @param timestamp
48
+ * @returns {Promise<[]>}
49
+ */
50
+ getLastBuckets(streamId: string, partition: number, limit?: number, timestamp?: number | undefined): Promise<Bucket[]>;
51
+ private getBucketsFromDatabase;
52
+ stop(): void;
53
+ private storeBuckets;
54
+ private removeBucket;
55
+ }
56
+ export {};
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BucketManager = void 0;
7
+ const heap_1 = __importDefault(require("heap"));
8
+ const cassandra_driver_1 = require("cassandra-driver");
9
+ const utils_1 = require("@streamr/utils");
10
+ const Bucket_1 = require("./Bucket");
11
+ const utils_2 = require("@streamr/utils");
12
+ const { TimeUuid } = cassandra_driver_1.types;
13
+ const logger = new utils_1.Logger(module);
14
+ const toKey = (streamId, partition) => `${streamId}-${partition}`;
15
+ const instantiateNewHeap = () => new heap_1.default((a, b) => {
16
+ // @ts-expect-error TODO is dateCreate a Date object or a number?
17
+ return b.dateCreate - a.dateCreate;
18
+ });
19
+ class BucketManager {
20
+ opts;
21
+ streamParts;
22
+ buckets;
23
+ cassandraClient;
24
+ checkFullBucketsTimeout;
25
+ storeBucketsTimeout;
26
+ constructor(cassandraClient, opts = {}) {
27
+ const defaultOptions = {
28
+ checkFullBucketsTimeout: 1000,
29
+ storeBucketsTimeout: 500,
30
+ maxBucketSize: 1024 * 1024 * 100,
31
+ maxBucketRecords: 500 * 1000,
32
+ bucketKeepAliveSeconds: 60
33
+ };
34
+ this.opts = (0, utils_2.merge)(defaultOptions, opts);
35
+ this.streamParts = Object.create(null);
36
+ this.buckets = Object.create(null);
37
+ this.cassandraClient = cassandraClient;
38
+ this.checkFullBucketsTimeout = undefined;
39
+ this.storeBucketsTimeout = undefined;
40
+ this.checkFullBuckets();
41
+ this.storeBuckets();
42
+ }
43
+ getBucketId(streamId, partition, timestamp) {
44
+ let bucketId;
45
+ const key = toKey(streamId, partition);
46
+ if (this.streamParts[key]) {
47
+ logger.trace('Found stream', { key });
48
+ bucketId = this.findBucketId(key, timestamp);
49
+ if (!bucketId) {
50
+ const stream = this.streamParts[key];
51
+ stream.minTimestamp = stream.minTimestamp !== undefined ? Math.min(stream.minTimestamp, timestamp) : timestamp;
52
+ }
53
+ }
54
+ else {
55
+ logger.trace('Create new (stream not found)', { key });
56
+ this.streamParts[key] = {
57
+ streamId,
58
+ partition,
59
+ buckets: instantiateNewHeap(),
60
+ minTimestamp: timestamp
61
+ };
62
+ }
63
+ return bucketId;
64
+ }
65
+ incrementBucket(bucketId, size) {
66
+ const bucket = this.buckets[bucketId];
67
+ if (bucket) {
68
+ bucket.incrementBucket(size);
69
+ }
70
+ else {
71
+ logger.warn('Failed to increment bucket (bucket not found)', { bucketId });
72
+ }
73
+ }
74
+ getLatestInMemoryBucket(key) {
75
+ const stream = this.streamParts[key];
76
+ if (stream) {
77
+ return stream.buckets.peek();
78
+ }
79
+ return undefined;
80
+ }
81
+ findBucketId(key, timestamp) {
82
+ let bucketId;
83
+ logger.trace('Check stream in state', {
84
+ key,
85
+ timestamp
86
+ });
87
+ const stream = this.streamParts[key];
88
+ if (stream) {
89
+ const latestBucket = this.getLatestInMemoryBucket(key);
90
+ if (latestBucket) {
91
+ // latest bucket is younger than timestamp
92
+ if (!latestBucket.isAlmostFull() && latestBucket.dateCreate <= new Date(timestamp)) {
93
+ bucketId = latestBucket.getId();
94
+ // timestamp is in the past
95
+ }
96
+ else if (latestBucket.dateCreate > new Date(timestamp)) {
97
+ const currentBuckets = stream.buckets.toArray();
98
+ // remove latest
99
+ currentBuckets.shift();
100
+ for (const currentBucket of currentBuckets) {
101
+ if (currentBucket.dateCreate <= new Date(timestamp)) {
102
+ bucketId = currentBucket.getId();
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ return bucketId;
110
+ }
111
+ async checkFullBuckets() {
112
+ const streamIds = Object.keys(this.streamParts);
113
+ for (const streamIdKey of streamIds) {
114
+ const stream = this.streamParts[streamIdKey];
115
+ const { streamId, partition } = stream;
116
+ const { minTimestamp } = stream;
117
+ // minTimestamp is undefined if all buckets are found
118
+ if (minTimestamp === undefined) {
119
+ // eslint-disable-next-line no-continue
120
+ continue;
121
+ }
122
+ let insertNewBucket = false;
123
+ // helper function
124
+ const checkFoundBuckets = (foundBuckets) => {
125
+ const foundBucket = foundBuckets.length ? foundBuckets[0] : undefined;
126
+ if (foundBucket && !(foundBucket.getId() in this.buckets)) {
127
+ stream.buckets.push(foundBucket);
128
+ this.buckets[foundBucket.getId()] = foundBucket;
129
+ stream.minTimestamp = undefined;
130
+ }
131
+ else {
132
+ insertNewBucket = true;
133
+ }
134
+ };
135
+ // check in memory
136
+ const key = toKey(streamId, partition);
137
+ const latestBucket = this.getLatestInMemoryBucket(key);
138
+ if (latestBucket) {
139
+ // if latest is full or almost full - create new bucket
140
+ insertNewBucket = latestBucket.isAlmostFull();
141
+ }
142
+ // if latest is not found or it's full => try to find latest in database
143
+ if (!latestBucket || latestBucket.isAlmostFull()) {
144
+ // eslint-disable-next-line no-await-in-loop
145
+ const foundBuckets = await this.getLastBuckets(streamId, partition, 1);
146
+ checkFoundBuckets(foundBuckets);
147
+ }
148
+ // check in database that we have bucket for minTimestamp
149
+ if (!insertNewBucket && !this.findBucketId(key, minTimestamp)) {
150
+ // eslint-disable-next-line no-await-in-loop
151
+ const foundBuckets = await this.getLastBuckets(streamId, partition, 1, minTimestamp);
152
+ checkFoundBuckets(foundBuckets);
153
+ }
154
+ if (insertNewBucket) {
155
+ logger.trace('Create new bucket (existing bucket for timestamp not found)', { minTimestamp });
156
+ // we create first in memory, so don't wait for database, then _storeBuckets inserts bucket into database
157
+ const newBucket = new Bucket_1.Bucket(TimeUuid.fromDate(new Date(minTimestamp)).toString(), streamId, partition, 0, 0, new Date(minTimestamp), this.opts.maxBucketSize, this.opts.maxBucketRecords, this.opts.bucketKeepAliveSeconds);
158
+ stream.buckets.push(newBucket);
159
+ this.buckets[newBucket.getId()] = newBucket;
160
+ // eslint-disable-next-line require-atomic-updates
161
+ stream.minTimestamp = undefined;
162
+ }
163
+ }
164
+ this.checkFullBucketsTimeout = setTimeout(() => this.checkFullBuckets(), this.opts.checkFullBucketsTimeout);
165
+ }
166
+ /**
167
+ * Get buckets by timestamp range or all known from some timestamp or all buckets before some timestamp
168
+ *
169
+ * @param streamId
170
+ * @param partition
171
+ * @param fromTimestamp
172
+ * @param toTimestamp
173
+ * @returns {Promise<[]>}
174
+ */
175
+ async getBucketsByTimestamp(streamId, partition, fromTimestamp = undefined, toTimestamp = undefined) {
176
+ const getExplicitFirst = () => {
177
+ // if fromTimestamp is defined, the first data point are in a some earlier bucket
178
+ // (bucket.dateCreated<=fromTimestamp as data within one millisecond won't be divided to multiple buckets)
179
+ const QUERY = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC LIMIT 1';
180
+ const params = [streamId, partition, fromTimestamp];
181
+ return this.getBucketsFromDatabase(QUERY, params, streamId, partition);
182
+ };
183
+ const getRest = () => {
184
+ /* eslint-disable max-len */
185
+ const GET_LAST_BUCKETS_RANGE_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create > ? AND date_create <= ? ORDER BY date_create DESC';
186
+ const GET_LAST_BUCKETS_FROM_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create > ? ORDER BY date_create DESC';
187
+ const GET_LAST_BUCKETS_TO_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC';
188
+ let query;
189
+ let params;
190
+ if (fromTimestamp !== undefined && toTimestamp !== undefined) {
191
+ query = GET_LAST_BUCKETS_RANGE_TIMESTAMP;
192
+ params = [streamId, partition, fromTimestamp, toTimestamp];
193
+ }
194
+ else if (fromTimestamp !== undefined && toTimestamp === undefined) {
195
+ query = GET_LAST_BUCKETS_FROM_TIMESTAMP;
196
+ params = [streamId, partition, fromTimestamp];
197
+ }
198
+ else if (fromTimestamp === undefined && toTimestamp !== undefined) {
199
+ query = GET_LAST_BUCKETS_TO_TIMESTAMP;
200
+ params = [streamId, partition, toTimestamp];
201
+ }
202
+ else {
203
+ throw new TypeError(`Not correct combination of fromTimestamp (${fromTimestamp}) and toTimestamp (${toTimestamp})`);
204
+ }
205
+ return this.getBucketsFromDatabase(query, params, streamId, partition);
206
+ };
207
+ if (fromTimestamp !== undefined) {
208
+ return Promise.all([getExplicitFirst(), getRest()])
209
+ .then(([first, rest]) => rest.concat(first));
210
+ }
211
+ else { // eslint-disable-line no-else-return
212
+ return getRest();
213
+ }
214
+ }
215
+ /**
216
+ * Get latest N buckets or get latest N buckets before some date (to check buckets in the past)
217
+ *
218
+ * @param streamId
219
+ * @param partition
220
+ * @param limit
221
+ * @param timestamp
222
+ * @returns {Promise<[]>}
223
+ */
224
+ async getLastBuckets(streamId, partition, limit = 1, timestamp = undefined) {
225
+ const GET_LAST_BUCKETS = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? ORDER BY date_create DESC LIMIT ?';
226
+ const GET_LAST_BUCKETS_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC LIMIT ?';
227
+ let query;
228
+ let params;
229
+ if (timestamp) {
230
+ query = GET_LAST_BUCKETS_TIMESTAMP;
231
+ params = [streamId, partition, timestamp, limit];
232
+ }
233
+ else {
234
+ query = GET_LAST_BUCKETS;
235
+ params = [streamId, partition, limit];
236
+ }
237
+ return this.getBucketsFromDatabase(query, params, streamId, partition);
238
+ }
239
+ async getBucketsFromDatabase(query, params, streamId, partition) {
240
+ const buckets = [];
241
+ const resultSet = await this.cassandraClient.execute(query, params, {
242
+ prepare: true,
243
+ });
244
+ resultSet.rows.forEach((row) => {
245
+ const { id, records, size, date_create: dateCreate } = row;
246
+ const bucket = new Bucket_1.Bucket(id.toString(), streamId, partition, size, records, new Date(dateCreate), this.opts.maxBucketSize, this.opts.maxBucketRecords, this.opts.bucketKeepAliveSeconds);
247
+ buckets.push(bucket);
248
+ });
249
+ return buckets;
250
+ }
251
+ stop() {
252
+ clearInterval(this.checkFullBucketsTimeout);
253
+ clearInterval(this.storeBucketsTimeout);
254
+ }
255
+ async storeBuckets() {
256
+ // for non-existing buckets UPDATE works as INSERT
257
+ const UPDATE_BUCKET = 'UPDATE bucket SET size = ?, records = ?, id = ? WHERE stream_id = ? AND partition = ? AND date_create = ?';
258
+ const notStoredBuckets = Object.values(this.buckets).filter((bucket) => !bucket.isStored());
259
+ const results = await Promise.allSettled(notStoredBuckets.map(async (bucket) => {
260
+ const { id, size, records, streamId, partition, dateCreate } = bucket;
261
+ const params = [size, records, id, streamId, partition, dateCreate];
262
+ await this.cassandraClient.execute(UPDATE_BUCKET, params, {
263
+ prepare: true
264
+ });
265
+ return {
266
+ bucket,
267
+ records
268
+ };
269
+ }));
270
+ results.forEach((result) => {
271
+ if (result.status === 'fulfilled') {
272
+ const { bucket: storedBucket, records } = result.value;
273
+ if (storedBucket.records === records) {
274
+ storedBucket.setStored();
275
+ }
276
+ if (!storedBucket.isAlive() && storedBucket.isStored()) {
277
+ this.removeBucket(storedBucket.getId(), storedBucket.streamId, storedBucket.partition);
278
+ }
279
+ }
280
+ });
281
+ const bucketsToRemove = Object.values(this.buckets).filter((bucket) => bucket.isStored() && !bucket.isAlive());
282
+ bucketsToRemove.forEach((bucket) => this.removeBucket(bucket.getId(), bucket.streamId, bucket.partition));
283
+ this.storeBucketsTimeout = setTimeout(() => this.storeBuckets(), this.opts.storeBucketsTimeout);
284
+ }
285
+ removeBucket(bucketId, streamId, partition) {
286
+ delete this.buckets[bucketId];
287
+ const key = toKey(streamId, partition);
288
+ const stream = this.streamParts[key];
289
+ if (stream) {
290
+ const currentBuckets = stream.buckets.toArray();
291
+ for (let i = 0; i < currentBuckets.length; i++) {
292
+ if (currentBuckets[i].getId() === bucketId) {
293
+ delete currentBuckets[i];
294
+ break;
295
+ }
296
+ }
297
+ // after removing we need to rebuild heap
298
+ stream.buckets = instantiateNewHeap();
299
+ currentBuckets.forEach((bucket) => {
300
+ stream.buckets.push(bucket);
301
+ });
302
+ }
303
+ }
304
+ }
305
+ exports.BucketManager = BucketManager;
306
+ //# sourceMappingURL=BucketManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BucketManager.js","sourceRoot":"","sources":["../../../../src/plugins/storage/BucketManager.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AACvB,uDAA0D;AAC1D,0CAAuC;AACvC,qCAA2C;AAC3C,0CAAsC;AAEtC,MAAM,EAAE,QAAQ,EAAE,GAAG,wBAAc,CAAA;AAEnC,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAmBjC,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAiB,EAAE,CAAC,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAA;AAEhG,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,cAAI,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC/D,iEAAiE;IACjE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;AACtC,CAAC,CAAC,CAAA;AAEF,MAAa,aAAa;IAEtB,IAAI,CAAsB;IAC1B,WAAW,CAAwC;IACnD,OAAO,CAA0B;IACjC,eAAe,CAAQ;IACf,uBAAuB,CAAiB;IACxC,mBAAmB,CAAiB;IAE5C,YAAY,eAAuB,EAAE,OAAsC,EAAE;QACzE,MAAM,cAAc,GAAG;YACnB,uBAAuB,EAAE,IAAI;YAC7B,mBAAmB,EAAE,GAAG;YACxB,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG;YAChC,gBAAgB,EAAE,GAAG,GAAG,IAAI;YAC5B,sBAAsB,EAAE,EAAE;SAC7B,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAA,aAAK,EAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QAEtC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAA;QAEpC,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB;QAC9D,IAAI,QAAQ,CAAA;QAEZ,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAEtC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACrC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACpC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAClH,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YAEtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;gBACpB,QAAQ;gBACR,SAAS;gBACT,OAAO,EAAE,kBAAkB,EAAE;gBAC7B,YAAY,EAAE,SAAS;aAC1B,CAAA;QACL,CAAC;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,eAAe,CAAC,QAAkB,EAAE,IAAY;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC9E,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,GAAkB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAChC,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC;IAEO,YAAY,CAAC,GAAkB,EAAE,SAAiB;QACtD,IAAI,QAAQ,CAAA;QACZ,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;YAClC,GAAG;YACH,SAAS;SACZ,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;YAEtD,IAAI,YAAY,EAAE,CAAC;gBACf,0CAA0C;gBAC1C,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,YAAY,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjF,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAA;oBAC/B,2BAA2B;gBAC/B,CAAC;qBAAM,IAAI,YAAY,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;oBAC/C,gBAAgB;oBAChB,cAAc,CAAC,KAAK,EAAE,CAAA;oBAEtB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;wBACzC,IAAI,aAAa,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;4BAClD,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,CAAA;4BAChC,MAAK;wBACT,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAE/C,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YAC5C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;YACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;YAE/B,qDAAqD;YACrD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC7B,uCAAuC;gBACvC,SAAQ;YACZ,CAAC;YAED,IAAI,eAAe,GAAG,KAAK,CAAA;YAE3B,kBAAkB;YAClB,MAAM,iBAAiB,GAAG,CAAC,YAAsB,EAAE,EAAE;gBACjD,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAErE,IAAI,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAA;oBAC/C,MAAM,CAAC,YAAY,GAAG,SAAS,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACJ,eAAe,GAAG,IAAI,CAAA;gBAC1B,CAAC;YACL,CAAC,CAAA;YAED,kBAAkB;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;YACtD,IAAI,YAAY,EAAE,CAAC;gBACf,uDAAuD;gBACvD,eAAe,GAAG,YAAY,CAAC,YAAY,EAAE,CAAA;YACjD,CAAC;YAED,wEAAwE;YACxE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC/C,4CAA4C;gBAC5C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;gBACtE,iBAAiB,CAAC,YAAY,CAAC,CAAA;YACnC,CAAC;YAED,yDAAyD;YACzD,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC5D,4CAA4C;gBAC5C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;gBACpF,iBAAiB,CAAC,YAAY,CAAC,CAAA;YACnC,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,6DAA6D,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAE7F,yGAAyG;gBACzG,MAAM,SAAS,GAAG,IAAI,eAAM,CACxB,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,EACvG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACxF,CAAA;gBAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;gBAC3C,kDAAkD;gBAClD,MAAM,CAAC,YAAY,GAAG,SAAS,CAAA;YACnC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC/G,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,qBAAqB,CACvB,QAAgB,EAChB,SAAiB,EACjB,gBAAoC,SAAS,EAC7C,cAAkC,SAAS;QAE3C,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,iFAAiF;YACjF,0GAA0G;YAC1G,MAAM,KAAK,GAAG,mHAAmH,CAAA;YACjI,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;YACnD,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC1E,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,4BAA4B;YAC5B,MAAM,gCAAgC,GAAG,+HAA+H,CAAA;YACxK,MAAM,+BAA+B,GAAG,0GAA0G,CAAA;YAClJ,MAAM,6BAA6B,GAAG,2GAA2G,CAAA;YACjJ,IAAI,KAAK,CAAA;YACT,IAAI,MAAM,CAAA;YACV,IAAI,aAAa,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC3D,KAAK,GAAG,gCAAgC,CAAA;gBACxC,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;YAC9D,CAAC;iBAAM,IAAI,aAAa,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAClE,KAAK,GAAG,+BAA+B,CAAA;gBACvC,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;YACjD,CAAC;iBAAM,IAAI,aAAa,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAClE,KAAK,GAAG,6BAA6B,CAAA;gBACrC,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,SAAS,CAAC,6CAA6C,aAAa,sBAAsB,WAAW,GAAG,CAAC,CAAA;YACvH,CAAC;YACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC1E,CAAC,CAAA;QAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC9C,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC,CAAC,qCAAqC;YAC1C,OAAO,OAAO,EAAE,CAAA;QACpB,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAAK,GAAG,CAAC,EAAE,YAAgC,SAAS;QAC1G,MAAM,gBAAgB,GAAG,+FAA+F,CAAA;QACxH,MAAM,0BAA0B,GAAG,mHAAmH,CAAA;QAEtJ,IAAI,KAAK,CAAA;QACT,IAAI,MAAM,CAAA;QAEV,IAAI,SAAS,EAAE,CAAC;YACZ,KAAK,GAAG,0BAA0B,CAAA;YAClC,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,gBAAgB,CAAA;YACxB,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC1E,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAAa,EAAE,MAAW,EAAE,QAAgB,EAAE,SAAiB;QAChG,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;YAChE,OAAO,EAAE,IAAI;SAChB,CAAC,CAAA;QAEF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAAA;YAE1D,MAAM,MAAM,GAAG,IAAI,eAAM,CACrB,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,EACvE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACxF,CAAA;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;QAEF,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,IAAI;QACA,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAC3C,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC3C,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,kDAAkD;QAClD,MAAM,aAAa,GAAG,2GAA2G,CAAA;QAEjI,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEnG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3E,MAAM,EACF,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EACrD,GAAG,MAAM,CAAA;YACV,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;YAEnE,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE;gBACtD,OAAO,EAAE,IAAI;aAChB,CAAC,CAAA;YACF,OAAO;gBACH,MAAM;gBACN,OAAO;aACV,CAAA;QACL,CAAC,CAAC,CAAC,CAAA;QAEH,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACvB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;gBAEtD,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;oBACnC,YAAY,CAAC,SAAS,EAAE,CAAA;gBAC5B,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACrD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;gBAC1F,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QACtH,eAAe,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAEjH,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACnG,CAAC;IAEO,YAAY,CAAC,QAAkB,EAAE,QAAgB,EAAE,SAAiB;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE7B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACzC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAA;oBACxB,MAAK;gBACT,CAAC;YACL,CAAC;YAED,yCAAyC;YACzC,MAAM,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAA;YACrC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;gBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACN,CAAC;IACL,CAAC;CACJ;AA3VD,sCA2VC"}
@@ -0,0 +1,10 @@
1
+ import { StreamMessage } from '@streamr/protocol';
2
+ export interface Format {
3
+ formatMessage: ((bytes: Uint8Array) => string) | ((bytes: Uint8Array) => Uint8Array);
4
+ contentType: string;
5
+ delimiter?: string;
6
+ header?: string;
7
+ footer?: string;
8
+ }
9
+ export declare const toObject: (msg: StreamMessage) => any;
10
+ export declare const getFormat: (id: string | undefined) => Format | undefined;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFormat = exports.toObject = void 0;
4
+ const trackerless_network_1 = require("@streamr/trackerless-network");
5
+ const utils_1 = require("@streamr/utils");
6
+ const createJsonFormat = (formatMessage) => {
7
+ return {
8
+ formatMessage,
9
+ contentType: 'application/json',
10
+ delimiter: ',',
11
+ header: '[',
12
+ footer: ']'
13
+ };
14
+ };
15
+ const createBinaryFormat = (formatMessage) => {
16
+ return {
17
+ formatMessage,
18
+ contentType: 'application/octet-stream'
19
+ };
20
+ };
21
+ const toObject = (msg) => {
22
+ const parsedContent = msg.getParsedContent();
23
+ const result = {
24
+ streamId: msg.getStreamId(),
25
+ streamPartition: msg.getStreamPartition(),
26
+ timestamp: msg.getTimestamp(),
27
+ sequenceNumber: msg.getSequenceNumber(),
28
+ publisherId: msg.getPublisherId(),
29
+ msgChainId: msg.getMsgChainId(),
30
+ messageType: msg.messageType,
31
+ contentType: msg.contentType,
32
+ encryptionType: msg.encryptionType,
33
+ content: parsedContent instanceof Uint8Array ? (0, utils_1.binaryToHex)(parsedContent) : parsedContent,
34
+ signature: (0, utils_1.binaryToHex)(msg.signature),
35
+ };
36
+ if (msg.groupKeyId !== undefined) {
37
+ result.groupKeyId = msg.groupKeyId;
38
+ }
39
+ return result;
40
+ };
41
+ exports.toObject = toObject;
42
+ const FORMATS = {
43
+ 'object': createJsonFormat((bytes) => JSON.stringify((0, exports.toObject)((0, trackerless_network_1.convertBytesToStreamMessage)(bytes)))),
44
+ 'raw': createBinaryFormat(utils_1.toLengthPrefixedFrame)
45
+ };
46
+ const getFormat = (id) => {
47
+ const key = id ?? 'object';
48
+ return FORMATS[key];
49
+ };
50
+ exports.getFormat = getFormat;
51
+ //# sourceMappingURL=DataQueryFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataQueryFormat.js","sourceRoot":"","sources":["../../../../src/plugins/storage/DataQueryFormat.ts"],"names":[],"mappings":";;;AACA,sEAA0E;AAC1E,0CAAmE;AAUnE,MAAM,gBAAgB,GAAG,CAAC,aAA4C,EAAU,EAAE;IAC9E,OAAO;QACH,aAAa;QACb,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;KACd,CAAA;AACL,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,aAAgD,EAAU,EAAE;IACpF,OAAO;QACH,aAAa;QACb,WAAW,EAAE,0BAA0B;KAC1C,CAAA;AACL,CAAC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAO,EAAE;IAChD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC5C,MAAM,MAAM,GAAQ;QAChB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;QAC3B,eAAe,EAAE,GAAG,CAAC,kBAAkB,EAAE;QACzC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;QAC7B,cAAc,EAAE,GAAG,CAAC,iBAAiB,EAAE;QACvC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE;QACjC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE;QAC/B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,OAAO,EAAE,aAAa,YAAY,UAAU,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa;QACzF,SAAS,EAAE,IAAA,mBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;KACxC,CAAA;IACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB;AAED,MAAM,OAAO,GAA2B;IACpC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAC,IAAA,iDAA2B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/G,KAAK,EAAE,kBAAkB,CAAC,6BAAqB,CAAC;CACnD,CAAA;AAEM,MAAM,SAAS,GAAG,CAAC,EAAsB,EAAsB,EAAE;IACpE,MAAM,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAA;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA;AAHY,QAAA,SAAS,aAGrB"}
@@ -0,0 +1,28 @@
1
+ import { Client } from 'cassandra-driver';
2
+ import { Limit } from 'p-limit';
3
+ import { StreamrClient } from '@streamr/sdk';
4
+ interface Options {
5
+ streamrBaseUrl: string;
6
+ cassandraUsername: string;
7
+ cassandraPassword: string;
8
+ cassandraHosts: string[];
9
+ cassandraDatacenter: string;
10
+ cassandraKeyspace: string;
11
+ bucketLimit?: number;
12
+ dryRun?: boolean;
13
+ }
14
+ export declare class DeleteExpiredCmd {
15
+ streamrBaseUrl: string;
16
+ dryRun: boolean;
17
+ bucketLimit: number;
18
+ cassandraClient: Client;
19
+ limit: Limit;
20
+ constructor({ streamrBaseUrl, cassandraUsername, cassandraPassword, cassandraHosts, cassandraDatacenter, cassandraKeyspace, bucketLimit, dryRun }: Options);
21
+ run(client: StreamrClient): Promise<void>;
22
+ private getStreams;
23
+ private fetchStreamsInfo;
24
+ private getPotentiallyExpiredBuckets;
25
+ private filterExpiredBuckets;
26
+ private deleteExpired;
27
+ }
28
+ export {};