@levi-gemcommerce/analytics 1.0.0-dev.13 → 1.0.0-dev.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/constants/breakdown-targets.d.ts +1 -1
- package/dist/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
- package/dist/esm/core/gemxql/builder/clauses/time-query.d.ts +2 -1
- package/dist/esm/core/gemxql/builder/helpers/date-query-helpers.d.ts +1 -1
- package/dist/esm/core/gemxql/index.d.ts +3 -4
- package/dist/esm/core/gemxql/types/date-filter.d.ts +1 -1
- package/dist/esm/core/gemxql/types/index.d.ts +0 -3
- package/dist/esm/gemxql.js +124 -154
- package/dist/esm/gemxql.mjs +124 -154
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +530 -532
- package/dist/esm/index.mjs +530 -532
- package/dist/esm/types/breakdown-items.d.ts +19 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types.js +24 -1
- package/dist/esm/types.mjs +24 -1
- package/dist/esm/utils/analytics.d.ts +12 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/umd/esm/constants/breakdown-targets.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/builder/clauses/time-query.d.ts +2 -1
- package/dist/umd/esm/core/gemxql/builder/helpers/date-query-helpers.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/index.d.ts +3 -4
- package/dist/umd/esm/core/gemxql/types/date-filter.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/types/index.d.ts +0 -3
- package/dist/umd/esm/index.d.ts +1 -0
- package/dist/umd/esm/types/breakdown-items.d.ts +19 -0
- package/dist/umd/esm/types/index.d.ts +1 -0
- package/dist/umd/esm/utils/analytics.d.ts +12 -0
- package/dist/umd/esm/utils/index.d.ts +1 -0
- package/dist/umd/gemxql.js +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/types.js +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IDonutTarget } from '@/types';
|
|
2
|
-
import { EDeviceType, ETrafficSourceType, EVisitorType } from '@/
|
|
2
|
+
import { EDeviceType, ETrafficSourceType, EVisitorType } from '@/types';
|
|
3
3
|
export declare const TARGET_VISITOR: IDonutTarget<EVisitorType>[];
|
|
4
4
|
export declare const TARGET_DEVICES: IDonutTarget<EDeviceType>[];
|
|
5
5
|
export declare const TARGET_CHANNEL: IDonutTarget<ETrafficSourceType>[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { GemXQlFilters, GemXQlOverrideFilters } from '../../types';
|
|
2
|
+
import type { AnalyticDateFilter } from '@/components';
|
|
2
3
|
export interface IBuildTimeQueryParams {
|
|
3
4
|
dateRange?: AnalyticDateFilter;
|
|
4
5
|
compareDateRange?: AnalyticDateFilter;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export * from './api';
|
|
2
1
|
export * from './builder';
|
|
3
2
|
export * from './constants';
|
|
4
|
-
export * from './graphql';
|
|
5
3
|
export * from './helpers';
|
|
6
|
-
export * from './hooks';
|
|
7
4
|
export * from './types';
|
|
8
|
-
export
|
|
5
|
+
export * from './api';
|
|
6
|
+
export * from './graphql';
|
|
7
|
+
export * from './hooks';
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
export * from './analytic-data';
|
|
2
|
-
export * from './analytic-mode';
|
|
3
2
|
export * from './analytic-source';
|
|
4
|
-
export * from './breakdown-items';
|
|
5
|
-
export * from './date-filter';
|
|
6
3
|
export * from './extra-condition';
|
|
7
4
|
export * from './field-filters';
|
|
8
5
|
export * from './field-operators';
|
package/dist/esm/gemxql.js
CHANGED
|
@@ -1,63 +1,10 @@
|
|
|
1
|
-
import { useQuery } from '@tanstack/react-query';
|
|
2
1
|
import dayjs from 'dayjs';
|
|
3
2
|
import quarterOfYear from 'dayjs/plugin/quarterOfYear.js';
|
|
4
3
|
import timezone from 'dayjs/plugin/timezone.js';
|
|
5
4
|
import utc from 'dayjs/plugin/utc.js';
|
|
5
|
+
import { useQuery } from '@tanstack/react-query';
|
|
6
6
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
7
7
|
|
|
8
|
-
const ColumnSelectFragmentDoc = `
|
|
9
|
-
fragment ColumnSelect on Column {
|
|
10
|
-
dataType
|
|
11
|
-
displayName
|
|
12
|
-
name
|
|
13
|
-
}
|
|
14
|
-
`;
|
|
15
|
-
const TableDataSelectFragmentDoc = `
|
|
16
|
-
fragment TableDataSelect on TableData {
|
|
17
|
-
columns {
|
|
18
|
-
...ColumnSelect
|
|
19
|
-
}
|
|
20
|
-
rows
|
|
21
|
-
}
|
|
22
|
-
`;
|
|
23
|
-
const GemXqlResultSelectFragmentDoc = `
|
|
24
|
-
fragment GemXQLResultSelect on GemxQLResult {
|
|
25
|
-
tableData {
|
|
26
|
-
...TableDataSelect
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
`;
|
|
30
|
-
|
|
31
|
-
const GemxQlDocument = `
|
|
32
|
-
query GemxQL($input: String!) {
|
|
33
|
-
gemxQLQuery(query: $input) {
|
|
34
|
-
...GemXQLResultSelect
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
${GemXqlResultSelectFragmentDoc}
|
|
38
|
-
${TableDataSelectFragmentDoc}
|
|
39
|
-
${ColumnSelectFragmentDoc}`;
|
|
40
|
-
|
|
41
|
-
const useCustomGemXQlQuery = (variables, fetcher, options) => {
|
|
42
|
-
return useQuery({
|
|
43
|
-
queryKey: ['GemXQlCustom', variables],
|
|
44
|
-
queryFn: fetcher(GemxQlDocument, variables),
|
|
45
|
-
...options,
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
useCustomGemXQlQuery.getKey = (variables) => ['GemXQlCustom', variables];
|
|
49
|
-
|
|
50
|
-
const useGemxQlNamedQuery = ({ name, variables, fetcher }, options) => {
|
|
51
|
-
const document = GemxQlDocument.replace(/query\s+GemxQL\b/, `query ${name}`);
|
|
52
|
-
return useQuery({
|
|
53
|
-
queryKey: [name, variables],
|
|
54
|
-
queryFn: fetcher(document, variables),
|
|
55
|
-
retry: 0,
|
|
56
|
-
...options,
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
useGemxQlNamedQuery.getKey = (name, variables) => [name, variables];
|
|
60
|
-
|
|
61
8
|
const NONE_VALUE = 'None';
|
|
62
9
|
const PLACEHOLDER_VALUE = '-';
|
|
63
10
|
|
|
@@ -94,42 +41,12 @@ var EAnalyticColumnKey;
|
|
|
94
41
|
EAnalyticColumnKey["TRAFFIC_SOURCE_ITEMS"] = "traffic_source_items";
|
|
95
42
|
})(EAnalyticColumnKey || (EAnalyticColumnKey = {}));
|
|
96
43
|
|
|
97
|
-
var EAnalyticMode;
|
|
98
|
-
(function (EAnalyticMode) {
|
|
99
|
-
EAnalyticMode["ALL_SESSION"] = "ALL_SESSION";
|
|
100
|
-
EAnalyticMode["FIRST_SESSION"] = "FIRST_SESSION";
|
|
101
|
-
EAnalyticMode["PAGE_ONLY"] = "PAGE_ONLY";
|
|
102
|
-
})(EAnalyticMode || (EAnalyticMode = {}));
|
|
103
|
-
|
|
104
44
|
var EAnalyticSource;
|
|
105
45
|
(function (EAnalyticSource) {
|
|
106
46
|
EAnalyticSource["SESSIONS"] = "sessions";
|
|
107
47
|
EAnalyticSource["SALES"] = "sales";
|
|
108
48
|
})(EAnalyticSource || (EAnalyticSource = {}));
|
|
109
49
|
|
|
110
|
-
var EVisitorType;
|
|
111
|
-
(function (EVisitorType) {
|
|
112
|
-
EVisitorType["NEW"] = "new";
|
|
113
|
-
EVisitorType["RETURNING"] = "returning";
|
|
114
|
-
})(EVisitorType || (EVisitorType = {}));
|
|
115
|
-
var EDeviceType;
|
|
116
|
-
(function (EDeviceType) {
|
|
117
|
-
EDeviceType["DESKTOP"] = "desktop";
|
|
118
|
-
EDeviceType["MOBILE"] = "mobile";
|
|
119
|
-
EDeviceType["TABLET"] = "tablet";
|
|
120
|
-
})(EDeviceType || (EDeviceType = {}));
|
|
121
|
-
var ETrafficSourceType;
|
|
122
|
-
(function (ETrafficSourceType) {
|
|
123
|
-
ETrafficSourceType["DIRECT"] = "direct";
|
|
124
|
-
ETrafficSourceType["EMAIL"] = "email";
|
|
125
|
-
ETrafficSourceType["REFERRAL"] = "referral";
|
|
126
|
-
ETrafficSourceType["ORGANIC_SOCIAL"] = "organic-social";
|
|
127
|
-
ETrafficSourceType["ORGANIC_SEARCH"] = "organic-search";
|
|
128
|
-
ETrafficSourceType["PAID_SOCIAL"] = "paid-social";
|
|
129
|
-
ETrafficSourceType["PAID_SEARCH"] = "paid-search";
|
|
130
|
-
ETrafficSourceType["SMS"] = "sms";
|
|
131
|
-
})(ETrafficSourceType || (ETrafficSourceType = {}));
|
|
132
|
-
|
|
133
50
|
var EComparisonOperator;
|
|
134
51
|
(function (EComparisonOperator) {
|
|
135
52
|
EComparisonOperator["EQ"] = "=";
|
|
@@ -569,6 +486,9 @@ const trimDecimalZeros = (number) => {
|
|
|
569
486
|
const cleanDecimal = (number, decimals = DEFAULT_DECIMALS) => {
|
|
570
487
|
return trimDecimalZeros(number.toFixed(decimals));
|
|
571
488
|
};
|
|
489
|
+
const numberWithCommas = (x) => {
|
|
490
|
+
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
491
|
+
};
|
|
572
492
|
|
|
573
493
|
/**
|
|
574
494
|
* Utility function to calculate percentage and format it.
|
|
@@ -611,6 +531,72 @@ const dayjsTz = (date) => {
|
|
|
611
531
|
return dayjs(date).tz(tz);
|
|
612
532
|
};
|
|
613
533
|
|
|
534
|
+
var AnalyticInterval;
|
|
535
|
+
(function (AnalyticInterval) {
|
|
536
|
+
AnalyticInterval["DAY"] = "DAY";
|
|
537
|
+
AnalyticInterval["HOUR"] = "HOUR";
|
|
538
|
+
AnalyticInterval["MONTH"] = "MONTH";
|
|
539
|
+
AnalyticInterval["QUARTER"] = "QUARTER";
|
|
540
|
+
AnalyticInterval["WEEK"] = "WEEK";
|
|
541
|
+
AnalyticInterval["YEAR"] = "YEAR";
|
|
542
|
+
})(AnalyticInterval || (AnalyticInterval = {}));
|
|
543
|
+
const SECONDS_IN_MINUTE = 60;
|
|
544
|
+
const SECONDS_IN_HOUR = SECONDS_IN_MINUTE * SECONDS_IN_MINUTE;
|
|
545
|
+
const getTimeDurationLabel = (valueInSeconds) => {
|
|
546
|
+
let data = valueInSeconds;
|
|
547
|
+
if (!Number.isFinite(valueInSeconds) || valueInSeconds == null) {
|
|
548
|
+
data = 0;
|
|
549
|
+
}
|
|
550
|
+
const fixedValue = cleanDecimal(data);
|
|
551
|
+
if (data >= SECONDS_IN_HOUR) {
|
|
552
|
+
const hours = Math.floor(data / SECONDS_IN_HOUR);
|
|
553
|
+
const minutes = Math.floor((data % SECONDS_IN_HOUR) / SECONDS_IN_MINUTE);
|
|
554
|
+
const seconds = Math.floor(data % SECONDS_IN_MINUTE);
|
|
555
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
556
|
+
}
|
|
557
|
+
else if (data >= SECONDS_IN_MINUTE) {
|
|
558
|
+
const minutes = Math.floor(data / SECONDS_IN_MINUTE);
|
|
559
|
+
const seconds = Math.floor(data % SECONDS_IN_MINUTE);
|
|
560
|
+
return `${minutes}m ${seconds}s`;
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
return `${fixedValue}s`;
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
const getFormattedByInterval = (value, interval, options) => {
|
|
567
|
+
if (!value)
|
|
568
|
+
return '';
|
|
569
|
+
const optionFormat = options?.isExpandDetail
|
|
570
|
+
? {
|
|
571
|
+
formatHouse: 'MMM D, h:mm A',
|
|
572
|
+
formatDay: 'MMM D, YYYY',
|
|
573
|
+
formatMonth: 'MMM YYYY',
|
|
574
|
+
formatYear: 'MMM YYYY',
|
|
575
|
+
}
|
|
576
|
+
: {
|
|
577
|
+
formatHouse: 'h A',
|
|
578
|
+
formatDay: 'MMM D',
|
|
579
|
+
formatMonth: 'MMM YYYY',
|
|
580
|
+
formatYear: 'YYYY',
|
|
581
|
+
};
|
|
582
|
+
switch (interval) {
|
|
583
|
+
case AnalyticInterval.HOUR:
|
|
584
|
+
return dayjsTz(value).format(optionFormat.formatHouse);
|
|
585
|
+
case AnalyticInterval.DAY:
|
|
586
|
+
case AnalyticInterval.WEEK:
|
|
587
|
+
return dayjsTz(value).format(optionFormat.formatDay);
|
|
588
|
+
case AnalyticInterval.MONTH:
|
|
589
|
+
return dayjsTz(value).format(optionFormat.formatMonth);
|
|
590
|
+
case AnalyticInterval.QUARTER: {
|
|
591
|
+
const d = dayjsTz(value);
|
|
592
|
+
return `Q${d.quarter()} ${d.format('YYYY')}`;
|
|
593
|
+
}
|
|
594
|
+
case AnalyticInterval.YEAR:
|
|
595
|
+
return dayjsTz(value).format(optionFormat.formatYear);
|
|
596
|
+
}
|
|
597
|
+
return dayjsTz(value).format(optionFormat.formatMonth);
|
|
598
|
+
};
|
|
599
|
+
|
|
614
600
|
const toDate = (value) => (typeof value === 'string' ? dayjsTz(value) : value);
|
|
615
601
|
const isMidnight = (date) => date.hour() === 0 && date.minute() === 0;
|
|
616
602
|
const formatDateForQuery = (date, isEndDay = false) => {
|
|
@@ -768,75 +754,6 @@ const extractColumnTypes = (response) => {
|
|
|
768
754
|
return columnTypes;
|
|
769
755
|
};
|
|
770
756
|
|
|
771
|
-
var AnalyticInterval;
|
|
772
|
-
(function (AnalyticInterval) {
|
|
773
|
-
AnalyticInterval["DAY"] = "DAY";
|
|
774
|
-
AnalyticInterval["HOUR"] = "HOUR";
|
|
775
|
-
AnalyticInterval["MONTH"] = "MONTH";
|
|
776
|
-
AnalyticInterval["QUARTER"] = "QUARTER";
|
|
777
|
-
AnalyticInterval["WEEK"] = "WEEK";
|
|
778
|
-
AnalyticInterval["YEAR"] = "YEAR";
|
|
779
|
-
})(AnalyticInterval || (AnalyticInterval = {}));
|
|
780
|
-
function numberWithCommas(x) {
|
|
781
|
-
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
782
|
-
}
|
|
783
|
-
const SECONDS_IN_MINUTE = 60;
|
|
784
|
-
const SECONDS_IN_HOUR = SECONDS_IN_MINUTE * SECONDS_IN_MINUTE;
|
|
785
|
-
const getTimeDurationLabel = (valueInSeconds) => {
|
|
786
|
-
let data = valueInSeconds;
|
|
787
|
-
if (!Number.isFinite(valueInSeconds) || valueInSeconds == null) {
|
|
788
|
-
data = 0;
|
|
789
|
-
}
|
|
790
|
-
const fixedValue = cleanDecimal(data);
|
|
791
|
-
if (data >= SECONDS_IN_HOUR) {
|
|
792
|
-
const hours = Math.floor(data / SECONDS_IN_HOUR);
|
|
793
|
-
const minutes = Math.floor((data % SECONDS_IN_HOUR) / SECONDS_IN_MINUTE);
|
|
794
|
-
const seconds = Math.floor(data % SECONDS_IN_MINUTE);
|
|
795
|
-
return `${hours}h ${minutes}m ${seconds}s`;
|
|
796
|
-
}
|
|
797
|
-
else if (data >= SECONDS_IN_MINUTE) {
|
|
798
|
-
const minutes = Math.floor(data / SECONDS_IN_MINUTE);
|
|
799
|
-
const seconds = Math.floor(data % SECONDS_IN_MINUTE);
|
|
800
|
-
return `${minutes}m ${seconds}s`;
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
return `${fixedValue}s`;
|
|
804
|
-
}
|
|
805
|
-
};
|
|
806
|
-
const getFormattedByInterval = (value, interval, options) => {
|
|
807
|
-
if (!value)
|
|
808
|
-
return '';
|
|
809
|
-
const optionFormat = options?.isExpandDetail
|
|
810
|
-
? {
|
|
811
|
-
formatHouse: 'MMM D, h:mm A',
|
|
812
|
-
formatDay: 'MMM D, YYYY',
|
|
813
|
-
formatMonth: 'MMM YYYY',
|
|
814
|
-
formatYear: 'MMM YYYY',
|
|
815
|
-
}
|
|
816
|
-
: {
|
|
817
|
-
formatHouse: 'h A',
|
|
818
|
-
formatDay: 'MMM D',
|
|
819
|
-
formatMonth: 'MMM YYYY',
|
|
820
|
-
formatYear: 'YYYY',
|
|
821
|
-
};
|
|
822
|
-
switch (interval) {
|
|
823
|
-
case AnalyticInterval.HOUR:
|
|
824
|
-
return dayjsTz(value).format(optionFormat.formatHouse);
|
|
825
|
-
case AnalyticInterval.DAY:
|
|
826
|
-
case AnalyticInterval.WEEK:
|
|
827
|
-
return dayjsTz(value).format(optionFormat.formatDay);
|
|
828
|
-
case AnalyticInterval.MONTH:
|
|
829
|
-
return dayjsTz(value).format(optionFormat.formatMonth);
|
|
830
|
-
case AnalyticInterval.QUARTER: {
|
|
831
|
-
const d = dayjsTz(value);
|
|
832
|
-
return `Q${d.quarter()} ${d.format('YYYY')}`;
|
|
833
|
-
}
|
|
834
|
-
case AnalyticInterval.YEAR:
|
|
835
|
-
return dayjsTz(value).format(optionFormat.formatYear);
|
|
836
|
-
}
|
|
837
|
-
return dayjsTz(value).format(optionFormat.formatMonth);
|
|
838
|
-
};
|
|
839
|
-
|
|
840
757
|
const formatAnalyticDate = (dateString) => {
|
|
841
758
|
if (!dateString)
|
|
842
759
|
return 'None';
|
|
@@ -977,6 +894,59 @@ const createNumericRowReader = (row, mode = ERowReaderMode.DEFAULT) => (key) =>
|
|
|
977
894
|
return 0;
|
|
978
895
|
};
|
|
979
896
|
|
|
897
|
+
const ColumnSelectFragmentDoc = `
|
|
898
|
+
fragment ColumnSelect on Column {
|
|
899
|
+
dataType
|
|
900
|
+
displayName
|
|
901
|
+
name
|
|
902
|
+
}
|
|
903
|
+
`;
|
|
904
|
+
const TableDataSelectFragmentDoc = `
|
|
905
|
+
fragment TableDataSelect on TableData {
|
|
906
|
+
columns {
|
|
907
|
+
...ColumnSelect
|
|
908
|
+
}
|
|
909
|
+
rows
|
|
910
|
+
}
|
|
911
|
+
`;
|
|
912
|
+
const GemXqlResultSelectFragmentDoc = `
|
|
913
|
+
fragment GemXQLResultSelect on GemxQLResult {
|
|
914
|
+
tableData {
|
|
915
|
+
...TableDataSelect
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
`;
|
|
919
|
+
|
|
920
|
+
const GemxQlDocument = `
|
|
921
|
+
query GemxQL($input: String!) {
|
|
922
|
+
gemxQLQuery(query: $input) {
|
|
923
|
+
...GemXQLResultSelect
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
${GemXqlResultSelectFragmentDoc}
|
|
927
|
+
${TableDataSelectFragmentDoc}
|
|
928
|
+
${ColumnSelectFragmentDoc}`;
|
|
929
|
+
|
|
930
|
+
const useCustomGemXQlQuery = (variables, fetcher, options) => {
|
|
931
|
+
return useQuery({
|
|
932
|
+
queryKey: ['GemXQlCustom', variables],
|
|
933
|
+
queryFn: fetcher(GemxQlDocument, variables),
|
|
934
|
+
...options,
|
|
935
|
+
});
|
|
936
|
+
};
|
|
937
|
+
useCustomGemXQlQuery.getKey = (variables) => ['GemXQlCustom', variables];
|
|
938
|
+
|
|
939
|
+
const useGemxQlNamedQuery = ({ name, variables, fetcher }, options) => {
|
|
940
|
+
const document = GemxQlDocument.replace(/query\s+GemxQL\b/, `query ${name}`);
|
|
941
|
+
return useQuery({
|
|
942
|
+
queryKey: [name, variables],
|
|
943
|
+
queryFn: fetcher(document, variables),
|
|
944
|
+
retry: 0,
|
|
945
|
+
...options,
|
|
946
|
+
});
|
|
947
|
+
};
|
|
948
|
+
useGemxQlNamedQuery.getKey = (name, variables) => [name, variables];
|
|
949
|
+
|
|
980
950
|
const useAnalyticData = (getTextPrice) => {
|
|
981
951
|
const formatData = ({ value, formatter, name }) => {
|
|
982
952
|
return formatAnalyticData({ value, formatter, getTextPrice, name });
|
|
@@ -1033,4 +1003,4 @@ const useGemXQlPagination = ({ resetKey, itemsPerPage, }) => {
|
|
|
1033
1003
|
return { currentPage: effectivePage, offset, buildPagination };
|
|
1034
1004
|
};
|
|
1035
1005
|
|
|
1036
|
-
export {
|
|
1006
|
+
export { CLAUSE_KEYWORDS, CLAUSE_KEYWORD_BOUNDARY, COMPARE_PREFIX, COMPARE_SUFFIX, COMPARE_TOTALS_SUFFIX, ColumnSelectFragmentDoc, DATE_QUERY_FORMAT, DEFAULT_QUERY_LIMIT, EAnalyticColumnKey, EAnalyticDataType, EAnalyticSource, EComparisonOperator, EFilterField, EGroupOperator, EGroupWithClause, EOperatorField, EOrderDirectionType, EPageDimension, EPageField, EPageMetric, ERowReaderMode, ETimeDimension, GPaginationDirection, GemXqlResultSelectFragmentDoc, GemxQlDocument, NONE_VALUE, OPERATOR_IS, OPERATOR_IS_ONE_OF, PLACEHOLDER_VALUE, ROW_READER_MODE_CONFIG, TOTALS_SUFFIX, TableDataSelectFragmentDoc, build$a as buildConditionQuery, buildExtraCondition, buildExtraConditions, build$9 as buildFromQuery, buildGemXQlQuery, build$8 as buildGroupQuery, build$7 as buildLimitQuery, build$6 as buildModeQuery, build$5 as buildOffsetQuery, build$4 as buildOrderByQuery, build$3 as buildShowQuery, build$2 as buildTimeQuery, build$1 as buildTimeSeriesQuery, build as buildTimezoneQuery, buildVersionIdCondition, createNumericRowReader, extractColumnTypes, extractQueryColumns, extractQueryRows, filterConfigs, formatAnalyticData, formatAnalyticDate, generateFilterConditions, getComparisonKey, getComparisonTotalsKey, getFirstMetricInOrderBy, getTimeDimensionByDate, getTotalsKey, hasMetricData, isValidQueryInput, parseBreakdownItems, parse$b as parseConditionQuery, parse$a as parseFromQuery, parse as parseGemXQlQuery, parse$9 as parseGroupQuery, parseJsonArray, parseJsonObject, parse$8 as parseLimitQuery, parse$7 as parseModeQuery, parse$6 as parseOffsetQuery, parse$5 as parseOrderByQuery, parsePageItems, parse$4 as parseShowQuery, parse$3 as parseTimeQuery, parse$2 as parseTimeSeriesQuery, parse$1 as parseTimezoneQuery, readNumeric, useAnalyticData, useCustomGemXQlQuery, useGemXQlPagination, useGemxQlNamedQuery };
|