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.js
CHANGED
|
@@ -813,6 +813,7 @@ __export(index_exports, {
|
|
|
813
813
|
areAllColumnsHidden: () => areAllColumnsHidden,
|
|
814
814
|
areSomeColumnsHidden: () => areSomeColumnsHidden,
|
|
815
815
|
assignLabelToManagementDataAlert: () => assignLabelToManagementDataAlert,
|
|
816
|
+
attachCancelToConfig: () => attachCancelToConfig,
|
|
816
817
|
authenticationDefault: () => authenticationDefault,
|
|
817
818
|
autoQLConfigDefault: () => autoQLConfigDefault,
|
|
818
819
|
bezierCommand: () => bezierCommand,
|
|
@@ -831,6 +832,7 @@ __export(index_exports, {
|
|
|
831
832
|
createManagementDataAlert: () => createManagementDataAlert,
|
|
832
833
|
createMutatorFn: () => createMutatorFn,
|
|
833
834
|
createNotificationChannel: () => createNotificationChannel,
|
|
835
|
+
createRequestController: () => createRequestController,
|
|
834
836
|
createSVGPath: () => createSVGPath,
|
|
835
837
|
currentEventLoopEnd: () => currentEventLoopEnd,
|
|
836
838
|
dataConfigDefault: () => dataConfigDefault,
|
|
@@ -1644,6 +1646,14 @@ var AGG_TYPES = {
|
|
|
1644
1646
|
fn: import_d3_array2.max,
|
|
1645
1647
|
sqlFn: (columnName) => `max(${columnName})`
|
|
1646
1648
|
}),
|
|
1649
|
+
MEDIAN: new AggType({
|
|
1650
|
+
type: "MEDIAN" /* MEDIAN */,
|
|
1651
|
+
displayName: "Median",
|
|
1652
|
+
tooltip: "<strong>Median:</strong> The median (middle) value will be shown for all data points with same label.",
|
|
1653
|
+
// symbol: 'Median',
|
|
1654
|
+
icon: "median",
|
|
1655
|
+
fn: import_d3_array2.median
|
|
1656
|
+
}),
|
|
1647
1657
|
COUNT: new AggType({
|
|
1648
1658
|
type: "COUNT" /* COUNT */,
|
|
1649
1659
|
displayName: "Count",
|
|
@@ -1670,14 +1680,6 @@ var AGG_TYPES = {
|
|
|
1670
1680
|
},
|
|
1671
1681
|
sqlFn: (columnName) => `count(distinct ${columnName})`
|
|
1672
1682
|
}),
|
|
1673
|
-
MEDIAN: new AggType({
|
|
1674
|
-
type: "MEDIAN" /* MEDIAN */,
|
|
1675
|
-
displayName: "Median",
|
|
1676
|
-
tooltip: "The median (middle) value will be shown for all data points with same label.",
|
|
1677
|
-
// symbol: 'Median',
|
|
1678
|
-
icon: "median",
|
|
1679
|
-
fn: import_d3_array2.median
|
|
1680
|
-
}),
|
|
1681
1683
|
STD_DEV: new AggType({
|
|
1682
1684
|
type: "STD_DEV" /* STD_DEV */,
|
|
1683
1685
|
displayName: "Std Dev",
|
|
@@ -2309,8 +2311,15 @@ var getDateNoQuotes = (date) => {
|
|
|
2309
2311
|
return date.replace(/\'/g, "");
|
|
2310
2312
|
};
|
|
2311
2313
|
var isISODate = (str) => {
|
|
2314
|
+
if (!str) {
|
|
2315
|
+
return false;
|
|
2316
|
+
}
|
|
2312
2317
|
var dateString = str;
|
|
2313
2318
|
dateString = getDateNoQuotes(dateString);
|
|
2319
|
+
dateString = dateString.trim();
|
|
2320
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(dateString)) {
|
|
2321
|
+
return false;
|
|
2322
|
+
}
|
|
2314
2323
|
if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,3})?$/.test(dateString)) {
|
|
2315
2324
|
return true;
|
|
2316
2325
|
}
|
|
@@ -3021,6 +3030,41 @@ var removeElementAtIndex = (array, index) => {
|
|
|
3021
3030
|
return array.slice(0, index).concat(array.slice(index + 1));
|
|
3022
3031
|
};
|
|
3023
3032
|
|
|
3033
|
+
// src/safeRegex.ts
|
|
3034
|
+
var MAX_PATTERN_LENGTH = Number(process.env.REGEXP_GUARD_MAX_LEN) || 2e3;
|
|
3035
|
+
function isSimpleLiteral(pattern) {
|
|
3036
|
+
return typeof pattern === "string" && /^[A-Za-z0-9 _\-\.,:\/]+$/.test(pattern);
|
|
3037
|
+
}
|
|
3038
|
+
function escapeRegExp(str) {
|
|
3039
|
+
return String(str).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3040
|
+
}
|
|
3041
|
+
function compileSafeRegex(pattern, flags = "") {
|
|
3042
|
+
if (typeof pattern !== "string") return null;
|
|
3043
|
+
if (pattern.length > MAX_PATTERN_LENGTH) return null;
|
|
3044
|
+
try {
|
|
3045
|
+
return new RegExp(pattern, flags);
|
|
3046
|
+
} catch (e) {
|
|
3047
|
+
return null;
|
|
3048
|
+
}
|
|
3049
|
+
}
|
|
3050
|
+
function safeTest(pattern, input, flags = "") {
|
|
3051
|
+
if (pattern == null || input == null) return false;
|
|
3052
|
+
const strInput = String(input);
|
|
3053
|
+
const re2 = compileSafeRegex(String(pattern), flags);
|
|
3054
|
+
if (re2) {
|
|
3055
|
+
try {
|
|
3056
|
+
return re2.test(strInput);
|
|
3057
|
+
} catch (e) {
|
|
3058
|
+
return false;
|
|
3059
|
+
}
|
|
3060
|
+
}
|
|
3061
|
+
if (isSimpleLiteral(pattern)) {
|
|
3062
|
+
const needle = String(pattern);
|
|
3063
|
+
return flags.includes("i") ? strInput.toLowerCase().includes(needle.toLowerCase()) : strInput.includes(needle);
|
|
3064
|
+
}
|
|
3065
|
+
return false;
|
|
3066
|
+
}
|
|
3067
|
+
|
|
3024
3068
|
// src/HelperFns/filterEngine.ts
|
|
3025
3069
|
var FilterOperatorEnum = /* @__PURE__ */ ((FilterOperatorEnum2) => {
|
|
3026
3070
|
FilterOperatorEnum2["LIKE"] = "like";
|
|
@@ -3069,8 +3113,7 @@ var lessThanEqMatcher = (cell, cond) => Number(cell) <= Number(cond.value);
|
|
|
3069
3113
|
var greaterThanMatcher = (cell, cond) => Number(cell) > Number(cond.value);
|
|
3070
3114
|
var greaterThanEqMatcher = (cell, cond) => Number(cell) >= Number(cond.value);
|
|
3071
3115
|
var regexMatcher = (cell, cond) => {
|
|
3072
|
-
|
|
3073
|
-
return reg.test(String(cell));
|
|
3116
|
+
return safeTest(cond.value, cell);
|
|
3074
3117
|
};
|
|
3075
3118
|
var betweenMatcher = (cell, cond) => {
|
|
3076
3119
|
if (cell == null) return false;
|
|
@@ -3126,9 +3169,6 @@ var FILTER_TYPES = ["string", "number", "date", "boolean"];
|
|
|
3126
3169
|
function isValidFilterType(t) {
|
|
3127
3170
|
return FILTER_TYPES.includes(t);
|
|
3128
3171
|
}
|
|
3129
|
-
function escapeRegExp(str) {
|
|
3130
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3131
|
-
}
|
|
3132
3172
|
function parseLocaleNumber(value, locale2) {
|
|
3133
3173
|
var _a, _b;
|
|
3134
3174
|
if (typeof value === "number") return value;
|
|
@@ -3140,10 +3180,20 @@ function parseLocaleNumber(value, locale2) {
|
|
|
3140
3180
|
const group = (_a = parts.find((p) => p.type === "group")) == null ? void 0 : _a.value;
|
|
3141
3181
|
const decimal = (_b = parts.find((p) => p.type === "decimal")) == null ? void 0 : _b.value;
|
|
3142
3182
|
if (group) {
|
|
3143
|
-
|
|
3183
|
+
const grpRe = compileSafeRegex(escapeRegExp(group), "g");
|
|
3184
|
+
if (grpRe) {
|
|
3185
|
+
str = str.replace(grpRe, "");
|
|
3186
|
+
} else {
|
|
3187
|
+
str = str.split(group).join("");
|
|
3188
|
+
}
|
|
3144
3189
|
}
|
|
3145
3190
|
if (decimal && decimal !== ".") {
|
|
3146
|
-
|
|
3191
|
+
const decRe = compileSafeRegex(escapeRegExp(decimal), "g");
|
|
3192
|
+
if (decRe) {
|
|
3193
|
+
str = str.replace(decRe, ".");
|
|
3194
|
+
} else {
|
|
3195
|
+
str = str.split(decimal).join(".");
|
|
3196
|
+
}
|
|
3147
3197
|
}
|
|
3148
3198
|
} catch (e) {
|
|
3149
3199
|
str = str.replace(/[,']/g, "");
|
|
@@ -3164,7 +3214,9 @@ function parseFilter(raw, type, defaultOperator = "like" /* LIKE */) {
|
|
|
3164
3214
|
const trimmed = raw.trim();
|
|
3165
3215
|
if (trimmed.length === 0) return { operator: defaultOperator, value: "", type };
|
|
3166
3216
|
const opToken = `${"between" /* BETWEEN */}|[<>!=]=?|not_like`;
|
|
3167
|
-
const
|
|
3217
|
+
const opPattern = `^(${opToken})\\s*(.*)$`;
|
|
3218
|
+
const opRe = compileSafeRegex(opPattern, "i");
|
|
3219
|
+
const opMatch = opRe ? opRe.exec(trimmed) : null;
|
|
3168
3220
|
if (opMatch) {
|
|
3169
3221
|
let op = String((_a = opMatch[1]) != null ? _a : "").toLowerCase();
|
|
3170
3222
|
const rest = (_b = opMatch[2]) != null ? _b : "";
|
|
@@ -4292,6 +4344,16 @@ var isColumnIndexConfigValid = ({ response, columnIndexConfig, columns, displayT
|
|
|
4292
4344
|
columnIndexConfig.numberColumnIndices2 = numberColumnIndices2;
|
|
4293
4345
|
columnIndexConfig.numberColumnIndex2 = numberColumnIndex2;
|
|
4294
4346
|
}
|
|
4347
|
+
if (usePivotData && isNumber(columnIndexConfig.legendColumnIndex) && isNumber(columnIndexConfig.numberColumnIndex) && columnIndexConfig.legendColumnIndex === columnIndexConfig.numberColumnIndex) {
|
|
4348
|
+
console.debug(
|
|
4349
|
+
"Table config invalid: legendColumnIndex and numberColumnIndex are the same.",
|
|
4350
|
+
{
|
|
4351
|
+
legendColumnIndex: columnIndexConfig.legendColumnIndex,
|
|
4352
|
+
numberColumnIndex: columnIndexConfig.numberColumnIndex
|
|
4353
|
+
}
|
|
4354
|
+
);
|
|
4355
|
+
return false;
|
|
4356
|
+
}
|
|
4295
4357
|
return true;
|
|
4296
4358
|
} catch (error) {
|
|
4297
4359
|
console.debug("Saved table config was not valid for response:", error == null ? void 0 : error.message);
|
|
@@ -6047,16 +6109,16 @@ var LIGHT_THEME = {
|
|
|
6047
6109
|
var DARK_THEME = {
|
|
6048
6110
|
"accent-color": "#193a48",
|
|
6049
6111
|
"accent-color-secondary": "#1ea0d8",
|
|
6050
|
-
"background-color-primary": "#
|
|
6051
|
-
"background-color-secondary": "#
|
|
6112
|
+
"background-color-primary": "#15191c",
|
|
6113
|
+
"background-color-secondary": "#1d222b",
|
|
6052
6114
|
"background-color-tertiary": "#292929",
|
|
6053
6115
|
"background-color-switch-input": "#252525",
|
|
6054
6116
|
"background-color-switch-thumb": "#ececec",
|
|
6055
6117
|
"background-color-checkbox": "#292929",
|
|
6056
6118
|
"background-color-disabled": "#5d6167",
|
|
6057
6119
|
"background-color-disabled-dark": "#857d83",
|
|
6058
|
-
"table-border-color": "#
|
|
6059
|
-
"border-color": "#
|
|
6120
|
+
"table-border-color": "#2c2e32",
|
|
6121
|
+
"border-color": "#43464b",
|
|
6060
6122
|
"hover-color": "#4a4f56",
|
|
6061
6123
|
"text-color-primary": "#ececec",
|
|
6062
6124
|
"text-color-secondary": "#bababa",
|
|
@@ -10202,6 +10264,33 @@ var UNAUTHENTICATED_ERROR = "Uh oh.. It looks like you don't have access to this
|
|
|
10202
10264
|
var REQUEST_CANCELLED_ERROR = "Request cancelled";
|
|
10203
10265
|
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.";
|
|
10204
10266
|
|
|
10267
|
+
// src/Api/axiosUtils.ts
|
|
10268
|
+
var createRequestController = () => {
|
|
10269
|
+
if (typeof AbortController !== "undefined") return new AbortController();
|
|
10270
|
+
return { abort: () => {
|
|
10271
|
+
}, signal: void 0 };
|
|
10272
|
+
};
|
|
10273
|
+
var attachCancelToConfig = (config = {}, cancelToken) => {
|
|
10274
|
+
if (!cancelToken) return config;
|
|
10275
|
+
if (typeof AbortController !== "undefined" && cancelToken instanceof AbortController)
|
|
10276
|
+
return { ...config, signal: cancelToken.signal };
|
|
10277
|
+
if (typeof AbortSignal !== "undefined" && cancelToken instanceof AbortSignal)
|
|
10278
|
+
return { ...config, signal: cancelToken };
|
|
10279
|
+
if (cancelToken && cancelToken.constructor && cancelToken.constructor.name === "AbortSignal")
|
|
10280
|
+
return { ...config, signal: cancelToken };
|
|
10281
|
+
if (cancelToken && cancelToken.promise && typeof cancelToken.promise.then === "function") {
|
|
10282
|
+
try {
|
|
10283
|
+
const controller = new AbortController();
|
|
10284
|
+
cancelToken.promise.then(() => controller.abort());
|
|
10285
|
+
return { ...config, signal: controller.signal, cancelToken };
|
|
10286
|
+
} catch (e) {
|
|
10287
|
+
return { ...config, cancelToken };
|
|
10288
|
+
}
|
|
10289
|
+
}
|
|
10290
|
+
return { ...config, cancelToken };
|
|
10291
|
+
};
|
|
10292
|
+
var axiosUtils_default = attachCancelToConfig;
|
|
10293
|
+
|
|
10205
10294
|
// src/Api/dataExplorerService.ts
|
|
10206
10295
|
var import_axios2 = __toESM(require("axios"));
|
|
10207
10296
|
|
|
@@ -10284,7 +10373,10 @@ var transformQueryResponseColumns = (response, addedColumns) => {
|
|
|
10284
10373
|
const drilldownGroupby = getDrilldownGroupby(response, col);
|
|
10285
10374
|
let additional = false;
|
|
10286
10375
|
let is_timestamp = false;
|
|
10287
|
-
if (addedColumns == null ? void 0 : addedColumns.find((select5) =>
|
|
10376
|
+
if (addedColumns == null ? void 0 : addedColumns.find((select5) => {
|
|
10377
|
+
var _a3;
|
|
10378
|
+
return select5.columns.includes((_a3 = col.alt_name) != null ? _a3 : col.name);
|
|
10379
|
+
})) {
|
|
10288
10380
|
additional = true;
|
|
10289
10381
|
}
|
|
10290
10382
|
if (isColumnDateType(col) && isISODate(dataSample)) {
|
|
@@ -10358,7 +10450,7 @@ var transformUserSelection = (userSelection) => {
|
|
|
10358
10450
|
};
|
|
10359
10451
|
var isError500Type = (referenceId) => {
|
|
10360
10452
|
try {
|
|
10361
|
-
const parsedReferenceId = referenceId
|
|
10453
|
+
const parsedReferenceId = typeof referenceId === "string" ? referenceId.split(".") : String(referenceId != null ? referenceId : "").split(".");
|
|
10362
10454
|
const errorCode = Number(parsedReferenceId == null ? void 0 : parsedReferenceId[2]);
|
|
10363
10455
|
if (errorCode >= 500 && errorCode < 600) {
|
|
10364
10456
|
return true;
|
|
@@ -10401,12 +10493,14 @@ var fetchSuggestions = ({
|
|
|
10401
10493
|
if (queryId) {
|
|
10402
10494
|
relatedQueriesUrl = `${relatedQueriesUrl}&query_id=${queryId}`;
|
|
10403
10495
|
}
|
|
10404
|
-
const config =
|
|
10405
|
-
|
|
10406
|
-
|
|
10496
|
+
const config = axiosUtils_default(
|
|
10497
|
+
{
|
|
10498
|
+
headers: {
|
|
10499
|
+
Authorization: `Bearer ${token}`
|
|
10500
|
+
}
|
|
10407
10501
|
},
|
|
10408
10502
|
cancelToken
|
|
10409
|
-
|
|
10503
|
+
);
|
|
10410
10504
|
return import_axios.default.get(relatedQueriesUrl, config).then((response) => Promise.resolve(response)).catch((error) => Promise.reject(error == null ? void 0 : error.response));
|
|
10411
10505
|
};
|
|
10412
10506
|
var runQueryNewPage = ({
|
|
@@ -10427,12 +10521,14 @@ var runQueryNewPage = ({
|
|
|
10427
10521
|
const data = {
|
|
10428
10522
|
date_format: "ISO8601"
|
|
10429
10523
|
};
|
|
10430
|
-
const config =
|
|
10431
|
-
|
|
10432
|
-
|
|
10524
|
+
const config = axiosUtils_default(
|
|
10525
|
+
{
|
|
10526
|
+
headers: {
|
|
10527
|
+
Authorization: `Bearer ${token}`
|
|
10528
|
+
}
|
|
10433
10529
|
},
|
|
10434
10530
|
cancelToken
|
|
10435
|
-
|
|
10531
|
+
);
|
|
10436
10532
|
return import_axios.default.post(url, data, config).then((response) => {
|
|
10437
10533
|
var _a, _b;
|
|
10438
10534
|
if (response.data && typeof response.data === "string") {
|
|
@@ -10494,12 +10590,14 @@ var runQueryOnly = ({
|
|
|
10494
10590
|
console.error("authentication invalid for request");
|
|
10495
10591
|
return Promise.reject({ error: "Unauthenticated" /* UNAUTHENTICATED */ });
|
|
10496
10592
|
}
|
|
10497
|
-
const config =
|
|
10498
|
-
|
|
10499
|
-
|
|
10593
|
+
const config = axiosUtils_default(
|
|
10594
|
+
{
|
|
10595
|
+
headers: {
|
|
10596
|
+
Authorization: `Bearer ${token}`
|
|
10597
|
+
}
|
|
10500
10598
|
},
|
|
10501
10599
|
cancelToken
|
|
10502
|
-
|
|
10600
|
+
);
|
|
10503
10601
|
return import_axios.default.post(url, data, config).then((response) => {
|
|
10504
10602
|
var _a;
|
|
10505
10603
|
if (!((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data)) {
|
|
@@ -10532,12 +10630,14 @@ var runQueryValidation = ({
|
|
|
10532
10630
|
return Promise.reject(new Error("Unauthenticated" /* UNAUTHENTICATED */));
|
|
10533
10631
|
}
|
|
10534
10632
|
const url = `${domain}/autoql/api/v1/query/validate?text=${encodeURIComponent(text)}&key=${apiKey}`;
|
|
10535
|
-
const config =
|
|
10536
|
-
|
|
10537
|
-
|
|
10633
|
+
const config = axiosUtils_default(
|
|
10634
|
+
{
|
|
10635
|
+
headers: {
|
|
10636
|
+
Authorization: `Bearer ${token}`
|
|
10637
|
+
}
|
|
10538
10638
|
},
|
|
10539
10639
|
cancelToken
|
|
10540
|
-
|
|
10640
|
+
);
|
|
10541
10641
|
return import_axios.default.get(url, config).then((response) => Promise.resolve(response)).catch((error) => formatErrorResponse(error));
|
|
10542
10642
|
};
|
|
10543
10643
|
var runQuery = async ({
|
|
@@ -10731,12 +10831,14 @@ var runDrilldown = ({
|
|
|
10731
10831
|
additional_selects: newColumns,
|
|
10732
10832
|
display_overrides: displayOverrides
|
|
10733
10833
|
};
|
|
10734
|
-
const config =
|
|
10735
|
-
|
|
10736
|
-
|
|
10834
|
+
const config = axiosUtils_default(
|
|
10835
|
+
{
|
|
10836
|
+
headers: {
|
|
10837
|
+
Authorization: `Bearer ${token}`
|
|
10838
|
+
}
|
|
10737
10839
|
},
|
|
10738
10840
|
cancelToken
|
|
10739
|
-
|
|
10841
|
+
);
|
|
10740
10842
|
const url = `${domain}/autoql/api/v1/query/${queryID}/drilldown?key=${apiKey}`;
|
|
10741
10843
|
return import_axios.default.post(url, requestData, config).then((response) => transformQueryResponse(response, queryID, true)).catch(formatErrorResponse);
|
|
10742
10844
|
};
|
|
@@ -10811,12 +10913,14 @@ var fetchVLAutocomplete = ({
|
|
|
10811
10913
|
if (filter) {
|
|
10812
10914
|
url = `${url}&filter=${filter}`;
|
|
10813
10915
|
}
|
|
10814
|
-
const config =
|
|
10815
|
-
|
|
10816
|
-
|
|
10916
|
+
const config = axiosUtils_default(
|
|
10917
|
+
{
|
|
10918
|
+
headers: {
|
|
10919
|
+
Authorization: `Bearer ${token}`
|
|
10920
|
+
}
|
|
10817
10921
|
},
|
|
10818
10922
|
cancelToken
|
|
10819
|
-
|
|
10923
|
+
);
|
|
10820
10924
|
return import_axios.default.get(url, config).then((response) => Promise.resolve(response)).catch((error) => {
|
|
10821
10925
|
var _a2;
|
|
10822
10926
|
if ((error == null ? void 0 : error.message) === REQUEST_CANCELLED_ERROR) {
|
|
@@ -10986,7 +11090,8 @@ var reportProblem = ({
|
|
|
10986
11090
|
queryId,
|
|
10987
11091
|
domain,
|
|
10988
11092
|
apiKey,
|
|
10989
|
-
token
|
|
11093
|
+
token,
|
|
11094
|
+
isCorrect = false
|
|
10990
11095
|
} = {}) => {
|
|
10991
11096
|
if (!queryId) {
|
|
10992
11097
|
return Promise.reject(new Error("No query ID supplied" /* NO_QUERY_ID_SUPPLIED */));
|
|
@@ -11001,7 +11106,7 @@ var reportProblem = ({
|
|
|
11001
11106
|
}
|
|
11002
11107
|
};
|
|
11003
11108
|
const data = {
|
|
11004
|
-
is_correct:
|
|
11109
|
+
is_correct: isCorrect,
|
|
11005
11110
|
message
|
|
11006
11111
|
};
|
|
11007
11112
|
return import_axios.default.put(url, data, config).then((response) => Promise.resolve(response)).catch((error) => {
|
|
@@ -11040,8 +11145,12 @@ var isAggSeed = (subject) => {
|
|
|
11040
11145
|
};
|
|
11041
11146
|
var getSampleQueryRegex = (suggestionValues) => {
|
|
11042
11147
|
const valueArray = Object.keys(suggestionValues);
|
|
11043
|
-
const valueRegexArray = valueArray.map((value) =>
|
|
11044
|
-
|
|
11148
|
+
const valueRegexArray = valueArray.map((value) => {
|
|
11149
|
+
const esc = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
11150
|
+
return `\\b${esc}\\b`;
|
|
11151
|
+
});
|
|
11152
|
+
const pattern = valueRegexArray.join("|");
|
|
11153
|
+
const valueRegex = compileSafeRegex(pattern, "gm");
|
|
11045
11154
|
return valueRegex;
|
|
11046
11155
|
};
|
|
11047
11156
|
var getSampleQueryText = (query, values = {}) => {
|
|
@@ -11055,9 +11164,14 @@ var getSampleQueryText = (query, values = {}) => {
|
|
|
11055
11164
|
var _a;
|
|
11056
11165
|
const chunk = values[valueKey];
|
|
11057
11166
|
const replacementText = (_a = chunk == null ? void 0 : chunk.replacement) == null ? void 0 : _a.format_txt;
|
|
11058
|
-
const
|
|
11167
|
+
const pattern = `\\b${valueKey}\\b`;
|
|
11168
|
+
const valueKeyRegex = compileSafeRegex(pattern);
|
|
11059
11169
|
if (replacementText) {
|
|
11060
|
-
|
|
11170
|
+
if (valueKeyRegex) {
|
|
11171
|
+
queryText = queryText.replace(valueKeyRegex, replacementText);
|
|
11172
|
+
} else if (isSimpleLiteral(valueKey)) {
|
|
11173
|
+
queryText = String(queryText).split(valueKey).join(replacementText);
|
|
11174
|
+
}
|
|
11061
11175
|
}
|
|
11062
11176
|
});
|
|
11063
11177
|
return queryText;
|
|
@@ -11149,6 +11263,7 @@ var getSampleQueryReplacementType = (key, replacement) => {
|
|
|
11149
11263
|
}
|
|
11150
11264
|
};
|
|
11151
11265
|
var getSampleQueryChunks = (query, values = {}) => {
|
|
11266
|
+
var _a, _b;
|
|
11152
11267
|
try {
|
|
11153
11268
|
const valueArray = Object.keys(values);
|
|
11154
11269
|
if (!(valueArray == null ? void 0 : valueArray.length)) {
|
|
@@ -11160,22 +11275,57 @@ var getSampleQueryChunks = (query, values = {}) => {
|
|
|
11160
11275
|
}
|
|
11161
11276
|
];
|
|
11162
11277
|
}
|
|
11163
|
-
const valueRegexArray = valueArray.map((value) => `(\\b${value}\\b)`);
|
|
11164
|
-
const valueRegex = new RegExp(valueRegexArray.join("|"), "gm");
|
|
11165
11278
|
let splitStrArray = [query];
|
|
11166
|
-
if (valueArray
|
|
11167
|
-
|
|
11279
|
+
if (valueArray.length < 500) {
|
|
11280
|
+
const valueRegexArray = valueArray.map((value) => {
|
|
11281
|
+
const esc = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
11282
|
+
return `(\\b${esc}\\b)`;
|
|
11283
|
+
});
|
|
11284
|
+
const pattern = valueRegexArray.join("|");
|
|
11285
|
+
const valueRegex = compileSafeRegex(pattern, "gm");
|
|
11286
|
+
if (valueRegex) {
|
|
11287
|
+
splitStrArray = query.split(valueRegex);
|
|
11288
|
+
}
|
|
11289
|
+
}
|
|
11290
|
+
if (splitStrArray.length === 1) {
|
|
11291
|
+
const result = [];
|
|
11292
|
+
let remaining = query;
|
|
11293
|
+
const sortedValues = [...valueArray].sort((a, b) => b.length - a.length);
|
|
11294
|
+
for (const value of sortedValues) {
|
|
11295
|
+
const escaped = String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
11296
|
+
const re2 = compileSafeRegex(`\\b${escaped}\\b`, "i");
|
|
11297
|
+
let match = null;
|
|
11298
|
+
let matchedText = "";
|
|
11299
|
+
if (re2) {
|
|
11300
|
+
match = re2.exec(remaining);
|
|
11301
|
+
matchedText = (_a = match == null ? void 0 : match[0]) != null ? _a : "";
|
|
11302
|
+
} else if (isSimpleLiteral(value)) {
|
|
11303
|
+
const idx = remaining.toLowerCase().indexOf(String(value).toLowerCase());
|
|
11304
|
+
if (idx >= 0) {
|
|
11305
|
+
match = [String(value)];
|
|
11306
|
+
matchedText = remaining.substr(idx, String(value).length);
|
|
11307
|
+
match.index = idx;
|
|
11308
|
+
}
|
|
11309
|
+
}
|
|
11310
|
+
if (match) {
|
|
11311
|
+
const matchIndex = (_b = match.index) != null ? _b : 0;
|
|
11312
|
+
result.push(remaining.substring(0, matchIndex), matchedText || match[0]);
|
|
11313
|
+
remaining = remaining.substring(matchIndex + (matchedText || match[0]).length);
|
|
11314
|
+
}
|
|
11315
|
+
}
|
|
11316
|
+
if (remaining) result.push(remaining);
|
|
11317
|
+
splitStrArray = result;
|
|
11168
11318
|
}
|
|
11169
11319
|
const chunkedSuggestion = [];
|
|
11170
11320
|
splitStrArray.forEach((key) => {
|
|
11171
|
-
var
|
|
11172
|
-
const replacement = (
|
|
11321
|
+
var _a2, _b2;
|
|
11322
|
+
const replacement = (_a2 = values[key]) == null ? void 0 : _a2.replacement;
|
|
11173
11323
|
const type = getSampleQueryReplacementType(key, replacement);
|
|
11174
11324
|
const name = key == null ? void 0 : key.trim();
|
|
11175
11325
|
if (!type || !name) {
|
|
11176
11326
|
return;
|
|
11177
11327
|
}
|
|
11178
|
-
let value = (
|
|
11328
|
+
let value = (_b2 = replacement == null ? void 0 : replacement.format_txt) == null ? void 0 : _b2.trim();
|
|
11179
11329
|
if (type == "TEXT" /* SAMPLE_QUERY_TEXT_TYPE */) {
|
|
11180
11330
|
value = name;
|
|
11181
11331
|
}
|
|
@@ -11228,12 +11378,14 @@ var fetchDataExplorerAutocomplete = ({
|
|
|
11228
11378
|
if (timezone2) {
|
|
11229
11379
|
url = `${url}&time_zone=${timezone2}`;
|
|
11230
11380
|
}
|
|
11231
|
-
const config =
|
|
11232
|
-
|
|
11233
|
-
|
|
11381
|
+
const config = axiosUtils_default(
|
|
11382
|
+
{
|
|
11383
|
+
headers: {
|
|
11384
|
+
Authorization: `Bearer ${token}`
|
|
11385
|
+
}
|
|
11234
11386
|
},
|
|
11235
11387
|
cancelToken
|
|
11236
|
-
|
|
11388
|
+
);
|
|
11237
11389
|
return import_axios2.default.get(url, config).then((response) => {
|
|
11238
11390
|
return transformDataExplorerAutocompleteResponse(response);
|
|
11239
11391
|
}).catch((error) => {
|
|
@@ -11247,10 +11399,11 @@ var fetchDataExplorerAutocomplete = ({
|
|
|
11247
11399
|
});
|
|
11248
11400
|
};
|
|
11249
11401
|
var transformVLForDataExplorerSuggestions = (vl) => {
|
|
11402
|
+
var _a;
|
|
11250
11403
|
return {
|
|
11251
11404
|
name: vl.keyword,
|
|
11252
11405
|
alias_name: vl.show_message,
|
|
11253
|
-
column_name: vl.column_name
|
|
11406
|
+
column_name: (_a = vl.column_name) != null ? _a : ""
|
|
11254
11407
|
};
|
|
11255
11408
|
};
|
|
11256
11409
|
var fetchDataExplorerSampleQueries = async ({
|
|
@@ -11268,12 +11421,14 @@ var fetchDataExplorerSampleQueries = async ({
|
|
|
11268
11421
|
context,
|
|
11269
11422
|
columns
|
|
11270
11423
|
};
|
|
11271
|
-
const config =
|
|
11272
|
-
|
|
11273
|
-
|
|
11424
|
+
const config = axiosUtils_default(
|
|
11425
|
+
{
|
|
11426
|
+
headers: {
|
|
11427
|
+
Authorization: `Bearer ${token}`
|
|
11428
|
+
}
|
|
11274
11429
|
},
|
|
11275
11430
|
cancelToken
|
|
11276
|
-
|
|
11431
|
+
);
|
|
11277
11432
|
return import_axios2.default.post(url, data, config).then((response) => {
|
|
11278
11433
|
var _a, _b, _c, _d;
|
|
11279
11434
|
if ((_b = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) == null ? void 0 : _b.suggestions) {
|
|
@@ -11339,7 +11494,13 @@ var fetchDataExplorerSuggestions = async ({
|
|
|
11339
11494
|
return Promise.reject((_a2 = error == null ? void 0 : error.response) == null ? void 0 : _a2.data);
|
|
11340
11495
|
});
|
|
11341
11496
|
};
|
|
11342
|
-
var fetchSubjectListV2 = ({
|
|
11497
|
+
var fetchSubjectListV2 = ({
|
|
11498
|
+
domain,
|
|
11499
|
+
apiKey,
|
|
11500
|
+
token,
|
|
11501
|
+
valueLabel,
|
|
11502
|
+
cancelToken
|
|
11503
|
+
}) => {
|
|
11343
11504
|
if (!token || !domain || !apiKey) {
|
|
11344
11505
|
return Promise.reject(new Error("Unauthenticated"));
|
|
11345
11506
|
}
|
|
@@ -11347,12 +11508,14 @@ var fetchSubjectListV2 = ({ domain, apiKey, token, valueLabel, cancelToken }) =>
|
|
|
11347
11508
|
if (valueLabel) {
|
|
11348
11509
|
url += `&value_label=${valueLabel}`;
|
|
11349
11510
|
}
|
|
11350
|
-
const config =
|
|
11351
|
-
|
|
11352
|
-
|
|
11511
|
+
const config = axiosUtils_default(
|
|
11512
|
+
{
|
|
11513
|
+
headers: {
|
|
11514
|
+
Authorization: `Bearer ${token}`
|
|
11515
|
+
}
|
|
11353
11516
|
},
|
|
11354
11517
|
cancelToken
|
|
11355
|
-
|
|
11518
|
+
);
|
|
11356
11519
|
return import_axios2.default.get(url, config).then((response) => {
|
|
11357
11520
|
var _a, _b;
|
|
11358
11521
|
let subjectList = [];
|
|
@@ -11414,12 +11577,14 @@ var fetchDataPreview = ({
|
|
|
11414
11577
|
return Promise.reject(new Error("Unauthenticated"));
|
|
11415
11578
|
}
|
|
11416
11579
|
const url = `${domain}/autoql/api/v1/query/preview?key=${apiKey}`;
|
|
11417
|
-
const config =
|
|
11418
|
-
|
|
11419
|
-
|
|
11580
|
+
const config = axiosUtils_default(
|
|
11581
|
+
{
|
|
11582
|
+
headers: {
|
|
11583
|
+
Authorization: `Bearer ${token}`
|
|
11584
|
+
}
|
|
11420
11585
|
},
|
|
11421
11586
|
cancelToken
|
|
11422
|
-
|
|
11587
|
+
);
|
|
11423
11588
|
const data = {
|
|
11424
11589
|
subject,
|
|
11425
11590
|
page_size: numRows,
|
|
@@ -12279,8 +12444,8 @@ function formatDecimal_default(x) {
|
|
|
12279
12444
|
return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10);
|
|
12280
12445
|
}
|
|
12281
12446
|
function formatDecimalParts(x, p) {
|
|
12282
|
-
if ((
|
|
12283
|
-
var i, coefficient = x.slice(0, i);
|
|
12447
|
+
if (!isFinite(x) || x === 0) return null;
|
|
12448
|
+
var i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e"), coefficient = x.slice(0, i);
|
|
12284
12449
|
return [
|
|
12285
12450
|
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
|
|
12286
12451
|
+x.slice(i + 1)
|
|
@@ -12374,7 +12539,7 @@ function formatTrim_default(s) {
|
|
|
12374
12539
|
var prefixExponent;
|
|
12375
12540
|
function formatPrefixAuto_default(x, p) {
|
|
12376
12541
|
var d = formatDecimalParts(x, p);
|
|
12377
|
-
if (!d) return
|
|
12542
|
+
if (!d) return prefixExponent = void 0, x.toPrecision(p);
|
|
12378
12543
|
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;
|
|
12379
12544
|
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];
|
|
12380
12545
|
}
|
|
@@ -12414,13 +12579,13 @@ var map = Array.prototype.map;
|
|
|
12414
12579
|
var prefixes = ["y", "z", "a", "f", "p", "n", "\xB5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
|
|
12415
12580
|
function locale_default(locale2) {
|
|
12416
12581
|
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 + "";
|
|
12417
|
-
function newFormat(specifier) {
|
|
12582
|
+
function newFormat(specifier, options) {
|
|
12418
12583
|
specifier = formatSpecifier(specifier);
|
|
12419
12584
|
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;
|
|
12420
12585
|
if (type === "n") comma = true, type = "g";
|
|
12421
12586
|
else if (!formatTypes_default[type]) precision === void 0 && (precision = 12), trim = true, type = "g";
|
|
12422
12587
|
if (zero || fill === "0" && align === "=") zero = true, fill = "0", align = "=";
|
|
12423
|
-
var prefix = symbol2 === "$" ? currencyPrefix : symbol2 === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", suffix = symbol2 === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";
|
|
12588
|
+
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 : "");
|
|
12424
12589
|
var formatType = formatTypes_default[type], maybeSuffix = /[defgprs%]/.test(type);
|
|
12425
12590
|
precision = precision === void 0 ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));
|
|
12426
12591
|
function format2(value) {
|
|
@@ -12435,7 +12600,7 @@ function locale_default(locale2) {
|
|
|
12435
12600
|
if (trim) value = formatTrim_default(value);
|
|
12436
12601
|
if (valueNegative && +value === 0 && sign !== "+") valueNegative = false;
|
|
12437
12602
|
valuePrefix = (valueNegative ? sign === "(" ? sign : minus : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
|
|
12438
|
-
valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
|
|
12603
|
+
valueSuffix = (type === "s" && !isNaN(value) && prefixExponent !== void 0 ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
|
|
12439
12604
|
if (maybeSuffix) {
|
|
12440
12605
|
i = -1, n = value.length;
|
|
12441
12606
|
while (++i < n) {
|
|
@@ -12472,9 +12637,9 @@ function locale_default(locale2) {
|
|
|
12472
12637
|
return format2;
|
|
12473
12638
|
}
|
|
12474
12639
|
function formatPrefix2(specifier, value) {
|
|
12475
|
-
var
|
|
12640
|
+
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] });
|
|
12476
12641
|
return function(value2) {
|
|
12477
|
-
return f(k * value2)
|
|
12642
|
+
return f(k * value2);
|
|
12478
12643
|
};
|
|
12479
12644
|
}
|
|
12480
12645
|
return {
|
|
@@ -13044,6 +13209,7 @@ function color() {
|
|
|
13044
13209
|
areAllColumnsHidden,
|
|
13045
13210
|
areSomeColumnsHidden,
|
|
13046
13211
|
assignLabelToManagementDataAlert,
|
|
13212
|
+
attachCancelToConfig,
|
|
13047
13213
|
authenticationDefault,
|
|
13048
13214
|
autoQLConfigDefault,
|
|
13049
13215
|
bezierCommand,
|
|
@@ -13062,6 +13228,7 @@ function color() {
|
|
|
13062
13228
|
createManagementDataAlert,
|
|
13063
13229
|
createMutatorFn,
|
|
13064
13230
|
createNotificationChannel,
|
|
13231
|
+
createRequestController,
|
|
13065
13232
|
createSVGPath,
|
|
13066
13233
|
currentEventLoopEnd,
|
|
13067
13234
|
dataConfigDefault,
|