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