azure-kusto-data 5.2.3 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -1
- package/dist-esm/src/clientDetails.js +9 -8
- package/dist-esm/src/clientDetails.js.map +1 -1
- package/dist-esm/src/cloudSettings.js +2 -1
- package/dist-esm/src/cloudSettings.js.map +1 -1
- package/dist-esm/src/connectionBuilder.browser.js +3 -0
- package/dist-esm/src/connectionBuilder.browser.js.map +1 -1
- package/dist-esm/src/connectionBuilder.js +3 -0
- package/dist-esm/src/connectionBuilder.js.map +1 -1
- package/dist-esm/src/connectionBuilderBase.js +4 -7
- package/dist-esm/src/connectionBuilderBase.js.map +1 -1
- package/dist-esm/src/models.js +1 -1
- package/dist-esm/src/models.js.map +1 -1
- package/dist-esm/src/timeUtils.js +2 -2
- package/dist-esm/src/timeUtils.js.map +1 -1
- package/package.json +4 -5
- package/types/src/clientDetails.d.ts +1 -1
- package/types/src/connectionBuilder.browser.d.ts +1 -0
- package/types/src/connectionBuilder.d.ts +1 -0
- package/types/src/connectionBuilderBase.d.ts +4 -5
- package/types/src/models.d.ts +2 -2
- package/types/src/timeUtils.d.ts +1 -1
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ Option 1: Authenticating using AAD application id and corresponding key.
|
|
|
34
34
|
const kcsb = KustoConnectionStringBuilder.withAadApplicationKeyAuthentication(`https://${clusterName}.kusto.windows.net`, "appid", "appkey", "authorityId");
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Option 2: Authenticating using AAD application id and corresponding certificate.
|
|
37
|
+
Option 2.1: Authenticating using AAD application id and corresponding certificate.
|
|
38
38
|
|
|
39
39
|
```javascript
|
|
40
40
|
const kcsb = KustoConnectionStringBuilder.withAadApplicationCertificateAuthentication(
|
|
@@ -43,6 +43,22 @@ const kcsb = KustoConnectionStringBuilder.withAadApplicationCertificateAuthentic
|
|
|
43
43
|
"certificate",
|
|
44
44
|
"authorityId"
|
|
45
45
|
);
|
|
46
|
+
|
|
47
|
+
Option 2.2: Authenticating using AAD application id and corresponding certificate with SNI public key.
|
|
48
|
+
Concat the private and publiccertificates
|
|
49
|
+
```javascript
|
|
50
|
+
const kcsb = KustoConnectionStringBuilder.withAadApplicationCertificateAuthentication(
|
|
51
|
+
`https://${clusterName}.kusto.windows.net`,
|
|
52
|
+
"appid",
|
|
53
|
+
"-----BEGIN CERTIFICATE-----
|
|
54
|
+
... <cert1> ...
|
|
55
|
+
-----END CERTIFICATE-----
|
|
56
|
+
-----BEGIN PRIVATE KEY-----
|
|
57
|
+
... <cert2> ...
|
|
58
|
+
-----END PRIVATE KEY-----",
|
|
59
|
+
"authorityId",
|
|
60
|
+
true
|
|
61
|
+
);
|
|
46
62
|
```
|
|
47
63
|
|
|
48
64
|
Option 3: Authenticating using [AAD Managed Identities](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview).
|
|
@@ -6,8 +6,8 @@ exports.ClientDetails = void 0;
|
|
|
6
6
|
const core_util_1 = require("@azure/core-util");
|
|
7
7
|
const os_1 = require("os");
|
|
8
8
|
const version_1 = require("./version");
|
|
9
|
-
//
|
|
10
|
-
const ReplaceRegex = /[
|
|
9
|
+
// This regex allows all printable ascii, except spaces and chars we use in the format
|
|
10
|
+
const ReplaceRegex = /[^\w.\-()]/g;
|
|
11
11
|
const None = "[none]";
|
|
12
12
|
class ClientDetails {
|
|
13
13
|
constructor(applicationNameForTracing, userNameForTracing) {
|
|
@@ -24,14 +24,14 @@ class ClientDetails {
|
|
|
24
24
|
static defaultApplication() {
|
|
25
25
|
var _a, _b;
|
|
26
26
|
if (core_util_1.isNode) {
|
|
27
|
-
return ((_a = process.env) === null || _a === void 0 ? void 0 : _a.npm_package_name) || process.
|
|
27
|
+
return ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.npm_package_name) || (process === null || process === void 0 ? void 0 : process.argv[1]) || None;
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
return ((_b = window === null || window === void 0 ? void 0 : window.location) === null || _b === void 0 ? void 0 : _b.href) || None;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
static defaultUser() {
|
|
34
|
-
var _a;
|
|
34
|
+
var _a, _b, _c, _d, _e;
|
|
35
35
|
if (core_util_1.isNode) {
|
|
36
36
|
let username;
|
|
37
37
|
try {
|
|
@@ -44,7 +44,7 @@ class ClientDetails {
|
|
|
44
44
|
throw err;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
return username || (process.env.USERDOMAIN ? `${process.env.USERDOMAIN}\\${process.env.USERNAME}` : process.env.USERNAME) || None;
|
|
47
|
+
return username || (((_b = process.env) === null || _b === void 0 ? void 0 : _b.USERDOMAIN) ? `${(_c = process.env) === null || _c === void 0 ? void 0 : _c.USERDOMAIN}\\${(_d = process.env) === null || _d === void 0 ? void 0 : _d.USERNAME}` : (_e = process === null || process === void 0 ? void 0 : process.env) === null || _e === void 0 ? void 0 : _e.USERNAME) || None;
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
return None;
|
|
@@ -57,8 +57,9 @@ class ClientDetails {
|
|
|
57
57
|
["Runtime." + (core_util_1.isNode ? "Node" : "Browser"), (core_util_1.isNode ? process.version : (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || None],
|
|
58
58
|
]);
|
|
59
59
|
}
|
|
60
|
-
static escapeHeader(header) {
|
|
61
|
-
|
|
60
|
+
static escapeHeader(header, wrapInBrackets = true) {
|
|
61
|
+
const clean = header.substring(0, 100).replace(ReplaceRegex, "_");
|
|
62
|
+
return wrapInBrackets ? `{${clean}}` : clean;
|
|
62
63
|
}
|
|
63
64
|
static formatHeader(args) {
|
|
64
65
|
return args
|
|
@@ -67,7 +68,7 @@ class ClientDetails {
|
|
|
67
68
|
.join("|");
|
|
68
69
|
}
|
|
69
70
|
static setConnectorDetails(name, version, app_name = null, app_version = null, send_user = false, override_user = null, additional_fields = null) {
|
|
70
|
-
const params = [["Kusto." + name, version]];
|
|
71
|
+
const params = [["Kusto." + this.escapeHeader(name, false), version]];
|
|
71
72
|
app_name = app_name || this.defaultApplication();
|
|
72
73
|
app_version = app_version || None;
|
|
73
74
|
params.push(["App." + this.escapeHeader(app_name), app_version]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientDetails.js","sourceRoot":"","sources":["../../src/clientDetails.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,gDAA0C;AAC1C,2BAA8B;AAC9B,uCAAwC;AAWxC,
|
|
1
|
+
{"version":3,"file":"clientDetails.js","sourceRoot":"","sources":["../../src/clientDetails.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNode } from \"@azure/core-util\";\nimport { userInfo } from \"os\";\nimport { SDK_VERSION } from \"./version\";\n\n// eslint-disable-next-line @typescript-eslint/no-namespace,@typescript-eslint/no-unused-vars -- This is the correct way to augment the global namespace\ndeclare namespace NodeJS {\n interface ProcessEnv {\n npm_package_name?: string;\n USERNAME?: string;\n USERDOMAIN?: string;\n }\n}\n\n// This regex allows all printable ascii, except spaces and chars we use in the format\nconst ReplaceRegex = /[^\\w.\\-()]/g;\nconst None = \"[none]\";\n\nexport class ClientDetails {\n readonly versionForTracing: string;\n\n constructor(public applicationNameForTracing: string | null, public userNameForTracing: string | null) {\n if (this.applicationNameForTracing === null) {\n this.applicationNameForTracing = ClientDetails.defaultApplication();\n }\n if (this.userNameForTracing === null) {\n this.userNameForTracing = ClientDetails.defaultUser();\n }\n this.versionForTracing = ClientDetails.defaultVersion();\n }\n\n static defaultApplication(): string {\n if (isNode) {\n return process?.env?.npm_package_name || process?.argv[1] || None;\n } else {\n return window?.location?.href || None;\n }\n }\n\n static defaultUser(): string {\n if (isNode) {\n let username: string | undefined;\n try {\n username = userInfo().username;\n } catch (err: any) {\n /* Ignore possible errors like \"uv_os_get_passwd returned ENOMEM\" that may occur in some environments. */\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (err.info?.code !== \"ENOMEM\") {\n throw err;\n }\n }\n\n return username || (process.env?.USERDOMAIN ? `${process.env?.USERDOMAIN}\\\\${process.env?.USERNAME}` : process?.env?.USERNAME) || None;\n } else {\n return None;\n }\n }\n\n static defaultVersion(): string {\n return this.formatHeader([\n [\"Kusto.JavaScript.Client\", SDK_VERSION],\n [\"Runtime.\" + (isNode ? \"Node\" : \"Browser\"), (isNode ? process.version : window?.navigator?.userAgent) || None],\n ]);\n }\n\n static escapeHeader(header: string, wrapInBrackets: boolean = true): string {\n const clean = header.substring(0, 100).replace(ReplaceRegex, \"_\");\n return wrapInBrackets ? `{${clean}}` : clean;\n }\n\n static formatHeader(args: [string, string][]): string {\n return args\n .filter(([key, val]) => key && val)\n .map(([key, val]) => `${key}:${this.escapeHeader(val)}`)\n .join(\"|\");\n }\n\n static setConnectorDetails(\n name: string,\n version: string,\n app_name: string | null = null,\n app_version: string | null = null,\n send_user: boolean = false,\n override_user: string | null = null,\n additional_fields: [string, string][] | null = null\n ): ClientDetails {\n const params: [string, string][] = [[\"Kusto.\" + this.escapeHeader(name, false), version]];\n\n app_name = app_name || this.defaultApplication();\n app_version = app_version || None;\n\n params.push([\"App.\" + this.escapeHeader(app_name), app_version]);\n params.push(...(additional_fields || []));\n\n let user = None;\n\n if (send_user) {\n user = override_user || this.defaultUser();\n }\n\n return new ClientDetails(this.formatHeader(params), user);\n }\n\n getHeaders(): Partial<KustoHeaders> {\n return {\n \"x-ms-client-version\": this.versionForTracing,\n \"x-ms-app\": this.applicationNameForTracing,\n \"x-ms-user\": this.userNameForTracing,\n };\n }\n}\n\nexport interface KustoHeaders {\n \"x-ms-client-version\": string | null;\n \"x-ms-app\": string | null;\n \"x-ms-user\": string | null;\n \"x-ms-client-request-id\": string | null;\n}\n"]}
|
|
@@ -13,9 +13,10 @@ const core_util_1 = require("@azure/core-util");
|
|
|
13
13
|
*/
|
|
14
14
|
class CloudSettings {
|
|
15
15
|
constructor() {
|
|
16
|
+
var _a;
|
|
16
17
|
this.METADATA_ENDPOINT = "/v1/rest/auth/metadata";
|
|
17
18
|
this.defaultCloudInfo = {
|
|
18
|
-
LoginEndpoint: process.env.AadAuthorityUri || "https://login.microsoftonline.com",
|
|
19
|
+
LoginEndpoint: ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.AadAuthorityUri) || "https://login.microsoftonline.com",
|
|
19
20
|
LoginMfaRequired: false,
|
|
20
21
|
KustoClientAppId: "db662dc1-0cfe-4e1c-a843-19a68e65be58",
|
|
21
22
|
KustoClientRedirectUri: "https://microsoft/kustoclient",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudSettings.js","sourceRoot":"","sources":["../../src/cloudSettings.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,kDAA0B;AAC1B,gDAA0C;AAW1C;;GAEG;AACH,MAAM,aAAa;IAAnB
|
|
1
|
+
{"version":3,"file":"cloudSettings.js","sourceRoot":"","sources":["../../src/cloudSettings.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport axios from \"axios\";\nimport { isNode } from \"@azure/core-util\";\n\nexport type CloudInfo = {\n LoginEndpoint: string;\n LoginMfaRequired: boolean;\n KustoClientAppId: string;\n KustoClientRedirectUri: string;\n KustoServiceResourceId: string;\n FirstPartyAuthorityUrl: string;\n};\n\n/**\n * This class holds data for all cloud instances, and returns the specific data instance by parsing the dns suffix from a URL\n */\nclass CloudSettings {\n METADATA_ENDPOINT = \"/v1/rest/auth/metadata\";\n defaultCloudInfo: CloudInfo = {\n LoginEndpoint: process?.env?.AadAuthorityUri || \"https://login.microsoftonline.com\",\n LoginMfaRequired: false,\n KustoClientAppId: \"db662dc1-0cfe-4e1c-a843-19a68e65be58\",\n KustoClientRedirectUri: \"https://microsoft/kustoclient\",\n KustoServiceResourceId: \"https://kusto.kusto.windows.net\",\n FirstPartyAuthorityUrl: \"https://login.microsoftonline.com/f8cdef31-a31e-4b4a-93e4-5f571e91255a\",\n };\n cloudCache: { [kustoUri: string]: CloudInfo } = {};\n\n writeToCache(url: string, info?: CloudInfo) {\n this.cloudCache[this.normalizeUrl(url)] = info ?? this.defaultCloudInfo;\n }\n\n getFromCache = (kustoUri: string) => this.cloudCache[this.normalizeUrl(kustoUri)];\n\n deleteFromCache = (kustoUri: string) => delete this.cloudCache[this.normalizeUrl(kustoUri)];\n\n async getCloudInfoForCluster(kustoUri: string): Promise<CloudInfo> {\n kustoUri = this.normalizeUrl(kustoUri);\n if (kustoUri in this.cloudCache) {\n return this.cloudCache[kustoUri];\n }\n\n try {\n const response = await axios.get<{ AzureAD: CloudInfo | undefined }>(kustoUri + this.METADATA_ENDPOINT, {\n headers: {\n \"Cache-Control\": \"no-cache\",\n // Disable caching - it's being cached in memory (Service returns max-age).\n // The original motivation for this is due to a CORS issue in Ibiza due to a dynamic subdomain.\n // The first dynamic subdomain is attached to the cache and for some reason isn't invalidated\n // when there is a new subdomain. It causes the request failure due to CORS.\n // Example:\n // Access to XMLHttpRequest at 'https://safrankecc.canadacentral.kusto.windows.net/v1/rest/auth/metadata' from origin\n // 'https://sandbox-46-11.reactblade.portal.azure.net' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value\n // 'https://sandbox-46-10.reactblade.portal.azure.net' that is not equal to the supplied origin.\n },\n maxRedirects: 0,\n });\n if (response.status === 200) {\n this.cloudCache[kustoUri] = response.data.AzureAD || this.defaultCloudInfo;\n } else {\n throw new Error(`Kusto returned an invalid cloud metadata response - ${response}`);\n }\n } catch (ex) {\n if (axios.isAxiosError(ex)) {\n // Axios library has a bug in browser, not propagating the status code, see: https://github.com/axios/axios/issues/5330\n if ((ex.response?.status === 404 && isNode) || (ex.code === axios.AxiosError.ERR_NETWORK && !isNode)) {\n // For now as long not all proxies implement the metadata endpoint, if no endpoint exists return public cloud data\n this.cloudCache[kustoUri] = this.defaultCloudInfo;\n } else {\n throw new Error(`Failed to get cloud info for cluster ${kustoUri} - ${ex}`);\n }\n }\n }\n return this.cloudCache[kustoUri];\n }\n\n private normalizeUrl(kustoUri: string) {\n const url = new URL(kustoUri);\n const urlString = url.toString();\n if (urlString.endsWith(\"/\")) {\n return urlString.slice(0, urlString.length - 1);\n }\n return urlString;\n }\n\n static getAuthorityUri(cloudInfo: CloudInfo, authorityId?: string): string {\n return cloudInfo.LoginEndpoint + \"/\" + (authorityId || \"organizations\");\n }\n}\n\nconst cloudSettings = new CloudSettings();\nexport { cloudSettings as CloudSettings };\nexport default cloudSettings;\n"]}
|
|
@@ -72,6 +72,9 @@ class KustoConnectionStringBuilder extends connectionBuilderBase_1.default {
|
|
|
72
72
|
kcsb.tokenCredential = credential;
|
|
73
73
|
return kcsb;
|
|
74
74
|
}
|
|
75
|
+
static fromExisting(other) {
|
|
76
|
+
return Object.assign(new KustoConnectionStringBuilder(other.toString(false)), other);
|
|
77
|
+
}
|
|
75
78
|
}
|
|
76
79
|
exports.KustoConnectionStringBuilder = KustoConnectionStringBuilder;
|
|
77
80
|
KustoConnectionStringBuilder.DefaultDatabaseName = "NetDefaultDB";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionBuilder.browser.js","sourceRoot":"","sources":["../../src/connectionBuilder.browser.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAGlC,oFAAuE;AAEvE,sDAAsD;AAEtD,MAAa,4BAA6B,SAAQ,+BAAgC;IAI9E,MAAM,CAAC,iCAAiC,CACpC,iBAAyB,EACzB,OAAe,EACf,SAAiB,EACjB,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,mCAAmC,CACtC,iBAAyB,EACzB,SAAiB,EACjB,OAAe,EACf,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,2CAA2C,CAC9C,iBAAyB,EACzB,SAAiB,EACjB,iCAA0C,EAC1C,YAAqB,EACrB,8BAAwC,EACxC,2BAAoC;QAEpC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,2BAA2B,CAC9B,iBAAyB,EACzB,YAAqB,EACrB,mBAAwD;QAExD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,iBAAyB,EAAE,YAAqB,EAAE,UAAmB;QAClG,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,iBAAyB,EAAE,YAAoB,EAAE,YAAqB,EAAE,UAAmB;QACtH,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,iBAAyB,EAAE,YAAqB,EAAE,UAAmB;QAC5F,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,gBAAwB,EAAE,WAAmB;QAChE,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,gBAAwB,EAAE,aAAoC;QACnF,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,cAAc,CACjB,gBAAwB,EACxB,4BAAoH,EACpH,SAAkB;QAElB,IAAI,CAAC,4BAA4B,EAAE;YAC/B,MAAM,IAAI,KAAK,CACX,wJAAwJ,CAC3J,CAAC;SACL;QACD,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,4BAA4E,CAAC;QACzH,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;SACnH;QAED,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;SACpG;QAED,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC/B;aAAM;YACH,4BAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;SAC5D;QAED,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,gBAAwB,EAAE,UAA2B;QAC5E,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAElC,OAAO,IAAI,CAAC;IAChB,CAAC;;
|
|
1
|
+
{"version":3,"file":"connectionBuilder.browser.js","sourceRoot":"","sources":["../../src/connectionBuilder.browser.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAGlC,oFAAuE;AAEvE,sDAAsD;AAEtD,MAAa,4BAA6B,SAAQ,+BAAgC;IAI9E,MAAM,CAAC,iCAAiC,CACpC,iBAAyB,EACzB,OAAe,EACf,SAAiB,EACjB,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,mCAAmC,CACtC,iBAAyB,EACzB,SAAiB,EACjB,OAAe,EACf,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,2CAA2C,CAC9C,iBAAyB,EACzB,SAAiB,EACjB,iCAA0C,EAC1C,YAAqB,EACrB,8BAAwC,EACxC,2BAAoC;QAEpC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,2BAA2B,CAC9B,iBAAyB,EACzB,YAAqB,EACrB,mBAAwD;QAExD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,iBAAyB,EAAE,YAAqB,EAAE,UAAmB;QAClG,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,iBAAyB,EAAE,YAAoB,EAAE,YAAqB,EAAE,UAAmB;QACtH,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,iBAAyB,EAAE,YAAqB,EAAE,UAAmB;QAC5F,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,gBAAwB,EAAE,WAAmB;QAChE,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,gBAAwB,EAAE,aAAoC;QACnF,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,cAAc,CACjB,gBAAwB,EACxB,4BAAoH,EACpH,SAAkB;QAElB,IAAI,CAAC,4BAA4B,EAAE;YAC/B,MAAM,IAAI,KAAK,CACX,wJAAwJ,CAC3J,CAAC;SACL;QACD,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,4BAA4E,CAAC;QACzH,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;SACnH;QAED,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;SACpG;QAED,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC/B;aAAM;YACH,4BAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;SAC5D;QAED,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,gBAAwB,EAAE,UAA2B;QAC5E,MAAM,IAAI,GAAG,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAElC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAuC;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;;AApHL,oEAqHC;AApHmB,gDAAmB,GAAG,cAAc,CAAC;AACrC,8CAAiB,GAAG,MAAM,CAAC;AAqH/C,kBAAe,4BAA4B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DeviceCodeInfo, InteractiveBrowserCredentialInBrowserOptions, InteractiveBrowserCredentialNodeOptions, TokenCredential } from \"@azure/identity\";\nimport KustoConnectionStringBuilderBase from \"./connectionBuilderBase\";\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nexport class KustoConnectionStringBuilder extends KustoConnectionStringBuilderBase {\n static readonly DefaultDatabaseName = \"NetDefaultDB\";\n static readonly SecretReplacement = \"****\";\n\n static withAadUserPasswordAuthentication(\n _connectionString: string,\n _userId: string,\n _password: string,\n _authorityId?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadApplicationKeyAuthentication(\n _connectionString: string,\n _aadAppId: string,\n _appKey: string,\n _authorityId?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadApplicationCertificateAuthentication(\n _connectionString: string,\n _aadAppId: string,\n _applicationCertificatePrivateKey?: string,\n _authorityId?: string,\n _applicationCertificateSendX5c?: boolean,\n _applicationCertificatePath?: string\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAadDeviceAuthentication(\n _connectionString: string,\n _authorityId?: string,\n _deviceCodeCallback?: (response: DeviceCodeInfo) => void\n ): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withSystemManagedIdentity(_connectionString: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withUserManagedIdentity(_connectionString: string, _msiClientId: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAzLoginIdentity(_connectionString: string, _authorityId?: string, _timeoutMs?: number): KustoConnectionStringBuilder {\n throw new Error(\"Not supported in browser - use withUserPrompt instead\");\n }\n\n static withAccessToken(connectionString: string, accessToken: string): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.accessToken = accessToken;\n\n return kcsb;\n }\n\n static withTokenProvider(connectionString: string, tokenProvider: () => Promise<string>): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.aadFederatedSecurity = true;\n\n kcsb.tokenProvider = tokenProvider;\n\n return kcsb;\n }\n\n static withUserPrompt(\n connectionString: string,\n interactiveCredentialOptions: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n timeoutMs?: number\n ): KustoConnectionStringBuilder {\n if (!interactiveCredentialOptions) {\n throw new Error(\n \"Invalid parameters - You must provide interactiveCredentialOptions={clientId: string, redirectUri:string} to authenticate with user prompt in browser.\"\n );\n }\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n const { redirectUri, clientId, tenantId } = interactiveCredentialOptions as InteractiveBrowserCredentialInBrowserOptions;\n if (!clientId) {\n throw new Error(\"Invalid parameters - You must provide your SPA application client id to authenticate against\");\n }\n\n if (!redirectUri) {\n throw new Error(\"Invalid parameters - You must provide a redirectUri registered on the SPA app\");\n }\n\n if (tenantId) {\n kcsb.authorityId = tenantId;\n } else {\n interactiveCredentialOptions.tenantId = kcsb.authorityId;\n }\n\n kcsb.interactiveCredentialOptions = interactiveCredentialOptions;\n kcsb.aadFederatedSecurity = true;\n kcsb.applicationClientId = clientId;\n kcsb.useUserPromptAuth = true;\n\n kcsb.timeoutMs = timeoutMs;\n\n return kcsb;\n }\n\n static withTokenCredential(connectionString: string, credential: TokenCredential): KustoConnectionStringBuilder {\n const kcsb = new KustoConnectionStringBuilder(connectionString);\n kcsb.tokenCredential = credential;\n\n return kcsb;\n }\n\n static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase {\n return Object.assign(new KustoConnectionStringBuilder(other.toString(false)), other);\n }\n}\n\nexport default KustoConnectionStringBuilder;\n"]}
|
|
@@ -139,6 +139,9 @@ class KustoConnectionStringBuilder extends connectionBuilderBase_1.KustoConnecti
|
|
|
139
139
|
kcsb.tokenCredential = credential;
|
|
140
140
|
return kcsb;
|
|
141
141
|
}
|
|
142
|
+
static fromExisting(other) {
|
|
143
|
+
return Object.assign(new KustoConnectionStringBuilder(other.toString(false)), other);
|
|
144
|
+
}
|
|
142
145
|
}
|
|
143
146
|
exports.KustoConnectionStringBuilder = KustoConnectionStringBuilder;
|
|
144
147
|
KustoConnectionStringBuilder.DefaultDatabaseName = "NetDefaultDB";
|
|
@@ -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\";\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\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\";\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"]}
|
|
@@ -101,11 +101,11 @@ class KustoConnectionStringBuilderBase {
|
|
|
101
101
|
*
|
|
102
102
|
* @param name The name of the connector
|
|
103
103
|
* @param version The version of the connector
|
|
104
|
-
* @param appName
|
|
105
|
-
* @param appVersion
|
|
104
|
+
* @param appName The name of the containing application
|
|
105
|
+
* @param appVersion The version of the containing application
|
|
106
106
|
* @param sendUser Whether to send the username
|
|
107
|
-
* @param overrideUser
|
|
108
|
-
* @param additionalFields
|
|
107
|
+
* @param overrideUser Override the username ( if sendUser is True )
|
|
108
|
+
* @param additionalFields Additional fields to add to the header
|
|
109
109
|
*/
|
|
110
110
|
setConnectorDetails(name, version, appName, appVersion, sendUser = false, overrideUser, additionalFields) {
|
|
111
111
|
const clientDetails = clientDetails_1.ClientDetails.setConnectorDetails(name, version, appName, appVersion, sendUser, overrideUser, additionalFields);
|
|
@@ -127,9 +127,6 @@ class KustoConnectionStringBuilderBase {
|
|
|
127
127
|
.filter((x) => x !== "")
|
|
128
128
|
.join(";");
|
|
129
129
|
}
|
|
130
|
-
static fromExisting(other) {
|
|
131
|
-
return Object.assign({}, other);
|
|
132
|
-
}
|
|
133
130
|
}
|
|
134
131
|
exports.KustoConnectionStringBuilderBase = KustoConnectionStringBuilderBase;
|
|
135
132
|
KustoConnectionStringBuilderBase.DefaultDatabaseName = "NetDefaultDB";
|
|
@@ -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\";\nimport { ClientDetails } from \"./clientDetails\";\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 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 static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase {\n return Object.assign({}, other);\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\";\nimport { ClientDetails } from \"./clientDetails\";\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"]}
|
package/dist-esm/src/models.js
CHANGED
|
@@ -11,7 +11,7 @@ var WellKnownDataSet;
|
|
|
11
11
|
WellKnownDataSet["TableOfContents"] = "TableOfContents";
|
|
12
12
|
WellKnownDataSet["QueryProperties"] = "QueryProperties";
|
|
13
13
|
})(WellKnownDataSet || (exports.WellKnownDataSet = WellKnownDataSet = {}));
|
|
14
|
-
const defaultDatetimeParser = (t) => new Date(t);
|
|
14
|
+
const defaultDatetimeParser = (t) => (t ? new Date(t) : null);
|
|
15
15
|
const defaultTimespanParser = timeUtils_1.parseKustoTimestampToMillis;
|
|
16
16
|
/**
|
|
17
17
|
* Represents a Kusto result row.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,2CAA0D;AAE1D,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,mDAA+B,CAAA;IAC/B,6EAAyD,CAAA;IACzD,uDAAmC,CAAA;IACnC,uDAAmC,CAAA;AACvC,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B;AAKD,MAAM,qBAAqB,GAAmB,CAAC,
|
|
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\";\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"]}
|
|
@@ -10,8 +10,8 @@ exports.toMilliseconds = toMilliseconds;
|
|
|
10
10
|
// Format: [+|-]d.hh:mm:ss[.fffffff]
|
|
11
11
|
const TimespanRegex = /^(-?)(?:(\d+).)?(\d{2}):(\d{2}):(\d{2}(\.\d+)?$)/;
|
|
12
12
|
function parseKustoTimestampToMillis(t) {
|
|
13
|
-
if (t == null) {
|
|
14
|
-
return
|
|
13
|
+
if (t == null || t === "") {
|
|
14
|
+
return null;
|
|
15
15
|
}
|
|
16
16
|
const match = TimespanRegex.exec(t);
|
|
17
17
|
if (match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeUtils.js","sourceRoot":"","sources":["../../src/timeUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,SAAgB,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;AAFD,wCAEC;AAED,oCAAoC;AACpC,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,SAAgB,2BAA2B,CAAC,CAAgB;IACxD,IAAI,CAAC,IAAI,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"timeUtils.js","sourceRoot":"","sources":["../../src/timeUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,SAAgB,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;AAFD,wCAEC;AAED,oCAAoC;AACpC,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,SAAgB,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;AAdD,kEAcC","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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "azure-kusto-data",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.2",
|
|
4
4
|
"description": "Azure Data Explorer Query SDK",
|
|
5
5
|
"module": "dist-esm/src/index.js",
|
|
6
6
|
"types": "./types/src/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"./dist-esm/src/connectionBuilder.js": "./dist-esm/src/connectionBuilder.browser.js"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
|
-
"node": ">=
|
|
24
|
+
"node": ">= 18.0.0"
|
|
25
25
|
},
|
|
26
26
|
"publishConfig": {
|
|
27
27
|
"access": "public"
|
|
@@ -56,8 +56,7 @@
|
|
|
56
56
|
"rimraf": "^3.0.2"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@azure/identity": "^
|
|
60
|
-
"@azure/msal-common": "^7.3.0",
|
|
59
|
+
"@azure/identity": "^4.0.1",
|
|
61
60
|
"@types/uuid": "^8.3.4",
|
|
62
61
|
"axios": "^1.6.0",
|
|
63
62
|
"follow-redirects": "^1.15.1",
|
|
@@ -65,5 +64,5 @@
|
|
|
65
64
|
"stream-http": "^3.2.0",
|
|
66
65
|
"uuid": "^8.3.2"
|
|
67
66
|
},
|
|
68
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "591383875554bad2b3382806c06d6850e83e97b6"
|
|
69
68
|
}
|
|
@@ -6,7 +6,7 @@ export declare class ClientDetails {
|
|
|
6
6
|
static defaultApplication(): string;
|
|
7
7
|
static defaultUser(): string;
|
|
8
8
|
static defaultVersion(): string;
|
|
9
|
-
static escapeHeader(header: string): string;
|
|
9
|
+
static escapeHeader(header: string, wrapInBrackets?: boolean): string;
|
|
10
10
|
static formatHeader(args: [string, string][]): string;
|
|
11
11
|
static setConnectorDetails(name: string, version: string, app_name?: string | null, app_version?: string | null, send_user?: boolean, override_user?: string | null, additional_fields?: [string, string][] | null): ClientDetails;
|
|
12
12
|
getHeaders(): Partial<KustoHeaders>;
|
|
@@ -14,6 +14,7 @@ export declare class KustoConnectionStringBuilder extends KustoConnectionStringB
|
|
|
14
14
|
static withTokenProvider(connectionString: string, tokenProvider: () => Promise<string>): KustoConnectionStringBuilder;
|
|
15
15
|
static withUserPrompt(connectionString: string, interactiveCredentialOptions: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions, timeoutMs?: number): KustoConnectionStringBuilder;
|
|
16
16
|
static withTokenCredential(connectionString: string, credential: TokenCredential): KustoConnectionStringBuilder;
|
|
17
|
+
static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase;
|
|
17
18
|
}
|
|
18
19
|
export default KustoConnectionStringBuilder;
|
|
19
20
|
//# sourceMappingURL=connectionBuilder.browser.d.ts.map
|
|
@@ -20,6 +20,7 @@ export declare class KustoConnectionStringBuilder extends KustoConnectionStringB
|
|
|
20
20
|
*/
|
|
21
21
|
static withUserPrompt(connectionString: string, options?: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions, timeoutMs?: number): KustoConnectionStringBuilder;
|
|
22
22
|
static withTokenCredential(connectionString: string, credential: TokenCredential): KustoConnectionStringBuilder;
|
|
23
|
+
static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase;
|
|
23
24
|
}
|
|
24
25
|
export default KustoConnectionStringBuilder;
|
|
25
26
|
//# sourceMappingURL=connectionBuilder.d.ts.map
|
|
@@ -44,15 +44,14 @@ export declare abstract class KustoConnectionStringBuilderBase {
|
|
|
44
44
|
*
|
|
45
45
|
* @param name The name of the connector
|
|
46
46
|
* @param version The version of the connector
|
|
47
|
-
* @param appName
|
|
48
|
-
* @param appVersion
|
|
47
|
+
* @param appName The name of the containing application
|
|
48
|
+
* @param appVersion The version of the containing application
|
|
49
49
|
* @param sendUser Whether to send the username
|
|
50
|
-
* @param overrideUser
|
|
51
|
-
* @param additionalFields
|
|
50
|
+
* @param overrideUser Override the username ( if sendUser is True )
|
|
51
|
+
* @param additionalFields Additional fields to add to the header
|
|
52
52
|
*/
|
|
53
53
|
setConnectorDetails(name: string, version: string, appName?: string, appVersion?: string, sendUser?: boolean, overrideUser?: string, additionalFields?: [string, string][]): void;
|
|
54
54
|
toString(removeSecrets?: boolean): string;
|
|
55
|
-
static fromExisting(other: KustoConnectionStringBuilderBase): KustoConnectionStringBuilderBase;
|
|
56
55
|
}
|
|
57
56
|
export default KustoConnectionStringBuilderBase;
|
|
58
57
|
//# sourceMappingURL=connectionBuilderBase.d.ts.map
|
package/types/src/models.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ export declare enum WellKnownDataSet {
|
|
|
4
4
|
TableOfContents = "TableOfContents",
|
|
5
5
|
QueryProperties = "QueryProperties"
|
|
6
6
|
}
|
|
7
|
-
type DateTimeParser = (value: string) => any;
|
|
8
|
-
type TimeSpanParser = (value: string) => any;
|
|
7
|
+
type DateTimeParser = (value: string | null) => any;
|
|
8
|
+
type TimeSpanParser = (value: string | null) => any;
|
|
9
9
|
export interface Table {
|
|
10
10
|
TableKind?: string;
|
|
11
11
|
TableName: string;
|
package/types/src/timeUtils.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function toMilliseconds(hours: number, minutes: number, seconds: number): number;
|
|
2
|
-
export declare function parseKustoTimestampToMillis(t: string | null): number;
|
|
2
|
+
export declare function parseKustoTimestampToMillis(t: string | null): number | null;
|
|
3
3
|
//# sourceMappingURL=timeUtils.d.ts.map
|