gscdump 0.12.0 → 0.13.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/index.d.mts CHANGED
@@ -106,6 +106,7 @@ interface BuilderState {
106
106
  dimensions: Dimension[];
107
107
  metrics?: Metric[];
108
108
  filter?: Filter<any>;
109
+ prefilter?: Filter<any>;
109
110
  orderBy?: {
110
111
  column: Metric | 'date';
111
112
  dir: 'asc' | 'desc';
@@ -122,6 +123,7 @@ interface GSCQueryBuilder<D extends Dimension[] = [], C = object> {
122
123
  <T extends SelectableColumn[]>(...cols: T): GSCQueryBuilder<ExtractDimensions<T> & Dimension[], C>;
123
124
  };
124
125
  where: <F extends Filter<any>>(filter: F) => GSCQueryBuilder<D, C & F['_constraints']>;
126
+ prefilter: <F extends Filter<any>>(filter: F) => GSCQueryBuilder<D, C>;
125
127
  orderBy: (col: OrderableColumn, dir: 'asc' | 'desc') => GSCQueryBuilder<D, C>;
126
128
  limit: (n: number) => GSCQueryBuilder<D, C>;
127
129
  offset: (n: number) => GSCQueryBuilder<D, C>;
@@ -103,6 +103,7 @@ interface BuilderState {
103
103
  dimensions: Dimension[];
104
104
  metrics?: Metric[];
105
105
  filter?: Filter<any>;
106
+ prefilter?: Filter<any>;
106
107
  orderBy?: {
107
108
  column: Metric | 'date';
108
109
  dir: 'asc' | 'desc';
@@ -131,6 +132,7 @@ interface GSCQueryBuilder<D extends Dimension[] = [], C = object> {
131
132
  <T extends SelectableColumn[]>(...cols: T): GSCQueryBuilder<ExtractDimensions<T> & Dimension[], C>;
132
133
  };
133
134
  where: <F extends Filter<any>>(filter: F) => GSCQueryBuilder<D, C & F['_constraints']>;
135
+ prefilter: <F extends Filter<any>>(filter: F) => GSCQueryBuilder<D, C>;
134
136
  orderBy: (col: OrderableColumn, dir: 'asc' | 'desc') => GSCQueryBuilder<D, C>;
135
137
  limit: (n: number) => GSCQueryBuilder<D, C>;
136
138
  offset: (n: number) => GSCQueryBuilder<D, C>;
@@ -215,6 +217,7 @@ interface LogicalQueryPlan {
215
217
  dimensionFilters: LogicalDimensionFilter[];
216
218
  dimensionFilterTree?: LogicalFilterNode;
217
219
  metricFilters: LogicalMetricFilter[];
220
+ prefilters: LogicalMetricFilter[];
218
221
  specialFilters: {
219
222
  topLevel: boolean;
220
223
  };
@@ -258,6 +258,12 @@ function createBuilder(state) {
258
258
  filter
259
259
  });
260
260
  },
261
+ prefilter(filter) {
262
+ return createBuilder({
263
+ ...state,
264
+ prefilter: filter
265
+ });
266
+ },
261
267
  orderBy(col, dir) {
262
268
  const column = isMetricColumn(col) ? col.metric : col.dimension;
263
269
  return createBuilder({
@@ -1995,6 +2001,7 @@ function buildLogicalPlan(state, capabilities = {}) {
1995
2001
  const allFilters = collectInternalFilters(normalizedFilter);
1996
2002
  const metricFilters = extractMetricFilters(normalizedFilter);
1997
2003
  const specialFilters = extractSpecialOperatorFilters(normalizedFilter);
2004
+ const prefilters = extractMetricFilters(normalizeFilter(state.prefilter));
1998
2005
  const queryParams = {};
1999
2006
  const dimensionFilters = [];
2000
2007
  for (const filter of allFilters) {
@@ -2039,6 +2046,12 @@ function buildLogicalPlan(state, capabilities = {}) {
2039
2046
  expression: Number(filter.expression),
2040
2047
  expression2: filter.expression2 == null ? void 0 : Number(filter.expression2)
2041
2048
  })),
2049
+ prefilters: prefilters.map((filter) => ({
2050
+ metric: filter.dimension,
2051
+ operator: filter.operator,
2052
+ expression: Number(filter.expression),
2053
+ expression2: filter.expression2 == null ? void 0 : Number(filter.expression2)
2054
+ })),
2042
2055
  specialFilters: { topLevel: specialFilters.some((filter) => filter.operator === "topLevel") },
2043
2056
  queryParams,
2044
2057
  orderBy: state.orderBy,
@@ -58,6 +58,7 @@ interface BuilderState {
58
58
  dimensions: Dimension[];
59
59
  metrics?: Metric[];
60
60
  filter?: Filter<any>;
61
+ prefilter?: Filter<any>;
61
62
  orderBy?: {
62
63
  column: Metric | 'date';
63
64
  dir: 'asc' | 'desc';
@@ -108,6 +109,7 @@ interface LogicalQueryPlan {
108
109
  dimensionFilters: LogicalDimensionFilter[];
109
110
  dimensionFilterTree?: LogicalFilterNode;
110
111
  metricFilters: LogicalMetricFilter[];
112
+ prefilters: LogicalMetricFilter[];
111
113
  specialFilters: {
112
114
  topLevel: boolean;
113
115
  };
@@ -231,6 +231,7 @@ function buildLogicalPlan(state, capabilities = {}) {
231
231
  const allFilters = collectInternalFilters(normalizedFilter);
232
232
  const metricFilters = extractMetricFilters(normalizedFilter);
233
233
  const specialFilters = extractSpecialOperatorFilters(normalizedFilter);
234
+ const prefilters = extractMetricFilters(normalizeFilter(state.prefilter));
234
235
  const queryParams = {};
235
236
  const dimensionFilters = [];
236
237
  for (const filter of allFilters) {
@@ -275,6 +276,12 @@ function buildLogicalPlan(state, capabilities = {}) {
275
276
  expression: Number(filter.expression),
276
277
  expression2: filter.expression2 == null ? void 0 : Number(filter.expression2)
277
278
  })),
279
+ prefilters: prefilters.map((filter) => ({
280
+ metric: filter.dimension,
281
+ operator: filter.operator,
282
+ expression: Number(filter.expression),
283
+ expression2: filter.expression2 == null ? void 0 : Number(filter.expression2)
284
+ })),
278
285
  specialFilters: { topLevel: specialFilters.some((filter) => filter.operator === "topLevel") },
279
286
  queryParams,
280
287
  orderBy: state.orderBy,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gscdump",
3
3
  "type": "module",
4
- "version": "0.12.0",
4
+ "version": "0.13.1",
5
5
  "description": "Google Search Console API wrapper with typed query builder, streaming pagination, and SEO analysis functions",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",
@@ -108,7 +108,7 @@
108
108
  "defu": "^6.1.7",
109
109
  "ofetch": "^1.5.1",
110
110
  "ufo": "^1.6.4",
111
- "@gscdump/contracts": "0.12.0"
111
+ "@gscdump/contracts": "0.13.1"
112
112
  },
113
113
  "devDependencies": {
114
114
  "@googleapis/indexing": "^6.0.1",