@cubejs-client/ngx 1.7.40 → 1.7.42

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/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  # Cube Angular Client
9
9
 
10
- Cube Angular is an Angular Module for Angular 12+.
10
+ Cube Angular is an Angular Module for Angular 20+.
11
11
 
12
12
  [Learn more](https://github.com/cube-js/cube.js#getting-started)
13
13
 
@@ -6,32 +6,32 @@ import { switchMap, catchError } from 'rxjs/operators';
6
6
  import equal from 'fast-deep-equal/es6';
7
7
 
8
8
  class CubeClient {
9
- config;
10
- ready$ = new BehaviorSubject(false);
11
- cubeApi;
12
9
  constructor(config) {
13
10
  this.config = config;
11
+ this.ready$ = new BehaviorSubject(false);
14
12
  if (this.config instanceof Observable) {
15
- this.config.subscribe(() => {
13
+ // A single subscription keeps the last emitted config, so a cold source
14
+ // such as a bare Subject is not re-subscribed (and its already emitted
15
+ // value lost) on the first request.
16
+ this.config.subscribe((nextConfig) => {
17
+ this.latestConfig = nextConfig;
18
+ this.cubeApi = undefined;
16
19
  this.ready$.next(true);
17
20
  });
18
21
  }
19
22
  else {
23
+ this.latestConfig = this.config;
20
24
  this.ready$.next(true);
21
25
  }
22
26
  }
23
27
  apiInstance() {
24
28
  if (!this.cubeApi) {
25
- if (this.config instanceof Observable) {
26
- this.config.subscribe((config) => {
27
- this.cubeApi = cube(config.token, config.options);
28
- if (!this.cubeApi) {
29
- throw new Error('Cannot create CubeApi instance. Please check that the config is passed correctly and contains all required options.');
30
- }
31
- });
29
+ if (!this.latestConfig) {
30
+ throw new Error('Cannot create CubeApi instance. The config observable has not emitted yet, use ready$ to wait for it.');
32
31
  }
33
- else {
34
- this.cubeApi = cube(this.config.token, this.config.options);
32
+ this.cubeApi = cube(this.latestConfig.token, this.latestConfig.options);
33
+ if (!this.cubeApi) {
34
+ throw new Error('Cannot create CubeApi instance. Please check that the config is passed correctly and contains all required options.');
35
35
  }
36
36
  }
37
37
  return this.cubeApi;
@@ -61,10 +61,10 @@ class CubeClient {
61
61
  },
62
62
  }));
63
63
  }
64
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient, deps: [{ token: 'config' }], target: i0.ɵɵFactoryTarget.Injectable });
65
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient });
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClient, deps: [{ token: 'config' }], target: i0.ɵɵFactoryTarget.Injectable }); }
65
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClient }); }
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClient, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClient, decorators: [{
68
68
  type: Injectable
69
69
  }], ctorParameters: () => [{ type: undefined, decorators: [{
70
70
  type: Inject,
@@ -84,11 +84,11 @@ class CubeClientModule {
84
84
  ],
85
85
  };
86
86
  }
87
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
88
- /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule });
89
- /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, providers: [CubeClient] });
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
88
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.31", ngImport: i0, type: CubeClientModule }); }
89
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClientModule, providers: [CubeClient] }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CubeClientModule, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CubeClientModule, decorators: [{
92
92
  type: NgModule,
93
93
  args: [{
94
94
  providers: [CubeClient],
@@ -96,7 +96,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
96
96
  }] });
97
97
 
98
98
  class StateSubject {
99
- subject;
100
99
  constructor(value) {
101
100
  this.subject = new BehaviorSubject(value);
102
101
  }
@@ -109,8 +108,6 @@ class StateSubject {
109
108
  }
110
109
 
111
110
  class BaseMember {
112
- query;
113
- field;
114
111
  constructor(query, field) {
115
112
  this.query = query;
116
113
  this.field = field;
@@ -148,7 +145,6 @@ class BaseMember {
148
145
  }
149
146
  }
150
147
  class TimeDimensionMember {
151
- query;
152
148
  constructor(query) {
153
149
  this.query = query;
154
150
  }
@@ -205,10 +201,9 @@ class TimeDimensionMember {
205
201
  }
206
202
  }
207
203
  class Order {
208
- query;
209
- orderMembers = new BehaviorSubject([]);
210
204
  constructor(query) {
211
205
  this.query = query;
206
+ this.orderMembers = new BehaviorSubject([]);
212
207
  this.query.subject.subscribe(this.handleQueryChange.bind(this));
213
208
  this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));
214
209
  }
@@ -262,7 +257,6 @@ class Order {
262
257
  }
263
258
  }
264
259
  class FilterMember {
265
- query;
266
260
  constructor(query) {
267
261
  this.query = query;
268
262
  }
@@ -341,14 +335,6 @@ var MemberType;
341
335
  MemberType["Order"] = "order";
342
336
  })(MemberType || (MemberType = {}));
343
337
  class Query extends StateSubject {
344
- meta;
345
- _onBeforeChange;
346
- measures;
347
- dimensions;
348
- segments;
349
- timeDimensions;
350
- filters;
351
- order;
352
338
  constructor(meta, _onBeforeChange = (newQuery) => newQuery) {
353
339
  super({});
354
340
  this.meta = meta;
@@ -384,12 +370,6 @@ class Query extends StateSubject {
384
370
  }
385
371
 
386
372
  class BuilderMeta {
387
- meta;
388
- measures;
389
- dimensions;
390
- segments;
391
- timeDimensions;
392
- filters;
393
373
  constructor(meta) {
394
374
  this.meta = meta;
395
375
  this.mapMeta();
@@ -432,22 +412,17 @@ class ChartType extends StateSubject {
432
412
  }
433
413
 
434
414
  class QueryBuilderService {
435
- _cube;
436
- _meta;
437
- _query;
438
- _disableHeuristics = false;
439
- _resolveQuery;
440
- _resolveBuilderMeta;
441
- _heuristicChange$ = new Subject();
442
- builderMeta = new Promise((resolve) => {
443
- this._resolveBuilderMeta = resolve;
444
- });
445
- query = new Promise((resolve) => {
446
- this._resolveQuery = resolve;
447
- });
448
- state = new BehaviorSubject({});
449
- pivotConfig;
450
- chartType;
415
+ constructor() {
416
+ this._disableHeuristics = false;
417
+ this._heuristicChange$ = new Subject();
418
+ this.builderMeta = new Promise((resolve) => {
419
+ this._resolveBuilderMeta = resolve;
420
+ });
421
+ this.query = new Promise((resolve) => {
422
+ this._resolveQuery = resolve;
423
+ });
424
+ this.state = new BehaviorSubject({});
425
+ }
451
426
  async init() {
452
427
  this.pivotConfig = new PivotConfig(null);
453
428
  this.chartType = new ChartType('line');
@@ -541,10 +516,10 @@ class QueryBuilderService {
541
516
  enableHeuristics() {
542
517
  this._disableHeuristics = false;
543
518
  }
544
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
545
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService });
519
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
520
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: QueryBuilderService }); }
546
521
  }
547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryBuilderService, decorators: [{
522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: QueryBuilderService, decorators: [{
548
523
  type: Injectable
549
524
  }] });
550
525
 
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-ngx.mjs","sources":["../../src/client.ts","../../src/module.ts","../../src/query-builder/common.ts","../../src/query-builder/query-members.ts","../../src/query-builder/query.ts","../../src/query-builder/builder-meta.ts","../../src/query-builder/pivot-config.ts","../../src/query-builder/chart-type.ts","../../src/query-builder/query-builder.service.ts","../../src/public_api.ts","../../index.ts","../../cubejs-client-ngx.ts"],"sourcesContent":["import { Injectable, Inject } from '@angular/core';\nimport { Observable, from, BehaviorSubject } from 'rxjs';\nimport cube, {\n CubeApi,\n CubeApiOptions,\n DryRunResponse,\n LoadMethodOptions,\n Meta,\n Query,\n ResultSet,\n SqlQuery,\n} from '@cubejs-client/core';\n\nexport type CubeConfig = {\n token: string;\n options?: CubeApiOptions;\n};\n\n@Injectable()\nexport class CubeClient {\n public ready$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private cubeApi: CubeApi;\n\n public constructor(@Inject('config') private config: any | Observable<any>) {\n if (this.config instanceof Observable) {\n this.config.subscribe(() => {\n this.ready$.next(true);\n });\n } else {\n this.ready$.next(true);\n }\n }\n\n private apiInstance(): CubeApi {\n if (!this.cubeApi) {\n if (this.config instanceof Observable) {\n this.config.subscribe((config) => {\n this.cubeApi = cube(config.token, config.options);\n\n if (!this.cubeApi) {\n throw new Error(\n 'Cannot create CubeApi instance. Please check that the config is passed correctly and contains all required options.'\n );\n }\n });\n } else {\n this.cubeApi = cube(this.config.token, this.config.options);\n }\n }\n\n return this.cubeApi;\n }\n\n public load(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<ResultSet<any>> {\n return from(this.apiInstance().load(query, options) as Promise<ResultSet<any>>);\n }\n\n public sql(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<SqlQuery> {\n return from(this.apiInstance().sql(query, options));\n }\n\n public dryRun(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<DryRunResponse> {\n return from(this.apiInstance().dryRun(query, options));\n }\n\n public meta(options?: LoadMethodOptions): Observable<Meta> {\n return from(this.apiInstance().meta(options));\n }\n\n public watch(query, params = {}): Observable<ResultSet<any>> {\n return new Observable((observer) => query.subscribe({\n next: async (currentQuery) => {\n try {\n const resultSet = await this.apiInstance().load(currentQuery, params);\n observer.next(resultSet);\n } catch (err) {\n observer.error(err);\n }\n },\n }));\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CubeClient } from './client';\n\n@NgModule({\n providers: [CubeClient],\n})\nexport class CubeClientModule {\n public static forRoot(config: any): ModuleWithProviders<CubeClientModule> {\n return {\n ngModule: CubeClientModule,\n providers: [\n CubeClient,\n {\n provide: 'config',\n useValue: config,\n },\n ],\n };\n }\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class StateSubject<T = any> {\n public subject: BehaviorSubject<T>;\n\n public constructor(value: T) {\n this.subject = new BehaviorSubject(value);\n }\n\n public get() {\n return this.subject.getValue();\n }\n\n public set(value: T) {\n this.subject.next(value);\n }\n}\n","import {\n TimeDimensionGranularity,\n TQueryOrderObject,\n TQueryOrderArray,\n moveItemInArray,\n Filter,\n UnaryFilter,\n BinaryFilter,\n} from '@cubejs-client/core';\nimport { BehaviorSubject } from 'rxjs';\nimport equal from 'fast-deep-equal/es6';\n\nimport { Query } from './query';\n\nexport type TOrder = 'asc' | 'desc' | 'none';\n\nexport type TOrderMember = {\n id: string;\n order: TOrder;\n title: string;\n};\n\nexport class BaseMember {\n public constructor(\n private query: Query,\n private field: 'measures' | 'dimensions' | 'segments'\n ) {}\n\n private get members() {\n return this.query.asCubeQuery()[this.field] || [];\n }\n\n public add(name: string) {\n this.query.setPartialQuery({\n [this.field]: [...this.members, name],\n });\n }\n\n public replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n [this.field]: this.members.map(\n (currentName) => (currentName === name ? replaceWithName : currentName)\n ),\n });\n }\n\n public remove(by: string | number) {\n this.query.setPartialQuery({\n [this.field]: this.members.filter((currentName, index) => {\n if (typeof by === 'string') {\n return currentName !== by;\n }\n\n return index !== by;\n }),\n });\n }\n\n public set(members: string[]) {\n this.query.setPartialQuery({\n [this.field]: members,\n });\n }\n\n public asArray() {\n return this.members.map((name) => this.query.meta.resolveMember(name, this.field));\n }\n}\n\nexport class TimeDimensionMember {\n public constructor(private query: Query) {}\n\n private get members() {\n return this.query.asCubeQuery().timeDimensions || [];\n }\n\n public get granularity() {\n return this.members[0]?.granularity;\n }\n\n public updateTimeDimension(by: string | number, updateWith: any) {\n const timeDimensions = this.members.map((td, index) => {\n if (td.dimension === by || index === by) {\n return {\n ...td,\n ...updateWith,\n };\n }\n return td;\n });\n\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n public add(name: string) {\n this.query.setPartialQuery({\n timeDimensions: [\n {\n dimension: name,\n },\n ],\n });\n }\n\n public remove(name: string) {\n this.query.setPartialQuery({\n timeDimensions: this.members.filter(\n ({ dimension }) => dimension !== name\n ),\n });\n }\n\n public set(timeDimensions: any[]) {\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n public setDateRange(by: string | number, dateRange: string | string[]) {\n this.updateTimeDimension(by, { dateRange });\n }\n\n public setGranularity(by: string | number, granularity: TimeDimensionGranularity) {\n this.updateTimeDimension(by, { granularity });\n }\n\n public asArray(): any[] {\n return this.members.map((td) => ({\n ...this.query.meta.resolveMember(td.dimension, 'dimensions'),\n ...td,\n }));\n }\n}\n\nexport class Order {\n public orderMembers = new BehaviorSubject<TOrderMember[]>([]);\n\n public constructor(private query: Query) {\n this.query.subject.subscribe(this.handleQueryChange.bind(this));\n this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));\n }\n\n private handleOrderMembersChange(orderMembers: TOrderMember[]) {\n const order = orderMembers\n .filter((orderMember) => orderMember.order !== 'none')\n .reduce(\n (memo, orderMember) => ({ ...memo, [orderMember.id]: orderMember.order }),\n {}\n ) as TQueryOrderObject;\n\n if (!equal(order, this.asObject())) {\n this.query.setPartialQuery({ order });\n }\n }\n\n private handleQueryChange() {\n this.orderMembers.next(\n [\n ...this.query.measures.asArray(),\n ...this.query.dimensions.asArray(),\n ...this.query.timeDimensions.asArray(),\n ].map<TOrderMember>(({ name, title }) => ({\n id: name,\n order: this.of(name),\n title,\n }))\n );\n }\n\n public setMemberOrder(id: string, order: TOrder) {\n this.orderMembers.next(\n this.orderMembers.getValue().map((orderMember) => {\n if (orderMember.id === id) {\n return {\n ...orderMember,\n order,\n };\n }\n return orderMember;\n })\n );\n }\n\n public reorder(sourceIndex: number, destinationIndex: number) {\n this.orderMembers.next(\n moveItemInArray(\n this.orderMembers.getValue(),\n sourceIndex,\n destinationIndex\n )\n );\n }\n\n public of(member: string) {\n return (this.query.asCubeQuery().order || {})[member] || 'none';\n }\n\n public set(order: TQueryOrderObject | TQueryOrderArray) {\n this.query.setPartialQuery({ order });\n }\n\n public asArray(): TQueryOrderArray {\n if (Array.isArray(this.query.asCubeQuery().order)) {\n return this.query.asCubeQuery().order as TQueryOrderArray;\n }\n\n return Object.entries(this.query.asCubeQuery().order || {});\n }\n\n public asObject(): TQueryOrderObject {\n return this.asArray().reduce(\n (memo, [key, value]) => ({ ...memo, [key]: value }),\n {}\n );\n }\n}\n\nexport class FilterMember {\n public constructor(private query: Query) {}\n\n private get filters() {\n // TODO: update this type assertion once the QueryBuilder supports logical and/or\n return (this.query.asCubeQuery().filters || []) as (UnaryFilter | BinaryFilter)[];\n }\n\n public update(by: string | number, updateWith: Partial<Filter>) {\n const filters = this.filters.map((filter, index) => {\n if (index === by || filter.member === by || filter.dimension === by) {\n return {\n ...filter,\n ...updateWith,\n };\n }\n return filter;\n });\n\n this.query.setPartialQuery({\n filters: filters as Filter[],\n });\n }\n\n public add(filter: Filter) {\n this.query.setPartialQuery({\n filters: [...this.filters, filter],\n });\n }\n\n public remove(by: string | number) {\n this.query.setPartialQuery({\n filters: this.filters.filter((filter, index) => {\n if (filter.member === by || filter.dimension === by || index === by) {\n return false;\n }\n\n return true;\n }),\n });\n }\n\n public set(filters: Filter[]) {\n this.query.setPartialQuery({\n filters,\n });\n }\n\n public replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n filters: this.filters.map((filter) => {\n const field = filter.member ? 'member' : 'dimension';\n return filter.member === name || filter.dimension === name\n ? {\n ...filter,\n [field]: replaceWithName,\n }\n : filter;\n }),\n });\n }\n\n public asArray(): any[] {\n return this.filters.map((filter) => ({\n ...this.query.meta.resolveMember(filter.member || filter.dimension, [\n 'dimensions',\n 'measures',\n ]),\n operators: this.query.meta.filterOperatorsForMember(\n filter.member || filter.dimension,\n ['dimensions', 'measures']\n ),\n ...filter,\n }));\n }\n}\n","import { isQueryPresent, Meta, Query as TCubeQuery } from '@cubejs-client/core';\n\nimport { StateSubject } from './common';\nimport { BaseMember, FilterMember, Order, TimeDimensionMember } from './query-members';\n\nexport enum MemberType {\n Measures = 'measures',\n Dimensions = 'dimensions',\n Segments = 'segments',\n TimeDimensions = 'timeDimensions',\n Filters = 'filters',\n // an enum member is not a binding, so this does not shadow the imported `Order`\n // eslint-disable-next-line no-shadow\n Order = 'order',\n}\n\nexport type OnChangeCallback = (\n newQuery: TCubeQuery,\n oldQuery: TCubeQuery,\n query: Query\n) => TCubeQuery;\n\nexport class Query extends StateSubject<TCubeQuery> {\n public measures: BaseMember;\n\n public dimensions: BaseMember;\n\n public segments: BaseMember;\n\n public timeDimensions: TimeDimensionMember;\n\n public filters: FilterMember;\n\n public order: Order;\n\n public constructor(\n public meta: Meta,\n private _onBeforeChange: OnChangeCallback = (newQuery) => newQuery\n ) {\n super({});\n this.init();\n }\n\n private init() {\n this.measures = new BaseMember(this, MemberType.Measures);\n this.dimensions = new BaseMember(this, MemberType.Dimensions);\n this.segments = new BaseMember(this, MemberType.Segments);\n this.timeDimensions = new TimeDimensionMember(this);\n this.filters = new FilterMember(this);\n this.order = new Order(this);\n }\n\n public asCubeQuery(): TCubeQuery {\n return this.subject.getValue() || {};\n }\n\n public setQuery(query: TCubeQuery) {\n this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));\n }\n\n public setPartialQuery(partialQuery: Partial<TCubeQuery>) {\n this.subject.next(\n this._onBeforeChange(\n {\n ...this.subject.getValue(),\n ...partialQuery,\n },\n this.subject.getValue(),\n this\n )\n );\n }\n\n public setLimit(limit: number) {\n this.setPartialQuery({ limit });\n }\n\n public isPresent(): boolean {\n return isQueryPresent(this.asCubeQuery());\n }\n}\n","import {\n Meta,\n TCubeDimension,\n TCubeMeasure,\n TCubeSegment,\n} from '@cubejs-client/core';\n\nexport class BuilderMeta {\n public measures: TCubeMeasure[];\n\n public dimensions: TCubeDimension[];\n\n public segments: TCubeSegment[];\n\n public timeDimensions: TCubeDimension[];\n\n public filters: Array<TCubeMeasure | TCubeDimension>;\n\n public constructor(public readonly meta: Meta) {\n this.mapMeta();\n }\n\n private mapMeta() {\n const allDimensions = this.meta.membersForQuery(\n null,\n 'dimensions'\n ) as TCubeDimension[];\n\n this.measures = this.meta.membersForQuery(null, 'measures') as TCubeMeasure[];\n this.segments = this.meta.membersForQuery(null, 'segments');\n this.dimensions = allDimensions.filter(({ type }) => type !== 'time');\n this.timeDimensions = allDimensions.filter(({ type }) => type === 'time');\n this.filters = [...allDimensions, ...this.measures].map((member) => ({\n ...member,\n operators: this.meta.filterOperatorsForMember(member.name, [\n 'dimensions',\n 'measures',\n ]),\n }));\n }\n}\n","import {\n movePivotItem,\n PivotConfig as TPivotConfig,\n TSourceAxis,\n} from '@cubejs-client/core';\nimport { StateSubject } from './common';\n\nexport class PivotConfig extends StateSubject<TPivotConfig> {\n public constructor(pivotConfig: TPivotConfig) {\n super(pivotConfig);\n }\n\n public moveItem(\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n ) {\n this.subject.next(\n movePivotItem(\n this.get(),\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n )\n );\n }\n\n public setFillMissingDates(fillMissingDates: boolean) {\n this.subject.next({\n ...this.get(),\n fillMissingDates\n });\n }\n}\n","import { StateSubject } from './common';\n\nexport type TChartType = 'line' | 'area' | 'bar' | 'number' | 'table' | 'pie';\n\nexport class ChartType extends StateSubject<TChartType> {\n public constructor(value) {\n super(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Meta,\n ResultSet,\n Query as TCubeQuery,\n PivotConfig as TPivotConfig,\n isQueryPresent,\n defaultHeuristics,\n} from '@cubejs-client/core';\nimport { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\n\nimport { CubeClient } from '../client';\nimport { Query } from './query';\nimport { BuilderMeta } from './builder-meta';\nimport { PivotConfig } from './pivot-config';\nimport { ChartType, TChartType } from './chart-type';\nimport { StateSubject } from './common';\n\nexport type TQueryBuilderState = {\n query?: TCubeQuery;\n pivotConfig?: TPivotConfig;\n chartType?: TChartType;\n};\n\n@Injectable()\nexport class QueryBuilderService {\n private _cube: CubeClient;\n\n private _meta: Meta;\n\n private _query: Query;\n\n private _disableHeuristics: boolean = false;\n\n private _resolveQuery: (query: Query) => void;\n\n private _resolveBuilderMeta: (query: BuilderMeta) => void;\n\n private _heuristicChange$ = new Subject<any>();\n\n public readonly builderMeta = new Promise<BuilderMeta>((resolve) => {\n this._resolveBuilderMeta = resolve;\n });\n\n public readonly query = new Promise<Query>((resolve) => {\n this._resolveQuery = resolve;\n });\n\n public readonly state = new BehaviorSubject<TQueryBuilderState>({});\n\n public pivotConfig: PivotConfig;\n\n public chartType: ChartType;\n\n private async init() {\n this.pivotConfig = new PivotConfig(null);\n this.chartType = new ChartType('line');\n\n this._cube.meta().subscribe((meta) => {\n this._meta = meta;\n\n this._query = new Query(\n this._meta,\n this._handleQueryChange.bind(this)\n );\n this._resolveQuery(this._query);\n this._resolveBuilderMeta(new BuilderMeta(this._meta));\n });\n\n this.subscribe();\n\n if (!this._disableHeuristics) {\n this._heuristicChange$\n .pipe(\n switchMap((data) => combineLatest([\n this._cube.dryRun(data.query).pipe(catchError((error) => {\n console.error(error);\n return of(null);\n })),\n of(data.shouldApplyHeuristicOrder),\n ]))\n )\n .subscribe(\n ([dryRunResponse, shouldApplyHeuristicOrder]) => {\n if (!dryRunResponse) {\n return;\n }\n\n const { pivotQuery, queryOrder } = dryRunResponse;\n\n this.pivotConfig.set(\n ResultSet.getNormalizedPivotConfig(\n pivotQuery,\n this.pivotConfig.get()\n )\n );\n if (shouldApplyHeuristicOrder) {\n this._query.order.set(\n queryOrder.reduce((a, b) => ({ ...a, ...b }), {})\n );\n }\n }\n );\n }\n }\n\n private _handleQueryChange(newQuery, oldQuery) {\n const {\n chartType,\n shouldApplyHeuristicOrder,\n query: heuristicQuery,\n } = defaultHeuristics(newQuery, oldQuery, {\n meta: this._meta,\n sessionGranularity: newQuery?.timeDimensions?.[0]?.granularity,\n });\n\n const query = this._disableHeuristics\n ? newQuery\n : heuristicQuery || newQuery;\n\n if (isQueryPresent(query) && !this._disableHeuristics) {\n this._heuristicChange$.next({\n shouldApplyHeuristicOrder: Boolean(shouldApplyHeuristicOrder),\n query,\n });\n }\n\n if (!this._disableHeuristics && chartType) {\n this.chartType.set(chartType);\n }\n\n return query;\n }\n\n public setCubeClient(cubeClient: CubeClient) {\n this._cube = cubeClient;\n this.init();\n }\n\n private subscribe() {\n Object.getOwnPropertyNames(this).forEach((key) => {\n if (this[key] instanceof StateSubject) {\n this[key].subject.subscribe((value) => this.setPartialState({\n [key]: value,\n }));\n }\n });\n this.query.then((query) => {\n query.subject.subscribe((cubeQuery) => {\n this.setPartialState({\n query: cubeQuery,\n });\n });\n });\n }\n\n public async deserialize(state) {\n if (state.query) {\n (await this.query).setQuery(state.query);\n }\n\n Object.entries(state).forEach(([key, value]) => {\n if (this[key] instanceof StateSubject) {\n this[key].set(value);\n }\n });\n\n this.subscribe();\n }\n\n public setPartialState(partialState) {\n this.state.next({\n ...this.state.getValue(),\n ...partialState,\n });\n }\n\n public disableHeuristics() {\n this._disableHeuristics = true;\n }\n\n public enableHeuristics() {\n this._disableHeuristics = false;\n }\n}\n","/*\n * Public API Surface of cubejs-client-ngx\n */\n\nexport { CubeClientModule } from './module';\nexport * from './client';\nexport * from './query-builder/query-builder.service';\nexport * from './query-builder/query';\nexport * from './query-builder/builder-meta';\nexport * from './query-builder/query-members';\nexport * from './query-builder/pivot-config';\nexport * from './query-builder/chart-type';\n","// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-ngx.mjs","sources":["../../src/client.ts","../../src/module.ts","../../src/query-builder/common.ts","../../src/query-builder/query-members.ts","../../src/query-builder/query.ts","../../src/query-builder/builder-meta.ts","../../src/query-builder/pivot-config.ts","../../src/query-builder/chart-type.ts","../../src/query-builder/query-builder.service.ts","../../src/public_api.ts","../../index.ts","../../cubejs-client-ngx.ts"],"sourcesContent":["import { Injectable, Inject } from '@angular/core';\nimport { Observable, from, BehaviorSubject } from 'rxjs';\nimport cube, {\n CubeApi,\n CubeApiOptions,\n DryRunResponse,\n LoadMethodOptions,\n Meta,\n Query,\n ResultSet,\n SqlQuery,\n} from '@cubejs-client/core';\n\nexport type CubeConfig = {\n token: string;\n options?: CubeApiOptions;\n};\n\n@Injectable()\nexport class CubeClient {\n public ready$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private cubeApi: CubeApi | undefined;\n\n private latestConfig: CubeConfig | undefined;\n\n public constructor(@Inject('config') private config: any | Observable<any>) {\n if (this.config instanceof Observable) {\n // A single subscription keeps the last emitted config, so a cold source\n // such as a bare Subject is not re-subscribed (and its already emitted\n // value lost) on the first request.\n this.config.subscribe((nextConfig) => {\n this.latestConfig = nextConfig;\n this.cubeApi = undefined;\n this.ready$.next(true);\n });\n } else {\n this.latestConfig = this.config;\n this.ready$.next(true);\n }\n }\n\n private apiInstance(): CubeApi {\n if (!this.cubeApi) {\n if (!this.latestConfig) {\n throw new Error(\n 'Cannot create CubeApi instance. The config observable has not emitted yet, use ready$ to wait for it.'\n );\n }\n\n this.cubeApi = cube(this.latestConfig.token, this.latestConfig.options);\n\n if (!this.cubeApi) {\n throw new Error(\n 'Cannot create CubeApi instance. Please check that the config is passed correctly and contains all required options.'\n );\n }\n }\n\n return this.cubeApi;\n }\n\n public load(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<ResultSet<any>> {\n return from(this.apiInstance().load(query, options) as Promise<ResultSet<any>>);\n }\n\n public sql(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<SqlQuery> {\n return from(this.apiInstance().sql(query, options));\n }\n\n public dryRun(\n query: Query | Query[],\n options?: LoadMethodOptions\n ): Observable<DryRunResponse> {\n return from(this.apiInstance().dryRun(query, options));\n }\n\n public meta(options?: LoadMethodOptions): Observable<Meta> {\n return from(this.apiInstance().meta(options));\n }\n\n public watch(query, params = {}): Observable<ResultSet<any>> {\n return new Observable((observer) => query.subscribe({\n next: async (currentQuery) => {\n try {\n const resultSet = await this.apiInstance().load(currentQuery, params);\n observer.next(resultSet);\n } catch (err) {\n observer.error(err);\n }\n },\n }));\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CubeClient } from './client';\n\n@NgModule({\n providers: [CubeClient],\n})\nexport class CubeClientModule {\n public static forRoot(config: any): ModuleWithProviders<CubeClientModule> {\n return {\n ngModule: CubeClientModule,\n providers: [\n CubeClient,\n {\n provide: 'config',\n useValue: config,\n },\n ],\n };\n }\n}\n","import { BehaviorSubject } from 'rxjs';\n\nexport class StateSubject<T = any> {\n public subject: BehaviorSubject<T>;\n\n public constructor(value: T) {\n this.subject = new BehaviorSubject(value);\n }\n\n public get() {\n return this.subject.getValue();\n }\n\n public set(value: T) {\n this.subject.next(value);\n }\n}\n","import {\n TimeDimensionGranularity,\n TQueryOrderObject,\n TQueryOrderArray,\n moveItemInArray,\n Filter,\n UnaryFilter,\n BinaryFilter,\n} from '@cubejs-client/core';\nimport { BehaviorSubject } from 'rxjs';\nimport equal from 'fast-deep-equal/es6';\n\nimport { Query } from './query';\n\nexport type TOrder = 'asc' | 'desc' | 'none';\n\nexport type TOrderMember = {\n id: string;\n order: TOrder;\n title: string;\n};\n\nexport class BaseMember {\n public constructor(\n private query: Query,\n private field: 'measures' | 'dimensions' | 'segments'\n ) {}\n\n private get members() {\n return this.query.asCubeQuery()[this.field] || [];\n }\n\n public add(name: string) {\n this.query.setPartialQuery({\n [this.field]: [...this.members, name],\n });\n }\n\n public replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n [this.field]: this.members.map(\n (currentName) => (currentName === name ? replaceWithName : currentName)\n ),\n });\n }\n\n public remove(by: string | number) {\n this.query.setPartialQuery({\n [this.field]: this.members.filter((currentName, index) => {\n if (typeof by === 'string') {\n return currentName !== by;\n }\n\n return index !== by;\n }),\n });\n }\n\n public set(members: string[]) {\n this.query.setPartialQuery({\n [this.field]: members,\n });\n }\n\n public asArray() {\n return this.members.map((name) => this.query.meta.resolveMember(name, this.field));\n }\n}\n\nexport class TimeDimensionMember {\n public constructor(private query: Query) {}\n\n private get members() {\n return this.query.asCubeQuery().timeDimensions || [];\n }\n\n public get granularity() {\n return this.members[0]?.granularity;\n }\n\n public updateTimeDimension(by: string | number, updateWith: any) {\n const timeDimensions = this.members.map((td, index) => {\n if (td.dimension === by || index === by) {\n return {\n ...td,\n ...updateWith,\n };\n }\n return td;\n });\n\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n public add(name: string) {\n this.query.setPartialQuery({\n timeDimensions: [\n {\n dimension: name,\n },\n ],\n });\n }\n\n public remove(name: string) {\n this.query.setPartialQuery({\n timeDimensions: this.members.filter(\n ({ dimension }) => dimension !== name\n ),\n });\n }\n\n public set(timeDimensions: any[]) {\n this.query.setPartialQuery({\n timeDimensions,\n });\n }\n\n public setDateRange(by: string | number, dateRange: string | string[]) {\n this.updateTimeDimension(by, { dateRange });\n }\n\n public setGranularity(by: string | number, granularity: TimeDimensionGranularity) {\n this.updateTimeDimension(by, { granularity });\n }\n\n public asArray(): any[] {\n return this.members.map((td) => ({\n ...this.query.meta.resolveMember(td.dimension, 'dimensions'),\n ...td,\n }));\n }\n}\n\nexport class Order {\n public orderMembers = new BehaviorSubject<TOrderMember[]>([]);\n\n public constructor(private query: Query) {\n this.query.subject.subscribe(this.handleQueryChange.bind(this));\n this.orderMembers.subscribe(this.handleOrderMembersChange.bind(this));\n }\n\n private handleOrderMembersChange(orderMembers: TOrderMember[]) {\n const order = orderMembers\n .filter((orderMember) => orderMember.order !== 'none')\n .reduce(\n (memo, orderMember) => ({ ...memo, [orderMember.id]: orderMember.order }),\n {}\n ) as TQueryOrderObject;\n\n if (!equal(order, this.asObject())) {\n this.query.setPartialQuery({ order });\n }\n }\n\n private handleQueryChange() {\n this.orderMembers.next(\n [\n ...this.query.measures.asArray(),\n ...this.query.dimensions.asArray(),\n ...this.query.timeDimensions.asArray(),\n ].map<TOrderMember>(({ name, title }) => ({\n id: name,\n order: this.of(name),\n title,\n }))\n );\n }\n\n public setMemberOrder(id: string, order: TOrder) {\n this.orderMembers.next(\n this.orderMembers.getValue().map((orderMember) => {\n if (orderMember.id === id) {\n return {\n ...orderMember,\n order,\n };\n }\n return orderMember;\n })\n );\n }\n\n public reorder(sourceIndex: number, destinationIndex: number) {\n this.orderMembers.next(\n moveItemInArray(\n this.orderMembers.getValue(),\n sourceIndex,\n destinationIndex\n )\n );\n }\n\n public of(member: string) {\n return (this.query.asCubeQuery().order || {})[member] || 'none';\n }\n\n public set(order: TQueryOrderObject | TQueryOrderArray) {\n this.query.setPartialQuery({ order });\n }\n\n public asArray(): TQueryOrderArray {\n if (Array.isArray(this.query.asCubeQuery().order)) {\n return this.query.asCubeQuery().order as TQueryOrderArray;\n }\n\n return Object.entries(this.query.asCubeQuery().order || {});\n }\n\n public asObject(): TQueryOrderObject {\n return this.asArray().reduce(\n (memo, [key, value]) => ({ ...memo, [key]: value }),\n {}\n );\n }\n}\n\nexport class FilterMember {\n public constructor(private query: Query) {}\n\n private get filters() {\n // TODO: update this type assertion once the QueryBuilder supports logical and/or\n return (this.query.asCubeQuery().filters || []) as (UnaryFilter | BinaryFilter)[];\n }\n\n public update(by: string | number, updateWith: Partial<Filter>) {\n const filters = this.filters.map((filter, index) => {\n if (index === by || filter.member === by || filter.dimension === by) {\n return {\n ...filter,\n ...updateWith,\n };\n }\n return filter;\n });\n\n this.query.setPartialQuery({\n filters: filters as Filter[],\n });\n }\n\n public add(filter: Filter) {\n this.query.setPartialQuery({\n filters: [...this.filters, filter],\n });\n }\n\n public remove(by: string | number) {\n this.query.setPartialQuery({\n filters: this.filters.filter((filter, index) => {\n if (filter.member === by || filter.dimension === by || index === by) {\n return false;\n }\n\n return true;\n }),\n });\n }\n\n public set(filters: Filter[]) {\n this.query.setPartialQuery({\n filters,\n });\n }\n\n public replace(name: string, replaceWithName: string) {\n this.query.setPartialQuery({\n filters: this.filters.map((filter) => {\n const field = filter.member ? 'member' : 'dimension';\n return filter.member === name || filter.dimension === name\n ? {\n ...filter,\n [field]: replaceWithName,\n }\n : filter;\n }),\n });\n }\n\n public asArray(): any[] {\n return this.filters.map((filter) => ({\n ...this.query.meta.resolveMember(filter.member || filter.dimension, [\n 'dimensions',\n 'measures',\n ]),\n operators: this.query.meta.filterOperatorsForMember(\n filter.member || filter.dimension,\n ['dimensions', 'measures']\n ),\n ...filter,\n }));\n }\n}\n","import { isQueryPresent, Meta, Query as TCubeQuery } from '@cubejs-client/core';\n\nimport { StateSubject } from './common';\nimport { BaseMember, FilterMember, Order, TimeDimensionMember } from './query-members';\n\nexport enum MemberType {\n Measures = 'measures',\n Dimensions = 'dimensions',\n Segments = 'segments',\n TimeDimensions = 'timeDimensions',\n Filters = 'filters',\n // an enum member is not a binding, so this does not shadow the imported `Order`\n // eslint-disable-next-line no-shadow\n Order = 'order',\n}\n\nexport type OnChangeCallback = (\n newQuery: TCubeQuery,\n oldQuery: TCubeQuery,\n query: Query\n) => TCubeQuery;\n\nexport class Query extends StateSubject<TCubeQuery> {\n public measures: BaseMember;\n\n public dimensions: BaseMember;\n\n public segments: BaseMember;\n\n public timeDimensions: TimeDimensionMember;\n\n public filters: FilterMember;\n\n public order: Order;\n\n public constructor(\n public meta: Meta,\n private _onBeforeChange: OnChangeCallback = (newQuery) => newQuery\n ) {\n super({});\n this.init();\n }\n\n private init() {\n this.measures = new BaseMember(this, MemberType.Measures);\n this.dimensions = new BaseMember(this, MemberType.Dimensions);\n this.segments = new BaseMember(this, MemberType.Segments);\n this.timeDimensions = new TimeDimensionMember(this);\n this.filters = new FilterMember(this);\n this.order = new Order(this);\n }\n\n public asCubeQuery(): TCubeQuery {\n return this.subject.getValue() || {};\n }\n\n public setQuery(query: TCubeQuery) {\n this.subject.next(this._onBeforeChange(query, this.subject.getValue(), this));\n }\n\n public setPartialQuery(partialQuery: Partial<TCubeQuery>) {\n this.subject.next(\n this._onBeforeChange(\n {\n ...this.subject.getValue(),\n ...partialQuery,\n },\n this.subject.getValue(),\n this\n )\n );\n }\n\n public setLimit(limit: number) {\n this.setPartialQuery({ limit });\n }\n\n public isPresent(): boolean {\n return isQueryPresent(this.asCubeQuery());\n }\n}\n","import {\n Meta,\n TCubeDimension,\n TCubeMeasure,\n TCubeSegment,\n} from '@cubejs-client/core';\n\nexport class BuilderMeta {\n public measures: TCubeMeasure[];\n\n public dimensions: TCubeDimension[];\n\n public segments: TCubeSegment[];\n\n public timeDimensions: TCubeDimension[];\n\n public filters: Array<TCubeMeasure | TCubeDimension>;\n\n public constructor(public readonly meta: Meta) {\n this.mapMeta();\n }\n\n private mapMeta() {\n const allDimensions = this.meta.membersForQuery(\n null,\n 'dimensions'\n ) as TCubeDimension[];\n\n this.measures = this.meta.membersForQuery(null, 'measures') as TCubeMeasure[];\n this.segments = this.meta.membersForQuery(null, 'segments');\n this.dimensions = allDimensions.filter(({ type }) => type !== 'time');\n this.timeDimensions = allDimensions.filter(({ type }) => type === 'time');\n this.filters = [...allDimensions, ...this.measures].map((member) => ({\n ...member,\n operators: this.meta.filterOperatorsForMember(member.name, [\n 'dimensions',\n 'measures',\n ]),\n }));\n }\n}\n","import {\n movePivotItem,\n PivotConfig as TPivotConfig,\n TSourceAxis,\n} from '@cubejs-client/core';\nimport { StateSubject } from './common';\n\nexport class PivotConfig extends StateSubject<TPivotConfig> {\n public constructor(pivotConfig: TPivotConfig) {\n super(pivotConfig);\n }\n\n public moveItem(\n sourceIndex: number,\n destinationIndex: number,\n sourceAxis: TSourceAxis,\n destinationAxis: TSourceAxis\n ) {\n this.subject.next(\n movePivotItem(\n this.get(),\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n )\n );\n }\n\n public setFillMissingDates(fillMissingDates: boolean) {\n this.subject.next({\n ...this.get(),\n fillMissingDates\n });\n }\n}\n","import { StateSubject } from './common';\n\nexport type TChartType = 'line' | 'area' | 'bar' | 'number' | 'table' | 'pie';\n\nexport class ChartType extends StateSubject<TChartType> {\n public constructor(value) {\n super(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Meta,\n ResultSet,\n Query as TCubeQuery,\n PivotConfig as TPivotConfig,\n isQueryPresent,\n defaultHeuristics,\n} from '@cubejs-client/core';\nimport { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\n\nimport { CubeClient } from '../client';\nimport { Query } from './query';\nimport { BuilderMeta } from './builder-meta';\nimport { PivotConfig } from './pivot-config';\nimport { ChartType, TChartType } from './chart-type';\nimport { StateSubject } from './common';\n\nexport type TQueryBuilderState = {\n query?: TCubeQuery;\n pivotConfig?: TPivotConfig;\n chartType?: TChartType;\n};\n\n@Injectable()\nexport class QueryBuilderService {\n private _cube: CubeClient;\n\n private _meta: Meta;\n\n private _query: Query;\n\n private _disableHeuristics: boolean = false;\n\n private _resolveQuery: (query: Query) => void;\n\n private _resolveBuilderMeta: (query: BuilderMeta) => void;\n\n private _heuristicChange$ = new Subject<any>();\n\n public readonly builderMeta = new Promise<BuilderMeta>((resolve) => {\n this._resolveBuilderMeta = resolve;\n });\n\n public readonly query = new Promise<Query>((resolve) => {\n this._resolveQuery = resolve;\n });\n\n public readonly state = new BehaviorSubject<TQueryBuilderState>({});\n\n public pivotConfig: PivotConfig;\n\n public chartType: ChartType;\n\n private async init() {\n this.pivotConfig = new PivotConfig(null);\n this.chartType = new ChartType('line');\n\n this._cube.meta().subscribe((meta) => {\n this._meta = meta;\n\n this._query = new Query(\n this._meta,\n this._handleQueryChange.bind(this)\n );\n this._resolveQuery(this._query);\n this._resolveBuilderMeta(new BuilderMeta(this._meta));\n });\n\n this.subscribe();\n\n if (!this._disableHeuristics) {\n this._heuristicChange$\n .pipe(\n switchMap((data) => combineLatest([\n this._cube.dryRun(data.query).pipe(catchError((error) => {\n console.error(error);\n return of(null);\n })),\n of(data.shouldApplyHeuristicOrder),\n ]))\n )\n .subscribe(\n ([dryRunResponse, shouldApplyHeuristicOrder]) => {\n if (!dryRunResponse) {\n return;\n }\n\n const { pivotQuery, queryOrder } = dryRunResponse;\n\n this.pivotConfig.set(\n ResultSet.getNormalizedPivotConfig(\n pivotQuery,\n this.pivotConfig.get()\n )\n );\n if (shouldApplyHeuristicOrder) {\n this._query.order.set(\n queryOrder.reduce((a, b) => ({ ...a, ...b }), {})\n );\n }\n }\n );\n }\n }\n\n private _handleQueryChange(newQuery, oldQuery) {\n const {\n chartType,\n shouldApplyHeuristicOrder,\n query: heuristicQuery,\n } = defaultHeuristics(newQuery, oldQuery, {\n meta: this._meta,\n sessionGranularity: newQuery?.timeDimensions?.[0]?.granularity,\n });\n\n const query = this._disableHeuristics\n ? newQuery\n : heuristicQuery || newQuery;\n\n if (isQueryPresent(query) && !this._disableHeuristics) {\n this._heuristicChange$.next({\n shouldApplyHeuristicOrder: Boolean(shouldApplyHeuristicOrder),\n query,\n });\n }\n\n if (!this._disableHeuristics && chartType) {\n this.chartType.set(chartType);\n }\n\n return query;\n }\n\n public setCubeClient(cubeClient: CubeClient) {\n this._cube = cubeClient;\n this.init();\n }\n\n private subscribe() {\n Object.getOwnPropertyNames(this).forEach((key) => {\n if (this[key] instanceof StateSubject) {\n this[key].subject.subscribe((value) => this.setPartialState({\n [key]: value,\n }));\n }\n });\n this.query.then((query) => {\n query.subject.subscribe((cubeQuery) => {\n this.setPartialState({\n query: cubeQuery,\n });\n });\n });\n }\n\n public async deserialize(state) {\n if (state.query) {\n (await this.query).setQuery(state.query);\n }\n\n Object.entries(state).forEach(([key, value]) => {\n if (this[key] instanceof StateSubject) {\n this[key].set(value);\n }\n });\n\n this.subscribe();\n }\n\n public setPartialState(partialState) {\n this.state.next({\n ...this.state.getValue(),\n ...partialState,\n });\n }\n\n public disableHeuristics() {\n this._disableHeuristics = true;\n }\n\n public enableHeuristics() {\n this._disableHeuristics = false;\n }\n}\n","/*\n * Public API Surface of cubejs-client-ngx\n */\n\nexport { CubeClientModule } from './module';\nexport * from './client';\nexport * from './query-builder/query-builder.service';\nexport * from './query-builder/query';\nexport * from './query-builder/builder-meta';\nexport * from './query-builder/query-members';\nexport * from './query-builder/pivot-config';\nexport * from './query-builder/chart-type';\n","// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1 +1,176 @@
1
- export * from './src/public_api';
1
+ import * as i0 from '@angular/core';
2
+ import { ModuleWithProviders } from '@angular/core';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
4
+ import * as _cubejs_client_core from '@cubejs-client/core';
5
+ import { Query as Query$1, LoadMethodOptions, ResultSet, SqlQuery, DryRunResponse, Meta, CubeApiOptions, TimeDimensionGranularity, Filter, TQueryOrderObject, TQueryOrderArray, TCubeMeasure, TCubeDimension, TCubeSegment, PivotConfig as PivotConfig$1, TSourceAxis } from '@cubejs-client/core';
6
+
7
+ declare class CubeClientModule {
8
+ static forRoot(config: any): ModuleWithProviders<CubeClientModule>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<CubeClientModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CubeClientModule, never, never, never>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<CubeClientModule>;
12
+ }
13
+
14
+ type CubeConfig = {
15
+ token: string;
16
+ options?: CubeApiOptions;
17
+ };
18
+ declare class CubeClient {
19
+ private config;
20
+ ready$: BehaviorSubject<boolean>;
21
+ private cubeApi;
22
+ private latestConfig;
23
+ constructor(config: any | Observable<any>);
24
+ private apiInstance;
25
+ load(query: Query$1 | Query$1[], options?: LoadMethodOptions): Observable<ResultSet<any>>;
26
+ sql(query: Query$1 | Query$1[], options?: LoadMethodOptions): Observable<SqlQuery>;
27
+ dryRun(query: Query$1 | Query$1[], options?: LoadMethodOptions): Observable<DryRunResponse>;
28
+ meta(options?: LoadMethodOptions): Observable<Meta>;
29
+ watch(query: any, params?: {}): Observable<ResultSet<any>>;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<CubeClient, never>;
31
+ static ɵprov: i0.ɵɵInjectableDeclaration<CubeClient>;
32
+ }
33
+
34
+ declare class StateSubject<T = any> {
35
+ subject: BehaviorSubject<T>;
36
+ constructor(value: T);
37
+ get(): T;
38
+ set(value: T): void;
39
+ }
40
+
41
+ type TOrder = 'asc' | 'desc' | 'none';
42
+ type TOrderMember = {
43
+ id: string;
44
+ order: TOrder;
45
+ title: string;
46
+ };
47
+ declare class BaseMember {
48
+ private query;
49
+ private field;
50
+ constructor(query: Query, field: 'measures' | 'dimensions' | 'segments');
51
+ private get members();
52
+ add(name: string): void;
53
+ replace(name: string, replaceWithName: string): void;
54
+ remove(by: string | number): void;
55
+ set(members: string[]): void;
56
+ asArray(): (_cubejs_client_core.TCubeMeasure | _cubejs_client_core.TCubeDimension | _cubejs_client_core.TCubeSegment | _cubejs_client_core.NotFoundMember)[];
57
+ }
58
+ declare class TimeDimensionMember {
59
+ private query;
60
+ constructor(query: Query);
61
+ private get members();
62
+ get granularity(): string;
63
+ updateTimeDimension(by: string | number, updateWith: any): void;
64
+ add(name: string): void;
65
+ remove(name: string): void;
66
+ set(timeDimensions: any[]): void;
67
+ setDateRange(by: string | number, dateRange: string | string[]): void;
68
+ setGranularity(by: string | number, granularity: TimeDimensionGranularity): void;
69
+ asArray(): any[];
70
+ }
71
+ declare class Order {
72
+ private query;
73
+ orderMembers: BehaviorSubject<TOrderMember[]>;
74
+ constructor(query: Query);
75
+ private handleOrderMembersChange;
76
+ private handleQueryChange;
77
+ setMemberOrder(id: string, order: TOrder): void;
78
+ reorder(sourceIndex: number, destinationIndex: number): void;
79
+ of(member: string): any;
80
+ set(order: TQueryOrderObject | TQueryOrderArray): void;
81
+ asArray(): TQueryOrderArray;
82
+ asObject(): TQueryOrderObject;
83
+ }
84
+ declare class FilterMember {
85
+ private query;
86
+ constructor(query: Query);
87
+ private get filters();
88
+ update(by: string | number, updateWith: Partial<Filter>): void;
89
+ add(filter: Filter): void;
90
+ remove(by: string | number): void;
91
+ set(filters: Filter[]): void;
92
+ replace(name: string, replaceWithName: string): void;
93
+ asArray(): any[];
94
+ }
95
+
96
+ declare enum MemberType {
97
+ Measures = "measures",
98
+ Dimensions = "dimensions",
99
+ Segments = "segments",
100
+ TimeDimensions = "timeDimensions",
101
+ Filters = "filters",
102
+ Order = "order"
103
+ }
104
+ type OnChangeCallback = (newQuery: Query$1, oldQuery: Query$1, query: Query) => Query$1;
105
+ declare class Query extends StateSubject<Query$1> {
106
+ meta: Meta;
107
+ private _onBeforeChange;
108
+ measures: BaseMember;
109
+ dimensions: BaseMember;
110
+ segments: BaseMember;
111
+ timeDimensions: TimeDimensionMember;
112
+ filters: FilterMember;
113
+ order: Order;
114
+ constructor(meta: Meta, _onBeforeChange?: OnChangeCallback);
115
+ private init;
116
+ asCubeQuery(): Query$1;
117
+ setQuery(query: Query$1): void;
118
+ setPartialQuery(partialQuery: Partial<Query$1>): void;
119
+ setLimit(limit: number): void;
120
+ isPresent(): boolean;
121
+ }
122
+
123
+ declare class BuilderMeta {
124
+ readonly meta: Meta;
125
+ measures: TCubeMeasure[];
126
+ dimensions: TCubeDimension[];
127
+ segments: TCubeSegment[];
128
+ timeDimensions: TCubeDimension[];
129
+ filters: Array<TCubeMeasure | TCubeDimension>;
130
+ constructor(meta: Meta);
131
+ private mapMeta;
132
+ }
133
+
134
+ declare class PivotConfig extends StateSubject<PivotConfig$1> {
135
+ constructor(pivotConfig: PivotConfig$1);
136
+ moveItem(sourceIndex: number, destinationIndex: number, sourceAxis: TSourceAxis, destinationAxis: TSourceAxis): void;
137
+ setFillMissingDates(fillMissingDates: boolean): void;
138
+ }
139
+
140
+ type TChartType = 'line' | 'area' | 'bar' | 'number' | 'table' | 'pie';
141
+ declare class ChartType extends StateSubject<TChartType> {
142
+ constructor(value: any);
143
+ }
144
+
145
+ type TQueryBuilderState = {
146
+ query?: Query$1;
147
+ pivotConfig?: PivotConfig$1;
148
+ chartType?: TChartType;
149
+ };
150
+ declare class QueryBuilderService {
151
+ private _cube;
152
+ private _meta;
153
+ private _query;
154
+ private _disableHeuristics;
155
+ private _resolveQuery;
156
+ private _resolveBuilderMeta;
157
+ private _heuristicChange$;
158
+ readonly builderMeta: Promise<BuilderMeta>;
159
+ readonly query: Promise<Query>;
160
+ readonly state: BehaviorSubject<TQueryBuilderState>;
161
+ pivotConfig: PivotConfig;
162
+ chartType: ChartType;
163
+ private init;
164
+ private _handleQueryChange;
165
+ setCubeClient(cubeClient: CubeClient): void;
166
+ private subscribe;
167
+ deserialize(state: any): Promise<void>;
168
+ setPartialState(partialState: any): void;
169
+ disableHeuristics(): void;
170
+ enableHeuristics(): void;
171
+ static ɵfac: i0.ɵɵFactoryDeclaration<QueryBuilderService, never>;
172
+ static ɵprov: i0.ɵɵInjectableDeclaration<QueryBuilderService>;
173
+ }
174
+
175
+ export { BaseMember, BuilderMeta, ChartType, CubeClient, CubeClientModule, FilterMember, MemberType, Order, PivotConfig, Query, QueryBuilderService, TimeDimensionMember };
176
+ export type { CubeConfig, OnChangeCallback, TChartType, TOrder, TOrderMember, TQueryBuilderState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubejs-client/ngx",
3
- "version": "1.7.40",
3
+ "version": "1.7.42",
4
4
  "author": "Cube Dev, Inc.",
5
5
  "engines": {},
6
6
  "repository": {
@@ -25,6 +25,7 @@
25
25
  "tslib": "^2.3.0"
26
26
  },
27
27
  "peerDependencies": {
28
+ "@angular/core": ">=20.0.0",
28
29
  "@cubejs-client/core": ">=0.28.1",
29
30
  "rxjs": ">=6.6.0"
30
31
  },
@@ -36,8 +37,6 @@
36
37
  },
37
38
  ".": {
38
39
  "types": "./index.d.ts",
39
- "esm2022": "./esm2022/cubejs-client-ngx.mjs",
40
- "esm": "./esm2022/cubejs-client-ngx.mjs",
41
40
  "default": "./fesm2022/cubejs-client-ngx.mjs"
42
41
  }
43
42
  },
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZWpzLWNsaWVudC1uZ3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jdWJlanMtY2xpZW50LW5neC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
package/esm2022/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- // This file is not used to build this module. It is only used during editing
2
- // by the TypeScript language service and during build for verification. `ngc`
3
- // replaces this file with production index.ts when it rewrites private symbol
4
- // names.
5
- export * from './src/public_api';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxTQUFTO0FBRVQsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBub3QgdXNlZCB0byBidWlsZCB0aGlzIG1vZHVsZS4gSXQgaXMgb25seSB1c2VkIGR1cmluZyBlZGl0aW5nXG4vLyBieSB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBzZXJ2aWNlIGFuZCBkdXJpbmcgYnVpbGQgZm9yIHZlcmlmaWNhdGlvbi4gYG5nY2Bcbi8vIHJlcGxhY2VzIHRoaXMgZmlsZSB3aXRoIHByb2R1Y3Rpb24gaW5kZXgudHMgd2hlbiBpdCByZXdyaXRlcyBwcml2YXRlIHN5bWJvbFxuLy8gbmFtZXMuXG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL3B1YmxpY19hcGknO1xuIl19