@dbx-tools/databricks 0.9.31 → 0.9.36

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.31";
6
+ export const PACKAGE_VERSION = "0.9.36";
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.31";
2
+ export declare const PACKAGE_VERSION = "0.9.36";
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.31";
5
+ export const PACKAGE_VERSION = "0.9.36";
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";
@@ -12,4 +12,4 @@ export { RANGE_CACHE_TTL_MS, CloudProvider } from "./src/cloud.js";
12
12
  export { DatabricksFileSystem } from "./src/databricks-fs.js";
13
13
  export { isHomeRelativePath } from "./src/databricks-path.js";
14
14
  export { getPublicIp } from "./src/net.js";
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2RhdGFicmlja3NcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zMVwiO1xuZXhwb3J0ICogYXMgY2xvdWQgZnJvbSBcIi4vc3JjL2Nsb3VkLnRzXCI7XG5leHBvcnQgKiBhcyBkYXRhYnJpY2tzRlMgZnJvbSBcIi4vc3JjL2RhdGFicmlja3MtZnMudHNcIjtcbmV4cG9ydCAqIGFzIGRhdGFicmlja3NQYXRoIGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCAqIGFzIG5ldCBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgKiBhcyB3b3Jrc3BhY2VDbGllbnQgZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbmV4cG9ydCB7IFJBTkdFX0NBQ0hFX1RUTF9NUywgQ2xvdWRQcm92aWRlciB9IGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbG91ZExvY2F0aW9uIH0gZnJvbSBcIi4vc3JjL2Nsb3VkLnRzXCI7XG5leHBvcnQgeyBEYXRhYnJpY2tzRmlsZVN5c3RlbSB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGaWxlU3lzdGVtT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgeyBpc0hvbWVSZWxhdGl2ZVBhdGggfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1wYXRoLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGaWxlc0JhY2tlbmQsIE5vcm1hbGl6ZURhdGFicmlja3NSb290T3B0aW9ucywgUmVzb2x2ZURhdGFicmlja3NSb290T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCB7IGdldFB1YmxpY0lwIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiLi9zcmMvd29ya3NwYWNlLWNsaWVudC50c1wiO1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2RhdGFicmlja3NcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zNlwiO1xuZXhwb3J0ICogYXMgY2xvdWQgZnJvbSBcIi4vc3JjL2Nsb3VkLnRzXCI7XG5leHBvcnQgKiBhcyBkYXRhYnJpY2tzRlMgZnJvbSBcIi4vc3JjL2RhdGFicmlja3MtZnMudHNcIjtcbmV4cG9ydCAqIGFzIGRhdGFicmlja3NQYXRoIGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCAqIGFzIG5ldCBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgKiBhcyB3b3Jrc3BhY2VDbGllbnQgZnJvbSBcIi4vc3JjL3dvcmtzcGFjZS1jbGllbnQudHNcIjtcbmV4cG9ydCB7IFJBTkdFX0NBQ0hFX1RUTF9NUywgQ2xvdWRQcm92aWRlciB9IGZyb20gXCIuL3NyYy9jbG91ZC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbG91ZExvY2F0aW9uIH0gZnJvbSBcIi4vc3JjL2Nsb3VkLnRzXCI7XG5leHBvcnQgeyBEYXRhYnJpY2tzRmlsZVN5c3RlbSB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGaWxlU3lzdGVtT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLWZzLnRzXCI7XG5leHBvcnQgeyBpc0hvbWVSZWxhdGl2ZVBhdGggfSBmcm9tIFwiLi9zcmMvZGF0YWJyaWNrcy1wYXRoLnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NGaWxlc0JhY2tlbmQsIE5vcm1hbGl6ZURhdGFicmlja3NSb290T3B0aW9ucywgUmVzb2x2ZURhdGFicmlja3NSb290T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9kYXRhYnJpY2tzLXBhdGgudHNcIjtcbmV4cG9ydCB7IGdldFB1YmxpY0lwIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiLi9zcmMvd29ya3NwYWNlLWNsaWVudC50c1wiO1xuIl19
@@ -6,9 +6,26 @@
6
6
  * @module
7
7
  */
8
8
  import { type WorkspaceClient as AppKitWorkspaceClient } from "@databricks/appkit";
9
+ import { type DatabricksAuthOptions } from "@dbx-tools/auth";
9
10
  import { net } from "@dbx-tools/shared-core";
10
11
  /** Legacy SDK client exposed by AppKit for APIs not yet on its facade. */
11
12
  export type WorkspaceClient = ReturnType<AppKitWorkspaceClient["toLegacyWorkspaceClient"]>;
13
+ /**
14
+ * Create an AppKit workspace client whose SDK credential visitor delegates to
15
+ * `@dbx-tools/auth`.
16
+ *
17
+ * The auth package resolves the active profile, host, token lifecycle, and
18
+ * unified-workspace header without requiring callers to mirror profile values
19
+ * into environment variables. The SDK still owns workspace APIs and request
20
+ * execution.
21
+ */
22
+ export declare function createWorkspaceClient(options?: DatabricksAuthOptions): Promise<AppKitWorkspaceClient>;
23
+ /**
24
+ * Refresh the dbx-tools credential lifecycle attached by
25
+ * {@link createWorkspaceClient}. Returns `false` for externally supplied
26
+ * AppKit clients whose credential owner is unknown.
27
+ */
28
+ export declare function refreshWorkspaceClientAuthentication(client: AppKitWorkspaceClient): Promise<boolean>;
12
29
  /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
13
30
  export declare function toLegacyWorkspaceClient(client: AppKitWorkspaceClient | WorkspaceClient): WorkspaceClient;
14
31
  /**
@@ -5,11 +5,50 @@
5
5
  *
6
6
  * @module
7
7
  */
8
- import { createWorkspaceClient, } from "@databricks/appkit";
8
+ import { createWorkspaceClient as _createWorkspaceClient, } from "@databricks/appkit";
9
9
  import { appkit } from "@dbx-tools/appkit";
10
+ import { client as authClient } from "@dbx-tools/auth";
10
11
  import { functionUtils, net } from "@dbx-tools/shared-core";
11
12
  /** Databricks workspace ids are a 10-20 digit run embedded in the host. */
12
13
  const WORKSPACE_ID_REGEX = /\d{10,20}/;
14
+ const workspaceAuth = new WeakMap();
15
+ /**
16
+ * Create an AppKit workspace client whose SDK credential visitor delegates to
17
+ * `@dbx-tools/auth`.
18
+ *
19
+ * The auth package resolves the active profile, host, token lifecycle, and
20
+ * unified-workspace header without requiring callers to mirror profile values
21
+ * into environment variables. The SDK still owns workspace APIs and request
22
+ * execution.
23
+ */
24
+ export async function createWorkspaceClient(options = {}) {
25
+ const auth = await authClient.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;
39
+ }
40
+ /**
41
+ * Refresh the dbx-tools credential lifecycle attached by
42
+ * {@link createWorkspaceClient}. Returns `false` for externally supplied
43
+ * AppKit clients whose credential owner is unknown.
44
+ */
45
+ 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;
51
+ }
13
52
  /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
14
53
  export function toLegacyWorkspaceClient(client) {
15
54
  return "toLegacyWorkspaceClient" in client ? client.toLegacyWorkspaceClient() : client;
@@ -19,7 +58,7 @@ export function toLegacyWorkspaceClient(client) {
19
58
  * construction happens at most once per process. Used only when there's no
20
59
  * AppKit execution context to borrow a client from.
21
60
  */
22
- const getDefaultWorkspaceClient = functionUtils.memoize(async () => createWorkspaceClient().toLegacyWorkspaceClient());
61
+ const getDefaultWorkspaceClient = functionUtils.memoize(async () => (await createWorkspaceClient()).toLegacyWorkspaceClient());
23
62
  /**
24
63
  * The AppKit execution-context workspace client when available, otherwise
25
64
  * `undefined`. Never constructs a fallback client and never throws for a
@@ -107,4 +146,4 @@ export async function getWorkspaceId(workspaceHost) {
107
146
  }
108
147
  return undefined;
109
148
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxxQkFBcUIsR0FFdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCwyRUFBMkU7QUFDM0UsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7QUFNdkMsc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsTUFBK0M7SUFFL0MsT0FBTyx5QkFBeUIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDekYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FDakUscUJBQXFCLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxDQUNsRCxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMsT0FBTyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsTUFBTSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCO0lBQy9CLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxNQUFNLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxNQUF3QjtJQUMvRCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLElBQUksV0FBVztRQUFFLE9BQU8sV0FBVyxDQUFDO0lBRXBDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELHFGQUFxRjtBQUNyRixTQUFTLG1CQUFtQixDQUFDLEdBQVk7SUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3RGLE1BQU0sS0FBSyxHQUFJLEdBQThCLENBQUMsUUFBUSxDQUFDO0lBQ3ZELE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDOUUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZTtJQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFDMUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLFVBQVU7WUFBRSxPQUFPLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLElBQUksY0FBYztRQUFFLE9BQU8sY0FBYyxDQUFDO0lBQzFDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsYUFBc0I7SUFDekQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixFQUFFLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDOUQsSUFBSSxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDcEMsYUFBYSxHQUFHLGFBQWEsSUFBSSxDQUFDLE1BQU0sZUFBZSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDakUsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb2x2ZSB0aGUgY3VycmVudCBEYXRhYnJpY2tzIHdvcmtzcGFjZSdzIFVSTCwgbnVtZXJpYyBpZCwgYW5kIGNsaWVudCBmcm9tXG4gKiB0aGUgYWN0aXZlIGV4ZWN1dGlvbiBjb250ZXh0IChBcHBLaXQsIHdoZW4gaW5pdGlhbGl6ZWQpLCBhIGRlZmF1bHRcbiAqIHtAbGluayBXb3Jrc3BhY2VDbGllbnR9LCBvciB0aGUgZW52aXJvbm1lbnQuIFNlcnZlci1vbmx5LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBjcmVhdGVXb3Jrc3BhY2VDbGllbnQsXG4gIHR5cGUgV29ya3NwYWNlQ2xpZW50IGFzIEFwcEtpdFdvcmtzcGFjZUNsaWVudCxcbn0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBmdW5jdGlvblV0aWxzLCBuZXQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG4vKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaWRzIGFyZSBhIDEwLTIwIGRpZ2l0IHJ1biBlbWJlZGRlZCBpbiB0aGUgaG9zdC4gKi9cbmNvbnN0IFdPUktTUEFDRV9JRF9SRUdFWCA9IC9cXGR7MTAsMjB9LztcblxuLyoqIExlZ2FjeSBTREsgY2xpZW50IGV4cG9zZWQgYnkgQXBwS2l0IGZvciBBUElzIG5vdCB5ZXQgb24gaXRzIGZhY2FkZS4gKi9cbmV4cG9ydCB0eXBlIFdvcmtzcGFjZUNsaWVudCA9IFJldHVyblR5cGU8QXBwS2l0V29ya3NwYWNlQ2xpZW50W1widG9MZWdhY3lXb3Jrc3BhY2VDbGllbnRcIl0+O1xudHlwZSBDb25maWcgPSBXb3Jrc3BhY2VDbGllbnRbXCJjb25maWdcIl07XG5cbi8qKiBSZXNvbHZlIEFwcEtpdCdzIGZhY2FkZSBvciBhbiBleGlzdGluZyBsZWdhY3kgY2xpZW50IHRvIHRoZSBsZWdhY3kgU0RLIHN1cmZhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gdG9MZWdhY3lXb3Jrc3BhY2VDbGllbnQoXG4gIGNsaWVudDogQXBwS2l0V29ya3NwYWNlQ2xpZW50IHwgV29ya3NwYWNlQ2xpZW50LFxuKTogV29ya3NwYWNlQ2xpZW50IHtcbiAgcmV0dXJuIFwidG9MZWdhY3lXb3Jrc3BhY2VDbGllbnRcIiBpbiBjbGllbnQgPyBjbGllbnQudG9MZWdhY3lXb3Jrc3BhY2VDbGllbnQoKSA6IGNsaWVudDtcbn1cblxuLyoqXG4gKiBMYXppbHktY29uc3RydWN0ZWQgZGVmYXVsdCBgV29ya3NwYWNlQ2xpZW50YCAoZW52IC8gcHJvZmlsZSBhdXRoKSwgbWVtb2l6ZWQgc29cbiAqIGNvbnN0cnVjdGlvbiBoYXBwZW5zIGF0IG1vc3Qgb25jZSBwZXIgcHJvY2Vzcy4gVXNlZCBvbmx5IHdoZW4gdGhlcmUncyBub1xuICogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHRvIGJvcnJvdyBhIGNsaWVudCBmcm9tLlxuICovXG5jb25zdCBnZXREZWZhdWx0V29ya3NwYWNlQ2xpZW50ID0gZnVuY3Rpb25VdGlscy5tZW1vaXplKGFzeW5jICgpID0+XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpLnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCksXG4pO1xuXG4vKipcbiAqIFRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgd29ya3NwYWNlIGNsaWVudCB3aGVuIGF2YWlsYWJsZSwgb3RoZXJ3aXNlXG4gKiBgdW5kZWZpbmVkYC4gTmV2ZXIgY29uc3RydWN0cyBhIGZhbGxiYWNrIGNsaWVudCBhbmQgbmV2ZXIgdGhyb3dzIGZvciBhXG4gKiBtaXNzaW5nIEFwcEtpdCBzY29wZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUdldFdvcmtzcGFjZUNsaWVudCgpOiBXb3Jrc3BhY2VDbGllbnQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHtAbGluayBXb3Jrc3BhY2VDbGllbnR9OiB7QGxpbmsgdHJ5R2V0V29ya3NwYWNlQ2xpZW50fSBmaXJzdCwgZWxzZVxuICogYSBtZW1vaXplZCBkZWZhdWx0IGNsaWVudCBmcm9tIGVudiAvIHByb2ZpbGUgYXV0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNsaWVudCgpOiBQcm9taXNlPFdvcmtzcGFjZUNsaWVudD4ge1xuICByZXR1cm4gdHJ5R2V0V29ya3NwYWNlQ2xpZW50KCkgPz8gKGF3YWl0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQoKSk7XG59XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB3b3Jrc3BhY2UgYENvbmZpZ2A6IHRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50J3MgY29uZmlnXG4gKiB3aGVuIEFwcEtpdCBpcyBpbml0aWFsaXplZCwgZWxzZSB0aGUgZGVmYXVsdCBjbGllbnQncy4gUmV0dXJucyBgdW5kZWZpbmVkYFxuICogKG5ldmVyIHRocm93cykgd2hlbiBuZWl0aGVyIGlzIGF2YWlsYWJsZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29uZmlnKCk6IFByb21pc2U8Q29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSkuY29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ3VycmVudCBEYXRhYnJpY2tzIHVzZXJuYW1lIGZvciB3b3Jrc3BhY2UgaG9tZSBwYXRoc1xuICogKGAvV29ya3NwYWNlL1VzZXJzLzx1c2VyTmFtZT5gKS5cbiAqXG4gKiBQcmVmZXJzIGB1c2VyTmFtZWAgb24gdGhlIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gKiBjYWxscyBgY3VycmVudFVzZXIubWUoKWAgb24ge0BsaW5rIGNsaWVudH0gKG9yIHtAbGluayBnZXRXb3Jrc3BhY2VDbGllbnR9KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyTmFtZShjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb250ZXh0VXNlciA9IHJlYWRDb250ZXh0VXNlck5hbWUoYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4gIGlmIChjb250ZXh0VXNlcikgcmV0dXJuIGNvbnRleHRVc2VyO1xuXG4gIGNvbnN0IHJlc29sdmVkID0gY2xpZW50ID8/IChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSk7XG4gIGNvbnN0IG1lID0gYXdhaXQgcmVzb2x2ZWQuY3VycmVudFVzZXIubWUoKTtcbiAgY29uc3QgdXNlck5hbWUgPSBtZS51c2VyTmFtZT8udHJpbSgpO1xuICBpZiAoIXVzZXJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJyaWNrcyBjdXJyZW50VXNlci5tZSgpIGRpZCBub3QgcmV0dXJuIGEgdXNlck5hbWVcIik7XG4gIH1cbiAgcmV0dXJuIHVzZXJOYW1lO1xufVxuXG4vKiogQmVzdC1lZmZvcnQgYHVzZXJOYW1lYCBvZmYgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IChzaGFwZSB2YXJpZXMgYnkgbW9kZSkuICovXG5mdW5jdGlvbiByZWFkQ29udGV4dFVzZXJOYW1lKGN0eDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgY3R4ICE9PSBcIm9iamVjdFwiIHx8IGN0eCA9PT0gbnVsbCB8fCAhKFwidXNlck5hbWVcIiBpbiBjdHgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IChjdHggYXMgeyB1c2VyTmFtZT86IHVua25vd24gfSkudXNlck5hbWU7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUudHJpbSgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGhvc3QgYXMgYSBgbmV0LlVybEJ1aWxkZXJgOiB0aGUgd29ya3NwYWNlXG4gKiBgQ29uZmlnYCBob3N0IGZpcnN0LCB0aGVuIHRoZSBgREFUQUJSSUNLU19IT1NUYCBlbnYgdmFyLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVXJsKCk6IFByb21pc2U8bmV0LlVybEJ1aWxkZXIgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZ2V0V29ya3NwYWNlQ29uZmlnKCk7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCBjb25maWdIb3N0ID0gbmV0LnVybEJ1aWxkZXIoYXdhaXQgY29uZmlnLmdldEhvc3QoKSk7XG4gICAgaWYgKGNvbmZpZ0hvc3QpIHJldHVybiBjb25maWdIb3N0O1xuICB9XG4gIGNvbnN0IGRhdGFicmlja3NIb3N0ID0gbmV0LnVybEJ1aWxkZXIocHJvY2Vzcy5lbnYuREFUQUJSSUNLU19IT1NUKTtcbiAgaWYgKGRhdGFicmlja3NIb3N0KSByZXR1cm4gZGF0YWJyaWNrc0hvc3Q7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbnVtZXJpYyB3b3Jrc3BhY2UgaWQ6IHRoZSB3b3Jrc3BhY2UgYENvbmZpZ2AncyBgd29ya3NwYWNlSWRgXG4gKiBmaXJzdCwgZWxzZSB0aGUgMTAtMjAgZGlnaXQgcnVuIG9mIGB3b3Jrc3BhY2VIb3N0YCAoZGVmYXVsdGluZyB0b1xuICoge0BsaW5rIGdldFdvcmtzcGFjZVVybH0ncyBob3N0KS4gYHVuZGVmaW5lZGAgd2hlbiBuZWl0aGVyIHlpZWxkcyBhbiBpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUlkKHdvcmtzcGFjZUhvc3Q/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IChhd2FpdCBnZXRXb3Jrc3BhY2VDb25maWcoKSk/LndvcmtzcGFjZUlkO1xuICBpZiAod29ya3NwYWNlSWQpIHJldHVybiB3b3Jrc3BhY2VJZDtcbiAgd29ya3NwYWNlSG9zdCA9IHdvcmtzcGFjZUhvc3QgPz8gKGF3YWl0IGdldFdvcmtzcGFjZVVybCgpKT8uaG9zdDtcbiAgaWYgKHdvcmtzcGFjZUhvc3QpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdvcmtzcGFjZUhvc3QubWF0Y2goV09SS1NQQUNFX0lEX1JFR0VYKT8uWzBdO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3Jrc3BhY2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxxQkFBcUIsSUFBSSxzQkFBc0IsR0FFaEQsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sSUFBSSxVQUFVLEVBQStDLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCwyRUFBMkU7QUFDM0UsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7QUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXFDLENBQUM7QUFNdkU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxVQUFpQyxFQUFFO0lBRW5DLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHO1FBQzFCLElBQUksRUFBRSxLQUFLO1FBQ1gsS0FBSyxDQUFDLFNBQVM7WUFDYixPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDdkIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxL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YWNlJ3MgVVJMLCBudW1lcmljIGlkLCBhbmQgY2xpZW50IGZyb21cbiAqIHRoZSBhY3RpdmUgZXhlY3V0aW9uIGNvbnRleHQgKEFwcEtpdCwgd2hlbiBpbml0aWFsaXplZCksIGEgZGVmYXVsdFxuICoge0BsaW5rIFdvcmtzcGFjZUNsaWVudH0sIG9yIHRoZSBlbnZpcm9ubWVudC4gU2VydmVyLW9ubHkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCBhcyBfY3JlYXRlV29ya3NwYWNlQ2xpZW50LFxuICB0eXBlIFdvcmtzcGFjZUNsaWVudCBhcyBBcHBLaXRXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHsgY2xpZW50IGFzIGF1dGhDbGllbnQsIHR5cGUgQXV0aENsaWVudCwgdHlwZSBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgfSBmcm9tIFwiQGRieC10b29scy9hdXRoXCI7XG5pbXBvcnQgeyBmdW5jdGlvblV0aWxzLCBuZXQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG4vKiogRGF0YWJyaWNrcyB3b3Jrc3BhY2UgaWRzIGFyZSBhIDEwLTIwIGRpZ2l0IHJ1biBlbWJlZGRlZCBpbiB0aGUgaG9zdC4gKi9cbmNvbnN0IFdPUktTUEFDRV9JRF9SRUdFWCA9IC9cXGR7MTAsMjB9LztcbmNvbnN0IHdvcmtzcGFjZUF1dGggPSBuZXcgV2Vha01hcDxBcHBLaXRXb3Jrc3BhY2VDbGllbnQsIEF1dGhDbGllbnQ+KCk7XG5cbi8qKiBMZWdhY3kgU0RLIGNsaWVudCBleHBvc2VkIGJ5IEFwcEtpdCBmb3IgQVBJcyBub3QgeWV0IG9uIGl0cyBmYWNhZGUuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VDbGllbnQgPSBSZXR1cm5UeXBlPEFwcEtpdFdvcmtzcGFjZUNsaWVudFtcInRvTGVnYWN5V29ya3NwYWNlQ2xpZW50XCJdPjtcbnR5cGUgQ29uZmlnID0gV29ya3NwYWNlQ2xpZW50W1wiY29uZmlnXCJdO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBBcHBLaXQgd29ya3NwYWNlIGNsaWVudCB3aG9zZSBTREsgY3JlZGVudGlhbCB2aXNpdG9yIGRlbGVnYXRlcyB0b1xuICogYEBkYngtdG9vbHMvYXV0aGAuXG4gKlxuICogVGhlIGF1dGggcGFja2FnZSByZXNvbHZlcyB0aGUgYWN0aXZlIHByb2ZpbGUsIGhvc3QsIHRva2VuIGxpZmVjeWNsZSwgYW5kXG4gKiB1bmlmaWVkLXdvcmtzcGFjZSBoZWFkZXIgd2l0aG91dCByZXF1aXJpbmcgY2FsbGVycyB0byBtaXJyb3IgcHJvZmlsZSB2YWx1ZXNcbiAqIGludG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGUgU0RLIHN0aWxsIG93bnMgd29ya3NwYWNlIEFQSXMgYW5kIHJlcXVlc3RcbiAqIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVdvcmtzcGFjZUNsaWVudChcbiAgb3B0aW9uczogRGF0YWJyaWNrc0F1dGhPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPEFwcEtpdFdvcmtzcGFjZUNsaWVudD4ge1xuICBjb25zdCBhdXRoID0gYXdhaXQgYXV0aENsaWVudC5jcmVhdGVBdXRoQ2xpZW50KG9wdGlvbnMpO1xuICBjb25zdCBjbGllbnQgPSBfY3JlYXRlV29ya3NwYWNlQ2xpZW50KHsgaG9zdDogYXV0aC5ob3N0IH0pO1xuICBjbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzID0ge1xuICAgIG5hbWU6IFwicGF0XCIsXG4gICAgYXN5bmMgY29uZmlndXJlKCkge1xuICAgICAgcmV0dXJuIGFzeW5jIChoZWFkZXJzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhd2FpdCBhdXRoLmhlYWRlcnMoKSkpIHtcbiAgICAgICAgICBoZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbiAgd29ya3NwYWNlQXV0aC5zZXQoY2xpZW50LCBhdXRoKTtcbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLyoqXG4gKiBSZWZyZXNoIHRoZSBkYngtdG9vbHMgY3JlZGVudGlhbCBsaWZlY3ljbGUgYXR0YWNoZWQgYnlcbiAqIHtAbGluayBjcmVhdGVXb3Jrc3BhY2VDbGllbnR9LiBSZXR1cm5zIGBmYWxzZWAgZm9yIGV4dGVybmFsbHkgc3VwcGxpZWRcbiAqIEFwcEtpdCBjbGllbnRzIHdob3NlIGNyZWRlbnRpYWwgb3duZXIgaXMgdW5rbm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hXb3Jrc3BhY2VDbGllbnRBdXRoZW50aWNhdGlvbihcbiAgY2xpZW50OiBBcHBLaXRXb3Jrc3BhY2VDbGllbnQsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgYXV0aCA9IHdvcmtzcGFjZUF1dGguZ2V0KGNsaWVudCk7XG4gIGlmICghYXV0aCkgcmV0dXJuIGZhbHNlO1xuICBhd2FpdCBhdXRoLmhlYWRlcnMoeyBsb2dpbjogZmFsc2UsIHJlZnJlc2g6IHRydWUgfSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogUmVzb2x2ZSBBcHBLaXQncyBmYWNhZGUgb3IgYW4gZXhpc3RpbmcgbGVnYWN5IGNsaWVudCB0byB0aGUgbGVnYWN5IFNESyBzdXJmYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KFxuICBjbGllbnQ6IEFwcEtpdFdvcmtzcGFjZUNsaWVudCB8IFdvcmtzcGFjZUNsaWVudCxcbik6IFdvcmtzcGFjZUNsaWVudCB7XG4gIHJldHVybiBcInRvTGVnYWN5V29ya3NwYWNlQ2xpZW50XCIgaW4gY2xpZW50ID8gY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCkgOiBjbGllbnQ7XG59XG5cbi8qKlxuICogTGF6aWx5LWNvbnN0cnVjdGVkIGRlZmF1bHQgYFdvcmtzcGFjZUNsaWVudGAgKGVudiAvIHByb2ZpbGUgYXV0aCksIG1lbW9pemVkIHNvXG4gKiBjb25zdHJ1Y3Rpb24gaGFwcGVucyBhdCBtb3N0IG9uY2UgcGVyIHByb2Nlc3MuIFVzZWQgb25seSB3aGVuIHRoZXJlJ3Mgbm9cbiAqIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB0byBib3Jyb3cgYSBjbGllbnQgZnJvbS5cbiAqL1xuY29uc3QgZ2V0RGVmYXVsdFdvcmtzcGFjZUNsaWVudCA9IGZ1bmN0aW9uVXRpbHMubWVtb2l6ZShhc3luYyAoKSA9PlxuICAoYXdhaXQgY3JlYXRlV29ya3NwYWNlQ2xpZW50KCkpLnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCksXG4pO1xuXG4vKipcbiAqIFRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgd29ya3NwYWNlIGNsaWVudCB3aGVuIGF2YWlsYWJsZSwgb3RoZXJ3aXNlXG4gKiBgdW5kZWZpbmVkYC4gTmV2ZXIgY29uc3RydWN0cyBhIGZhbGxiYWNrIGNsaWVudCBhbmQgbmV2ZXIgdGhyb3dzIGZvciBhXG4gKiBtaXNzaW5nIEFwcEtpdCBzY29wZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUdldFdvcmtzcGFjZUNsaWVudCgpOiBXb3Jrc3BhY2VDbGllbnQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHtAbGluayBXb3Jrc3BhY2VDbGllbnR9OiB7QGxpbmsgdHJ5R2V0V29ya3NwYWNlQ2xpZW50fSBmaXJzdCwgZWxzZVxuICogYSBtZW1vaXplZCBkZWZhdWx0IGNsaWVudCBmcm9tIGVudiAvIHByb2ZpbGUgYXV0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNsaWVudCgpOiBQcm9taXNlPFdvcmtzcGFjZUNsaWVudD4ge1xuICByZXR1cm4gdHJ5R2V0V29ya3NwYWNlQ2xpZW50KCkgPz8gKGF3YWl0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQoKSk7XG59XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB3b3Jrc3BhY2UgYENvbmZpZ2A6IHRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50J3MgY29uZmlnXG4gKiB3aGVuIEFwcEtpdCBpcyBpbml0aWFsaXplZCwgZWxzZSB0aGUgZGVmYXVsdCBjbGllbnQncy4gUmV0dXJucyBgdW5kZWZpbmVkYFxuICogKG5ldmVyIHRocm93cykgd2hlbiBuZWl0aGVyIGlzIGF2YWlsYWJsZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29uZmlnKCk6IFByb21pc2U8Q29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSkuY29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ3VycmVudCBEYXRhYnJpY2tzIHVzZXJuYW1lIGZvciB3b3Jrc3BhY2UgaG9tZSBwYXRoc1xuICogKGAvV29ya3NwYWNlL1VzZXJzLzx1c2VyTmFtZT5gKS5cbiAqXG4gKiBQcmVmZXJzIGB1c2VyTmFtZWAgb24gdGhlIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gKiBjYWxscyBgY3VycmVudFVzZXIubWUoKWAgb24ge0BsaW5rIGNsaWVudH0gKG9yIHtAbGluayBnZXRXb3Jrc3BhY2VDbGllbnR9KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyTmFtZShjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb250ZXh0VXNlciA9IHJlYWRDb250ZXh0VXNlck5hbWUoYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4gIGlmIChjb250ZXh0VXNlcikgcmV0dXJuIGNvbnRleHRVc2VyO1xuXG4gIGNvbnN0IHJlc29sdmVkID0gY2xpZW50ID8/IChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSk7XG4gIGNvbnN0IG1lID0gYXdhaXQgcmVzb2x2ZWQuY3VycmVudFVzZXIubWUoKTtcbiAgY29uc3QgdXNlck5hbWUgPSBtZS51c2VyTmFtZT8udHJpbSgpO1xuICBpZiAoIXVzZXJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJyaWNrcyBjdXJyZW50VXNlci5tZSgpIGRpZCBub3QgcmV0dXJuIGEgdXNlck5hbWVcIik7XG4gIH1cbiAgcmV0dXJuIHVzZXJOYW1lO1xufVxuXG4vKiogQmVzdC1lZmZvcnQgYHVzZXJOYW1lYCBvZmYgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IChzaGFwZSB2YXJpZXMgYnkgbW9kZSkuICovXG5mdW5jdGlvbiByZWFkQ29udGV4dFVzZXJOYW1lKGN0eDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgY3R4ICE9PSBcIm9iamVjdFwiIHx8IGN0eCA9PT0gbnVsbCB8fCAhKFwidXNlck5hbWVcIiBpbiBjdHgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IChjdHggYXMgeyB1c2VyTmFtZT86IHVua25vd24gfSkudXNlck5hbWU7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUudHJpbSgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGhvc3QgYXMgYSBgbmV0LlVybEJ1aWxkZXJgOiB0aGUgd29ya3NwYWNlXG4gKiBgQ29uZmlnYCBob3N0IGZpcnN0LCB0aGVuIHRoZSBgREFUQUJSSUNLU19IT1NUYCBlbnYgdmFyLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVXJsKCk6IFByb21pc2U8bmV0LlVybEJ1aWxkZXIgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZ2V0V29ya3NwYWNlQ29uZmlnKCk7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCBjb25maWdIb3N0ID0gbmV0LnVybEJ1aWxkZXIoYXdhaXQgY29uZmlnLmdldEhvc3QoKSk7XG4gICAgaWYgKGNvbmZpZ0hvc3QpIHJldHVybiBjb25maWdIb3N0O1xuICB9XG4gIGNvbnN0IGRhdGFicmlja3NIb3N0ID0gbmV0LnVybEJ1aWxkZXIocHJvY2Vzcy5lbnYuREFUQUJSSUNLU19IT1NUKTtcbiAgaWYgKGRhdGFicmlja3NIb3N0KSByZXR1cm4gZGF0YWJyaWNrc0hvc3Q7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbnVtZXJpYyB3b3Jrc3BhY2UgaWQ6IHRoZSB3b3Jrc3BhY2UgYENvbmZpZ2AncyBgd29ya3NwYWNlSWRgXG4gKiBmaXJzdCwgZWxzZSB0aGUgMTAtMjAgZGlnaXQgcnVuIG9mIGB3b3Jrc3BhY2VIb3N0YCAoZGVmYXVsdGluZyB0b1xuICoge0BsaW5rIGdldFdvcmtzcGFjZVVybH0ncyBob3N0KS4gYHVuZGVmaW5lZGAgd2hlbiBuZWl0aGVyIHlpZWxkcyBhbiBpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUlkKHdvcmtzcGFjZUhvc3Q/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IChhd2FpdCBnZXRXb3Jrc3BhY2VDb25maWcoKSk/LndvcmtzcGFjZUlkO1xuICBpZiAod29ya3NwYWNlSWQpIHJldHVybiB3b3Jrc3BhY2VJZDtcbiAgd29ya3NwYWNlSG9zdCA9IHdvcmtzcGFjZUhvc3QgPz8gKGF3YWl0IGdldFdvcmtzcGFjZVVybCgpKT8uaG9zdDtcbiAgaWYgKHdvcmtzcGFjZUhvc3QpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdvcmtzcGFjZUhvc3QubWF0Y2goV09SS1NQQUNFX0lEX1JFR0VYKT8uWzBdO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
package/package.json CHANGED
@@ -19,16 +19,17 @@
19
19
  "projen": "projen"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/bun": "1.3.14",
23
22
  "@types/node": "^24.6.0",
24
23
  "typescript": "^5.9.3"
25
24
  },
26
25
  "dependencies": {
27
26
  "@databricks/appkit": "0.81.0",
28
- "@dbx-tools/appkit": "^0.9.31",
29
- "@dbx-tools/core": "^0.9.31",
30
- "@dbx-tools/shared-core": "^0.9.31",
31
- "@dbx-tools/shared-fs": "^0.9.31"
27
+ "@dbx-tools/appkit": "^0.9.36",
28
+ "@dbx-tools/auth": "^0.9.36",
29
+ "@dbx-tools/cli-service": "^0.9.36",
30
+ "@dbx-tools/core": "^0.9.36",
31
+ "@dbx-tools/shared-core": "^0.9.36",
32
+ "@dbx-tools/shared-fs": "^0.9.36"
32
33
  },
33
34
  "main": "./lib/index.js",
34
35
  "license": "Apache-2.0",
@@ -41,17 +42,62 @@
41
42
  "types": "./lib/index.d.ts",
42
43
  "default": "./lib/index.js"
43
44
  },
45
+ "./cloud": {
46
+ "types": "./lib/src/cloud.d.ts",
47
+ "default": "./lib/src/cloud.js"
48
+ },
49
+ "./databricks-fs": {
50
+ "types": "./lib/src/databricks-fs.d.ts",
51
+ "default": "./lib/src/databricks-fs.js"
52
+ },
53
+ "./databricks-path": {
54
+ "types": "./lib/src/databricks-path.d.ts",
55
+ "default": "./lib/src/databricks-path.js"
56
+ },
57
+ "./net": {
58
+ "types": "./lib/src/net.d.ts",
59
+ "default": "./lib/src/net.js"
60
+ },
61
+ "./workspace-client": {
62
+ "types": "./lib/src/workspace-client.d.ts",
63
+ "default": "./lib/src/workspace-client.js"
64
+ },
44
65
  "./package.json": "./package.json"
45
66
  }
46
67
  },
47
- "version": "0.9.31",
68
+ "version": "0.9.36",
48
69
  "types": "./lib/index.d.ts",
70
+ "dbxToolsConfig": {
71
+ "tags": [
72
+ "node"
73
+ ]
74
+ },
49
75
  "type": "module",
50
76
  "exports": {
51
77
  ".": {
52
78
  "types": "./lib/index.d.ts",
53
79
  "default": "./lib/index.js"
54
80
  },
81
+ "./cloud": {
82
+ "types": "./lib/src/cloud.d.ts",
83
+ "default": "./lib/src/cloud.js"
84
+ },
85
+ "./databricks-fs": {
86
+ "types": "./lib/src/databricks-fs.d.ts",
87
+ "default": "./lib/src/databricks-fs.js"
88
+ },
89
+ "./databricks-path": {
90
+ "types": "./lib/src/databricks-path.d.ts",
91
+ "default": "./lib/src/databricks-path.js"
92
+ },
93
+ "./net": {
94
+ "types": "./lib/src/net.d.ts",
95
+ "default": "./lib/src/net.js"
96
+ },
97
+ "./workspace-client": {
98
+ "types": "./lib/src/workspace-client.d.ts",
99
+ "default": "./lib/src/workspace-client.js"
100
+ },
55
101
  "./package.json": "./package.json"
56
102
  },
57
103
  "files": [
@@ -59,10 +105,5 @@
59
105
  "src",
60
106
  "lib"
61
107
  ],
62
- "dbxToolsConfig": {
63
- "tags": [
64
- "node"
65
- ]
66
- },
67
108
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\"."
68
109
  }
@@ -7,19 +7,63 @@
7
7
  */
8
8
 
9
9
  import {
10
- createWorkspaceClient,
10
+ createWorkspaceClient as _createWorkspaceClient,
11
11
  type WorkspaceClient as AppKitWorkspaceClient,
12
12
  } from "@databricks/appkit";
13
13
  import { appkit } from "@dbx-tools/appkit";
14
+ import { client as authClient, type AuthClient, type DatabricksAuthOptions } from "@dbx-tools/auth";
14
15
  import { functionUtils, net } from "@dbx-tools/shared-core";
15
16
 
16
17
  /** Databricks workspace ids are a 10-20 digit run embedded in the host. */
17
18
  const WORKSPACE_ID_REGEX = /\d{10,20}/;
19
+ const workspaceAuth = new WeakMap<AppKitWorkspaceClient, AuthClient>();
18
20
 
19
21
  /** Legacy SDK client exposed by AppKit for APIs not yet on its facade. */
20
22
  export type WorkspaceClient = ReturnType<AppKitWorkspaceClient["toLegacyWorkspaceClient"]>;
21
23
  type Config = WorkspaceClient["config"];
22
24
 
25
+ /**
26
+ * Create an AppKit workspace client whose SDK credential visitor delegates to
27
+ * `@dbx-tools/auth`.
28
+ *
29
+ * The auth package resolves the active profile, host, token lifecycle, and
30
+ * unified-workspace header without requiring callers to mirror profile values
31
+ * into environment variables. The SDK still owns workspace APIs and request
32
+ * execution.
33
+ */
34
+ export async function createWorkspaceClient(
35
+ options: DatabricksAuthOptions = {},
36
+ ): Promise<AppKitWorkspaceClient> {
37
+ const auth = await authClient.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;
51
+ }
52
+
53
+ /**
54
+ * Refresh the dbx-tools credential lifecycle attached by
55
+ * {@link createWorkspaceClient}. Returns `false` for externally supplied
56
+ * AppKit clients whose credential owner is unknown.
57
+ */
58
+ export async function refreshWorkspaceClientAuthentication(
59
+ client: AppKitWorkspaceClient,
60
+ ): Promise<boolean> {
61
+ const auth = workspaceAuth.get(client);
62
+ if (!auth) return false;
63
+ await auth.headers({ login: false, refresh: true });
64
+ return true;
65
+ }
66
+
23
67
  /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
24
68
  export function toLegacyWorkspaceClient(
25
69
  client: AppKitWorkspaceClient | WorkspaceClient,
@@ -33,7 +77,7 @@ export function toLegacyWorkspaceClient(
33
77
  * AppKit execution context to borrow a client from.
34
78
  */
35
79
  const getDefaultWorkspaceClient = functionUtils.memoize(async () =>
36
- createWorkspaceClient().toLegacyWorkspaceClient(),
80
+ (await createWorkspaceClient()).toLegacyWorkspaceClient(),
37
81
  );
38
82
 
39
83
  /**