@dbx-tools/auth 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.
Files changed (73) hide show
  1. package/README.md +49 -97
  2. package/index.ts +8 -26
  3. package/lib/index.d.ts +8 -26
  4. package/lib/index.js +6 -22
  5. package/lib/src/{databricks-cli.d.ts → _databricks-cli.d.ts} +3 -7
  6. package/lib/src/_databricks-cli.js +172 -0
  7. package/lib/src/_errors.d.ts +5 -0
  8. package/lib/src/_errors.js +10 -0
  9. package/lib/src/{lifecycle.d.ts → _lifecycle.d.ts} +5 -5
  10. package/lib/src/_lifecycle.js +214 -0
  11. package/lib/src/_logging.d.ts +1 -1
  12. package/lib/src/_logging.js +2 -2
  13. package/lib/src/{personal-access-token.d.ts → _personal-access-token.d.ts} +1 -1
  14. package/lib/src/_personal-access-token.js +30 -0
  15. package/lib/src/_profile-config.d.ts +43 -0
  16. package/lib/src/_profile-config.js +443 -0
  17. package/lib/src/{service-principal.d.ts → _service-principal.d.ts} +1 -1
  18. package/lib/src/_service-principal.js +69 -0
  19. package/lib/src/{storage.d.ts → _storage.d.ts} +4 -6
  20. package/lib/src/_storage.js +94 -0
  21. package/lib/src/_types.d.ts +40 -0
  22. package/lib/src/_types.js +2 -0
  23. package/lib/src/client.d.ts +30 -0
  24. package/lib/src/client.js +223 -0
  25. package/lib/src/config.d.ts +36 -0
  26. package/lib/src/config.js +15 -0
  27. package/lib/src/profile.d.ts +11 -0
  28. package/lib/src/profile.js +21 -0
  29. package/lib/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +34 -10
  31. package/src/{databricks-cli.ts → _databricks-cli.ts} +20 -109
  32. package/src/_errors.ts +11 -0
  33. package/src/{lifecycle.ts → _lifecycle.ts} +24 -48
  34. package/src/_logging.ts +2 -2
  35. package/src/{personal-access-token.ts → _personal-access-token.ts} +1 -1
  36. package/src/_profile-config.ts +545 -0
  37. package/src/{service-principal.ts → _service-principal.ts} +2 -2
  38. package/src/_storage.ts +109 -0
  39. package/src/_types.ts +45 -0
  40. package/src/client.ts +291 -0
  41. package/src/config.ts +44 -0
  42. package/src/profile.ts +33 -0
  43. package/lib/exports.d.ts +0 -2
  44. package/lib/exports.js +0 -3
  45. package/lib/src/_profile-core.d.ts +0 -28
  46. package/lib/src/_profile-core.js +0 -216
  47. package/lib/src/_profile.d.ts +0 -15
  48. package/lib/src/_profile.js +0 -236
  49. package/lib/src/databricks-auth.d.ts +0 -11
  50. package/lib/src/databricks-auth.js +0 -314
  51. package/lib/src/databricks-cli.js +0 -239
  52. package/lib/src/errors.d.ts +0 -7
  53. package/lib/src/errors.js +0 -14
  54. package/lib/src/generated/databricks-cli-assets.json +0 -33
  55. package/lib/src/http-client.d.ts +0 -23
  56. package/lib/src/http-client.js +0 -116
  57. package/lib/src/lifecycle.js +0 -229
  58. package/lib/src/node-storage.d.ts +0 -20
  59. package/lib/src/node-storage.js +0 -207
  60. package/lib/src/personal-access-token.js +0 -30
  61. package/lib/src/service-principal.js +0 -69
  62. package/lib/src/storage.js +0 -98
  63. package/lib/src/types.d.ts +0 -157
  64. package/lib/src/types.js +0 -67
  65. package/src/_profile-core.ts +0 -258
  66. package/src/_profile.ts +0 -319
  67. package/src/databricks-auth.ts +0 -416
  68. package/src/errors.ts +0 -16
  69. package/src/generated/databricks-cli-assets.json +0 -33
  70. package/src/http-client.ts +0 -147
  71. package/src/node-storage.ts +0 -230
  72. package/src/storage.ts +0 -104
  73. package/src/types.ts +0 -188
@@ -1,8 +1,8 @@
1
- import type { CredentialStore, LockAdapter, Token } from "./types.ts";
2
- /** Process-local generic lease registry used by the in-memory store. */
1
+ import type { CredentialStore, LockAdapter, Token } from "./_types.ts";
2
+ /** Process-local keyed credential lock. */
3
3
  export declare class MemoryLockAdapter implements LockAdapter {
4
4
  #private;
5
- acquire(key: string, timeoutMs: number): Promise<string>;
5
+ acquire(key: string, timeoutMs?: number): Promise<string>;
6
6
  release(lease: string): Promise<void>;
7
7
  }
8
8
  /** Process-local credential store with per-key refresh locks. */
@@ -11,10 +11,8 @@ export declare class MemoryCredentialStore implements CredentialStore {
11
11
  private readonly locks;
12
12
  constructor(locks?: LockAdapter);
13
13
  load(key: string): Promise<Token | undefined>;
14
- prepareWrite(): Promise<void>;
15
14
  save(key: string, token: Token): Promise<void>;
16
15
  remove(key: string): Promise<void>;
17
- acquireLock(key: string, timeoutMs: number): Promise<string>;
16
+ acquireLock(key: string, timeoutMs?: number): Promise<string>;
18
17
  releaseLock(lease: string): Promise<void>;
19
- name(): string;
20
18
  }
@@ -0,0 +1,94 @@
1
+ import { authLogger, credentialId, tokenMetadata } from "./_logging.js";
2
+ const logger = authLogger("memory-storage");
3
+ /** Process-local keyed credential lock. */
4
+ export class MemoryLockAdapter {
5
+ #states = new Map();
6
+ #sequence = 0;
7
+ acquire(key, timeoutMs) {
8
+ const credential = credentialId(key);
9
+ const state = this.#states.get(key);
10
+ if (!state) {
11
+ const lease = this.#nextLease(key);
12
+ this.#states.set(key, { lease, queue: [] });
13
+ logger.debug("memory lock acquired", { credential });
14
+ return Promise.resolve(lease);
15
+ }
16
+ logger.debug("waiting for memory lock", { credential, timeoutMs });
17
+ return new Promise((resolve, reject) => {
18
+ let timer;
19
+ const waiter = {
20
+ resolve: (lease) => {
21
+ if (timer)
22
+ clearTimeout(timer);
23
+ logger.debug("memory lock acquired", { credential });
24
+ resolve(lease);
25
+ },
26
+ reject: (error) => {
27
+ if (timer)
28
+ clearTimeout(timer);
29
+ reject(error);
30
+ },
31
+ };
32
+ state.queue.push(waiter);
33
+ if (timeoutMs !== undefined && Number.isFinite(timeoutMs) && timeoutMs > 0) {
34
+ timer = setTimeout(() => {
35
+ const index = state.queue.indexOf(waiter);
36
+ if (index >= 0)
37
+ state.queue.splice(index, 1);
38
+ waiter.reject(new Error(`Timed out waiting for lock ${key}`));
39
+ }, timeoutMs);
40
+ }
41
+ });
42
+ }
43
+ release(lease) {
44
+ const key = lease.split(":").slice(1).join(":");
45
+ const state = this.#states.get(key);
46
+ if (!state || state.lease !== lease)
47
+ return Promise.resolve();
48
+ const next = state.queue.shift();
49
+ if (!next) {
50
+ this.#states.delete(key);
51
+ return Promise.resolve();
52
+ }
53
+ state.lease = this.#nextLease(key);
54
+ next.resolve(state.lease);
55
+ return Promise.resolve();
56
+ }
57
+ #nextLease(key) {
58
+ return `${++this.#sequence}:${key}`;
59
+ }
60
+ }
61
+ /** Process-local credential store with per-key refresh locks. */
62
+ export class MemoryCredentialStore {
63
+ locks;
64
+ #tokens = new Map();
65
+ constructor(locks = new MemoryLockAdapter()) {
66
+ this.locks = locks;
67
+ }
68
+ async load(key) {
69
+ const token = this.#tokens.get(key);
70
+ logger.debug("loaded memory credential", {
71
+ credential: credentialId(key),
72
+ token: tokenMetadata(token),
73
+ });
74
+ return token ? structuredClone(token) : undefined;
75
+ }
76
+ async save(key, token) {
77
+ this.#tokens.set(key, structuredClone(token));
78
+ logger.debug("saved memory credential", {
79
+ credential: credentialId(key),
80
+ token: tokenMetadata(token),
81
+ });
82
+ }
83
+ async remove(key) {
84
+ this.#tokens.delete(key);
85
+ logger.debug("removed memory credential", { credential: credentialId(key) });
86
+ }
87
+ acquireLock(key, timeoutMs) {
88
+ return this.locks.acquire(key, timeoutMs);
89
+ }
90
+ releaseLock(lease) {
91
+ return this.locks.release(lease);
92
+ }
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3N0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBWTVDLDJDQUEyQztBQUMzQyxNQUFNLE9BQU8saUJBQWlCO0lBQ25CLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUN0RCxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWQsT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFrQjtRQUNyQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDckQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM3QyxJQUFJLEtBQWdE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bk1ldGFkYXRhIH0gZnJvbSBcIi4vX2xvZ2dpbmcudHNcIjtcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFN0b3JlLCBMb2NrQWRhcHRlciwgVG9rZW4gfSBmcm9tIFwiLi9fdHlwZXMudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gYXV0aExvZ2dlcihcIm1lbW9yeS1zdG9yYWdlXCIpO1xuXG5pbnRlcmZhY2UgTWVtb3J5TG9ja1dhaXRlciB7XG4gIHJlc29sdmU6IChsZWFzZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIE1lbW9yeUxvY2tTdGF0ZSB7XG4gIGxlYXNlOiBzdHJpbmc7XG4gIHF1ZXVlOiBNZW1vcnlMb2NrV2FpdGVyW107XG59XG5cbi8qKiBQcm9jZXNzLWxvY2FsIGtleWVkIGNyZWRlbnRpYWwgbG9jay4gKi9cbmV4cG9ydCBjbGFzcyBNZW1vcnlMb2NrQWRhcHRlciBpbXBsZW1lbnRzIExvY2tBZGFwdGVyIHtcbiAgcmVhZG9ubHkgI3N0YXRlcyA9IG5ldyBNYXA8c3RyaW5nLCBNZW1vcnlMb2NrU3RhdGU+KCk7XG4gICNzZXF1ZW5jZSA9IDA7XG5cbiAgYWNxdWlyZShrZXk6IHN0cmluZywgdGltZW91dE1zPzogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsID0gY3JlZGVudGlhbElkKGtleSk7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLiNzdGF0ZXMuZ2V0KGtleSk7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgY29uc3QgbGVhc2UgPSB0aGlzLiNuZXh0TGVhc2Uoa2V5KTtcbiAgICAgIHRoaXMuI3N0YXRlcy5zZXQoa2V5LCB7IGxlYXNlLCBxdWV1ZTogW10gfSk7XG4gICAgICBsb2dnZXIuZGVidWcoXCJtZW1vcnkgbG9jayBhY3F1aXJlZFwiLCB7IGNyZWRlbnRpYWwgfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxlYXNlKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFwid2FpdGluZyBmb3IgbWVtb3J5IGxvY2tcIiwgeyBjcmVkZW50aWFsLCB0aW1lb3V0TXMgfSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHdhaXRlcjogTWVtb3J5TG9ja1dhaXRlciA9IHtcbiAgICAgICAgcmVzb2x2ZTogKGxlYXNlKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIm1lbW9yeSBsb2NrIGFjcXVpcmVkXCIsIHsgY3JlZGVudGlhbCB9KTtcbiAgICAgICAgICByZXNvbHZlKGxlYXNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVqZWN0OiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBzdGF0ZS5xdWV1ZS5wdXNoKHdhaXRlcik7XG4gICAgICBpZiAodGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgTnVtYmVyLmlzRmluaXRlKHRpbWVvdXRNcykgJiYgdGltZW91dE1zID4gMCkge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGUucXVldWUuaW5kZXhPZih3YWl0ZXIpO1xuICAgICAgICAgIGlmIChpbmRleCA+PSAwKSBzdGF0ZS5xdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHdhaXRlci5yZWplY3QobmV3IEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgbG9jayAke2tleX1gKSk7XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWxlYXNlKGxlYXNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXkgPSBsZWFzZS5zcGxpdChcIjpcIikuc2xpY2UoMSkuam9pbihcIjpcIik7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLiNzdGF0ZXMuZ2V0KGtleSk7XG4gICAgaWYgKCFzdGF0ZSB8fCBzdGF0ZS5sZWFzZSAhPT0gbGVhc2UpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBjb25zdCBuZXh0ID0gc3RhdGUucXVldWUuc2hpZnQoKTtcbiAgICBpZiAoIW5leHQpIHtcbiAgICAgIHRoaXMuI3N0YXRlcy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgc3RhdGUubGVhc2UgPSB0aGlzLiNuZXh0TGVhc2Uoa2V5KTtcbiAgICBuZXh0LnJlc29sdmUoc3RhdGUubGVhc2UpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gICNuZXh0TGVhc2Uoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHsrK3RoaXMuI3NlcXVlbmNlfToke2tleX1gO1xuICB9XG59XG5cbi8qKiBQcm9jZXNzLWxvY2FsIGNyZWRlbnRpYWwgc3RvcmUgd2l0aCBwZXIta2V5IHJlZnJlc2ggbG9ja3MuICovXG5leHBvcnQgY2xhc3MgTWVtb3J5Q3JlZGVudGlhbFN0b3JlIGltcGxlbWVudHMgQ3JlZGVudGlhbFN0b3JlIHtcbiAgcmVhZG9ubHkgI3Rva2VucyA9IG5ldyBNYXA8c3RyaW5nLCBUb2tlbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2tzOiBMb2NrQWRhcHRlciA9IG5ldyBNZW1vcnlMb2NrQWRhcHRlcigpKSB7fVxuXG4gIGFzeW5jIGxvYWQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLiN0b2tlbnMuZ2V0KGtleSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwibG9hZGVkIG1lbW9yeSBjcmVkZW50aWFsXCIsIHtcbiAgICAgIGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChrZXkpLFxuICAgICAgdG9rZW46IHRva2VuTWV0YWRhdGEodG9rZW4pLFxuICAgIH0pO1xuICAgIHJldHVybiB0b2tlbiA/IHN0cnVjdHVyZWRDbG9uZSh0b2tlbikgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBzYXZlKGtleTogc3RyaW5nLCB0b2tlbjogVG9rZW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLiN0b2tlbnMuc2V0KGtleSwgc3RydWN0dXJlZENsb25lKHRva2VuKSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwic2F2ZWQgbWVtb3J5IGNyZWRlbnRpYWxcIiwge1xuICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbElkKGtleSksXG4gICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YSh0b2tlbiksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLiN0b2tlbnMuZGVsZXRlKGtleSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVtb3ZlZCBtZW1vcnkgY3JlZGVudGlhbFwiLCB7IGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChrZXkpIH0pO1xuICB9XG5cbiAgYWNxdWlyZUxvY2soa2V5OiBzdHJpbmcsIHRpbWVvdXRNcz86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMubG9ja3MuYWNxdWlyZShrZXksIHRpbWVvdXRNcyk7XG4gIH1cblxuICByZWxlYXNlTG9jayhsZWFzZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMubG9ja3MucmVsZWFzZShsZWFzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import type { DatabricksProfileSummary } from "@dbx-tools/shared-auth/profile";
2
+ /** Stored OAuth credential with renewal metadata. */
3
+ export interface Token {
4
+ accessToken: string;
5
+ tokenType: string;
6
+ refreshToken?: string;
7
+ expiry?: string;
8
+ scopes: string[];
9
+ }
10
+ /** Resolved profile with secrets retained for provider construction. */
11
+ export interface DatabricksProfile extends DatabricksProfileSummary {
12
+ host: string;
13
+ selectedProfile?: string;
14
+ clientId: string;
15
+ groupId?: string;
16
+ scopes: string[];
17
+ clientSecret?: string;
18
+ accessToken?: string;
19
+ cacheKey: string;
20
+ }
21
+ /** Process-local credential lease adapter. */
22
+ export interface LockAdapter {
23
+ acquire(key: string, timeoutMs?: number): Promise<string>;
24
+ release(lease: string): Promise<void>;
25
+ }
26
+ /** Internal credential lifecycle storage. */
27
+ export interface CredentialStore {
28
+ load(key: string): Promise<Token | undefined>;
29
+ save(key: string, token: Token): Promise<void>;
30
+ remove(key: string): Promise<void>;
31
+ acquireLock(key: string, timeoutMs?: number): Promise<string>;
32
+ releaseLock(lease: string): Promise<void>;
33
+ }
34
+ /** Provider-specific token acquisition. */
35
+ export interface TokenProvider {
36
+ authenticate(timeoutMs: number): Promise<Token>;
37
+ login(timeoutMs: number): Promise<Token>;
38
+ refresh(token: Token): Promise<Token>;
39
+ canAuthenticateSilently(): boolean;
40
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL190eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnkgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtYXV0aC9wcm9maWxlXCI7XG5cbi8qKiBTdG9yZWQgT0F1dGggY3JlZGVudGlhbCB3aXRoIHJlbmV3YWwgbWV0YWRhdGEuICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuIHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgdG9rZW5UeXBlOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZXhwaXJ5Pzogc3RyaW5nO1xuICBzY29wZXM6IHN0cmluZ1tdO1xufVxuXG4vKiogUmVzb2x2ZWQgcHJvZmlsZSB3aXRoIHNlY3JldHMgcmV0YWluZWQgZm9yIHByb3ZpZGVyIGNvbnN0cnVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJyaWNrc1Byb2ZpbGUgZXh0ZW5kcyBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnkge1xuICBob3N0OiBzdHJpbmc7XG4gIHNlbGVjdGVkUHJvZmlsZT86IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgZ3JvdXBJZD86IHN0cmluZztcbiAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgY2xpZW50U2VjcmV0Pzogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgY2FjaGVLZXk6IHN0cmluZztcbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgY3JlZGVudGlhbCBsZWFzZSBhZGFwdGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NrQWRhcHRlciB7XG4gIGFjcXVpcmUoa2V5OiBzdHJpbmcsIHRpbWVvdXRNcz86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPjtcbiAgcmVsZWFzZShsZWFzZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIEludGVybmFsIGNyZWRlbnRpYWwgbGlmZWN5Y2xlIHN0b3JhZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxTdG9yZSB7XG4gIGxvYWQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPjtcbiAgc2F2ZShrZXk6IHN0cmluZywgdG9rZW46IFRva2VuKTogUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgYWNxdWlyZUxvY2soa2V5OiBzdHJpbmcsIHRpbWVvdXRNcz86IG51bWJlcik6IFByb21pc2U8c3RyaW5nPjtcbiAgcmVsZWFzZUxvY2sobGVhc2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKiBQcm92aWRlci1zcGVjaWZpYyB0b2tlbiBhY3F1aXNpdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Qcm92aWRlciB7XG4gIGF1dGhlbnRpY2F0ZSh0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8VG9rZW4+O1xuICBsb2dpbih0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8VG9rZW4+O1xuICByZWZyZXNoKHRva2VuOiBUb2tlbik6IFByb21pc2U8VG9rZW4+O1xuICBjYW5BdXRoZW50aWNhdGVTaWxlbnRseSgpOiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,30 @@
1
+ import type { DatabricksAuthClientInfo } from "@dbx-tools/shared-auth/client";
2
+ import { type DatabricksAuthOptions } from "./config.ts";
3
+ /** Public credential result with no refresh token. */
4
+ export interface AccessToken {
5
+ accessToken: string;
6
+ tokenType: string;
7
+ expiry?: string;
8
+ scopes: string[];
9
+ }
10
+ /** Token acquisition controls. */
11
+ export interface TokenOptions {
12
+ /** Permit interactive CLI login when required. */
13
+ login?: boolean;
14
+ /** Bypass a reusable cached token and refresh it. */
15
+ refresh?: boolean;
16
+ }
17
+ /** WorkspaceClient-shaped Databricks authentication facade. */
18
+ export interface AuthClient extends DatabricksAuthClientInfo {
19
+ token(options?: TokenOptions): Promise<AccessToken>;
20
+ headers(options?: TokenOptions): Promise<Record<string, string>>;
21
+ logout(): Promise<void>;
22
+ }
23
+ /** Injectable host capabilities for Databricks authentication. */
24
+ export interface DatabricksAuthDependencies {
25
+ environment?: Readonly<Record<string, string | undefined>>;
26
+ fetch?: typeof globalThis.fetch;
27
+ resolveCli?: () => Promise<string | undefined>;
28
+ }
29
+ /** Create a Databricks authentication client. */
30
+ export declare function createAuthClient(options?: DatabricksAuthOptions, dependencies?: DatabricksAuthDependencies): Promise<AuthClient>;
@@ -0,0 +1,223 @@
1
+ import { AuthType, TargetKind } from "@dbx-tools/shared-auth/config";
2
+ import { DatabricksCliProvider, resolveDatabricksCli } from "./_databricks-cli.js";
3
+ import { AuthError } from "./_errors.js";
4
+ import { publicToken, TokenLifecycle } from "./_lifecycle.js";
5
+ import { authLogger, tokenMetadata } from "./_logging.js";
6
+ import { DatabricksPersonalAccessTokenProvider } from "./_personal-access-token.js";
7
+ import { machineScopes, resolveConfigFile, resolveDatabricksProfile } from "./_profile-config.js";
8
+ import { DatabricksServicePrincipalProvider } from "./_service-principal.js";
9
+ import { MemoryCredentialStore } from "./_storage.js";
10
+ import { AUTH_DEFAULTS, DEFAULT_ACCESS_TOKEN_HEADER, WORKSPACE_ID_HEADER, } from "./config.js";
11
+ const logger = authLogger("databricks");
12
+ /** Default Databricks auth facade over the provider-neutral lifecycle. */
13
+ class DefaultAuthClient {
14
+ profileValue;
15
+ client;
16
+ requestToken;
17
+ profile;
18
+ host;
19
+ accountId;
20
+ workspaceId;
21
+ target;
22
+ authType;
23
+ principal;
24
+ constructor(profileValue, client, requestToken) {
25
+ this.profileValue = profileValue;
26
+ this.client = client;
27
+ this.requestToken = requestToken;
28
+ this.profile = profileValue.selectedProfile;
29
+ this.host = profileValue.host;
30
+ this.accountId = profileValue.accountId;
31
+ this.workspaceId = profileValue.workspaceId;
32
+ this.target = profileValue.target;
33
+ this.authType = profileValue.authType;
34
+ this.principal = profileValue.principal;
35
+ }
36
+ token(options = {}) {
37
+ logger.debug("Databricks token requested", {
38
+ ...this.context(),
39
+ login: options.login ?? "auto",
40
+ refresh: options.refresh ?? false,
41
+ source: this.requestToken ? "request" : "lifecycle",
42
+ });
43
+ if (this.requestToken)
44
+ return Promise.resolve(publicToken(this.requestToken));
45
+ return options.refresh
46
+ ? this.requiredClient().forceRefresh(options.login ?? true)
47
+ : this.requiredClient().tokenWithLogin(options.login);
48
+ }
49
+ async headers(options = {}) {
50
+ const token = await this.token(options);
51
+ const headers = {
52
+ [DEFAULT_ACCESS_TOKEN_HEADER]: `${token.tokenType} ${token.accessToken}`,
53
+ ...(this.profileValue.workspaceId
54
+ ? { [WORKSPACE_ID_HEADER]: this.profileValue.workspaceId }
55
+ : {}),
56
+ };
57
+ logger.debug("generated Databricks authentication headers", {
58
+ ...this.context(),
59
+ headerNames: Object.keys(headers),
60
+ token: tokenMetadata(token),
61
+ });
62
+ return headers;
63
+ }
64
+ logout() {
65
+ logger.debug("Databricks logout requested", this.context());
66
+ return this.client?.logout() ?? Promise.resolve();
67
+ }
68
+ requiredClient() {
69
+ if (!this.client)
70
+ throw new AuthError("oauth", "Authentication lifecycle is not available");
71
+ return this.client;
72
+ }
73
+ context() {
74
+ return {
75
+ profile: this.profileValue.name,
76
+ host: this.profileValue.host,
77
+ authType: this.profileValue.authType,
78
+ hasWorkspaceId: Boolean(this.profileValue.workspaceId),
79
+ };
80
+ }
81
+ }
82
+ /** Create a Databricks authentication client. */
83
+ export async function createAuthClient(options = {}, dependencies = {}) {
84
+ return createResolvedAuth(options, dependencies);
85
+ }
86
+ /** Resolve a Databricks profile and create its token lifecycle. */
87
+ async function createResolvedAuth(options, dependencies) {
88
+ const environment = dependencies.environment ?? process.env;
89
+ const profile = resolveDatabricksProfile(options, environment);
90
+ logger.debug("creating Databricks auth", {
91
+ profile: profile.name,
92
+ host: profile.host,
93
+ authType: profile.authType,
94
+ });
95
+ if (profile.authType === AuthType.AppOnBehalfOf) {
96
+ logger.debug("created request-scoped App OBO authentication", {
97
+ profile: profile.name,
98
+ host: profile.host,
99
+ hasWorkspaceId: Boolean(profile.workspaceId),
100
+ });
101
+ return new DefaultAuthClient(profile, undefined, {
102
+ accessToken: profile.accessToken,
103
+ tokenType: "Bearer",
104
+ scopes: [...profile.scopes],
105
+ });
106
+ }
107
+ const provider = await providerFor(profile, options, dependencies);
108
+ const store = new MemoryCredentialStore();
109
+ const client = new TokenLifecycle(profile.cacheKey, provider, store, {
110
+ ...AUTH_DEFAULTS,
111
+ ...options.auth,
112
+ });
113
+ const auth = new DefaultAuthClient(profile, client);
114
+ logger.debug("created authentication lifecycle", {
115
+ profile: profile.name,
116
+ host: profile.host,
117
+ authType: profile.authType,
118
+ });
119
+ return auth;
120
+ }
121
+ async function providerFor(profile, options, dependencies) {
122
+ const environment = dependencies.environment ?? process.env;
123
+ switch (profile.authType) {
124
+ case AuthType.DatabricksCli: {
125
+ logger.debug("selected Databricks CLI provider", { profile: profile.name });
126
+ return new DatabricksCliProvider(profile.name, () => dependencies.resolveCli ? dependencies.resolveCli() : resolveDatabricksCli(environment), cliEnvironment(profile, resolveConfigFile(options.configFile, environment)));
127
+ }
128
+ case AuthType.PersonalAccessToken:
129
+ logger.debug("selected personal access token provider", { profile: profile.name });
130
+ return new DatabricksPersonalAccessTokenProvider(profile.accessToken);
131
+ case AuthType.OAuthM2M:
132
+ case AuthType.AppServicePrincipal: {
133
+ logger.debug("selected service-principal provider", {
134
+ profile: profile.name,
135
+ authType: profile.authType,
136
+ target: profile.target,
137
+ });
138
+ const endpoints = await resolveOAuthEndpoints(profile, dependencies.fetch);
139
+ return new DatabricksServicePrincipalProvider({
140
+ tokenEndpoint: endpoints.tokenEndpoint,
141
+ clientId: profile.clientId,
142
+ clientSecret: profile.clientSecret,
143
+ scopes: machineScopes(profile.scopes),
144
+ ...(profile.groupId ? { groupId: profile.groupId } : {}),
145
+ allowInsecureRequests: isLoopbackHttp(profile.host),
146
+ fetch: dependencies.fetch,
147
+ });
148
+ }
149
+ case AuthType.AppOnBehalfOf:
150
+ throw new AuthError("config", "App OBO tokens do not use a token provider");
151
+ }
152
+ }
153
+ async function resolveOAuthEndpoints(profile, fetcher = globalThis.fetch) {
154
+ const host = profile.host.replace(/\/$/, "");
155
+ if (profile.target === TargetKind.Account) {
156
+ if (!profile.accountId)
157
+ throw new AuthError("config", "Account target requires account_id");
158
+ const endpoints = {
159
+ tokenEndpoint: `${host}/oidc/accounts/${profile.accountId}/v1/token`,
160
+ };
161
+ logger.debug("resolved account OAuth endpoint", {
162
+ profile: profile.name,
163
+ tokenOrigin: new URL(endpoints.tokenEndpoint).origin,
164
+ });
165
+ return endpoints;
166
+ }
167
+ const discovery = profile.target === TargetKind.Unified
168
+ ? `${host}/oidc/accounts/${requiredAccountId(profile)}/.well-known/oauth-authorization-server`
169
+ : `${host}/oidc/.well-known/oauth-authorization-server`;
170
+ logger.debug("requesting OAuth discovery", {
171
+ profile: profile.name,
172
+ target: profile.target,
173
+ discovery,
174
+ });
175
+ const response = await fetcher(discovery, { redirect: "manual" });
176
+ logger.debug("received OAuth discovery response", {
177
+ profile: profile.name,
178
+ status: response.status,
179
+ });
180
+ if (response.status === 404) {
181
+ throw new AuthError("oauth", `OAuth is not supported at ${discovery}`);
182
+ }
183
+ if (!response.ok) {
184
+ throw new AuthError("oauth", `OAuth discovery returned HTTP ${response.status}`);
185
+ }
186
+ const value = (await response.json());
187
+ const tokenEndpoint = stringValue(value.token_endpoint);
188
+ if (!tokenEndpoint)
189
+ throw new AuthError("oauth", "OAuth discovery response is incomplete");
190
+ logger.debug("resolved OAuth token endpoint", {
191
+ profile: profile.name,
192
+ tokenOrigin: new URL(tokenEndpoint).origin,
193
+ });
194
+ return { tokenEndpoint };
195
+ }
196
+ function requiredAccountId(profile) {
197
+ if (!profile.accountId)
198
+ throw new AuthError("config", "Unified target requires account_id");
199
+ return profile.accountId;
200
+ }
201
+ function isLoopbackHttp(host) {
202
+ const url = new URL(host);
203
+ return url.protocol === "http:" && ["127.0.0.1", "localhost"].includes(url.hostname);
204
+ }
205
+ function cliEnvironment(profile, configFile) {
206
+ return {
207
+ DATABRICKS_CONFIG_FILE: configFile,
208
+ DATABRICKS_CONFIG_PROFILE: profile.name,
209
+ DATABRICKS_HOST: profile.host,
210
+ ...(profile.accountId ? { DATABRICKS_ACCOUNT_ID: profile.accountId } : {}),
211
+ ...(profile.workspaceId ? { DATABRICKS_WORKSPACE_ID: profile.workspaceId } : {}),
212
+ ...(profile.authType === AuthType.PersonalAccessToken
213
+ ? {
214
+ DATABRICKS_AUTH_TYPE: "pat",
215
+ DATABRICKS_TOKEN: profile.accessToken,
216
+ }
217
+ : {}),
218
+ };
219
+ }
220
+ function stringValue(value) {
221
+ return typeof value === "string" && value.trim() ? value : undefined;
222
+ }
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFDTCxhQUFhLEVBRWIsMkJBQTJCLEVBQzNCLG1CQUFtQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFnQ3hDLDBFQUEwRTtBQUMxRSxNQUFNLGlCQUFpQjtJQVVGO0lBQ0E7SUFDQTtJQVhWLE9BQU8sQ0FBVTtJQUNqQixJQUFJLENBQVM7SUFDYixTQUFTLENBQVU7SUFDbkIsV0FBVyxDQUFVO0lBQ3JCLE1BQU0sQ0FBYTtJQUNuQixRQUFRLENBQVc7SUFDbkIsU0FBUyxDQUFTO0lBRTNCLFlBQ21CLFlBQStCLEVBQy9CLE1BQXVCLEVBQ3ZCLFlBQW9CO1FBRnBCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtR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RUFBRSxLQUFLO2dCQUMzQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsV0FBWTthQUN2QztZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRhYnJpY2tzQXV0aENsaWVudEluZm8gfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtYXV0aC9jbGllbnRcIjtcbmltcG9ydCB7IEF1dGhUeXBlLCBUYXJnZXRLaW5kIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWF1dGgvY29uZmlnXCI7XG5pbXBvcnQgeyBEYXRhYnJpY2tzQ2xpUHJvdmlkZXIsIHJlc29sdmVEYXRhYnJpY2tzQ2xpIH0gZnJvbSBcIi4vX2RhdGFicmlja3MtY2xpLnRzXCI7XG5pbXBvcnQgeyBBdXRoRXJyb3IgfSBmcm9tIFwiLi9fZXJyb3JzLnRzXCI7XG5pbXBvcnQgeyBwdWJsaWNUb2tlbiwgVG9rZW5MaWZlY3ljbGUgfSBmcm9tIFwiLi9fbGlmZWN5Y2xlLnRzXCI7XG5pbXBvcnQgeyBhdXRoTG9nZ2VyLCB0b2tlbk1ldGFkYXRhIH0gZnJvbSBcIi4vX2xvZ2dpbmcudHNcIjtcbmltcG9ydCB7IERhdGFicmlja3NQZXJzb25hbEFjY2Vzc1Rva2VuUHJvdmlkZXIgfSBmcm9tIFwiLi9fcGVyc29uYWwtYWNjZXNzLXRva2VuLnRzXCI7XG5pbXBvcnQgeyBtYWNoaW5lU2NvcGVzLCByZXNvbHZlQ29uZmlnRmlsZSwgcmVzb2x2ZURhdGFicmlja3NQcm9maWxlIH0gZnJvbSBcIi4vX3Byb2ZpbGUtY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBEYXRhYnJpY2tzU2VydmljZVByaW5jaXBhbFByb3ZpZGVyIH0gZnJvbSBcIi4vX3NlcnZpY2UtcHJpbmNpcGFsLnRzXCI7XG5pbXBvcnQgeyBNZW1vcnlDcmVkZW50aWFsU3RvcmUgfSBmcm9tIFwiLi9fc3RvcmFnZS50c1wiO1xuaW1wb3J0IHsgdHlwZSBEYXRhYnJpY2tzUHJvZmlsZSwgdHlwZSBUb2tlbiwgdHlwZSBUb2tlblByb3ZpZGVyIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5pbXBvcnQge1xuICBBVVRIX0RFRkFVTFRTLFxuICB0eXBlIERhdGFicmlja3NBdXRoT3B0aW9ucyxcbiAgREVGQVVMVF9BQ0NFU1NfVE9LRU5fSEVBREVSLFxuICBXT1JLU1BBQ0VfSURfSEVBREVSLFxufSBmcm9tIFwiLi9jb25maWcudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gYXV0aExvZ2dlcihcImRhdGFicmlja3NcIik7XG5cbi8qKiBQdWJsaWMgY3JlZGVudGlhbCByZXN1bHQgd2l0aCBubyByZWZyZXNoIHRva2VuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NUb2tlbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICBleHBpcnk/OiBzdHJpbmc7XG4gIHNjb3Blczogc3RyaW5nW107XG59XG5cbi8qKiBUb2tlbiBhY3F1aXNpdGlvbiBjb250cm9scy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5PcHRpb25zIHtcbiAgLyoqIFBlcm1pdCBpbnRlcmFjdGl2ZSBDTEkgbG9naW4gd2hlbiByZXF1aXJlZC4gKi9cbiAgbG9naW4/OiBib29sZWFuO1xuICAvKiogQnlwYXNzIGEgcmV1c2FibGUgY2FjaGVkIHRva2VuIGFuZCByZWZyZXNoIGl0LiAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcbn1cblxuLyoqIFdvcmtzcGFjZUNsaWVudC1zaGFwZWQgRGF0YWJyaWNrcyBhdXRoZW50aWNhdGlvbiBmYWNhZGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDbGllbnQgZXh0ZW5kcyBEYXRhYnJpY2tzQXV0aENsaWVudEluZm8ge1xuICB0b2tlbihvcHRpb25zPzogVG9rZW5PcHRpb25zKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj47XG4gIGhlYWRlcnMob3B0aW9ucz86IFRva2VuT3B0aW9ucyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gIGxvZ291dCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKiogSW5qZWN0YWJsZSBob3N0IGNhcGFiaWxpdGllcyBmb3IgRGF0YWJyaWNrcyBhdXRoZW50aWNhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJyaWNrc0F1dGhEZXBlbmRlbmNpZXMge1xuICBlbnZpcm9ubWVudD86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuICBmZXRjaD86IHR5cGVvZiBnbG9iYWxUaGlzLmZldGNoO1xuICByZXNvbHZlQ2xpPzogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG4vKiogRGVmYXVsdCBEYXRhYnJpY2tzIGF1dGggZmFjYWRlIG92ZXIgdGhlIHByb3ZpZGVyLW5ldXRyYWwgbGlmZWN5Y2xlLiAqL1xuY2xhc3MgRGVmYXVsdEF1dGhDbGllbnQgaW1wbGVtZW50cyBBdXRoQ2xpZW50IHtcbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICByZWFkb25seSBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZUlkPzogc3RyaW5nO1xuICByZWFkb25seSB0YXJnZXQ6IFRhcmdldEtpbmQ7XG4gIHJlYWRvbmx5IGF1dGhUeXBlOiBBdXRoVHlwZTtcbiAgcmVhZG9ubHkgcHJpbmNpcGFsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlVmFsdWU6IERhdGFicmlja3NQcm9maWxlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50PzogVG9rZW5MaWZlY3ljbGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0VG9rZW4/OiBUb2tlbixcbiAgKSB7XG4gICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZVZhbHVlLnNlbGVjdGVkUHJvZmlsZTtcbiAgICB0aGlzLmhvc3QgPSBwcm9maWxlVmFsdWUuaG9zdDtcbiAgICB0aGlzLmFjY291bnRJZCA9IHByb2ZpbGVWYWx1ZS5hY2NvdW50SWQ7XG4gICAgdGhpcy53b3Jrc3BhY2VJZCA9IHByb2ZpbGVWYWx1ZS53b3Jrc3BhY2VJZDtcbiAgICB0aGlzLnRhcmdldCA9IHByb2ZpbGVWYWx1ZS50YXJnZXQ7XG4gICAgdGhpcy5hdXRoVHlwZSA9IHByb2ZpbGVWYWx1ZS5hdXRoVHlwZTtcbiAgICB0aGlzLnByaW5jaXBhbCA9IHByb2ZpbGVWYWx1ZS5wcmluY2lwYWw7XG4gIH1cblxuICB0b2tlbihvcHRpb25zOiBUb2tlbk9wdGlvbnMgPSB7fSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkRhdGFicmlja3MgdG9rZW4gcmVxdWVzdGVkXCIsIHtcbiAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgbG9naW46IG9wdGlvbnMubG9naW4gPz8gXCJhdXRvXCIsXG4gICAgICByZWZyZXNoOiBvcHRpb25zLnJlZnJlc2ggPz8gZmFsc2UsXG4gICAgICBzb3VyY2U6IHRoaXMucmVxdWVzdFRva2VuID8gXCJyZXF1ZXN0XCIgOiBcImxpZmVjeWNsZVwiLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLnJlcXVlc3RUb2tlbikgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwdWJsaWNUb2tlbih0aGlzLnJlcXVlc3RUb2tlbikpO1xuICAgIHJldHVybiBvcHRpb25zLnJlZnJlc2hcbiAgICAgID8gdGhpcy5yZXF1aXJlZENsaWVudCgpLmZvcmNlUmVmcmVzaChvcHRpb25zLmxvZ2luID8/IHRydWUpXG4gICAgICA6IHRoaXMucmVxdWlyZWRDbGllbnQoKS50b2tlbldpdGhMb2dpbihvcHRpb25zLmxvZ2luKTtcbiAgfVxuXG4gIGFzeW5jIGhlYWRlcnMob3B0aW9uczogVG9rZW5PcHRpb25zID0ge30pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMudG9rZW4ob3B0aW9ucyk7XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgIFtERUZBVUxUX0FDQ0VTU19UT0tFTl9IRUFERVJdOiBgJHt0b2tlbi50b2tlblR5cGV9ICR7dG9rZW4uYWNjZXNzVG9rZW59YCxcbiAgICAgIC4uLih0aGlzLnByb2ZpbGVWYWx1ZS53b3Jrc3BhY2VJZFxuICAgICAgICA/IHsgW1dPUktTUEFDRV9JRF9IRUFERVJdOiB0aGlzLnByb2ZpbGVWYWx1ZS53b3Jrc3BhY2VJZCB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG4gICAgbG9nZ2VyLmRlYnVnKFwiZ2VuZXJhdGVkIERhdGFicmlja3MgYXV0aGVudGljYXRpb24gaGVhZGVyc1wiLCB7XG4gICAgICAuLi50aGlzLmNvbnRleHQoKSxcbiAgICAgIGhlYWRlck5hbWVzOiBPYmplY3Qua2V5cyhoZWFkZXJzKSxcbiAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKHRva2VuKSxcbiAgICB9KTtcbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIGxvZ291dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJEYXRhYnJpY2tzIGxvZ291dCByZXF1ZXN0ZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIHJldHVybiB0aGlzLmNsaWVudD8ubG9nb3V0KCkgPz8gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVkQ2xpZW50KCk6IFRva2VuTGlmZWN5Y2xlIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50KSB0aHJvdyBuZXcgQXV0aEVycm9yKFwib2F1dGhcIiwgXCJBdXRoZW50aWNhdGlvbiBsaWZlY3ljbGUgaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnRleHQoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB7XG4gICAgICBwcm9maWxlOiB0aGlzLnByb2ZpbGVWYWx1ZS5uYW1lLFxuICAgICAgaG9zdDogdGhpcy5wcm9maWxlVmFsdWUuaG9zdCxcbiAgICAgIGF1dGhUeXBlOiB0aGlzLnByb2ZpbGVWYWx1ZS5hdXRoVHlwZSxcbiAgICAgIGhhc1dvcmtzcGFjZUlkOiBCb29sZWFuKHRoaXMucHJvZmlsZVZhbHVlLndvcmtzcGFjZUlkKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBDcmVhdGUgYSBEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIGNsaWVudC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBdXRoQ2xpZW50KFxuICBvcHRpb25zOiBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgPSB7fSxcbiAgZGVwZW5kZW5jaWVzOiBEYXRhYnJpY2tzQXV0aERlcGVuZGVuY2llcyA9IHt9LFxuKTogUHJvbWlzZTxBdXRoQ2xpZW50PiB7XG4gIHJldHVybiBjcmVhdGVSZXNvbHZlZEF1dGgob3B0aW9ucywgZGVwZW5kZW5jaWVzKTtcbn1cblxuLyoqIFJlc29sdmUgYSBEYXRhYnJpY2tzIHByb2ZpbGUgYW5kIGNyZWF0ZSBpdHMgdG9rZW4gbGlmZWN5Y2xlLiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZWRBdXRoKFxuICBvcHRpb25zOiBEYXRhYnJpY2tzQXV0aE9wdGlvbnMsXG4gIGRlcGVuZGVuY2llczogRGF0YWJyaWNrc0F1dGhEZXBlbmRlbmNpZXMsXG4pOiBQcm9taXNlPERlZmF1bHRBdXRoQ2xpZW50PiB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gZGVwZW5kZW5jaWVzLmVudmlyb25tZW50ID8/IHByb2Nlc3MuZW52O1xuICBjb25zdCBwcm9maWxlID0gcmVzb2x2ZURhdGFicmlja3NQcm9maWxlKG9wdGlvbnMsIGVudmlyb25tZW50KTtcbiAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRpbmcgRGF0YWJyaWNrcyBhdXRoXCIsIHtcbiAgICBwcm9maWxlOiBwcm9maWxlLm5hbWUsXG4gICAgaG9zdDogcHJvZmlsZS5ob3N0LFxuICAgIGF1dGhUeXBlOiBwcm9maWxlLmF1dGhUeXBlLFxuICB9KTtcbiAgaWYgKHByb2ZpbGUuYXV0aFR5cGUgPT09IEF1dGhUeXBlLkFwcE9uQmVoYWxmT2YpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVhdGVkIHJlcXVlc3Qtc2NvcGVkIEFwcCBPQk8gYXV0aGVudGljYXRpb25cIiwge1xuICAgICAgcHJvZmlsZTogcHJvZmlsZS5uYW1lLFxuICAgICAgaG9zdDogcHJvZmlsZS5ob3N0LFxuICAgICAgaGFzV29ya3NwYWNlSWQ6IEJvb2xlYW4ocHJvZmlsZS53b3Jrc3BhY2VJZCksXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBEZWZhdWx0QXV0aENsaWVudChwcm9maWxlLCB1bmRlZmluZWQsIHtcbiAgICAgIGFjY2Vzc1Rva2VuOiBwcm9maWxlLmFjY2Vzc1Rva2VuISxcbiAgICAgIHRva2VuVHlwZTogXCJCZWFyZXJcIixcbiAgICAgIHNjb3BlczogWy4uLnByb2ZpbGUuc2NvcGVzXSxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBwcm92aWRlciA9IGF3YWl0IHByb3ZpZGVyRm9yKHByb2ZpbGUsIG9wdGlvbnMsIGRlcGVuZGVuY2llcyk7XG4gIGNvbnN0IHN0b3JlID0gbmV3IE1lbW9yeUNyZWRlbnRpYWxTdG9yZSgpO1xuICBjb25zdCBjbGllbnQgPSBuZXcgVG9rZW5MaWZlY3ljbGUocHJvZmlsZS5jYWNoZUtleSwgcHJvdmlkZXIsIHN0b3JlLCB7XG4gICAgLi4uQVVUSF9ERUZBVUxUUyxcbiAgICAuLi5vcHRpb25zLmF1dGgsXG4gIH0pO1xuICBjb25zdCBhdXRoID0gbmV3IERlZmF1bHRBdXRoQ2xpZW50KHByb2ZpbGUsIGNsaWVudCk7XG4gIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZWQgYXV0aGVudGljYXRpb24gbGlmZWN5Y2xlXCIsIHtcbiAgICBwcm9maWxlOiBwcm9maWxlLm5hbWUsXG4gICAgaG9zdDogcHJvZmlsZS5ob3N0LFxuICAgIGF1dGhUeXBlOiBwcm9maWxlLmF1dGhUeXBlLFxuICB9KTtcbiAgcmV0dXJuIGF1dGg7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb3ZpZGVyRm9yKFxuICBwcm9maWxlOiBEYXRhYnJpY2tzUHJvZmlsZSxcbiAgb3B0aW9uczogRGF0YWJyaWNrc0F1dGhPcHRpb25zLFxuICBkZXBlbmRlbmNpZXM6IERhdGFicmlja3NBdXRoRGVwZW5kZW5jaWVzLFxuKTogUHJvbWlzZTxUb2tlblByb3ZpZGVyPiB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gZGVwZW5kZW5jaWVzLmVudmlyb25tZW50ID8/IHByb2Nlc3MuZW52O1xuICBzd2l0Y2ggKHByb2ZpbGUuYXV0aFR5cGUpIHtcbiAgICBjYXNlIEF1dGhUeXBlLkRhdGFicmlja3NDbGk6IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInNlbGVjdGVkIERhdGFicmlja3MgQ0xJIHByb3ZpZGVyXCIsIHsgcHJvZmlsZTogcHJvZmlsZS5uYW1lIH0pO1xuICAgICAgcmV0dXJuIG5ldyBEYXRhYnJpY2tzQ2xpUHJvdmlkZXIoXG4gICAgICAgIHByb2ZpbGUubmFtZSxcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBkZXBlbmRlbmNpZXMucmVzb2x2ZUNsaSA/IGRlcGVuZGVuY2llcy5yZXNvbHZlQ2xpKCkgOiByZXNvbHZlRGF0YWJyaWNrc0NsaShlbnZpcm9ubWVudCksXG4gICAgICAgIGNsaUVudmlyb25tZW50KHByb2ZpbGUsIHJlc29sdmVDb25maWdGaWxlKG9wdGlvbnMuY29uZmlnRmlsZSwgZW52aXJvbm1lbnQpKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNhc2UgQXV0aFR5cGUuUGVyc29uYWxBY2Nlc3NUb2tlbjpcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInNlbGVjdGVkIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBwcm92aWRlclwiLCB7IHByb2ZpbGU6IHByb2ZpbGUubmFtZSB9KTtcbiAgICAgIHJldHVybiBuZXcgRGF0YWJyaWNrc1BlcnNvbmFsQWNjZXNzVG9rZW5Qcm92aWRlcihwcm9maWxlLmFjY2Vzc1Rva2VuISk7XG4gICAgY2FzZSBBdXRoVHlwZS5PQXV0aE0yTTpcbiAgICBjYXNlIEF1dGhUeXBlLkFwcFNlcnZpY2VQcmluY2lwYWw6IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcInNlbGVjdGVkIHNlcnZpY2UtcHJpbmNpcGFsIHByb3ZpZGVyXCIsIHtcbiAgICAgICAgcHJvZmlsZTogcHJvZmlsZS5uYW1lLFxuICAgICAgICBhdXRoVHlwZTogcHJvZmlsZS5hdXRoVHlwZSxcbiAgICAgICAgdGFyZ2V0OiBwcm9maWxlLnRhcmdldCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgcmVzb2x2ZU9BdXRoRW5kcG9pbnRzKHByb2ZpbGUsIGRlcGVuZGVuY2llcy5mZXRjaCk7XG4gICAgICByZXR1cm4gbmV3IERhdGFicmlja3NTZXJ2aWNlUHJpbmNpcGFsUHJvdmlkZXIoe1xuICAgICAgICB0b2tlbkVuZHBvaW50OiBlbmRwb2ludHMudG9rZW5FbmRwb2ludCxcbiAgICAgICAgY2xpZW50SWQ6IHByb2ZpbGUuY2xpZW50SWQsXG4gICAgICAgIGNsaWVudFNlY3JldDogcHJvZmlsZS5jbGllbnRTZWNyZXQhLFxuICAgICAgICBzY29wZXM6IG1hY2hpbmVTY29wZXMocHJvZmlsZS5zY29wZXMpLFxuICAgICAgICAuLi4ocHJvZmlsZS5ncm91cElkID8geyBncm91cElkOiBwcm9maWxlLmdyb3VwSWQgfSA6IHt9KSxcbiAgICAgICAgYWxsb3dJbnNlY3VyZVJlcXVlc3RzOiBpc0xvb3BiYWNrSHR0cChwcm9maWxlLmhvc3QpLFxuICAgICAgICBmZXRjaDogZGVwZW5kZW5jaWVzLmZldGNoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNhc2UgQXV0aFR5cGUuQXBwT25CZWhhbGZPZjpcbiAgICAgIHRocm93IG5ldyBBdXRoRXJyb3IoXCJjb25maWdcIiwgXCJBcHAgT0JPIHRva2VucyBkbyBub3QgdXNlIGEgdG9rZW4gcHJvdmlkZXJcIik7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEF1dGhvcml6YXRpb25TZXJ2ZXIge1xuICB0b2tlbkVuZHBvaW50OiBzdHJpbmc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVPQXV0aEVuZHBvaW50cyhcbiAgcHJvZmlsZTogRGF0YWJyaWNrc1Byb2ZpbGUsXG4gIGZldGNoZXI6IHR5cGVvZiBnbG9iYWxUaGlzLmZldGNoID0gZ2xvYmFsVGhpcy5mZXRjaCxcbik6IFByb21pc2U8QXV0aG9yaXphdGlvblNlcnZlcj4ge1xuICBjb25zdCBob3N0ID0gcHJvZmlsZS5ob3N0LnJlcGxhY2UoL1xcLyQvLCBcIlwiKTtcbiAgaWYgKHByb2ZpbGUudGFyZ2V0ID09PSBUYXJnZXRLaW5kLkFjY291bnQpIHtcbiAgICBpZiAoIXByb2ZpbGUuYWNjb3VudElkKSB0aHJvdyBuZXcgQXV0aEVycm9yKFwiY29uZmlnXCIsIFwiQWNjb3VudCB0YXJnZXQgcmVxdWlyZXMgYWNjb3VudF9pZFwiKTtcbiAgICBjb25zdCBlbmRwb2ludHMgPSB7XG4gICAgICB0b2tlbkVuZHBvaW50OiBgJHtob3N0fS9vaWRjL2FjY291bnRzLyR7cHJvZmlsZS5hY2NvdW50SWR9L3YxL3Rva2VuYCxcbiAgICB9O1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlc29sdmVkIGFjY291bnQgT0F1dGggZW5kcG9pbnRcIiwge1xuICAgICAgcHJvZmlsZTogcHJvZmlsZS5uYW1lLFxuICAgICAgdG9rZW5PcmlnaW46IG5ldyBVUkwoZW5kcG9pbnRzLnRva2VuRW5kcG9pbnQpLm9yaWdpbixcbiAgICB9KTtcbiAgICByZXR1cm4gZW5kcG9pbnRzO1xuICB9XG4gIGNvbnN0IGRpc2NvdmVyeSA9XG4gICAgcHJvZmlsZS50YXJnZXQgPT09IFRhcmdldEtpbmQuVW5pZmllZFxuICAgICAgPyBgJHtob3N0fS9vaWRjL2FjY291bnRzLyR7cmVxdWlyZWRBY2NvdW50SWQocHJvZmlsZSl9Ly53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyYFxuICAgICAgOiBgJHtob3N0fS9vaWRjLy53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyYDtcbiAgbG9nZ2VyLmRlYnVnKFwicmVxdWVzdGluZyBPQXV0aCBkaXNjb3ZlcnlcIiwge1xuICAgIHByb2ZpbGU6IHByb2ZpbGUubmFtZSxcbiAgICB0YXJnZXQ6IHByb2ZpbGUudGFyZ2V0LFxuICAgIGRpc2NvdmVyeSxcbiAgfSk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hlcihkaXNjb3ZlcnksIHsgcmVkaXJlY3Q6IFwibWFudWFsXCIgfSk7XG4gIGxvZ2dlci5kZWJ1ZyhcInJlY2VpdmVkIE9BdXRoIGRpc2NvdmVyeSByZXNwb25zZVwiLCB7XG4gICAgcHJvZmlsZTogcHJvZmlsZS5uYW1lLFxuICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICB9KTtcbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgdGhyb3cgbmV3IEF1dGhFcnJvcihcIm9hdXRoXCIsIGBPQXV0aCBpcyBub3Qgc3VwcG9ydGVkIGF0ICR7ZGlzY292ZXJ5fWApO1xuICB9XG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgQXV0aEVycm9yKFwib2F1dGhcIiwgYE9BdXRoIGRpc2NvdmVyeSByZXR1cm5lZCBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHRva2VuRW5kcG9pbnQgPSBzdHJpbmdWYWx1ZSh2YWx1ZS50b2tlbl9lbmRwb2ludCk7XG4gIGlmICghdG9rZW5FbmRwb2ludCkgdGhyb3cgbmV3IEF1dGhFcnJvcihcIm9hdXRoXCIsIFwiT0F1dGggZGlzY292ZXJ5IHJlc3BvbnNlIGlzIGluY29tcGxldGVcIik7XG4gIGxvZ2dlci5kZWJ1ZyhcInJlc29sdmVkIE9BdXRoIHRva2VuIGVuZHBvaW50XCIsIHtcbiAgICBwcm9maWxlOiBwcm9maWxlLm5hbWUsXG4gICAgdG9rZW5PcmlnaW46IG5ldyBVUkwodG9rZW5FbmRwb2ludCkub3JpZ2luLFxuICB9KTtcbiAgcmV0dXJuIHsgdG9rZW5FbmRwb2ludCB9O1xufVxuXG5mdW5jdGlvbiByZXF1aXJlZEFjY291bnRJZChwcm9maWxlOiBEYXRhYnJpY2tzUHJvZmlsZSk6IHN0cmluZyB7XG4gIGlmICghcHJvZmlsZS5hY2NvdW50SWQpIHRocm93IG5ldyBBdXRoRXJyb3IoXCJjb25maWdcIiwgXCJVbmlmaWVkIHRhcmdldCByZXF1aXJlcyBhY2NvdW50X2lkXCIpO1xuICByZXR1cm4gcHJvZmlsZS5hY2NvdW50SWQ7XG59XG5cbmZ1bmN0aW9uIGlzTG9vcGJhY2tIdHRwKGhvc3Q6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGhvc3QpO1xuICByZXR1cm4gdXJsLnByb3RvY29sID09PSBcImh0dHA6XCIgJiYgW1wiMTI3LjAuMC4xXCIsIFwibG9jYWxob3N0XCJdLmluY2x1ZGVzKHVybC5ob3N0bmFtZSk7XG59XG5cbmZ1bmN0aW9uIGNsaUVudmlyb25tZW50KHByb2ZpbGU6IERhdGFicmlja3NQcm9maWxlLCBjb25maWdGaWxlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHtcbiAgICBEQVRBQlJJQ0tTX0NPTkZJR19GSUxFOiBjb25maWdGaWxlLFxuICAgIERBVEFCUklDS1NfQ09ORklHX1BST0ZJTEU6IHByb2ZpbGUubmFtZSxcbiAgICBEQVRBQlJJQ0tTX0hPU1Q6IHByb2ZpbGUuaG9zdCxcbiAgICAuLi4ocHJvZmlsZS5hY2NvdW50SWQgPyB7IERBVEFCUklDS1NfQUNDT1VOVF9JRDogcHJvZmlsZS5hY2NvdW50SWQgfSA6IHt9KSxcbiAgICAuLi4ocHJvZmlsZS53b3Jrc3BhY2VJZCA/IHsgREFUQUJSSUNLU19XT1JLU1BBQ0VfSUQ6IHByb2ZpbGUud29ya3NwYWNlSWQgfSA6IHt9KSxcbiAgICAuLi4ocHJvZmlsZS5hdXRoVHlwZSA9PT0gQXV0aFR5cGUuUGVyc29uYWxBY2Nlc3NUb2tlblxuICAgICAgPyB7XG4gICAgICAgICAgREFUQUJSSUNLU19BVVRIX1RZUEU6IFwicGF0XCIsXG4gICAgICAgICAgREFUQUJSSUNLU19UT0tFTjogcHJvZmlsZS5hY2Nlc3NUb2tlbiEsXG4gICAgICAgIH1cbiAgICAgIDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzdHJpbmdWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import type { AuthType, TargetKind } from "@dbx-tools/shared-auth/config";
2
+ /** Token lifecycle timing configuration in milliseconds. */
3
+ export interface AuthOptions {
4
+ refreshBufferMs?: number;
5
+ lockTimeoutMs?: number;
6
+ loginTimeoutMs?: number;
7
+ }
8
+ /** Default token refresh, lock, and interactive login timing values. */
9
+ export declare const AUTH_DEFAULTS: Required<AuthOptions>;
10
+ /** Databricks profile and credential-source options. */
11
+ export interface DatabricksAuthOptions {
12
+ profile?: string;
13
+ host?: string;
14
+ accountId?: string;
15
+ workspaceId?: string;
16
+ configFile?: string;
17
+ clientId?: string;
18
+ clientSecret?: string;
19
+ accessToken?: string;
20
+ groupId?: string;
21
+ authType?: AuthType;
22
+ scopes?: string[];
23
+ target?: TargetKind;
24
+ auth?: AuthOptions;
25
+ requestHeaders?: Record<string, string>;
26
+ accessTokenHeader?: string;
27
+ preferUserToMachine?: boolean;
28
+ }
29
+ /** OAuth client used by Databricks CLI-compatible user authentication. */
30
+ export declare const DEFAULT_CLIENT_ID = "databricks-cli";
31
+ /** Default Databricks profile configuration path. */
32
+ export declare const DEFAULT_CONFIG_FILE = "~/.databrickscfg";
33
+ /** Request header carrying a bearer access token. */
34
+ export declare const DEFAULT_ACCESS_TOKEN_HEADER = "authorization";
35
+ /** Request header carrying the resolved Databricks workspace ID. */
36
+ export declare const WORKSPACE_ID_HEADER = "x-databricks-workspace-id";
@@ -0,0 +1,15 @@
1
+ /** Default token refresh, lock, and interactive login timing values. */
2
+ export const AUTH_DEFAULTS = {
3
+ refreshBufferMs: 300_000,
4
+ lockTimeoutMs: 0,
5
+ loginTimeoutMs: 900_000,
6
+ };
7
+ /** OAuth client used by Databricks CLI-compatible user authentication. */
8
+ export const DEFAULT_CLIENT_ID = "databricks-cli";
9
+ /** Default Databricks profile configuration path. */
10
+ export const DEFAULT_CONFIG_FILE = "~/.databrickscfg";
11
+ /** Request header carrying a bearer access token. */
12
+ export const DEFAULT_ACCESS_TOKEN_HEADER = "authorization";
13
+ /** Request header carrying the resolved Databricks workspace ID. */
14
+ export const WORKSPACE_ID_HEADER = "x-databricks-workspace-id";
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSx3RUFBd0U7QUFDeEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEwQjtJQUNsRCxlQUFlLEVBQUUsT0FBTztJQUN4QixhQUFhLEVBQUUsQ0FBQztJQUNoQixjQUFjLEVBQUUsT0FBTztDQUN4QixDQUFDO0FBc0JGLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDdEQscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGVBQWUsQ0FBQztBQUMzRCxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEF1dGhUeXBlLCBUYXJnZXRLaW5kIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWF1dGgvY29uZmlnXCI7XG5cbi8qKiBUb2tlbiBsaWZlY3ljbGUgdGltaW5nIGNvbmZpZ3VyYXRpb24gaW4gbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoT3B0aW9ucyB7XG4gIHJlZnJlc2hCdWZmZXJNcz86IG51bWJlcjtcbiAgbG9ja1RpbWVvdXRNcz86IG51bWJlcjtcbiAgbG9naW5UaW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKiBEZWZhdWx0IHRva2VuIHJlZnJlc2gsIGxvY2ssIGFuZCBpbnRlcmFjdGl2ZSBsb2dpbiB0aW1pbmcgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IEFVVEhfREVGQVVMVFM6IFJlcXVpcmVkPEF1dGhPcHRpb25zPiA9IHtcbiAgcmVmcmVzaEJ1ZmZlck1zOiAzMDBfMDAwLFxuICBsb2NrVGltZW91dE1zOiAwLFxuICBsb2dpblRpbWVvdXRNczogOTAwXzAwMCxcbn07XG5cbi8qKiBEYXRhYnJpY2tzIHByb2ZpbGUgYW5kIGNyZWRlbnRpYWwtc291cmNlIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFicmlja3NBdXRoT3B0aW9ucyB7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIGhvc3Q/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBncm91cElkPzogc3RyaW5nO1xuICBhdXRoVHlwZT86IEF1dGhUeXBlO1xuICBzY29wZXM/OiBzdHJpbmdbXTtcbiAgdGFyZ2V0PzogVGFyZ2V0S2luZDtcbiAgYXV0aD86IEF1dGhPcHRpb25zO1xuICByZXF1ZXN0SGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGFjY2Vzc1Rva2VuSGVhZGVyPzogc3RyaW5nO1xuICBwcmVmZXJVc2VyVG9NYWNoaW5lPzogYm9vbGVhbjtcbn1cblxuLyoqIE9BdXRoIGNsaWVudCB1c2VkIGJ5IERhdGFicmlja3MgQ0xJLWNvbXBhdGlibGUgdXNlciBhdXRoZW50aWNhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NMSUVOVF9JRCA9IFwiZGF0YWJyaWNrcy1jbGlcIjtcbi8qKiBEZWZhdWx0IERhdGFicmlja3MgcHJvZmlsZSBjb25maWd1cmF0aW9uIHBhdGguICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05GSUdfRklMRSA9IFwifi8uZGF0YWJyaWNrc2NmZ1wiO1xuLyoqIFJlcXVlc3QgaGVhZGVyIGNhcnJ5aW5nIGEgYmVhcmVyIGFjY2VzcyB0b2tlbi4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FDQ0VTU19UT0tFTl9IRUFERVIgPSBcImF1dGhvcml6YXRpb25cIjtcbi8qKiBSZXF1ZXN0IGhlYWRlciBjYXJyeWluZyB0aGUgcmVzb2x2ZWQgRGF0YWJyaWNrcyB3b3Jrc3BhY2UgSUQuICovXG5leHBvcnQgY29uc3QgV09SS1NQQUNFX0lEX0hFQURFUiA9IFwieC1kYXRhYnJpY2tzLXdvcmtzcGFjZS1pZFwiO1xuIl19
@@ -0,0 +1,11 @@
1
+ import type { DatabricksProfileSummary } from "@dbx-tools/shared-auth/profile";
2
+ import type { DatabricksAuthOptions } from "./config.ts";
3
+ /** Profile-listing controls. */
4
+ export interface ListProfilesOptions {
5
+ configFile?: string;
6
+ refresh?: boolean;
7
+ }
8
+ /** Resolve one selected profile without exposing credentials. */
9
+ export declare function resolveProfile(options?: DatabricksAuthOptions): DatabricksProfileSummary;
10
+ /** List configured profiles without exposing credentials. */
11
+ export declare function listProfiles(options?: ListProfilesOptions): DatabricksProfileSummary[];
@@ -0,0 +1,21 @@
1
+ import { listDatabricksProfiles, resolveDatabricksProfile } from "./_profile-config.js";
2
+ /** Resolve one selected profile without exposing credentials. */
3
+ export function resolveProfile(options = {}) {
4
+ return toProfileSummary(resolveDatabricksProfile(options));
5
+ }
6
+ /** List configured profiles without exposing credentials. */
7
+ export function listProfiles(options = {}) {
8
+ return listDatabricksProfiles(options.configFile, options.refresh);
9
+ }
10
+ function toProfileSummary(profile) {
11
+ return {
12
+ name: profile.name,
13
+ host: profile.host,
14
+ ...(profile.accountId ? { accountId: profile.accountId } : {}),
15
+ ...(profile.workspaceId ? { workspaceId: profile.workspaceId } : {}),
16
+ target: profile.target,
17
+ authType: profile.authType,
18
+ principal: profile.principal,
19
+ };
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBVXhGLGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsY0FBYyxDQUFDLFVBQWlDLEVBQUU7SUFDaEUsT0FBTyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLFlBQVksQ0FBQyxVQUErQixFQUFFO0lBQzVELE9BQU8sc0JBQXNCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsT0FBMEI7SUFDbEQsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlELEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztLQUM3QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YWJyaWNrc1Byb2ZpbGVTdW1tYXJ5IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWF1dGgvcHJvZmlsZVwiO1xuXG5pbXBvcnQgeyBsaXN0RGF0YWJyaWNrc1Byb2ZpbGVzLCByZXNvbHZlRGF0YWJyaWNrc1Byb2ZpbGUgfSBmcm9tIFwiLi9fcHJvZmlsZS1jb25maWcudHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJyaWNrc1Byb2ZpbGUgfSBmcm9tIFwiLi9fdHlwZXMudHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJyaWNrc0F1dGhPcHRpb25zIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5cbi8qKiBQcm9maWxlLWxpc3RpbmcgY29udHJvbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQcm9maWxlc09wdGlvbnMge1xuICBjb25maWdGaWxlPzogc3RyaW5nO1xuICByZWZyZXNoPzogYm9vbGVhbjtcbn1cblxuLyoqIFJlc29sdmUgb25lIHNlbGVjdGVkIHByb2ZpbGUgd2l0aG91dCBleHBvc2luZyBjcmVkZW50aWFscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUHJvZmlsZShvcHRpb25zOiBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgPSB7fSk6IERhdGFicmlja3NQcm9maWxlU3VtbWFyeSB7XG4gIHJldHVybiB0b1Byb2ZpbGVTdW1tYXJ5KHJlc29sdmVEYXRhYnJpY2tzUHJvZmlsZShvcHRpb25zKSk7XG59XG5cbi8qKiBMaXN0IGNvbmZpZ3VyZWQgcHJvZmlsZXMgd2l0aG91dCBleHBvc2luZyBjcmVkZW50aWFscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0UHJvZmlsZXMob3B0aW9uczogTGlzdFByb2ZpbGVzT3B0aW9ucyA9IHt9KTogRGF0YWJyaWNrc1Byb2ZpbGVTdW1tYXJ5W10ge1xuICByZXR1cm4gbGlzdERhdGFicmlja3NQcm9maWxlcyhvcHRpb25zLmNvbmZpZ0ZpbGUsIG9wdGlvbnMucmVmcmVzaCk7XG59XG5cbmZ1bmN0aW9uIHRvUHJvZmlsZVN1bW1hcnkocHJvZmlsZTogRGF0YWJyaWNrc1Byb2ZpbGUpOiBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHByb2ZpbGUubmFtZSxcbiAgICBob3N0OiBwcm9maWxlLmhvc3QsXG4gICAgLi4uKHByb2ZpbGUuYWNjb3VudElkID8geyBhY2NvdW50SWQ6IHByb2ZpbGUuYWNjb3VudElkIH0gOiB7fSksXG4gICAgLi4uKHByb2ZpbGUud29ya3NwYWNlSWQgPyB7IHdvcmtzcGFjZUlkOiBwcm9maWxlLndvcmtzcGFjZUlkIH0gOiB7fSksXG4gICAgdGFyZ2V0OiBwcm9maWxlLnRhcmdldCxcbiAgICBhdXRoVHlwZTogcHJvZmlsZS5hdXRoVHlwZSxcbiAgICBwcmluY2lwYWw6IHByb2ZpbGUucHJpbmNpcGFsLFxuICB9O1xufVxuIl19
@@ -1 +1 @@
1
- {"root":["../src/_logging.ts","../src/_profile-core.ts","../src/_profile.ts","../src/databricks-auth.ts","../src/databricks-cli.ts","../src/errors.ts","../src/http-client.ts","../src/lifecycle.ts","../src/node-storage.ts","../src/personal-access-token.ts","../src/service-principal.ts","../src/storage.ts","../src/types.ts","../index.ts"],"version":"5.9.3"}
1
+ {"root":["../src/_databricks-cli.ts","../src/_errors.ts","../src/_lifecycle.ts","../src/_logging.ts","../src/_personal-access-token.ts","../src/_profile-config.ts","../src/_service-principal.ts","../src/_storage.ts","../src/_types.ts","../src/client.ts","../src/config.ts","../src/profile.ts","../index.ts"],"version":"5.9.3"}