@gscdump/engine 1.5.0 → 1.5.1
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/dist/analysis-range.d.mts +7 -0
- package/dist/analysis-range.mjs +33 -0
- package/package.json +9 -4
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AnalysisParams } from "./analysis-types.mjs";
|
|
2
|
+
interface AnalysisCoverageRange {
|
|
3
|
+
start: string;
|
|
4
|
+
end: string;
|
|
5
|
+
}
|
|
6
|
+
declare function analysisRequestedRange(params: AnalysisParams, onInvalidFilter?: (error: unknown) => void): AnalysisCoverageRange | null;
|
|
7
|
+
export { AnalysisCoverageRange, analysisRequestedRange };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { extractDateRange, normalizeFilter } from "gscdump/query";
|
|
2
|
+
const ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
|
+
function addRange(ranges, start, end) {
|
|
4
|
+
if (typeof start !== "string" || typeof end !== "string") return;
|
|
5
|
+
if (!ISO_DATE_RE.test(start) || !ISO_DATE_RE.test(end) || end < start) return;
|
|
6
|
+
ranges.push({
|
|
7
|
+
start,
|
|
8
|
+
end
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function analysisRequestedRange(params, onInvalidFilter) {
|
|
12
|
+
const ranges = [];
|
|
13
|
+
addRange(ranges, params.startDate, params.endDate);
|
|
14
|
+
addRange(ranges, params.prevStartDate, params.prevEndDate);
|
|
15
|
+
for (const state of [params.q, params.qc]) {
|
|
16
|
+
if (!state) continue;
|
|
17
|
+
const direct = state.filter;
|
|
18
|
+
addRange(ranges, direct?.startDate, direct?.endDate);
|
|
19
|
+
try {
|
|
20
|
+
const extracted = extractDateRange(normalizeFilter(state.filter) ?? state.filter);
|
|
21
|
+
addRange(ranges, extracted.startDate, extracted.endDate);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
if (!onInvalidFilter) throw error;
|
|
24
|
+
onInvalidFilter(error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (ranges.length === 0) return null;
|
|
28
|
+
return ranges.reduce((range, next) => ({
|
|
29
|
+
start: next.start < range.start ? next.start : range.start,
|
|
30
|
+
end: next.end > range.end ? next.end : range.end
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
export { analysisRequestedRange };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gscdump/engine",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.1",
|
|
5
5
|
"description": "Append-only Parquet/DuckDB storage engine + planner + adapters for the gscdump pipeline. Node + edge runtimes; opt-in heavy peers.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -136,6 +136,11 @@
|
|
|
136
136
|
"import": "./dist/analysis-types.mjs",
|
|
137
137
|
"default": "./dist/analysis-types.mjs"
|
|
138
138
|
},
|
|
139
|
+
"./analysis-range": {
|
|
140
|
+
"types": "./dist/analysis-range.d.mts",
|
|
141
|
+
"import": "./dist/analysis-range.mjs",
|
|
142
|
+
"default": "./dist/analysis-range.mjs"
|
|
143
|
+
},
|
|
139
144
|
"./period": {
|
|
140
145
|
"types": "./dist/period/index.d.mts",
|
|
141
146
|
"import": "./dist/period/index.mjs",
|
|
@@ -181,9 +186,9 @@
|
|
|
181
186
|
"dependencies": {
|
|
182
187
|
"drizzle-orm": "1.0.0-rc.3",
|
|
183
188
|
"proper-lockfile": "^4.1.2",
|
|
184
|
-
"@gscdump/
|
|
185
|
-
"@gscdump/
|
|
186
|
-
"gscdump": "^1.5.
|
|
189
|
+
"@gscdump/lakehouse": "^1.5.1",
|
|
190
|
+
"@gscdump/contracts": "^1.5.1",
|
|
191
|
+
"gscdump": "^1.5.1"
|
|
187
192
|
},
|
|
188
193
|
"devDependencies": {
|
|
189
194
|
"@duckdb/duckdb-wasm": "1.33.1-dev57.0",
|