azure-kusto-data 6.0.2 → 7.0.0-alpha.1

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.
Files changed (48) hide show
  1. package/dist-esm/src/client.js +34 -41
  2. package/dist-esm/src/client.js.map +1 -1
  3. package/dist-esm/src/clientDetails.js +9 -13
  4. package/dist-esm/src/clientDetails.js.map +1 -1
  5. package/dist-esm/src/clientRequestProperties.js +8 -11
  6. package/dist-esm/src/clientRequestProperties.js.map +1 -1
  7. package/dist-esm/src/cloudSettings.js +9 -13
  8. package/dist-esm/src/cloudSettings.js.map +1 -1
  9. package/dist-esm/src/connectionBuilder.browser.js +3 -10
  10. package/dist-esm/src/connectionBuilder.browser.js.map +1 -1
  11. package/dist-esm/src/connectionBuilder.js +3 -7
  12. package/dist-esm/src/connectionBuilder.js.map +1 -1
  13. package/dist-esm/src/connectionBuilderBase.js +9 -13
  14. package/dist-esm/src/connectionBuilderBase.js.map +1 -1
  15. package/dist-esm/src/errors.js +2 -7
  16. package/dist-esm/src/errors.js.map +1 -1
  17. package/dist-esm/src/index.js +11 -51
  18. package/dist-esm/src/index.js.map +1 -1
  19. package/dist-esm/src/kustoTrustedEndpoints.js +8 -16
  20. package/dist-esm/src/kustoTrustedEndpoints.js.map +1 -1
  21. package/dist-esm/src/models.js +7 -13
  22. package/dist-esm/src/models.js.map +1 -1
  23. package/dist-esm/src/response.js +15 -21
  24. package/dist-esm/src/response.js.map +1 -1
  25. package/dist-esm/src/security.js +10 -37
  26. package/dist-esm/src/security.js.map +1 -1
  27. package/dist-esm/src/timeUtils.js +2 -7
  28. package/dist-esm/src/timeUtils.js.map +1 -1
  29. package/dist-esm/src/tokenProvider.js +25 -42
  30. package/dist-esm/src/tokenProvider.js.map +1 -1
  31. package/dist-esm/src/typeUtilts.js +1 -2
  32. package/dist-esm/src/typeUtilts.js.map +1 -1
  33. package/dist-esm/src/utils.js +1 -5
  34. package/dist-esm/src/utils.js.map +1 -1
  35. package/dist-esm/src/version.js +1 -4
  36. package/dist-esm/src/version.js.map +1 -1
  37. package/dist-esm/src/wellKnownKustoEndpoints.json +3 -1
  38. package/package.json +11 -5
  39. package/types/src/client.d.ts +4 -4
  40. package/types/src/clientRequestProperties.d.ts +5 -5
  41. package/types/src/connectionBuilder.browser.d.ts +1 -1
  42. package/types/src/connectionBuilder.d.ts +1 -1
  43. package/types/src/connectionBuilderBase.d.ts +2 -2
  44. package/types/src/index.d.ts +10 -10
  45. package/types/src/response.d.ts +1 -1
  46. package/types/src/security.d.ts +2 -2
  47. package/types/src/tokenProvider.d.ts +2 -2
  48. package/types/src/version.d.ts +1 -1
@@ -1,27 +1,21 @@
1
- "use strict";
2
1
  // Copyright (c) Microsoft Corporation.
3
2
  // Licensed under the MIT License.
4
- var __importDefault = (this && this.__importDefault) || function (mod) {
5
- return (mod && mod.__esModule) ? mod : { "default": mod };
6
- };
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.KustoClient = void 0;
9
- const core_util_1 = require("@azure/core-util");
10
- const axios_1 = __importDefault(require("axios"));
11
- const http_1 = __importDefault(require("http"));
12
- const https_1 = __importDefault(require("https"));
13
- const uuid_1 = require("uuid");
14
- const clientRequestProperties_1 = __importDefault(require("./clientRequestProperties"));
15
- const cloudSettings_1 = __importDefault(require("./cloudSettings"));
16
- const connectionBuilder_1 = __importDefault(require("./connectionBuilder"));
17
- const errors_1 = require("./errors");
18
- const kustoTrustedEndpoints_1 = require("./kustoTrustedEndpoints");
19
- const response_1 = require("./response");
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 = axios_1.default.CancelToken.source();
29
+ this.cancelToken = axios.CancelToken.source();
36
30
  this._isClosed = false;
37
- this.connectionString = typeof kcsb === "string" ? new connectionBuilder_1.default(kcsb) : kcsb;
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 security_1.default(this.connectionString);
47
+ this.aadHelper = new AadHelper(this.connectionString);
54
48
  let headers = {
55
49
  Accept: "application/json",
56
50
  };
57
- if (core_util_1.isNode) {
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 (core_util_1.isNode) {
62
+ if (isNode) {
69
63
  // keepAlive pools and reuses TCP connections, so it's faster
70
- axiosProps.httpAgent = new http_1.default.Agent({ keepAlive: true });
71
- axiosProps.httpsAgent = new https_1.default.Agent({ keepAlive: true });
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 = axios_1.default.create(axiosProps);
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 clientRequestProperties_1.default();
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
- kustoTrustedEndpoints_1.kustoTrustedEndpoints.validateTrustedEndpoint(endpoint, (await cloudSettings_1.default.getCloudInfoForCluster(this.cluster)).LoginEndpoint);
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 (core_util_1.isNode) {
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}${(0, uuid_1.v4)()}`;
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 (axios_1.default.isAxiosError(error)) {
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 errors_1.ThrottlingError("POST request failed with status 429 (Too Many Requests)", error);
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 response_1.KustoResponseDataSetV2(response);
210
+ kustoResponse = new KustoResponseDataSetV2(response);
217
211
  }
218
212
  else {
219
- kustoResponse = new response_1.KustoResponseDataSetV1(response);
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
- exports.KustoClient = KustoClient;
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
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.ClientDetails = void 0;
6
- const core_util_1 = require("@azure/core-util");
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
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,7 +20,7 @@ class ClientDetails {
23
20
  }
24
21
  static defaultApplication() {
25
22
  var _a, _b;
26
- if (core_util_1.isNode) {
23
+ if (isNode) {
27
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 {
@@ -32,10 +29,10 @@ class ClientDetails {
32
29
  }
33
30
  static defaultUser() {
34
31
  var _a, _b, _c, _d, _e;
35
- if (core_util_1.isNode) {
32
+ if (isNode) {
36
33
  let username;
37
34
  try {
38
- username = (0, os_1.userInfo)().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,8 +50,8 @@ class ClientDetails {
53
50
  static defaultVersion() {
54
51
  var _a;
55
52
  return this.formatHeader([
56
- ["Kusto.JavaScript.Client", version_1.SDK_VERSION],
57
- ["Runtime." + (core_util_1.isNode ? "Node" : "Browser"), (core_util_1.isNode ? process.version : (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || None],
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) {
@@ -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":"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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\";\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
+ {"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(\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 (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
- Object.defineProperty(exports, "__esModule", { value: true });
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 = Math.floor((duration % 1000) / 100);
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 = hours < 10 ? `0${hours}` : String(hours);
77
- const minutesStr = minutes < 10 ? `0${minutes}` : String(minutes);
78
- const secondsStr = seconds < 10 ? `0${seconds}` : String(seconds);
79
- return `${hoursStr}:${minutesStr}:${secondsStr}.${milliseconds}`;
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
- exports.ClientRequestProperties = ClientRequestProperties;
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":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KustoHeaders } from \"./clientDetails\";\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 = Math.floor((duration % 1000) / 100);\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 = hours < 10 ? `0${hours}` : String(hours);\n const minutesStr = minutes < 10 ? `0${minutes}` : String(minutes);\n const secondsStr = seconds < 10 ? `0${seconds}` : String(seconds);\n\n return `${hoursStr}:${minutesStr}:${secondsStr}.${milliseconds}`;\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\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
- "use strict";
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
- const axios_1 = __importDefault(require("axios"));
10
- const core_util_1 = require("@azure/core-util");
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 axios_1.default.get(kustoUri + this.METADATA_ENDPOINT, {
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 (axios_1.default.isAxiosError(ex)) {
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 && core_util_1.isNode) || (ex.code === axios_1.default.AxiosError.ERR_NETWORK && !core_util_1.isNode)) {
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
- exports.CloudSettings = cloudSettings;
89
- exports.default = cloudSettings;
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":"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","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\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 ((ex.response?.status === 404 && isNode) || (ex.code === axios.AxiosError.ERR_NETWORK && !isNode)) {\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
+ {"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 { 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
- var __importDefault = (this && this.__importDefault) || function (mod) {
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 connectionBuilderBase_1.default {
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
- exports.default = KustoConnectionStringBuilder;
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":"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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\";\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"]}
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"]}