@omnitronix/rng-client-core 1.0.8 → 1.0.10

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.
@@ -9,11 +9,41 @@ export interface RingBufferValue {
9
9
  value: number;
10
10
  seed: number;
11
11
  }
12
+ export interface RangeRefillFailure {
13
+ engine_type?: string;
14
+ reason?: string;
15
+ error?: string;
16
+ count: number;
17
+ }
18
+ export interface RangeRefillRequest {
19
+ engine_type?: string;
20
+ reason?: string;
21
+ count: number;
22
+ }
23
+ export interface RangeHistogram {
24
+ engine_type?: string;
25
+ reason?: string;
26
+ buckets: {
27
+ [bucket: string]: number;
28
+ };
29
+ sum: number;
30
+ count: number;
31
+ }
32
+ export interface RangeMetrics {
33
+ capacity: number;
34
+ fill_level: number;
35
+ fill_ratio: number;
36
+ refill_requests_total: RangeRefillRequest[];
37
+ refill_failures_total: RangeRefillFailure[];
38
+ starvation_events_total: number;
39
+ refill_duration_ms: RangeHistogram[];
40
+ latency_ms: RangeHistogram[];
41
+ }
12
42
  export interface RingBufferStats {
13
43
  id: string;
14
44
  size: number;
15
45
  ranges: {
16
- [key: string]: number;
46
+ [key: string]: RangeMetrics;
17
47
  };
18
48
  }
19
49
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;CACH"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAE3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAEnB,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAC5C,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAC5C,uBAAuB,EAAE,MAAM,CAAC;IAEhC,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;KAC7B,CAAC;CACH"}
@@ -13,10 +13,20 @@ export declare class RingBuffer {
13
13
  private clientCore;
14
14
  private storageType;
15
15
  private storage;
16
+ private refillRequests;
17
+ private refillFailures;
18
+ private starvationEvents;
19
+ private refillDurations;
20
+ private latencies;
16
21
  constructor({ size, clientCore, storageType }: RingBufferConfig);
22
+ private getRangeKey;
23
+ private getEngineType;
24
+ private incrementCounter;
25
+ private recordHistogram;
26
+ private createHistogramBuckets;
17
27
  getStats(): Promise<RingBufferStats | undefined>;
18
- getNumberByRange(min: number, max: number): Promise<RingBufferValue | undefined>;
19
- fillUpBuffer(buffer: SingleRingBuffer): Promise<void>;
28
+ getNumbersByRange(min: number, max: number, count?: number): Promise<RingBufferValue[] | undefined>;
29
+ fillUpBuffer(buffer: SingleRingBuffer, reason?: string): Promise<void>;
20
30
  pullNumberByBuffer(buffer: SingleRingBuffer): Promise<RingBufferValue[]>;
21
31
  createBuffer(min: number, max: number): SingleRingBuffer;
22
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAc;gBAEjB,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,gBAAgB;IAQzD,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAIhD,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAoBjC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD,kBAAkB,CACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IAa7B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB;CAMzD"}
1
+ {"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAiBD,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,SAAS,CAAyB;gBAE9B,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,gBAAgB;IAQ/D,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,sBAAsB;IA2BxB,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA8JhD,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,SAAI,GACR,OAAO,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;IA4CnC,YAAY,CAChB,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,MAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAkCV,kBAAkB,CACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IAa7B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB;CAMzD"}
@@ -5,40 +5,265 @@ const ring_storage_1 = require("./ring-storage");
5
5
  exports.FILL_UP_BUFFER_DELAY = 5;
6
6
  class RingBuffer {
7
7
  constructor({ size, clientCore, storageType }) {
8
+ this.refillRequests = [];
9
+ this.refillFailures = [];
10
+ this.starvationEvents = [];
11
+ this.refillDurations = [];
12
+ this.latencies = [];
8
13
  this.size = size ?? 2000;
9
14
  this.maxSize = this.size * 2;
10
15
  this.clientCore = clientCore;
11
16
  this.storageType = storageType;
12
17
  this.storage = new ring_storage_1.RingStorage(storageType);
13
18
  }
19
+ getRangeKey(min, max) {
20
+ return `${min}-${max}`;
21
+ }
22
+ getEngineType() {
23
+ return "default";
24
+ }
25
+ incrementCounter(counters, rng_range, reason, error) {
26
+ const engine_type = this.getEngineType();
27
+ let counter = counters.find((c) => c.rng_range === rng_range &&
28
+ c.engine_type === engine_type &&
29
+ c.reason === reason &&
30
+ c.error === error);
31
+ if (!counter) {
32
+ counter = { rng_range, engine_type, reason, error, count: 0 };
33
+ counters.push(counter);
34
+ }
35
+ counter.count++;
36
+ }
37
+ recordHistogram(histograms, rng_range, value, reason) {
38
+ const engine_type = this.getEngineType();
39
+ let histogram = histograms.find((h) => h.rng_range === rng_range &&
40
+ h.engine_type === engine_type &&
41
+ h.reason === reason);
42
+ if (!histogram) {
43
+ histogram = { rng_range, engine_type, reason, values: [] };
44
+ histograms.push(histogram);
45
+ }
46
+ histogram.values.push(value);
47
+ }
48
+ createHistogramBuckets(values) {
49
+ const buckets = {};
50
+ const standardBuckets = [
51
+ 0, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000,
52
+ ];
53
+ let sum = 0;
54
+ const count = values.length;
55
+ for (const value of values) {
56
+ sum += value;
57
+ for (const bucket of standardBuckets) {
58
+ const bucketKey = bucket.toString();
59
+ if (value <= bucket) {
60
+ buckets[bucketKey] = (buckets[bucketKey] || 0) + 1;
61
+ }
62
+ }
63
+ buckets["+Inf"] = (buckets["+Inf"] || 0) + 1;
64
+ }
65
+ return { buckets, sum, count };
66
+ }
14
67
  async getStats() {
15
- return this.storage.getStats();
68
+ const baseStats = await this.storage.getStats();
69
+ if (!baseStats) {
70
+ return undefined;
71
+ }
72
+ const rangesMap = {};
73
+ for (const [rangeKey, rangeMetrics] of Object.entries(baseStats.ranges)) {
74
+ rangesMap[rangeKey] = {
75
+ capacity: this.size,
76
+ fill_level: rangeMetrics.fill_level,
77
+ fill_ratio: this.size > 0 ? rangeMetrics.fill_level / this.size : 0,
78
+ refill_requests_total: [],
79
+ refill_failures_total: [],
80
+ starvation_events_total: 0,
81
+ refill_duration_ms: [],
82
+ latency_ms: [],
83
+ };
84
+ }
85
+ const allRangeKeys = new Set();
86
+ Object.keys(baseStats.ranges).forEach((k) => allRangeKeys.add(k));
87
+ this.refillRequests.forEach((r) => allRangeKeys.add(r.rng_range));
88
+ this.refillFailures.forEach((r) => allRangeKeys.add(r.rng_range));
89
+ this.starvationEvents.forEach((r) => allRangeKeys.add(r.rng_range));
90
+ this.refillDurations.forEach((r) => allRangeKeys.add(r.rng_range));
91
+ this.latencies.forEach((r) => allRangeKeys.add(r.rng_range));
92
+ allRangeKeys.forEach((rangeKey) => {
93
+ if (!rangesMap[rangeKey]) {
94
+ rangesMap[rangeKey] = {
95
+ capacity: this.size,
96
+ fill_level: 0,
97
+ fill_ratio: 0,
98
+ refill_requests_total: [],
99
+ refill_failures_total: [],
100
+ starvation_events_total: 0,
101
+ refill_duration_ms: [],
102
+ latency_ms: [],
103
+ };
104
+ }
105
+ });
106
+ this.refillRequests.forEach((req) => {
107
+ if (!rangesMap[req.rng_range]) {
108
+ rangesMap[req.rng_range] = {
109
+ capacity: this.size,
110
+ fill_level: 0,
111
+ fill_ratio: 0,
112
+ refill_requests_total: [],
113
+ refill_failures_total: [],
114
+ starvation_events_total: 0,
115
+ refill_duration_ms: [],
116
+ latency_ms: [],
117
+ };
118
+ }
119
+ rangesMap[req.rng_range].refill_requests_total.push({
120
+ engine_type: req.engine_type,
121
+ reason: req.reason,
122
+ count: req.count,
123
+ });
124
+ });
125
+ this.refillFailures.forEach((fail) => {
126
+ if (!rangesMap[fail.rng_range]) {
127
+ rangesMap[fail.rng_range] = {
128
+ capacity: this.size,
129
+ fill_level: 0,
130
+ fill_ratio: 0,
131
+ refill_requests_total: [],
132
+ refill_failures_total: [],
133
+ starvation_events_total: 0,
134
+ refill_duration_ms: [],
135
+ latency_ms: [],
136
+ };
137
+ }
138
+ rangesMap[fail.rng_range].refill_failures_total.push({
139
+ engine_type: fail.engine_type,
140
+ reason: fail.reason,
141
+ error: fail.error,
142
+ count: fail.count,
143
+ });
144
+ });
145
+ this.starvationEvents.forEach((starvation) => {
146
+ if (!rangesMap[starvation.rng_range]) {
147
+ rangesMap[starvation.rng_range] = {
148
+ capacity: this.size,
149
+ fill_level: 0,
150
+ fill_ratio: 0,
151
+ refill_requests_total: [],
152
+ refill_failures_total: [],
153
+ starvation_events_total: 0,
154
+ refill_duration_ms: [],
155
+ latency_ms: [],
156
+ };
157
+ }
158
+ rangesMap[starvation.rng_range].starvation_events_total +=
159
+ starvation.count;
160
+ });
161
+ this.refillDurations.forEach((duration) => {
162
+ if (!rangesMap[duration.rng_range]) {
163
+ rangesMap[duration.rng_range] = {
164
+ capacity: this.size,
165
+ fill_level: 0,
166
+ fill_ratio: 0,
167
+ refill_requests_total: [],
168
+ refill_failures_total: [],
169
+ starvation_events_total: 0,
170
+ refill_duration_ms: [],
171
+ latency_ms: [],
172
+ };
173
+ }
174
+ const { buckets, sum, count } = this.createHistogramBuckets(duration.values);
175
+ rangesMap[duration.rng_range].refill_duration_ms.push({
176
+ engine_type: duration.engine_type,
177
+ reason: duration.reason,
178
+ buckets,
179
+ sum,
180
+ count,
181
+ });
182
+ });
183
+ this.latencies.forEach((latency) => {
184
+ if (!rangesMap[latency.rng_range]) {
185
+ rangesMap[latency.rng_range] = {
186
+ capacity: this.size,
187
+ fill_level: 0,
188
+ fill_ratio: 0,
189
+ refill_requests_total: [],
190
+ refill_failures_total: [],
191
+ starvation_events_total: 0,
192
+ refill_duration_ms: [],
193
+ latency_ms: [],
194
+ };
195
+ }
196
+ const { buckets, sum, count } = this.createHistogramBuckets(latency.values);
197
+ rangesMap[latency.rng_range].latency_ms.push({
198
+ engine_type: latency.engine_type,
199
+ reason: latency.reason,
200
+ buckets,
201
+ sum,
202
+ count,
203
+ });
204
+ });
205
+ return {
206
+ ...baseStats,
207
+ ranges: rangesMap,
208
+ };
16
209
  }
17
- async getNumberByRange(min, max) {
210
+ async getNumbersByRange(min, max, count = 1) {
211
+ const rangeKey = this.getRangeKey(min, max);
212
+ let requestStartTime = Date.now();
18
213
  const buffer = await this.storage.getBufferByRange(min, max);
19
214
  if (!buffer) {
215
+ this.incrementCounter(this.starvationEvents, rangeKey);
20
216
  const newBuffer = this.createBuffer(min, max);
21
217
  await this.storage.saveBuffer(newBuffer);
22
218
  setTimeout(async () => {
23
- await this.fillUpBuffer(newBuffer);
219
+ requestStartTime = Date.now();
220
+ await this.fillUpBuffer(newBuffer, "initial");
221
+ const latency = Date.now() - requestStartTime;
222
+ this.recordHistogram(this.latencies, rangeKey, latency);
24
223
  }, exports.FILL_UP_BUFFER_DELAY);
25
224
  return undefined;
26
225
  }
27
- const item = await this.storage.getFromBuffer(buffer);
226
+ const item = await this.storage.getFromBuffer(buffer, count);
28
227
  if (!item) {
228
+ this.incrementCounter(this.starvationEvents, rangeKey);
229
+ setTimeout(async () => {
230
+ requestStartTime = Date.now();
231
+ await this.fillUpBuffer(buffer, "starvation");
232
+ const latency = Date.now() - requestStartTime;
233
+ this.recordHistogram(this.latencies, rangeKey, latency);
234
+ }, exports.FILL_UP_BUFFER_DELAY);
29
235
  return undefined;
30
236
  }
31
237
  setTimeout(async () => {
32
- await this.fillUpBuffer(buffer);
238
+ requestStartTime = Date.now();
239
+ await this.fillUpBuffer(buffer, "refill");
240
+ const latency = Date.now() - requestStartTime;
241
+ this.recordHistogram(this.latencies, rangeKey, latency);
33
242
  }, exports.FILL_UP_BUFFER_DELAY);
34
243
  return item;
35
244
  }
36
- async fillUpBuffer(buffer) {
37
- const values = await this.pullNumberByBuffer(buffer);
38
- if (values.length === 0 || buffer.items.length >= this.maxSize) {
39
- return;
245
+ async fillUpBuffer(buffer, reason = "scheduled") {
246
+ const rangeKey = this.getRangeKey(buffer.range.min, buffer.range.max);
247
+ const refillStartTime = Date.now();
248
+ this.incrementCounter(this.refillRequests, rangeKey, reason);
249
+ try {
250
+ const values = await this.pullNumberByBuffer(buffer);
251
+ if (values.length === 0 || buffer.items.length >= this.maxSize) {
252
+ const duration = Date.now() - refillStartTime;
253
+ this.recordHistogram(this.refillDurations, rangeKey, duration, reason);
254
+ return;
255
+ }
256
+ await this.storage.addItemsToBuffer(buffer, values);
257
+ const duration = Date.now() - refillStartTime;
258
+ this.recordHistogram(this.refillDurations, rangeKey, duration, reason);
259
+ }
260
+ catch (error) {
261
+ const errorMessage = error instanceof Error ? error.message : String(error);
262
+ this.incrementCounter(this.refillFailures, rangeKey, reason, errorMessage);
263
+ const duration = Date.now() - refillStartTime;
264
+ this.recordHistogram(this.refillDurations, rangeKey, duration, reason);
265
+ throw error;
40
266
  }
41
- await this.storage.addItemsToBuffer(buffer, values);
42
267
  }
43
268
  async pullNumberByBuffer(buffer) {
44
269
  const count = this.size - buffer.items.length;
@@ -1 +1 @@
1
- {"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-buffer.ts"],"names":[],"mappings":";;;AAMA,iDAA0D;AAE7C,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAQtC,MAAa,UAAU;IAOrB,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAoB;QAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW,EACX,GAAW;QAEX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACzC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC,EAAE,4BAAoB,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,EAAE,4BAAoB,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAwB;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,MAAwB;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAC5D,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;YACrB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;YACrB,KAAK;SACN,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAA2B,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,GAAW;QACnC,OAAO;YACL,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;SACpB,CAAC;IACJ,CAAC;CACF;AAvED,gCAuEC"}
1
+ {"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-buffer.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare class RingStorageMemory {
6
6
  getBufferName(min: number, max: number): string;
7
7
  saveBuffer(buffer: SingleRingBuffer): Promise<void>;
8
8
  getBuffer(name: string): Promise<SingleRingBuffer>;
9
- getFromBuffer(name: string): Promise<RingBufferValue | undefined>;
9
+ getFromBuffer(name: string, count?: number): Promise<RingBufferValue[] | undefined>;
10
10
  addItemsToBuffer(buffer: SingleRingBuffer, items: RingBufferValue[]): Promise<void>;
11
11
  }
12
12
  //# sourceMappingURL=ring-storage-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ring-storage-memory.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAEtB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAsC;;IAM/C,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAY1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIlD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAejE,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;CAIjB"}
1
+ {"version":3,"file":"ring-storage-memory.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAEjB,MAAM,cAAc,CAAC;AAEtB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAsC;;IAM/C,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IA0B1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIlD,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,SAAI,GACR,OAAO,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;IAenC,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;CAIjB"}
@@ -10,10 +10,23 @@ class RingStorageMemory {
10
10
  for (const key in this.storage) {
11
11
  ranges[key] = this.storage[key].items.length;
12
12
  }
13
+ const partialRanges = {};
14
+ for (const [key, fillLevel] of Object.entries(ranges)) {
15
+ partialRanges[key] = {
16
+ capacity: 0,
17
+ fill_level: fillLevel,
18
+ fill_ratio: 0,
19
+ refill_requests_total: [],
20
+ refill_failures_total: [],
21
+ starvation_events_total: 0,
22
+ refill_duration_ms: [],
23
+ latency_ms: [],
24
+ };
25
+ }
13
26
  return {
14
27
  id: "in_memory",
15
28
  size: Object.keys(this.storage).length,
16
- ranges,
29
+ ranges: partialRanges,
17
30
  };
18
31
  }
19
32
  getBufferName(min, max) {
@@ -26,19 +39,19 @@ class RingStorageMemory {
26
39
  async getBuffer(name) {
27
40
  return this.storage[name];
28
41
  }
29
- async getFromBuffer(name) {
42
+ async getFromBuffer(name, count = 1) {
30
43
  const buffer = await this.getBuffer(name);
31
44
  if (!buffer) {
32
45
  return undefined;
33
46
  }
34
- if (buffer.items.length === 0) {
47
+ if (buffer.items.length < count) {
35
48
  return undefined;
36
49
  }
37
- const item = buffer.items.shift();
38
- if (!item) {
50
+ const items = buffer.items.splice(0, count);
51
+ if (items.length === 0) {
39
52
  return undefined;
40
53
  }
41
- return item;
54
+ return items;
42
55
  }
43
56
  async addItemsToBuffer(buffer, items) {
44
57
  buffer.items.push(...items);
@@ -1 +1 @@
1
- {"version":3,"file":"ring-storage-memory.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage-memory.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/C,CAAC;QACD,OAAO;YACL,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;YACtC,MAAM;SACP,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC;IACX,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAwB,EACxB,KAAwB;QAExB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAtDD,8CAsDC"}
1
+ {"version":3,"file":"ring-storage-memory.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage-memory.ts"],"names":[],"mappings":";;;AAOA,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/C,CAAC;QAED,MAAM,aAAa,GAAoC,EAAE,CAAC;QAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,aAAa,CAAC,GAAG,CAAC,GAAG;gBACnB,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,CAAC;gBACb,qBAAqB,EAAE,EAAE;gBACzB,qBAAqB,EAAE,EAAE;gBACzB,uBAAuB,EAAE,CAAC;gBAC1B,kBAAkB,EAAE,EAAE;gBACtB,UAAU,EAAE,EAAE;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;YACtC,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW;QACpC,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC;IACX,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,KAAK,GAAG,CAAC;QAET,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAwB,EACxB,KAAwB;QAExB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAvED,8CAuEC"}
@@ -8,7 +8,7 @@ export declare class RingStorage {
8
8
  private storage;
9
9
  constructor(storageType: StorageType);
10
10
  getStats(): Promise<RingBufferStats | undefined>;
11
- getFromBuffer(buffer: SingleRingBuffer): Promise<RingBufferValue | undefined>;
11
+ getFromBuffer(buffer: SingleRingBuffer, count?: number): Promise<RingBufferValue[] | undefined>;
12
12
  saveBuffer(buffer: SingleRingBuffer): Promise<void>;
13
13
  getBufferByRange(min: number, max: number): Promise<SingleRingBuffer | undefined>;
14
14
  getBuffer(name: string): Promise<SingleRingBuffer | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"ring-storage.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,qBAAa,WAAW;IAEV,OAAO,CAAC,QAAQ,CAAC,WAAW;IADxC,OAAO,CAAC,OAAO,CAAoB;gBACN,WAAW,EAAE,WAAW;IAI/C,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAOhD,aAAa,CACjB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IASjC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAOlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAO9D,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;CAKjB"}
1
+ {"version":3,"file":"ring-storage.d.ts","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,qBAAa,WAAW;IAEV,OAAO,CAAC,QAAQ,CAAC,WAAW;IADxC,OAAO,CAAC,OAAO,CAAoB;gBACN,WAAW,EAAE,WAAW;IAI/C,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAOhD,aAAa,CACjB,MAAM,EAAE,gBAAgB,EACxB,KAAK,SAAI,GACR,OAAO,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;IAUnC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAOlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAO9D,gBAAgB,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;CAKjB"}
@@ -18,9 +18,9 @@ class RingStorage {
18
18
  }
19
19
  return undefined;
20
20
  }
21
- async getFromBuffer(buffer) {
21
+ async getFromBuffer(buffer, count = 1) {
22
22
  if (this.storageType === StorageType.IN_MEMORY) {
23
- return this.storage.getFromBuffer(this.storage.getBufferName(buffer.range.min, buffer.range.max));
23
+ return this.storage.getFromBuffer(this.storage.getBufferName(buffer.range.min, buffer.range.max), count);
24
24
  }
25
25
  return undefined;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ring-storage.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage.ts"],"names":[],"mappings":";;;AAKA,+DAA0D;AAE1D,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAa,WAAW;IAEtB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAAwB;QAExB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAC/B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW,EACX,GAAW;QAEX,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAwB,EACxB,KAAwB;QAExB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAvDD,kCAuDC"}
1
+ {"version":3,"file":"ring-storage.js","sourceRoot":"","sources":["../../src/ring-buffer/ring-storage.ts"],"names":[],"mappings":";;;AAKA,+DAA0D;AAE1D,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAa,WAAW;IAEtB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,uCAAiB,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAAwB,EACxB,KAAK,GAAG,CAAC;QAET,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAC/B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9D,KAAK,CACN,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,GAAW,EACX,GAAW;QAEX,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAwB,EACxB,KAAwB;QAExB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAzDD,kCAyDC"}
@@ -33,6 +33,18 @@ export declare class RngClient {
33
33
  * @returns Batch of random integers
34
34
  */
35
35
  getBatchNumbers(min: number, max: number, count: number, seed?: number): Promise<number[]>;
36
+ /**
37
+ * Get a batch of random numbers with seeds
38
+ * @param min Minimum value (inclusive)
39
+ * @param max Maximum value (inclusive)
40
+ * @param count Number of values to generate
41
+ * @param seed Optional seed for deterministic generation
42
+ * @returns Batch of random integers
43
+ */
44
+ getBatchNumbersWithSeeds(min: number, max: number, count: number, seed?: number): Promise<{
45
+ value: number;
46
+ seed: number;
47
+ }[]>;
36
48
  /**
37
49
  * Get a single random float
38
50
  * @param seed Optional seed for deterministic generation
@@ -1 +1 @@
1
- {"version":3,"file":"rng-client.d.ts","sourceRoot":"","sources":["../src/rng-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAKjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,MAAM,EAAE,eAAe;IASnC;;;;;;OAMG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBrC,mBAAmB,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAIjE;;;;;;;OAOG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC;IAcpB;;;;OAIG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ/D;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC;IAQ5B;;;;;;OAMG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;OAIG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAOhE"}
1
+ {"version":3,"file":"rng-client.d.ts","sourceRoot":"","sources":["../src/rng-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAKjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,MAAM,EAAE,eAAe;IASnC;;;;;;OAMG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBrC,mBAAmB,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAIjE;;;;;;;OAOG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC;IAcpB;;;;;;;OAOG;IACG,wBAAwB,CAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAsB7C;;;;OAIG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQ/D;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC;IAQ5B;;;;;;OAMG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;OAIG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAOhE"}
@@ -36,9 +36,9 @@ class RngClient {
36
36
  data.seed = seed;
37
37
  }
38
38
  else {
39
- const item = await this.ringBuffer.getNumberByRange(min, max);
40
- if (item) {
41
- return item;
39
+ const item = await this.ringBuffer.getNumbersByRange(min, max, 1);
40
+ if (item && item.length > 0) {
41
+ return { value: item[0].value, seed: item[0].seed };
42
42
  }
43
43
  }
44
44
  const response = await this.clientCore.getSingleNumber(data);
@@ -67,6 +67,35 @@ class RngClient {
67
67
  const response = await this.clientCore.getBatchNumbers(data);
68
68
  return response.result;
69
69
  }
70
+ /**
71
+ * Get a batch of random numbers with seeds
72
+ * @param min Minimum value (inclusive)
73
+ * @param max Maximum value (inclusive)
74
+ * @param count Number of values to generate
75
+ * @param seed Optional seed for deterministic generation
76
+ * @returns Batch of random integers
77
+ */
78
+ async getBatchNumbersWithSeeds(min, max, count, seed) {
79
+ const data = {
80
+ min,
81
+ max,
82
+ count,
83
+ };
84
+ if (seed) {
85
+ data.seed = seed;
86
+ }
87
+ else {
88
+ const item = await this.ringBuffer.getNumbersByRange(min, max, count);
89
+ if (item && item.length > 0) {
90
+ return item;
91
+ }
92
+ }
93
+ const response = await this.clientCore.getBatchNumbersWithSeeds(data);
94
+ return response.result.map((item) => ({
95
+ value: item.value,
96
+ seed: item.seed,
97
+ }));
98
+ }
70
99
  /**
71
100
  * Get a single random float
72
101
  * @param seed Optional seed for deterministic generation
@@ -1 +1 @@
1
- {"version":3,"file":"rng-client.js","sourceRoot":"","sources":["../src/rng-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rng-client.js","sourceRoot":"","sources":["../src/rng-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnitronix/rng-client-core",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "Simple HTTP client for random number generation",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",