@dbx-tools/databricks 0.9.188 → 0.9.189

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/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/databricks";
6
- export const PACKAGE_VERSION = "0.9.188";
6
+ export const PACKAGE_VERSION = "0.9.189";
7
7
  export * as cloud from "./src/cloud.ts";
8
8
  export * as databricksFS from "./src/databricks-fs.ts";
9
9
  export * as databricksPath from "./src/databricks-path.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/databricks";
2
- export declare const PACKAGE_VERSION = "0.9.188";
2
+ export declare const PACKAGE_VERSION = "0.9.189";
3
3
  export * as cloud from "./src/cloud.ts";
4
4
  export * as databricksFS from "./src/databricks-fs.ts";
5
5
  export * as databricksPath from "./src/databricks-path.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/databricks";
5
- export const PACKAGE_VERSION = "0.9.188";
5
+ export const PACKAGE_VERSION = "0.9.189";
6
6
  export * as cloud from "./src/cloud.js";
7
7
  export * as databricksFS from "./src/databricks-fs.js";
8
8
  export * as databricksPath from "./src/databricks-path.js";
@@ -13,4 +13,4 @@ export { DatabricksFileSystem } from "./src/databricks-fs.js";
13
13
  export { expandHomePath, normalizeDatabricksRoot, resolveDatabricksRoot, isWorkspaceFilesPath, isVolumesPath, isDbfsPath, resolveDatabricksFilesBackend } from "./src/databricks-path.js";
14
14
  export { getPublicIp, resolveHostIps } from "./src/net.js";
15
15
  export { createWorkspaceClient, refreshWorkspaceClientAuthentication, toLegacyWorkspaceClient, tryGetWorkspaceClient, getWorkspaceClient, getCurrentUserName, getWorkspaceUrl, getWorkspaceId } from "./src/workspace-client.js";
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFMLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQ0FBb0MsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2RhdGFicmlja3NcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xODhcIjtcbmV4cG9ydCAqIGFzIGNsb3VkIGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0ICogYXMgZGF0YWJyaWNrc0ZTIGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgKiBhcyBkYXRhYnJpY2tzUGF0aCBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1wYXRoLnRzXCI7XG5leHBvcnQgKiBhcyBuZXQgZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlQ2xpZW50IGZyb20gXCIuL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBSQU5HRV9DQUNIRV9UVExfTVMsIENsb3VkUHJvdmlkZXIsIHJlc29sdmVDbG91ZExvY2F0aW9uLCBsb2FkUHJvdmlkZXJSYW5nZXMgfSBmcm9tIFwiLi9zcmMvY2xvdWQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2xvdWRMb2NhdGlvbiB9IGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0IHsgRGF0YWJyaWNrc0ZpbGVTeXN0ZW0gfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1mcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRmlsZVN5c3RlbUNsaWVudFJlc29sdmVyLCBEYXRhYnJpY2tzRmlsZVN5c3RlbU9wdGlvbnMsIERhdGFicmlja3NTdHJlYW1Xcml0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1mcy50c1wiO1xuZXhwb3J0IHsgZXhwYW5kSG9tZVBhdGgsIG5vcm1hbGl6ZURhdGFicmlja3NSb290LCByZXNvbHZlRGF0YWJyaWNrc1Jvb3QsIGlzV29ya3NwYWNlRmlsZXNQYXRoLCBpc1ZvbHVtZXNQYXRoLCBpc0RiZnNQYXRoLCByZXNvbHZlRGF0YWJyaWNrc0ZpbGVzQmFja2VuZCB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0ZpbGVzQmFja2VuZCwgTm9ybWFsaXplRGF0YWJyaWNrc1Jvb3RPcHRpb25zLCBSZXNvbHZlRGF0YWJyaWNrc1Jvb3RPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2RhdGFicmlja3MtcGF0aC50c1wiO1xuZXhwb3J0IHsgZ2V0UHVibGljSXAsIHJlc29sdmVIb3N0SXBzIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHsgY3JlYXRlV29ya3NwYWNlQ2xpZW50LCByZWZyZXNoV29ya3NwYWNlQ2xpZW50QXV0aGVudGljYXRpb24sIHRvTGVnYWN5V29ya3NwYWNlQ2xpZW50LCB0cnlHZXRXb3Jrc3BhY2VDbGllbnQsIGdldFdvcmtzcGFjZUNsaWVudCwgZ2V0Q3VycmVudFVzZXJOYW1lLCBnZXRXb3Jrc3BhY2VVcmwsIGdldFdvcmtzcGFjZUlkIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFMLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQ0FBb0MsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2RhdGFicmlja3NcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xODlcIjtcbmV4cG9ydCAqIGFzIGNsb3VkIGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0ICogYXMgZGF0YWJyaWNrc0ZTIGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgKiBhcyBkYXRhYnJpY2tzUGF0aCBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1wYXRoLnRzXCI7XG5leHBvcnQgKiBhcyBuZXQgZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlQ2xpZW50IGZyb20gXCIuL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzXCI7XG5leHBvcnQgeyBSQU5HRV9DQUNIRV9UVExfTVMsIENsb3VkUHJvdmlkZXIsIHJlc29sdmVDbG91ZExvY2F0aW9uLCBsb2FkUHJvdmlkZXJSYW5nZXMgfSBmcm9tIFwiLi9zcmMvY2xvdWQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2xvdWRMb2NhdGlvbiB9IGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0IHsgRGF0YWJyaWNrc0ZpbGVTeXN0ZW0gfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1mcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRmlsZVN5c3RlbUNsaWVudFJlc29sdmVyLCBEYXRhYnJpY2tzRmlsZVN5c3RlbU9wdGlvbnMsIERhdGFicmlja3NTdHJlYW1Xcml0ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1mcy50c1wiO1xuZXhwb3J0IHsgZXhwYW5kSG9tZVBhdGgsIG5vcm1hbGl6ZURhdGFicmlja3NSb290LCByZXNvbHZlRGF0YWJyaWNrc1Jvb3QsIGlzV29ya3NwYWNlRmlsZXNQYXRoLCBpc1ZvbHVtZXNQYXRoLCBpc0RiZnNQYXRoLCByZXNvbHZlRGF0YWJyaWNrc0ZpbGVzQmFja2VuZCB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0ZpbGVzQmFja2VuZCwgTm9ybWFsaXplRGF0YWJyaWNrc1Jvb3RPcHRpb25zLCBSZXNvbHZlRGF0YWJyaWNrc1Jvb3RPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2RhdGFicmlja3MtcGF0aC50c1wiO1xuZXhwb3J0IHsgZ2V0UHVibGljSXAsIHJlc29sdmVIb3N0SXBzIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHsgY3JlYXRlV29ya3NwYWNlQ2xpZW50LCByZWZyZXNoV29ya3NwYWNlQ2xpZW50QXV0aGVudGljYXRpb24sIHRvTGVnYWN5V29ya3NwYWNlQ2xpZW50LCB0cnlHZXRXb3Jrc3BhY2VDbGllbnQsIGdldFdvcmtzcGFjZUNsaWVudCwgZ2V0Q3VycmVudFVzZXJOYW1lLCBnZXRXb3Jrc3BhY2VVcmwsIGdldFdvcmtzcGFjZUlkIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbiJdfQ==
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { type WorkspaceClient as AppKitWorkspaceClient } from "@databricks/appkit";
9
- import { type DatabricksAuthOptions } from "@dbx-tools/auth";
8
+ import type { WorkspaceClient as AppKitWorkspaceClient } from "@databricks/appkit";
9
+ import type { DatabricksAuthOptions } from "@dbx-tools/auth";
10
10
  import { type UrlBuilder } from "@dbx-tools/shared-core";
11
11
  /** Legacy SDK client exposed by AppKit for APIs not yet on its facade. */
12
12
  export type WorkspaceClient = ReturnType<AppKitWorkspaceClient["toLegacyWorkspaceClient"]>;
@@ -5,13 +5,10 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { createWorkspaceClient as _createWorkspaceClient, } from "@databricks/appkit";
9
- import { tryGetExecutionContext } from "@dbx-tools/appkit";
10
- import { createAuthClient } from "@dbx-tools/auth";
8
+ import { databricks as appkitDatabricks, tryGetExecutionContext } from "@dbx-tools/appkit";
11
9
  import { memoize, urlBuilder, trimToUndefined } from "@dbx-tools/shared-core";
12
10
  /** Databricks workspace ids are a 10-20 digit run embedded in the host. */
13
11
  const WORKSPACE_ID_REGEX = /\d{10,20}/;
14
- const workspaceAuth = new WeakMap();
15
12
  /**
16
13
  * Create an AppKit workspace client whose SDK credential visitor delegates to
17
14
  * `@dbx-tools/auth`.
@@ -22,20 +19,7 @@ const workspaceAuth = new WeakMap();
22
19
  * execution.
23
20
  */
24
21
  export async function createWorkspaceClient(options = {}) {
25
- const auth = await createAuthClient(options);
26
- const client = _createWorkspaceClient({ host: auth.host });
27
- client.config.credentials = {
28
- name: "pat",
29
- async configure() {
30
- return async (headers) => {
31
- for (const [name, value] of Object.entries(await auth.headers())) {
32
- headers.set(name, value);
33
- }
34
- };
35
- },
36
- };
37
- workspaceAuth.set(client, auth);
38
- return client;
22
+ return appkitDatabricks.createWorkspaceClient(options);
39
23
  }
40
24
  /**
41
25
  * Refresh the dbx-tools credential lifecycle attached by
@@ -43,11 +27,7 @@ export async function createWorkspaceClient(options = {}) {
43
27
  * AppKit clients whose credential owner is unknown.
44
28
  */
45
29
  export async function refreshWorkspaceClientAuthentication(client) {
46
- const auth = workspaceAuth.get(client);
47
- if (!auth)
48
- return false;
49
- await auth.headers({ login: false, refresh: true });
50
- return true;
30
+ return appkitDatabricks.refreshWorkspaceClientAuthentication(client);
51
31
  }
52
32
  /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
53
33
  export function toLegacyWorkspaceClient(client) {
@@ -146,4 +126,4 @@ export async function getWorkspaceId(workspaceHost) {
146
126
  }
147
127
  return undefined;
148
128
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxxQkFBcUIsSUFBSSxzQkFBc0IsR0FFaEQsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQStDLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBbUIsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9GLDJFQUEyRTtBQUMzRSxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBcUMsQ0FBQztBQU12RTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLFVBQWlDLEVBQUU7SUFFbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRztRQUMxQixJQUFJLEVBQUUsS0FBSztRQUNYLEtBQUssQ0FBQyxTQUFTO1lBQ2IsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQ3ZCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxD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LEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzFDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLFVBQVU7WUFBRSxPQUFPLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0QsSUFBSSxjQUFjO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDMUMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxhQUFzQjtJQUN6RCxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQztJQUM5RCxJQUFJLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUNwQyxhQUFhLEdBQUcsYUFBYSxJQUFJLENBQUMsTUFBTSxlQUFlLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUNqRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvbHZlIHRoZSBjdXJyZW50IERhdGFicmlja3Mgd29ya3NwYWNlJ3MgVVJMLCBudW1lcmljIGlkLCBhbmQgY2xpZW50IGZyb21cbiAqIHRoZSBhY3RpdmUgZXhlY3V0aW9uIGNvbnRleHQgKEFwcEtpdCwgd2hlbiBpbml0aWFsaXplZCksIGEgZGVmYXVsdFxuICoge0BsaW5rIFdvcmtzcGFjZUNsaWVudH0sIG9yIHRoZSBlbnZpcm9ubWVudC4gU2VydmVyLW9ubHkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCBhcyBfY3JlYXRlV29ya3NwYWNlQ2xpZW50LFxuICB0eXBlIFdvcmtzcGFjZUNsaWVudCBhcyBBcHBLaXRXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IHRyeUdldEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IHR5cGUgQXV0aENsaWVudCwgdHlwZSBEYXRhYnJpY2tzQXV0aE9wdGlvbnMsIGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tIFwiQGRieC10b29scy9hdXRoXCI7XG5pbXBvcnQgeyBtZW1vaXplLCB0eXBlIFVybEJ1aWxkZXIsIHVybEJ1aWxkZXIsIHRyaW1Ub1VuZGVmaW5lZCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKiBEYXRhYnJpY2tzIHdvcmtzcGFjZSBpZHMgYXJlIGEgMTAtMjAgZGlnaXQgcnVuIGVtYmVkZGVkIGluIHRoZSBob3N0LiAqL1xuY29uc3QgV09SS1NQQUNFX0lEX1JFR0VYID0gL1xcZHsxMCwyMH0vO1xuY29uc3Qgd29ya3NwYWNlQXV0aCA9IG5ldyBXZWFrTWFwPEFwcEtpdFdvcmtzcGFjZUNsaWVudCwgQXV0aENsaWVudD4oKTtcblxuLyoqIExlZ2FjeSBTREsgY2xpZW50IGV4cG9zZWQgYnkgQXBwS2l0IGZvciBBUElzIG5vdCB5ZXQgb24gaXRzIGZhY2FkZS4gKi9cbmV4cG9ydCB0eXBlIFdvcmtzcGFjZUNsaWVudCA9IFJldHVyblR5cGU8QXBwS2l0V29ya3NwYWNlQ2xpZW50W1widG9MZWdhY3lXb3Jrc3BhY2VDbGllbnRcIl0+O1xudHlwZSBDb25maWcgPSBXb3Jrc3BhY2VDbGllbnRbXCJjb25maWdcIl07XG5cbi8qKlxuICogQ3JlYXRlIGFuIEFwcEtpdCB3b3Jrc3BhY2UgY2xpZW50IHdob3NlIFNESyBjcmVkZW50aWFsIHZpc2l0b3IgZGVsZWdhdGVzIHRvXG4gKiBgQGRieC10b29scy9hdXRoYC5cbiAqXG4gKiBUaGUgYXV0aCBwYWNrYWdlIHJlc29sdmVzIHRoZSBhY3RpdmUgcHJvZmlsZSwgaG9zdCwgdG9rZW4gbGlmZWN5Y2xlLCBhbmRcbiAqIHVuaWZpZWQtd29ya3NwYWNlIGhlYWRlciB3aXRob3V0IHJlcXVpcmluZyBjYWxsZXJzIHRvIG1pcnJvciBwcm9maWxlIHZhbHVlc1xuICogaW50byBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFRoZSBTREsgc3RpbGwgb3ducyB3b3Jrc3BhY2UgQVBJcyBhbmQgcmVxdWVzdFxuICogZXhlY3V0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV29ya3NwYWNlQ2xpZW50KFxuICBvcHRpb25zOiBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8QXBwS2l0V29ya3NwYWNlQ2xpZW50PiB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCBjcmVhdGVBdXRoQ2xpZW50KG9wdGlvbnMpO1xuICBjb25zdCBjbGllbnQgPSBfY3JlYXRlV29ya3NwYWNlQ2xpZW50KHsgaG9zdDogYXV0aC5ob3N0IH0pO1xuICBjbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzID0ge1xuICAgIG5hbWU6IFwicGF0XCIsXG4gICAgYXN5bmMgY29uZmlndXJlKCkge1xuICAgICAgcmV0dXJuIGFzeW5jIChoZWFkZXJzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhd2FpdCBhdXRoLmhlYWRlcnMoKSkpIHtcbiAgICAgICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbiAgd29ya3NwYWNlQXV0aC5zZXQoY2xpZW50LCBhdXRoKTtcbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLyoqXG4gKiBSZWZyZXNoIHRoZSBkYngtdG9vbHMgY3JlZGVudGlhbCBsaWZlY3ljbGUgYXR0YWNoZWQgYnlcbiAqIHtAbGluayBjcmVhdGVXb3Jrc3BhY2VDbGllbnR9LiBSZXR1cm5zIGBmYWxzZWAgZm9yIGV4dGVybmFsbHkgc3VwcGxpZWRcbiAqIEFwcEtpdCBjbGllbnRzIHdob3NlIGNyZWRlbnRpYWwgb3duZXIgaXMgdW5rbm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hXb3Jrc3BhY2VDbGllbnRBdXRoZW50aWNhdGlvbihcbiAgY2xpZW50OiBBcHBLaXRXb3Jrc3BhY2VDbGllbnQsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgYXV0aCA9IHdvcmtzcGFjZUF1dGguZ2V0KGNsaWVudCk7XG4gIGlmICghYXV0aCkgcmV0dXJuIGZhbHNlO1xuICBhd2FpdCBhdXRoLmhlYWRlcnMoeyBsb2dpbjogZmFsc2UsIHJlZnJlc2g6IHRydWUgfSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogUmVzb2x2ZSBBcHBLaXQncyBmYWNhZGUgb3IgYW4gZXhpc3RpbmcgbGVnYWN5IGNsaWVudCB0byB0aGUgbGVnYWN5IFNESyBzdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KFxuICBjbGllbnQ6IEFwcEtpdFdvcmtzcGFjZUNsaWVudCB8IFdvcmtzcGFjZUNsaWVudCxcbik6IFdvcmtzcGFjZUNsaWVudCB7XG4gIHJldHVybiBcInRvTGVnYWN5V29ya3NwYWNlQ2xpZW50XCIgaW4gY2xpZW50ID8gY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCkgOiBjbGllbnQ7XG59XG5cbi8qKlxuICogTGF6aWx5LWNvbnN0cnVjdGVkIGRlZmF1bHQgYFdvcmtzcGFjZUNsaWVudGAgKGVudiAvIHByb2ZpbGUgYXV0aCksIG1lbW9pemVkIHNvXG4gKiBjb25zdHJ1Y3Rpb24gaGFwcGVucyBhdCBtb3N0IG9uY2UgcGVyIHByb2Nlc3MuIFVzZWQgb25seSB3aGVuIHRoZXJlJ3Mgbm9cbiAqIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB0byBib3Jyb3cgYSBjbGllbnQgZnJvbS5cbiAqL1xuY29uc3QgZ2V0RGVmYXVsdFdvcmtzcGFjZUNsaWVudCA9IG1lbW9pemUoYXN5bmMgKCkgPT5cbiAgKGF3YWl0IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpKS50b0xlZ2FjeVdvcmtzcGFjZUNsaWVudCgpLFxuKTtcblxuLyoqXG4gKiBUaGUgQXBwS2l0IGV4ZWN1dGlvbi1jb250ZXh0IHdvcmtzcGFjZSBjbGllbnQgd2hlbiBhdmFpbGFibGUsIG90aGVyd2lzZVxuICogYHVuZGVmaW5lZGAuIE5ldmVyIGNvbnN0cnVjdHMgYSBmYWxsYmFjayBjbGllbnQgYW5kIG5ldmVyIHRocm93cyBmb3IgYVxuICogbWlzc2luZyBBcHBLaXQgc2NvcGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlHZXRXb3Jrc3BhY2VDbGllbnQoKTogV29ya3NwYWNlQ2xpZW50IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHtAbGluayBXb3Jrc3BhY2VDbGllbnR9OiB7QGxpbmsgdHJ5R2V0V29ya3NwYWNlQ2xpZW50fSBmaXJzdCwgZWxzZVxuICogYSBtZW1vaXplZCBkZWZhdWx0IGNsaWVudCBmcm9tIGVudiAvIHByb2ZpbGUgYXV0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNsaWVudCgpOiBQcm9taXNlPFdvcmtzcGFjZUNsaWVudD4ge1xuICByZXR1cm4gdHJ5R2V0V29ya3NwYWNlQ2xpZW50KCkgPz8gKGF3YWl0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQoKSk7XG59XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB3b3Jrc3BhY2UgYENvbmZpZ2A6IHRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50J3MgY29uZmlnXG4gKiB3aGVuIEFwcEtpdCBpcyBpbml0aWFsaXplZCwgZWxzZSB0aGUgZGVmYXVsdCBjbGllbnQncy4gUmV0dXJucyBgdW5kZWZpbmVkYFxuICogKG5ldmVyIHRocm93cykgd2hlbiBuZWl0aGVyIGlzIGF2YWlsYWJsZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29uZmlnKCk6IFByb21pc2U8Q29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSkuY29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ3VycmVudCBEYXRhYnJpY2tzIHVzZXJuYW1lIGZvciB3b3Jrc3BhY2UgaG9tZSBwYXRoc1xuICogKGAvV29ya3NwYWNlL1VzZXJzLzx1c2VyTmFtZT5gKS5cbiAqXG4gKiBQcmVmZXJzIGB1c2VyTmFtZWAgb24gdGhlIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gKiBjYWxscyBgY3VycmVudFVzZXIubWUoKWAgb24ge0BsaW5rIGNsaWVudH0gKG9yIHtAbGluayBnZXRXb3Jrc3BhY2VDbGllbnR9KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyTmFtZShjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb250ZXh0VXNlciA9IHJlYWRDb250ZXh0VXNlck5hbWUodHJ5R2V0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiAgaWYgKGNvbnRleHRVc2VyKSByZXR1cm4gY29udGV4dFVzZXI7XG5cbiAgY29uc3QgcmVzb2x2ZWQgPSBjbGllbnQgPz8gKGF3YWl0IGdldFdvcmtzcGFjZUNsaWVudCgpKTtcbiAgY29uc3QgbWUgPSBhd2FpdCByZXNvbHZlZC5jdXJyZW50VXNlci5tZSgpO1xuICBjb25zdCB1c2VyTmFtZSA9IG1lLnVzZXJOYW1lPy50cmltKCk7XG4gIGlmICghdXNlck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhYnJpY2tzIGN1cnJlbnRVc2VyLm1lKCkgZGlkIG5vdCByZXR1cm4gYSB1c2VyTmFtZVwiKTtcbiAgfVxuICByZXR1cm4gdXNlck5hbWU7XG59XG5cbi8qKiBCZXN0LWVmZm9ydCBgdXNlck5hbWVgIG9mZiBhbiBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQgKHNoYXBlIHZhcmllcyBieSBtb2RlKS4gKi9cbmZ1bmN0aW9uIHJlYWRDb250ZXh0VXNlck5hbWUoY3R4OiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBjdHggIT09IFwib2JqZWN0XCIgfHwgY3R4ID09PSBudWxsIHx8ICEoXCJ1c2VyTmFtZVwiIGluIGN0eCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbHVlID0gKGN0eCBhcyB7IHVzZXJOYW1lPzogdW5rbm93biB9KS51c2VyTmFtZTtcbiAgcmV0dXJuIHRyaW1Ub1VuZGVmaW5lZCh2YWx1ZSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgY3VycmVudCB3b3Jrc3BhY2UgaG9zdCBhcyBhIGBuZXQuVXJsQnVpbGRlcmA6IHRoZSB3b3Jrc3BhY2VcbiAqIGBDb25maWdgIGhvc3QgZmlyc3QsIHRoZW4gdGhlIGBEQVRBQlJJQ0tTX0hPU1RgIGVudiB2YXIsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VVcmwoKTogUHJvbWlzZTxVcmxCdWlsZGVyIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGdldFdvcmtzcGFjZUNvbmZpZygpO1xuICBpZiAoY29uZmlnKSB7XG4gICAgY29uc3QgY29uZmlnSG9zdCA9IHVybEJ1aWxkZXIoYXdhaXQgY29uZmlnLmdldEhvc3QoKSk7XG4gICAgaWYgKGNvbmZpZ0hvc3QpIHJldHVybiBjb25maWdIb3N0O1xuICB9XG4gIGNvbnN0IGRhdGFicmlja3NIb3N0ID0gdXJsQnVpbGRlcihwcm9jZXNzLmVudi5EQVRBQlJJQ0tTX0hPU1QpO1xuICBpZiAoZGF0YWJyaWNrc0hvc3QpIHJldHVybiBkYXRhYnJpY2tzSG9zdDtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBudW1lcmljIHdvcmtzcGFjZSBpZDogdGhlIHdvcmtzcGFjZSBgQ29uZmlnYCdzIGB3b3Jrc3BhY2VJZGBcbiAqIGZpcnN0LCBlbHNlIHRoZSAxMC0yMCBkaWdpdCBydW4gb2YgYHdvcmtzcGFjZUhvc3RgIChkZWZhdWx0aW5nIHRvXG4gKiB7QGxpbmsgZ2V0V29ya3NwYWNlVXJsfSdzIGhvc3QpLiBgdW5kZWZpbmVkYCB3aGVuIG5laXRoZXIgeWllbGRzIGFuIGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlSWQod29ya3NwYWNlSG9zdD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHdvcmtzcGFjZUlkID0gKGF3YWl0IGdldFdvcmtzcGFjZUNvbmZpZygpKT8ud29ya3NwYWNlSWQ7XG4gIGlmICh3b3Jrc3BhY2VJZCkgcmV0dXJuIHdvcmtzcGFjZUlkO1xuICB3b3Jrc3BhY2VIb3N0ID0gd29ya3NwYWNlSG9zdCA/PyAoYXdhaXQgZ2V0V29ya3NwYWNlVXJsKCkpPy5ob3N0O1xuICBpZiAod29ya3NwYWNlSG9zdCkge1xuICAgIGNvbnN0IG1hdGNoID0gd29ya3NwYWNlSG9zdC5tYXRjaChXT1JLU1BBQ0VfSURfUkVHRVgpPy5bMF07XG4gICAgaWYgKG1hdGNoKSByZXR1cm4gbWF0Y2g7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBRSxVQUFVLElBQUksZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRixPQUFPLEVBQUUsT0FBTyxFQUFtQixVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0YsMkVBQTJFO0FBQzNFLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBTXZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsVUFBaUMsRUFBRTtJQUVuQyxPQUFPLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQ0FBb0MsQ0FDeEQsTUFBNkI7SUFFN0IsT0FBTyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsTUFBK0M7SUFFL0MsT0FBTyx5QkFBeUIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDekYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUNuRCxDQUFDLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLENBQzFELENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxD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IERhdGFicmlja3Mgd29ya3NwYWNlJ3MgVVJMLCBudW1lcmljIGlkLCBhbmQgY2xpZW50IGZyb21cbiAqIHRoZSBhY3RpdmUgZXhlY3V0aW9uIGNvbnRleHQgKEFwcEtpdCwgd2hlbiBpbml0aWFsaXplZCksIGEgZGVmYXVsdFxuICoge0BsaW5rIFdvcmtzcGFjZUNsaWVudH0sIG9yIHRoZSBlbnZpcm9ubWVudC4gU2VydmVyLW9ubHkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50IGFzIEFwcEtpdFdvcmtzcGFjZUNsaWVudCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGRhdGFicmlja3MgYXMgYXBwa2l0RGF0YWJyaWNrcywgdHJ5R2V0RXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgfSBmcm9tIFwiQGRieC10b29scy9hdXRoXCI7XG5pbXBvcnQgeyBtZW1vaXplLCB0eXBlIFVybEJ1aWxkZXIsIHVybEJ1aWxkZXIsIHRyaW1Ub1VuZGVmaW5lZCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKiBEYXRhYnJpY2tzIHdvcmtzcGFjZSBpZHMgYXJlIGEgMTAtMjAgZGlnaXQgcnVuIGVtYmVkZGVkIGluIHRoZSBob3N0LiAqL1xuY29uc3QgV09SS1NQQUNFX0lEX1JFR0VYID0gL1xcZHsxMCwyMH0vO1xuXG4vKiogTGVnYWN5IFNESyBjbGllbnQgZXhwb3NlZCBieSBBcHBLaXQgZm9yIEFQSXMgbm90IHlldCBvbiBpdHMgZmFjYWRlLiAqL1xuZXhwb3J0IHR5cGUgV29ya3NwYWNlQ2xpZW50ID0gUmV0dXJuVHlwZTxBcHBLaXRXb3Jrc3BhY2VDbGllbnRbXCJ0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudFwiXT47XG50eXBlIENvbmZpZyA9IFdvcmtzcGFjZUNsaWVudFtcImNvbmZpZ1wiXTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gQXBwS2l0IHdvcmtzcGFjZSBjbGllbnQgd2hvc2UgU0RLIGNyZWRlbnRpYWwgdmlzaXRvciBkZWxlZ2F0ZXMgdG9cbiAqIGBAZGJ4LXRvb2xzL2F1dGhgLlxuICpcbiAqIFRoZSBhdXRoIHBhY2thZ2UgcmVzb2x2ZXMgdGhlIGFjdGl2ZSBwcm9maWxlLCBob3N0LCB0b2tlbiBsaWZlY3ljbGUsIGFuZFxuICogdW5pZmllZC13b3Jrc3BhY2UgaGVhZGVyIHdpdGhvdXQgcmVxdWlyaW5nIGNhbGxlcnMgdG8gbWlycm9yIHByb2ZpbGUgdmFsdWVzXG4gKiBpbnRvIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhlIFNESyBzdGlsbCBvd25zIHdvcmtzcGFjZSBBUElzIGFuZCByZXF1ZXN0XG4gKiBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoXG4gIG9wdGlvbnM6IERhdGFicmlja3NBdXRoT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxBcHBLaXRXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgcmV0dXJuIGFwcGtpdERhdGFicmlja3MuY3JlYXRlV29ya3NwYWNlQ2xpZW50KG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggdGhlIGRieC10b29scyBjcmVkZW50aWFsIGxpZmVjeWNsZSBhdHRhY2hlZCBieVxuICoge0BsaW5rIGNyZWF0ZVdvcmtzcGFjZUNsaWVudH0uIFJldHVybnMgYGZhbHNlYCBmb3IgZXh0ZXJuYWxseSBzdXBwbGllZFxuICogQXBwS2l0IGNsaWVudHMgd2hvc2UgY3JlZGVudGlhbCBvd25lciBpcyB1bmtub3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFdvcmtzcGFjZUNsaWVudEF1dGhlbnRpY2F0aW9uKFxuICBjbGllbnQ6IEFwcEtpdFdvcmtzcGFjZUNsaWVudCxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gYXBwa2l0RGF0YWJyaWNrcy5yZWZyZXNoV29ya3NwYWNlQ2xpZW50QXV0aGVudGljYXRpb24oY2xpZW50KTtcbn1cblxuLyoqIFJlc29sdmUgQXBwS2l0J3MgZmFjYWRlIG9yIGFuIGV4aXN0aW5nIGxlZ2FjeSBjbGllbnQgdG8gdGhlIGxlZ2FjeSBTREsgc3VyZmFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudChcbiAgY2xpZW50OiBBcHBLaXRXb3Jrc3BhY2VDbGllbnQgfCBXb3Jrc3BhY2VDbGllbnQsXG4pOiBXb3Jrc3BhY2VDbGllbnQge1xuICByZXR1cm4gXCJ0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudFwiIGluIGNsaWVudCA/IGNsaWVudC50b0xlZ2FjeVdvcmtzcGFjZUNsaWVudCgpIDogY2xpZW50O1xufVxuXG4vKipcbiAqIExhemlseS1jb25zdHJ1Y3RlZCBkZWZhdWx0IGBXb3Jrc3BhY2VDbGllbnRgIChlbnYgLyBwcm9maWxlIGF1dGgpLCBtZW1vaXplZCBzb1xuICogY29uc3RydWN0aW9uIGhhcHBlbnMgYXQgbW9zdCBvbmNlIHBlciBwcm9jZXNzLiBVc2VkIG9ubHkgd2hlbiB0aGVyZSdzIG5vXG4gKiBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQgdG8gYm9ycm93IGEgY2xpZW50IGZyb20uXG4gKi9cbmNvbnN0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQgPSBtZW1vaXplKGFzeW5jICgpID0+XG4gIChhd2FpdCBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKSkudG9MZWdhY3lXb3Jrc3BhY2VDbGllbnQoKSxcbik7XG5cbi8qKlxuICogVGhlIEFwcEtpdCBleGVjdXRpb24tY29udGV4dCB3b3Jrc3BhY2UgY2xpZW50IHdoZW4gYXZhaWxhYmxlLCBvdGhlcndpc2VcbiAqIGB1bmRlZmluZWRgLiBOZXZlciBjb25zdHJ1Y3RzIGEgZmFsbGJhY2sgY2xpZW50IGFuZCBuZXZlciB0aHJvd3MgZm9yIGFcbiAqIG1pc3NpbmcgQXBwS2l0IHNjb3BlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5R2V0V29ya3NwYWNlQ2xpZW50KCk6IFdvcmtzcGFjZUNsaWVudCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0cnlHZXRFeGVjdXRpb25Db250ZXh0KCk/LmNsaWVudC50b0xlZ2FjeVdvcmtzcGFjZUNsaWVudCgpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSB7QGxpbmsgV29ya3NwYWNlQ2xpZW50fToge0BsaW5rIHRyeUdldFdvcmtzcGFjZUNsaWVudH0gZmlyc3QsIGVsc2VcbiAqIGEgbWVtb2l6ZWQgZGVmYXVsdCBjbGllbnQgZnJvbSBlbnYgLyBwcm9maWxlIGF1dGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VDbGllbnQoKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgcmV0dXJuIHRyeUdldFdvcmtzcGFjZUNsaWVudCgpID8/IChhd2FpdCBnZXREZWZhdWx0V29ya3NwYWNlQ2xpZW50KCkpO1xufVxuXG4vKipcbiAqIFRoZSBhY3RpdmUgd29ya3NwYWNlIGBDb25maWdgOiB0aGUgQXBwS2l0IGV4ZWN1dGlvbi1jb250ZXh0IGNsaWVudCdzIGNvbmZpZ1xuICogd2hlbiBBcHBLaXQgaXMgaW5pdGlhbGl6ZWQsIGVsc2UgdGhlIGRlZmF1bHQgY2xpZW50J3MuIFJldHVybnMgYHVuZGVmaW5lZGBcbiAqIChuZXZlciB0aHJvd3MpIHdoZW4gbmVpdGhlciBpcyBhdmFpbGFibGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNvbmZpZygpOiBQcm9taXNlPENvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgZ2V0V29ya3NwYWNlQ2xpZW50KCkpLmNvbmZpZztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEN1cnJlbnQgRGF0YWJyaWNrcyB1c2VybmFtZSBmb3Igd29ya3NwYWNlIGhvbWUgcGF0aHNcbiAqIChgL1dvcmtzcGFjZS9Vc2Vycy88dXNlck5hbWU+YCkuXG4gKlxuICogUHJlZmVycyBgdXNlck5hbWVgIG9uIHRoZSBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQgd2hlbiBzZXQsIG90aGVyd2lzZVxuICogY2FsbHMgYGN1cnJlbnRVc2VyLm1lKClgIG9uIHtAbGluayBjbGllbnR9IChvciB7QGxpbmsgZ2V0V29ya3NwYWNlQ2xpZW50fSkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50VXNlck5hbWUoY2xpZW50PzogV29ya3NwYWNlQ2xpZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY29udGV4dFVzZXIgPSByZWFkQ29udGV4dFVzZXJOYW1lKHRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4gIGlmIChjb250ZXh0VXNlcikgcmV0dXJuIGNvbnRleHRVc2VyO1xuXG4gIGNvbnN0IHJlc29sdmVkID0gY2xpZW50ID8/IChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSk7XG4gIGNvbnN0IG1lID0gYXdhaXQgcmVzb2x2ZWQuY3VycmVudFVzZXIubWUoKTtcbiAgY29uc3QgdXNlck5hbWUgPSBtZS51c2VyTmFtZT8udHJpbSgpO1xuICBpZiAoIXVzZXJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJyaWNrcyBjdXJyZW50VXNlci5tZSgpIGRpZCBub3QgcmV0dXJuIGEgdXNlck5hbWVcIik7XG4gIH1cbiAgcmV0dXJuIHVzZXJOYW1lO1xufVxuXG4vKiogQmVzdC1lZmZvcnQgYHVzZXJOYW1lYCBvZmYgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IChzaGFwZSB2YXJpZXMgYnkgbW9kZSkuICovXG5mdW5jdGlvbiByZWFkQ29udGV4dFVzZXJOYW1lKGN0eDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgY3R4ICE9PSBcIm9iamVjdFwiIHx8IGN0eCA9PT0gbnVsbCB8fCAhKFwidXNlck5hbWVcIiBpbiBjdHgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IChjdHggYXMgeyB1c2VyTmFtZT86IHVua25vd24gfSkudXNlck5hbWU7XG4gIHJldHVybiB0cmltVG9VbmRlZmluZWQodmFsdWUpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGhvc3QgYXMgYSBgbmV0LlVybEJ1aWxkZXJgOiB0aGUgd29ya3NwYWNlXG4gKiBgQ29uZmlnYCBob3N0IGZpcnN0LCB0aGVuIHRoZSBgREFUQUJSSUNLU19IT1NUYCBlbnYgdmFyLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVXJsKCk6IFByb21pc2U8VXJsQnVpbGRlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBnZXRXb3Jrc3BhY2VDb25maWcoKTtcbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IGNvbmZpZ0hvc3QgPSB1cmxCdWlsZGVyKGF3YWl0IGNvbmZpZy5nZXRIb3N0KCkpO1xuICAgIGlmIChjb25maWdIb3N0KSByZXR1cm4gY29uZmlnSG9zdDtcbiAgfVxuICBjb25zdCBkYXRhYnJpY2tzSG9zdCA9IHVybEJ1aWxkZXIocHJvY2Vzcy5lbnYuREFUQUJSSUNLU19IT1NUKTtcbiAgaWYgKGRhdGFicmlja3NIb3N0KSByZXR1cm4gZGF0YWJyaWNrc0hvc3Q7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbnVtZXJpYyB3b3Jrc3BhY2UgaWQ6IHRoZSB3b3Jrc3BhY2UgYENvbmZpZ2AncyBgd29ya3NwYWNlSWRgXG4gKiBmaXJzdCwgZWxzZSB0aGUgMTAtMjAgZGlnaXQgcnVuIG9mIGB3b3Jrc3BhY2VIb3N0YCAoZGVmYXVsdGluZyB0b1xuICoge0BsaW5rIGdldFdvcmtzcGFjZVVybH0ncyBob3N0KS4gYHVuZGVmaW5lZGAgd2hlbiBuZWl0aGVyIHlpZWxkcyBhbiBpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUlkKHdvcmtzcGFjZUhvc3Q/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IChhd2FpdCBnZXRXb3Jrc3BhY2VDb25maWcoKSk/LndvcmtzcGFjZUlkO1xuICBpZiAod29ya3NwYWNlSWQpIHJldHVybiB3b3Jrc3BhY2VJZDtcbiAgd29ya3NwYWNlSG9zdCA9IHdvcmtzcGFjZUhvc3QgPz8gKGF3YWl0IGdldFdvcmtzcGFjZVVybCgpKT8uaG9zdDtcbiAgaWYgKHdvcmtzcGFjZUhvc3QpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdvcmtzcGFjZUhvc3QubWF0Y2goV09SS1NQQUNFX0lEX1JFR0VYKT8uWzBdO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
package/package.json CHANGED
@@ -24,12 +24,12 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@databricks/appkit": "0.81.0",
27
- "@dbx-tools/appkit": "^0.9.188",
28
- "@dbx-tools/auth": "^0.9.188",
29
- "@dbx-tools/cli-service": "^0.9.188",
30
- "@dbx-tools/core": "^0.9.188",
31
- "@dbx-tools/shared-core": "^0.9.188",
32
- "@dbx-tools/shared-fs": "^0.9.188"
27
+ "@dbx-tools/appkit": "0.9.189",
28
+ "@dbx-tools/auth": "0.9.189",
29
+ "@dbx-tools/cli-service": "0.9.189",
30
+ "@dbx-tools/core": "0.9.189",
31
+ "@dbx-tools/shared-core": "0.9.189",
32
+ "@dbx-tools/shared-fs": "0.9.189"
33
33
  },
34
34
  "main": "./lib/index.js",
35
35
  "license": "Apache-2.0",
@@ -45,7 +45,7 @@
45
45
  "./package.json": "./package.json"
46
46
  }
47
47
  },
48
- "version": "0.9.188",
48
+ "version": "0.9.189",
49
49
  "types": "./lib/index.d.ts",
50
50
  "dbxToolsConfig": {
51
51
  "tags": [
@@ -6,17 +6,13 @@
6
6
  * @module
7
7
  */
8
8
 
9
- import {
10
- createWorkspaceClient as _createWorkspaceClient,
11
- type WorkspaceClient as AppKitWorkspaceClient,
12
- } from "@databricks/appkit";
13
- import { tryGetExecutionContext } from "@dbx-tools/appkit";
14
- import { type AuthClient, type DatabricksAuthOptions, createAuthClient } from "@dbx-tools/auth";
9
+ import type { WorkspaceClient as AppKitWorkspaceClient } from "@databricks/appkit";
10
+ import { databricks as appkitDatabricks, tryGetExecutionContext } from "@dbx-tools/appkit";
11
+ import type { DatabricksAuthOptions } from "@dbx-tools/auth";
15
12
  import { memoize, type UrlBuilder, urlBuilder, trimToUndefined } from "@dbx-tools/shared-core";
16
13
 
17
14
  /** Databricks workspace ids are a 10-20 digit run embedded in the host. */
18
15
  const WORKSPACE_ID_REGEX = /\d{10,20}/;
19
- const workspaceAuth = new WeakMap<AppKitWorkspaceClient, AuthClient>();
20
16
 
21
17
  /** Legacy SDK client exposed by AppKit for APIs not yet on its facade. */
22
18
  export type WorkspaceClient = ReturnType<AppKitWorkspaceClient["toLegacyWorkspaceClient"]>;
@@ -34,20 +30,7 @@ type Config = WorkspaceClient["config"];
34
30
  export async function createWorkspaceClient(
35
31
  options: DatabricksAuthOptions = {},
36
32
  ): Promise<AppKitWorkspaceClient> {
37
- const auth = await createAuthClient(options);
38
- const client = _createWorkspaceClient({ host: auth.host });
39
- client.config.credentials = {
40
- name: "pat",
41
- async configure() {
42
- return async (headers) => {
43
- for (const [name, value] of Object.entries(await auth.headers())) {
44
- headers.set(name, value);
45
- }
46
- };
47
- },
48
- };
49
- workspaceAuth.set(client, auth);
50
- return client;
33
+ return appkitDatabricks.createWorkspaceClient(options);
51
34
  }
52
35
 
53
36
  /**
@@ -58,10 +41,7 @@ export async function createWorkspaceClient(
58
41
  export async function refreshWorkspaceClientAuthentication(
59
42
  client: AppKitWorkspaceClient,
60
43
  ): Promise<boolean> {
61
- const auth = workspaceAuth.get(client);
62
- if (!auth) return false;
63
- await auth.headers({ login: false, refresh: true });
64
- return true;
44
+ return appkitDatabricks.refreshWorkspaceClientAuthentication(client);
65
45
  }
66
46
 
67
47
  /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */