turbodata 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +27 -0
- package/README.md +215 -0
- package/dist/compression.d.ts +8 -0
- package/dist/compression.d.ts.map +1 -0
- package/dist/compression.js +19 -0
- package/dist/compression.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +37 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +174 -0
- package/dist/io.js.map +1 -0
- package/dist/iterators/message_heap.d.ts +17 -0
- package/dist/iterators/message_heap.d.ts.map +1 -0
- package/dist/iterators/message_heap.js +83 -0
- package/dist/iterators/message_heap.js.map +1 -0
- package/dist/iterators/preloaded_topics_group_iterator.d.ts +38 -0
- package/dist/iterators/preloaded_topics_group_iterator.d.ts.map +1 -0
- package/dist/iterators/preloaded_topics_group_iterator.js +109 -0
- package/dist/iterators/preloaded_topics_group_iterator.js.map +1 -0
- package/dist/iterators/topics_group_iterator.d.ts +45 -0
- package/dist/iterators/topics_group_iterator.d.ts.map +1 -0
- package/dist/iterators/topics_group_iterator.js +132 -0
- package/dist/iterators/topics_group_iterator.js.map +1 -0
- package/dist/loaded_bytes.d.ts +12 -0
- package/dist/loaded_bytes.d.ts.map +1 -0
- package/dist/loaded_bytes.js +43 -0
- package/dist/loaded_bytes.js.map +1 -0
- package/dist/msgpack.d.ts +10 -0
- package/dist/msgpack.d.ts.map +1 -0
- package/dist/msgpack.js +44 -0
- package/dist/msgpack.js.map +1 -0
- package/dist/multi_reader.d.ts +56 -0
- package/dist/multi_reader.d.ts.map +1 -0
- package/dist/multi_reader.js +281 -0
- package/dist/multi_reader.js.map +1 -0
- package/dist/read_fetcher.d.ts +9 -0
- package/dist/read_fetcher.d.ts.map +1 -0
- package/dist/read_fetcher.js +59 -0
- package/dist/read_fetcher.js.map +1 -0
- package/dist/read_options.d.ts +40 -0
- package/dist/read_options.d.ts.map +1 -0
- package/dist/read_options.js +16 -0
- package/dist/read_options.js.map +1 -0
- package/dist/read_planner.d.ts +37 -0
- package/dist/read_planner.d.ts.map +1 -0
- package/dist/read_planner.js +110 -0
- package/dist/read_planner.js.map +1 -0
- package/dist/read_source.d.ts +19 -0
- package/dist/read_source.d.ts.map +1 -0
- package/dist/read_source.js +15 -0
- package/dist/read_source.js.map +1 -0
- package/dist/read_strategy.d.ts +52 -0
- package/dist/read_strategy.d.ts.map +1 -0
- package/dist/read_strategy.js +70 -0
- package/dist/read_strategy.js.map +1 -0
- package/dist/reader.d.ts +209 -0
- package/dist/reader.d.ts.map +1 -0
- package/dist/reader.js +649 -0
- package/dist/reader.js.map +1 -0
- package/dist/sample.d.ts +41 -0
- package/dist/sample.d.ts.map +1 -0
- package/dist/sample.js +528 -0
- package/dist/sample.js.map +1 -0
- package/dist/sort_and_filter.d.ts +25 -0
- package/dist/sort_and_filter.d.ts.map +1 -0
- package/dist/sort_and_filter.js +126 -0
- package/dist/sort_and_filter.js.map +1 -0
- package/dist/sources/blob.d.ts +8 -0
- package/dist/sources/blob.d.ts.map +1 -0
- package/dist/sources/blob.js +38 -0
- package/dist/sources/blob.js.map +1 -0
- package/dist/sources/http.d.ts +17 -0
- package/dist/sources/http.d.ts.map +1 -0
- package/dist/sources/http.js +90 -0
- package/dist/sources/http.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
- package/src/compression.ts +28 -0
- package/src/index.ts +70 -0
- package/src/io.ts +214 -0
- package/src/iterators/message_heap.ts +104 -0
- package/src/iterators/preloaded_topics_group_iterator.ts +143 -0
- package/src/iterators/topics_group_iterator.ts +180 -0
- package/src/loaded_bytes.ts +61 -0
- package/src/msgpack.ts +46 -0
- package/src/multi_reader.ts +337 -0
- package/src/read_fetcher.ts +74 -0
- package/src/read_options.ts +58 -0
- package/src/read_planner.ts +153 -0
- package/src/read_source.ts +33 -0
- package/src/read_strategy.ts +111 -0
- package/src/reader.ts +910 -0
- package/src/sample.ts +715 -0
- package/src/sort_and_filter.ts +167 -0
- package/src/sources/blob.ts +52 -0
- package/src/sources/http.ts +121 -0
- package/src/types.ts +110 -0
package/dist/io.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// Copyright 2026 Wanjia He
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
// Binary readers for turbodata records. Mirrors go/io.go.
|
|
15
|
+
//
|
|
16
|
+
// All multi-byte fields are big-endian (Go's encoding/binary.BigEndian default).
|
|
17
|
+
import { decodeMetadata } from "./msgpack.js";
|
|
18
|
+
import { FOOTER_LEN, } from "./types.js";
|
|
19
|
+
/** Mirrors go/io.go's maxStringLen / maxMapLen safety caps (64 MiB each). */
|
|
20
|
+
const MAX_STRING_LEN = 64 * 1024 * 1024;
|
|
21
|
+
const MAX_MAP_LEN = 64 * 1024 * 1024;
|
|
22
|
+
const UTF8 = new TextDecoder("utf-8", { fatal: false });
|
|
23
|
+
/**
|
|
24
|
+
* Forward-only cursor over a Uint8Array. The Go reader uses io.Reader+
|
|
25
|
+
* binary.Read; here we expose the equivalent calls. All reads are big-endian.
|
|
26
|
+
*
|
|
27
|
+
* We deliberately do NOT support seeking; everything in the format is
|
|
28
|
+
* sequentially decodable from a known start point.
|
|
29
|
+
*/
|
|
30
|
+
export class BinaryReader {
|
|
31
|
+
view;
|
|
32
|
+
bytes;
|
|
33
|
+
off;
|
|
34
|
+
constructor(bytes) {
|
|
35
|
+
this.bytes = bytes;
|
|
36
|
+
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
37
|
+
this.off = 0;
|
|
38
|
+
}
|
|
39
|
+
get offset() {
|
|
40
|
+
return this.off;
|
|
41
|
+
}
|
|
42
|
+
get remaining() {
|
|
43
|
+
return this.bytes.byteLength - this.off;
|
|
44
|
+
}
|
|
45
|
+
require(n) {
|
|
46
|
+
if (this.off + n > this.bytes.byteLength) {
|
|
47
|
+
throw new Error(`unexpected EOF: need ${n} bytes at offset ${this.off}, have ${this.bytes.byteLength - this.off}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
readUint8() {
|
|
51
|
+
this.require(1);
|
|
52
|
+
const v = this.view.getUint8(this.off);
|
|
53
|
+
this.off += 1;
|
|
54
|
+
return v;
|
|
55
|
+
}
|
|
56
|
+
readUint16() {
|
|
57
|
+
this.require(2);
|
|
58
|
+
const v = this.view.getUint16(this.off, false);
|
|
59
|
+
this.off += 2;
|
|
60
|
+
return v;
|
|
61
|
+
}
|
|
62
|
+
readUint32() {
|
|
63
|
+
this.require(4);
|
|
64
|
+
const v = this.view.getUint32(this.off, false);
|
|
65
|
+
this.off += 4;
|
|
66
|
+
return v;
|
|
67
|
+
}
|
|
68
|
+
readInt64() {
|
|
69
|
+
this.require(8);
|
|
70
|
+
const v = this.view.getBigInt64(this.off, false);
|
|
71
|
+
this.off += 8;
|
|
72
|
+
return v;
|
|
73
|
+
}
|
|
74
|
+
readBytes(n) {
|
|
75
|
+
this.require(n);
|
|
76
|
+
const out = this.bytes.subarray(this.off, this.off + n);
|
|
77
|
+
this.off += n;
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function readString(r) {
|
|
82
|
+
const strLen = r.readUint32();
|
|
83
|
+
if (strLen > MAX_STRING_LEN) {
|
|
84
|
+
throw new Error(`string length ${strLen} exceeds maximum allowed ${MAX_STRING_LEN}`);
|
|
85
|
+
}
|
|
86
|
+
const bytes = r.readBytes(strLen);
|
|
87
|
+
return UTF8.decode(bytes);
|
|
88
|
+
}
|
|
89
|
+
function readMap(r) {
|
|
90
|
+
const mapLen = r.readUint32();
|
|
91
|
+
if (mapLen > MAX_MAP_LEN) {
|
|
92
|
+
throw new Error(`map length ${mapLen} exceeds maximum allowed ${MAX_MAP_LEN}`);
|
|
93
|
+
}
|
|
94
|
+
const buf = r.readBytes(mapLen);
|
|
95
|
+
return decodeMetadata(buf);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Parse a fixed-size (13-byte) footer.
|
|
99
|
+
*
|
|
100
|
+
* Layout: 8-byte int64 SummaryLen, then 5-byte Magic.
|
|
101
|
+
*/
|
|
102
|
+
export function readFooter(r) {
|
|
103
|
+
const summaryLen = r.readInt64();
|
|
104
|
+
const magic = r.readBytes(5);
|
|
105
|
+
// Defensive copy: r.readBytes returns a subarray view into the source buffer.
|
|
106
|
+
return { summaryLen, magic: new Uint8Array(magic) };
|
|
107
|
+
}
|
|
108
|
+
export function readTopicMetadata(r) {
|
|
109
|
+
const id = r.readUint16();
|
|
110
|
+
const name = readString(r);
|
|
111
|
+
const metadata = readMap(r);
|
|
112
|
+
const messageCount = r.readUint32();
|
|
113
|
+
return { id, name, metadata, messageCount };
|
|
114
|
+
}
|
|
115
|
+
export function readIndexChunkInfo(r) {
|
|
116
|
+
const startTimestamp = r.readInt64();
|
|
117
|
+
const endTimestamp = r.readInt64();
|
|
118
|
+
const offset = r.readInt64();
|
|
119
|
+
return { startTimestamp, endTimestamp, offset };
|
|
120
|
+
}
|
|
121
|
+
export function readTopicsInfo(r) {
|
|
122
|
+
const topicMetadataLen = r.readUint32();
|
|
123
|
+
const topicMetadatas = new Array(topicMetadataLen);
|
|
124
|
+
for (let i = 0; i < topicMetadataLen; i++) {
|
|
125
|
+
topicMetadatas[i] = readTopicMetadata(r);
|
|
126
|
+
}
|
|
127
|
+
const indexChunkInfoLen = r.readUint32();
|
|
128
|
+
const indexChunkInfoList = new Array(indexChunkInfoLen);
|
|
129
|
+
for (let i = 0; i < indexChunkInfoLen; i++) {
|
|
130
|
+
indexChunkInfoList[i] = readIndexChunkInfo(r);
|
|
131
|
+
}
|
|
132
|
+
const totalLen = r.readInt64();
|
|
133
|
+
return { topicMetadatas, indexChunkInfoList, totalLen };
|
|
134
|
+
}
|
|
135
|
+
export function readSummary(r) {
|
|
136
|
+
const topicsInfoLen = r.readUint32();
|
|
137
|
+
const topicsInfos = new Array(topicsInfoLen);
|
|
138
|
+
for (let i = 0; i < topicsInfoLen; i++) {
|
|
139
|
+
topicsInfos[i] = readTopicsInfo(r);
|
|
140
|
+
}
|
|
141
|
+
return { topicsInfos };
|
|
142
|
+
}
|
|
143
|
+
export function readMessageIndex(r) {
|
|
144
|
+
const timestamp = r.readInt64();
|
|
145
|
+
const offsetInChunk = r.readInt64();
|
|
146
|
+
return { timestamp, offsetInChunk };
|
|
147
|
+
}
|
|
148
|
+
export function readTopicIndex(r) {
|
|
149
|
+
const id = r.readUint16();
|
|
150
|
+
const messageIndexLen = r.readUint32();
|
|
151
|
+
const messageIndexes = new Array(messageIndexLen);
|
|
152
|
+
for (let i = 0; i < messageIndexLen; i++) {
|
|
153
|
+
messageIndexes[i] = readMessageIndex(r);
|
|
154
|
+
}
|
|
155
|
+
const keyFrameIndexLen = r.readUint32();
|
|
156
|
+
const keyFrameIndexes = new Uint32Array(keyFrameIndexLen);
|
|
157
|
+
for (let i = 0; i < keyFrameIndexLen; i++) {
|
|
158
|
+
keyFrameIndexes[i] = r.readUint32();
|
|
159
|
+
}
|
|
160
|
+
return { id, messageIndexes, keyFrameIndexes };
|
|
161
|
+
}
|
|
162
|
+
export function readIndexChunk(r) {
|
|
163
|
+
const topicIndexesLen = r.readUint32();
|
|
164
|
+
const topicIndexes = new Array(topicIndexesLen);
|
|
165
|
+
for (let i = 0; i < topicIndexesLen; i++) {
|
|
166
|
+
topicIndexes[i] = readTopicIndex(r);
|
|
167
|
+
}
|
|
168
|
+
const chunkOffset = r.readInt64();
|
|
169
|
+
const chunkLen = r.readInt64();
|
|
170
|
+
const uncompressedLen = r.readInt64();
|
|
171
|
+
return { topicIndexes, chunkOffset, chunkLen, uncompressedLen };
|
|
172
|
+
}
|
|
173
|
+
export { FOOTER_LEN };
|
|
174
|
+
//# sourceMappingURL=io.js.map
|
package/dist/io.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class MessageHeap<T> {
|
|
2
|
+
private readonly items;
|
|
3
|
+
private readonly cmpSign;
|
|
4
|
+
/** reverse=false: min-heap (time order). reverse=true: max-heap (reverse time). */
|
|
5
|
+
constructor(reverse: boolean);
|
|
6
|
+
get size(): number;
|
|
7
|
+
push(priority: bigint, value: T): void;
|
|
8
|
+
pop(): {
|
|
9
|
+
priority: bigint;
|
|
10
|
+
value: T;
|
|
11
|
+
} | undefined;
|
|
12
|
+
/** Return < 0 if a goes before b, > 0 if after, 0 if equal. */
|
|
13
|
+
private compare;
|
|
14
|
+
private siftUp;
|
|
15
|
+
private siftDown;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=message_heap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_heap.d.ts","sourceRoot":"","sources":["../../src/iterators/message_heap.ts"],"names":[],"mappings":"AAuBA,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,mFAAmF;gBACvE,OAAO,EAAE,OAAO;IAI5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKtC,GAAG,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,GAAG,SAAS;IAajD,+DAA+D;IAC/D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,QAAQ;CA2BjB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// Copyright 2026 Wanjia He
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export class MessageHeap {
|
|
15
|
+
items = [];
|
|
16
|
+
cmpSign;
|
|
17
|
+
/** reverse=false: min-heap (time order). reverse=true: max-heap (reverse time). */
|
|
18
|
+
constructor(reverse) {
|
|
19
|
+
this.cmpSign = reverse ? -1n : 1n;
|
|
20
|
+
}
|
|
21
|
+
get size() {
|
|
22
|
+
return this.items.length;
|
|
23
|
+
}
|
|
24
|
+
push(priority, value) {
|
|
25
|
+
this.items.push({ priority, value });
|
|
26
|
+
this.siftUp(this.items.length - 1);
|
|
27
|
+
}
|
|
28
|
+
pop() {
|
|
29
|
+
if (this.items.length === 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const top = this.items[0];
|
|
33
|
+
const last = this.items.pop();
|
|
34
|
+
if (this.items.length > 0) {
|
|
35
|
+
this.items[0] = last;
|
|
36
|
+
this.siftDown(0);
|
|
37
|
+
}
|
|
38
|
+
return top;
|
|
39
|
+
}
|
|
40
|
+
/** Return < 0 if a goes before b, > 0 if after, 0 if equal. */
|
|
41
|
+
compare(a, b) {
|
|
42
|
+
return (a - b) * this.cmpSign;
|
|
43
|
+
}
|
|
44
|
+
siftUp(idx) {
|
|
45
|
+
while (idx > 0) {
|
|
46
|
+
const parent = (idx - 1) >> 1;
|
|
47
|
+
if (this.compare(this.items[idx].priority, this.items[parent].priority) <
|
|
48
|
+
0n) {
|
|
49
|
+
const tmp = this.items[idx];
|
|
50
|
+
this.items[idx] = this.items[parent];
|
|
51
|
+
this.items[parent] = tmp;
|
|
52
|
+
idx = parent;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
siftDown(idx) {
|
|
60
|
+
const n = this.items.length;
|
|
61
|
+
while (true) {
|
|
62
|
+
const l = idx * 2 + 1;
|
|
63
|
+
const r = idx * 2 + 2;
|
|
64
|
+
let best = idx;
|
|
65
|
+
if (l < n &&
|
|
66
|
+
this.compare(this.items[l].priority, this.items[best].priority) < 0n) {
|
|
67
|
+
best = l;
|
|
68
|
+
}
|
|
69
|
+
if (r < n &&
|
|
70
|
+
this.compare(this.items[r].priority, this.items[best].priority) < 0n) {
|
|
71
|
+
best = r;
|
|
72
|
+
}
|
|
73
|
+
if (best === idx) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const tmp = this.items[idx];
|
|
77
|
+
this.items[idx] = this.items[best];
|
|
78
|
+
this.items[best] = tmp;
|
|
79
|
+
idx = best;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=message_heap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_heap.js","sourceRoot":"","sources":["../../src/iterators/message_heap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Decompressor } from "../compression.js";
|
|
2
|
+
import type { LoadedBytes } from "../loaded_bytes.js";
|
|
3
|
+
import type { MessageRef } from "../sort_and_filter.js";
|
|
4
|
+
import type { IndexChunk } from "../types.js";
|
|
5
|
+
export declare class PreloadedTopicsGroupIterator {
|
|
6
|
+
private readonly isCompressed;
|
|
7
|
+
private readonly reverse;
|
|
8
|
+
private readonly indexChunks;
|
|
9
|
+
private readonly chunkMessages;
|
|
10
|
+
private readonly chunkMsgLens;
|
|
11
|
+
private readonly loadedData;
|
|
12
|
+
private readonly decompress;
|
|
13
|
+
private currentDecompressed;
|
|
14
|
+
private loadedChunkIdx;
|
|
15
|
+
private chunkIdx;
|
|
16
|
+
private msgIdx;
|
|
17
|
+
constructor(args: {
|
|
18
|
+
isCompressed: boolean;
|
|
19
|
+
reverse: boolean;
|
|
20
|
+
indexChunks: IndexChunk[];
|
|
21
|
+
chunkMessages: MessageRef[][];
|
|
22
|
+
chunkMsgLens: bigint[][];
|
|
23
|
+
loadedData: LoadedBytes;
|
|
24
|
+
decompress: Decompressor;
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Next is synchronous (no I/O remaining). Returns undefined on EOF.
|
|
28
|
+
* `data` aliases either loadedData or the per-chunk decompressed buffer.
|
|
29
|
+
*/
|
|
30
|
+
next(): {
|
|
31
|
+
timestamp: bigint;
|
|
32
|
+
topicId: number;
|
|
33
|
+
data: Uint8Array;
|
|
34
|
+
} | undefined;
|
|
35
|
+
private advanceMessage;
|
|
36
|
+
private advanceChunk;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=preloaded_topics_group_iterator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preloaded_topics_group_iterator.d.ts","sourceRoot":"","sources":["../../src/iterators/preloaded_topics_group_iterator.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAI1C,OAAO,CAAC,mBAAmB,CAAyB;IACpD,OAAO,CAAC,cAAc,CAAM;IAE5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC;QAC9B,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;QACzB,UAAU,EAAE,WAAW,CAAC;QACxB,UAAU,EAAE,YAAY,CAAC;KAC1B;IAqBD;;;OAGG;IACH,IAAI,IACA;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GACxD,SAAS;IAiDb,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Copyright 2026 Wanjia He
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export class PreloadedTopicsGroupIterator {
|
|
15
|
+
isCompressed;
|
|
16
|
+
reverse;
|
|
17
|
+
indexChunks;
|
|
18
|
+
chunkMessages;
|
|
19
|
+
chunkMsgLens;
|
|
20
|
+
loadedData;
|
|
21
|
+
decompress;
|
|
22
|
+
// Decompressed buffer for the *current* compressed data chunk; undefined
|
|
23
|
+
// when isCompressed=false or no chunk has been materialized yet.
|
|
24
|
+
currentDecompressed;
|
|
25
|
+
loadedChunkIdx = -1;
|
|
26
|
+
chunkIdx;
|
|
27
|
+
msgIdx;
|
|
28
|
+
constructor(args) {
|
|
29
|
+
this.isCompressed = args.isCompressed;
|
|
30
|
+
this.reverse = args.reverse;
|
|
31
|
+
this.indexChunks = args.indexChunks;
|
|
32
|
+
this.chunkMessages = args.chunkMessages;
|
|
33
|
+
this.chunkMsgLens = args.chunkMsgLens;
|
|
34
|
+
this.loadedData = args.loadedData;
|
|
35
|
+
this.decompress = args.decompress;
|
|
36
|
+
if (args.reverse) {
|
|
37
|
+
this.chunkIdx = args.indexChunks.length - 1;
|
|
38
|
+
this.msgIdx =
|
|
39
|
+
this.chunkIdx >= 0
|
|
40
|
+
? args.chunkMessages[this.chunkIdx].length - 1
|
|
41
|
+
: 0;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.chunkIdx = 0;
|
|
45
|
+
this.msgIdx = 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Next is synchronous (no I/O remaining). Returns undefined on EOF.
|
|
50
|
+
* `data` aliases either loadedData or the per-chunk decompressed buffer.
|
|
51
|
+
*/
|
|
52
|
+
next() {
|
|
53
|
+
while (true) {
|
|
54
|
+
if (this.chunkIdx < 0 || this.chunkIdx >= this.indexChunks.length) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const msgs = this.chunkMessages[this.chunkIdx];
|
|
58
|
+
if (this.msgIdx < 0 || this.msgIdx >= msgs.length) {
|
|
59
|
+
this.advanceChunk();
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Materialize this chunk's decompressed bytes on first touch.
|
|
63
|
+
if (this.isCompressed && this.loadedChunkIdx !== this.chunkIdx) {
|
|
64
|
+
const compressed = this.loadedData.get(this.indexChunks[this.chunkIdx].chunkOffset);
|
|
65
|
+
if (compressed === undefined) {
|
|
66
|
+
throw new Error(`preloaded iterator: missing compressed chunk at offset ${this.indexChunks[this.chunkIdx].chunkOffset}`);
|
|
67
|
+
}
|
|
68
|
+
this.currentDecompressed = this.decompress(compressed);
|
|
69
|
+
this.loadedChunkIdx = this.chunkIdx;
|
|
70
|
+
}
|
|
71
|
+
const msg = msgs[this.msgIdx];
|
|
72
|
+
const length = this.chunkMsgLens[this.chunkIdx][this.msgIdx];
|
|
73
|
+
const chunkOffset = this.indexChunks[this.chunkIdx].chunkOffset;
|
|
74
|
+
let data;
|
|
75
|
+
if (this.isCompressed) {
|
|
76
|
+
const start = Number(msg.offsetInChunk);
|
|
77
|
+
const end = start + Number(length);
|
|
78
|
+
data = this.currentDecompressed.subarray(start, end);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const got = this.loadedData.get(chunkOffset + msg.offsetInChunk);
|
|
82
|
+
if (got === undefined) {
|
|
83
|
+
throw new Error(`preloaded iterator: missing message bytes at offset ${chunkOffset + msg.offsetInChunk}`);
|
|
84
|
+
}
|
|
85
|
+
data = got;
|
|
86
|
+
}
|
|
87
|
+
this.advanceMessage();
|
|
88
|
+
return { timestamp: msg.timestamp, topicId: msg.topicId, data };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
advanceMessage() {
|
|
92
|
+
this.msgIdx += this.reverse ? -1 : 1;
|
|
93
|
+
}
|
|
94
|
+
advanceChunk() {
|
|
95
|
+
if (this.reverse) {
|
|
96
|
+
this.chunkIdx -= 1;
|
|
97
|
+
if (this.chunkIdx >= 0) {
|
|
98
|
+
this.msgIdx = this.chunkMessages[this.chunkIdx].length - 1;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.chunkIdx += 1;
|
|
103
|
+
if (this.chunkIdx < this.indexChunks.length) {
|
|
104
|
+
this.msgIdx = 0;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=preloaded_topics_group_iterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preloaded_topics_group_iterator.js","sourceRoot":"","sources":["../../src/iterators/preloaded_topics_group_iterator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Decompressor } from "../compression.js";
|
|
2
|
+
import type { ReadSource } from "../read_source.js";
|
|
3
|
+
import { type TopicsInfo } from "../types.js";
|
|
4
|
+
export declare class TopicsGroupIterator {
|
|
5
|
+
private readonly rs;
|
|
6
|
+
private readonly decompress;
|
|
7
|
+
private readonly topicIds;
|
|
8
|
+
private readonly startTimestamp;
|
|
9
|
+
private readonly endTimestamp;
|
|
10
|
+
private readonly reverse;
|
|
11
|
+
private readonly isCompressed;
|
|
12
|
+
private readonly videoDecodable;
|
|
13
|
+
private readonly indexChunkInfoList;
|
|
14
|
+
private readonly indexChunkInfoLens;
|
|
15
|
+
private chunkIdx;
|
|
16
|
+
private msgIdx;
|
|
17
|
+
private currentMessages;
|
|
18
|
+
private currentLens;
|
|
19
|
+
private dataBuffer;
|
|
20
|
+
constructor(args: {
|
|
21
|
+
rs: ReadSource;
|
|
22
|
+
decompress: Decompressor;
|
|
23
|
+
topicIds: Set<number>;
|
|
24
|
+
startTimestamp: bigint;
|
|
25
|
+
endTimestamp: bigint;
|
|
26
|
+
reverse: boolean;
|
|
27
|
+
topicsInfo: TopicsInfo;
|
|
28
|
+
/** When true, snap the per-chunk lower bound back to the GOP key frame. */
|
|
29
|
+
videoDecodable?: boolean;
|
|
30
|
+
});
|
|
31
|
+
/** True if we have any in-scope index chunks. */
|
|
32
|
+
hasAny(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Next emits one (timestamp, topicId, data) record or returns undefined on
|
|
35
|
+
* EOF. The returned Uint8Array aliases an internal buffer; the caller must
|
|
36
|
+
* copy if persistence is needed.
|
|
37
|
+
*/
|
|
38
|
+
next(): Promise<{
|
|
39
|
+
timestamp: bigint;
|
|
40
|
+
topicId: number;
|
|
41
|
+
data: Uint8Array;
|
|
42
|
+
} | undefined>;
|
|
43
|
+
private loadCurrentChunk;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=topics_group_iterator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topics_group_iterator.d.ts","sourceRoot":"","sources":["../../src/iterators/topics_group_iterator.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAExF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAGzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAW;IAG9C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,UAAU,CAAyB;gBAE/B,IAAI,EAAE;QAChB,EAAE,EAAE,UAAU,CAAC;QACf,UAAU,EAAE,YAAY,CAAC;QACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,UAAU,CAAC;QACvB,2EAA2E;QAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IA8CD,iDAAiD;IACjD,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,UAAU,CAAC;KAClB,GAAG,SAAS,CAAC;YA8BA,gBAAgB;CAgC/B"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// Copyright 2026 Wanjia He
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { BinaryReader, readIndexChunk } from "../io.js";
|
|
15
|
+
import { sortAndFilter } from "../sort_and_filter.js";
|
|
16
|
+
import { META_KEY_COMPRESSED } from "../types.js";
|
|
17
|
+
export class TopicsGroupIterator {
|
|
18
|
+
rs;
|
|
19
|
+
decompress;
|
|
20
|
+
topicIds;
|
|
21
|
+
startTimestamp;
|
|
22
|
+
endTimestamp;
|
|
23
|
+
reverse;
|
|
24
|
+
isCompressed;
|
|
25
|
+
videoDecodable;
|
|
26
|
+
// Per-chunk metadata.
|
|
27
|
+
indexChunkInfoList;
|
|
28
|
+
indexChunkInfoLens;
|
|
29
|
+
// Iteration cursors.
|
|
30
|
+
chunkIdx;
|
|
31
|
+
msgIdx;
|
|
32
|
+
currentMessages = [];
|
|
33
|
+
currentLens = [];
|
|
34
|
+
// Most-recently-loaded data chunk (uncompressed bytes).
|
|
35
|
+
dataBuffer;
|
|
36
|
+
constructor(args) {
|
|
37
|
+
this.rs = args.rs;
|
|
38
|
+
this.decompress = args.decompress;
|
|
39
|
+
this.topicIds = args.topicIds;
|
|
40
|
+
this.startTimestamp = args.startTimestamp;
|
|
41
|
+
this.endTimestamp = args.endTimestamp;
|
|
42
|
+
this.reverse = args.reverse;
|
|
43
|
+
this.videoDecodable = args.videoDecodable === true;
|
|
44
|
+
const firstMeta = args.topicsInfo.topicMetadatas[0];
|
|
45
|
+
const flag = firstMeta?.metadata.get(META_KEY_COMPRESSED);
|
|
46
|
+
this.isCompressed = flag === true;
|
|
47
|
+
// Time-range filter at the chunk level + compute compressed lengths.
|
|
48
|
+
const filteredInfos = [];
|
|
49
|
+
const filteredLens = [];
|
|
50
|
+
const all = args.topicsInfo.indexChunkInfoList;
|
|
51
|
+
for (let i = 0; i < all.length; i++) {
|
|
52
|
+
const info = all[i];
|
|
53
|
+
if (info.endTimestamp < args.startTimestamp) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (info.startTimestamp > args.endTimestamp) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
filteredInfos.push(info);
|
|
60
|
+
let ln;
|
|
61
|
+
if (i < all.length - 1) {
|
|
62
|
+
ln = all[i + 1].offset - info.offset;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Last index chunk: its length is (group total) - (its offset) + (first chunk's offset).
|
|
66
|
+
ln = args.topicsInfo.totalLen - info.offset + all[0].offset;
|
|
67
|
+
}
|
|
68
|
+
filteredLens.push(ln);
|
|
69
|
+
}
|
|
70
|
+
this.indexChunkInfoList = filteredInfos;
|
|
71
|
+
this.indexChunkInfoLens = filteredLens;
|
|
72
|
+
if (args.reverse) {
|
|
73
|
+
this.chunkIdx = filteredInfos.length - 1;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.chunkIdx = 0;
|
|
77
|
+
}
|
|
78
|
+
this.msgIdx = 0;
|
|
79
|
+
}
|
|
80
|
+
/** True if we have any in-scope index chunks. */
|
|
81
|
+
hasAny() {
|
|
82
|
+
return this.indexChunkInfoList.length > 0;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Next emits one (timestamp, topicId, data) record or returns undefined on
|
|
86
|
+
* EOF. The returned Uint8Array aliases an internal buffer; the caller must
|
|
87
|
+
* copy if persistence is needed.
|
|
88
|
+
*/
|
|
89
|
+
async next() {
|
|
90
|
+
while (this.msgIdx >= this.currentMessages.length ||
|
|
91
|
+
this.msgIdx < 0) {
|
|
92
|
+
if (this.chunkIdx >= this.indexChunkInfoList.length ||
|
|
93
|
+
this.chunkIdx < 0) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
await this.loadCurrentChunk();
|
|
97
|
+
this.chunkIdx += this.reverse ? -1 : 1;
|
|
98
|
+
if (this.reverse) {
|
|
99
|
+
this.msgIdx = this.currentMessages.length - 1;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.msgIdx = 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const ref = this.currentMessages[this.msgIdx];
|
|
106
|
+
const len = this.currentLens[this.msgIdx];
|
|
107
|
+
this.msgIdx += this.reverse ? -1 : 1;
|
|
108
|
+
const start = Number(ref.offsetInChunk);
|
|
109
|
+
const end = start + Number(len);
|
|
110
|
+
const data = this.dataBuffer.subarray(start, end);
|
|
111
|
+
return { timestamp: ref.timestamp, topicId: ref.topicId, data };
|
|
112
|
+
}
|
|
113
|
+
async loadCurrentChunk() {
|
|
114
|
+
const info = this.indexChunkInfoList[this.chunkIdx];
|
|
115
|
+
const ln = this.indexChunkInfoLens[this.chunkIdx];
|
|
116
|
+
// Read + decompress the index chunk.
|
|
117
|
+
const compressedIndex = await this.rs.read(info.offset, ln);
|
|
118
|
+
const indexBytes = this.decompress(compressedIndex);
|
|
119
|
+
const indexChunk = readIndexChunk(new BinaryReader(indexBytes));
|
|
120
|
+
const filtered = sortAndFilter(indexChunk.topicIndexes, indexChunk.uncompressedLen, this.topicIds, this.startTimestamp, this.endTimestamp, this.videoDecodable);
|
|
121
|
+
this.currentMessages = filtered.msgs;
|
|
122
|
+
this.currentLens = filtered.lens;
|
|
123
|
+
if (filtered.msgs.length === 0) {
|
|
124
|
+
this.dataBuffer = undefined;
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Read (and possibly decompress) the data chunk.
|
|
128
|
+
const dataBytes = await this.rs.read(indexChunk.chunkOffset, indexChunk.chunkLen);
|
|
129
|
+
this.dataBuffer = this.isCompressed ? this.decompress(dataBytes) : dataBytes;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=topics_group_iterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topics_group_iterator.js","sourceRoot":"","sources":["../../src/iterators/topics_group_iterator.ts"],"names":[],"mappings":"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"}
|