autoql-fe-utils 1.11.13 → 1.11.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +30 -19
- package/dist/index.d.ts +30 -19
- package/dist/index.global.js +248 -85
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +252 -85
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +250 -85
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1126,6 +1126,14 @@ var AGG_TYPES = {
|
|
|
1126
1126
|
fn: max,
|
|
1127
1127
|
sqlFn: (columnName) => `max(${columnName})`
|
|
1128
1128
|
}),
|
|
1129
|
+
MEDIAN: new AggType({
|
|
1130
|
+
type: "MEDIAN" /* MEDIAN */,
|
|
1131
|
+
displayName: "Median",
|
|
1132
|
+
tooltip: "<strong>Median:</strong> The median (middle) value will be shown for all data points with same label.",
|
|
1133
|
+
// symbol: 'Median',
|
|
1134
|
+
icon: "median",
|
|
1135
|
+
fn: median
|
|
1136
|
+
}),
|
|
1129
1137
|
COUNT: new AggType({
|
|
1130
1138
|
type: "COUNT" /* COUNT */,
|
|
1131
1139
|
displayName: "Count",
|
|
@@ -1152,14 +1160,6 @@ var AGG_TYPES = {
|
|
|
1152
1160
|
},
|
|
1153
1161
|
sqlFn: (columnName) => `count(distinct ${columnName})`
|
|
1154
1162
|
}),
|
|
1155
|
-
MEDIAN: new AggType({
|
|
1156
|
-
type: "MEDIAN" /* MEDIAN */,
|
|
1157
|
-
displayName: "Median",
|
|
1158
|
-
tooltip: "The median (middle) value will be shown for all data points with same label.",
|
|
1159
|
-
// symbol: 'Median',
|
|
1160
|
-
icon: "median",
|
|
1161
|
-
fn: median
|
|
1162
|
-
}),
|
|
1163
1163
|
STD_DEV: new AggType({
|
|
1164
1164
|
type: "STD_DEV" /* STD_DEV */,
|
|
1165
1165
|
displayName: "Std Dev",
|
|
@@ -1791,8 +1791,15 @@ var getDateNoQuotes = (date) => {
|
|
|
1791
1791
|
return date.replace(/\'/g, "");
|
|
1792
1792
|
};
|
|
1793
1793
|
var isISODate = (str) => {
|
|
1794
|
+
if (!str) {
|
|
1795
|
+
return false;
|
|
1796
|
+
}
|
|
1794
1797
|
var dateString = str;
|
|
1795
1798
|
dateString = getDateNoQuotes(dateString);
|
|
1799
|
+
dateString = dateString.trim();
|
|
1800
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(dateString)) {
|
|
1801
|
+
return false;
|
|
1802
|
+
}
|
|
1796
1803
|
if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,3})?$/.test(dateString)) {
|
|
1797
1804
|
return true;
|
|
1798
1805
|
}
|
|
@@ -2503,6 +2510,41 @@ var removeElementAtIndex = (array, index) => {
|
|
|
2503
2510
|
return array.slice(0, index).concat(array.slice(index + 1));
|
|
2504
2511
|
};
|
|
2505
2512
|
|
|
2513
|
+
// src/safeRegex.ts
|
|
2514
|
+
var MAX_PATTERN_LENGTH = Number(process.env.REGEXP_GUARD_MAX_LEN) || 2e3;
|
|
2515
|
+
function isSimpleLiteral(pattern) {
|
|
2516
|
+
return typeof pattern === "string" && /^[A-Za-z0-9 _\-\.,:\/]+$/.test(pattern);
|
|
2517
|
+
}
|
|
2518
|
+
function escapeRegExp(str) {
|
|
2519
|
+
return String(str).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
2520
|
+
}
|
|
2521
|
+
function compileSafeRegex(pattern, flags = "") {
|
|
2522
|
+
if (typeof pattern !== "string") return null;
|
|
2523
|
+
if (pattern.length > MAX_PATTERN_LENGTH) return null;
|
|
2524
|
+
try {
|
|
2525
|
+
return new RegExp(pattern, flags);
|
|
2526
|
+
} catch (e) {
|
|
2527
|
+
return null;
|
|
2528
|
+
}
|
|
2529
|
+
}
|
|
2530
|
+
function safeTest(pattern, input, flags = "") {
|
|
2531
|
+
if (pattern == null || input == null) return false;
|
|
2532
|
+
const strInput = String(input);
|
|
2533
|
+
const re2 = compileSafeRegex(String(pattern), flags);
|
|
2534
|
+
if (re2) {
|
|
2535
|
+
try {
|
|
2536
|
+
return re2.test(strInput);
|
|
2537
|
+
} catch (e) {
|
|
2538
|
+
return false;
|
|
2539
|
+
}
|
|
2540
|
+
}
|
|
2541
|
+
if (isSimpleLiteral(pattern)) {
|
|
2542
|
+
const needle = String(pattern);
|
|
2543
|
+
return flags.includes("i") ? strInput.toLowerCase().includes(needle.toLowerCase()) : strInput.includes(needle);
|
|
2544
|
+
}
|
|
2545
|
+
return false;
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2506
2548
|
// src/HelperFns/filterEngine.ts
|
|
2507
2549
|
var FilterOperatorEnum = /* @__PURE__ */ ((FilterOperatorEnum2) => {
|
|
2508
2550
|
FilterOperatorEnum2["LIKE"] = "like";
|
|
@@ -2551,8 +2593,7 @@ var lessThanEqMatcher = (cell, cond) => Number(cell) <= Number(cond.value);
|
|
|
2551
2593
|
var greaterThanMatcher = (cell, cond) => Number(cell) > Number(cond.value);
|
|
2552
2594
|
var greaterThanEqMatcher = (cell, cond) => Number(cell) >= Number(cond.value);
|
|
2553
2595
|
var regexMatcher = (cell, cond) => {
|
|
2554
|
-
|
|
2555
|
-
return reg.test(String(cell));
|
|
2596
|
+
return safeTest(cond.value, cell);
|
|
2556
2597
|
};
|
|
2557
2598
|
var betweenMatcher = (cell, cond) => {
|
|
2558
2599
|
if (cell == null) return false;
|
|
@@ -2608,9 +2649,6 @@ var FILTER_TYPES = ["string", "number", "date", "boolean"];
|
|
|
2608
2649
|
function isValidFilterType(t) {
|
|
2609
2650
|
return FILTER_TYPES.includes(t);
|
|
2610
2651
|
}
|
|
2611
|
-
function escapeRegExp(str) {
|
|
2612
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
2613
|
-
}
|
|
2614
2652
|
function parseLocaleNumber(value, locale2) {
|
|
2615
2653
|
var _a, _b;
|
|
2616
2654
|
if (typeof value === "number") return value;
|
|
@@ -2622,10 +2660,20 @@ function parseLocaleNumber(value, locale2) {
|
|
|
2622
2660
|
const group = (_a = parts.find((p) => p.type === "group")) == null ? void 0 : _a.value;
|
|
2623
2661
|
const decimal = (_b = parts.find((p) => p.type === "decimal")) == null ? void 0 : _b.value;
|
|
2624
2662
|
if (group) {
|
|
2625
|
-
|
|
2663
|
+
const grpRe = compileSafeRegex(escapeRegExp(group), "g");
|
|
2664
|
+
if (grpRe) {
|
|
2665
|
+
str = str.replace(grpRe, "");
|
|
2666
|
+
} else {
|
|
2667
|
+
str = str.split(group).join("");
|
|
2668
|
+
}
|
|
2626
2669
|
}
|
|
2627
2670
|
if (decimal && decimal !== ".") {
|
|
2628
|
-
|
|
2671
|
+
const decRe = compileSafeRegex(escapeRegExp(decimal), "g");
|
|
2672
|
+
if (decRe) {
|
|
2673
|
+
str = str.replace(decRe, ".");
|
|
2674
|
+
} else {
|
|
2675
|
+
str = str.split(decimal).join(".");
|
|
2676
|
+
}
|
|
2629
2677
|
}
|
|
2630
2678
|
} catch (e) {
|
|
2631
2679
|
str = str.replace(/[,']/g, "");
|
|
@@ -2646,7 +2694,9 @@ function parseFilter(raw, type, defaultOperator = "like" /* LIKE */) {
|
|
|
2646
2694
|
const trimmed = raw.trim();
|
|
2647
2695
|
if (trimmed.length === 0) return { operator: defaultOperator, value: "", type };
|
|
2648
2696
|
const opToken = `${"between" /* BETWEEN */}|[<>!=]=?|not_like`;
|
|
2649
|
-
const
|
|
2697
|
+
const opPattern = `^(${opToken})\\s*(.*)$`;
|
|
2698
|
+
const opRe = compileSafeRegex(opPattern, "i");
|
|
2699
|
+
const opMatch = opRe ? opRe.exec(trimmed) : null;
|
|
2650
2700
|
if (opMatch) {
|
|
2651
2701
|
let op = String((_a = opMatch[1]) != null ? _a : "").toLowerCase();
|
|
2652
2702
|
const rest = (_b = opMatch[2]) != null ? _b : "";
|
|
@@ -3774,6 +3824,16 @@ var isColumnIndexConfigValid = ({ response, columnIndexConfig, columns, displayT
|
|
|
3774
3824
|
columnIndexConfig.numberColumnIndices2 = numberColumnIndices2;
|
|
3775
3825
|
columnIndexConfig.numberColumnIndex2 = numberColumnIndex2;
|
|
3776
3826
|
}
|
|
3827
|
+
if (usePivotData && isNumber(columnIndexConfig.legendColumnIndex) && isNumber(columnIndexConfig.numberColumnIndex) && columnIndexConfig.legendColumnIndex === columnIndexConfig.numberColumnIndex) {
|
|
3828
|
+
console.debug(
|
|
3829
|
+
"Table config invalid: legendColumnIndex and numberColumnIndex are the same.",
|
|
3830
|
+
{
|
|
3831
|
+
legendColumnIndex: columnIndexConfig.legendColumnIndex,
|
|
3832
|
+
numberColumnIndex: columnIndexConfig.numberColumnIndex
|
|
3833
|
+
}
|
|
3834
|
+
);
|
|
3835
|
+
return false;
|
|
3836
|
+
}
|
|
3777
3837
|
return true;
|
|
3778
3838
|
} catch (error) {
|
|
3779
3839
|
console.debug("Saved table config was not valid for response:", error == null ? void 0 : error.message);
|
|
@@ -5529,16 +5589,16 @@ var LIGHT_THEME = {
|
|
|
5529
5589
|
var DARK_THEME = {
|
|
5530
5590
|
"accent-color": "#193a48",
|
|
5531
5591
|
"accent-color-secondary": "#1ea0d8",
|
|
5532
|
-
"background-color-primary": "#
|
|
5533
|
-
"background-color-secondary": "#
|
|
5592
|
+
"background-color-primary": "#15191c",
|
|
5593
|
+
"background-color-secondary": "#1d222b",
|
|
5534
5594
|
"background-color-tertiary": "#292929",
|
|
5535
5595
|
"background-color-switch-input": "#252525",
|
|
5536
5596
|
"background-color-switch-thumb": "#ececec",
|
|
5537
5597
|
"background-color-checkbox": "#292929",
|
|
5538
5598
|
"background-color-disabled": "#5d6167",
|
|
5539
5599
|
"background-color-disabled-dark": "#857d83",
|
|
5540
|
-
"table-border-color": "#
|
|
5541
|
-
"border-color": "#
|
|
5600
|
+
"table-border-color": "#2c2e32",
|
|
5601
|
+
"border-color": "#43464b",
|
|
5542
5602
|
"hover-color": "#4a4f56",
|
|
5543
5603
|
"text-color-primary": "#ececec",
|
|
5544
5604
|
"text-color-secondary": "#bababa",
|
|
@@ -9684,6 +9744,33 @@ var UNAUTHENTICATED_ERROR = "Uh oh.. It looks like you don't have access to this
|
|
|
9684
9744
|
var REQUEST_CANCELLED_ERROR = "Request cancelled";
|
|
9685
9745
|
var QUERY_TIMEOUT_ERROR = "Database Timeout Error: Your query has exceeded the time limit. To receive a response, try narrowing your query down to a specific time range (e.g., today, this week, this month), or contact your database administrator.";
|
|
9686
9746
|
|
|
9747
|
+
// src/Api/axiosUtils.ts
|
|
9748
|
+
var createRequestController = () => {
|
|
9749
|
+
if (typeof AbortController !== "undefined") return new AbortController();
|
|
9750
|
+
return { abort: () => {
|
|
9751
|
+
}, signal: void 0 };
|
|
9752
|
+
};
|
|
9753
|
+
var attachCancelToConfig = (config = {}, cancelToken) => {
|
|
9754
|
+
if (!cancelToken) return config;
|
|
9755
|
+
if (typeof AbortController !== "undefined" && cancelToken instanceof AbortController)
|
|
9756
|
+
return { ...config, signal: cancelToken.signal };
|
|
9757
|
+
if (typeof AbortSignal !== "undefined" && cancelToken instanceof AbortSignal)
|
|
9758
|
+
return { ...config, signal: cancelToken };
|
|
9759
|
+
if (cancelToken && cancelToken.constructor && cancelToken.constructor.name === "AbortSignal")
|
|
9760
|
+
return { ...config, signal: cancelToken };
|
|
9761
|
+
if (cancelToken && cancelToken.promise && typeof cancelToken.promise.then === "function") {
|
|
9762
|
+
try {
|
|
9763
|
+
const controller = new AbortController();
|
|
9764
|
+
cancelToken.promise.then(() => controller.abort());
|
|
9765
|
+
return { ...config, signal: controller.signal, cancelToken };
|
|
9766
|
+
} catch (e) {
|
|
9767
|
+
return { ...config, cancelToken };
|
|
9768
|
+
}
|
|
9769
|
+
}
|
|
9770
|
+
return { ...config, cancelToken };
|
|
9771
|
+
};
|
|
9772
|
+
var axiosUtils_default = attachCancelToConfig;
|
|
9773
|
+
|
|
9687
9774
|
// src/Api/dataExplorerService.ts
|
|
9688
9775
|
import axios2 from "axios";
|
|
9689
9776
|
|
|
@@ -9766,7 +9853,10 @@ var transformQueryResponseColumns = (response, addedColumns) => {
|
|
|
9766
9853
|
const drilldownGroupby = getDrilldownGroupby(response, col);
|
|
9767
9854
|
let additional = false;
|
|
9768
9855
|
let is_timestamp = false;
|
|
9769
|
-
if (addedColumns == null ? void 0 : addedColumns.find((select5) =>
|
|
9856
|
+
if (addedColumns == null ? void 0 : addedColumns.find((select5) => {
|
|
9857
|
+
var _a3;
|
|
9858
|
+
return select5.columns.includes((_a3 = col.alt_name) != null ? _a3 : col.name);
|
|
9859
|
+
})) {
|
|
9770
9860
|
additional = true;
|
|
9771
9861
|
}
|
|
9772
9862
|
if (isColumnDateType(col) && isISODate(dataSample)) {
|
|
@@ -9840,7 +9930,7 @@ var transformUserSelection = (userSelection) => {
|
|
|
9840
9930
|
};
|
|
9841
9931
|
var isError500Type = (referenceId) => {
|
|
9842
9932
|
try {
|
|
9843
|
-
const parsedReferenceId = referenceId
|
|
9933
|
+
const parsedReferenceId = typeof referenceId === "string" ? referenceId.split(".") : String(referenceId != null ? referenceId : "").split(".");
|
|
9844
9934
|
const errorCode = Number(parsedReferenceId == null ? void 0 : parsedReferenceId[2]);
|
|
9845
9935
|
if (errorCode >= 500 && errorCode < 600) {
|
|
9846
9936
|
return true;
|
|
@@ -9883,12 +9973,14 @@ var fetchSuggestions = ({
|
|
|
9883
9973
|
if (queryId) {
|
|
9884
9974
|
relatedQueriesUrl = `${relatedQueriesUrl}&query_id=${queryId}`;
|
|
9885
9975
|
}
|
|
9886
|
-
const config =
|
|
9887
|
-
|
|
9888
|
-
|
|
9976
|
+
const config = axiosUtils_default(
|
|
9977
|
+
{
|
|
9978
|
+
headers: {
|
|
9979
|
+
Authorization: `Bearer ${token}`
|
|
9980
|
+
}
|
|
9889
9981
|
},
|
|
9890
9982
|
cancelToken
|
|
9891
|
-
|
|
9983
|
+
);
|
|
9892
9984
|
return axios.get(relatedQueriesUrl, config).then((response) => Promise.resolve(response)).catch((error) => Promise.reject(error == null ? void 0 : error.response));
|
|
9893
9985
|
};
|
|
9894
9986
|
var runQueryNewPage = ({
|
|
@@ -9909,12 +10001,14 @@ var runQueryNewPage = ({
|
|
|
9909
10001
|
const data = {
|
|
9910
10002
|
date_format: "ISO8601"
|
|
9911
10003
|
};
|
|
9912
|
-
const config =
|
|
9913
|
-
|
|
9914
|
-
|
|
10004
|
+
const config = axiosUtils_default(
|
|
10005
|
+
{
|
|
10006
|
+
headers: {
|
|
10007
|
+
Authorization: `Bearer ${token}`
|
|
10008
|
+
}
|
|
9915
10009
|
},
|
|
9916
10010
|
cancelToken
|
|
9917
|
-
|
|
10011
|
+
);
|
|
9918
10012
|
return axios.post(url, data, config).then((response) => {
|
|
9919
10013
|
var _a, _b;
|
|
9920
10014
|
if (response.data && typeof response.data === "string") {
|
|
@@ -9976,12 +10070,14 @@ var runQueryOnly = ({
|
|
|
9976
10070
|
console.error("authentication invalid for request");
|
|
9977
10071
|
return Promise.reject({ error: "Unauthenticated" /* UNAUTHENTICATED */ });
|
|
9978
10072
|
}
|
|
9979
|
-
const config =
|
|
9980
|
-
|
|
9981
|
-
|
|
10073
|
+
const config = axiosUtils_default(
|
|
10074
|
+
{
|
|
10075
|
+
headers: {
|
|
10076
|
+
Authorization: `Bearer ${token}`
|
|
10077
|
+
}
|
|
9982
10078
|
},
|
|
9983
10079
|
cancelToken
|
|
9984
|
-
|
|
10080
|
+
);
|
|
9985
10081
|
return axios.post(url, data, config).then((response) => {
|
|
9986
10082
|
var _a;
|
|
9987
10083
|
if (!((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data)) {
|
|
@@ -10014,12 +10110,14 @@ var runQueryValidation = ({
|
|
|
10014
10110
|
return Promise.reject(new Error("Unauthenticated" /* UNAUTHENTICATED */));
|
|
10015
10111
|
}
|
|
10016
10112
|
const url = `${domain}/autoql/api/v1/query/validate?text=${encodeURIComponent(text)}&key=${apiKey}`;
|
|
10017
|
-
const config =
|
|
10018
|
-
|
|
10019
|
-
|
|
10113
|
+
const config = axiosUtils_default(
|
|
10114
|
+
{
|
|
10115
|
+
headers: {
|
|
10116
|
+
Authorization: `Bearer ${token}`
|
|
10117
|
+
}
|
|
10020
10118
|
},
|
|
10021
10119
|
cancelToken
|
|
10022
|
-
|
|
10120
|
+
);
|
|
10023
10121
|
return axios.get(url, config).then((response) => Promise.resolve(response)).catch((error) => formatErrorResponse(error));
|
|
10024
10122
|
};
|
|
10025
10123
|
var runQuery = async ({
|
|
@@ -10213,12 +10311,14 @@ var runDrilldown = ({
|
|
|
10213
10311
|
additional_selects: newColumns,
|
|
10214
10312
|
display_overrides: displayOverrides
|
|
10215
10313
|
};
|
|
10216
|
-
const config =
|
|
10217
|
-
|
|
10218
|
-
|
|
10314
|
+
const config = axiosUtils_default(
|
|
10315
|
+
{
|
|
10316
|
+
headers: {
|
|
10317
|
+
Authorization: `Bearer ${token}`
|
|
10318
|
+
}
|
|
10219
10319
|
},
|
|
10220
10320
|
cancelToken
|
|
10221
|
-
|
|
10321
|
+
);
|
|
10222
10322
|
const url = `${domain}/autoql/api/v1/query/${queryID}/drilldown?key=${apiKey}`;
|
|
10223
10323
|
return axios.post(url, requestData, config).then((response) => transformQueryResponse(response, queryID, true)).catch(formatErrorResponse);
|
|
10224
10324
|
};
|
|
@@ -10293,12 +10393,14 @@ var fetchVLAutocomplete = ({
|
|
|
10293
10393
|
if (filter) {
|
|
10294
10394
|
url = `${url}&filter=${filter}`;
|
|
10295
10395
|
}
|
|
10296
|
-
const config =
|
|
10297
|
-
|
|
10298
|
-
|
|
10396
|
+
const config = axiosUtils_default(
|
|
10397
|
+
{
|
|
10398
|
+
headers: {
|
|
10399
|
+
Authorization: `Bearer ${token}`
|
|
10400
|
+
}
|
|
10299
10401
|
},
|
|
10300
10402
|
cancelToken
|
|
10301
|
-
|
|
10403
|
+
);
|
|
10302
10404
|
return axios.get(url, config).then((response) => Promise.resolve(response)).catch((error) => {
|
|
10303
10405
|
var _a2;
|
|
10304
10406
|
if ((error == null ? void 0 : error.message) === REQUEST_CANCELLED_ERROR) {
|
|
@@ -10468,7 +10570,8 @@ var reportProblem = ({
|
|
|
10468
10570
|
queryId,
|
|
10469
10571
|
domain,
|
|
10470
10572
|
apiKey,
|
|
10471
|
-
token
|
|
10573
|
+
token,
|
|
10574
|
+
isCorrect = false
|
|
10472
10575
|
} = {}) => {
|
|
10473
10576
|
if (!queryId) {
|
|
10474
10577
|
return Promise.reject(new Error("No query ID supplied" /* NO_QUERY_ID_SUPPLIED */));
|
|
@@ -10483,7 +10586,7 @@ var reportProblem = ({
|
|
|
10483
10586
|
}
|
|
10484
10587
|
};
|
|
10485
10588
|
const data = {
|
|
10486
|
-
is_correct:
|
|
10589
|
+
is_correct: isCorrect,
|
|
10487
10590
|
message
|
|
10488
10591
|
};
|
|
10489
10592
|
return axios.put(url, data, config).then((response) => Promise.resolve(response)).catch((error) => {
|
|
@@ -10522,8 +10625,12 @@ var isAggSeed = (subject) => {
|
|
|
10522
10625
|
};
|
|
10523
10626
|
var getSampleQueryRegex = (suggestionValues) => {
|
|
10524
10627
|
const valueArray = Object.keys(suggestionValues);
|
|
10525
|
-
const valueRegexArray = valueArray.map((value) =>
|
|
10526
|
-
|
|
10628
|
+
const valueRegexArray = valueArray.map((value) => {
|
|
10629
|
+
const esc = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10630
|
+
return `\\b${esc}\\b`;
|
|
10631
|
+
});
|
|
10632
|
+
const pattern = valueRegexArray.join("|");
|
|
10633
|
+
const valueRegex = compileSafeRegex(pattern, "gm");
|
|
10527
10634
|
return valueRegex;
|
|
10528
10635
|
};
|
|
10529
10636
|
var getSampleQueryText = (query, values = {}) => {
|
|
@@ -10537,9 +10644,14 @@ var getSampleQueryText = (query, values = {}) => {
|
|
|
10537
10644
|
var _a;
|
|
10538
10645
|
const chunk = values[valueKey];
|
|
10539
10646
|
const replacementText = (_a = chunk == null ? void 0 : chunk.replacement) == null ? void 0 : _a.format_txt;
|
|
10540
|
-
const
|
|
10647
|
+
const pattern = `\\b${valueKey}\\b`;
|
|
10648
|
+
const valueKeyRegex = compileSafeRegex(pattern);
|
|
10541
10649
|
if (replacementText) {
|
|
10542
|
-
|
|
10650
|
+
if (valueKeyRegex) {
|
|
10651
|
+
queryText = queryText.replace(valueKeyRegex, replacementText);
|
|
10652
|
+
} else if (isSimpleLiteral(valueKey)) {
|
|
10653
|
+
queryText = String(queryText).split(valueKey).join(replacementText);
|
|
10654
|
+
}
|
|
10543
10655
|
}
|
|
10544
10656
|
});
|
|
10545
10657
|
return queryText;
|
|
@@ -10631,6 +10743,7 @@ var getSampleQueryReplacementType = (key, replacement) => {
|
|
|
10631
10743
|
}
|
|
10632
10744
|
};
|
|
10633
10745
|
var getSampleQueryChunks = (query, values = {}) => {
|
|
10746
|
+
var _a, _b;
|
|
10634
10747
|
try {
|
|
10635
10748
|
const valueArray = Object.keys(values);
|
|
10636
10749
|
if (!(valueArray == null ? void 0 : valueArray.length)) {
|
|
@@ -10642,22 +10755,57 @@ var getSampleQueryChunks = (query, values = {}) => {
|
|
|
10642
10755
|
}
|
|
10643
10756
|
];
|
|
10644
10757
|
}
|
|
10645
|
-
const valueRegexArray = valueArray.map((value) => `(\\b${value}\\b)`);
|
|
10646
|
-
const valueRegex = new RegExp(valueRegexArray.join("|"), "gm");
|
|
10647
10758
|
let splitStrArray = [query];
|
|
10648
|
-
if (valueArray
|
|
10649
|
-
|
|
10759
|
+
if (valueArray.length < 500) {
|
|
10760
|
+
const valueRegexArray = valueArray.map((value) => {
|
|
10761
|
+
const esc = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10762
|
+
return `(\\b${esc}\\b)`;
|
|
10763
|
+
});
|
|
10764
|
+
const pattern = valueRegexArray.join("|");
|
|
10765
|
+
const valueRegex = compileSafeRegex(pattern, "gm");
|
|
10766
|
+
if (valueRegex) {
|
|
10767
|
+
splitStrArray = query.split(valueRegex);
|
|
10768
|
+
}
|
|
10769
|
+
}
|
|
10770
|
+
if (splitStrArray.length === 1) {
|
|
10771
|
+
const result = [];
|
|
10772
|
+
let remaining = query;
|
|
10773
|
+
const sortedValues = [...valueArray].sort((a, b) => b.length - a.length);
|
|
10774
|
+
for (const value of sortedValues) {
|
|
10775
|
+
const escaped = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10776
|
+
const re2 = compileSafeRegex(`\\b${escaped}\\b`, "i");
|
|
10777
|
+
let match = null;
|
|
10778
|
+
let matchedText = "";
|
|
10779
|
+
if (re2) {
|
|
10780
|
+
match = re2.exec(remaining);
|
|
10781
|
+
matchedText = (_a = match == null ? void 0 : match[0]) != null ? _a : "";
|
|
10782
|
+
} else if (isSimpleLiteral(value)) {
|
|
10783
|
+
const idx = remaining.toLowerCase().indexOf(String(value).toLowerCase());
|
|
10784
|
+
if (idx >= 0) {
|
|
10785
|
+
match = [String(value)];
|
|
10786
|
+
matchedText = remaining.substr(idx, String(value).length);
|
|
10787
|
+
match.index = idx;
|
|
10788
|
+
}
|
|
10789
|
+
}
|
|
10790
|
+
if (match) {
|
|
10791
|
+
const matchIndex = (_b = match.index) != null ? _b : 0;
|
|
10792
|
+
result.push(remaining.substring(0, matchIndex), matchedText || match[0]);
|
|
10793
|
+
remaining = remaining.substring(matchIndex + (matchedText || match[0]).length);
|
|
10794
|
+
}
|
|
10795
|
+
}
|
|
10796
|
+
if (remaining) result.push(remaining);
|
|
10797
|
+
splitStrArray = result;
|
|
10650
10798
|
}
|
|
10651
10799
|
const chunkedSuggestion = [];
|
|
10652
10800
|
splitStrArray.forEach((key) => {
|
|
10653
|
-
var
|
|
10654
|
-
const replacement = (
|
|
10801
|
+
var _a2, _b2;
|
|
10802
|
+
const replacement = (_a2 = values[key]) == null ? void 0 : _a2.replacement;
|
|
10655
10803
|
const type = getSampleQueryReplacementType(key, replacement);
|
|
10656
10804
|
const name = key == null ? void 0 : key.trim();
|
|
10657
10805
|
if (!type || !name) {
|
|
10658
10806
|
return;
|
|
10659
10807
|
}
|
|
10660
|
-
let value = (
|
|
10808
|
+
let value = (_b2 = replacement == null ? void 0 : replacement.format_txt) == null ? void 0 : _b2.trim();
|
|
10661
10809
|
if (type == "TEXT" /* SAMPLE_QUERY_TEXT_TYPE */) {
|
|
10662
10810
|
value = name;
|
|
10663
10811
|
}
|
|
@@ -10710,12 +10858,14 @@ var fetchDataExplorerAutocomplete = ({
|
|
|
10710
10858
|
if (timezone2) {
|
|
10711
10859
|
url = `${url}&time_zone=${timezone2}`;
|
|
10712
10860
|
}
|
|
10713
|
-
const config =
|
|
10714
|
-
|
|
10715
|
-
|
|
10861
|
+
const config = axiosUtils_default(
|
|
10862
|
+
{
|
|
10863
|
+
headers: {
|
|
10864
|
+
Authorization: `Bearer ${token}`
|
|
10865
|
+
}
|
|
10716
10866
|
},
|
|
10717
10867
|
cancelToken
|
|
10718
|
-
|
|
10868
|
+
);
|
|
10719
10869
|
return axios2.get(url, config).then((response) => {
|
|
10720
10870
|
return transformDataExplorerAutocompleteResponse(response);
|
|
10721
10871
|
}).catch((error) => {
|
|
@@ -10729,10 +10879,11 @@ var fetchDataExplorerAutocomplete = ({
|
|
|
10729
10879
|
});
|
|
10730
10880
|
};
|
|
10731
10881
|
var transformVLForDataExplorerSuggestions = (vl) => {
|
|
10882
|
+
var _a;
|
|
10732
10883
|
return {
|
|
10733
10884
|
name: vl.keyword,
|
|
10734
10885
|
alias_name: vl.show_message,
|
|
10735
|
-
column_name: vl.column_name
|
|
10886
|
+
column_name: (_a = vl.column_name) != null ? _a : ""
|
|
10736
10887
|
};
|
|
10737
10888
|
};
|
|
10738
10889
|
var fetchDataExplorerSampleQueries = async ({
|
|
@@ -10750,12 +10901,14 @@ var fetchDataExplorerSampleQueries = async ({
|
|
|
10750
10901
|
context,
|
|
10751
10902
|
columns
|
|
10752
10903
|
};
|
|
10753
|
-
const config =
|
|
10754
|
-
|
|
10755
|
-
|
|
10904
|
+
const config = axiosUtils_default(
|
|
10905
|
+
{
|
|
10906
|
+
headers: {
|
|
10907
|
+
Authorization: `Bearer ${token}`
|
|
10908
|
+
}
|
|
10756
10909
|
},
|
|
10757
10910
|
cancelToken
|
|
10758
|
-
|
|
10911
|
+
);
|
|
10759
10912
|
return axios2.post(url, data, config).then((response) => {
|
|
10760
10913
|
var _a, _b, _c, _d;
|
|
10761
10914
|
if ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.suggestions) {
|
|
@@ -10821,7 +10974,13 @@ var fetchDataExplorerSuggestions = async ({
|
|
|
10821
10974
|
return Promise.reject((_a2 = error == null ? void 0 : error.response) == null ? void 0 : _a2.data);
|
|
10822
10975
|
});
|
|
10823
10976
|
};
|
|
10824
|
-
var fetchSubjectListV2 = ({
|
|
10977
|
+
var fetchSubjectListV2 = ({
|
|
10978
|
+
domain,
|
|
10979
|
+
apiKey,
|
|
10980
|
+
token,
|
|
10981
|
+
valueLabel,
|
|
10982
|
+
cancelToken
|
|
10983
|
+
}) => {
|
|
10825
10984
|
if (!token || !domain || !apiKey) {
|
|
10826
10985
|
return Promise.reject(new Error("Unauthenticated"));
|
|
10827
10986
|
}
|
|
@@ -10829,12 +10988,14 @@ var fetchSubjectListV2 = ({ domain, apiKey, token, valueLabel, cancelToken }) =>
|
|
|
10829
10988
|
if (valueLabel) {
|
|
10830
10989
|
url += `&value_label=${valueLabel}`;
|
|
10831
10990
|
}
|
|
10832
|
-
const config =
|
|
10833
|
-
|
|
10834
|
-
|
|
10991
|
+
const config = axiosUtils_default(
|
|
10992
|
+
{
|
|
10993
|
+
headers: {
|
|
10994
|
+
Authorization: `Bearer ${token}`
|
|
10995
|
+
}
|
|
10835
10996
|
},
|
|
10836
10997
|
cancelToken
|
|
10837
|
-
|
|
10998
|
+
);
|
|
10838
10999
|
return axios2.get(url, config).then((response) => {
|
|
10839
11000
|
var _a, _b;
|
|
10840
11001
|
let subjectList = [];
|
|
@@ -10896,12 +11057,14 @@ var fetchDataPreview = ({
|
|
|
10896
11057
|
return Promise.reject(new Error("Unauthenticated"));
|
|
10897
11058
|
}
|
|
10898
11059
|
const url = `${domain}/autoql/api/v1/query/preview?key=${apiKey}`;
|
|
10899
|
-
const config =
|
|
10900
|
-
|
|
10901
|
-
|
|
11060
|
+
const config = axiosUtils_default(
|
|
11061
|
+
{
|
|
11062
|
+
headers: {
|
|
11063
|
+
Authorization: `Bearer ${token}`
|
|
11064
|
+
}
|
|
10902
11065
|
},
|
|
10903
11066
|
cancelToken
|
|
10904
|
-
|
|
11067
|
+
);
|
|
10905
11068
|
const data = {
|
|
10906
11069
|
subject,
|
|
10907
11070
|
page_size: numRows,
|
|
@@ -11761,8 +11924,8 @@ function formatDecimal_default(x) {
|
|
|
11761
11924
|
return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10);
|
|
11762
11925
|
}
|
|
11763
11926
|
function formatDecimalParts(x, p) {
|
|
11764
|
-
if ((
|
|
11765
|
-
var i, coefficient = x.slice(0, i);
|
|
11927
|
+
if (!isFinite(x) || x === 0) return null;
|
|
11928
|
+
var i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e"), coefficient = x.slice(0, i);
|
|
11766
11929
|
return [
|
|
11767
11930
|
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
|
|
11768
11931
|
+x.slice(i + 1)
|
|
@@ -11856,7 +12019,7 @@ function formatTrim_default(s) {
|
|
|
11856
12019
|
var prefixExponent;
|
|
11857
12020
|
function formatPrefixAuto_default(x, p) {
|
|
11858
12021
|
var d = formatDecimalParts(x, p);
|
|
11859
|
-
if (!d) return
|
|
12022
|
+
if (!d) return prefixExponent = void 0, x.toPrecision(p);
|
|
11860
12023
|
var coefficient = d[0], exponent = d[1], i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n = coefficient.length;
|
|
11861
12024
|
return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0];
|
|
11862
12025
|
}
|
|
@@ -11896,13 +12059,13 @@ var map = Array.prototype.map;
|
|
|
11896
12059
|
var prefixes = ["y", "z", "a", "f", "p", "n", "\xB5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
|
|
11897
12060
|
function locale_default(locale2) {
|
|
11898
12061
|
var group = locale2.grouping === void 0 || locale2.thousands === void 0 ? identity_default : formatGroup_default(map.call(locale2.grouping, Number), locale2.thousands + ""), currencyPrefix = locale2.currency === void 0 ? "" : locale2.currency[0] + "", currencySuffix = locale2.currency === void 0 ? "" : locale2.currency[1] + "", decimal = locale2.decimal === void 0 ? "." : locale2.decimal + "", numerals = locale2.numerals === void 0 ? identity_default : formatNumerals_default(map.call(locale2.numerals, String)), percent = locale2.percent === void 0 ? "%" : locale2.percent + "", minus = locale2.minus === void 0 ? "\u2212" : locale2.minus + "", nan = locale2.nan === void 0 ? "NaN" : locale2.nan + "";
|
|
11899
|
-
function newFormat(specifier) {
|
|
12062
|
+
function newFormat(specifier, options) {
|
|
11900
12063
|
specifier = formatSpecifier(specifier);
|
|
11901
12064
|
var fill = specifier.fill, align = specifier.align, sign = specifier.sign, symbol2 = specifier.symbol, zero = specifier.zero, width = specifier.width, comma = specifier.comma, precision = specifier.precision, trim = specifier.trim, type = specifier.type;
|
|
11902
12065
|
if (type === "n") comma = true, type = "g";
|
|
11903
12066
|
else if (!formatTypes_default[type]) precision === void 0 && (precision = 12), trim = true, type = "g";
|
|
11904
12067
|
if (zero || fill === "0" && align === "=") zero = true, fill = "0", align = "=";
|
|
11905
|
-
var prefix = symbol2 === "$" ? currencyPrefix : symbol2 === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", suffix = symbol2 === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";
|
|
12068
|
+
var prefix = (options && options.prefix !== void 0 ? options.prefix : "") + (symbol2 === "$" ? currencyPrefix : symbol2 === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : ""), suffix = (symbol2 === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "") + (options && options.suffix !== void 0 ? options.suffix : "");
|
|
11906
12069
|
var formatType = formatTypes_default[type], maybeSuffix = /[defgprs%]/.test(type);
|
|
11907
12070
|
precision = precision === void 0 ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));
|
|
11908
12071
|
function format2(value) {
|
|
@@ -11917,7 +12080,7 @@ function locale_default(locale2) {
|
|
|
11917
12080
|
if (trim) value = formatTrim_default(value);
|
|
11918
12081
|
if (valueNegative && +value === 0 && sign !== "+") valueNegative = false;
|
|
11919
12082
|
valuePrefix = (valueNegative ? sign === "(" ? sign : minus : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
|
|
11920
|
-
valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
|
|
12083
|
+
valueSuffix = (type === "s" && !isNaN(value) && prefixExponent !== void 0 ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
|
|
11921
12084
|
if (maybeSuffix) {
|
|
11922
12085
|
i = -1, n = value.length;
|
|
11923
12086
|
while (++i < n) {
|
|
@@ -11954,9 +12117,9 @@ function locale_default(locale2) {
|
|
|
11954
12117
|
return format2;
|
|
11955
12118
|
}
|
|
11956
12119
|
function formatPrefix2(specifier, value) {
|
|
11957
|
-
var
|
|
12120
|
+
var e = Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3, k = Math.pow(10, -e), f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier), { suffix: prefixes[8 + e / 3] });
|
|
11958
12121
|
return function(value2) {
|
|
11959
|
-
return f(k * value2)
|
|
12122
|
+
return f(k * value2);
|
|
11960
12123
|
};
|
|
11961
12124
|
}
|
|
11962
12125
|
return {
|
|
@@ -12525,6 +12688,7 @@ export {
|
|
|
12525
12688
|
areAllColumnsHidden,
|
|
12526
12689
|
areSomeColumnsHidden,
|
|
12527
12690
|
assignLabelToManagementDataAlert,
|
|
12691
|
+
attachCancelToConfig,
|
|
12528
12692
|
authenticationDefault,
|
|
12529
12693
|
autoQLConfigDefault,
|
|
12530
12694
|
bezierCommand,
|
|
@@ -12543,6 +12707,7 @@ export {
|
|
|
12543
12707
|
createManagementDataAlert,
|
|
12544
12708
|
createMutatorFn,
|
|
12545
12709
|
createNotificationChannel,
|
|
12710
|
+
createRequestController,
|
|
12546
12711
|
createSVGPath,
|
|
12547
12712
|
currentEventLoopEnd,
|
|
12548
12713
|
dataConfigDefault,
|