azure-kusto-data 7.0.0-alpha.3 → 7.0.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 +4 -4
- package/dist-esm/src/client.js.map +1 -1
- package/dist-esm/src/clientDetails.js +4 -4
- package/dist-esm/src/clientDetails.js.map +1 -1
- package/dist-esm/src/clientRequestProperties.js +2 -0
- package/dist-esm/src/clientRequestProperties.js.map +1 -1
- package/dist-esm/src/cloudSettings.js +9 -4
- package/dist-esm/src/cloudSettings.js.map +1 -1
- package/package.json +4 -4
- package/types/src/clientDetails.d.ts +1 -0
- package/types/src/cloudSettings.d.ts +1 -0
package/dist-esm/src/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import {
|
|
3
|
+
import { isNodeLike } from "@azure/core-util";
|
|
4
4
|
import axios from "axios";
|
|
5
5
|
import http from "http";
|
|
6
6
|
import https from "https";
|
|
@@ -48,7 +48,7 @@ export class KustoClient {
|
|
|
48
48
|
let headers = {
|
|
49
49
|
Accept: "application/json",
|
|
50
50
|
};
|
|
51
|
-
if (
|
|
51
|
+
if (isNodeLike) {
|
|
52
52
|
headers = Object.assign(Object.assign({}, headers), { "Accept-Encoding": "gzip,deflate", Connection: "Keep-Alive" });
|
|
53
53
|
}
|
|
54
54
|
const axiosProps = {
|
|
@@ -59,7 +59,7 @@ export class KustoClient {
|
|
|
59
59
|
maxRedirects: 0,
|
|
60
60
|
};
|
|
61
61
|
// http and https are Node modules and are not found in browsers
|
|
62
|
-
if (
|
|
62
|
+
if (isNodeLike) {
|
|
63
63
|
// keepAlive pools and reuses TCP connections, so it's faster
|
|
64
64
|
axiosProps.httpAgent = new http.Agent({ keepAlive: true });
|
|
65
65
|
axiosProps.httpsAgent = new https.Agent({ keepAlive: true });
|
|
@@ -122,7 +122,7 @@ export class KustoClient {
|
|
|
122
122
|
else if ("stream" in entity) {
|
|
123
123
|
payloadContent = entity.stream;
|
|
124
124
|
clientRequestPrefix = "KNC.executeStreamingIngest;";
|
|
125
|
-
if (
|
|
125
|
+
if (isNodeLike) {
|
|
126
126
|
headers["Content-Encoding"] = "gzip";
|
|
127
127
|
headers["Content-Type"] = "application/octet-stream";
|
|
128
128
|
}
|
|
@@ -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.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
|
+
{"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 { isNodeLike } 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 (isNodeLike) {\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 (isNodeLike) {\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 (isNodeLike) {\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,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import {
|
|
3
|
+
import { isNodeLike } from "@azure/core-util";
|
|
4
4
|
import { userInfo } from "os";
|
|
5
5
|
import { SDK_VERSION } from "./version.js";
|
|
6
6
|
// This regex allows all printable ascii, except spaces and chars we use in the format
|
|
@@ -20,7 +20,7 @@ export class ClientDetails {
|
|
|
20
20
|
}
|
|
21
21
|
static defaultApplication() {
|
|
22
22
|
var _a, _b;
|
|
23
|
-
if (
|
|
23
|
+
if (isNodeLike) {
|
|
24
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;
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
@@ -29,7 +29,7 @@ export class ClientDetails {
|
|
|
29
29
|
}
|
|
30
30
|
static defaultUser() {
|
|
31
31
|
var _a, _b, _c, _d, _e;
|
|
32
|
-
if (
|
|
32
|
+
if (isNodeLike) {
|
|
33
33
|
let username;
|
|
34
34
|
try {
|
|
35
35
|
username = userInfo().username;
|
|
@@ -51,7 +51,7 @@ export class ClientDetails {
|
|
|
51
51
|
var _a;
|
|
52
52
|
return this.formatHeader([
|
|
53
53
|
["Kusto.JavaScript.Client", SDK_VERSION],
|
|
54
|
-
["Runtime." + (
|
|
54
|
+
["Runtime." + (isNodeLike ? "Node" : "Browser"), (isNodeLike ? process.version : (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || None],
|
|
55
55
|
]);
|
|
56
56
|
}
|
|
57
57
|
static escapeHeader(header, wrapInBrackets = true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientDetails.js","sourceRoot":"","sources":["../../src/clientDetails.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,
|
|
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 { isNodeLike } 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(\n public applicationNameForTracing: string | null,\n public userNameForTracing: string | null,\n ) {\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 (isNodeLike) {\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 (isNodeLike) {\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.\" + (isNodeLike ? \"Node\" : \"Browser\"), (isNodeLike ? 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 \"x-ms-version\": string | null;\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
+
const SDK_API_VERSION = "2024-12-12"; // TODO: Update when new API version is released
|
|
3
4
|
export class ClientRequestProperties {
|
|
4
5
|
constructor(options, parameters, clientRequestId, user, application) {
|
|
5
6
|
this._options = options || {};
|
|
@@ -87,6 +88,7 @@ export class ClientRequestProperties {
|
|
|
87
88
|
if (this.application) {
|
|
88
89
|
headers["x-ms-app"] = this.application;
|
|
89
90
|
}
|
|
91
|
+
headers["x-ms-version"] = SDK_API_VERSION;
|
|
90
92
|
return headers;
|
|
91
93
|
}
|
|
92
94
|
}
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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\nconst SDK_API_VERSION = \"2024-12-12\"; // TODO: Update when new API version is released\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 headers[\"x-ms-version\"] = SDK_API_VERSION;\n return headers;\n }\n}\n\nexport default ClientRequestProperties;\n"]}
|
|
@@ -2,7 +2,7 @@ var _a, _b;
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
import axios from "axios";
|
|
5
|
-
import {
|
|
5
|
+
import { isNodeLike } from "@azure/core-util";
|
|
6
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";
|
|
7
7
|
/**
|
|
8
8
|
* This class holds data for all cloud instances, and returns the specific data instance by parsing the dns suffix from a URL
|
|
@@ -12,7 +12,7 @@ class CloudSettings {
|
|
|
12
12
|
var _a;
|
|
13
13
|
this.METADATA_ENDPOINT = "/v1/rest/auth/metadata";
|
|
14
14
|
this.defaultCloudInfo = {
|
|
15
|
-
LoginEndpoint: ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.AadAuthorityUri) || "https://login.microsoftonline.com",
|
|
15
|
+
LoginEndpoint: (isNodeLike ? (_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.AadAuthorityUri : undefined) || "https://login.microsoftonline.com",
|
|
16
16
|
LoginMfaRequired: false,
|
|
17
17
|
KustoClientAppId: "db662dc1-0cfe-4e1c-a843-19a68e65be58",
|
|
18
18
|
KustoClientRedirectUri: "https://microsoft/kustoclient",
|
|
@@ -33,7 +33,7 @@ class CloudSettings {
|
|
|
33
33
|
return this.cloudCache[kustoUri];
|
|
34
34
|
}
|
|
35
35
|
try {
|
|
36
|
-
const response = await axios.get(
|
|
36
|
+
const response = await axios.get(this.getAuthMetadataEndpointFromClusterUri(kustoUri), {
|
|
37
37
|
headers: {
|
|
38
38
|
"Cache-Control": "no-cache",
|
|
39
39
|
// Disable caching - it's being cached in memory (Service returns max-age).
|
|
@@ -57,7 +57,7 @@ class CloudSettings {
|
|
|
57
57
|
catch (ex) {
|
|
58
58
|
if (axios.isAxiosError(ex)) {
|
|
59
59
|
// Axios library has a bug in browser, not propagating the status code, see: https://github.com/axios/axios/issues/5330
|
|
60
|
-
if ((
|
|
60
|
+
if ((isNodeLike && ((_a = ex.response) === null || _a === void 0 ? void 0 : _a.status) === 404) || (!isNodeLike && (!ex.code || ex.code === AXIOS_ERR_NETWORK))) {
|
|
61
61
|
// For now as long not all proxies implement the metadata endpoint, if no endpoint exists return public cloud data
|
|
62
62
|
this.cloudCache[kustoUri] = this.defaultCloudInfo;
|
|
63
63
|
}
|
|
@@ -76,6 +76,11 @@ class CloudSettings {
|
|
|
76
76
|
}
|
|
77
77
|
return urlString;
|
|
78
78
|
}
|
|
79
|
+
getAuthMetadataEndpointFromClusterUri(kustoUri) {
|
|
80
|
+
const url = new URL(kustoUri);
|
|
81
|
+
// Returns endpoint URL in the form of https://<cluster>:port/v1/rest/auth/metadata
|
|
82
|
+
return `${url.protocol}//${url.host}${this.METADATA_ENDPOINT}`;
|
|
83
|
+
}
|
|
79
84
|
static getAuthorityUri(cloudInfo, authorityId) {
|
|
80
85
|
return cloudInfo.LoginEndpoint + "/" + (authorityId || "organizations");
|
|
81
86
|
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"cloudSettings.js","sourceRoot":"","sources":["../../src/cloudSettings.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport axios from \"axios\";\nimport { isNodeLike } 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: (isNodeLike ? process?.env?.AadAuthorityUri : undefined) || \"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 }>(this.getAuthMetadataEndpointFromClusterUri(kustoUri), {\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 ((isNodeLike && ex.response?.status === 404) || (!isNodeLike && (!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 getAuthMetadataEndpointFromClusterUri(kustoUri: string): string {\n const url = new URL(kustoUri);\n // Returns endpoint URL in the form of https://<cluster>:port/v1/rest/auth/metadata\n return `${url.protocol}//${url.host}${this.METADATA_ENDPOINT}`;\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "azure-kusto-data",
|
|
3
|
-
"version": "7.0.0
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Azure Data Explorer Query SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist-esm/src/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"./dist-esm/src/connectionBuilder.js": "./dist-esm/src/connectionBuilder.browser.js"
|
|
28
28
|
},
|
|
29
29
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
30
|
+
"node": ">= 20.0.0"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
@@ -65,11 +65,11 @@
|
|
|
65
65
|
"@azure/core-util": "^1.10.0",
|
|
66
66
|
"@azure/identity": "^4.0.1",
|
|
67
67
|
"@types/uuid": "^8.3.4",
|
|
68
|
-
"axios": "^1.
|
|
68
|
+
"axios": "^1.8.4",
|
|
69
69
|
"follow-redirects": "^1.15.1",
|
|
70
70
|
"https-browserify": "^1.0.0",
|
|
71
71
|
"stream-http": "^3.2.0",
|
|
72
72
|
"uuid": "^8.3.2"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "2fdb411b765647356dcde15638f04d5cdf0b2158"
|
|
75
75
|
}
|
|
@@ -20,6 +20,7 @@ declare class CloudSettings {
|
|
|
20
20
|
deleteFromCache: (kustoUri: string) => boolean;
|
|
21
21
|
getCloudInfoForCluster(kustoUri: string): Promise<CloudInfo>;
|
|
22
22
|
private normalizeUrl;
|
|
23
|
+
getAuthMetadataEndpointFromClusterUri(kustoUri: string): string;
|
|
23
24
|
static getAuthorityUri(cloudInfo: CloudInfo, authorityId?: string): string;
|
|
24
25
|
}
|
|
25
26
|
declare const cloudSettings: CloudSettings;
|