azure-kusto-data 7.0.0-alpha.0 → 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.
@@ -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 { 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 +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.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-namespace,@typescript-eslint/no-unused-vars -- This is the correct way to augment the global namespace\ndeclare namespace NodeJS {\n interface ProcessEnv {\n npm_package_name?: string;\n USERNAME?: string;\n USERDOMAIN?: string;\n }\n}\n\n// This regex allows all printable ascii, except spaces and chars we use in the format\nconst ReplaceRegex = /[^\\w.\\-()]/g;\nconst None = \"[none]\";\n\nexport class ClientDetails {\n readonly versionForTracing: string;\n\n constructor(public applicationNameForTracing: string | null, public userNameForTracing: string | null) {\n if (this.applicationNameForTracing === null) {\n this.applicationNameForTracing = ClientDetails.defaultApplication();\n }\n if (this.userNameForTracing === null) {\n this.userNameForTracing = ClientDetails.defaultUser();\n }\n this.versionForTracing = ClientDetails.defaultVersion();\n }\n\n static defaultApplication(): string {\n if (isNode) {\n return process?.env?.npm_package_name || process?.argv[1] || None;\n } else {\n return window?.location?.href || None;\n }\n }\n\n static defaultUser(): string {\n if (isNode) {\n let username: string | undefined;\n try {\n username = userInfo().username;\n } catch (err: any) {\n /* Ignore possible errors like \"uv_os_get_passwd returned ENOMEM\" that may occur in some environments. */\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (err.info?.code !== \"ENOMEM\") {\n throw err;\n }\n }\n\n return username || (process.env?.USERDOMAIN ? `${process.env?.USERDOMAIN}\\\\${process.env?.USERNAME}` : process?.env?.USERNAME) || None;\n } else {\n return None;\n }\n }\n\n static defaultVersion(): string {\n return this.formatHeader([\n [\"Kusto.JavaScript.Client\", SDK_VERSION],\n [\"Runtime.\" + (isNode ? \"Node\" : \"Browser\"), (isNode ? process.version : window?.navigator?.userAgent) || None],\n ]);\n }\n\n static escapeHeader(header: string, wrapInBrackets: boolean = true): string {\n const clean = header.substring(0, 100).replace(ReplaceRegex, \"_\");\n return wrapInBrackets ? `{${clean}}` : clean;\n }\n\n static formatHeader(args: [string, string][]): string {\n return args\n .filter(([key, val]) => key && val)\n .map(([key, val]) => `${key}:${this.escapeHeader(val)}`)\n .join(\"|\");\n }\n\n static setConnectorDetails(\n name: string,\n version: string,\n app_name: string | null = null,\n app_version: string | null = null,\n send_user: boolean = false,\n override_user: string | null = null,\n additional_fields: [string, string][] | null = null\n ): ClientDetails {\n const params: [string, string][] = [[\"Kusto.\" + this.escapeHeader(name, false), version]];\n\n app_name = app_name || this.defaultApplication();\n app_version = app_version || None;\n\n params.push([\"App.\" + this.escapeHeader(app_name), app_version]);\n params.push(...(additional_fields || []));\n\n let user = None;\n\n if (send_user) {\n user = override_user || this.defaultUser();\n }\n\n return new ClientDetails(this.formatHeader(params), user);\n }\n\n getHeaders(): Partial<KustoHeaders> {\n return {\n \"x-ms-client-version\": this.versionForTracing,\n \"x-ms-app\": this.applicationNameForTracing,\n \"x-ms-user\": this.userNameForTracing,\n };\n }\n}\n\nexport interface KustoHeaders {\n \"x-ms-client-version\": string | null;\n \"x-ms-app\": string | null;\n \"x-ms-user\": string | null;\n \"x-ms-client-request-id\": string | null;\n}\n"]}
1
+ {"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 +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\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 +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,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAW1C,MAAM,iBAAiB,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,WAAW,mCAAI,aAAa,CAAC;AAE1E;;GAEG;AACH,MAAM,aAAa;IAAnB;;QACI,sBAAiB,GAAG,wBAAwB,CAAC;QAC7C,qBAAgB,GAAc;YAC1B,aAAa,EAAE,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,0CAAE,eAAe,KAAI,mCAAmC;YACnF,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,sCAAsC;YACxD,sBAAsB,EAAE,+BAA+B;YACvD,sBAAsB,EAAE,iCAAiC;YACzD,sBAAsB,EAAE,wEAAwE;SACnG,CAAC;QACF,eAAU,GAAsC,EAAE,CAAC;QAMnD,iBAAY,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElF,oBAAe,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAsDhG,CAAC;IA5DG,YAAY,CAAC,GAAW,EAAE,IAAgB;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,gBAAgB,CAAC;IAC5E,CAAC;IAMD,KAAK,CAAC,sBAAsB,CAAC,QAAgB;;QACzC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACpC;QAED,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAqC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;gBACpG,OAAO,EAAE;oBACL,eAAe,EAAE,UAAU;oBAC3B,2EAA2E;oBAC3E,+FAA+F;oBAC/F,6FAA6F;oBAC7F,4EAA4E;oBAC5E,WAAW;oBACX,qHAAqH;oBACrH,4IAA4I;oBAC5I,gGAAgG;iBACnG;gBACD,YAAY,EAAE,CAAC;aAClB,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC;aAC9E;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,uDAAuD,QAAQ,EAAE,CAAC,CAAC;aACtF;SACJ;QAAC,OAAO,EAAE,EAAE;YACT,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;gBACxB,uHAAuH;gBACvH,IAAI,CAAC,MAAM,IAAI,CAAA,MAAA,EAAE,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,EAAE;oBACrG,kHAAkH;oBAClH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;iBACrD;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,MAAM,EAAE,EAAE,CAAC,CAAC;iBAC/E;aACJ;SACJ;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEO,YAAY,CAAC,QAAgB;QACjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACnD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,SAAoB,EAAE,WAAoB;QAC7D,OAAO,SAAS,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,eAAe,CAAC,CAAC;IAC5E,CAAC;CACJ;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,CAAC;AAC1C,eAAe,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport axios from \"axios\";\nimport { isNode } from \"@azure/core-util\";\n\nexport type CloudInfo = {\n LoginEndpoint: string;\n LoginMfaRequired: boolean;\n KustoClientAppId: string;\n KustoClientRedirectUri: string;\n KustoServiceResourceId: string;\n FirstPartyAuthorityUrl: string;\n};\n\nconst AXIOS_ERR_NETWORK = axios?.AxiosError?.ERR_NETWORK ?? \"ERR_NETWORK\";\n\n/**\n * This class holds data for all cloud instances, and returns the specific data instance by parsing the dns suffix from a URL\n */\nclass CloudSettings {\n METADATA_ENDPOINT = \"/v1/rest/auth/metadata\";\n defaultCloudInfo: CloudInfo = {\n LoginEndpoint: process?.env?.AadAuthorityUri || \"https://login.microsoftonline.com\",\n LoginMfaRequired: false,\n KustoClientAppId: \"db662dc1-0cfe-4e1c-a843-19a68e65be58\",\n KustoClientRedirectUri: \"https://microsoft/kustoclient\",\n KustoServiceResourceId: \"https://kusto.kusto.windows.net\",\n FirstPartyAuthorityUrl: \"https://login.microsoftonline.com/f8cdef31-a31e-4b4a-93e4-5f571e91255a\",\n };\n cloudCache: { [kustoUri: string]: CloudInfo } = {};\n\n writeToCache(url: string, info?: CloudInfo) {\n this.cloudCache[this.normalizeUrl(url)] = info ?? this.defaultCloudInfo;\n }\n\n getFromCache = (kustoUri: string) => this.cloudCache[this.normalizeUrl(kustoUri)];\n\n deleteFromCache = (kustoUri: string) => delete this.cloudCache[this.normalizeUrl(kustoUri)];\n\n async getCloudInfoForCluster(kustoUri: string): Promise<CloudInfo> {\n kustoUri = this.normalizeUrl(kustoUri);\n if (kustoUri in this.cloudCache) {\n return this.cloudCache[kustoUri];\n }\n\n try {\n const response = await axios.get<{ AzureAD: CloudInfo | undefined }>(kustoUri + this.METADATA_ENDPOINT, {\n headers: {\n \"Cache-Control\": \"no-cache\",\n // Disable caching - it's being cached in memory (Service returns max-age).\n // The original motivation for this is due to a CORS issue in Ibiza due to a dynamic subdomain.\n // The first dynamic subdomain is attached to the cache and for some reason isn't invalidated\n // when there is a new subdomain. It causes the request failure due to CORS.\n // Example:\n // Access to XMLHttpRequest at 'https://safrankecc.canadacentral.kusto.windows.net/v1/rest/auth/metadata' from origin\n // 'https://sandbox-46-11.reactblade.portal.azure.net' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value\n // 'https://sandbox-46-10.reactblade.portal.azure.net' that is not equal to the supplied origin.\n },\n maxRedirects: 0,\n });\n if (response.status === 200) {\n this.cloudCache[kustoUri] = response.data.AzureAD || this.defaultCloudInfo;\n } else {\n throw new Error(`Kusto returned an invalid cloud metadata response - ${response}`);\n }\n } catch (ex) {\n if (axios.isAxiosError(ex)) {\n // Axios library has a bug in browser, not propagating the status code, see: https://github.com/axios/axios/issues/5330\n if ((isNode && ex.response?.status === 404) || (!isNode && (!ex.code || ex.code === AXIOS_ERR_NETWORK))) {\n // For now as long not all proxies implement the metadata endpoint, if no endpoint exists return public cloud data\n this.cloudCache[kustoUri] = this.defaultCloudInfo;\n } else {\n throw new Error(`Failed to get cloud info for cluster ${kustoUri} - ${ex}`);\n }\n }\n }\n return this.cloudCache[kustoUri];\n }\n\n private normalizeUrl(kustoUri: string) {\n const url = new URL(kustoUri);\n const urlString = url.toString();\n if (urlString.endsWith(\"/\")) {\n return urlString.slice(0, urlString.length - 1);\n }\n return urlString;\n }\n\n static getAuthorityUri(cloudInfo: CloudInfo, authorityId?: string): string {\n return cloudInfo.LoginEndpoint + \"/\" + (authorityId || \"organizations\");\n }\n}\n\nconst cloudSettings = new CloudSettings();\nexport { cloudSettings as CloudSettings };\nexport default cloudSettings;\n"]}
1
+ {"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 +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.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"]}
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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"connectionBuilder.js","sourceRoot":"","sources":["../../src/connectionBuilder.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/*\n * A builder for Kusto connection strings\n * For browsers use withUserPrompt or provide the token yourself using withTokenProvider\n */\nexport class KustoConnectionStringBuilder extends KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n static withAadUserPasswordAuthentication(connectionString: string, userId: string, password: string, authorityId?: string): KustoConnectionStringBuilder {\n if (userId.trim().length === 0) throw new Error(\"Invalid user\");\n if (password.trim().length === 0) throw new Error(\"Invalid password\");\n\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n kcsb.aadUserId = userId;\n kcsb.password = password;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadApplicationKeyAuthentication(connectionString: string, aadAppId: string, appKey: string, authorityId?: string): KustoConnectionStringBuilder {\n if (aadAppId.trim().length === 0) throw new Error(\"Invalid app id\");\n if (appKey.trim().length === 0) throw new Error(\"Invalid app key\");\n\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = aadAppId;\n kcsb.applicationKey = appKey;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadApplicationCertificateAuthentication(\n connectionString: string,\n aadAppId: string,\n applicationCertificatePrivateKey?: string,\n authorityId?: string,\n applicationCertificateSendX5c?: boolean,\n applicationCertificatePrivatePath?: string\n ): KustoConnectionStringBuilder {\n if (aadAppId.trim().length === 0) throw new Error(\"Invalid app id\");\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n if (!applicationCertificatePrivatePath) {\n if (!applicationCertificatePrivateKey) {\n throw new Error(\"withAadApplicationCertificateAuthentication should specify either a cert key or a path\");\n }\n\n if (applicationCertificatePrivateKey.trim().length === 0) throw new Error(\"Invalid certificate key\");\n kcsb.applicationCertificatePrivateKey = applicationCertificatePrivateKey;\n } else {\n if (applicationCertificatePrivateKey) {\n throw new Error(\"withAadApplicationCertificateAuthentication should specify either a cert key or a path\");\n }\n\n kcsb.applicationCertificatePath = applicationCertificatePrivatePath;\n }\n\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = aadAppId;\n kcsb.applicationCertificateSendX5c = applicationCertificateSendX5c;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadDeviceAuthentication(\n connectionString: string,\n authorityId?: string,\n deviceCodeCallback?: (response: DeviceCodeInfo) => void\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.deviceCodeCallback = deviceCodeCallback;\n kcsb.useDeviceCodeAuth = true;\n\n return kcsb;\n }\n\n private static withAadManagedIdentities(\n connectionString: string,\n msiClientId?: string,\n authorityId?: string,\n timeoutMs?: number\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.msiClientId = msiClientId;\n kcsb.timeoutMs = timeoutMs;\n kcsb.useManagedIdentityAuth = true;\n\n return kcsb;\n }\n\n static withSystemManagedIdentity(connectionString: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n return this.withAadManagedIdentities(connectionString, undefined, authorityId, timeoutMs);\n }\n\n static withUserManagedIdentity(connectionString: string, msiClientId: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n return this.withAadManagedIdentities(connectionString, msiClientId, authorityId, timeoutMs);\n }\n\n static withAzLoginIdentity(connectionString: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.useAzLoginAuth = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.timeoutMs = timeoutMs;\n\n return kcsb;\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 /**\n * Use InteractiveBrowserCredentialNodeOptions in Node.JS and InteractiveBrowserCredentialInBrowserOptions in browser\n * For browser cors issue: you need to visit your app registration and update the redirect URI you're using to the type spa (for \"single page application\").\n * See: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity/test/manual/interactive-browser-credential\n */\n static withUserPrompt(\n connectionString: string,\n options?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n timeoutMs?: number\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n const { tenantId, clientId } = (options as InteractiveBrowserCredentialNodeOptions) || {};\n if (clientId) {\n throw new Error(\"clientId should be empty as it is retrived from the service management endpoint\");\n }\n\n kcsb.aadFederatedSecurity = true;\n kcsb.useUserPromptAuth = true;\n if (tenantId) {\n kcsb.authorityId = tenantId;\n } else if (options) {\n options.tenantId = kcsb.authorityId;\n }\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.js","sourceRoot":"","sources":["../../src/connectionBuilder.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/*\n * A builder for Kusto connection strings\n * For browsers use withUserPrompt or provide the token yourself using withTokenProvider\n */\nexport class KustoConnectionStringBuilder extends KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n static withAadUserPasswordAuthentication(connectionString: string, userId: string, password: string, authorityId?: string): KustoConnectionStringBuilder {\n if (userId.trim().length === 0) throw new Error(\"Invalid user\");\n if (password.trim().length === 0) throw new Error(\"Invalid password\");\n\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n kcsb.aadUserId = userId;\n kcsb.password = password;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadApplicationKeyAuthentication(connectionString: string, aadAppId: string, appKey: string, authorityId?: string): KustoConnectionStringBuilder {\n if (aadAppId.trim().length === 0) throw new Error(\"Invalid app id\");\n if (appKey.trim().length === 0) throw new Error(\"Invalid app key\");\n\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = aadAppId;\n kcsb.applicationKey = appKey;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadApplicationCertificateAuthentication(\n connectionString: string,\n aadAppId: string,\n applicationCertificatePrivateKey?: string,\n authorityId?: string,\n applicationCertificateSendX5c?: boolean,\n applicationCertificatePrivatePath?: string,\n ): KustoConnectionStringBuilder {\n if (aadAppId.trim().length === 0) throw new Error(\"Invalid app id\");\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n if (!applicationCertificatePrivatePath) {\n if (!applicationCertificatePrivateKey) {\n throw new Error(\"withAadApplicationCertificateAuthentication should specify either a cert key or a path\");\n }\n\n if (applicationCertificatePrivateKey.trim().length === 0) throw new Error(\"Invalid certificate key\");\n kcsb.applicationCertificatePrivateKey = applicationCertificatePrivateKey;\n } else {\n if (applicationCertificatePrivateKey) {\n throw new Error(\"withAadApplicationCertificateAuthentication should specify either a cert key or a path\");\n }\n\n kcsb.applicationCertificatePath = applicationCertificatePrivatePath;\n }\n\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = aadAppId;\n kcsb.applicationCertificateSendX5c = applicationCertificateSendX5c;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n\n return kcsb;\n }\n\n static withAadDeviceAuthentication(\n connectionString: string,\n authorityId?: string,\n deviceCodeCallback?: (response: DeviceCodeInfo) => void,\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.deviceCodeCallback = deviceCodeCallback;\n kcsb.useDeviceCodeAuth = true;\n\n return kcsb;\n }\n\n private static withAadManagedIdentities(\n connectionString: string,\n msiClientId?: string,\n authorityId?: string,\n timeoutMs?: number,\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.msiClientId = msiClientId;\n kcsb.timeoutMs = timeoutMs;\n kcsb.useManagedIdentityAuth = true;\n\n return kcsb;\n }\n\n static withSystemManagedIdentity(connectionString: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n return this.withAadManagedIdentities(connectionString, undefined, authorityId, timeoutMs);\n }\n\n static withUserManagedIdentity(connectionString: string, msiClientId: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n return this.withAadManagedIdentities(connectionString, msiClientId, authorityId, timeoutMs);\n }\n\n static withAzLoginIdentity(connectionString: string, authorityId?: string, timeoutMs?: number): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.useAzLoginAuth = true;\n if (authorityId) {\n kcsb.authorityId = authorityId;\n }\n kcsb.timeoutMs = timeoutMs;\n\n return kcsb;\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 /**\n * Use InteractiveBrowserCredentialNodeOptions in Node.JS and InteractiveBrowserCredentialInBrowserOptions in browser\n * For browser cors issue: you need to visit your app registration and update the redirect URI you're using to the type spa (for \"single page application\").\n * See: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity/test/manual/interactive-browser-credential\n */\n static withUserPrompt(\n connectionString: string,\n options?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n timeoutMs?: number,\n ): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n const { tenantId, clientId } = (options as InteractiveBrowserCredentialNodeOptions) || {};\n if (clientId) {\n throw new Error(\"clientId should be empty as it is retrived from the service management endpoint\");\n }\n\n kcsb.aadFederatedSecurity = true;\n kcsb.useUserPromptAuth = true;\n if (tenantId) {\n kcsb.authorityId = tenantId;\n } else if (options) {\n options.tenantId = kcsb.authorityId;\n }\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 +1 @@
1
- {"version":3,"file":"connectionBuilderBase.js","sourceRoot":"","sources":["../../src/connectionBuilderBase.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 { KeyOfType } from \"./typeUtilts.js\";\nimport { ClientDetails } from \"./clientDetails.js\";\n\ninterface MappingType {\n mappedTo: string;\n validNames: string[];\n isSecret?: boolean;\n isBool?: boolean;\n}\n\ntype KcsbMappedKeys = KeyOfType<KustoConnectionStringBuilderBase, string | boolean | undefined>;\n\n// This type gurantess that we don't have properties in KeywordMapping that don't exist in KustoConnectionStringBuilder\ntype KeywordMappingRecordType = Partial<Record<KcsbMappedKeys, MappingType>>;\n\nexport const KeywordMapping: KeywordMappingRecordType = Object.freeze<Readonly<KeywordMappingRecordType>>({\n dataSource: {\n mappedTo: \"Data Source\",\n validNames: [\"data source\", \"addr\", \"address\", \"network address\", \"server\"],\n },\n aadFederatedSecurity: {\n mappedTo: \"AAD Federated Security\",\n validNames: [\"aad federated security\", \"federated security\", \"federated\", \"fed\", \"aadfed\"],\n isBool: true,\n },\n initialCatalog: {\n mappedTo: \"Initial Catalog\",\n validNames: [\"initial catalog\", \"database\"],\n },\n aadUserId: {\n mappedTo: \"AAD User ID\",\n validNames: [\"aad user id\"],\n },\n password: {\n mappedTo: \"Password\",\n validNames: [\"password\", \"pwd\"],\n isSecret: true,\n },\n applicationClientId: {\n mappedTo: \"Application Client Id\",\n validNames: [\"application client id\", \"appclientid\"],\n },\n applicationKey: {\n mappedTo: \"Application Key\",\n validNames: [\"application key\", \"appkey\"],\n isSecret: true,\n },\n applicationCertificatePrivateKey: {\n mappedTo: \"Application Certificate PrivateKey\",\n validNames: [\"Application Certificate PrivateKey\"],\n isSecret: true,\n },\n applicationCertificateSendX5c: {\n mappedTo: \"Application Certificate x5c\",\n validNames: [\"application certificate x5c\", \"Application Certificate Send Public Certificate\", \"Application Certificate SendX5c\", \"SendX5c\"],\n isBool: true,\n },\n authorityId: {\n mappedTo: \"Authority Id\",\n validNames: [\"authority id\", \"authorityid\", \"authority\", \"tenantid\", \"tenant\", \"tid\"],\n },\n});\n\nconst getPropName = (key: string): [string, MappingType] => {\n const _key = key.trim().toLowerCase();\n\n for (const keyword of Object.keys(KeywordMapping)) {\n const k = KeywordMapping[keyword as KcsbMappedKeys];\n if (!k) {\n continue;\n }\n if (k.validNames.map((n) => n.trim().toLowerCase()).indexOf(_key) >= 0) {\n return [keyword, k];\n }\n }\n throw new Error(\"Failed to get prop: \" + key);\n};\n\nexport abstract class KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n dataSource?: string;\n aadFederatedSecurity?: boolean;\n initialCatalog?: string;\n aadUserId?: string;\n password?: string;\n applicationClientId?: string;\n msiClientId?: string;\n applicationKey?: string;\n applicationCertificatePrivateKey?: string;\n applicationCertificateSendX5c?: boolean;\n authorityId: string = \"organizations\";\n deviceCodeCallback?: (response: DeviceCodeInfo) => void;\n tokenProvider?: () => Promise<string>;\n timeoutMs?: number;\n accessToken?: string;\n useDeviceCodeAuth?: boolean;\n useUserPromptAuth?: boolean;\n useAzLoginAuth?: boolean;\n useManagedIdentityAuth?: boolean;\n interactiveCredentialOptions?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions;\n tokenCredential?: TokenCredential;\n\n // discarded from to mapped names for security\n applicationCertificatePath?: string;\n\n public applicationNameForTracing: string | null = null;\n public userNameForTracing: string | null = null;\n\n constructor(connectionString: string) {\n if (connectionString.trim().length === 0) throw new Error(\"Missing connection string\");\n\n if (connectionString.endsWith(\"/\") || connectionString.endsWith(\"\\\\\")) {\n connectionString = connectionString.slice(0, -1);\n }\n\n if (!!connectionString && connectionString.split(\";\")[0].indexOf(\"=\") === -1) {\n connectionString = \"Data Source=\" + connectionString;\n }\n\n const params = connectionString.split(\";\");\n for (const item of params) {\n const kvp = item.split(\"=\");\n const [mappingTypeName, mappingType] = getPropName(kvp[0]);\n if (mappingType.isBool) {\n this[mappingTypeName as KeyOfType<KustoConnectionStringBuilderBase, boolean | undefined>] = kvp[1].trim().toLowerCase() === \"true\";\n } else {\n this[mappingTypeName as KeyOfType<KustoConnectionStringBuilderBase, string | undefined>] = kvp[1]?.trim();\n }\n }\n\n if (!this.initialCatalog) {\n this.initialCatalog = KustoConnectionStringBuilderBase.DefaultDatabaseName;\n }\n }\n\n public clientDetails(): ClientDetails {\n return new ClientDetails(this.applicationNameForTracing, this.userNameForTracing);\n }\n\n /**\n * Sets the connector details for tracing purposes.\n *\n * @param name The name of the connector\n * @param version The version of the connector\n * @param appName The name of the containing application\n * @param appVersion The version of the containing application\n * @param sendUser Whether to send the username\n * @param overrideUser Override the username ( if sendUser is True )\n * @param additionalFields Additional fields to add to the header\n */\n public setConnectorDetails(\n name: string,\n version: string,\n appName?: string,\n appVersion?: string,\n sendUser: boolean = false,\n overrideUser?: string,\n additionalFields?: [string, string][]\n ): void {\n const clientDetails = ClientDetails.setConnectorDetails(name, version, appName, appVersion, sendUser, overrideUser, additionalFields);\n\n this.applicationNameForTracing = clientDetails.applicationNameForTracing;\n this.userNameForTracing = clientDetails.userNameForTracing;\n }\n\n toString(removeSecrets: boolean = true): string {\n return Object.entries(KeywordMapping)\n .map(([key, mappingType]) => {\n const value = this[key as KcsbMappedKeys];\n if (!mappingType || value === undefined) {\n return \"\";\n }\n if (mappingType.isSecret && removeSecrets) {\n return `${mappingType.mappedTo}=${KustoConnectionStringBuilderBase.SecretReplacement}`;\n }\n\n return `${mappingType.mappedTo}=${value.toString()}`;\n })\n .filter((x) => x !== \"\")\n .join(\";\");\n }\n}\n\nexport default KustoConnectionStringBuilderBase;\n"]}
1
+ {"version":3,"file":"connectionBuilderBase.js","sourceRoot":"","sources":["../../src/connectionBuilderBase.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 { KeyOfType } from \"./typeUtilts.js\";\nimport { ClientDetails } from \"./clientDetails.js\";\n\ninterface MappingType {\n mappedTo: string;\n validNames: string[];\n isSecret?: boolean;\n isBool?: boolean;\n}\n\ntype KcsbMappedKeys = KeyOfType<KustoConnectionStringBuilderBase, string | boolean | undefined>;\n\n// This type gurantess that we don't have properties in KeywordMapping that don't exist in KustoConnectionStringBuilder\ntype KeywordMappingRecordType = Partial<Record<KcsbMappedKeys, MappingType>>;\n\nexport const KeywordMapping: KeywordMappingRecordType = Object.freeze<Readonly<KeywordMappingRecordType>>({\n dataSource: {\n mappedTo: \"Data Source\",\n validNames: [\"data source\", \"addr\", \"address\", \"network address\", \"server\"],\n },\n aadFederatedSecurity: {\n mappedTo: \"AAD Federated Security\",\n validNames: [\"aad federated security\", \"federated security\", \"federated\", \"fed\", \"aadfed\"],\n isBool: true,\n },\n initialCatalog: {\n mappedTo: \"Initial Catalog\",\n validNames: [\"initial catalog\", \"database\"],\n },\n aadUserId: {\n mappedTo: \"AAD User ID\",\n validNames: [\"aad user id\"],\n },\n password: {\n mappedTo: \"Password\",\n validNames: [\"password\", \"pwd\"],\n isSecret: true,\n },\n applicationClientId: {\n mappedTo: \"Application Client Id\",\n validNames: [\"application client id\", \"appclientid\"],\n },\n applicationKey: {\n mappedTo: \"Application Key\",\n validNames: [\"application key\", \"appkey\"],\n isSecret: true,\n },\n applicationCertificatePrivateKey: {\n mappedTo: \"Application Certificate PrivateKey\",\n validNames: [\"Application Certificate PrivateKey\"],\n isSecret: true,\n },\n applicationCertificateSendX5c: {\n mappedTo: \"Application Certificate x5c\",\n validNames: [\"application certificate x5c\", \"Application Certificate Send Public Certificate\", \"Application Certificate SendX5c\", \"SendX5c\"],\n isBool: true,\n },\n authorityId: {\n mappedTo: \"Authority Id\",\n validNames: [\"authority id\", \"authorityid\", \"authority\", \"tenantid\", \"tenant\", \"tid\"],\n },\n});\n\nconst getPropName = (key: string): [string, MappingType] => {\n const _key = key.trim().toLowerCase();\n\n for (const keyword of Object.keys(KeywordMapping)) {\n const k = KeywordMapping[keyword as KcsbMappedKeys];\n if (!k) {\n continue;\n }\n if (k.validNames.map((n) => n.trim().toLowerCase()).indexOf(_key) >= 0) {\n return [keyword, k];\n }\n }\n throw new Error(\"Failed to get prop: \" + key);\n};\n\nexport abstract class KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n dataSource?: string;\n aadFederatedSecurity?: boolean;\n initialCatalog?: string;\n aadUserId?: string;\n password?: string;\n applicationClientId?: string;\n msiClientId?: string;\n applicationKey?: string;\n applicationCertificatePrivateKey?: string;\n applicationCertificateSendX5c?: boolean;\n authorityId: string = \"organizations\";\n deviceCodeCallback?: (response: DeviceCodeInfo) => void;\n tokenProvider?: () => Promise<string>;\n timeoutMs?: number;\n accessToken?: string;\n useDeviceCodeAuth?: boolean;\n useUserPromptAuth?: boolean;\n useAzLoginAuth?: boolean;\n useManagedIdentityAuth?: boolean;\n interactiveCredentialOptions?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions;\n tokenCredential?: TokenCredential;\n\n // discarded from to mapped names for security\n applicationCertificatePath?: string;\n\n public applicationNameForTracing: string | null = null;\n public userNameForTracing: string | null = null;\n\n constructor(connectionString: string) {\n if (connectionString.trim().length === 0) throw new Error(\"Missing connection string\");\n\n if (connectionString.endsWith(\"/\") || connectionString.endsWith(\"\\\\\")) {\n connectionString = connectionString.slice(0, -1);\n }\n\n if (!!connectionString && connectionString.split(\";\")[0].indexOf(\"=\") === -1) {\n connectionString = \"Data Source=\" + connectionString;\n }\n\n const params = connectionString.split(\";\");\n for (const item of params) {\n const kvp = item.split(\"=\");\n const [mappingTypeName, mappingType] = getPropName(kvp[0]);\n if (mappingType.isBool) {\n this[mappingTypeName as KeyOfType<KustoConnectionStringBuilderBase, boolean | undefined>] = kvp[1].trim().toLowerCase() === \"true\";\n } else {\n this[mappingTypeName as KeyOfType<KustoConnectionStringBuilderBase, string | undefined>] = kvp[1]?.trim();\n }\n }\n\n if (!this.initialCatalog) {\n this.initialCatalog = KustoConnectionStringBuilderBase.DefaultDatabaseName;\n }\n }\n\n public clientDetails(): ClientDetails {\n return new ClientDetails(this.applicationNameForTracing, this.userNameForTracing);\n }\n\n /**\n * Sets the connector details for tracing purposes.\n *\n * @param name The name of the connector\n * @param version The version of the connector\n * @param appName The name of the containing application\n * @param appVersion The version of the containing application\n * @param sendUser Whether to send the username\n * @param overrideUser Override the username ( if sendUser is True )\n * @param additionalFields Additional fields to add to the header\n */\n public setConnectorDetails(\n name: string,\n version: string,\n appName?: string,\n appVersion?: string,\n sendUser: boolean = false,\n overrideUser?: string,\n additionalFields?: [string, string][],\n ): void {\n const clientDetails = ClientDetails.setConnectorDetails(name, version, appName, appVersion, sendUser, overrideUser, additionalFields);\n\n this.applicationNameForTracing = clientDetails.applicationNameForTracing;\n this.userNameForTracing = clientDetails.userNameForTracing;\n }\n\n toString(removeSecrets: boolean = true): string {\n return Object.entries(KeywordMapping)\n .map(([key, mappingType]) => {\n const value = this[key as KcsbMappedKeys];\n if (!mappingType || value === undefined) {\n return \"\";\n }\n if (mappingType.isSecret && removeSecrets) {\n return `${mappingType.mappedTo}=${KustoConnectionStringBuilderBase.SecretReplacement}`;\n }\n\n return `${mappingType.mappedTo}=${value.toString()}`;\n })\n .filter((x) => x !== \"\")\n .join(\";\");\n }\n}\n\nexport default KustoConnectionStringBuilderBase;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC/C,YAAY,OAAe,EAAS,KAAwB,EAAS,iBAAyB,EAAS,OAA4B;QAC/H,KAAK,CAAC,OAAO,CAAC,CAAC;QADiB,UAAK,GAAL,KAAK,CAAmB;QAAS,sBAAiB,GAAjB,iBAAiB,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAqB;QAE/H,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAS,KAAwB;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADiB,UAAK,GAAL,KAAK,CAAmB;QAExD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class KustoAuthenticationError extends Error {\n constructor(message: string, public inner: Error | undefined, public tokenProviderName: string, public context: Record<string, any>) {\n super(message);\n this.name = \"KustoAuthenticationError\";\n }\n}\n\nexport class ThrottlingError extends Error {\n constructor(message: string, public inner: Error | undefined) {\n super(message);\n this.name = \"ThrottlingError\";\n }\n}\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC/C,YACI,OAAe,EACR,KAAwB,EACxB,iBAAyB,EACzB,OAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,UAAK,GAAL,KAAK,CAAmB;QACxB,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,YAAO,GAAP,OAAO,CAAqB;QAGnC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,CAAC;CACJ;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC,YACI,OAAe,EACR,KAAwB;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,UAAK,GAAL,KAAK,CAAmB;QAG/B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class KustoAuthenticationError extends Error {\n constructor(\n message: string,\n public inner: Error | undefined,\n public tokenProviderName: string,\n public context: Record<string, any>,\n ) {\n super(message);\n this.name = \"KustoAuthenticationError\";\n }\n}\n\nexport class ThrottlingError extends Error {\n constructor(\n message: string,\n public inner: Error | undefined,\n ) {\n super(message);\n this.name = \"ThrottlingError\";\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"kustoTrustedEndpoints.js","sourceRoot":"","sources":["../../src/kustoTrustedEndpoints.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getStringTailLowerCase } from \"./utils.js\";\nimport { default as endpointsData } from \"./wellKnownKustoEndpoints.json\";\n\nexport class MatchRule {\n constructor(\n /**\n * The suffix which the candidate must end with in order to match.\n */\n public suffix: string,\n /**\n * Indicates whether the match must be exact (the candidate must\n * not have any prefix) or not.\n */\n public exact: boolean\n ) {}\n}\n\nexport class FastSuffixMatcher {\n _suffixLength: number;\n rules: { [host: string]: MatchRule[] } = {};\n\n constructor(rules: MatchRule[] | null) {\n this._suffixLength = rules ? Math.min(...rules.map((r: MatchRule) => r.suffix.length)) : 0;\n const processedRules: { [host: string]: MatchRule[] } = {};\n rules?.forEach((rule) => {\n const suffix = getStringTailLowerCase(rule.suffix, this._suffixLength);\n if (!processedRules[suffix]) {\n processedRules[suffix] = [];\n }\n processedRules[suffix].push(rule);\n });\n this.rules = processedRules;\n }\n\n isMatch(candidate: string): boolean {\n if (candidate.length < this._suffixLength) {\n return false;\n }\n const matchRules = this.rules[getStringTailLowerCase(candidate, this._suffixLength)];\n\n if (matchRules) {\n for (const rule of matchRules) {\n if (candidate.endsWith(rule.suffix)) {\n if (candidate.length === rule.suffix.length || !rule.exact) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n static createFromExisting(existing: FastSuffixMatcher | null, rules: MatchRule[] | null): FastSuffixMatcher | null {\n if (!existing || !Object.keys(existing.rules).length) {\n return new FastSuffixMatcher(rules);\n }\n\n if (!rules) {\n return existing;\n }\n\n return new FastSuffixMatcher(rules.concat(...Object.values(existing.rules)));\n }\n}\n\nclass KustoTrustedEndpointsImpl {\n matchers: { [host: string]: FastSuffixMatcher } = {};\n additionalMatcher: FastSuffixMatcher | null = null;\n overrideMatcher: ((host: string) => boolean) | null = null; // We could unify this with matchers, but separating makes debugging easier\n\n constructor() {\n const etr = Object.entries(endpointsData.AllowedEndpointsByLogin);\n for (const [k, v] of etr) {\n const rules: MatchRule[] = [];\n v.AllowedKustoSuffixes.forEach((suffix: string) => rules.push(new MatchRule(suffix, false)));\n v.AllowedKustoHostnames.forEach((hostname: string) => rules.push(new MatchRule(hostname, true)));\n this.matchers[k] = new FastSuffixMatcher(rules);\n }\n }\n\n setOverridePolicy(matcher: ((host: string) => boolean) | null): void {\n this.overrideMatcher = matcher;\n }\n\n validateTrustedEndpoint(url: URL | string, loginEndpoint: string) {\n const uri = typeof url === \"string\" ? new URL(url) : url;\n const host: string = uri.hostname;\n // Check that target hostname is trusted and can accept security token\n this._validateHostnameIsTrusted(host != null ? host : url.toString(), loginEndpoint);\n }\n\n public addTrustedHosts(rules: MatchRule[] | null, replace: boolean): void {\n if (!rules?.length) {\n if (replace) {\n this.additionalMatcher = null;\n }\n return;\n }\n\n this.additionalMatcher = FastSuffixMatcher.createFromExisting(replace ? null : this.additionalMatcher, rules);\n }\n\n _validateHostnameIsTrusted(hostname: string, loginEndpoint: string): void {\n // The loopback is unconditionally allowed (since we trust ourselves)\n if (this._isLocalAddress(hostname)) {\n return;\n }\n\n // Either check the override matcher OR the matcher:\n const override = this.overrideMatcher;\n if (override != null) {\n if (override(hostname)) {\n return;\n }\n } else {\n const matcher = this.matchers[loginEndpoint?.toLowerCase()];\n if (matcher?.isMatch(hostname)) {\n return;\n }\n }\n\n const additionalMatcher = this.additionalMatcher;\n if (additionalMatcher?.isMatch(hostname)) {\n return;\n }\n\n throw new Error(`Can't communicate with '${hostname}' as this hostname is currently not trusted; please see https://aka.ms/kustotrustedendpoints`);\n }\n\n _isLocalAddress(host: string): boolean {\n if ([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"].find((c) => c === host)) {\n return true;\n }\n\n if (host.startsWith(\"127.\") && host.length <= 15 && host.length >= 9) {\n for (let i = 0; i < host.length; i++) {\n const ch = host.charAt(i);\n if (ch !== \".\" && (ch < \"0\" || ch > \"9\")) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n}\n\nexport const kustoTrustedEndpoints = new KustoTrustedEndpointsImpl();\n"]}
1
+ {"version":3,"file":"kustoTrustedEndpoints.js","sourceRoot":"","sources":["../../src/kustoTrustedEndpoints.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getStringTailLowerCase } from \"./utils.js\";\nimport { default as endpointsData } from \"./wellKnownKustoEndpoints.json\";\n\nexport class MatchRule {\n constructor(\n /**\n * The suffix which the candidate must end with in order to match.\n */\n public suffix: string,\n /**\n * Indicates whether the match must be exact (the candidate must\n * not have any prefix) or not.\n */\n public exact: boolean,\n ) {}\n}\n\nexport class FastSuffixMatcher {\n _suffixLength: number;\n rules: { [host: string]: MatchRule[] } = {};\n\n constructor(rules: MatchRule[] | null) {\n this._suffixLength = rules ? Math.min(...rules.map((r: MatchRule) => r.suffix.length)) : 0;\n const processedRules: { [host: string]: MatchRule[] } = {};\n rules?.forEach((rule) => {\n const suffix = getStringTailLowerCase(rule.suffix, this._suffixLength);\n if (!processedRules[suffix]) {\n processedRules[suffix] = [];\n }\n processedRules[suffix].push(rule);\n });\n this.rules = processedRules;\n }\n\n isMatch(candidate: string): boolean {\n if (candidate.length < this._suffixLength) {\n return false;\n }\n const matchRules = this.rules[getStringTailLowerCase(candidate, this._suffixLength)];\n\n if (matchRules) {\n for (const rule of matchRules) {\n if (candidate.endsWith(rule.suffix)) {\n if (candidate.length === rule.suffix.length || !rule.exact) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n static createFromExisting(existing: FastSuffixMatcher | null, rules: MatchRule[] | null): FastSuffixMatcher | null {\n if (!existing || !Object.keys(existing.rules).length) {\n return new FastSuffixMatcher(rules);\n }\n\n if (!rules) {\n return existing;\n }\n\n return new FastSuffixMatcher(rules.concat(...Object.values(existing.rules)));\n }\n}\n\nclass KustoTrustedEndpointsImpl {\n matchers: { [host: string]: FastSuffixMatcher } = {};\n additionalMatcher: FastSuffixMatcher | null = null;\n overrideMatcher: ((host: string) => boolean) | null = null; // We could unify this with matchers, but separating makes debugging easier\n\n constructor() {\n const etr = Object.entries(endpointsData.AllowedEndpointsByLogin);\n for (const [k, v] of etr) {\n const rules: MatchRule[] = [];\n v.AllowedKustoSuffixes.forEach((suffix: string) => rules.push(new MatchRule(suffix, false)));\n v.AllowedKustoHostnames.forEach((hostname: string) => rules.push(new MatchRule(hostname, true)));\n this.matchers[k] = new FastSuffixMatcher(rules);\n }\n }\n\n setOverridePolicy(matcher: ((host: string) => boolean) | null): void {\n this.overrideMatcher = matcher;\n }\n\n validateTrustedEndpoint(url: URL | string, loginEndpoint: string) {\n const uri = typeof url === \"string\" ? new URL(url) : url;\n const host: string = uri.hostname;\n // Check that target hostname is trusted and can accept security token\n this._validateHostnameIsTrusted(host != null ? host : url.toString(), loginEndpoint);\n }\n\n public addTrustedHosts(rules: MatchRule[] | null, replace: boolean): void {\n if (!rules?.length) {\n if (replace) {\n this.additionalMatcher = null;\n }\n return;\n }\n\n this.additionalMatcher = FastSuffixMatcher.createFromExisting(replace ? null : this.additionalMatcher, rules);\n }\n\n _validateHostnameIsTrusted(hostname: string, loginEndpoint: string): void {\n // The loopback is unconditionally allowed (since we trust ourselves)\n if (this._isLocalAddress(hostname)) {\n return;\n }\n\n // Either check the override matcher OR the matcher:\n const override = this.overrideMatcher;\n if (override != null) {\n if (override(hostname)) {\n return;\n }\n } else {\n const matcher = this.matchers[loginEndpoint?.toLowerCase()];\n if (matcher?.isMatch(hostname)) {\n return;\n }\n }\n\n const additionalMatcher = this.additionalMatcher;\n if (additionalMatcher?.isMatch(hostname)) {\n return;\n }\n\n throw new Error(`Can't communicate with '${hostname}' as this hostname is currently not trusted; please see https://aka.ms/kustotrustedendpoints`);\n }\n\n _isLocalAddress(host: string): boolean {\n if ([\"localhost\", \"127.0.0.1\", \"::1\", \"[::1]\"].find((c) => c === host)) {\n return true;\n }\n\n if (host.startsWith(\"127.\") && host.length <= 15 && host.length >= 9) {\n for (let i = 0; i < host.length; i++) {\n const ch = host.charAt(i);\n if (ch !== \".\" && (ch < \"0\" || ch > \"9\")) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n}\n\nexport const kustoTrustedEndpoints = new KustoTrustedEndpointsImpl();\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { parseKustoTimestampToMillis } from \"./timeUtils.js\";\n\nexport enum WellKnownDataSet {\n PrimaryResult = \"PrimaryResult\",\n QueryCompletionInformation = \"QueryCompletionInformation\",\n TableOfContents = \"TableOfContents\",\n QueryProperties = \"QueryProperties\",\n}\n\ntype DateTimeParser = (value: string | null) => any;\ntype TimeSpanParser = (value: string | null) => any;\n\nconst defaultDatetimeParser: DateTimeParser = (t: string | null) => (t ? new Date(t) : null);\nconst defaultTimespanParser: TimeSpanParser = parseKustoTimestampToMillis;\n\nexport interface Table {\n TableKind?: string;\n TableName: string;\n TableId?: number;\n Columns: Column[];\n Rows: any[][];\n}\n\ninterface Column {\n ColumnName: string;\n ColumnType?: string;\n DateType?: string;\n}\n\n/**\n * Represents a Kusto result row.\n * Use `dateTimeParser` and `timeSpanParser` to customize the parsing of the `datetime` and `timespan` types.\n * By default, `datetime` is parsed to a `Date` object and `timespan` is parsed to a number representing the number of milliseconds, as returned by subtracting two `Date` objects.\n */\nexport class KustoResultRow {\n columns: KustoResultColumn[];\n raw: { [ord: number]: any };\n\n [column: string]: any;\n\n constructor(\n columns: KustoResultColumn[],\n row: { [ord: number]: any },\n dateTimeParser: DateTimeParser = defaultDatetimeParser,\n timeSpanParser: TimeSpanParser = defaultTimespanParser\n ) {\n this.columns = columns.sort((a, b) => a.ordinal - b.ordinal);\n this.raw = row;\n\n for (const col of this.columns) {\n if (col.name == null) {\n continue;\n }\n let value = row[col.ordinal];\n\n if (col.type != null) {\n switch (col.type.toLowerCase()) {\n case \"datetime\":\n value = dateTimeParser(value);\n break;\n case \"timespan\":\n value = timeSpanParser(value);\n break;\n }\n this[col.name] = row[col.ordinal];\n }\n\n this[col.name] = value;\n }\n }\n\n *values() {\n for (let i = 0; i < this.columns.length; i++) {\n yield this.raw[i];\n }\n }\n\n getValueAt(index: number) {\n return this[this.columns[index].name as string];\n }\n\n /**\n * @deprecated use the compliant toJSON() instead\n */\n toJson() {\n return this.toJSON();\n }\n\n toJSON<T = Record<string, any>>(): T {\n const obj: Record<string, any> = {};\n\n for (const col of this.columns) {\n obj[col.name as string] = this[col.name as string];\n }\n\n return obj as T;\n }\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n\nexport class KustoResultColumn {\n name: string | null;\n type: string | null;\n ordinal: number;\n\n constructor(columnObj: { ColumnName?: string; ColumnType?: string; DateType?: string }, ordinal: number) {\n this.name = columnObj.ColumnName ?? null;\n // TODO: should validate type? should coarse value to type?\n this.type = (columnObj.ColumnType || columnObj.DateType) ?? null;\n this.ordinal = ordinal;\n }\n}\n\nexport class KustoResultTable {\n name: string;\n id?: number;\n kind?: string;\n columns: KustoResultColumn[];\n readonly _rows: any[];\n private _dateTimeParser: DateTimeParser = defaultDatetimeParser;\n private _timeSpanParser: TimeSpanParser = defaultTimespanParser;\n\n [row: number]: any;\n\n constructor(tableObj: Table) {\n this.name = tableObj.TableName;\n if (tableObj.TableId !== undefined) {\n this.id = tableObj.TableId;\n }\n\n if (tableObj.TableKind) {\n this.kind = tableObj.TableKind;\n }\n\n this.columns = tableObj.Columns.map((item, index) => new KustoResultColumn(item, index));\n this._rows = tableObj.Rows;\n\n if (this._rows && this._rows.length > 0) {\n for (let i = 0; i < tableObj.Rows.length; i++) {\n Object.defineProperty(this, i, { get: () => new KustoResultRow(this.columns, this._rows[i]) });\n }\n }\n }\n\n get timeSpanParser(): TimeSpanParser {\n return this._timeSpanParser;\n }\n\n set timeSpanParser(value: TimeSpanParser) {\n this._timeSpanParser = value;\n }\n get dateTimeParser(): DateTimeParser {\n return this._dateTimeParser;\n }\n\n set dateTimeParser(value: DateTimeParser) {\n this._dateTimeParser = value;\n }\n\n *rows() {\n for (const row of this._rows) {\n yield new KustoResultRow(this.columns, row, this._dateTimeParser, this._timeSpanParser);\n }\n }\n\n /**\n * @deprecated use the compliant toJSON() instead\n */\n toJson() {\n return this.toJSON();\n }\n\n toJSON<T = Record<string, any>>(): {\n name: string;\n data: T[];\n } {\n const table: {\n name: string;\n data: T[];\n } = {\n name: this.name,\n data: [],\n };\n for (const row of this.rows()) {\n table.data.push(row.toJSON<T>());\n }\n\n return table;\n }\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n"]}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { parseKustoTimestampToMillis } from \"./timeUtils.js\";\n\nexport enum WellKnownDataSet {\n PrimaryResult = \"PrimaryResult\",\n QueryCompletionInformation = \"QueryCompletionInformation\",\n TableOfContents = \"TableOfContents\",\n QueryProperties = \"QueryProperties\",\n}\n\ntype DateTimeParser = (value: string | null) => any;\ntype TimeSpanParser = (value: string | null) => any;\n\nconst defaultDatetimeParser: DateTimeParser = (t: string | null) => (t ? new Date(t) : null);\nconst defaultTimespanParser: TimeSpanParser = parseKustoTimestampToMillis;\n\nexport interface Table {\n TableKind?: string;\n TableName: string;\n TableId?: number;\n Columns: Column[];\n Rows: any[][];\n}\n\ninterface Column {\n ColumnName: string;\n ColumnType?: string;\n DateType?: string;\n}\n\n/**\n * Represents a Kusto result row.\n * Use `dateTimeParser` and `timeSpanParser` to customize the parsing of the `datetime` and `timespan` types.\n * By default, `datetime` is parsed to a `Date` object and `timespan` is parsed to a number representing the number of milliseconds, as returned by subtracting two `Date` objects.\n */\nexport class KustoResultRow {\n columns: KustoResultColumn[];\n raw: { [ord: number]: any };\n\n [column: string]: any;\n\n constructor(\n columns: KustoResultColumn[],\n row: { [ord: number]: any },\n dateTimeParser: DateTimeParser = defaultDatetimeParser,\n timeSpanParser: TimeSpanParser = defaultTimespanParser,\n ) {\n this.columns = columns.sort((a, b) => a.ordinal - b.ordinal);\n this.raw = row;\n\n for (const col of this.columns) {\n if (col.name == null) {\n continue;\n }\n let value = row[col.ordinal];\n\n if (col.type != null) {\n switch (col.type.toLowerCase()) {\n case \"datetime\":\n value = dateTimeParser(value);\n break;\n case \"timespan\":\n value = timeSpanParser(value);\n break;\n }\n this[col.name] = row[col.ordinal];\n }\n\n this[col.name] = value;\n }\n }\n\n *values() {\n for (let i = 0; i < this.columns.length; i++) {\n yield this.raw[i];\n }\n }\n\n getValueAt(index: number) {\n return this[this.columns[index].name as string];\n }\n\n /**\n * @deprecated use the compliant toJSON() instead\n */\n toJson() {\n return this.toJSON();\n }\n\n toJSON<T = Record<string, any>>(): T {\n const obj: Record<string, any> = {};\n\n for (const col of this.columns) {\n obj[col.name as string] = this[col.name as string];\n }\n\n return obj as T;\n }\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n\nexport class KustoResultColumn {\n name: string | null;\n type: string | null;\n ordinal: number;\n\n constructor(columnObj: { ColumnName?: string; ColumnType?: string; DateType?: string }, ordinal: number) {\n this.name = columnObj.ColumnName ?? null;\n // TODO: should validate type? should coarse value to type?\n this.type = (columnObj.ColumnType || columnObj.DateType) ?? null;\n this.ordinal = ordinal;\n }\n}\n\nexport class KustoResultTable {\n name: string;\n id?: number;\n kind?: string;\n columns: KustoResultColumn[];\n readonly _rows: any[];\n private _dateTimeParser: DateTimeParser = defaultDatetimeParser;\n private _timeSpanParser: TimeSpanParser = defaultTimespanParser;\n\n [row: number]: any;\n\n constructor(tableObj: Table) {\n this.name = tableObj.TableName;\n if (tableObj.TableId !== undefined) {\n this.id = tableObj.TableId;\n }\n\n if (tableObj.TableKind) {\n this.kind = tableObj.TableKind;\n }\n\n this.columns = tableObj.Columns.map((item, index) => new KustoResultColumn(item, index));\n this._rows = tableObj.Rows;\n\n if (this._rows && this._rows.length > 0) {\n for (let i = 0; i < tableObj.Rows.length; i++) {\n Object.defineProperty(this, i, { get: () => new KustoResultRow(this.columns, this._rows[i]) });\n }\n }\n }\n\n get timeSpanParser(): TimeSpanParser {\n return this._timeSpanParser;\n }\n\n set timeSpanParser(value: TimeSpanParser) {\n this._timeSpanParser = value;\n }\n get dateTimeParser(): DateTimeParser {\n return this._dateTimeParser;\n }\n\n set dateTimeParser(value: DateTimeParser) {\n this._dateTimeParser = value;\n }\n\n *rows() {\n for (const row of this._rows) {\n yield new KustoResultRow(this.columns, row, this._dateTimeParser, this._timeSpanParser);\n }\n }\n\n /**\n * @deprecated use the compliant toJSON() instead\n */\n toJson() {\n return this.toJSON();\n }\n\n toJSON<T = Record<string, any>>(): {\n name: string;\n data: T[];\n } {\n const table: {\n name: string;\n data: T[];\n } = {\n name: this.name,\n data: [],\n };\n for (const row of this.rows()) {\n table.data.push(row.toJSON<T>());\n }\n\n return table;\n }\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KustoResultTable, Table, WellKnownDataSet } from \"./models.js\";\n\ninterface V2DataSetHeaderFrame {\n FrameType: \"DataSetHeader\";\n IsProgressive: boolean;\n Version: string;\n}\n\ninterface V2DataSetTableFrame extends Table {\n FrameType: \"DataTable\";\n TableId: number;\n TableName: string;\n TableKind: string;\n Columns: Column[];\n Rows: any[][];\n}\n\ninterface V2DataSetCompletionFrame {\n FrameType: \"DataSetCompletion\";\n HasErrors: boolean;\n Cancelled: boolean;\n}\n\nexport type V2Frames = (V2DataSetHeaderFrame | V2DataSetTableFrame | V2DataSetCompletionFrame)[];\n\nexport type V1 = { Tables: Table[] };\n\ninterface Column {\n ColumnName: string;\n ColumnType: string;\n}\n\nenum ErrorLevels {\n Warning = 3,\n Error = 2,\n}\n\nexport abstract class KustoResponseDataSet {\n tables: KustoResultTable[];\n tableNames: string[];\n primaryResults: KustoResultTable[];\n statusTable?: KustoResultTable;\n abstract dataSetCompletion: {\n HasErrors: boolean;\n OneApiErrors?: any[];\n } | null;\n\n abstract getStatusColumn(): string;\n\n abstract getErrorColumn(): string;\n\n abstract getCridColumn(): string;\n\n protected constructor(tables: Table[]) {\n let _tables = tables;\n\n if (!Array.isArray(tables)) {\n _tables = [tables];\n }\n\n this.tables = [];\n this.tableNames = [];\n this.primaryResults = [];\n for (const table of _tables) {\n const resultTable = new KustoResultTable(table);\n this.tables.push(resultTable);\n this.tableNames.push(resultTable.name);\n\n if (resultTable.kind === WellKnownDataSet.PrimaryResult) {\n this.primaryResults.push(resultTable);\n } else if (resultTable.kind === WellKnownDataSet.QueryCompletionInformation) {\n this.statusTable = resultTable;\n }\n }\n }\n\n getErrorsCount(): { warnings: number; errors: number } {\n let errors = 0;\n let warnings = 0;\n\n if (this.statusTable && this.statusTable._rows.length !== 0) {\n let minLevel = ErrorLevels.Error;\n const errorColumn = this.getErrorColumn();\n for (const row of this.statusTable.rows()) {\n if (row[errorColumn] <= minLevel) {\n if (row[errorColumn] < minLevel) {\n minLevel = row[errorColumn];\n errors = 1;\n } else if (row[errorColumn] === minLevel) {\n errors += 1;\n }\n } else if (row[errorColumn] === warnings) {\n warnings += 1;\n }\n }\n }\n if (this.dataSetCompletion && this.dataSetCompletion.HasErrors) {\n errors += 1;\n }\n\n return { warnings, errors };\n }\n\n private getErrorsByLevel(errorLevel: ErrorLevels) {\n const result = [];\n if (this.statusTable && this.statusTable._rows.length !== 0) {\n const errorColumn = this.getErrorColumn();\n const cridColumn = this.getCridColumn();\n const statusColumn = this.getStatusColumn();\n for (const row of this.statusTable.rows()) {\n if (row[errorColumn] <= errorLevel) {\n result.push(`Please provide the following data to Kusto: CRID=${row[cridColumn]} Description: ${row[statusColumn]}`);\n }\n }\n }\n return result;\n }\n\n getExceptions(): string[] {\n const result = this.getErrorsByLevel(ErrorLevels.Error);\n if (this.dataSetCompletion && this.dataSetCompletion.HasErrors && this.dataSetCompletion.OneApiErrors) {\n for (const row of this.dataSetCompletion.OneApiErrors) {\n result.push((row as { error: { \"@message\": string } }).error[\"@message\"]);\n }\n }\n return result;\n }\n\n getWarnings(): string[] {\n return this.getErrorsByLevel(ErrorLevels.Warning);\n }\n}\n\n// TODO: should only expose 1 response type, versioning should be handled internally\nexport class KustoResponseDataSetV1 extends KustoResponseDataSet {\n version: string;\n dataSetCompletion: null = null;\n\n getStatusColumn() {\n return \"StatusDescription\";\n }\n\n getCridColumn() {\n return \"ClientActivityId\";\n }\n\n getErrorColumn() {\n return \"Severity\";\n }\n\n static getTablesKinds(): { [name: string]: WellKnownDataSet } {\n return {\n QueryResult: WellKnownDataSet.PrimaryResult,\n QueryProperties: WellKnownDataSet.QueryProperties,\n QueryStatus: WellKnownDataSet.QueryCompletionInformation,\n PrimaryResult: WellKnownDataSet.PrimaryResult,\n };\n }\n\n constructor(data: V1) {\n super(data.Tables);\n\n if (this.tables.length <= 2) {\n if (this.tables[0].kind === undefined) {\n this.tables[0].kind = WellKnownDataSet.PrimaryResult;\n this.primaryResults.push(this.tables[0]);\n }\n\n this.tables[0].id = 0;\n\n if (this.tables.length === 2) {\n this.tables[1].kind = WellKnownDataSet.QueryProperties;\n this.tables[1].id = 1;\n }\n } else {\n const toc = this.tables[this.tables.length - 1];\n toc.kind = WellKnownDataSet.TableOfContents;\n toc.id = this.tables.length - 1;\n for (let i = 0; i < this.tables.length - 1; i++) {\n const current = toc[i] as {\n Name: string;\n Id: number;\n Kind: string;\n };\n this.tables[i].name = current.Name;\n this.tables[i].id = current.Id;\n this.tables[i].kind = KustoResponseDataSetV1.getTablesKinds()[current.Kind];\n\n if (this.tables[i].kind === WellKnownDataSet.PrimaryResult) {\n this.primaryResults.push(this.tables[i]);\n }\n }\n }\n\n this.version = \"1.0\";\n }\n}\n\n// TODO: should only expose 1 response type, versioning should be handled internally\nexport class KustoResponseDataSetV2 extends KustoResponseDataSet {\n dataSetHeader: V2DataSetHeaderFrame | null;\n dataSetCompletion: V2DataSetCompletionFrame | null;\n version: string;\n\n getStatusColumn() {\n return \"Payload\";\n }\n\n getErrorColumn() {\n return \"Level\";\n }\n\n getCridColumn() {\n return \"ClientRequestId\";\n }\n\n constructor(data: V2Frames) {\n const dataTables: V2DataSetTableFrame[] = [];\n let dataSetHeader: V2DataSetHeaderFrame | null = null;\n let dataSetCompletion: V2DataSetCompletionFrame | null = null;\n data.forEach((frame) => {\n switch (frame.FrameType) {\n case \"DataTable\":\n dataTables.push(frame);\n break;\n case \"DataSetHeader\":\n dataSetHeader = frame;\n break;\n case \"DataSetCompletion\":\n dataSetCompletion = frame;\n break;\n }\n });\n\n super(dataTables);\n this.dataSetHeader = dataSetHeader;\n this.dataSetCompletion = dataSetCompletion;\n this.version = \"2.0\";\n }\n}\n"]}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { KustoResultTable, Table, WellKnownDataSet } from \"./models.js\";\n\ninterface V2DataSetHeaderFrame {\n FrameType: \"DataSetHeader\";\n IsProgressive: boolean;\n Version: string;\n}\n\ninterface V2DataSetTableFrame extends Table {\n FrameType: \"DataTable\";\n TableId: number;\n TableName: string;\n TableKind: string;\n Columns: Column[];\n Rows: any[][];\n}\n\ninterface V2DataSetCompletionFrame {\n FrameType: \"DataSetCompletion\";\n HasErrors: boolean;\n Cancelled: boolean;\n}\n\nexport type V2Frames = (V2DataSetHeaderFrame | V2DataSetTableFrame | V2DataSetCompletionFrame)[];\n\nexport type V1 = { Tables: Table[] };\n\ninterface Column {\n ColumnName: string;\n ColumnType: string;\n}\n\nenum ErrorLevels {\n Warning = 3,\n Error = 2,\n}\n\nexport abstract class KustoResponseDataSet {\n tables: KustoResultTable[];\n tableNames: string[];\n primaryResults: KustoResultTable[];\n statusTable?: KustoResultTable;\n abstract dataSetCompletion: {\n HasErrors: boolean;\n OneApiErrors?: any[];\n } | null;\n\n abstract getStatusColumn(): string;\n\n abstract getErrorColumn(): string;\n\n abstract getCridColumn(): string;\n\n protected constructor(tables: Table[]) {\n let _tables = tables;\n\n if (!Array.isArray(tables)) {\n _tables = [tables];\n }\n\n this.tables = [];\n this.tableNames = [];\n this.primaryResults = [];\n for (const table of _tables) {\n const resultTable = new KustoResultTable(table);\n this.tables.push(resultTable);\n this.tableNames.push(resultTable.name);\n\n if (resultTable.kind === WellKnownDataSet.PrimaryResult) {\n this.primaryResults.push(resultTable);\n } else if (resultTable.kind === WellKnownDataSet.QueryCompletionInformation) {\n this.statusTable = resultTable;\n }\n }\n }\n\n getErrorsCount(): { warnings: number; errors: number } {\n let errors = 0;\n let warnings = 0;\n\n if (this.statusTable && this.statusTable._rows.length !== 0) {\n let minLevel = ErrorLevels.Error;\n const errorColumn = this.getErrorColumn();\n for (const row of this.statusTable.rows()) {\n if (row[errorColumn] <= minLevel) {\n if (row[errorColumn] < minLevel) {\n minLevel = row[errorColumn];\n errors = 1;\n } else if (row[errorColumn] === minLevel) {\n errors += 1;\n }\n } else if (row[errorColumn] === warnings) {\n warnings += 1;\n }\n }\n }\n if (this.dataSetCompletion && this.dataSetCompletion.HasErrors) {\n errors += 1;\n }\n\n return { warnings, errors };\n }\n\n private getErrorsByLevel(errorLevel: ErrorLevels) {\n const result = [];\n if (this.statusTable && this.statusTable._rows.length !== 0) {\n const errorColumn = this.getErrorColumn();\n const cridColumn = this.getCridColumn();\n const statusColumn = this.getStatusColumn();\n for (const row of this.statusTable.rows()) {\n if (row[errorColumn] <= errorLevel) {\n result.push(`Please provide the following data to Kusto: CRID=${row[cridColumn]} Description: ${row[statusColumn]}`);\n }\n }\n }\n return result;\n }\n\n getExceptions(): string[] {\n const result = this.getErrorsByLevel(ErrorLevels.Error);\n if (this.dataSetCompletion && this.dataSetCompletion.HasErrors && this.dataSetCompletion.OneApiErrors) {\n for (const row of this.dataSetCompletion.OneApiErrors) {\n result.push((row as { error: { \"@message\": string } }).error[\"@message\"]);\n }\n }\n return result;\n }\n\n getWarnings(): string[] {\n return this.getErrorsByLevel(ErrorLevels.Warning);\n }\n}\n\n// TODO: should only expose 1 response type, versioning should be handled internally\nexport class KustoResponseDataSetV1 extends KustoResponseDataSet {\n version: string;\n dataSetCompletion: null = null;\n\n getStatusColumn() {\n return \"StatusDescription\";\n }\n\n getCridColumn() {\n return \"ClientActivityId\";\n }\n\n getErrorColumn() {\n return \"Severity\";\n }\n\n static getTablesKinds(): { [name: string]: WellKnownDataSet } {\n return {\n QueryResult: WellKnownDataSet.PrimaryResult,\n QueryProperties: WellKnownDataSet.QueryProperties,\n QueryStatus: WellKnownDataSet.QueryCompletionInformation,\n PrimaryResult: WellKnownDataSet.PrimaryResult,\n };\n }\n\n constructor(data: V1) {\n super(data.Tables);\n\n if (this.tables.length <= 2) {\n if (this.tables[0].kind === undefined) {\n this.tables[0].kind = WellKnownDataSet.PrimaryResult;\n this.primaryResults.push(this.tables[0]);\n }\n\n this.tables[0].id = 0;\n\n if (this.tables.length === 2) {\n this.tables[1].kind = WellKnownDataSet.QueryProperties;\n this.tables[1].id = 1;\n }\n } else {\n const toc = this.tables[this.tables.length - 1];\n toc.kind = WellKnownDataSet.TableOfContents;\n toc.id = this.tables.length - 1;\n for (let i = 0; i < this.tables.length - 1; i++) {\n const current = toc[i] as {\n Name: string;\n Id: number;\n Kind: string;\n };\n this.tables[i].name = current.Name;\n this.tables[i].id = current.Id;\n this.tables[i].kind = KustoResponseDataSetV1.getTablesKinds()[current.Kind];\n\n if (this.tables[i].kind === WellKnownDataSet.PrimaryResult) {\n this.primaryResults.push(this.tables[i]);\n }\n }\n }\n\n this.version = \"1.0\";\n }\n}\n\n// TODO: should only expose 1 response type, versioning should be handled internally\nexport class KustoResponseDataSetV2 extends KustoResponseDataSet {\n dataSetHeader: V2DataSetHeaderFrame | null;\n dataSetCompletion: V2DataSetCompletionFrame | null;\n version: string;\n\n getStatusColumn() {\n return \"Payload\";\n }\n\n getErrorColumn() {\n return \"Level\";\n }\n\n getCridColumn() {\n return \"ClientRequestId\";\n }\n\n constructor(data: V2Frames) {\n const dataTables: V2DataSetTableFrame[] = [];\n let dataSetHeader: V2DataSetHeaderFrame | null = null;\n let dataSetCompletion: V2DataSetCompletionFrame | null = null;\n data.forEach((frame) => {\n switch (frame.FrameType) {\n case \"DataTable\":\n dataTables.push(frame);\n break;\n case \"DataSetHeader\":\n dataSetHeader = frame;\n break;\n case \"DataSetCompletion\":\n dataSetCompletion = frame;\n break;\n }\n });\n\n super(dataTables);\n this.dataSetHeader = dataSetHeader;\n this.dataSetCompletion = dataSetCompletion;\n this.version = \"2.0\";\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAqB,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE/I,MAAM,OAAO,SAAS;IAGlB,YAAY,IAAkC;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAClJ;aAAM,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;YAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,2BAA2B,CAC9D,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACjB,CAAC;SACL;aAAM,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACrH,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,mCAAmC,CACtE,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,gCAAgC,EACrC,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACjB,CAAC;SACL;aAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACpC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAChI;aAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAChH;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAqB,CAAC,CAAC;SAC5F;aAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACnH;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACvF;aAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/I;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3G;IACL,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,OAAO,IAAI,CAAC;SACf;QACD,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YACtD,OAAO,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,wBAAwB,CAC9B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EACvC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAClC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EACnC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAC/B,CAAC;SACL;IACL,CAAC;CACJ;AAED,eAAe,SAAS,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport KustoConnectionStringBuilder from \"./connectionBuilder.js\";\nimport * as TokenProvider from \"./tokenProvider.js\";\nimport { KustoAuthenticationError } from \"./errors.js\";\nimport { BasicTokenProvider, CallbackTokenProvider, TokenProviderBase, UserPromptProvider, TokenCredentialProvider } from \"./tokenProvider.js\";\n\nexport class AadHelper {\n tokenProvider?: TokenProviderBase;\n\n constructor(kcsb: KustoConnectionStringBuilder) {\n if (!kcsb.dataSource) {\n throw new Error(\"Invalid string builder - missing dataSource\");\n }\n\n if (!!kcsb.aadUserId && !!kcsb.password) {\n this.tokenProvider = new TokenProvider.UserPassTokenProvider(kcsb.dataSource, kcsb.aadUserId, kcsb.password, kcsb.authorityId, kcsb.timeoutMs);\n } else if (!!kcsb.applicationClientId && !!kcsb.applicationKey) {\n this.tokenProvider = new TokenProvider.ApplicationKeyTokenProvider(\n kcsb.dataSource,\n kcsb.applicationClientId,\n kcsb.applicationKey,\n kcsb.authorityId,\n kcsb.timeoutMs\n );\n } else if (!!kcsb.applicationClientId && (!!kcsb.applicationCertificatePrivateKey || !!kcsb.applicationCertificatePath)) {\n this.tokenProvider = new TokenProvider.ApplicationCertificateTokenProvider(\n kcsb.dataSource,\n kcsb.applicationClientId,\n kcsb.applicationCertificatePrivateKey,\n kcsb.applicationCertificatePath,\n kcsb.applicationCertificateSendX5c,\n kcsb.authorityId,\n kcsb.timeoutMs\n );\n } else if (kcsb.useManagedIdentityAuth) {\n this.tokenProvider = new TokenProvider.MsiTokenProvider(kcsb.dataSource, kcsb.msiClientId, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.useAzLoginAuth) {\n this.tokenProvider = new TokenProvider.AzCliTokenProvider(kcsb.dataSource, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.accessToken) {\n this.tokenProvider = new BasicTokenProvider(kcsb.dataSource, kcsb.accessToken as string);\n } else if (kcsb.useUserPromptAuth) {\n this.tokenProvider = new UserPromptProvider(kcsb.dataSource, kcsb.interactiveCredentialOptions, kcsb.timeoutMs);\n } else if (kcsb.tokenProvider) {\n this.tokenProvider = new CallbackTokenProvider(kcsb.dataSource, kcsb.tokenProvider);\n } else if (kcsb.useDeviceCodeAuth) {\n this.tokenProvider = new TokenProvider.DeviceLoginTokenProvider(kcsb.dataSource, kcsb.deviceCodeCallback, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.tokenCredential) {\n this.tokenProvider = new TokenCredentialProvider(kcsb.dataSource, kcsb.tokenCredential, kcsb.timeoutMs);\n }\n }\n\n async getAuthHeader(): Promise<string | null> {\n if (!this.tokenProvider) {\n return null;\n }\n try {\n const token = await this.tokenProvider.acquireToken();\n return `${token.tokenType} ${token.accessToken}`;\n } catch (e) {\n throw new KustoAuthenticationError(\n e instanceof Error ? e.message : `${e}`,\n e instanceof Error ? e : undefined,\n this.tokenProvider.constructor.name,\n this.tokenProvider.context()\n );\n }\n }\n}\n\nexport default AadHelper;\n"]}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport KustoConnectionStringBuilder from \"./connectionBuilder.js\";\nimport * as TokenProvider from \"./tokenProvider.js\";\nimport { KustoAuthenticationError } from \"./errors.js\";\nimport { BasicTokenProvider, CallbackTokenProvider, TokenProviderBase, UserPromptProvider, TokenCredentialProvider } from \"./tokenProvider.js\";\n\nexport class AadHelper {\n tokenProvider?: TokenProviderBase;\n\n constructor(kcsb: KustoConnectionStringBuilder) {\n if (!kcsb.dataSource) {\n throw new Error(\"Invalid string builder - missing dataSource\");\n }\n\n if (!!kcsb.aadUserId && !!kcsb.password) {\n this.tokenProvider = new TokenProvider.UserPassTokenProvider(kcsb.dataSource, kcsb.aadUserId, kcsb.password, kcsb.authorityId, kcsb.timeoutMs);\n } else if (!!kcsb.applicationClientId && !!kcsb.applicationKey) {\n this.tokenProvider = new TokenProvider.ApplicationKeyTokenProvider(\n kcsb.dataSource,\n kcsb.applicationClientId,\n kcsb.applicationKey,\n kcsb.authorityId,\n kcsb.timeoutMs,\n );\n } else if (!!kcsb.applicationClientId && (!!kcsb.applicationCertificatePrivateKey || !!kcsb.applicationCertificatePath)) {\n this.tokenProvider = new TokenProvider.ApplicationCertificateTokenProvider(\n kcsb.dataSource,\n kcsb.applicationClientId,\n kcsb.applicationCertificatePrivateKey,\n kcsb.applicationCertificatePath,\n kcsb.applicationCertificateSendX5c,\n kcsb.authorityId,\n kcsb.timeoutMs,\n );\n } else if (kcsb.useManagedIdentityAuth) {\n this.tokenProvider = new TokenProvider.MsiTokenProvider(kcsb.dataSource, kcsb.msiClientId, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.useAzLoginAuth) {\n this.tokenProvider = new TokenProvider.AzCliTokenProvider(kcsb.dataSource, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.accessToken) {\n this.tokenProvider = new BasicTokenProvider(kcsb.dataSource, kcsb.accessToken as string);\n } else if (kcsb.useUserPromptAuth) {\n this.tokenProvider = new UserPromptProvider(kcsb.dataSource, kcsb.interactiveCredentialOptions, kcsb.timeoutMs);\n } else if (kcsb.tokenProvider) {\n this.tokenProvider = new CallbackTokenProvider(kcsb.dataSource, kcsb.tokenProvider);\n } else if (kcsb.useDeviceCodeAuth) {\n this.tokenProvider = new TokenProvider.DeviceLoginTokenProvider(kcsb.dataSource, kcsb.deviceCodeCallback, kcsb.authorityId, kcsb.timeoutMs);\n } else if (kcsb.tokenCredential) {\n this.tokenProvider = new TokenCredentialProvider(kcsb.dataSource, kcsb.tokenCredential, kcsb.timeoutMs);\n }\n }\n\n async getAuthHeader(): Promise<string | null> {\n if (!this.tokenProvider) {\n return null;\n }\n try {\n const token = await this.tokenProvider.acquireToken();\n return `${token.tokenType} ${token.accessToken}`;\n } catch (e) {\n throw new KustoAuthenticationError(\n e instanceof Error ? e.message : `${e}`,\n e instanceof Error ? e : undefined,\n this.tokenProvider.constructor.name,\n this.tokenProvider.context(),\n );\n }\n }\n}\n\nexport default AadHelper;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"timeUtils.js","sourceRoot":"","sources":["../../src/timeUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IAC1E,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;AAC7D,CAAC;AAED,oCAAoC;AACpC,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,MAAM,UAAU,2BAA2B,CAAC,CAAgB;IACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;QACvB,OAAO,IAAI,CAAC;KACf;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE;QACP,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;KACzF;IACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function toMilliseconds(hours: number, minutes: number, seconds: number) {\n return (hours * 60 * 60 + minutes * 60 + seconds) * 1000;\n}\n\n// Format: [+|-]d.hh:mm:ss[.fffffff]\nconst TimespanRegex = /^(-?)(?:(\\d+).)?(\\d{2}):(\\d{2}):(\\d{2}(\\.\\d+)?$)/;\n\nexport function parseKustoTimestampToMillis(t: string | null): number | null {\n if (t == null || t === \"\") {\n return null;\n }\n const match = TimespanRegex.exec(t);\n if (match) {\n const sign = match[1] === \"-\" ? -1 : 1;\n const days = parseInt(match[2] || \"0\", 10);\n const hours = parseInt(match[3], 10);\n const minutes = parseInt(match[4], 10);\n const seconds = parseFloat(match[5]);\n return sign * 1000 * (days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60 + seconds);\n }\n throw new Error(`Timespan value '${t}' cannot be decoded`);\n}\n"]}
1
+ {"version":3,"file":"timeUtils.js","sourceRoot":"","sources":["../../src/timeUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IAC1E,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;AAC7D,CAAC;AAED,oCAAoC;AACpC,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,MAAM,UAAU,2BAA2B,CAAC,CAAgB;IACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function toMilliseconds(hours: number, minutes: number, seconds: number) {\n return (hours * 60 * 60 + minutes * 60 + seconds) * 1000;\n}\n\n// Format: [+|-]d.hh:mm:ss[.fffffff]\nconst TimespanRegex = /^(-?)(?:(\\d+).)?(\\d{2}):(\\d{2}):(\\d{2}(\\.\\d+)?$)/;\n\nexport function parseKustoTimestampToMillis(t: string | null): number | null {\n if (t == null || t === \"\") {\n return null;\n }\n const match = TimespanRegex.exec(t);\n if (match) {\n const sign = match[1] === \"-\" ? -1 : 1;\n const days = parseInt(match[2] || \"0\", 10);\n const hours = parseInt(match[3], 10);\n const minutes = parseInt(match[4], 10);\n const seconds = parseFloat(match[5]);\n return sign * 1000 * (days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60 + seconds);\n }\n throw new Error(`Timespan value '${t}' cannot be decoded`);\n}\n"]}
@@ -244,8 +244,7 @@ export class ApplicationKeyTokenProvider extends AzureIdentityProvider {
244
244
  getCredential() {
245
245
  return new ClientSecretCredential(this.authorityId, // The tenant ID in Azure Active Directory
246
246
  this.appClientId, // The app registration client Id in the AAD tenant
247
- this.appKey // The app registration secret for the registered application
248
- );
247
+ this.appKey);
249
248
  }
250
249
  context() {
251
250
  return Object.assign(Object.assign({}, super.context()), { clientId: this.appClientId });
@@ -1 +1 @@
1
- {"version":3,"file":"tokenProvider.js","sourceRoot":"","sources":["../../src/tokenProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport {\n AzureCliCredential,\n ManagedIdentityCredential,\n ClientSecretCredential,\n ClientCertificateCredential,\n ClientCertificateCredentialOptions,\n ClientCertificatePEMCertificate,\n DeviceCodeCredential,\n DeviceCodeInfo,\n UsernamePasswordCredential,\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n InteractiveBrowserCredential,\n} from \"@azure/identity\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { CloudInfo, CloudSettings } from \"./cloudSettings.js\";\n\nexport declare type TokenResponse = {\n tokenType: string;\n accessToken: string;\n};\n\nexport interface TokenType {\n tokenType: string;\n accessToken: string;\n}\n\nconst BEARER_TYPE = \"Bearer\";\n\n/**\n * This base class abstracts token acquisition for all implementations.\n * The class is build for Lazy initialization, so that the first call, take on instantiation of 'heavy' long-lived class members\n */\nexport abstract class TokenProviderBase {\n kustoUri: string;\n scopes!: string[];\n\n abstract acquireToken(): Promise<TokenResponse>;\n\n context(): Record<string, any> {\n return {};\n }\n\n protected constructor(kustoUri: string) {\n this.kustoUri = kustoUri;\n if (kustoUri != null) {\n const suffix = (!this.kustoUri.endsWith(\"/\") ? \"/\" : \"\") + \".default\";\n this.scopes = [kustoUri + suffix];\n }\n }\n}\n\n/**\n * Basic Token Provider keeps and returns a token received on construction\n */\nexport class BasicTokenProvider extends TokenProviderBase {\n token: string;\n\n constructor(kustoUri: string, token: string) {\n super(kustoUri);\n this.token = token;\n }\n\n acquireToken(): Promise<TokenResponse> {\n return Promise.resolve<TokenResponse>({\n tokenType: BEARER_TYPE,\n accessToken: this.token,\n });\n }\n}\n\n/**\n * Callback Token Provider generates a token based on a callback function provided by the caller\n */\nexport class CallbackTokenProvider extends TokenProviderBase {\n callback: () => Promise<string>;\n\n constructor(kustoUri: string, callback: () => Promise<string>) {\n super(kustoUri);\n this.callback = callback;\n }\n\n async acquireToken(): Promise<TokenResponse> {\n const token = await this.callback();\n return { tokenType: BEARER_TYPE, accessToken: token };\n }\n}\n\n/**\n * Token providers that require cloud settings to be configured - msal and azure identity\n */\nexport abstract class CloudSettingsTokenProvider extends TokenProviderBase {\n protected cloudInfo!: CloudInfo;\n protected initialized: boolean;\n\n abstract initClient(): void;\n\n abstract acquireTokenWithCloudSettings(): Promise<TokenType | null>;\n\n additionalCloudSettingsInit(): void {}\n\n protected constructor(kustoUri: string) {\n super(kustoUri);\n this.initialized = false;\n }\n\n async acquireToken(): Promise<TokenResponse> {\n if (!this.initialized) {\n if (this.cloudInfo == null) {\n this.cloudInfo = await CloudSettings.getCloudInfoForCluster(this.kustoUri);\n let resourceUri = this.cloudInfo.KustoServiceResourceId;\n if (this.cloudInfo.LoginMfaRequired) {\n resourceUri = resourceUri.replace(\".kusto.\", \".kustomfa.\");\n }\n this.scopes = [resourceUri + \"/.default\"];\n this.additionalCloudSettingsInit();\n this.initClient();\n }\n this.initialized = true;\n }\n\n const token = await this.acquireTokenWithCloudSettings();\n if (token) {\n return { tokenType: token.tokenType, accessToken: token.accessToken };\n }\n throw new Error(\"Failed to get token from msal\");\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n kustoUri: this.kustoUri,\n };\n }\n}\n\nexport abstract class AzureIdentityProvider extends CloudSettingsTokenProvider {\n private credential!: TokenCredential;\n\n constructor(kustoUri: string, protected authorityId?: string, private timeoutMs?: number) {\n super(kustoUri);\n }\n\n initClient(): void {\n this.credential = this.getCredential();\n }\n\n async acquireTokenWithCloudSettings(): Promise<TokenType | null> {\n const response = await this.credential.getToken(this.scopes, {\n requestOptions: {\n timeout: this.timeoutMs,\n },\n tenantId: this.authorityId,\n });\n if (response === null) {\n throw new Error(\"Failed to get token from msal\");\n }\n return { tokenType: BEARER_TYPE, accessToken: response.token };\n }\n\n context(): Record<string, any> {\n let base: Record<string, any> = {\n ...super.context(),\n kustoUri: this.kustoUri,\n authorityId: this.authorityId,\n };\n if (this.timeoutMs) {\n base = { ...base, timeoutMs: this.timeoutMs };\n }\n\n return base;\n }\n\n abstract getCredential(): TokenCredential;\n}\n\n/**\n * TokenCredentialProvider receives any TokenCredential to create a token with.\n */\nexport class TokenCredentialProvider extends AzureIdentityProvider {\n constructor(kustoUri: string, private tokenCredential: TokenCredential, timeoutMs?: number) {\n super(kustoUri, undefined, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return this.tokenCredential;\n }\n}\n\n/**\n * UserPromptProvider will pop up a login prompt to acquire a token.\n */\nexport class UserPromptProvider extends AzureIdentityProvider {\n // The default port is 80, which can lead to permission errors, so we'll choose another port\n readonly MinPort = 20000;\n readonly MaxPort = 65536;\n\n constructor(\n kustoUri: string,\n private interactiveCredentialOptions?: InteractiveBrowserCredentialInBrowserOptions | InteractiveBrowserCredentialNodeOptions,\n timeoutMs?: number\n ) {\n super(kustoUri, interactiveCredentialOptions?.tenantId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new InteractiveBrowserCredential({\n ...this.interactiveCredentialOptions,\n tenantId: this.authorityId,\n clientId: this.interactiveCredentialOptions?.clientId ?? this.cloudInfo.KustoClientAppId,\n redirectUri: this.interactiveCredentialOptions?.redirectUri ?? `http://localhost:${this.getRandomPortInRange()}/`,\n });\n }\n\n private getRandomPortInRange() {\n return Math.floor(Math.random() * (this.MaxPort - this.MinPort) + this.MinPort);\n }\n\n context(): Record<string, any> {\n let base = super.context();\n if (this.interactiveCredentialOptions?.loginHint) {\n base = { ...base, loginHint: this.interactiveCredentialOptions?.loginHint };\n }\n return base;\n }\n}\n\n/**\n * MSI Token Provider obtains a token from the MSI endpoint\n * The args parameter is a dictionary conforming with the ManagedIdentityCredential initializer API arguments\n */\nexport class MsiTokenProvider extends AzureIdentityProvider {\n constructor(kustoUri: string, protected clientId?: string, authorityId?: string, timeoutMs?: number) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return this.clientId ? new ManagedIdentityCredential(this.clientId) : new ManagedIdentityCredential();\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n clientId: this.clientId,\n };\n }\n}\n\n/**\n * AzCli Token Provider obtains a refresh token from the AzCli cache and uses it to authenticate with MSAL\n */\nexport class AzCliTokenProvider extends AzureIdentityProvider {\n getCredential(): TokenCredential {\n return new AzureCliCredential();\n }\n}\n\n/**\n * Acquire a token from MSAL with username and password\n */\nexport class UserPassTokenProvider extends AzureIdentityProvider {\n userName: string;\n password: string;\n homeAccountId?: string;\n constructor(kustoUri: string, userName: string, password: string, authorityId: string, timeoutMs?: number) {\n super(kustoUri, authorityId, timeoutMs);\n this.userName = userName;\n this.password = password;\n }\n\n getCredential(): TokenCredential {\n return new UsernamePasswordCredential(this.authorityId!, this.cloudInfo.KustoClientAppId, this.userName, this.password);\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n userName: this.userName,\n homeAccountId: this.homeAccountId,\n };\n }\n}\n\n/**\n * Acquire a token from Device Login flow\n */\nexport class DeviceLoginTokenProvider extends AzureIdentityProvider {\n constructor(kustoUri: string, private deviceCodeCallback?: (response: DeviceCodeInfo) => void, authorityId?: string, timeoutMs?: number) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new DeviceCodeCredential({\n tenantId: this.authorityId,\n clientId: this.cloudInfo.KustoClientAppId,\n userPromptCallback: this.deviceCodeCallback,\n });\n }\n}\n\n/**\n * Acquire a token from MSAL using application certificate\n * Passing the public certificate is optional and will result in Subject Name & Issuer Authentication\n */\nexport class ApplicationCertificateTokenProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n private appClientId: string,\n private certPrivateKey?: string,\n private certPath?: string,\n private sendX5c?: boolean,\n authorityId?: string,\n timeoutMs?: number\n ) {\n super(kustoUri, authorityId!, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n if (this.certPrivateKey) {\n return new ClientCertificateCredential(\n this.authorityId!,\n this.appClientId!,\n {\n certificate: this.certPrivateKey,\n } as ClientCertificatePEMCertificate,\n {\n sendCertificateChain: this.sendX5c,\n } as ClientCertificateCredentialOptions\n );\n }\n\n return new ClientCertificateCredential(this.authorityId!, this.appClientId!, this.certPath!, {\n sendCertificateChain: this.sendX5c,\n } as ClientCertificateCredentialOptions);\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n clientId: this.appClientId,\n sendX5c: this.sendX5c,\n };\n }\n}\n\n/**\n * Acquire a token from MSAL with application id and Key\n */\nexport class ApplicationKeyTokenProvider extends AzureIdentityProvider {\n constructor(kustoUri: string, private appClientId: string, private appKey: string, authorityId: string, timeoutMs?: number) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new ClientSecretCredential(\n this.authorityId!, // The tenant ID in Azure Active Directory\n this.appClientId, // The app registration client Id in the AAD tenant\n this.appKey // The app registration secret for the registered application\n );\n }\n\n context(): Record<string, any> {\n return { ...super.context(), clientId: this.appClientId };\n }\n}\n"]}
1
+ {"version":3,"file":"tokenProvider.js","sourceRoot":"","sources":["../../src/tokenProvider.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport {\n AzureCliCredential,\n ManagedIdentityCredential,\n ClientSecretCredential,\n ClientCertificateCredential,\n ClientCertificateCredentialOptions,\n ClientCertificatePEMCertificate,\n DeviceCodeCredential,\n DeviceCodeInfo,\n UsernamePasswordCredential,\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n InteractiveBrowserCredential,\n} from \"@azure/identity\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { CloudInfo, CloudSettings } from \"./cloudSettings.js\";\n\nexport declare type TokenResponse = {\n tokenType: string;\n accessToken: string;\n};\n\nexport interface TokenType {\n tokenType: string;\n accessToken: string;\n}\n\nconst BEARER_TYPE = \"Bearer\";\n\n/**\n * This base class abstracts token acquisition for all implementations.\n * The class is build for Lazy initialization, so that the first call, take on instantiation of 'heavy' long-lived class members\n */\nexport abstract class TokenProviderBase {\n kustoUri: string;\n scopes!: string[];\n\n abstract acquireToken(): Promise<TokenResponse>;\n\n context(): Record<string, any> {\n return {};\n }\n\n protected constructor(kustoUri: string) {\n this.kustoUri = kustoUri;\n if (kustoUri != null) {\n const suffix = (!this.kustoUri.endsWith(\"/\") ? \"/\" : \"\") + \".default\";\n this.scopes = [kustoUri + suffix];\n }\n }\n}\n\n/**\n * Basic Token Provider keeps and returns a token received on construction\n */\nexport class BasicTokenProvider extends TokenProviderBase {\n token: string;\n\n constructor(kustoUri: string, token: string) {\n super(kustoUri);\n this.token = token;\n }\n\n acquireToken(): Promise<TokenResponse> {\n return Promise.resolve<TokenResponse>({\n tokenType: BEARER_TYPE,\n accessToken: this.token,\n });\n }\n}\n\n/**\n * Callback Token Provider generates a token based on a callback function provided by the caller\n */\nexport class CallbackTokenProvider extends TokenProviderBase {\n callback: () => Promise<string>;\n\n constructor(kustoUri: string, callback: () => Promise<string>) {\n super(kustoUri);\n this.callback = callback;\n }\n\n async acquireToken(): Promise<TokenResponse> {\n const token = await this.callback();\n return { tokenType: BEARER_TYPE, accessToken: token };\n }\n}\n\n/**\n * Token providers that require cloud settings to be configured - msal and azure identity\n */\nexport abstract class CloudSettingsTokenProvider extends TokenProviderBase {\n protected cloudInfo!: CloudInfo;\n protected initialized: boolean;\n\n abstract initClient(): void;\n\n abstract acquireTokenWithCloudSettings(): Promise<TokenType | null>;\n\n additionalCloudSettingsInit(): void {}\n\n protected constructor(kustoUri: string) {\n super(kustoUri);\n this.initialized = false;\n }\n\n async acquireToken(): Promise<TokenResponse> {\n if (!this.initialized) {\n if (this.cloudInfo == null) {\n this.cloudInfo = await CloudSettings.getCloudInfoForCluster(this.kustoUri);\n let resourceUri = this.cloudInfo.KustoServiceResourceId;\n if (this.cloudInfo.LoginMfaRequired) {\n resourceUri = resourceUri.replace(\".kusto.\", \".kustomfa.\");\n }\n this.scopes = [resourceUri + \"/.default\"];\n this.additionalCloudSettingsInit();\n this.initClient();\n }\n this.initialized = true;\n }\n\n const token = await this.acquireTokenWithCloudSettings();\n if (token) {\n return { tokenType: token.tokenType, accessToken: token.accessToken };\n }\n throw new Error(\"Failed to get token from msal\");\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n kustoUri: this.kustoUri,\n };\n }\n}\n\nexport abstract class AzureIdentityProvider extends CloudSettingsTokenProvider {\n private credential!: TokenCredential;\n\n constructor(\n kustoUri: string,\n protected authorityId?: string,\n private timeoutMs?: number,\n ) {\n super(kustoUri);\n }\n\n initClient(): void {\n this.credential = this.getCredential();\n }\n\n async acquireTokenWithCloudSettings(): Promise<TokenType | null> {\n const response = await this.credential.getToken(this.scopes, {\n requestOptions: {\n timeout: this.timeoutMs,\n },\n tenantId: this.authorityId,\n });\n if (response === null) {\n throw new Error(\"Failed to get token from msal\");\n }\n return { tokenType: BEARER_TYPE, accessToken: response.token };\n }\n\n context(): Record<string, any> {\n let base: Record<string, any> = {\n ...super.context(),\n kustoUri: this.kustoUri,\n authorityId: this.authorityId,\n };\n if (this.timeoutMs) {\n base = { ...base, timeoutMs: this.timeoutMs };\n }\n\n return base;\n }\n\n abstract getCredential(): TokenCredential;\n}\n\n/**\n * TokenCredentialProvider receives any TokenCredential to create a token with.\n */\nexport class TokenCredentialProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n private tokenCredential: TokenCredential,\n timeoutMs?: number,\n ) {\n super(kustoUri, undefined, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return this.tokenCredential;\n }\n}\n\n/**\n * UserPromptProvider will pop up a login prompt to acquire a token.\n */\nexport class UserPromptProvider extends AzureIdentityProvider {\n // The default port is 80, which can lead to permission errors, so we'll choose another port\n readonly MinPort = 20000;\n readonly MaxPort = 65536;\n\n constructor(\n kustoUri: string,\n private interactiveCredentialOptions?: InteractiveBrowserCredentialInBrowserOptions | InteractiveBrowserCredentialNodeOptions,\n timeoutMs?: number,\n ) {\n super(kustoUri, interactiveCredentialOptions?.tenantId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new InteractiveBrowserCredential({\n ...this.interactiveCredentialOptions,\n tenantId: this.authorityId,\n clientId: this.interactiveCredentialOptions?.clientId ?? this.cloudInfo.KustoClientAppId,\n redirectUri: this.interactiveCredentialOptions?.redirectUri ?? `http://localhost:${this.getRandomPortInRange()}/`,\n });\n }\n\n private getRandomPortInRange() {\n return Math.floor(Math.random() * (this.MaxPort - this.MinPort) + this.MinPort);\n }\n\n context(): Record<string, any> {\n let base = super.context();\n if (this.interactiveCredentialOptions?.loginHint) {\n base = { ...base, loginHint: this.interactiveCredentialOptions?.loginHint };\n }\n return base;\n }\n}\n\n/**\n * MSI Token Provider obtains a token from the MSI endpoint\n * The args parameter is a dictionary conforming with the ManagedIdentityCredential initializer API arguments\n */\nexport class MsiTokenProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n protected clientId?: string,\n authorityId?: string,\n timeoutMs?: number,\n ) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return this.clientId ? new ManagedIdentityCredential(this.clientId) : new ManagedIdentityCredential();\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n clientId: this.clientId,\n };\n }\n}\n\n/**\n * AzCli Token Provider obtains a refresh token from the AzCli cache and uses it to authenticate with MSAL\n */\nexport class AzCliTokenProvider extends AzureIdentityProvider {\n getCredential(): TokenCredential {\n return new AzureCliCredential();\n }\n}\n\n/**\n * Acquire a token from MSAL with username and password\n */\nexport class UserPassTokenProvider extends AzureIdentityProvider {\n userName: string;\n password: string;\n homeAccountId?: string;\n constructor(kustoUri: string, userName: string, password: string, authorityId: string, timeoutMs?: number) {\n super(kustoUri, authorityId, timeoutMs);\n this.userName = userName;\n this.password = password;\n }\n\n getCredential(): TokenCredential {\n return new UsernamePasswordCredential(this.authorityId!, this.cloudInfo.KustoClientAppId, this.userName, this.password);\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n userName: this.userName,\n homeAccountId: this.homeAccountId,\n };\n }\n}\n\n/**\n * Acquire a token from Device Login flow\n */\nexport class DeviceLoginTokenProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n private deviceCodeCallback?: (response: DeviceCodeInfo) => void,\n authorityId?: string,\n timeoutMs?: number,\n ) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new DeviceCodeCredential({\n tenantId: this.authorityId,\n clientId: this.cloudInfo.KustoClientAppId,\n userPromptCallback: this.deviceCodeCallback,\n });\n }\n}\n\n/**\n * Acquire a token from MSAL using application certificate\n * Passing the public certificate is optional and will result in Subject Name & Issuer Authentication\n */\nexport class ApplicationCertificateTokenProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n private appClientId: string,\n private certPrivateKey?: string,\n private certPath?: string,\n private sendX5c?: boolean,\n authorityId?: string,\n timeoutMs?: number,\n ) {\n super(kustoUri, authorityId!, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n if (this.certPrivateKey) {\n return new ClientCertificateCredential(\n this.authorityId!,\n this.appClientId!,\n {\n certificate: this.certPrivateKey,\n } as ClientCertificatePEMCertificate,\n {\n sendCertificateChain: this.sendX5c,\n } as ClientCertificateCredentialOptions,\n );\n }\n\n return new ClientCertificateCredential(this.authorityId!, this.appClientId!, this.certPath!, {\n sendCertificateChain: this.sendX5c,\n } as ClientCertificateCredentialOptions);\n }\n\n context(): Record<string, any> {\n return {\n ...super.context(),\n clientId: this.appClientId,\n sendX5c: this.sendX5c,\n };\n }\n}\n\n/**\n * Acquire a token from MSAL with application id and Key\n */\nexport class ApplicationKeyTokenProvider extends AzureIdentityProvider {\n constructor(\n kustoUri: string,\n private appClientId: string,\n private appKey: string,\n authorityId: string,\n timeoutMs?: number,\n ) {\n super(kustoUri, authorityId, timeoutMs);\n }\n\n getCredential(): TokenCredential {\n return new ClientSecretCredential(\n this.authorityId!, // The tenant ID in Azure Active Directory\n this.appClientId, // The app registration client Id in the AAD tenant\n this.appKey, // The app registration secret for the registered application\n );\n }\n\n context(): Record<string, any> {\n return { ...super.context(), clientId: this.appClientId };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,UAAkB;IAClE,IAAI,UAAU,IAAI,CAAC,EAAE;QACjB,OAAO,EAAE,CAAC;KACb;IAED,IAAI,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE;QAC1B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;KAC5B;IAED,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function getStringTailLowerCase(val: string, tailLength: number): string {\n if (tailLength <= 0) {\n return \"\";\n }\n\n if (tailLength >= val.length) {\n return val.toLowerCase();\n }\n\n return val.substring(val.length - tailLength).toLowerCase();\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,UAAkB;IAClE,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function getStringTailLowerCase(val: string, tailLength: number): string {\n if (tailLength <= 0) {\n return \"\";\n }\n\n if (tailLength >= val.length) {\n return val.toLowerCase();\n }\n\n return val.substring(val.length - tailLength).toLowerCase();\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  // SDK_VERSION should be updated in all 3 package.json and lerna.json(by running lerna version)
4
- export const SDK_VERSION = "5.2.1";
4
+ export const SDK_VERSION = "7.0.0-alpha.1";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// SDK_VERSION should be updated in all 3 package.json and lerna.json(by running lerna version)\nexport const SDK_VERSION = \"5.2.1\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// SDK_VERSION should be updated in all 3 package.json and lerna.json(by running lerna version)\nexport const SDK_VERSION = \"7.0.0-alpha.1\";\n"]}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "azure-kusto-data",
3
- "version": "7.0.0-alpha.0",
3
+ "version": "7.0.0-alpha.1",
4
4
  "description": "Azure Data Explorer Query SDK",
5
5
  "type": "module",
6
+ "main": "dist-esm/src/index.js",
6
7
  "exports": {
7
8
  ".": {
8
9
  "import": "./dist-esm/src/index.js",
@@ -60,6 +61,7 @@
60
61
  "rimraf": "^3.0.2"
61
62
  },
62
63
  "dependencies": {
64
+ "@azure/core-util": "^1.10.0",
63
65
  "@azure/identity": "^4.0.1",
64
66
  "@types/uuid": "^8.3.4",
65
67
  "axios": "^1.6.0",
@@ -68,5 +70,5 @@
68
70
  "stream-http": "^3.2.0",
69
71
  "uuid": "^8.3.2"
70
72
  },
71
- "gitHead": "e09b5fe882833ca9890bbd332e80206701c28f85"
73
+ "gitHead": "7d97fb4354a6546333e194c29d6bceb1f4d78efa"
72
74
  }
@@ -24,18 +24,18 @@ export declare class ClientRequestProperties {
24
24
  toJson(): {
25
25
  Options?: {
26
26
  [option: string]: any;
27
- } | undefined;
27
+ };
28
28
  Parameters?: {
29
29
  [option: string]: any;
30
- } | undefined;
30
+ };
31
31
  } | null;
32
32
  toJSON(): {
33
33
  Options?: {
34
34
  [option: string]: any;
35
- } | undefined;
35
+ };
36
36
  Parameters?: {
37
37
  [option: string]: any;
38
- } | undefined;
38
+ };
39
39
  } | null;
40
40
  toString(): string;
41
41
  _msToTimespan(duration: number): string;
@@ -74,7 +74,7 @@ export declare class UserPromptProvider extends AzureIdentityProvider {
74
74
  private interactiveCredentialOptions?;
75
75
  readonly MinPort = 20000;
76
76
  readonly MaxPort = 65536;
77
- constructor(kustoUri: string, interactiveCredentialOptions?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions | undefined, timeoutMs?: number);
77
+ constructor(kustoUri: string, interactiveCredentialOptions?: (InteractiveBrowserCredentialInBrowserOptions | InteractiveBrowserCredentialNodeOptions) | undefined, timeoutMs?: number);
78
78
  getCredential(): TokenCredential;
79
79
  private getRandomPortInRange;
80
80
  context(): Record<string, any>;
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION = "5.2.1";
1
+ export declare const SDK_VERSION = "7.0.0-alpha.1";
2
2
  //# sourceMappingURL=version.d.ts.map