azure-kusto-data 6.0.1 → 7.0.0-alpha.0
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/src/client.js +34 -41
- package/dist-esm/src/client.js.map +1 -1
- package/dist-esm/src/clientDetails.js +12 -16
- package/dist-esm/src/clientDetails.js.map +1 -1
- package/dist-esm/src/clientRequestProperties.js +8 -11
- package/dist-esm/src/clientRequestProperties.js.map +1 -1
- package/dist-esm/src/cloudSettings.js +9 -13
- package/dist-esm/src/cloudSettings.js.map +1 -1
- package/dist-esm/src/connectionBuilder.browser.js +3 -10
- package/dist-esm/src/connectionBuilder.browser.js.map +1 -1
- package/dist-esm/src/connectionBuilder.js +3 -7
- package/dist-esm/src/connectionBuilder.js.map +1 -1
- package/dist-esm/src/connectionBuilderBase.js +9 -13
- package/dist-esm/src/connectionBuilderBase.js.map +1 -1
- package/dist-esm/src/errors.js +2 -7
- package/dist-esm/src/errors.js.map +1 -1
- package/dist-esm/src/index.js +11 -51
- package/dist-esm/src/index.js.map +1 -1
- package/dist-esm/src/kustoTrustedEndpoints.js +8 -16
- package/dist-esm/src/kustoTrustedEndpoints.js.map +1 -1
- package/dist-esm/src/models.js +7 -13
- package/dist-esm/src/models.js.map +1 -1
- package/dist-esm/src/response.js +15 -21
- package/dist-esm/src/response.js.map +1 -1
- package/dist-esm/src/security.js +10 -37
- package/dist-esm/src/security.js.map +1 -1
- package/dist-esm/src/timeUtils.js +2 -7
- package/dist-esm/src/timeUtils.js.map +1 -1
- package/dist-esm/src/tokenProvider.js +24 -40
- package/dist-esm/src/tokenProvider.js.map +1 -1
- package/dist-esm/src/typeUtilts.js +1 -2
- package/dist-esm/src/typeUtilts.js.map +1 -1
- package/dist-esm/src/utils.js +1 -5
- package/dist-esm/src/utils.js.map +1 -1
- package/dist-esm/src/version.js +1 -4
- package/dist-esm/src/version.js.map +1 -1
- package/dist-esm/src/wellKnownKustoEndpoints.json +3 -1
- package/package.json +10 -6
- package/types/src/client.d.ts +4 -4
- package/types/src/clientRequestProperties.d.ts +1 -1
- package/types/src/connectionBuilder.browser.d.ts +1 -1
- package/types/src/connectionBuilder.d.ts +1 -1
- package/types/src/connectionBuilderBase.d.ts +2 -2
- package/types/src/index.d.ts +10 -10
- package/types/src/response.d.ts +1 -1
- package/types/src/security.d.ts +2 -2
- package/types/src/tokenProvider.d.ts +1 -1
package/dist-esm/src/client.js
CHANGED
|
@@ -1,27 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Microsoft Corporation.
|
|
3
2
|
// Licensed under the MIT License.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const security_1 = __importDefault(require("./security"));
|
|
21
|
-
const timeUtils_1 = require("./timeUtils");
|
|
22
|
-
const COMMAND_TIMEOUT_IN_MILLISECS = (0, timeUtils_1.toMilliseconds)(0, 10, 30);
|
|
23
|
-
const QUERY_TIMEOUT_IN_MILLISECS = (0, timeUtils_1.toMilliseconds)(0, 4, 30);
|
|
24
|
-
const CLIENT_SERVER_DELTA_IN_MILLISECS = (0, timeUtils_1.toMilliseconds)(0, 0, 30);
|
|
3
|
+
import { isNode } from "@azure/core-util";
|
|
4
|
+
import axios from "axios";
|
|
5
|
+
import http from "http";
|
|
6
|
+
import https from "https";
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
|
+
import ClientRequestProperties from "./clientRequestProperties.js";
|
|
9
|
+
import CloudSettings from "./cloudSettings.js";
|
|
10
|
+
import ConnectionStringBuilder from "./connectionBuilder.js";
|
|
11
|
+
import { ThrottlingError } from "./errors.js";
|
|
12
|
+
import { kustoTrustedEndpoints } from "./kustoTrustedEndpoints.js";
|
|
13
|
+
import { KustoResponseDataSetV1, KustoResponseDataSetV2 } from "./response.js";
|
|
14
|
+
import AadHelper from "./security.js";
|
|
15
|
+
import { toMilliseconds } from "./timeUtils.js";
|
|
16
|
+
const COMMAND_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 10, 30);
|
|
17
|
+
const QUERY_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 4, 30);
|
|
18
|
+
const CLIENT_SERVER_DELTA_IN_MILLISECS = toMilliseconds(0, 0, 30);
|
|
25
19
|
const MGMT_PREFIX = ".";
|
|
26
20
|
var ExecutionType;
|
|
27
21
|
(function (ExecutionType) {
|
|
@@ -30,11 +24,11 @@ var ExecutionType;
|
|
|
30
24
|
ExecutionType["Ingest"] = "ingest";
|
|
31
25
|
ExecutionType["QueryV1"] = "queryv1";
|
|
32
26
|
})(ExecutionType || (ExecutionType = {}));
|
|
33
|
-
class KustoClient {
|
|
27
|
+
export class KustoClient {
|
|
34
28
|
constructor(kcsb) {
|
|
35
|
-
this.cancelToken =
|
|
29
|
+
this.cancelToken = axios.CancelToken.source();
|
|
36
30
|
this._isClosed = false;
|
|
37
|
-
this.connectionString = typeof kcsb === "string" ? new
|
|
31
|
+
this.connectionString = typeof kcsb === "string" ? new ConnectionStringBuilder(kcsb) : kcsb;
|
|
38
32
|
if (!this.connectionString.dataSource) {
|
|
39
33
|
throw new Error("Cluster url is required");
|
|
40
34
|
}
|
|
@@ -50,11 +44,11 @@ class KustoClient {
|
|
|
50
44
|
[ExecutionType.Ingest]: `${this.cluster}/v1/rest/ingest`,
|
|
51
45
|
[ExecutionType.QueryV1]: `${this.cluster}/v1/rest/query`,
|
|
52
46
|
};
|
|
53
|
-
this.aadHelper = new
|
|
47
|
+
this.aadHelper = new AadHelper(this.connectionString);
|
|
54
48
|
let headers = {
|
|
55
49
|
Accept: "application/json",
|
|
56
50
|
};
|
|
57
|
-
if (
|
|
51
|
+
if (isNode) {
|
|
58
52
|
headers = Object.assign(Object.assign({}, headers), { "Accept-Encoding": "gzip,deflate", Connection: "Keep-Alive" });
|
|
59
53
|
}
|
|
60
54
|
const axiosProps = {
|
|
@@ -65,13 +59,13 @@ class KustoClient {
|
|
|
65
59
|
maxRedirects: 0,
|
|
66
60
|
};
|
|
67
61
|
// http and https are Node modules and are not found in browsers
|
|
68
|
-
if (
|
|
62
|
+
if (isNode) {
|
|
69
63
|
// keepAlive pools and reuses TCP connections, so it's faster
|
|
70
|
-
axiosProps.httpAgent = new
|
|
71
|
-
axiosProps.httpsAgent = new
|
|
64
|
+
axiosProps.httpAgent = new http.Agent({ keepAlive: true });
|
|
65
|
+
axiosProps.httpsAgent = new https.Agent({ keepAlive: true });
|
|
72
66
|
}
|
|
73
67
|
axiosProps.cancelToken = this.cancelToken.token;
|
|
74
|
-
this.axiosInstance =
|
|
68
|
+
this.axiosInstance = axios.create(axiosProps);
|
|
75
69
|
}
|
|
76
70
|
async execute(db, query, properties) {
|
|
77
71
|
query = query.trim();
|
|
@@ -99,14 +93,14 @@ class KustoClient {
|
|
|
99
93
|
}
|
|
100
94
|
let properties = null;
|
|
101
95
|
if (clientRequestId) {
|
|
102
|
-
properties = new
|
|
96
|
+
properties = new ClientRequestProperties();
|
|
103
97
|
properties.clientRequestId = clientRequestId;
|
|
104
98
|
}
|
|
105
99
|
return this._execute(endpoint, ExecutionType.Ingest, db, blob ? { blob } : { stream }, properties);
|
|
106
100
|
}
|
|
107
101
|
async _execute(endpoint, executionType, db, entity, properties) {
|
|
108
102
|
this.ensureOpen();
|
|
109
|
-
|
|
103
|
+
kustoTrustedEndpoints.validateTrustedEndpoint(endpoint, (await CloudSettings.getCloudInfoForCluster(this.cluster)).LoginEndpoint);
|
|
110
104
|
db = this.getDb(db);
|
|
111
105
|
const headers = {};
|
|
112
106
|
let payload;
|
|
@@ -128,7 +122,7 @@ class KustoClient {
|
|
|
128
122
|
else if ("stream" in entity) {
|
|
129
123
|
payloadContent = entity.stream;
|
|
130
124
|
clientRequestPrefix = "KNC.executeStreamingIngest;";
|
|
131
|
-
if (
|
|
125
|
+
if (isNode) {
|
|
132
126
|
headers["Content-Encoding"] = "gzip";
|
|
133
127
|
headers["Content-Type"] = "application/octet-stream";
|
|
134
128
|
}
|
|
@@ -147,7 +141,7 @@ class KustoClient {
|
|
|
147
141
|
throw new Error("Invalid parameters - expected query or streaming ingest");
|
|
148
142
|
}
|
|
149
143
|
let kustoHeaders = this.connectionString.clientDetails().getHeaders();
|
|
150
|
-
kustoHeaders["x-ms-client-request-id"] = `${clientRequestPrefix}${(
|
|
144
|
+
kustoHeaders["x-ms-client-request-id"] = `${clientRequestPrefix}${uuidv4()}`;
|
|
151
145
|
if (properties != null) {
|
|
152
146
|
kustoHeaders = Object.assign(Object.assign({}, kustoHeaders), properties.getHeaders());
|
|
153
147
|
}
|
|
@@ -186,7 +180,7 @@ class KustoClient {
|
|
|
186
180
|
axiosResponse = await this.axiosInstance.post(endpoint, payload, axiosConfig);
|
|
187
181
|
}
|
|
188
182
|
catch (error) {
|
|
189
|
-
if (
|
|
183
|
+
if (axios.isAxiosError(error)) {
|
|
190
184
|
// Since it's impossible to modify the error request object, the only way to censor the Authorization header is to remove it.
|
|
191
185
|
error.request = undefined;
|
|
192
186
|
if ((_a = error === null || error === void 0 ? void 0 : error.config) === null || _a === void 0 ? void 0 : _a.headers) {
|
|
@@ -198,7 +192,7 @@ class KustoClient {
|
|
|
198
192
|
error.response.request._header = "<REDACTED>";
|
|
199
193
|
}
|
|
200
194
|
if (error.response && error.response.status === 429) {
|
|
201
|
-
throw new
|
|
195
|
+
throw new ThrottlingError("POST request failed with status 429 (Too Many Requests)", error);
|
|
202
196
|
}
|
|
203
197
|
}
|
|
204
198
|
throw error;
|
|
@@ -213,10 +207,10 @@ class KustoClient {
|
|
|
213
207
|
let kustoResponse = null;
|
|
214
208
|
try {
|
|
215
209
|
if (executionType === ExecutionType.Query) {
|
|
216
|
-
kustoResponse = new
|
|
210
|
+
kustoResponse = new KustoResponseDataSetV2(response);
|
|
217
211
|
}
|
|
218
212
|
else {
|
|
219
|
-
kustoResponse = new
|
|
213
|
+
kustoResponse = new KustoResponseDataSetV1(response);
|
|
220
214
|
}
|
|
221
215
|
}
|
|
222
216
|
catch (ex) {
|
|
@@ -252,6 +246,5 @@ class KustoClient {
|
|
|
252
246
|
}
|
|
253
247
|
}
|
|
254
248
|
}
|
|
255
|
-
|
|
256
|
-
exports.default = KustoClient;
|
|
249
|
+
export default KustoClient;
|
|
257
250
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNode } from \"@azure/core-util\";\nimport axios, { AxiosInstance, AxiosRequestConfig, RawAxiosRequestHeaders } from \"axios\";\nimport http from \"http\";\nimport https from \"https\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { KustoHeaders } from \"./clientDetails\";\nimport ClientRequestProperties from \"./clientRequestProperties\";\nimport CloudSettings from \"./cloudSettings\";\nimport ConnectionStringBuilder from \"./connectionBuilder\";\nimport { ThrottlingError } from \"./errors\";\nimport { kustoTrustedEndpoints } from \"./kustoTrustedEndpoints\";\nimport { KustoResponseDataSet, KustoResponseDataSetV1, KustoResponseDataSetV2, V1, V2Frames } from \"./response\";\nimport AadHelper from \"./security\";\nimport { toMilliseconds } from \"./timeUtils\";\n\nconst COMMAND_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 10, 30);\nconst QUERY_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 4, 30);\nconst CLIENT_SERVER_DELTA_IN_MILLISECS = toMilliseconds(0, 0, 30);\nconst MGMT_PREFIX = \".\";\n\nenum ExecutionType {\n Mgmt = \"mgmt\",\n Query = \"query\",\n Ingest = \"ingest\",\n QueryV1 = \"queryv1\",\n}\n\nexport type RequestEntity = { query: string } | { stream: any } | { blob: string };\n\nexport class KustoClient {\n connectionString: ConnectionStringBuilder;\n cluster: string;\n defaultDatabase?: string;\n endpoints: { [key in ExecutionType]: string };\n aadHelper: AadHelper;\n axiosInstance: AxiosInstance;\n cancelToken = axios.CancelToken.source();\n private _isClosed: boolean = false;\n\n constructor(kcsb: string | ConnectionStringBuilder) {\n this.connectionString = typeof kcsb === \"string\" ? new ConnectionStringBuilder(kcsb) : kcsb;\n if (!this.connectionString.dataSource) {\n throw new Error(\"Cluster url is required\");\n }\n const url = new URL(this.connectionString.dataSource);\n this.cluster = url.toString();\n if (this.cluster.endsWith(\"/\")) {\n this.cluster = this.cluster.slice(0, -1);\n }\n this.defaultDatabase = this.connectionString.initialCatalog;\n this.endpoints = {\n [ExecutionType.Mgmt]: `${this.cluster}/v1/rest/mgmt`,\n [ExecutionType.Query]: `${this.cluster}/v2/rest/query`,\n [ExecutionType.Ingest]: `${this.cluster}/v1/rest/ingest`,\n [ExecutionType.QueryV1]: `${this.cluster}/v1/rest/query`,\n };\n this.aadHelper = new AadHelper(this.connectionString);\n\n let headers: RawAxiosRequestHeaders = {\n Accept: \"application/json\",\n };\n\n if (isNode) {\n headers = {\n ...headers,\n \"Accept-Encoding\": \"gzip,deflate\",\n Connection: \"Keep-Alive\",\n };\n }\n const axiosProps: AxiosRequestConfig = {\n headers,\n validateStatus: (status: number) => status === 200,\n maxBodyLength: Infinity,\n maxContentLength: Infinity,\n maxRedirects: 0,\n };\n // http and https are Node modules and are not found in browsers\n if (isNode) {\n // keepAlive pools and reuses TCP connections, so it's faster\n axiosProps.httpAgent = new http.Agent({ keepAlive: true });\n axiosProps.httpsAgent = new https.Agent({ keepAlive: true });\n }\n axiosProps.cancelToken = this.cancelToken.token;\n\n this.axiosInstance = axios.create(axiosProps);\n }\n\n async execute(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n query = query.trim();\n if (query.startsWith(MGMT_PREFIX)) {\n return this.executeMgmt(db, query, properties);\n }\n\n return this.executeQuery(db, query, properties);\n }\n\n async executeQuery(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.Query], ExecutionType.Query, db, { query }, properties);\n }\n\n async executeQueryV1(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.QueryV1], ExecutionType.QueryV1, db, { query }, properties);\n }\n\n async executeMgmt(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.Mgmt], ExecutionType.Mgmt, db, { query }, properties);\n }\n\n async executeStreamingIngest(\n db: string | null,\n table: string,\n stream: any,\n streamFormat: any,\n mappingName: string | null,\n blob?: string,\n clientRequestId?: string\n ): Promise<KustoResponseDataSet> {\n let endpoint = `${this.endpoints[ExecutionType.Ingest]}/${this.getDb(db)}/${table}?streamFormat=${streamFormat}`;\n if (mappingName != null) {\n endpoint += `&mappingName=${mappingName}`;\n }\n\n if (blob) {\n endpoint += `&sourceKind=uri`;\n }\n\n let properties: ClientRequestProperties | null = null;\n if (clientRequestId) {\n properties = new ClientRequestProperties();\n properties.clientRequestId = clientRequestId;\n }\n\n return this._execute(endpoint, ExecutionType.Ingest, db, blob ? { blob } : { stream }, properties);\n }\n\n async _execute(\n endpoint: string,\n executionType: ExecutionType,\n db: string | null,\n entity: RequestEntity,\n properties?: ClientRequestProperties | null\n ): Promise<KustoResponseDataSet> {\n this.ensureOpen();\n kustoTrustedEndpoints.validateTrustedEndpoint(endpoint, (await CloudSettings.getCloudInfoForCluster(this.cluster)).LoginEndpoint);\n db = this.getDb(db);\n const headers: { [header: string]: string } = {};\n\n let payload: { db: string; csl: string; properties?: any };\n let clientRequestPrefix = \"\";\n\n const timeout = this._getClientTimeout(executionType, properties);\n let payloadContent: any = \"\";\n if (\"query\" in entity) {\n payload = {\n db,\n csl: entity.query,\n };\n\n if (properties != null) {\n payload.properties = properties.toJSON();\n }\n\n payloadContent = JSON.stringify(payload);\n\n headers[\"Content-Type\"] = \"application/json; charset=utf-8\";\n clientRequestPrefix = \"KNC.execute;\";\n } else if (\"stream\" in entity) {\n payloadContent = entity.stream;\n clientRequestPrefix = \"KNC.executeStreamingIngest;\";\n if (isNode) {\n headers[\"Content-Encoding\"] = \"gzip\";\n headers[\"Content-Type\"] = \"application/octet-stream\";\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n }\n } else if (\"blob\" in entity) {\n payloadContent = {\n sourceUri: entity.blob,\n };\n clientRequestPrefix = \"KNC.executeStreamingIngestFromBlob;\";\n headers[\"Content-Type\"] = \"application/json\";\n } else {\n throw new Error(\"Invalid parameters - expected query or streaming ingest\");\n }\n\n let kustoHeaders = this.connectionString.clientDetails().getHeaders();\n kustoHeaders[\"x-ms-client-request-id\"] = `${clientRequestPrefix}${uuidv4()}`;\n\n if (properties != null) {\n kustoHeaders = {\n ...kustoHeaders,\n ...properties.getHeaders(),\n };\n }\n\n for (const key of Object.keys(kustoHeaders) as Iterable<keyof KustoHeaders>) {\n if (kustoHeaders[key]) {\n headers[key] = kustoHeaders[key] as string;\n }\n }\n\n const authHeader = await this.aadHelper.getAuthHeader();\n if (authHeader != null) {\n headers.Authorization = authHeader;\n }\n\n return this._doRequest(endpoint, executionType, headers, payloadContent, timeout, properties);\n }\n\n private getDb(db: string | null) {\n if (db == null) {\n if (this.defaultDatabase == null) {\n throw new Error(\"No database provided, and no default database specified in connection string\");\n }\n db = this.defaultDatabase;\n }\n return db;\n }\n\n async _doRequest(\n endpoint: string,\n executionType: ExecutionType,\n headers: { [header: string]: string },\n payload: any,\n timeout: number,\n properties?: ClientRequestProperties | null\n ): Promise<KustoResponseDataSet> {\n // replace non-ascii characters with ? in headers\n for (const key of Object.keys(headers)) {\n headers[key] = headers[key].replace(/[^\\x00-\\x7F]+/g, \"?\");\n }\n\n const axiosConfig: AxiosRequestConfig = {\n headers,\n timeout,\n };\n\n let axiosResponse;\n try {\n axiosResponse = await this.axiosInstance.post(endpoint, payload, axiosConfig);\n } catch (error: unknown) {\n if (axios.isAxiosError(error)) {\n // Since it's impossible to modify the error request object, the only way to censor the Authorization header is to remove it.\n error.request = undefined;\n if (error?.config?.headers) {\n error.config.headers.Authorization = \"<REDACTED>\";\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (error?.response?.request?._header) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.response.request._header = \"<REDACTED>\";\n }\n if (error.response && error.response.status === 429) {\n throw new ThrottlingError(\"POST request failed with status 429 (Too Many Requests)\", error);\n }\n }\n throw error;\n }\n\n return this._parseResponse(axiosResponse.data, executionType, properties, axiosResponse.status);\n }\n\n _parseResponse(response: any, executionType: ExecutionType, properties?: ClientRequestProperties | null, status?: number): KustoResponseDataSet {\n const { raw } = properties || {};\n if (raw === true || executionType === ExecutionType.Ingest) {\n return response;\n }\n\n let kustoResponse = null;\n try {\n if (executionType === ExecutionType.Query) {\n kustoResponse = new KustoResponseDataSetV2(response as V2Frames);\n } else {\n kustoResponse = new KustoResponseDataSetV1(response as V1);\n }\n } catch (ex) {\n throw new Error(`Failed to parse response ({${status}}) with the following error [${ex}].`);\n }\n if (kustoResponse.getErrorsCount().errors > 0) {\n throw new Error(`Kusto request had errors. ${kustoResponse.getExceptions()}`);\n }\n return kustoResponse;\n }\n\n _getClientTimeout(executionType: ExecutionType, properties?: ClientRequestProperties | null): number {\n if (properties != null) {\n const clientTimeout = properties.getClientTimeout();\n if (clientTimeout) {\n return clientTimeout;\n }\n\n const serverTimeout = properties.getTimeout();\n if (serverTimeout) {\n return serverTimeout + CLIENT_SERVER_DELTA_IN_MILLISECS;\n }\n }\n\n return executionType === ExecutionType.Query || executionType === ExecutionType.QueryV1 ? QUERY_TIMEOUT_IN_MILLISECS : COMMAND_TIMEOUT_IN_MILLISECS;\n }\n\n public close(): void {\n if (!this._isClosed) {\n this.cancelToken.cancel(\"Client Closed\");\n }\n this._isClosed = true;\n }\n\n ensureOpen() {\n if (this._isClosed) {\n throw new Error(\"Client is closed\");\n }\n }\n}\n\nexport default KustoClient;\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNode } from \"@azure/core-util\";\nimport axios, { AxiosInstance, AxiosRequestConfig, RawAxiosRequestHeaders } from \"axios\";\nimport http from \"http\";\nimport https from \"https\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { KustoHeaders } from \"./clientDetails.js\";\nimport ClientRequestProperties from \"./clientRequestProperties.js\";\nimport CloudSettings from \"./cloudSettings.js\";\nimport ConnectionStringBuilder from \"./connectionBuilder.js\";\nimport { ThrottlingError } from \"./errors.js\";\nimport { kustoTrustedEndpoints } from \"./kustoTrustedEndpoints.js\";\nimport { KustoResponseDataSet, KustoResponseDataSetV1, KustoResponseDataSetV2, V1, V2Frames } from \"./response.js\";\nimport AadHelper from \"./security.js\";\nimport { toMilliseconds } from \"./timeUtils.js\";\n\nconst COMMAND_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 10, 30);\nconst QUERY_TIMEOUT_IN_MILLISECS = toMilliseconds(0, 4, 30);\nconst CLIENT_SERVER_DELTA_IN_MILLISECS = toMilliseconds(0, 0, 30);\nconst MGMT_PREFIX = \".\";\n\nenum ExecutionType {\n Mgmt = \"mgmt\",\n Query = \"query\",\n Ingest = \"ingest\",\n QueryV1 = \"queryv1\",\n}\n\nexport type RequestEntity = { query: string } | { stream: any } | { blob: string };\n\nexport class KustoClient {\n connectionString: ConnectionStringBuilder;\n cluster: string;\n defaultDatabase?: string;\n endpoints: { [key in ExecutionType]: string };\n aadHelper: AadHelper;\n axiosInstance: AxiosInstance;\n cancelToken = axios.CancelToken.source();\n private _isClosed: boolean = false;\n\n constructor(kcsb: string | ConnectionStringBuilder) {\n this.connectionString = typeof kcsb === \"string\" ? new ConnectionStringBuilder(kcsb) : kcsb;\n if (!this.connectionString.dataSource) {\n throw new Error(\"Cluster url is required\");\n }\n const url = new URL(this.connectionString.dataSource);\n this.cluster = url.toString();\n if (this.cluster.endsWith(\"/\")) {\n this.cluster = this.cluster.slice(0, -1);\n }\n this.defaultDatabase = this.connectionString.initialCatalog;\n this.endpoints = {\n [ExecutionType.Mgmt]: `${this.cluster}/v1/rest/mgmt`,\n [ExecutionType.Query]: `${this.cluster}/v2/rest/query`,\n [ExecutionType.Ingest]: `${this.cluster}/v1/rest/ingest`,\n [ExecutionType.QueryV1]: `${this.cluster}/v1/rest/query`,\n };\n this.aadHelper = new AadHelper(this.connectionString);\n\n let headers: RawAxiosRequestHeaders = {\n Accept: \"application/json\",\n };\n\n if (isNode) {\n headers = {\n ...headers,\n \"Accept-Encoding\": \"gzip,deflate\",\n Connection: \"Keep-Alive\",\n };\n }\n const axiosProps: AxiosRequestConfig = {\n headers,\n validateStatus: (status: number) => status === 200,\n maxBodyLength: Infinity,\n maxContentLength: Infinity,\n maxRedirects: 0,\n };\n // http and https are Node modules and are not found in browsers\n if (isNode) {\n // keepAlive pools and reuses TCP connections, so it's faster\n axiosProps.httpAgent = new http.Agent({ keepAlive: true });\n axiosProps.httpsAgent = new https.Agent({ keepAlive: true });\n }\n axiosProps.cancelToken = this.cancelToken.token;\n\n this.axiosInstance = axios.create(axiosProps);\n }\n\n async execute(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n query = query.trim();\n if (query.startsWith(MGMT_PREFIX)) {\n return this.executeMgmt(db, query, properties);\n }\n\n return this.executeQuery(db, query, properties);\n }\n\n async executeQuery(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.Query], ExecutionType.Query, db, { query }, properties);\n }\n\n async executeQueryV1(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.QueryV1], ExecutionType.QueryV1, db, { query }, properties);\n }\n\n async executeMgmt(db: string | null, query: string, properties?: ClientRequestProperties): Promise<KustoResponseDataSet> {\n return this._execute(this.endpoints[ExecutionType.Mgmt], ExecutionType.Mgmt, db, { query }, properties);\n }\n\n async executeStreamingIngest(\n db: string | null,\n table: string,\n stream: any,\n streamFormat: any,\n mappingName: string | null,\n blob?: string,\n clientRequestId?: string\n ): Promise<KustoResponseDataSet> {\n let endpoint = `${this.endpoints[ExecutionType.Ingest]}/${this.getDb(db)}/${table}?streamFormat=${streamFormat}`;\n if (mappingName != null) {\n endpoint += `&mappingName=${mappingName}`;\n }\n\n if (blob) {\n endpoint += `&sourceKind=uri`;\n }\n\n let properties: ClientRequestProperties | null = null;\n if (clientRequestId) {\n properties = new ClientRequestProperties();\n properties.clientRequestId = clientRequestId;\n }\n\n return this._execute(endpoint, ExecutionType.Ingest, db, blob ? { blob } : { stream }, properties);\n }\n\n async _execute(\n endpoint: string,\n executionType: ExecutionType,\n db: string | null,\n entity: RequestEntity,\n properties?: ClientRequestProperties | null\n ): Promise<KustoResponseDataSet> {\n this.ensureOpen();\n kustoTrustedEndpoints.validateTrustedEndpoint(endpoint, (await CloudSettings.getCloudInfoForCluster(this.cluster)).LoginEndpoint);\n db = this.getDb(db);\n const headers: { [header: string]: string } = {};\n\n let payload: { db: string; csl: string; properties?: any };\n let clientRequestPrefix = \"\";\n\n const timeout = this._getClientTimeout(executionType, properties);\n let payloadContent: any = \"\";\n if (\"query\" in entity) {\n payload = {\n db,\n csl: entity.query,\n };\n\n if (properties != null) {\n payload.properties = properties.toJSON();\n }\n\n payloadContent = JSON.stringify(payload);\n\n headers[\"Content-Type\"] = \"application/json; charset=utf-8\";\n clientRequestPrefix = \"KNC.execute;\";\n } else if (\"stream\" in entity) {\n payloadContent = entity.stream;\n clientRequestPrefix = \"KNC.executeStreamingIngest;\";\n if (isNode) {\n headers[\"Content-Encoding\"] = \"gzip\";\n headers[\"Content-Type\"] = \"application/octet-stream\";\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n }\n } else if (\"blob\" in entity) {\n payloadContent = {\n sourceUri: entity.blob,\n };\n clientRequestPrefix = \"KNC.executeStreamingIngestFromBlob;\";\n headers[\"Content-Type\"] = \"application/json\";\n } else {\n throw new Error(\"Invalid parameters - expected query or streaming ingest\");\n }\n\n let kustoHeaders = this.connectionString.clientDetails().getHeaders();\n kustoHeaders[\"x-ms-client-request-id\"] = `${clientRequestPrefix}${uuidv4()}`;\n\n if (properties != null) {\n kustoHeaders = {\n ...kustoHeaders,\n ...properties.getHeaders(),\n };\n }\n\n for (const key of Object.keys(kustoHeaders) as Iterable<keyof KustoHeaders>) {\n if (kustoHeaders[key]) {\n headers[key] = kustoHeaders[key] as string;\n }\n }\n\n const authHeader = await this.aadHelper.getAuthHeader();\n if (authHeader != null) {\n headers.Authorization = authHeader;\n }\n\n return this._doRequest(endpoint, executionType, headers, payloadContent, timeout, properties);\n }\n\n private getDb(db: string | null) {\n if (db == null) {\n if (this.defaultDatabase == null) {\n throw new Error(\"No database provided, and no default database specified in connection string\");\n }\n db = this.defaultDatabase;\n }\n return db;\n }\n\n async _doRequest(\n endpoint: string,\n executionType: ExecutionType,\n headers: { [header: string]: string },\n payload: any,\n timeout: number,\n properties?: ClientRequestProperties | null\n ): Promise<KustoResponseDataSet> {\n // replace non-ascii characters with ? in headers\n for (const key of Object.keys(headers)) {\n headers[key] = headers[key].replace(/[^\\x00-\\x7F]+/g, \"?\");\n }\n\n const axiosConfig: AxiosRequestConfig = {\n headers,\n timeout,\n };\n\n let axiosResponse;\n try {\n axiosResponse = await this.axiosInstance.post(endpoint, payload, axiosConfig);\n } catch (error: unknown) {\n if (axios.isAxiosError(error)) {\n // Since it's impossible to modify the error request object, the only way to censor the Authorization header is to remove it.\n error.request = undefined;\n if (error?.config?.headers) {\n error.config.headers.Authorization = \"<REDACTED>\";\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (error?.response?.request?._header) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.response.request._header = \"<REDACTED>\";\n }\n if (error.response && error.response.status === 429) {\n throw new ThrottlingError(\"POST request failed with status 429 (Too Many Requests)\", error);\n }\n }\n throw error;\n }\n\n return this._parseResponse(axiosResponse.data, executionType, properties, axiosResponse.status);\n }\n\n _parseResponse(response: any, executionType: ExecutionType, properties?: ClientRequestProperties | null, status?: number): KustoResponseDataSet {\n const { raw } = properties || {};\n if (raw === true || executionType === ExecutionType.Ingest) {\n return response;\n }\n\n let kustoResponse = null;\n try {\n if (executionType === ExecutionType.Query) {\n kustoResponse = new KustoResponseDataSetV2(response as V2Frames);\n } else {\n kustoResponse = new KustoResponseDataSetV1(response as V1);\n }\n } catch (ex) {\n throw new Error(`Failed to parse response ({${status}}) with the following error [${ex}].`);\n }\n if (kustoResponse.getErrorsCount().errors > 0) {\n throw new Error(`Kusto request had errors. ${kustoResponse.getExceptions()}`);\n }\n return kustoResponse;\n }\n\n _getClientTimeout(executionType: ExecutionType, properties?: ClientRequestProperties | null): number {\n if (properties != null) {\n const clientTimeout = properties.getClientTimeout();\n if (clientTimeout) {\n return clientTimeout;\n }\n\n const serverTimeout = properties.getTimeout();\n if (serverTimeout) {\n return serverTimeout + CLIENT_SERVER_DELTA_IN_MILLISECS;\n }\n }\n\n return executionType === ExecutionType.Query || executionType === ExecutionType.QueryV1 ? QUERY_TIMEOUT_IN_MILLISECS : COMMAND_TIMEOUT_IN_MILLISECS;\n }\n\n public close(): void {\n if (!this._isClosed) {\n this.cancelToken.cancel(\"Client Closed\");\n }\n this._isClosed = true;\n }\n\n ensureOpen() {\n if (this._isClosed) {\n throw new Error(\"Client is closed\");\n }\n }\n}\n\nexport default KustoClient;\n"]}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Microsoft Corporation.
|
|
3
2
|
// Licensed under the MIT License.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const os_1 = require("os");
|
|
8
|
-
const version_1 = require("./version");
|
|
3
|
+
import { isNode } from "@azure/core-util";
|
|
4
|
+
import { userInfo } from "os";
|
|
5
|
+
import { SDK_VERSION } from "./version.js";
|
|
9
6
|
// This regex allows all printable ascii, except spaces and chars we use in the format
|
|
10
|
-
const ReplaceRegex = /[^\
|
|
7
|
+
const ReplaceRegex = /[^\w.\-()]/g;
|
|
11
8
|
const None = "[none]";
|
|
12
|
-
class ClientDetails {
|
|
9
|
+
export class ClientDetails {
|
|
13
10
|
constructor(applicationNameForTracing, userNameForTracing) {
|
|
14
11
|
this.applicationNameForTracing = applicationNameForTracing;
|
|
15
12
|
this.userNameForTracing = userNameForTracing;
|
|
@@ -23,8 +20,8 @@ class ClientDetails {
|
|
|
23
20
|
}
|
|
24
21
|
static defaultApplication() {
|
|
25
22
|
var _a, _b;
|
|
26
|
-
if (
|
|
27
|
-
return ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.npm_package_name) || process.
|
|
23
|
+
if (isNode) {
|
|
24
|
+
return ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.npm_package_name) || (process === null || process === void 0 ? void 0 : process.argv[1]) || None;
|
|
28
25
|
}
|
|
29
26
|
else {
|
|
30
27
|
return ((_b = window === null || window === void 0 ? void 0 : window.location) === null || _b === void 0 ? void 0 : _b.href) || None;
|
|
@@ -32,10 +29,10 @@ class ClientDetails {
|
|
|
32
29
|
}
|
|
33
30
|
static defaultUser() {
|
|
34
31
|
var _a, _b, _c, _d, _e;
|
|
35
|
-
if (
|
|
32
|
+
if (isNode) {
|
|
36
33
|
let username;
|
|
37
34
|
try {
|
|
38
|
-
username =
|
|
35
|
+
username = userInfo().username;
|
|
39
36
|
}
|
|
40
37
|
catch (err) {
|
|
41
38
|
/* Ignore possible errors like "uv_os_get_passwd returned ENOMEM" that may occur in some environments. */
|
|
@@ -53,12 +50,12 @@ class ClientDetails {
|
|
|
53
50
|
static defaultVersion() {
|
|
54
51
|
var _a;
|
|
55
52
|
return this.formatHeader([
|
|
56
|
-
["Kusto.JavaScript.Client",
|
|
57
|
-
["Runtime." + (
|
|
53
|
+
["Kusto.JavaScript.Client", SDK_VERSION],
|
|
54
|
+
["Runtime." + (isNode ? "Node" : "Browser"), (isNode ? process.version : (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || None],
|
|
58
55
|
]);
|
|
59
56
|
}
|
|
60
57
|
static escapeHeader(header, wrapInBrackets = true) {
|
|
61
|
-
const clean = header.replace(ReplaceRegex, "_");
|
|
58
|
+
const clean = header.substring(0, 100).replace(ReplaceRegex, "_");
|
|
62
59
|
return wrapInBrackets ? `{${clean}}` : clean;
|
|
63
60
|
}
|
|
64
61
|
static formatHeader(args) {
|
|
@@ -87,5 +84,4 @@ class ClientDetails {
|
|
|
87
84
|
};
|
|
88
85
|
}
|
|
89
86
|
}
|
|
90
|
-
exports.ClientDetails = ClientDetails;
|
|
91
87
|
//# sourceMappingURL=clientDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientDetails.js","sourceRoot":"","sources":["../../src/clientDetails.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientDetails.js","sourceRoot":"","sources":["../../src/clientDetails.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNode } from \"@azure/core-util\";\nimport { userInfo } from \"os\";\nimport { SDK_VERSION } from \"./version.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-namespace,@typescript-eslint/no-unused-vars -- This is the correct way to augment the global namespace\ndeclare namespace NodeJS {\n interface ProcessEnv {\n npm_package_name?: string;\n USERNAME?: string;\n USERDOMAIN?: string;\n }\n}\n\n// This regex allows all printable ascii, except spaces and chars we use in the format\nconst ReplaceRegex = /[^\\w.\\-()]/g;\nconst None = \"[none]\";\n\nexport class ClientDetails {\n readonly versionForTracing: string;\n\n constructor(public applicationNameForTracing: string | null, public userNameForTracing: string | null) {\n if (this.applicationNameForTracing === null) {\n this.applicationNameForTracing = ClientDetails.defaultApplication();\n }\n if (this.userNameForTracing === null) {\n this.userNameForTracing = ClientDetails.defaultUser();\n }\n this.versionForTracing = ClientDetails.defaultVersion();\n }\n\n static defaultApplication(): string {\n if (isNode) {\n return process?.env?.npm_package_name || process?.argv[1] || None;\n } else {\n return window?.location?.href || None;\n }\n }\n\n static defaultUser(): string {\n if (isNode) {\n let username: string | undefined;\n try {\n username = userInfo().username;\n } catch (err: any) {\n /* Ignore possible errors like \"uv_os_get_passwd returned ENOMEM\" that may occur in some environments. */\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (err.info?.code !== \"ENOMEM\") {\n throw err;\n }\n }\n\n return username || (process.env?.USERDOMAIN ? `${process.env?.USERDOMAIN}\\\\${process.env?.USERNAME}` : process?.env?.USERNAME) || None;\n } else {\n return None;\n }\n }\n\n static defaultVersion(): string {\n return this.formatHeader([\n [\"Kusto.JavaScript.Client\", SDK_VERSION],\n [\"Runtime.\" + (isNode ? \"Node\" : \"Browser\"), (isNode ? process.version : window?.navigator?.userAgent) || None],\n ]);\n }\n\n static escapeHeader(header: string, wrapInBrackets: boolean = true): string {\n const clean = header.substring(0, 100).replace(ReplaceRegex, \"_\");\n return wrapInBrackets ? `{${clean}}` : clean;\n }\n\n static formatHeader(args: [string, string][]): string {\n return args\n .filter(([key, val]) => key && val)\n .map(([key, val]) => `${key}:${this.escapeHeader(val)}`)\n .join(\"|\");\n }\n\n static setConnectorDetails(\n name: string,\n version: string,\n app_name: string | null = null,\n app_version: string | null = null,\n send_user: boolean = false,\n override_user: string | null = null,\n additional_fields: [string, string][] | null = null\n ): ClientDetails {\n const params: [string, string][] = [[\"Kusto.\" + this.escapeHeader(name, false), version]];\n\n app_name = app_name || this.defaultApplication();\n app_version = app_version || None;\n\n params.push([\"App.\" + this.escapeHeader(app_name), app_version]);\n params.push(...(additional_fields || []));\n\n let user = None;\n\n if (send_user) {\n user = override_user || this.defaultUser();\n }\n\n return new ClientDetails(this.formatHeader(params), user);\n }\n\n getHeaders(): Partial<KustoHeaders> {\n return {\n \"x-ms-client-version\": this.versionForTracing,\n \"x-ms-app\": this.applicationNameForTracing,\n \"x-ms-user\": this.userNameForTracing,\n };\n }\n}\n\nexport interface KustoHeaders {\n \"x-ms-client-version\": string | null;\n \"x-ms-app\": string | null;\n \"x-ms-user\": string | null;\n \"x-ms-client-request-id\": string | null;\n}\n"]}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Microsoft Corporation.
|
|
3
2
|
// Licensed under the MIT License.
|
|
4
|
-
|
|
5
|
-
exports.ClientRequestProperties = void 0;
|
|
6
|
-
class ClientRequestProperties {
|
|
3
|
+
export class ClientRequestProperties {
|
|
7
4
|
constructor(options, parameters, clientRequestId, user, application) {
|
|
8
5
|
this._options = options || {};
|
|
9
6
|
this._parameters = parameters || {};
|
|
@@ -69,14 +66,15 @@ class ClientRequestProperties {
|
|
|
69
66
|
return JSON.stringify(this.toJSON());
|
|
70
67
|
}
|
|
71
68
|
_msToTimespan(duration) {
|
|
72
|
-
const milliseconds =
|
|
69
|
+
const milliseconds = duration % 1000;
|
|
73
70
|
const seconds = Math.floor((duration / 1000) % 60);
|
|
74
71
|
const minutes = Math.floor((duration / (1000 * 60)) % 60);
|
|
75
72
|
const hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
|
|
76
|
-
const hoursStr =
|
|
77
|
-
const minutesStr =
|
|
78
|
-
const secondsStr =
|
|
79
|
-
|
|
73
|
+
const hoursStr = String(hours).padStart(2, "0");
|
|
74
|
+
const minutesStr = String(minutes).padStart(2, "0");
|
|
75
|
+
const secondsStr = String(seconds).padStart(2, "0");
|
|
76
|
+
const millisecondsStr = String(milliseconds).padStart(3, "0");
|
|
77
|
+
return `${hoursStr}:${minutesStr}:${secondsStr}.${millisecondsStr}`;
|
|
80
78
|
}
|
|
81
79
|
getHeaders() {
|
|
82
80
|
const headers = {};
|
|
@@ -92,6 +90,5 @@ class ClientRequestProperties {
|
|
|
92
90
|
return headers;
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
|
-
|
|
96
|
-
exports.default = ClientRequestProperties;
|
|
93
|
+
export default ClientRequestProperties;
|
|
97
94
|
//# sourceMappingURL=clientRequestProperties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientRequestProperties.js","sourceRoot":"","sources":["../../src/clientRequestProperties.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientRequestProperties.js","sourceRoot":"","sources":["../../src/clientRequestProperties.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KustoHeaders } from \"./clientDetails.js\";\n\nexport class ClientRequestProperties {\n private _options: { [option: string]: any };\n private _parameters: { [option: string]: any };\n private _clientTimeOut?: number;\n public clientRequestId: string | null;\n public user: string | null;\n public application: string | null;\n public raw?: boolean;\n\n constructor(options?: Record<string, unknown>, parameters?: Record<string, unknown>, clientRequestId?: string, user?: string, application?: string) {\n this._options = options || {};\n this._parameters = parameters || {};\n this.clientRequestId = clientRequestId || null;\n this.user = user || null;\n this.application = application || null;\n }\n\n setOption(name: string, value: any) {\n this._options[name] = value;\n }\n\n getOption(name: string, defaultValue?: any) {\n if (!this._options || this._options[name] === undefined) return defaultValue;\n\n return this._options[name];\n }\n\n setParameter(name: string, value: any) {\n this._parameters[name] = value;\n }\n\n getParameter(name: string, defaultValue?: any) {\n if (!this._parameters || this._parameters[name] === undefined) {\n return defaultValue;\n }\n\n return this._parameters[name];\n }\n\n clearParameters() {\n this._parameters = {};\n }\n\n setTimeout(timeoutMillis: number) {\n this.setOption(\"servertimeout\", timeoutMillis);\n }\n\n getTimeout(): number | undefined {\n return this.getOption(\"servertimeout\");\n }\n\n setClientTimeout(timeoutMillis: number) {\n this._clientTimeOut = timeoutMillis;\n }\n\n getClientTimeout() {\n return this._clientTimeOut;\n }\n\n clearOptions() {\n this._options = {};\n }\n\n /**\n * @deprecated use the compliant toJSON() instead\n */\n toJson() {\n return this.toJSON();\n }\n\n toJSON() {\n const json: {\n Options?: { [option: string]: any };\n Parameters?: { [option: string]: any };\n } = {};\n\n if (Object.keys(this._options).length !== 0) {\n json.Options = { ...this._options };\n if (json.Options.servertimeout) {\n json.Options.servertimeout = this._msToTimespan(json.Options.servertimeout as number);\n }\n }\n\n if (Object.keys(this._parameters).length !== 0) {\n json.Parameters = { ...this._parameters };\n }\n\n return Object.keys(json).length !== 0 ? json : null;\n }\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n\n _msToTimespan(duration: number): string {\n const milliseconds = duration % 1000;\n const seconds = Math.floor((duration / 1000) % 60);\n const minutes = Math.floor((duration / (1000 * 60)) % 60);\n const hours = Math.floor((duration / (1000 * 60 * 60)) % 24);\n\n const hoursStr = String(hours).padStart(2, \"0\");\n const minutesStr = String(minutes).padStart(2, \"0\");\n const secondsStr = String(seconds).padStart(2, \"0\");\n const millisecondsStr = String(milliseconds).padStart(3, \"0\");\n\n return `${hoursStr}:${minutesStr}:${secondsStr}.${millisecondsStr}`;\n }\n\n getHeaders(): Partial<KustoHeaders> {\n const headers: Partial<KustoHeaders> = {};\n if (this.clientRequestId) {\n headers[\"x-ms-client-request-id\"] = this.clientRequestId;\n }\n if (this.user) {\n headers[\"x-ms-user\"] = this.user;\n }\n if (this.application) {\n headers[\"x-ms-app\"] = this.application;\n }\n return headers;\n }\n}\n\nexport default ClientRequestProperties;\n"]}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CloudSettings = void 0;
|
|
1
|
+
var _a, _b;
|
|
7
2
|
// Copyright (c) Microsoft Corporation.
|
|
8
3
|
// Licensed under the MIT License.
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
import axios from "axios";
|
|
5
|
+
import { isNode } from "@azure/core-util";
|
|
6
|
+
const AXIOS_ERR_NETWORK = (_b = (_a = axios === null || axios === void 0 ? void 0 : axios.AxiosError) === null || _a === void 0 ? void 0 : _a.ERR_NETWORK) !== null && _b !== void 0 ? _b : "ERR_NETWORK";
|
|
11
7
|
/**
|
|
12
8
|
* This class holds data for all cloud instances, and returns the specific data instance by parsing the dns suffix from a URL
|
|
13
9
|
*/
|
|
@@ -37,7 +33,7 @@ class CloudSettings {
|
|
|
37
33
|
return this.cloudCache[kustoUri];
|
|
38
34
|
}
|
|
39
35
|
try {
|
|
40
|
-
const response = await
|
|
36
|
+
const response = await axios.get(kustoUri + this.METADATA_ENDPOINT, {
|
|
41
37
|
headers: {
|
|
42
38
|
"Cache-Control": "no-cache",
|
|
43
39
|
// Disable caching - it's being cached in memory (Service returns max-age).
|
|
@@ -59,9 +55,9 @@ class CloudSettings {
|
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
catch (ex) {
|
|
62
|
-
if (
|
|
58
|
+
if (axios.isAxiosError(ex)) {
|
|
63
59
|
// Axios library has a bug in browser, not propagating the status code, see: https://github.com/axios/axios/issues/5330
|
|
64
|
-
if ((((_a = ex.response) === null || _a === void 0 ? void 0 : _a.status) === 404
|
|
60
|
+
if ((isNode && ((_a = ex.response) === null || _a === void 0 ? void 0 : _a.status) === 404) || (!isNode && (!ex.code || ex.code === AXIOS_ERR_NETWORK))) {
|
|
65
61
|
// For now as long not all proxies implement the metadata endpoint, if no endpoint exists return public cloud data
|
|
66
62
|
this.cloudCache[kustoUri] = this.defaultCloudInfo;
|
|
67
63
|
}
|
|
@@ -85,6 +81,6 @@ class CloudSettings {
|
|
|
85
81
|
}
|
|
86
82
|
}
|
|
87
83
|
const cloudSettings = new CloudSettings();
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
export { cloudSettings as CloudSettings };
|
|
85
|
+
export default cloudSettings;
|
|
90
86
|
//# sourceMappingURL=cloudSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudSettings.js","sourceRoot":"","sources":["../../src/cloudSettings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloudSettings.js","sourceRoot":"","sources":["../../src/cloudSettings.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAW1C,MAAM,iBAAiB,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,WAAW,mCAAI,aAAa,CAAC;AAE1E;;GAEG;AACH,MAAM,aAAa;IAAnB;;QACI,sBAAiB,GAAG,wBAAwB,CAAC;QAC7C,qBAAgB,GAAc;YAC1B,aAAa,EAAE,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,0CAAE,eAAe,KAAI,mCAAmC;YACnF,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,sCAAsC;YACxD,sBAAsB,EAAE,+BAA+B;YACvD,sBAAsB,EAAE,iCAAiC;YACzD,sBAAsB,EAAE,wEAAwE;SACnG,CAAC;QACF,eAAU,GAAsC,EAAE,CAAC;QAMnD,iBAAY,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElF,oBAAe,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAsDhG,CAAC;IA5DG,YAAY,CAAC,GAAW,EAAE,IAAgB;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,gBAAgB,CAAC;IAC5E,CAAC;IAMD,KAAK,CAAC,sBAAsB,CAAC,QAAgB;;QACzC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACpC;QAED,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAqC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;gBACpG,OAAO,EAAE;oBACL,eAAe,EAAE,UAAU;oBAC3B,2EAA2E;oBAC3E,+FAA+F;oBAC/F,6FAA6F;oBAC7F,4EAA4E;oBAC5E,WAAW;oBACX,qHAAqH;oBACrH,4IAA4I;oBAC5I,gGAAgG;iBACnG;gBACD,YAAY,EAAE,CAAC;aAClB,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC;aAC9E;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,uDAAuD,QAAQ,EAAE,CAAC,CAAC;aACtF;SACJ;QAAC,OAAO,EAAE,EAAE;YACT,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;gBACxB,uHAAuH;gBACvH,IAAI,CAAC,MAAM,IAAI,CAAA,MAAA,EAAE,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,EAAE;oBACrG,kHAAkH;oBAClH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;iBACrD;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,MAAM,EAAE,EAAE,CAAC,CAAC;iBAC/E;aACJ;SACJ;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,QAAgB;QACjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACnD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,SAAoB,EAAE,WAAoB;QAC7D,OAAO,SAAS,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,CAAC;AAC1C,eAAe,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport axios from \"axios\";\nimport { isNode } from \"@azure/core-util\";\n\nexport type CloudInfo = {\n LoginEndpoint: string;\n LoginMfaRequired: boolean;\n KustoClientAppId: string;\n KustoClientRedirectUri: string;\n KustoServiceResourceId: string;\n FirstPartyAuthorityUrl: string;\n};\n\nconst AXIOS_ERR_NETWORK = axios?.AxiosError?.ERR_NETWORK ?? \"ERR_NETWORK\";\n\n/**\n * This class holds data for all cloud instances, and returns the specific data instance by parsing the dns suffix from a URL\n */\nclass CloudSettings {\n METADATA_ENDPOINT = \"/v1/rest/auth/metadata\";\n defaultCloudInfo: CloudInfo = {\n LoginEndpoint: process?.env?.AadAuthorityUri || \"https://login.microsoftonline.com\",\n LoginMfaRequired: false,\n KustoClientAppId: \"db662dc1-0cfe-4e1c-a843-19a68e65be58\",\n KustoClientRedirectUri: \"https://microsoft/kustoclient\",\n KustoServiceResourceId: \"https://kusto.kusto.windows.net\",\n FirstPartyAuthorityUrl: \"https://login.microsoftonline.com/f8cdef31-a31e-4b4a-93e4-5f571e91255a\",\n };\n cloudCache: { [kustoUri: string]: CloudInfo } = {};\n\n writeToCache(url: string, info?: CloudInfo) {\n this.cloudCache[this.normalizeUrl(url)] = info ?? this.defaultCloudInfo;\n }\n\n getFromCache = (kustoUri: string) => this.cloudCache[this.normalizeUrl(kustoUri)];\n\n deleteFromCache = (kustoUri: string) => delete this.cloudCache[this.normalizeUrl(kustoUri)];\n\n async getCloudInfoForCluster(kustoUri: string): Promise<CloudInfo> {\n kustoUri = this.normalizeUrl(kustoUri);\n if (kustoUri in this.cloudCache) {\n return this.cloudCache[kustoUri];\n }\n\n try {\n const response = await axios.get<{ AzureAD: CloudInfo | undefined }>(kustoUri + this.METADATA_ENDPOINT, {\n headers: {\n \"Cache-Control\": \"no-cache\",\n // Disable caching - it's being cached in memory (Service returns max-age).\n // The original motivation for this is due to a CORS issue in Ibiza due to a dynamic subdomain.\n // The first dynamic subdomain is attached to the cache and for some reason isn't invalidated\n // when there is a new subdomain. It causes the request failure due to CORS.\n // Example:\n // Access to XMLHttpRequest at 'https://safrankecc.canadacentral.kusto.windows.net/v1/rest/auth/metadata' from origin\n // 'https://sandbox-46-11.reactblade.portal.azure.net' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value\n // 'https://sandbox-46-10.reactblade.portal.azure.net' that is not equal to the supplied origin.\n },\n maxRedirects: 0,\n });\n if (response.status === 200) {\n this.cloudCache[kustoUri] = response.data.AzureAD || this.defaultCloudInfo;\n } else {\n throw new Error(`Kusto returned an invalid cloud metadata response - ${response}`);\n }\n } catch (ex) {\n if (axios.isAxiosError(ex)) {\n // Axios library has a bug in browser, not propagating the status code, see: https://github.com/axios/axios/issues/5330\n if ((isNode && ex.response?.status === 404) || (!isNode && (!ex.code || ex.code === AXIOS_ERR_NETWORK))) {\n // For now as long not all proxies implement the metadata endpoint, if no endpoint exists return public cloud data\n this.cloudCache[kustoUri] = this.defaultCloudInfo;\n } else {\n throw new Error(`Failed to get cloud info for cluster ${kustoUri} - ${ex}`);\n }\n }\n }\n return this.cloudCache[kustoUri];\n }\n\n private normalizeUrl(kustoUri: string) {\n const url = new URL(kustoUri);\n const urlString = url.toString();\n if (urlString.endsWith(\"/\")) {\n return urlString.slice(0, urlString.length - 1);\n }\n return urlString;\n }\n\n static getAuthorityUri(cloudInfo: CloudInfo, authorityId?: string): string {\n return cloudInfo.LoginEndpoint + \"/\" + (authorityId || \"organizations\");\n }\n}\n\nconst cloudSettings = new CloudSettings();\nexport { cloudSettings as CloudSettings };\nexport default cloudSettings;\n"]}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright (c) Microsoft Corporation.
|
|
3
2
|
// Licensed under the MIT License.
|
|
4
|
-
|
|
5
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
-
};
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.KustoConnectionStringBuilder = void 0;
|
|
9
|
-
const connectionBuilderBase_1 = __importDefault(require("./connectionBuilderBase"));
|
|
3
|
+
import KustoConnectionStringBuilderBase from "./connectionBuilderBase.js";
|
|
10
4
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
11
|
-
class KustoConnectionStringBuilder extends
|
|
5
|
+
export class KustoConnectionStringBuilder extends KustoConnectionStringBuilderBase {
|
|
12
6
|
static withAadUserPasswordAuthentication(_connectionString, _userId, _password, _authorityId) {
|
|
13
7
|
throw new Error("Not supported in browser - use withUserPrompt instead");
|
|
14
8
|
}
|
|
@@ -76,8 +70,7 @@ class KustoConnectionStringBuilder extends connectionBuilderBase_1.default {
|
|
|
76
70
|
return Object.assign(new KustoConnectionStringBuilder(other.toString(false)), other);
|
|
77
71
|
}
|
|
78
72
|
}
|
|
79
|
-
exports.KustoConnectionStringBuilder = KustoConnectionStringBuilder;
|
|
80
73
|
KustoConnectionStringBuilder.DefaultDatabaseName = "NetDefaultDB";
|
|
81
74
|
KustoConnectionStringBuilder.SecretReplacement = "****";
|
|
82
|
-
|
|
75
|
+
export default KustoConnectionStringBuilder;
|
|
83
76
|
//# sourceMappingURL=connectionBuilder.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionBuilder.browser.js","sourceRoot":"","sources":["../../src/connectionBuilder.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connectionBuilder.browser.js","sourceRoot":"","sources":["../../src/connectionBuilder.browser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DeviceCodeInfo, InteractiveBrowserCredentialInBrowserOptions, InteractiveBrowserCredentialNodeOptions, TokenCredential } from \"@azure/identity\";\nimport KustoConnectionStringBuilderBase from \"./connectionBuilderBase.js\";\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nexport class KustoConnectionStringBuilder extends KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n static withAadUserPasswordAuthentication(\n _connectionString: string,\n _userId: string,\n _password: string,\n _authorityId?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadApplicationKeyAuthentication(\n _connectionString: string,\n _aadAppId: string,\n _appKey: string,\n _authorityId?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadApplicationCertificateAuthentication(\n _connectionString: string,\n _aadAppId: string,\n _applicationCertificatePrivateKey?: string,\n _authorityId?: string,\n _applicationCertificateSendX5c?: boolean,\n _applicationCertificatePath?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadDeviceAuthentication(\n _connectionString: string,\n _authorityId?: string,\n _deviceCodeCallback?: (response: DeviceCodeInfo) => void\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withSystemManagedIdentity(_connectionString: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withUserManagedIdentity(_connectionString: string, _msiClientId: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAzLoginIdentity(_connectionString: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAccessToken(connectionString: string, accessToken: string): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.accessToken = accessToken;\n\n return kcsb;\n }\n\n static withTokenProvider(connectionString: string, tokenProvider: () => Promise<string>): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.tokenProvider = tokenProvider;\n\n return kcsb;\n }\n\n static withUserPrompt(\n connectionString: string,\n interactiveCredentialOptions: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n timeoutMs?: number\n ): KustoConnectionStringBuilder {\n if (!interactiveCredentialOptions) {\n throw new Error(\n \"Invalid parameters - You must provide interactiveCredentialOptions={clientId: string, redirectUri:string} to authenticate with user prompt in browser.\"\n );\n }\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n const { redirectUri, clientId, tenantId } = interactiveCredentialOptions as InteractiveBrowserCredentialInBrowserOptions;\n if (!clientId) {\n throw new Error(\"Invalid parameters - You must provide your SPA application client id to authenticate against\");\n }\n\n if (!redirectUri) {\n throw new Error(\"Invalid parameters - You must provide a redirectUri registered on the SPA app\");\n }\n\n if (tenantId) {\n kcsb.authorityId = tenantId;\n } else {\n interactiveCredentialOptions.tenantId = kcsb.authorityId;\n }\n\n kcsb.interactiveCredentialOptions = interactiveCredentialOptions;\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = clientId;\n kcsb.useUserPromptAuth = true;\n\n kcsb.timeoutMs = timeoutMs;\n\n return kcsb;\n }\n\n static withTokenCredential(connectionString: string, credential: TokenCredential): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.tokenCredential = credential;\n\n return kcsb;\n }\n\n static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase {\n return Object.assign(new KustoConnectionStringBuilder(other.toString(false)), other);\n }\n}\n\nexport default KustoConnectionStringBuilder;\n"]}
|