@trebired/logger 1.1.2 → 2.0.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/CHANGELOG.md +21 -0
- package/README.md +177 -14
- package/dist/browser/console_transport.d.ts +5 -0
- package/dist/browser/console_transport.d.ts.map +1 -0
- package/dist/browser/console_transport.js +51 -0
- package/dist/browser/console_transport.js.map +1 -0
- package/dist/browser/create_log.d.ts +4 -0
- package/dist/browser/create_log.d.ts.map +1 -0
- package/dist/browser/create_log.js +234 -0
- package/dist/browser/create_log.js.map +1 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +3 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/react.d.ts +30 -0
- package/dist/browser/react.d.ts.map +1 -0
- package/dist/browser/react.js +44 -0
- package/dist/browser/react.js.map +1 -0
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -1
- package/dist/core/create_log.d.ts.map +1 -1
- package/dist/core/create_log.js +111 -137
- package/dist/core/create_log.js.map +1 -1
- package/dist/core/shared.d.ts +31 -0
- package/dist/core/shared.d.ts.map +1 -0
- package/dist/core/shared.js +144 -0
- package/dist/core/shared.js.map +1 -0
- package/dist/format/console.d.ts +2 -2
- package/dist/format/console.d.ts.map +1 -1
- package/dist/format/console.js +2 -17
- package/dist/format/console.js.map +1 -1
- package/dist/format/options.d.ts +4 -0
- package/dist/format/options.d.ts.map +1 -0
- package/dist/format/options.js +19 -0
- package/dist/format/options.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/names.d.ts +10 -3
- package/dist/storage/names.d.ts.map +1 -1
- package/dist/storage/names.js +76 -33
- package/dist/storage/names.js.map +1 -1
- package/dist/storage/options.d.ts.map +1 -1
- package/dist/storage/options.js +3 -1
- package/dist/storage/options.js.map +1 -1
- package/dist/storage/partitions.d.ts +30 -0
- package/dist/storage/partitions.d.ts.map +1 -0
- package/dist/storage/partitions.js +564 -0
- package/dist/storage/partitions.js.map +1 -0
- package/dist/storage/query.d.ts +8 -4
- package/dist/storage/query.d.ts.map +1 -1
- package/dist/storage/query.js +135 -28
- package/dist/storage/query.js.map +1 -1
- package/dist/storage/retention.d.ts.map +1 -1
- package/dist/storage/retention.js +51 -2
- package/dist/storage/retention.js.map +1 -1
- package/dist/storage/walk.d.ts.map +1 -1
- package/dist/storage/walk.js +65 -9
- package/dist/storage/walk.js.map +1 -1
- package/dist/storage/write.d.ts +1 -0
- package/dist/storage/write.d.ts.map +1 -1
- package/dist/storage/write.js +12 -1
- package/dist/storage/write.js.map +1 -1
- package/dist/stream/index.d.ts +11 -3
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +40 -4
- package/dist/stream/index.js.map +1 -1
- package/dist/types.d.ts +189 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -3
package/dist/storage/query.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from "node:fs";
|
|
|
2
2
|
import zlib from "node:zlib";
|
|
3
3
|
import { normalizeLevels } from "../levels/index.js";
|
|
4
4
|
import { toString } from "../utils/values.js";
|
|
5
|
+
import { sanitizePartitionName } from "./names.js";
|
|
5
6
|
import { walkLogFiles } from "./walk.js";
|
|
6
7
|
async function readLogRows(filePath, compressed) {
|
|
7
8
|
try {
|
|
@@ -34,58 +35,164 @@ function sortByRecordedAtAsc(entries) {
|
|
|
34
35
|
});
|
|
35
36
|
return entries;
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function partitionKey(partition) {
|
|
39
|
+
return partition || "__unpartitioned__";
|
|
40
|
+
}
|
|
41
|
+
function normalizePartitionFilter(input) {
|
|
42
|
+
if (input == null)
|
|
43
|
+
return null;
|
|
44
|
+
const raw = toString(input).trim();
|
|
45
|
+
if (!raw)
|
|
46
|
+
return null;
|
|
47
|
+
return sanitizePartitionName(raw);
|
|
48
|
+
}
|
|
49
|
+
function buildAggregateTotals(items) {
|
|
50
|
+
let logs = 0;
|
|
51
|
+
let dirs = 0;
|
|
52
|
+
let files = 0;
|
|
53
|
+
for (const item of items.values()) {
|
|
54
|
+
logs += item.total.logs;
|
|
55
|
+
dirs += item.total.dirs;
|
|
56
|
+
files += item.total.files;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
logs,
|
|
60
|
+
dirs,
|
|
61
|
+
files,
|
|
62
|
+
partitions: items.size,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function buildPartitionItems(items, counts) {
|
|
66
|
+
return Array.from(items.values())
|
|
67
|
+
.sort((a, b) => (a.partition || "").localeCompare(b.partition || ""))
|
|
68
|
+
.map((item) => ({
|
|
69
|
+
partition: item.partition,
|
|
70
|
+
count: counts.get(partitionKey(item.partition)) || 0,
|
|
71
|
+
total: item.total,
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
function buildQueryResult(dir, logs, options, partition, hasExplicitPartition, total, items, counts) {
|
|
38
75
|
const opts = options || {};
|
|
39
76
|
const limit = Number(opts.limit) || 0;
|
|
77
|
+
const acrossPartitions = opts.acrossPartitions === true || !hasExplicitPartition;
|
|
40
78
|
return {
|
|
41
79
|
logs,
|
|
42
80
|
levels: normalizeLevels(opts.levels),
|
|
43
81
|
metadata: {
|
|
44
82
|
dir,
|
|
83
|
+
partition,
|
|
45
84
|
count: logs.length,
|
|
85
|
+
total,
|
|
46
86
|
query: {
|
|
47
87
|
level: toString(opts.level || "all").toLowerCase() || "all",
|
|
48
88
|
groupKey: toString(opts.groupKey || "all") || "all",
|
|
49
89
|
day: toString(opts.day),
|
|
50
90
|
hour: toString(opts.hour),
|
|
51
91
|
limit: Number.isFinite(limit) ? limit : 0,
|
|
92
|
+
partition: hasExplicitPartition ? partition : null,
|
|
93
|
+
acrossPartitions,
|
|
94
|
+
},
|
|
95
|
+
partitions: {
|
|
96
|
+
items: buildPartitionItems(items, counts),
|
|
97
|
+
all: buildAggregateTotals(items),
|
|
52
98
|
},
|
|
53
99
|
},
|
|
54
100
|
};
|
|
55
101
|
}
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return false;
|
|
102
|
+
function fileMatchesFilters(file, options) {
|
|
103
|
+
const level = toString(options.level || "all").toLowerCase() || "all";
|
|
104
|
+
const groupKey = toString(options.groupKey || "all") || "all";
|
|
105
|
+
const day = toString(options.day);
|
|
106
|
+
const hour = toString(options.hour);
|
|
107
|
+
if (day && file.day !== day)
|
|
108
|
+
return false;
|
|
109
|
+
if (hour && file.hour !== hour)
|
|
110
|
+
return false;
|
|
111
|
+
if (groupKey !== "all" && file.groupKey !== groupKey)
|
|
112
|
+
return false;
|
|
113
|
+
if (level !== "all" && file.level !== level)
|
|
114
|
+
return false;
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
function scopeMatches(file, partition, acrossPartitions) {
|
|
118
|
+
if (acrossPartitions)
|
|
74
119
|
return true;
|
|
75
|
-
|
|
120
|
+
if (partition == null)
|
|
121
|
+
return file.partition == null;
|
|
122
|
+
return file.partition === partition;
|
|
123
|
+
}
|
|
124
|
+
async function hydrateRows(file) {
|
|
125
|
+
const rows = await readLogRows(file.absPath, file.compressed);
|
|
126
|
+
const fallbackPartition = file.partition || null;
|
|
127
|
+
for (const row of rows) {
|
|
128
|
+
if (row && !row.group)
|
|
129
|
+
row.group = file.groupKey;
|
|
130
|
+
if (row && !Object.prototype.hasOwnProperty.call(row, "partition"))
|
|
131
|
+
row.partition = fallbackPartition;
|
|
132
|
+
}
|
|
133
|
+
return rows;
|
|
134
|
+
}
|
|
135
|
+
async function summarizeFiles(files) {
|
|
136
|
+
const items = new Map();
|
|
137
|
+
const dirSets = new Map();
|
|
138
|
+
for (const file of files) {
|
|
139
|
+
const key = partitionKey(file.partition);
|
|
140
|
+
const rows = await hydrateRows(file);
|
|
141
|
+
const current = items.get(key) || {
|
|
142
|
+
partition: file.partition || null,
|
|
143
|
+
total: { logs: 0, dirs: 0, files: 0 },
|
|
144
|
+
};
|
|
145
|
+
current.total.logs += rows.length;
|
|
146
|
+
current.total.files += 1;
|
|
147
|
+
items.set(key, current);
|
|
148
|
+
const dirs = dirSets.get(key) || new Set();
|
|
149
|
+
dirs.add(file.relDir || ".");
|
|
150
|
+
dirSets.set(key, dirs);
|
|
151
|
+
}
|
|
152
|
+
for (const [key, dirs] of dirSets.entries()) {
|
|
153
|
+
const item = items.get(key);
|
|
154
|
+
if (item)
|
|
155
|
+
item.total.dirs = dirs.size;
|
|
156
|
+
}
|
|
157
|
+
return items;
|
|
158
|
+
}
|
|
159
|
+
async function readFilteredLogs(files, options) {
|
|
76
160
|
let logs = [];
|
|
161
|
+
const counts = new Map();
|
|
77
162
|
for (const file of files) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
163
|
+
if (!fileMatchesFilters(file, options))
|
|
164
|
+
continue;
|
|
165
|
+
const rows = await hydrateRows(file);
|
|
166
|
+
const key = partitionKey(file.partition);
|
|
167
|
+
counts.set(key, (counts.get(key) || 0) + rows.length);
|
|
83
168
|
logs = logs.concat(rows);
|
|
84
169
|
}
|
|
85
170
|
sortByRecordedAtAsc(logs);
|
|
86
|
-
const limit = Number(
|
|
171
|
+
const limit = Number(options.limit) || 0;
|
|
87
172
|
const limitedLogs = limit > 0 && Number.isFinite(limit) ? logs.slice(Math.max(0, logs.length - limit)) : logs;
|
|
88
|
-
return
|
|
173
|
+
return { logs: limitedLogs, counts };
|
|
174
|
+
}
|
|
175
|
+
async function getLogsForDir(dir, options) {
|
|
176
|
+
const baseDir = toString(dir);
|
|
177
|
+
const opts = options || {};
|
|
178
|
+
if (!baseDir) {
|
|
179
|
+
return buildQueryResult("", [], opts, null, false, { logs: 0, dirs: 0, files: 0 }, new Map(), new Map());
|
|
180
|
+
}
|
|
181
|
+
const hasExplicitPartition = Object.prototype.hasOwnProperty.call(opts, "partition");
|
|
182
|
+
const partition = hasExplicitPartition ? normalizePartitionFilter(opts.partition) : null;
|
|
183
|
+
const acrossPartitions = opts.acrossPartitions === true || !hasExplicitPartition;
|
|
184
|
+
const allFiles = await walkLogFiles(baseDir);
|
|
185
|
+
const scopeFiles = allFiles.filter((file) => scopeMatches(file, partition, acrossPartitions));
|
|
186
|
+
const allItems = await summarizeFiles(allFiles);
|
|
187
|
+
const scopeItems = scopeFiles === allFiles ? allItems : await summarizeFiles(scopeFiles);
|
|
188
|
+
const { logs, counts } = await readFilteredLogs(scopeFiles, opts);
|
|
189
|
+
let total = { logs: 0, dirs: 0, files: 0 };
|
|
190
|
+
for (const item of scopeItems.values()) {
|
|
191
|
+
total.logs += item.total.logs;
|
|
192
|
+
total.dirs += item.total.dirs;
|
|
193
|
+
total.files += item.total.files;
|
|
194
|
+
}
|
|
195
|
+
return buildQueryResult(baseDir, logs, opts, acrossPartitions ? null : partition, hasExplicitPartition, total, allItems, counts);
|
|
89
196
|
}
|
|
90
|
-
export { buildQueryResult,
|
|
197
|
+
export { buildQueryResult, getLogsForDir, readLogRows, sortByRecordedAtAsc };
|
|
91
198
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/storage/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/storage/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/storage/retention.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/storage/retention.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAa9D,iBAAe,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3D;AAoBD,iBAAe,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD1F;AAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
2
3
|
import zlib from "node:zlib";
|
|
3
4
|
import { nowFileStamp } from "./names.js";
|
|
5
|
+
import { readPartitionMarkerFromRoot } from "./partitions.js";
|
|
4
6
|
import { walkLogFiles } from "./walk.js";
|
|
5
7
|
function currentDayHour() {
|
|
6
8
|
const stamp = nowFileStamp();
|
|
@@ -24,19 +26,44 @@ async function compressFile(filePath) {
|
|
|
24
26
|
await fs.promises.writeFile(target, compressed);
|
|
25
27
|
await fs.promises.unlink(filePath);
|
|
26
28
|
}
|
|
29
|
+
async function listPartitionRoots(dir) {
|
|
30
|
+
let entries = [];
|
|
31
|
+
try {
|
|
32
|
+
entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
const roots = [];
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
if (!entry.isDirectory())
|
|
40
|
+
continue;
|
|
41
|
+
const root = path.join(dir, entry.name);
|
|
42
|
+
if (await readPartitionMarkerFromRoot(root, entry.name))
|
|
43
|
+
roots.push(root);
|
|
44
|
+
}
|
|
45
|
+
return roots;
|
|
46
|
+
}
|
|
27
47
|
async function cleanupLogs(dir, options) {
|
|
28
48
|
if (!options.enabled || !dir)
|
|
29
49
|
return;
|
|
30
50
|
const files = await walkLogFiles(dir);
|
|
31
|
-
const cutoff = Date.now() - options.maxAgeDays * 24 * 60 * 60 * 1000;
|
|
51
|
+
const cutoff = options.maxAgeDays == null ? null : Date.now() - options.maxAgeDays * 24 * 60 * 60 * 1000;
|
|
32
52
|
const now = currentDayHour();
|
|
53
|
+
const partitionActivity = new Map();
|
|
33
54
|
for (const file of files) {
|
|
34
55
|
try {
|
|
35
56
|
const stat = await fs.promises.stat(file.absPath);
|
|
36
|
-
if (stat.mtimeMs < cutoff) {
|
|
57
|
+
if (cutoff != null && stat.mtimeMs < cutoff) {
|
|
37
58
|
await fs.promises.unlink(file.absPath);
|
|
38
59
|
continue;
|
|
39
60
|
}
|
|
61
|
+
if (file.partition) {
|
|
62
|
+
const rootDir = path.join(dir, file.partition);
|
|
63
|
+
const last = partitionActivity.get(rootDir) || 0;
|
|
64
|
+
if (stat.mtimeMs > last)
|
|
65
|
+
partitionActivity.set(rootDir, stat.mtimeMs);
|
|
66
|
+
}
|
|
40
67
|
if (options.compressOldFiles &&
|
|
41
68
|
!file.compressed &&
|
|
42
69
|
(file.day !== now.day || file.hour !== now.hour)) {
|
|
@@ -45,6 +72,28 @@ async function cleanupLogs(dir, options) {
|
|
|
45
72
|
}
|
|
46
73
|
catch { }
|
|
47
74
|
}
|
|
75
|
+
if (options.maxPartitions == null)
|
|
76
|
+
return;
|
|
77
|
+
const roots = await listPartitionRoots(dir);
|
|
78
|
+
const ranked = await Promise.all(roots.map(async (rootDir) => {
|
|
79
|
+
let lastActivity = partitionActivity.get(rootDir) || 0;
|
|
80
|
+
if (!lastActivity) {
|
|
81
|
+
try {
|
|
82
|
+
const stat = await fs.promises.stat(rootDir);
|
|
83
|
+
lastActivity = stat.mtimeMs;
|
|
84
|
+
}
|
|
85
|
+
catch { }
|
|
86
|
+
}
|
|
87
|
+
return { rootDir, lastActivity };
|
|
88
|
+
}));
|
|
89
|
+
ranked.sort((a, b) => b.lastActivity - a.lastActivity);
|
|
90
|
+
const toDelete = ranked.slice(Math.max(0, options.maxPartitions));
|
|
91
|
+
for (const item of toDelete) {
|
|
92
|
+
try {
|
|
93
|
+
await fs.promises.rm(item.rootDir, { recursive: true, force: true });
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
}
|
|
48
97
|
}
|
|
49
98
|
export { cleanupLogs, compressFile };
|
|
50
99
|
//# sourceMappingURL=retention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/storage/retention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACvB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACrC,MAAM,MAAM,GAAG,GAAG,QAAQ,KAAK,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,OAAmC;IACzE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG;QAAE,OAAO;IACrC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/storage/retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/storage/walk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/storage/walk.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAwDpE,iBAAe,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyBrE;AAED,iBAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAyB1D;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/storage/walk.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { PARTITION_MARKER_FILE } from "../constants.js";
|
|
4
|
+
import { readPartitionMarkerFromRoot, readPartitionMarkerFromRootSync } from "./partitions.js";
|
|
3
5
|
import { walkedFileFromPath } from "./names.js";
|
|
4
|
-
async function
|
|
5
|
-
const
|
|
6
|
-
const stack = [baseDir];
|
|
6
|
+
async function walkTree(baseDir, startDir, rootDir, partition, out) {
|
|
7
|
+
const stack = [startDir];
|
|
7
8
|
while (stack.length) {
|
|
8
9
|
const dir = stack.pop() || "";
|
|
9
10
|
let entries = [];
|
|
@@ -21,16 +22,16 @@ async function walkLogFiles(baseDir) {
|
|
|
21
22
|
}
|
|
22
23
|
if (!entry.isFile())
|
|
23
24
|
continue;
|
|
24
|
-
|
|
25
|
+
if (entry.name === PARTITION_MARKER_FILE)
|
|
26
|
+
continue;
|
|
27
|
+
const walked = walkedFileFromPath(baseDir, absPath, partition, rootDir);
|
|
25
28
|
if (walked)
|
|
26
29
|
out.push(walked);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
return out;
|
|
30
32
|
}
|
|
31
|
-
function
|
|
32
|
-
const
|
|
33
|
-
const stack = [baseDir];
|
|
33
|
+
function walkTreeSync(baseDir, startDir, rootDir, partition, out) {
|
|
34
|
+
const stack = [startDir];
|
|
34
35
|
while (stack.length) {
|
|
35
36
|
const dir = stack.pop() || "";
|
|
36
37
|
let entries = [];
|
|
@@ -48,11 +49,66 @@ function walkLogFilesSync(baseDir) {
|
|
|
48
49
|
}
|
|
49
50
|
if (!entry.isFile())
|
|
50
51
|
continue;
|
|
51
|
-
|
|
52
|
+
if (entry.name === PARTITION_MARKER_FILE)
|
|
53
|
+
continue;
|
|
54
|
+
const walked = walkedFileFromPath(baseDir, absPath, partition, rootDir);
|
|
52
55
|
if (walked)
|
|
53
56
|
out.push(walked);
|
|
54
57
|
}
|
|
55
58
|
}
|
|
59
|
+
}
|
|
60
|
+
async function walkLogFiles(baseDir) {
|
|
61
|
+
const out = [];
|
|
62
|
+
let entries = [];
|
|
63
|
+
try {
|
|
64
|
+
entries = await fs.promises.readdir(baseDir, { withFileTypes: true });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
const absPath = path.join(baseDir, entry.name);
|
|
71
|
+
if (entry.isDirectory()) {
|
|
72
|
+
if (await readPartitionMarkerFromRoot(absPath, entry.name)) {
|
|
73
|
+
await walkTree(baseDir, absPath, absPath, entry.name, out);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
await walkTree(baseDir, absPath, baseDir, null, out);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (!entry.isFile() || entry.name === PARTITION_MARKER_FILE)
|
|
80
|
+
continue;
|
|
81
|
+
const walked = walkedFileFromPath(baseDir, absPath, null, baseDir);
|
|
82
|
+
if (walked)
|
|
83
|
+
out.push(walked);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
function walkLogFilesSync(baseDir) {
|
|
88
|
+
const out = [];
|
|
89
|
+
let entries = [];
|
|
90
|
+
try {
|
|
91
|
+
entries = fs.readdirSync(baseDir, { withFileTypes: true });
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
for (const entry of entries) {
|
|
97
|
+
const absPath = path.join(baseDir, entry.name);
|
|
98
|
+
if (entry.isDirectory()) {
|
|
99
|
+
if (readPartitionMarkerFromRootSync(absPath, entry.name)) {
|
|
100
|
+
walkTreeSync(baseDir, absPath, absPath, entry.name, out);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
walkTreeSync(baseDir, absPath, baseDir, null, out);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (!entry.isFile() || entry.name === PARTITION_MARKER_FILE)
|
|
107
|
+
continue;
|
|
108
|
+
const walked = walkedFileFromPath(baseDir, absPath, null, baseDir);
|
|
109
|
+
if (walked)
|
|
110
|
+
out.push(walked);
|
|
111
|
+
}
|
|
56
112
|
return out;
|
|
57
113
|
}
|
|
58
114
|
export { walkLogFiles, walkLogFilesSync };
|
package/dist/storage/walk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/storage/walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAsB,MAAM,YAAY,CAAC;AAEpE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/storage/walk.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/write.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/storage/write.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/storage/write.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAM1G,KAAK,aAAa,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,0BAA0B,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,OAAO,CAAC,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAAW;gBAEZ,OAAO,EAAE,aAAa;IAoBlC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7B,MAAM,IAAI,MAAM;IAIhB,eAAe,IAAI,OAAO;IAI1B,QAAQ,IAAI,QAAQ;IAQpB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAmCtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,WAAW;YAuBL,QAAQ;IAKtB,OAAO,CAAC,YAAY;CAIrB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/storage/write.js
CHANGED
|
@@ -4,6 +4,7 @@ import { normGroup } from "../groups.js";
|
|
|
4
4
|
import { toString } from "../utils/values.js";
|
|
5
5
|
import { cleanupLogs } from "./retention.js";
|
|
6
6
|
import { fileStampForEntry, makeLogFileName } from "./names.js";
|
|
7
|
+
import { touchPartitionMarkerSync } from "./partitions.js";
|
|
7
8
|
class FileWriter {
|
|
8
9
|
constructor(options) {
|
|
9
10
|
this.queue = [];
|
|
@@ -37,6 +38,9 @@ class FileWriter {
|
|
|
37
38
|
getDir() {
|
|
38
39
|
return this.dir;
|
|
39
40
|
}
|
|
41
|
+
isSavingEnabled() {
|
|
42
|
+
return this.save;
|
|
43
|
+
}
|
|
40
44
|
getStats() {
|
|
41
45
|
return {
|
|
42
46
|
...this.stats,
|
|
@@ -103,6 +107,8 @@ class FileWriter {
|
|
|
103
107
|
this.cleanupTimer = null;
|
|
104
108
|
if (!this.save || !this.dir || !this.retention.enabled)
|
|
105
109
|
return;
|
|
110
|
+
if (this.retention.maxAgeDays == null && this.retention.maxPartitions == null && !this.retention.compressOldFiles)
|
|
111
|
+
return;
|
|
106
112
|
cleanupLogs(this.dir, this.retention).catch(() => { });
|
|
107
113
|
this.cleanupTimer = setInterval(() => {
|
|
108
114
|
cleanupLogs(this.dir, this.retention).catch(() => { });
|
|
@@ -139,7 +145,12 @@ class FileWriter {
|
|
|
139
145
|
}
|
|
140
146
|
resolvePath(entry) {
|
|
141
147
|
const normalized = normGroup(entry.group);
|
|
142
|
-
const
|
|
148
|
+
const partition = toString(entry.partition);
|
|
149
|
+
const groupDir = partition
|
|
150
|
+
? path.join(this.dir, partition, ...normalized.parts)
|
|
151
|
+
: path.join(this.dir, ...normalized.parts);
|
|
152
|
+
if (partition)
|
|
153
|
+
touchPartitionMarkerSync(this.dir, partition);
|
|
143
154
|
fs.mkdirSync(groupDir, { recursive: true });
|
|
144
155
|
const stamp = fileStampForEntry(entry, this.timeZone);
|
|
145
156
|
let sequence = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/storage/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/storage/write.ts"],"names":[],"mappings":"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"}
|
package/dist/stream/index.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
declare
|
|
1
|
+
type StreamHandler = (...args: any[]) => void;
|
|
2
|
+
declare class SimpleEmitter {
|
|
3
|
+
private listeners;
|
|
4
|
+
emit(eventName: string, ...args: any[]): boolean;
|
|
5
|
+
on(eventName: string, handler: StreamHandler): this;
|
|
6
|
+
once(eventName: string, handler: StreamHandler): this;
|
|
7
|
+
off(eventName: string, handler: StreamHandler): this;
|
|
8
|
+
removeListener(eventName: string, handler: StreamHandler): this;
|
|
9
|
+
}
|
|
10
|
+
declare const emitter: SimpleEmitter;
|
|
3
11
|
declare const logStream: Readonly<{
|
|
4
|
-
emitter:
|
|
12
|
+
emitter: SimpleEmitter;
|
|
5
13
|
emit: any;
|
|
6
14
|
on: any;
|
|
7
15
|
once: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE9C,cAAM,aAAa;IACjB,OAAO,CAAC,SAAS,CAAyC;IAE1D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAOhD,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAOnD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAQrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAQpD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;CAGhE;AAED,QAAA,MAAM,OAAO,eAAsB,CAAC;AAEpC,QAAA,MAAM,SAAS;;;;;;EAMb,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/stream/index.js
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
class SimpleEmitter {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.listeners = new Map();
|
|
4
|
+
}
|
|
5
|
+
emit(eventName, ...args) {
|
|
6
|
+
const handlers = this.listeners.get(eventName);
|
|
7
|
+
if (!handlers || handlers.size === 0)
|
|
8
|
+
return false;
|
|
9
|
+
for (const handler of Array.from(handlers))
|
|
10
|
+
handler(...args);
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
on(eventName, handler) {
|
|
14
|
+
const handlers = this.listeners.get(eventName) || new Set();
|
|
15
|
+
handlers.add(handler);
|
|
16
|
+
this.listeners.set(eventName, handlers);
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
once(eventName, handler) {
|
|
20
|
+
const onceHandler = (...args) => {
|
|
21
|
+
this.off(eventName, onceHandler);
|
|
22
|
+
handler(...args);
|
|
23
|
+
};
|
|
24
|
+
return this.on(eventName, onceHandler);
|
|
25
|
+
}
|
|
26
|
+
off(eventName, handler) {
|
|
27
|
+
const handlers = this.listeners.get(eventName);
|
|
28
|
+
if (!handlers)
|
|
29
|
+
return this;
|
|
30
|
+
handlers.delete(handler);
|
|
31
|
+
if (handlers.size === 0)
|
|
32
|
+
this.listeners.delete(eventName);
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
removeListener(eventName, handler) {
|
|
36
|
+
return this.off(eventName, handler);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const emitter = new SimpleEmitter();
|
|
4
40
|
const logStream = Object.freeze({
|
|
5
41
|
emitter,
|
|
6
42
|
emit: emitter.emit.bind(emitter),
|
|
7
43
|
on: emitter.on.bind(emitter),
|
|
8
44
|
once: emitter.once.bind(emitter),
|
|
9
|
-
off:
|
|
45
|
+
off: emitter.off.bind(emitter),
|
|
10
46
|
});
|
|
11
47
|
export { emitter, logStream };
|
|
12
48
|
//# sourceMappingURL=index.js.map
|