sliftutils 1.4.53 → 1.4.54
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/index.d.ts
CHANGED
|
@@ -763,9 +763,9 @@ declare module "sliftutils/render-utils/observer" {
|
|
|
763
763
|
}
|
|
764
764
|
|
|
765
765
|
declare module "sliftutils/storage/BulkDatabase2/BulkDatabase2" {
|
|
766
|
-
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
766
|
+
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
767
767
|
export { BulkDatabaseBase, noopReactiveDeps, bulkDatabase2Timing } from "./BulkDatabaseBase";
|
|
768
|
-
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
768
|
+
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config, BulkFileDetails, BulkFileEntry, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
769
769
|
/** Per-column on-disk size info, as reported by getColumnInfo/getReaderInfo. */
|
|
770
770
|
export type BulkColumnInfo = {
|
|
771
771
|
column: string;
|
|
@@ -873,15 +873,7 @@ declare module "sliftutils/storage/BulkDatabase2/BulkDatabase2" {
|
|
|
873
873
|
* stream files still being appended). `bytes` is the actual on-disk size. Good for showing collection
|
|
874
874
|
* size/fragmentation and deciding whether to call tryMergeNow()/compact().
|
|
875
875
|
*/
|
|
876
|
-
getFileInfo(): Promise<
|
|
877
|
-
files: {
|
|
878
|
-
name: string;
|
|
879
|
-
type: "bulk" | "stream";
|
|
880
|
-
bytes: number;
|
|
881
|
-
}[];
|
|
882
|
-
count: number;
|
|
883
|
-
totalBytes: number;
|
|
884
|
-
}>;
|
|
876
|
+
getFileInfo(): Promise<BulkFileInfoListing>;
|
|
885
877
|
/** Consolidate on-disk files. Optional to call; the database also does this in the background. */
|
|
886
878
|
compact(): Promise<void>;
|
|
887
879
|
/**
|
|
@@ -1087,16 +1079,24 @@ declare module "sliftutils/storage/BulkDatabase2/BulkDatabaseBase" {
|
|
|
1087
1079
|
byteSize: number;
|
|
1088
1080
|
}[];
|
|
1089
1081
|
}>;
|
|
1090
|
-
getFileInfo(): Promise<
|
|
1091
|
-
files: {
|
|
1092
|
-
name: string;
|
|
1093
|
-
type: "bulk" | "stream";
|
|
1094
|
-
bytes: number;
|
|
1095
|
-
}[];
|
|
1096
|
-
count: number;
|
|
1097
|
-
totalBytes: number;
|
|
1098
|
-
}>;
|
|
1082
|
+
getFileInfo(): Promise<BulkFileInfoListing>;
|
|
1099
1083
|
}
|
|
1084
|
+
export type BulkFileDetails = {
|
|
1085
|
+
keys: string[];
|
|
1086
|
+
minTime: number;
|
|
1087
|
+
maxTime: number;
|
|
1088
|
+
};
|
|
1089
|
+
export type BulkFileEntry = {
|
|
1090
|
+
name: string;
|
|
1091
|
+
type: "bulk" | "stream";
|
|
1092
|
+
bytes: number;
|
|
1093
|
+
getDetails: () => Promise<BulkFileDetails>;
|
|
1094
|
+
};
|
|
1095
|
+
export type BulkFileInfoListing = {
|
|
1096
|
+
files: BulkFileEntry[];
|
|
1097
|
+
count: number;
|
|
1098
|
+
totalBytes: number;
|
|
1099
|
+
};
|
|
1100
1100
|
|
|
1101
1101
|
}
|
|
1102
1102
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
1
|
+
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
2
2
|
export { BulkDatabaseBase, noopReactiveDeps, bulkDatabase2Timing } from "./BulkDatabaseBase";
|
|
3
|
-
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
3
|
+
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config, BulkFileDetails, BulkFileEntry, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
4
4
|
/** Per-column on-disk size info, as reported by getColumnInfo/getReaderInfo. */
|
|
5
5
|
export type BulkColumnInfo = {
|
|
6
6
|
column: string;
|
|
@@ -108,15 +108,7 @@ export interface IBulkDatabase2<T extends {
|
|
|
108
108
|
* stream files still being appended). `bytes` is the actual on-disk size. Good for showing collection
|
|
109
109
|
* size/fragmentation and deciding whether to call tryMergeNow()/compact().
|
|
110
110
|
*/
|
|
111
|
-
getFileInfo(): Promise<
|
|
112
|
-
files: {
|
|
113
|
-
name: string;
|
|
114
|
-
type: "bulk" | "stream";
|
|
115
|
-
bytes: number;
|
|
116
|
-
}[];
|
|
117
|
-
count: number;
|
|
118
|
-
totalBytes: number;
|
|
119
|
-
}>;
|
|
111
|
+
getFileInfo(): Promise<BulkFileInfoListing>;
|
|
120
112
|
/** Consolidate on-disk files. Optional to call; the database also does this in the background. */
|
|
121
113
|
compact(): Promise<void>;
|
|
122
114
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getFileStorageNested2 } from "../FileFolderAPI";
|
|
2
2
|
import { observable, runInAction, onBecomeObserved, onBecomeUnobserved } from "../../render-utils/mobxTyped";
|
|
3
|
-
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
3
|
+
import { BulkDatabaseBase, ReactiveDeps, BulkDatabase2Config, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
4
4
|
|
|
5
5
|
export { BulkDatabaseBase, noopReactiveDeps, bulkDatabase2Timing } from "./BulkDatabaseBase";
|
|
6
|
-
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config } from "./BulkDatabaseBase";
|
|
6
|
+
export type { ReactiveDeps, StorageFactory, BulkDatabase2Config, BulkFileDetails, BulkFileEntry, BulkFileInfoListing } from "./BulkDatabaseBase";
|
|
7
7
|
|
|
8
8
|
/** Per-column on-disk size info, as reported by getColumnInfo/getReaderInfo. */
|
|
9
9
|
export type BulkColumnInfo = { column: string; byteSize: number };
|
|
@@ -96,7 +96,7 @@ export interface IBulkDatabase2<T extends { key: string }> {
|
|
|
96
96
|
* stream files still being appended). `bytes` is the actual on-disk size. Good for showing collection
|
|
97
97
|
* size/fragmentation and deciding whether to call tryMergeNow()/compact().
|
|
98
98
|
*/
|
|
99
|
-
getFileInfo(): Promise<
|
|
99
|
+
getFileInfo(): Promise<BulkFileInfoListing>;
|
|
100
100
|
|
|
101
101
|
/** Consolidate on-disk files. Optional to call; the database also does this in the background. */
|
|
102
102
|
compact(): Promise<void>;
|
|
@@ -155,13 +155,21 @@ export declare class BulkDatabaseBase<T extends {
|
|
|
155
155
|
byteSize: number;
|
|
156
156
|
}[];
|
|
157
157
|
}>;
|
|
158
|
-
getFileInfo(): Promise<
|
|
159
|
-
files: {
|
|
160
|
-
name: string;
|
|
161
|
-
type: "bulk" | "stream";
|
|
162
|
-
bytes: number;
|
|
163
|
-
}[];
|
|
164
|
-
count: number;
|
|
165
|
-
totalBytes: number;
|
|
166
|
-
}>;
|
|
158
|
+
getFileInfo(): Promise<BulkFileInfoListing>;
|
|
167
159
|
}
|
|
160
|
+
export type BulkFileDetails = {
|
|
161
|
+
keys: string[];
|
|
162
|
+
minTime: number;
|
|
163
|
+
maxTime: number;
|
|
164
|
+
};
|
|
165
|
+
export type BulkFileEntry = {
|
|
166
|
+
name: string;
|
|
167
|
+
type: "bulk" | "stream";
|
|
168
|
+
bytes: number;
|
|
169
|
+
getDetails: () => Promise<BulkFileDetails>;
|
|
170
|
+
};
|
|
171
|
+
export type BulkFileInfoListing = {
|
|
172
|
+
files: BulkFileEntry[];
|
|
173
|
+
count: number;
|
|
174
|
+
totalBytes: number;
|
|
175
|
+
};
|
|
@@ -923,15 +923,55 @@ export class BulkDatabaseBase<T extends { key: string }> {
|
|
|
923
923
|
};
|
|
924
924
|
}
|
|
925
925
|
|
|
926
|
-
public async getFileInfo(): Promise<
|
|
926
|
+
public async getFileInfo(): Promise<BulkFileInfoListing> {
|
|
927
927
|
const { bulkFiles, streamFiles } = await this.listFiles();
|
|
928
928
|
const storage = await this.storage();
|
|
929
929
|
const sizeOf = async (name: string) => { try { return (await storage.getInfo(name))?.size ?? 0; } catch { return 0; } };
|
|
930
|
-
const
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
930
|
+
const bulkInfos = await Promise.all(bulkFiles.map(async f => ({
|
|
931
|
+
name: f.fileName,
|
|
932
|
+
type: "bulk" as const,
|
|
933
|
+
bytes: await sizeOf(f.fileName),
|
|
934
|
+
getDetails: async () => {
|
|
935
|
+
// Bulk: reader has keys + per-row keyTimes + header minTime/maxTime. Cached, so cheap.
|
|
936
|
+
const reader = await loadFileReader(this.name, storage, f, this.subCaches.bulk);
|
|
937
|
+
return { keys: reader.keys, minTime: reader.minTime, maxTime: reader.maxTime };
|
|
938
|
+
},
|
|
939
|
+
})));
|
|
940
|
+
const streamInfos = await Promise.all(streamFiles.map(async f => ({
|
|
941
|
+
name: f.fileName,
|
|
942
|
+
type: "stream" as const,
|
|
943
|
+
bytes: await sizeOf(f.fileName),
|
|
944
|
+
getDetails: async () => {
|
|
945
|
+
// Stream: must parse the file to walk every entry — header has no key/time bounds. Cached.
|
|
946
|
+
const data = await loadStreamEntries(this.name, storage, [f], this.subCaches.stream);
|
|
947
|
+
const keys = new Set<string>();
|
|
948
|
+
let minTime = Infinity, maxTime = -Infinity;
|
|
949
|
+
for (const e of data.entries) {
|
|
950
|
+
if (e.time < minTime) minTime = e.time;
|
|
951
|
+
if (e.time > maxTime) maxTime = e.time;
|
|
952
|
+
if (e.entry.row) keys.add(e.entry.row.key as string);
|
|
953
|
+
else if (e.entry.deletedKey !== undefined) keys.add(e.entry.deletedKey);
|
|
954
|
+
}
|
|
955
|
+
return {
|
|
956
|
+
keys: [...keys],
|
|
957
|
+
minTime: minTime === Infinity ? 0 : minTime,
|
|
958
|
+
maxTime: maxTime === -Infinity ? 0 : maxTime,
|
|
959
|
+
};
|
|
960
|
+
},
|
|
961
|
+
})));
|
|
962
|
+
const files = [...bulkInfos, ...streamInfos];
|
|
934
963
|
return { files, count: files.length, totalBytes: files.reduce((a, f) => a + f.bytes, 0) };
|
|
935
964
|
}
|
|
936
965
|
}
|
|
937
966
|
|
|
967
|
+
export type BulkFileDetails = { keys: string[]; minTime: number; maxTime: number };
|
|
968
|
+
export type BulkFileEntry = {
|
|
969
|
+
name: string;
|
|
970
|
+
type: "bulk" | "stream";
|
|
971
|
+
bytes: number;
|
|
972
|
+
// Lazy: pulled from the cached sub-reader for bulk (free if loaded), or from a parse of the stream
|
|
973
|
+
// file (small — tier-0 size-capped, also cached). Call only when you need the per-file detail.
|
|
974
|
+
getDetails: () => Promise<BulkFileDetails>;
|
|
975
|
+
};
|
|
976
|
+
export type BulkFileInfoListing = { files: BulkFileEntry[]; count: number; totalBytes: number };
|
|
977
|
+
|