@cubejs-client/ngx 1.2.34 → 1.3.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/esm2022/src/client.mjs +70 -0
- package/{esm2020 → esm2022}/src/module.mjs +5 -5
- package/esm2022/src/query-builder/builder-meta.mjs +29 -0
- package/esm2022/src/query-builder/common.mjs +14 -0
- package/esm2022/src/query-builder/query-builder.service.mjs +125 -0
- package/esm2022/src/query-builder/query-members.mjs +231 -0
- package/esm2022/src/query-builder/query.mjs +55 -0
- package/{fesm2020 → fesm2022}/cubejs-client-ngx.mjs +52 -22
- package/{fesm2020 → fesm2022}/cubejs-client-ngx.mjs.map +1 -1
- package/package.json +7 -13
- package/src/client.d.ts +1 -1
- package/src/query-builder/chart-type.d.ts +1 -1
- package/src/query-builder/query-builder.service.d.ts +1 -1
- package/src/query-builder/query-members.d.ts +2 -2
- package/src/query-builder/query.d.ts +1 -1
- package/cubejs-client-ngx.d.ts +0 -5
- package/esm2020/src/client.mjs +0 -68
- package/esm2020/src/query-builder/builder-meta.mjs +0 -23
- package/esm2020/src/query-builder/common.mjs +0 -13
- package/esm2020/src/query-builder/query-builder.service.mjs +0 -120
- package/esm2020/src/query-builder/query-members.mjs +0 -226
- package/esm2020/src/query-builder/query.mjs +0 -47
- package/fesm2015/cubejs-client-ngx.mjs +0 -517
- package/fesm2015/cubejs-client-ngx.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cubejs-client-ngx.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/query-builder/chart-type.mjs +0 -0
- /package/{esm2020 → esm2022}/src/query-builder/pivot-config.mjs +0 -0
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ResultSet, isQueryPresent, defaultHeuristics, } from '@cubejs-client/core';
|
|
3
|
-
import { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';
|
|
4
|
-
import { catchError, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { Query } from './query';
|
|
6
|
-
import { BuilderMeta } from './builder-meta';
|
|
7
|
-
import { PivotConfig } from './pivot-config';
|
|
8
|
-
import { ChartType } from './chart-type';
|
|
9
|
-
import { StateSubject } from './common';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class QueryBuilderService {
|
|
12
|
-
constructor() {
|
|
13
|
-
this._disableHeuristics = false;
|
|
14
|
-
this._heuristicChange$ = new Subject();
|
|
15
|
-
this.builderMeta = new Promise((resolve) => (this._resolveBuilderMeta = resolve));
|
|
16
|
-
this.query = new Promise((resolve) => (this._resolveQuery = resolve));
|
|
17
|
-
this.state = new BehaviorSubject({});
|
|
18
|
-
}
|
|
19
|
-
async init() {
|
|
20
|
-
this.pivotConfig = new PivotConfig(null);
|
|
21
|
-
this.chartType = new ChartType('line');
|
|
22
|
-
this._cube.meta().subscribe((meta) => {
|
|
23
|
-
this._meta = meta;
|
|
24
|
-
this._query = new Query(this._meta, this._handleQueryChange.bind(this));
|
|
25
|
-
this._resolveQuery(this._query);
|
|
26
|
-
this._resolveBuilderMeta(new BuilderMeta(this._meta));
|
|
27
|
-
});
|
|
28
|
-
this.subscribe();
|
|
29
|
-
if (!this._disableHeuristics) {
|
|
30
|
-
this._heuristicChange$
|
|
31
|
-
.pipe(switchMap((data) => {
|
|
32
|
-
return combineLatest([
|
|
33
|
-
this._cube.dryRun(data.query).pipe(catchError((error) => {
|
|
34
|
-
console.error(error);
|
|
35
|
-
return of(null);
|
|
36
|
-
})),
|
|
37
|
-
of(data.shouldApplyHeuristicOrder),
|
|
38
|
-
]);
|
|
39
|
-
}))
|
|
40
|
-
.subscribe(([dryRunResponse, shouldApplyHeuristicOrder]) => {
|
|
41
|
-
if (!dryRunResponse) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const { pivotQuery, queryOrder } = dryRunResponse;
|
|
45
|
-
this.pivotConfig.set(ResultSet.getNormalizedPivotConfig(pivotQuery, this.pivotConfig.get()));
|
|
46
|
-
if (shouldApplyHeuristicOrder) {
|
|
47
|
-
this._query.order.set(queryOrder.reduce((a, b) => ({ ...a, ...b }), {}));
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
_handleQueryChange(newQuery, oldQuery) {
|
|
53
|
-
const { chartType, shouldApplyHeuristicOrder, query: heuristicQuery, } = defaultHeuristics(newQuery, oldQuery, {
|
|
54
|
-
meta: this._meta,
|
|
55
|
-
sessionGranularity: newQuery?.timeDimensions?.[0]?.granularity,
|
|
56
|
-
});
|
|
57
|
-
const query = this._disableHeuristics
|
|
58
|
-
? newQuery
|
|
59
|
-
: heuristicQuery || newQuery;
|
|
60
|
-
if (isQueryPresent(query) && !this._disableHeuristics) {
|
|
61
|
-
this._heuristicChange$.next({
|
|
62
|
-
shouldApplyHeuristicOrder: Boolean(shouldApplyHeuristicOrder),
|
|
63
|
-
query,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
if (!this._disableHeuristics && chartType) {
|
|
67
|
-
this.chartType.set(chartType);
|
|
68
|
-
}
|
|
69
|
-
return query;
|
|
70
|
-
}
|
|
71
|
-
setCubeClient(cubeClient) {
|
|
72
|
-
this._cube = cubeClient;
|
|
73
|
-
this.init();
|
|
74
|
-
}
|
|
75
|
-
subscribe() {
|
|
76
|
-
Object.getOwnPropertyNames(this).forEach((key) => {
|
|
77
|
-
if (this[key] instanceof StateSubject) {
|
|
78
|
-
this[key].subject.subscribe((value) => this.setPartialState({
|
|
79
|
-
[key]: value,
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
this.query.then((query) => {
|
|
84
|
-
query.subject.subscribe((cubeQuery) => {
|
|
85
|
-
this.setPartialState({
|
|
86
|
-
query: cubeQuery,
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
async deserialize(state) {
|
|
92
|
-
if (state.query) {
|
|
93
|
-
(await this.query).setQuery(state.query);
|
|
94
|
-
}
|
|
95
|
-
Object.entries(state).forEach(([key, value]) => {
|
|
96
|
-
if (this[key] instanceof StateSubject) {
|
|
97
|
-
this[key].set(value);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
this.subscribe();
|
|
101
|
-
}
|
|
102
|
-
setPartialState(partialState) {
|
|
103
|
-
this.state.next({
|
|
104
|
-
...this.state.getValue(),
|
|
105
|
-
...partialState,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
disableHeuristics() {
|
|
109
|
-
this._disableHeuristics = false;
|
|
110
|
-
}
|
|
111
|
-
enableHeuristics() {
|
|
112
|
-
this._disableHeuristics = true;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/** @nocollapse */ QueryBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
116
|
-
/** @nocollapse */ QueryBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryBuilderService });
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryBuilderService, decorators: [{
|
|
118
|
-
type: Injectable
|
|
119
|
-
}] });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFHVCxjQUFjLEVBQ2QsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBU3hDLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFLVSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFHcEMsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUV0QyxnQkFBVyxHQUFHLElBQUksT0FBTyxDQUNoQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLENBQ2xELENBQUM7UUFDTyxVQUFLLEdBQUcsSUFBSSxPQUFPLENBQzFCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQzVDLENBQUM7UUFD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QUNqQixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSztRQUNyQixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDZixDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7UUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksWUFBWSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFZO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2QsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixHQUFHLFlBQVk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7bUlBekpVLG1CQUFtQjt1SUFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNZXRhLFxuICBSZXN1bHRTZXQsXG4gIFF1ZXJ5IGFzIFRDdWJlUXVlcnksXG4gIFBpdm90Q29uZmlnIGFzIFRQaXZvdENvbmZpZyxcbiAgaXNRdWVyeVByZXNlbnQsXG4gIGRlZmF1bHRIZXVyaXN0aWNzLFxufSBmcm9tICdAY3ViZWpzLWNsaWVudC9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ3ViZUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHsgQnVpbGRlck1ldGEgfSBmcm9tICcuL2J1aWxkZXItbWV0YSc7XG5pbXBvcnQgeyBQaXZvdENvbmZpZyB9IGZyb20gJy4vcGl2b3QtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0VHlwZSwgVENoYXJ0VHlwZSB9IGZyb20gJy4vY2hhcnQtdHlwZSc7XG5pbXBvcnQgeyBTdGF0ZVN1YmplY3QgfSBmcm9tICcuL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIFRRdWVyeUJ1aWxkZXJTdGF0ZSA9IHtcbiAgcXVlcnk/OiBUQ3ViZVF1ZXJ5O1xuICBwaXZvdENvbmZpZz86IFRQaXZvdENvbmZpZztcbiAgY2hhcnRUeXBlPzogVENoYXJ0VHlwZTtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZUNsaWVudDtcbiAgcHJpdmF0ZSBfbWV0YTogTWV0YTtcbiAgcHJpdmF0ZSBfcXVlcnk6IFF1ZXJ5O1xuICBwcml2YXRlIF9kaXNhYmxlSGV1cmlzdGljczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXNvbHZlUXVlcnk6IChxdWVyeTogUXVlcnkpID0+IHZvaWQ7XG4gIHByaXZhdGUgX3Jlc29sdmVCdWlsZGVyTWV0YTogKHF1ZXJ5OiBCdWlsZGVyTWV0YSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfaGV1cmlzdGljQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICByZWFkb25seSBidWlsZGVyTWV0YSA9IG5ldyBQcm9taXNlPEJ1aWxkZXJNZXRhPihcbiAgICAocmVzb2x2ZSkgPT4gKHRoaXMuX3Jlc29sdmVCdWlsZGVyTWV0YSA9IHJlc29sdmUpXG4gICk7XG4gIHJlYWRvbmx5IHF1ZXJ5ID0gbmV3IFByb21pc2U8UXVlcnk+KFxuICAgIChyZXNvbHZlKSA9PiAodGhpcy5fcmVzb2x2ZVF1ZXJ5ID0gcmVzb2x2ZSlcbiAgKTtcbiAgcmVhZG9ubHkgc3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRRdWVyeUJ1aWxkZXJTdGF0ZT4oe30pO1xuXG4gIHBpdm90Q29uZmlnOiBQaXZvdENvbmZpZztcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGU7XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIHRoaXMucGl2b3RDb25maWcgPSBuZXcgUGl2b3RDb25maWcobnVsbCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBuZXcgQ2hhcnRUeXBlKCdsaW5lJyk7XG5cbiAgICB0aGlzLl9jdWJlLm1ldGEoKS5zdWJzY3JpYmUoKG1ldGEpID0+IHtcbiAgICAgIHRoaXMuX21ldGEgPSBtZXRhO1xuXG4gICAgICB0aGlzLl9xdWVyeSA9IG5ldyBRdWVyeShcbiAgICAgICAgdGhpcy5fbWV0YSxcbiAgICAgICAgdGhpcy5faGFuZGxlUXVlcnlDaGFuZ2UuYmluZCh0aGlzKVxuICAgICAgKTtcbiAgICAgIHRoaXMuX3Jlc29sdmVRdWVyeSh0aGlzLl9xdWVyeSk7XG4gICAgICB0aGlzLl9yZXNvbHZlQnVpbGRlck1ldGEobmV3IEJ1aWxkZXJNZXRhKHRoaXMuX21ldGEpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAoIXRoaXMuX2Rpc2FibGVIZXVyaXN0aWNzKSB7XG4gICAgICB0aGlzLl9oZXVyaXN0aWNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICB0aGlzLl9jdWJlLmRyeVJ1bihkYXRhLnF1ZXJ5KS5waXBlKGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgIG9mKGRhdGEuc2hvdWxkQXBwbHlIZXVyaXN0aWNPcmRlciksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKFtkcnlSdW5SZXNwb25zZSwgc2hvdWxkQXBwbHlIZXVyaXN0aWNPcmRlcl0pID0+IHtcbiAgICAgICAgICAgIGlmICghZHJ5UnVuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCB7IHBpdm90UXVlcnksIHF1ZXJ5T3JkZXIgfSA9IGRyeVJ1blJlc3BvbnNlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLnBpdm90Q29uZmlnLnNldChcbiAgICAgICAgICAgICAgUmVzdWx0U2V0LmdldE5vcm1hbGl6ZWRQaXZvdENvbmZpZyhcbiAgICAgICAgICAgICAgICBwaXZvdFF1ZXJ5LFxuICAgICAgICAgICAgICAgIHRoaXMucGl2b3RDb25maWcuZ2V0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChzaG91bGRBcHBseUhldXJpc3RpY09yZGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3F1ZXJ5Lm9yZGVyLnNldChcbiAgICAgICAgICAgICAgICBxdWVyeU9yZGVyLnJlZHVjZSgoYSwgYikgPT4gKHsgLi4uYSwgLi4uYiB9KSwge30pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVF1ZXJ5Q2hhbmdlKG5ld1F1ZXJ5LCBvbGRRdWVyeSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNoYXJ0VHlwZSxcbiAgICAgIHNob3VsZEFwcGx5SGV1cmlzdGljT3JkZXIsXG4gICAgICBxdWVyeTogaGV1cmlzdGljUXVlcnksXG4gICAgfSA9IGRlZmF1bHRIZXVyaXN0aWNzKG5ld1F1ZXJ5LCBvbGRRdWVyeSwge1xuICAgICAgbWV0YTogdGhpcy5fbWV0YSxcbiAgICAgIHNlc3Npb25HcmFudWxhcml0eTogbmV3UXVlcnk/LnRpbWVEaW1lbnNpb25zPy5bMF0/LmdyYW51bGFyaXR5LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9kaXNhYmxlSGV1cmlzdGljc1xuICAgICAgPyBuZXdRdWVyeVxuICAgICAgOiBoZXVyaXN0aWNRdWVyeSB8fCBuZXdRdWVyeTtcblxuICAgIGlmIChpc1F1ZXJ5UHJlc2VudChxdWVyeSkgJiYgIXRoaXMuX2Rpc2FibGVIZXVyaXN0aWNzKSB7XG4gICAgICB0aGlzLl9oZXVyaXN0aWNDaGFuZ2UkLm5leHQoe1xuICAgICAgICBzaG91bGRBcHBseUhldXJpc3RpY09yZGVyOiBCb29sZWFuKHNob3VsZEFwcGx5SGV1cmlzdGljT3JkZXIpLFxuICAgICAgICBxdWVyeSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fZGlzYWJsZUhldXJpc3RpY3MgJiYgY2hhcnRUeXBlKSB7XG4gICAgICB0aGlzLmNoYXJ0VHlwZS5zZXQoY2hhcnRUeXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBzZXRDdWJlQ2xpZW50KGN1YmVDbGllbnQ6IEN1YmVDbGllbnQpIHtcbiAgICB0aGlzLl9jdWJlID0gY3ViZUNsaWVudDtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlKCkge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKHRoaXNba2V5XSBpbnN0YW5jZW9mIFN0YXRlU3ViamVjdCkge1xuICAgICAgICB0aGlzW2tleV0uc3ViamVjdC5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICAgIHRoaXMuc2V0UGFydGlhbFN0YXRlKHtcbiAgICAgICAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucXVlcnkudGhlbigocXVlcnkpID0+IHtcbiAgICAgIHF1ZXJ5LnN1YmplY3Quc3Vic2NyaWJlKChjdWJlUXVlcnkpID0+IHtcbiAgICAgICAgdGhpcy5zZXRQYXJ0aWFsU3RhdGUoe1xuICAgICAgICAgIHF1ZXJ5OiBjdWJlUXVlcnksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZXNlcmlhbGl6ZShzdGF0ZSkge1xuICAgIGlmIChzdGF0ZS5xdWVyeSkge1xuICAgICAgKGF3YWl0IHRoaXMucXVlcnkpLnNldFF1ZXJ5KHN0YXRlLnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBPYmplY3QuZW50cmllcyhzdGF0ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodGhpc1trZXldIGluc3RhbmNlb2YgU3RhdGVTdWJqZWN0KSB7XG4gICAgICAgIHRoaXNba2V5XS5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNldFBhcnRpYWxTdGF0ZShwYXJ0aWFsU3RhdGUpIHtcbiAgICB0aGlzLnN0YXRlLm5leHQoe1xuICAgICAgLi4udGhpcy5zdGF0ZS5nZXRWYWx1ZSgpLFxuICAgICAgLi4ucGFydGlhbFN0YXRlLFxuICAgIH0pO1xuICB9XG5cbiAgZGlzYWJsZUhldXJpc3RpY3MoKSB7XG4gICAgdGhpcy5fZGlzYWJsZUhldXJpc3RpY3MgPSBmYWxzZTtcbiAgfVxuXG4gIGVuYWJsZUhldXJpc3RpY3MoKSB7XG4gICAgdGhpcy5fZGlzYWJsZUhldXJpc3RpY3MgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { moveItemInArray, } from '@cubejs-client/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import equal from 'fast-deep-equal/es6';
|
|
4
|
-
export class BaseMember {
|
|
5
|
-
constructor(query, field) {
|
|
6
|
-
this.query = query;
|
|
7
|
-
this.field = field;
|
|
8
|
-
}
|
|
9
|
-
get members() {
|
|
10
|
-
return this.query.asCubeQuery()[this.field] || [];
|
|
11
|
-
}
|
|
12
|
-
add(name) {
|
|
13
|
-
this.query.setPartialQuery({
|
|
14
|
-
[this.field]: [...this.members, name],
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
replace(name, replaceWithName) {
|
|
18
|
-
this.query.setPartialQuery({
|
|
19
|
-
[this.field]: this.members.map((currentName) => currentName === name ? replaceWithName : currentName),
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
remove(by) {
|
|
23
|
-
this.query.setPartialQuery({
|
|
24
|
-
[this.field]: this.query
|
|
25
|
-
.asCubeQuery()[this.field].filter((currentName, index) => {
|
|
26
|
-
if (typeof by === 'string') {
|
|
27
|
-
return currentName !== by;
|
|
28
|
-
}
|
|
29
|
-
return index !== by;
|
|
30
|
-
}),
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
set(members) {
|
|
34
|
-
this.query.setPartialQuery({
|
|
35
|
-
[this.field]: members,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
asArray() {
|
|
39
|
-
return (this.query.asCubeQuery()[this.field] || []).map((name) => this.query.meta.resolveMember(name, this.field));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export class TimeDimensionMember {
|
|
43
|
-
constructor(query) {
|
|
44
|
-
this.query = query;
|
|
45
|
-
}
|
|
46
|
-
get members() {
|
|
47
|
-
return this.query.asCubeQuery().timeDimensions || [];
|
|
48
|
-
}
|
|
49
|
-
get granularity() {
|
|
50
|
-
return this.members[0]?.granularity;
|
|
51
|
-
}
|
|
52
|
-
updateTimeDimension(by, updateWith) {
|
|
53
|
-
const timeDimensions = this.members.map((td, index) => {
|
|
54
|
-
if (td.dimension === by || index === by) {
|
|
55
|
-
return {
|
|
56
|
-
...td,
|
|
57
|
-
...updateWith,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return td;
|
|
61
|
-
});
|
|
62
|
-
this.query.setPartialQuery({
|
|
63
|
-
timeDimensions,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
add(name) {
|
|
67
|
-
this.query.setPartialQuery({
|
|
68
|
-
timeDimensions: [
|
|
69
|
-
{
|
|
70
|
-
dimension: name,
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
remove(name) {
|
|
76
|
-
this.query.setPartialQuery({
|
|
77
|
-
timeDimensions: this.members.filter(({ dimension }) => dimension !== name),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
set(timeDimensions) {
|
|
81
|
-
this.query.setPartialQuery({
|
|
82
|
-
timeDimensions,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
setDateRange(by, dateRange) {
|
|
86
|
-
this.updateTimeDimension(by, { dateRange });
|
|
87
|
-
}
|
|
88
|
-
setGranularity(by, granularity) {
|
|
89
|
-
this.updateTimeDimension(by, { granularity });
|
|
90
|
-
}
|
|
91
|
-
asArray() {
|
|
92
|
-
return (this.query.asCubeQuery().timeDimensions || []).map((td) => {
|
|
93
|
-
return {
|
|
94
|
-
...this.query.meta.resolveMember(td.dimension, 'dimensions'),
|
|
95
|
-
...td,
|
|
96
|
-
};
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
export class Order {
|
|
101
|
-
constructor(query) {
|
|
102
|
-
this.query = query;
|
|
103
|
-
this.orderMembers = new BehaviorSubject([]);
|
|
104
|
-
this.query.subject.subscribe(this.handleQueryChange.bind(this));
|
|
105
|
-
this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));
|
|
106
|
-
}
|
|
107
|
-
handleOrderMembersChange(orderMembers) {
|
|
108
|
-
const order = orderMembers
|
|
109
|
-
.filter(({ order }) => order !== 'none')
|
|
110
|
-
.reduce((memo, { id, order }) => ({ ...memo, [id]: order }), {});
|
|
111
|
-
if (!equal(order, this.asObject())) {
|
|
112
|
-
this.query.setPartialQuery({ order });
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
handleQueryChange() {
|
|
116
|
-
this.orderMembers.next([
|
|
117
|
-
...this.query.measures.asArray(),
|
|
118
|
-
...this.query.dimensions.asArray(),
|
|
119
|
-
...this.query.timeDimensions.asArray(),
|
|
120
|
-
].map(({ name, title }) => {
|
|
121
|
-
return {
|
|
122
|
-
id: name,
|
|
123
|
-
order: this.of(name),
|
|
124
|
-
title,
|
|
125
|
-
};
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
|
-
setMemberOrder(id, order) {
|
|
129
|
-
this.orderMembers.next(this.orderMembers.getValue().map((orderMember) => {
|
|
130
|
-
if (orderMember.id === id) {
|
|
131
|
-
return {
|
|
132
|
-
...orderMember,
|
|
133
|
-
order,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
return orderMember;
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
reorder(sourceIndex, destinationIndex) {
|
|
140
|
-
this.orderMembers.next(moveItemInArray(this.orderMembers.getValue(), sourceIndex, destinationIndex));
|
|
141
|
-
}
|
|
142
|
-
of(member) {
|
|
143
|
-
return (this.query.asCubeQuery().order || {})[member] || 'none';
|
|
144
|
-
}
|
|
145
|
-
set(order) {
|
|
146
|
-
this.query.setPartialQuery({ order });
|
|
147
|
-
}
|
|
148
|
-
asArray() {
|
|
149
|
-
if (Array.isArray(this.query.asCubeQuery().order)) {
|
|
150
|
-
return this.query.asCubeQuery().order;
|
|
151
|
-
}
|
|
152
|
-
return Object.entries(this.query.asCubeQuery().order || {});
|
|
153
|
-
}
|
|
154
|
-
asObject() {
|
|
155
|
-
return this.asArray().reduce((memo, [key, value]) => ({ ...memo, [key]: value }), {});
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
export class FilterMember {
|
|
159
|
-
constructor(query) {
|
|
160
|
-
this.query = query;
|
|
161
|
-
}
|
|
162
|
-
get filters() {
|
|
163
|
-
// TODO: update this type assertion once the QueryBuilder supports logical and/or
|
|
164
|
-
return (this.query.asCubeQuery().filters || []);
|
|
165
|
-
}
|
|
166
|
-
update(by, updateWith) {
|
|
167
|
-
const filters = this.filters.map((filter, index) => {
|
|
168
|
-
if (index === by || filter.member === by || filter.dimension === by) {
|
|
169
|
-
return {
|
|
170
|
-
...filter,
|
|
171
|
-
...updateWith,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
return filter;
|
|
175
|
-
});
|
|
176
|
-
this.query.setPartialQuery({
|
|
177
|
-
filters: filters,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
add(filter) {
|
|
181
|
-
this.query.setPartialQuery({
|
|
182
|
-
filters: [...this.filters, filter],
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
remove(by) {
|
|
186
|
-
this.query.setPartialQuery({
|
|
187
|
-
filters: this.filters.filter((filter, index) => {
|
|
188
|
-
if (filter.member === by || filter.dimension === by || index === by) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
return true;
|
|
192
|
-
}),
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
set(filters) {
|
|
196
|
-
this.query.setPartialQuery({
|
|
197
|
-
filters,
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
replace(name, replaceWithName) {
|
|
201
|
-
this.query.setPartialQuery({
|
|
202
|
-
filters: this.filters.map((filter) => {
|
|
203
|
-
const field = filter.member ? 'member' : 'dimension';
|
|
204
|
-
return filter.member === name || filter.dimension === name
|
|
205
|
-
? {
|
|
206
|
-
...filter,
|
|
207
|
-
[field]: replaceWithName,
|
|
208
|
-
}
|
|
209
|
-
: filter;
|
|
210
|
-
}),
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
asArray() {
|
|
214
|
-
return this.filters.map((filter) => {
|
|
215
|
-
return {
|
|
216
|
-
...this.query.meta.resolveMember(filter.member || filter.dimension, [
|
|
217
|
-
'dimensions',
|
|
218
|
-
'measures',
|
|
219
|
-
]),
|
|
220
|
-
operators: this.query.meta.filterOperatorsForMember(filter.member || filter.dimension, ['dimensions', 'measures']),
|
|
221
|
-
...filter,
|
|
222
|
-
};
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktbWVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9xdWVyeS1idWlsZGVyL3F1ZXJ5LW1lbWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGVBQWUsR0FJaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBWXhDLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQ1UsS0FBWSxFQUNaLEtBQTZDO1FBRDdDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixVQUFLLEdBQUwsS0FBSyxDQUF3QztJQUNwRCxDQUFDO0lBRUosSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3pCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxlQUF1QjtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUN6QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQzdDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUNyRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBbUI7UUFD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QUFNO2FBQ1YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVGltZURpbWVuc2lvbkdyYW51bGFyaXR5LFxuICBUUXVlcnlPcmRlck9iamVjdCxcbiAgVFF1ZXJ5T3JkZXJBcnJheSxcbiAgbW92ZUl0ZW1JbkFycmF5LFxuICBGaWx0ZXIsXG4gIFVuYXJ5RmlsdGVyLFxuICBCaW5hcnlGaWx0ZXIsXG59IGZyb20gJ0BjdWJlanMtY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi9xdWVyeSc7XG5cbmV4cG9ydCB0eXBlIFRPcmRlciA9ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuXG5leHBvcnQgdHlwZSBUT3JkZXJNZW1iZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG9yZGVyOiBUT3JkZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgQmFzZU1lbWJlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcXVlcnk6IFF1ZXJ5LFxuICAgIHByaXZhdGUgZmllbGQ6ICdtZWFzdXJlcycgfCAnZGltZW5zaW9ucycgfCAnc2VnbWVudHMnXG4gICkge31cblxuICBwcml2YXRlIGdldCBtZW1iZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KClbdGhpcy5maWVsZF0gfHwgW107XG4gIH1cblxuICBhZGQobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5xdWVyeS5zZXRQYXJ0aWFsUXVlcnkoe1xuICAgICAgW3RoaXMuZmllbGRdOiBbLi4udGhpcy5tZW1iZXJzLCBuYW1lXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2UobmFtZTogc3RyaW5nLCByZXBsYWNlV2l0aE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogdGhpcy5tZW1iZXJzLm1hcCgoY3VycmVudE5hbWUpID0+XG4gICAgICAgIGN1cnJlbnROYW1lID09PSBuYW1lID8gcmVwbGFjZVdpdGhOYW1lIDogY3VycmVudE5hbWVcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmUoYnk6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogdGhpcy5xdWVyeVxuICAgICAgICAuYXNDdWJlUXVlcnkoKVxuICAgICAgICBbdGhpcy5maWVsZF0uZmlsdGVyKChjdXJyZW50TmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnROYW1lICE9PSBieTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaW5kZXggIT09IGJ5O1xuICAgICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldChtZW1iZXJzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIFt0aGlzLmZpZWxkXTogbWVtYmVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzQXJyYXkoKSB7XG4gICAgcmV0dXJuICh0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KClbdGhpcy5maWVsZF0gfHwgW10pLm1hcCgobmFtZSkgPT5cbiAgICAgIHRoaXMucXVlcnkubWV0YS5yZXNvbHZlTWVtYmVyKG5hbWUsIHRoaXMuZmllbGQpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZURpbWVuc2lvbk1lbWJlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcXVlcnk6IFF1ZXJ5KSB7fVxuXG4gIHByaXZhdGUgZ2V0IG1lbWJlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS50aW1lRGltZW5zaW9ucyB8fCBbXTtcbiAgfVxuXG4gIGdldCBncmFudWxhcml0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXJzWzBdPy5ncmFudWxhcml0eTtcbiAgfVxuXG4gIHVwZGF0ZVRpbWVEaW1lbnNpb24oYnk6IHN0cmluZyB8IG51bWJlciwgdXBkYXRlV2l0aDogYW55KSB7XG4gICAgY29uc3QgdGltZURpbWVuc2lvbnMgPSB0aGlzLm1lbWJlcnMubWFwKCh0ZCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICh0ZC5kaW1lbnNpb24gPT09IGJ5IHx8IGluZGV4ID09PSBieSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnRkLFxuICAgICAgICAgIC4uLnVwZGF0ZVdpdGgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGFkZChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGltZW5zaW9uOiBuYW1lLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9uczogdGhpcy5tZW1iZXJzLmZpbHRlcihcbiAgICAgICAgKHsgZGltZW5zaW9uIH0pID0+IGRpbWVuc2lvbiAhPT0gbmFtZVxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldCh0aW1lRGltZW5zaW9uczogYW55W10pIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICB0aW1lRGltZW5zaW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHNldERhdGVSYW5nZShieTogc3RyaW5nIHwgbnVtYmVyLCBkYXRlUmFuZ2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy51cGRhdGVUaW1lRGltZW5zaW9uKGJ5LCB7IGRhdGVSYW5nZSB9KTtcbiAgfVxuXG4gIHNldEdyYW51bGFyaXR5KGJ5OiBzdHJpbmcgfCBudW1iZXIsIGdyYW51bGFyaXR5OiBUaW1lRGltZW5zaW9uR3JhbnVsYXJpdHkpIHtcbiAgICB0aGlzLnVwZGF0ZVRpbWVEaW1lbnNpb24oYnksIHsgZ3JhbnVsYXJpdHkgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IGFueVtdIHtcbiAgICByZXR1cm4gKHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS50aW1lRGltZW5zaW9ucyB8fCBbXSkubWFwKCh0ZCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udGhpcy5xdWVyeS5tZXRhLnJlc29sdmVNZW1iZXIodGQuZGltZW5zaW9uLCAnZGltZW5zaW9ucycpLFxuICAgICAgICAuLi50ZCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZGVyIHtcbiAgb3JkZXJNZW1iZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUT3JkZXJNZW1iZXJbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcXVlcnk6IFF1ZXJ5KSB7XG4gICAgdGhpcy5xdWVyeS5zdWJqZWN0LnN1YnNjcmliZSh0aGlzLmhhbmRsZVF1ZXJ5Q2hhbmdlLmJpbmQodGhpcykpO1xuICAgIHRoaXMub3JkZXJNZW1iZXJzLnN1YnNjcmliZSh0aGlzLmhhbmRsZU9yZGVyTWVtYmVyc0NoYW5nZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT3JkZXJNZW1iZXJzQ2hhbmdlKG9yZGVyTWVtYmVyczogVE9yZGVyTWVtYmVyW10pIHtcbiAgICBjb25zdCBvcmRlciA9IG9yZGVyTWVtYmVyc1xuICAgICAgLmZpbHRlcigoeyBvcmRlciB9KSA9PiBvcmRlciAhPT0gJ25vbmUnKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKG1lbW8sIHsgaWQsIG9yZGVyIH0pID0+ICh7IC4uLm1lbW8sIFtpZF06IG9yZGVyIH0pLFxuICAgICAgICB7fVxuICAgICAgKSBhcyBUUXVlcnlPcmRlck9iamVjdDtcblxuICAgIGlmICghZXF1YWwob3JkZXIsIHRoaXMuYXNPYmplY3QoKSkpIHtcbiAgICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHsgb3JkZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVRdWVyeUNoYW5nZSgpIHtcbiAgICB0aGlzLm9yZGVyTWVtYmVycy5uZXh0KFxuICAgICAgW1xuICAgICAgICAuLi50aGlzLnF1ZXJ5Lm1lYXN1cmVzLmFzQXJyYXkoKSxcbiAgICAgICAgLi4udGhpcy5xdWVyeS5kaW1lbnNpb25zLmFzQXJyYXkoKSxcbiAgICAgICAgLi4udGhpcy5xdWVyeS50aW1lRGltZW5zaW9ucy5hc0FycmF5KCksXG4gICAgICBdLm1hcDxUT3JkZXJNZW1iZXI+KCh7IG5hbWUsIHRpdGxlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICBvcmRlcjogdGhpcy5vZihuYW1lKSxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldE1lbWJlck9yZGVyKGlkOiBzdHJpbmcsIG9yZGVyOiBUT3JkZXIpIHtcbiAgICB0aGlzLm9yZGVyTWVtYmVycy5uZXh0KFxuICAgICAgdGhpcy5vcmRlck1lbWJlcnMuZ2V0VmFsdWUoKS5tYXAoKG9yZGVyTWVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChvcmRlck1lbWJlci5pZCA9PT0gaWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub3JkZXJNZW1iZXIsXG4gICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcmRlck1lbWJlcjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlb3JkZXIoc291cmNlSW5kZXg6IG51bWJlciwgZGVzdGluYXRpb25JbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmRlck1lbWJlcnMubmV4dChcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgdGhpcy5vcmRlck1lbWJlcnMuZ2V0VmFsdWUoKSxcbiAgICAgICAgc291cmNlSW5kZXgsXG4gICAgICAgIGRlc3RpbmF0aW9uSW5kZXhcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb2YobWVtYmVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS5vcmRlciB8fCB7fSlbbWVtYmVyXSB8fCAnbm9uZSc7XG4gIH1cblxuICBzZXQob3JkZXI6IFRRdWVyeU9yZGVyT2JqZWN0IHwgVFF1ZXJ5T3JkZXJBcnJheSkge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHsgb3JkZXIgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IFRRdWVyeU9yZGVyQXJyYXkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucXVlcnkuYXNDdWJlUXVlcnkoKS5vcmRlcikpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5LmFzQ3ViZVF1ZXJ5KCkub3JkZXIgYXMgVFF1ZXJ5T3JkZXJBcnJheTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5xdWVyeS5hc0N1YmVRdWVyeSgpLm9yZGVyIHx8IHt9KTtcbiAgfVxuXG4gIGFzT2JqZWN0KCk6IFRRdWVyeU9yZGVyT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5hc0FycmF5KCkucmVkdWNlKFxuICAgICAgKG1lbW8sIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4ubWVtbywgW2tleV06IHZhbHVlIH0pLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJNZW1iZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHF1ZXJ5OiBRdWVyeSkge31cblxuICBwcml2YXRlIGdldCBmaWx0ZXJzKCkge1xuICAgIC8vIFRPRE86IHVwZGF0ZSB0aGlzIHR5cGUgYXNzZXJ0aW9uIG9uY2UgdGhlIFF1ZXJ5QnVpbGRlciBzdXBwb3J0cyBsb2dpY2FsIGFuZC9vclxuICAgIHJldHVybiAodGhpcy5xdWVyeS5hc0N1YmVRdWVyeSgpLmZpbHRlcnMgfHwgW10pIGFzIChVbmFyeUZpbHRlciB8IEJpbmFyeUZpbHRlcilbXTtcbiAgfVxuXG4gIHVwZGF0ZShieTogc3RyaW5nIHwgbnVtYmVyLCB1cGRhdGVXaXRoOiBQYXJ0aWFsPEZpbHRlcj4pIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0ZXJzLm1hcCgoZmlsdGVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGluZGV4ID09PSBieSB8fCBmaWx0ZXIubWVtYmVyID09PSBieSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBieSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICAuLi51cGRhdGVXaXRoLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9KTtcblxuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMgYXMgRmlsdGVyW10sXG4gICAgfSk7XG4gIH1cblxuICBhZGQoZmlsdGVyOiBGaWx0ZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICBmaWx0ZXJzOiBbLi4udGhpcy5maWx0ZXJzLCBmaWx0ZXJdLFxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlKGJ5OiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLnF1ZXJ5LnNldFBhcnRpYWxRdWVyeSh7XG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXIubWVtYmVyID09PSBieSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBieSB8fCBpbmRleCA9PT0gYnkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgc2V0KGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5xdWVyeS5zZXRQYXJ0aWFsUXVlcnkoe1xuICAgICAgZmlsdGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2UobmFtZTogc3RyaW5nLCByZXBsYWNlV2l0aE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkuc2V0UGFydGlhbFF1ZXJ5KHtcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlci5tZW1iZXIgPyAnbWVtYmVyJyA6ICdkaW1lbnNpb24nO1xuICAgICAgICByZXR1cm4gZmlsdGVyLm1lbWJlciA9PT0gbmFtZSB8fCBmaWx0ZXIuZGltZW5zaW9uID09PSBuYW1lXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICAgICAgW2ZpZWxkXTogcmVwbGFjZVdpdGhOYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogZmlsdGVyO1xuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBhc0FycmF5KCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50aGlzLnF1ZXJ5Lm1ldGEucmVzb2x2ZU1lbWJlcihmaWx0ZXIubWVtYmVyIHx8IGZpbHRlci5kaW1lbnNpb24sIFtcbiAgICAgICAgICAnZGltZW5zaW9ucycsXG4gICAgICAgICAgJ21lYXN1cmVzJyxcbiAgICAgICAgXSksXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5xdWVyeS5tZXRhLmZpbHRlck9wZXJhdG9yc0Zvck1lbWJlcihcbiAgICAgICAgICBmaWx0ZXIubWVtYmVyIHx8IGZpbHRlci5kaW1lbnNpb24sXG4gICAgICAgICAgWydkaW1lbnNpb25zJywgJ21lYXN1cmVzJ11cbiAgICAgICAgKSxcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { isQueryPresent } from '@cubejs-client/core';
|
|
2
|
-
import { StateSubject } from './common';
|
|
3
|
-
import { BaseMember, FilterMember, Order, TimeDimensionMember } from './query-members';
|
|
4
|
-
export var MemberType;
|
|
5
|
-
(function (MemberType) {
|
|
6
|
-
MemberType["Measures"] = "measures";
|
|
7
|
-
MemberType["Dimensions"] = "dimensions";
|
|
8
|
-
MemberType["Segments"] = "segments";
|
|
9
|
-
MemberType["TimeDimensions"] = "timeDimensions";
|
|
10
|
-
MemberType["Filters"] = "filters";
|
|
11
|
-
MemberType["Order"] = "order";
|
|
12
|
-
})(MemberType || (MemberType = {}));
|
|
13
|
-
export class Query extends StateSubject {
|
|
14
|
-
constructor(meta, _onBeforeChange = (newQuery) => newQuery) {
|
|
15
|
-
super({});
|
|
16
|
-
this.meta = meta;
|
|
17
|
-
this._onBeforeChange = _onBeforeChange;
|
|
18
|
-
this.init();
|
|
19
|
-
}
|
|
20
|
-
init() {
|
|
21
|
-
this.measures = new BaseMember(this, MemberType.Measures);
|
|
22
|
-
this.dimensions = new BaseMember(this, MemberType.Dimensions);
|
|
23
|
-
this.segments = new BaseMember(this, MemberType.Segments);
|
|
24
|
-
this.timeDimensions = new TimeDimensionMember(this);
|
|
25
|
-
this.filters = new FilterMember(this);
|
|
26
|
-
this.order = new Order(this);
|
|
27
|
-
}
|
|
28
|
-
asCubeQuery() {
|
|
29
|
-
return this.subject.getValue() || {};
|
|
30
|
-
}
|
|
31
|
-
setQuery(query) {
|
|
32
|
-
this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));
|
|
33
|
-
}
|
|
34
|
-
setPartialQuery(partialQuery) {
|
|
35
|
-
this.subject.next(this._onBeforeChange({
|
|
36
|
-
...this.subject.getValue(),
|
|
37
|
-
...partialQuery,
|
|
38
|
-
}, this.subject.getValue(), this));
|
|
39
|
-
}
|
|
40
|
-
setLimit(limit) {
|
|
41
|
-
this.setPartialQuery({ limit });
|
|
42
|
-
}
|
|
43
|
-
isPresent() {
|
|
44
|
-
return isQueryPresent(this.asCubeQuery());
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcXVlcnktYnVpbGRlci9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksVUFPWDtBQVBELFdBQVksVUFBVTtJQUNwQixtQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBeUIsQ0FBQTtJQUN6QixtQ0FBcUIsQ0FBQTtJQUNyQiwrQ0FBaUMsQ0FBQTtJQUNqQyxpQ0FBbUIsQ0FBQTtJQUNuQiw2QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFQVyxVQUFVLEtBQVYsVUFBVSxRQU9yQjtBQVFELE1BQU0sT0FBTyxLQUFNLFNBQVEsWUFBd0I7SUFRakQsWUFDUyxJQUFVLEVBQ1Qsa0JBQW9DLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO1FBRWxFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUhILFNBQUksR0FBSixJQUFJLENBQU07UUFDVCxvQkFBZSxHQUFmLGVBQWUsQ0FBMkM7UUFHbEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQWlDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxlQUFlLENBQ2xCO1lBQ0UsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUMxQixHQUFHLFlBQVk7U0FDaEIsRUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUN2QixJQUFJLENBQ0wsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNRdWVyeVByZXNlbnQsIE1ldGEsIFF1ZXJ5IGFzIFRDdWJlUXVlcnkgfSBmcm9tICdAY3ViZWpzLWNsaWVudC9jb3JlJztcblxuaW1wb3J0IHsgU3RhdGVTdWJqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgQmFzZU1lbWJlciwgRmlsdGVyTWVtYmVyLCBPcmRlciwgVGltZURpbWVuc2lvbk1lbWJlciB9IGZyb20gJy4vcXVlcnktbWVtYmVycyc7XG5cbmV4cG9ydCBlbnVtIE1lbWJlclR5cGUge1xuICBNZWFzdXJlcyA9ICdtZWFzdXJlcycsXG4gIERpbWVuc2lvbnMgPSAnZGltZW5zaW9ucycsXG4gIFNlZ21lbnRzID0gJ3NlZ21lbnRzJyxcbiAgVGltZURpbWVuc2lvbnMgPSAndGltZURpbWVuc2lvbnMnLFxuICBGaWx0ZXJzID0gJ2ZpbHRlcnMnLFxuICBPcmRlciA9ICdvcmRlcicsXG59XG5cbmV4cG9ydCB0eXBlIE9uQ2hhbmdlQ2FsbGJhY2sgPSAoXG4gIG5ld1F1ZXJ5OiBUQ3ViZVF1ZXJ5LFxuICBvbGRRdWVyeTogVEN1YmVRdWVyeSxcbiAgcXVlcnk6IFF1ZXJ5XG4pID0+IFRDdWJlUXVlcnk7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeSBleHRlbmRzIFN0YXRlU3ViamVjdDxUQ3ViZVF1ZXJ5PiB7XG4gIG1lYXN1cmVzOiBCYXNlTWVtYmVyO1xuICBkaW1lbnNpb25zOiBCYXNlTWVtYmVyO1xuICBzZWdtZW50czogQmFzZU1lbWJlcjtcbiAgdGltZURpbWVuc2lvbnM6IFRpbWVEaW1lbnNpb25NZW1iZXI7XG4gIGZpbHRlcnM6IEZpbHRlck1lbWJlcjtcbiAgb3JkZXI6IE9yZGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZXRhOiBNZXRhLFxuICAgIHByaXZhdGUgX29uQmVmb3JlQ2hhbmdlOiBPbkNoYW5nZUNhbGxiYWNrID0gKG5ld1F1ZXJ5KSA9PiBuZXdRdWVyeVxuICApIHtcbiAgICBzdXBlcih7fSk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgdGhpcy5tZWFzdXJlcyA9IG5ldyBCYXNlTWVtYmVyKHRoaXMsIE1lbWJlclR5cGUuTWVhc3VyZXMpO1xuICAgIHRoaXMuZGltZW5zaW9ucyA9IG5ldyBCYXNlTWVtYmVyKHRoaXMsIE1lbWJlclR5cGUuRGltZW5zaW9ucyk7XG4gICAgdGhpcy5zZWdtZW50cyA9IG5ldyBCYXNlTWVtYmVyKHRoaXMsIE1lbWJlclR5cGUuU2VnbWVudHMpO1xuICAgIHRoaXMudGltZURpbWVuc2lvbnMgPSBuZXcgVGltZURpbWVuc2lvbk1lbWJlcih0aGlzKTtcbiAgICB0aGlzLmZpbHRlcnMgPSBuZXcgRmlsdGVyTWVtYmVyKHRoaXMpO1xuICAgIHRoaXMub3JkZXIgPSBuZXcgT3JkZXIodGhpcyk7XG4gIH1cblxuICBhc0N1YmVRdWVyeSgpOiBUQ3ViZVF1ZXJ5IHtcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0LmdldFZhbHVlKCkgfHwge307XG4gIH1cblxuICBzZXRRdWVyeShxdWVyeTogVEN1YmVRdWVyeSkge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KHRoaXMuX29uQmVmb3JlQ2hhbmdlKHF1ZXJ5LCB0aGlzLnN1YmplY3QuZ2V0VmFsdWUoKSwgdGhpcykpO1xuICB9XG5cbiAgc2V0UGFydGlhbFF1ZXJ5KHBhcnRpYWxRdWVyeTogUGFydGlhbDxUQ3ViZVF1ZXJ5Pikge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KFxuICAgICAgdGhpcy5fb25CZWZvcmVDaGFuZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLnN1YmplY3QuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi5wYXJ0aWFsUXVlcnksXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuc3ViamVjdC5nZXRWYWx1ZSgpLFxuICAgICAgICB0aGlzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHNldExpbWl0KGxpbWl0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFBhcnRpYWxRdWVyeSh7IGxpbWl0IH0pO1xuICB9XG4gIFxuICBpc1ByZXNlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUXVlcnlQcmVzZW50KHRoaXMuYXNDdWJlUXVlcnkoKSk7XG4gIH1cbn1cbiJdfQ==
|