@dbx-tools/auth 0.9.30 → 0.9.32
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 +3 -3
- package/lib/index.d.ts +3 -3
- package/lib/index.js +4 -4
- package/lib/src/databricks-auth.js +2 -2
- package/lib/src/{node-storage.d.ts → file-storage.d.ts} +1 -1
- package/lib/src/file-storage.js +207 -0
- package/lib/src/lifecycle.js +15 -11
- package/lib/src/storage.d.ts +12 -3
- package/lib/src/storage.js +65 -51
- package/lib/src/types.d.ts +14 -6
- package/lib/src/types.js +4 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/databricks-auth.ts +1 -1
- package/src/{node-storage.ts → file-storage.ts} +4 -4
- package/src/lifecycle.ts +14 -10
- package/src/storage.ts +81 -47
- package/src/types.ts +17 -9
- package/lib/src/node-storage.js +0 -207
package/lib/src/lifecycle.js
CHANGED
|
@@ -17,9 +17,9 @@ export class TokenLifecycle {
|
|
|
17
17
|
logger.debug("created authentication lifecycle", {
|
|
18
18
|
credential: credentialId(key),
|
|
19
19
|
storage: store.name(),
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
refreshBufferMs: options.refreshBufferMs,
|
|
21
|
+
lockTimeoutMs: options.lockTimeoutMs,
|
|
22
|
+
loginTimeoutMs: options.loginTimeoutMs,
|
|
23
23
|
silentProvider: provider.canAuthenticateSilently(),
|
|
24
24
|
});
|
|
25
25
|
}
|
|
@@ -30,7 +30,7 @@ export class TokenLifecycle {
|
|
|
30
30
|
logger.debug("interactive login requested", this.context());
|
|
31
31
|
return this.withLock(async () => {
|
|
32
32
|
await this.store.prepareWrite();
|
|
33
|
-
const token = validateToken(await this.provider.login(this.options.
|
|
33
|
+
const token = validateToken(await this.provider.login(this.options.loginTimeoutMs));
|
|
34
34
|
await this.store.save(this.key, token);
|
|
35
35
|
logger.debug("interactive login stored credential", {
|
|
36
36
|
...this.context(),
|
|
@@ -126,7 +126,7 @@ export class TokenLifecycle {
|
|
|
126
126
|
if (!login)
|
|
127
127
|
throw error;
|
|
128
128
|
logger.debug("falling back to interactive login", this.context());
|
|
129
|
-
token = await this.provider.login(this.options.
|
|
129
|
+
token = await this.provider.login(this.options.loginTimeoutMs);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
else if (this.provider.canAuthenticateSilently()) {
|
|
@@ -135,7 +135,7 @@ export class TokenLifecycle {
|
|
|
135
135
|
loginFallback: login,
|
|
136
136
|
});
|
|
137
137
|
try {
|
|
138
|
-
token = await this.provider.authenticate(this.options.
|
|
138
|
+
token = await this.provider.authenticate(this.options.loginTimeoutMs);
|
|
139
139
|
}
|
|
140
140
|
catch (error) {
|
|
141
141
|
logger.debug("silent credential acquisition failed", {
|
|
@@ -146,12 +146,12 @@ export class TokenLifecycle {
|
|
|
146
146
|
if (!login)
|
|
147
147
|
throw error;
|
|
148
148
|
logger.debug("falling back to interactive login", this.context());
|
|
149
|
-
token = await this.provider.login(this.options.
|
|
149
|
+
token = await this.provider.login(this.options.loginTimeoutMs);
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
else if (login) {
|
|
153
153
|
logger.debug("provider requires interactive login", this.context());
|
|
154
|
-
token = await this.provider.login(this.options.
|
|
154
|
+
token = await this.provider.login(this.options.loginTimeoutMs);
|
|
155
155
|
}
|
|
156
156
|
else {
|
|
157
157
|
throw new AuthError("oauth", "No stored credential is available and interactive login is disabled");
|
|
@@ -171,11 +171,15 @@ export class TokenLifecycle {
|
|
|
171
171
|
return false;
|
|
172
172
|
if (!token.expiry)
|
|
173
173
|
return true;
|
|
174
|
-
return (Date.parse(token.expiry) - this.now().getTime() > this.options.
|
|
174
|
+
return (Date.parse(token.expiry) - this.now().getTime() > this.options.refreshBufferMs);
|
|
175
175
|
}
|
|
176
176
|
async withLock(action) {
|
|
177
177
|
logger.debug("waiting for credential lock", this.context());
|
|
178
|
-
|
|
178
|
+
// Omit the timeout (wait indefinitely) unless a positive cap is configured.
|
|
179
|
+
// The holder may run for minutes; the caller owns the overall request budget
|
|
180
|
+
// and the lock is always released when `action` settles (success or error).
|
|
181
|
+
const lockTimeoutMs = this.options.lockTimeoutMs > 0 ? this.options.lockTimeoutMs : undefined;
|
|
182
|
+
const lease = await this.store.acquireLock(this.key, lockTimeoutMs);
|
|
179
183
|
logger.debug("credential lock acquired", this.context());
|
|
180
184
|
let failure;
|
|
181
185
|
try {
|
|
@@ -226,4 +230,4 @@ export function validateToken(token, previous) {
|
|
|
226
230
|
function isValid(token, now) {
|
|
227
231
|
return Boolean(token.accessToken) && (!token.expiry || Date.parse(token.expiry) > now.getTime());
|
|
228
232
|
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpZmVjeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekYsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLHVGQUF1RjtBQUN2RixNQUFNLE9BQU8sY0FBYztJQUVOO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFMbkIsWUFDbUIsR0FBVyxFQUNYLFFBQXVCLEVBQ3ZCLEtBQXNCLEVBQ3RCLE9BQW9CLEVBQ3BCLE1BQWtCLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO1FBSmxDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBK0I7UUFFbkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRTtZQUMvQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUM3QixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixvQkFBb0IsRUFBRSxPQUFPLENBQUMsb0JBQW9CO1lBQ2xELGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7WUFDOUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtZQUNoRCxjQUFjLEVBQUUsUUFBUSxDQUFDLHVCQUF1QixFQUFFO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQ3pCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FDbkUsQ0FBQztZQUNGLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxFQUFFO2dCQUNsRCxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4QyxDQUFDLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQWU7UUFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEMsSUFBSSxLQUFLLEtBQUssS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZ0JBQXdCLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBYztRQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1lBQ3ZDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixLQUFLO1lBQ0wsUUFBUTtZQUNSLEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMzQyxDQUFDLENBQUM7UUFDSCxJQUFJLFFBQVEsSUFBSSxRQUFRO1lBQUUsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUU7Z0JBQ3BELEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUMxQyxDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sSUFBSSxlQUFlO2dCQUFFLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FDM0IsZ0JBQW9DLEVBQ3BDLEtBQWM7UUFFZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEQsSUFDRSxnQkFBZ0I7Z0JBQ2hCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixPQUFPLENBQUMsV0FBVyxLQUFLLGdCQUFnQjtnQkFDeEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDNUIsQ0FBQztnQkFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxFQUFFO29CQUN6RCxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDMUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBMEIsRUFBRSxLQUFjO1FBQzVELElBQUksS0FBWSxDQUFDO1FBQ2pCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFO2dCQUMzQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixLQUFLLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDMUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUU7b0JBQ3hDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDakIsYUFBYSxFQUFFLEtBQUs7b0JBQ3BCLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDO2lCQUM5QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEtBQUs7b0JBQUUsTUFBTSxLQUFLLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUU7Z0JBQ3ZELEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRTtvQkFDbkQsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqQixhQUFhLEVBQUUsS0FBSztvQkFDcEIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUM7aUJBQzlCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsS0FBSztvQkFBRSxNQUFNLEtBQUssQ0FBQztnQkFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDbEUsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNwRSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzdFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLFNBQVMsQ0FDakIsT0FBTyxFQUNQLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUU7WUFDL0MsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN4QyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFZO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQy9CLE9BQU8sQ0FDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBSSxNQUF3QjtRQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzdGLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFnQixDQUFDO1FBQ3JCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxNQUFNLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQUMsT0FBTyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRTtvQkFDN0MsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqQixLQUFLLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQztpQkFDckMsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTyxLQUFLLFNBQVM7b0JBQUUsTUFBTSxZQUFZLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTztRQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBWTtJQUN0QyxPQUFPO1FBQ0wsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFZLEVBQUUsUUFBZ0I7SUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO1FBQzNCLE1BQU0sSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7SUFDakYsT0FBTztRQUNMLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxRQUFRO1FBQ3RDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLFFBQVEsRUFBRSxZQUFZO1FBQzFELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7S0FDaEYsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxLQUFZLEVBQUUsR0FBUztJQUN0QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhFcnJvciB9IGZyb20gXCIuL2Vycm9ycy50c1wiO1xuaW1wb3J0IHsgYXV0aExvZ2dlciwgY3JlZGVudGlhbElkLCBmYWlsdXJlTWV0YWRhdGEsIHRva2VuTWV0YWRhdGEgfSBmcm9tIFwiLi9fbG9nZ2luZy50c1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NUb2tlbiwgQXV0aE9wdGlvbnMsIENyZWRlbnRpYWxTdG9yZSwgVG9rZW4sIFRva2VuUHJvdmlkZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBhdXRoTG9nZ2VyKFwibGlmZWN5Y2xlXCIpO1xuXG4vKiogUHJvdmlkZXItbmV1dHJhbCBjaGVjay1sb2NrLWNoZWNrIGF1dGhlbnRpY2F0aW9uIGFuZCBwZXJzaXN0ZW50IHRva2VuIGxpZmVjeWNsZS4gKi9cbmV4cG9ydCBjbGFzcyBUb2tlbkxpZmVjeWNsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogVG9rZW5Qcm92aWRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBDcmVkZW50aWFsU3RvcmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBBdXRoT3B0aW9ucyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdzogKCkgPT4gRGF0ZSA9ICgpID0+IG5ldyBEYXRlKCksXG4gICkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNyZWF0ZWQgYXV0aGVudGljYXRpb24gbGlmZWN5Y2xlXCIsIHtcbiAgICAgIGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChrZXkpLFxuICAgICAgc3RvcmFnZTogc3RvcmUubmFtZSgpLFxuICAgICAgcmVmcmVzaEJ1ZmZlclNlY29uZHM6IG9wdGlvbnMucmVmcmVzaEJ1ZmZlclNlY29uZHMsXG4gICAgICBsb2NrVGltZW91dFNlY29uZHM6IG9wdGlvbnMubG9ja1RpbWVvdXRTZWNvbmRzLFxuICAgICAgbG9naW5UaW1lb3V0U2Vjb25kczogb3B0aW9ucy5sb2dpblRpbWVvdXRTZWNvbmRzLFxuICAgICAgc2lsZW50UHJvdmlkZXI6IHByb3ZpZGVyLmNhbkF1dGhlbnRpY2F0ZVNpbGVudGx5KCksXG4gICAgfSk7XG4gIH1cblxuICBzdG9yZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5uYW1lKCk7XG4gIH1cblxuICBhc3luYyBsb2dpbigpOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiaW50ZXJhY3RpdmUgbG9naW4gcmVxdWVzdGVkXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICByZXR1cm4gdGhpcy53aXRoTG9jayhhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JlLnByZXBhcmVXcml0ZSgpO1xuICAgICAgY29uc3QgdG9rZW4gPSB2YWxpZGF0ZVRva2VuKFxuICAgICAgICBhd2FpdCB0aGlzLnByb3ZpZGVyLmxvZ2luKHRoaXMub3B0aW9ucy5sb2dpblRpbWVvdXRTZWNvbmRzICogMTAwMCksXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5zdG9yZS5zYXZlKHRoaXMua2V5LCB0b2tlbik7XG4gICAgICBsb2dnZXIuZGVidWcoXCJpbnRlcmFjdGl2ZSBsb2dpbiBzdG9yZWQgY3JlZGVudGlhbFwiLCB7XG4gICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YSh0b2tlbiwgdGhpcy5ub3coKSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwdWJsaWNUb2tlbih0b2tlbik7XG4gICAgfSk7XG4gIH1cblxuICB0b2tlbigpOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFRva2VuKGZhbHNlKTtcbiAgfVxuXG4gIHRva2VuT3JMb2dpbigpOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFRva2VuKHRydWUpO1xuICB9XG5cbiAgYXN5bmMgdG9rZW5XaXRoTG9naW4obG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInRva2VuIHJlcXVlc3RlZFwiLCB7IC4uLnRoaXMuY29udGV4dCgpLCBsb2dpbjogbG9naW4gPz8gXCJhdXRvXCIgfSk7XG4gICAgaWYgKGxvZ2luID09PSB0cnVlKSByZXR1cm4gdGhpcy5sb2dpbigpO1xuICAgIGlmIChsb2dpbiA9PT0gZmFsc2UpIHJldHVybiB0aGlzLnRva2VuKCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5PckxvZ2luKCk7XG4gIH1cblxuICBmb3JjZVJlZnJlc2gobG9naW4gPSB0cnVlKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImZvcmNlZCByZWZyZXNoIHJlcXVlc3RlZFwiLCB7IC4uLnRoaXMuY29udGV4dCgpLCBsb2dpbiB9KTtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoUmVqZWN0ZWQodW5kZWZpbmVkLCBsb2dpbik7XG4gIH1cblxuICByZWZyZXNoUmVqZWN0ZWRUb2tlbihzdGFsZUFjY2Vzc1Rva2VuOiBzdHJpbmcsIGxvZ2luID0gdHJ1ZSk6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJyZWplY3RlZCB0b2tlbiByZWZyZXNoIHJlcXVlc3RlZFwiLCB7IC4uLnRoaXMuY29udGV4dCgpLCBsb2dpbiB9KTtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoUmVqZWN0ZWQoc3RhbGVBY2Nlc3NUb2tlbiwgbG9naW4pO1xuICB9XG5cbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImxvZ291dCByZXF1ZXN0ZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIGF3YWl0IHRoaXMud2l0aExvY2soKCkgPT4gdGhpcy5zdG9yZS5yZW1vdmUodGhpcy5rZXkpKTtcbiAgICBsb2dnZXIuZGVidWcoXCJzdG9yZWQgY3JlZGVudGlhbCByZW1vdmVkXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFRva2VuKGxvZ2luOiBib29sZWFuKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5zdG9yZS5sb2FkKHRoaXMua2V5KTtcbiAgICBjb25zdCByZXVzYWJsZSA9IEJvb2xlYW4oZXhpc3RpbmcgJiYgdGhpcy5jYW5SZXVzZShleGlzdGluZykpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNoZWNrZWQgY3JlZGVudGlhbCBjYWNoZVwiLCB7XG4gICAgICAuLi50aGlzLmNvbnRleHQoKSxcbiAgICAgIGxvZ2luLFxuICAgICAgcmV1c2FibGUsXG4gICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YShleGlzdGluZywgdGhpcy5ub3coKSksXG4gICAgfSk7XG4gICAgaWYgKGV4aXN0aW5nICYmIHJldXNhYmxlKSByZXR1cm4gcHVibGljVG9rZW4oZXhpc3RpbmcpO1xuICAgIHJldHVybiB0aGlzLndpdGhMb2NrKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLnN0b3JlLmxvYWQodGhpcy5rZXkpO1xuICAgICAgY29uc3QgY3VycmVudFJldXNhYmxlID0gQm9vbGVhbihjdXJyZW50ICYmIHRoaXMuY2FuUmV1c2UoY3VycmVudCkpO1xuICAgICAgbG9nZ2VyLmRlYnVnKFwicmVjaGVja2VkIGNyZWRlbnRpYWwgY2FjaGUgYWZ0ZXIgbG9ja1wiLCB7XG4gICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICByZXVzYWJsZTogY3VycmVudFJldXNhYmxlLFxuICAgICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YShjdXJyZW50LCB0aGlzLm5vdygpKSxcbiAgICAgIH0pO1xuICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFJldXNhYmxlKSByZXR1cm4gcHVibGljVG9rZW4oY3VycmVudCk7XG4gICAgICByZXR1cm4gdGhpcy5yZW5ldyhjdXJyZW50LCBsb2dpbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hSZWplY3RlZChcbiAgICBzdGFsZUFjY2Vzc1Rva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbG9naW46IGJvb2xlYW4sXG4gICk6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICByZXR1cm4gdGhpcy53aXRoTG9jayhhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgdGhpcy5zdG9yZS5sb2FkKHRoaXMua2V5KTtcbiAgICAgIGlmIChcbiAgICAgICAgc3RhbGVBY2Nlc3NUb2tlbiAmJlxuICAgICAgICBjdXJyZW50Py5hY2Nlc3NUb2tlbiAmJlxuICAgICAgICBjdXJyZW50LmFjY2Vzc1Rva2VuICE9PSBzdGFsZUFjY2Vzc1Rva2VuICYmXG4gICAgICAgIGlzVmFsaWQoY3VycmVudCwgdGhpcy5ub3coKSlcbiAgICAgICkge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyZXVzZWQgcmVwbGFjZW1lbnQgZm9yIHJlamVjdGVkIGNyZWRlbnRpYWxcIiwge1xuICAgICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKGN1cnJlbnQsIHRoaXMubm93KCkpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHB1YmxpY1Rva2VuKGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZXcoY3VycmVudCwgbG9naW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZW5ldyhjdXJyZW50OiBUb2tlbiB8IHVuZGVmaW5lZCwgbG9naW46IGJvb2xlYW4pOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgbGV0IHRva2VuOiBUb2tlbjtcbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwicmVmcmVzaGluZyBzdG9yZWQgY3JlZGVudGlhbFwiLCB7XG4gICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICBsb2dpbkZhbGxiYWNrOiBsb2dpbixcbiAgICAgICAgdG9rZW46IHRva2VuTWV0YWRhdGEoY3VycmVudCwgdGhpcy5ub3coKSksXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRva2VuID0gYXdhaXQgdGhpcy5wcm92aWRlci5yZWZyZXNoKGN1cnJlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiY3JlZGVudGlhbCByZWZyZXNoIGZhaWxlZFwiLCB7XG4gICAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgICAgbG9naW5GYWxsYmFjazogbG9naW4sXG4gICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXRhZGF0YShlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWxvZ2luKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiZmFsbGluZyBiYWNrIHRvIGludGVyYWN0aXZlIGxvZ2luXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICAgICAgdG9rZW4gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmxvZ2luKHRoaXMub3B0aW9ucy5sb2dpblRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3ZpZGVyLmNhbkF1dGhlbnRpY2F0ZVNpbGVudGx5KCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImF0dGVtcHRpbmcgc2lsZW50IGNyZWRlbnRpYWwgYWNxdWlzaXRpb25cIiwge1xuICAgICAgICAuLi50aGlzLmNvbnRleHQoKSxcbiAgICAgICAgbG9naW5GYWxsYmFjazogbG9naW4sXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRva2VuID0gYXdhaXQgdGhpcy5wcm92aWRlci5hdXRoZW50aWNhdGUodGhpcy5vcHRpb25zLmxvZ2luVGltZW91dFNlY29uZHMgKiAxMDAwKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcInNpbGVudCBjcmVkZW50aWFsIGFjcXVpc2l0aW9uIGZhaWxlZFwiLCB7XG4gICAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgICAgbG9naW5GYWxsYmFjazogbG9naW4sXG4gICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXRhZGF0YShlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWxvZ2luKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiZmFsbGluZyBiYWNrIHRvIGludGVyYWN0aXZlIGxvZ2luXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICAgICAgdG9rZW4gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmxvZ2luKHRoaXMub3B0aW9ucy5sb2dpblRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsb2dpbikge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwicHJvdmlkZXIgcmVxdWlyZXMgaW50ZXJhY3RpdmUgbG9naW5cIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgICAgdG9rZW4gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmxvZ2luKHRoaXMub3B0aW9ucy5sb2dpblRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBBdXRoRXJyb3IoXG4gICAgICAgIFwib2F1dGhcIixcbiAgICAgICAgXCJObyBzdG9yZWQgY3JlZGVudGlhbCBpcyBhdmFpbGFibGUgYW5kIGludGVyYWN0aXZlIGxvZ2luIGlzIGRpc2FibGVkXCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0b2tlbiA9IHZhbGlkYXRlVG9rZW4odG9rZW4sIGN1cnJlbnQpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNyZWRlbnRpYWwgYWNxdWlzaXRpb24gY29tcGxldGVkXCIsIHtcbiAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgdG9rZW46IHRva2VuTWV0YWRhdGEodG9rZW4sIHRoaXMubm93KCkpLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuc3RvcmUucHJlcGFyZVdyaXRlKCk7XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5zYXZlKHRoaXMua2V5LCB0b2tlbik7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlZGVudGlhbCBzYXZlZFwiLCB0aGlzLmNvbnRleHQoKSk7XG4gICAgcmV0dXJuIHB1YmxpY1Rva2VuKHRva2VuKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUmV1c2UodG9rZW46IFRva2VuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1ZhbGlkKHRva2VuLCB0aGlzLm5vdygpKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghdG9rZW4uZXhwaXJ5KSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgRGF0ZS5wYXJzZSh0b2tlbi5leHBpcnkpIC0gdGhpcy5ub3coKS5nZXRUaW1lKCkgPiB0aGlzLm9wdGlvbnMucmVmcmVzaEJ1ZmZlclNlY29uZHMgKiAxMDAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2l0aExvY2s8VD4oYWN0aW9uOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwid2FpdGluZyBmb3IgY3JlZGVudGlhbCBsb2NrXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICBjb25zdCBsZWFzZSA9IGF3YWl0IHRoaXMuc3RvcmUuYWNxdWlyZUxvY2sodGhpcy5rZXksIHRoaXMub3B0aW9ucy5sb2NrVGltZW91dFNlY29uZHMgKiAxMDAwKTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIGxvY2sgYWNxdWlyZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIGxldCBmYWlsdXJlOiB1bmtub3duO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGZhaWx1cmUgPSBlcnJvcjtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JlLnJlbGVhc2VMb2NrKGxlYXNlKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiY3JlZGVudGlhbCBsb2NrIHJlbGVhc2VkXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICAgIH0gY2F0Y2ggKHJlbGVhc2VFcnJvcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIGxvY2sgcmVsZWFzZSBmYWlsZWRcIiwge1xuICAgICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWV0YWRhdGEocmVsZWFzZUVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSB1bmRlZmluZWQpIHRocm93IHJlbGVhc2VFcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnRleHQoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB7IGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZCh0aGlzLmtleSksIHN0b3JhZ2U6IHRoaXMuc3RvcmUubmFtZSgpIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1YmxpY1Rva2VuKHRva2VuOiBUb2tlbik6IEFjY2Vzc1Rva2VuIHtcbiAgcmV0dXJuIHtcbiAgICBhY2Nlc3NUb2tlbjogdG9rZW4uYWNjZXNzVG9rZW4sXG4gICAgdG9rZW5UeXBlOiB0b2tlbi50b2tlblR5cGUsXG4gICAgLi4uKHRva2VuLmV4cGlyeSA/IHsgZXhwaXJ5OiB0b2tlbi5leHBpcnkgfSA6IHt9KSxcbiAgICBzY29wZXM6IFsuLi50b2tlbi5zY29wZXNdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbih0b2tlbjogVG9rZW4sIHByZXZpb3VzPzogVG9rZW4pOiBUb2tlbiB7XG4gIGlmICghdG9rZW4uYWNjZXNzVG9rZW4udHJpbSgpKVxuICAgIHRocm93IG5ldyBBdXRoRXJyb3IoXCJvYXV0aFwiLCBcIlRva2VuIHJlc3BvbnNlIGRpZCBub3QgY29udGFpbiBhbiBhY2Nlc3MgdG9rZW5cIik7XG4gIHJldHVybiB7XG4gICAgYWNjZXNzVG9rZW46IHRva2VuLmFjY2Vzc1Rva2VuLFxuICAgIHRva2VuVHlwZTogdG9rZW4udG9rZW5UeXBlIHx8IFwiQmVhcmVyXCIsXG4gICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoVG9rZW4gPz8gcHJldmlvdXM/LnJlZnJlc2hUb2tlbixcbiAgICBleHBpcnk6IHRva2VuLmV4cGlyeSxcbiAgICBzY29wZXM6IHRva2VuLnNjb3Blcy5sZW5ndGggPyBbLi4udG9rZW4uc2NvcGVzXSA6IFsuLi4ocHJldmlvdXM/LnNjb3BlcyA/PyBbXSldLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkKHRva2VuOiBUb2tlbiwgbm93OiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHRva2VuLmFjY2Vzc1Rva2VuKSAmJiAoIXRva2VuLmV4cGlyeSB8fCBEYXRlLnBhcnNlKHRva2VuLmV4cGlyeSkgPiBub3cuZ2V0VGltZSgpKTtcbn1cbiJdfQ==
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpZmVjeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekYsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLHVGQUF1RjtBQUN2RixNQUFNLE9BQU8sY0FBYztJQUVOO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFMbkIsWUFDbUIsR0FBVyxFQUNYLFFBQXVCLEVBQ3ZCLEtBQXNCLEVBQ3RCLE9BQW9CLEVBQ3BCLE1BQWtCLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO1FBSmxDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBK0I7UUFFbkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRTtZQUMvQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUM3QixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxjQUFjLEVBQUUsUUFBUSxDQUFDLHVCQUF1QixFQUFFO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMs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QVE7UUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksUUFBUSxFQUFFLFlBQVk7UUFDMUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNoRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLEtBQVksRUFBRSxHQUFTO0lBQ3RDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNuRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLnRzXCI7XG5pbXBvcnQgeyBhdXRoTG9nZ2VyLCBjcmVkZW50aWFsSWQsIGZhaWx1cmVNZXRhZGF0YSwgdG9rZW5NZXRhZGF0YSB9IGZyb20gXCIuL19sb2dnaW5nLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2Vzc1Rva2VuLCBBdXRoT3B0aW9ucywgQ3JlZGVudGlhbFN0b3JlLCBUb2tlbiwgVG9rZW5Qcm92aWRlciB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGF1dGhMb2dnZXIoXCJsaWZlY3ljbGVcIik7XG5cbi8qKiBQcm92aWRlci1uZXV0cmFsIGNoZWNrLWxvY2stY2hlY2sgYXV0aGVudGljYXRpb24gYW5kIHBlcnNpc3RlbnQgdG9rZW4gbGlmZWN5Y2xlLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuTGlmZWN5Y2xlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXk6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IENyZWRlbnRpYWxTdG9yZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEF1dGhPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm93OiAoKSA9PiBEYXRlID0gKCkgPT4gbmV3IERhdGUoKSxcbiAgKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlYXRlZCBhdXRoZW50aWNhdGlvbiBsaWZlY3ljbGVcIiwge1xuICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbElkKGtleSksXG4gICAgICBzdG9yYWdlOiBzdG9yZS5uYW1lKCksXG4gICAgICByZWZyZXNoQnVmZmVyTXM6IG9wdGlvbnMucmVmcmVzaEJ1ZmZlck1zLFxuICAgICAgbG9ja1RpbWVvdXRNczogb3B0aW9ucy5sb2NrVGltZW91dE1zLFxuICAgICAgbG9naW5UaW1lb3V0TXM6IG9wdGlvbnMubG9naW5UaW1lb3V0TXMsXG4gICAgICBzaWxlbnRQcm92aWRlcjogcHJvdmlkZXIuY2FuQXV0aGVudGljYXRlU2lsZW50bHkoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0b3JlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLm5hbWUoKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKCk6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJpbnRlcmFjdGl2ZSBsb2dpbiByZXF1ZXN0ZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIHJldHVybiB0aGlzLndpdGhMb2NrKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmUucHJlcGFyZVdyaXRlKCk7XG4gICAgICBjb25zdCB0b2tlbiA9IHZhbGlkYXRlVG9rZW4oXG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIubG9naW4odGhpcy5vcHRpb25zLmxvZ2luVGltZW91dE1zKSxcbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JlLnNhdmUodGhpcy5rZXksIHRva2VuKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImludGVyYWN0aXZlIGxvZ2luIHN0b3JlZCBjcmVkZW50aWFsXCIsIHtcbiAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKHRva2VuLCB0aGlzLm5vdygpKSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHB1YmxpY1Rva2VuKHRva2VuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRva2VuKCk6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkVG9rZW4oZmFsc2UpO1xuICB9XG5cbiAgdG9rZW5PckxvZ2luKCk6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkVG9rZW4odHJ1ZSk7XG4gIH1cblxuICBhc3luYyB0b2tlbldpdGhMb2dpbihsb2dpbj86IGJvb2xlYW4pOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwidG9rZW4gcmVxdWVzdGVkXCIsIHsgLi4udGhpcy5jb250ZXh0KCksIGxvZ2luOiBsb2dpbiA/PyBcImF1dG9cIiB9KTtcbiAgICBpZiAobG9naW4gPT09IHRydWUpIHJldHVybiB0aGlzLmxvZ2luKCk7XG4gICAgaWYgKGxvZ2luID09PSBmYWxzZSkgcmV0dXJuIHRoaXMudG9rZW4oKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbk9yTG9naW4oKTtcbiAgfVxuXG4gIGZvcmNlUmVmcmVzaChsb2dpbiA9IHRydWUpOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiZm9yY2VkIHJlZnJlc2ggcmVxdWVzdGVkXCIsIHsgLi4udGhpcy5jb250ZXh0KCksIGxvZ2luIH0pO1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hSZWplY3RlZCh1bmRlZmluZWQsIGxvZ2luKTtcbiAgfVxuXG4gIHJlZnJlc2hSZWplY3RlZFRva2VuKHN0YWxlQWNjZXNzVG9rZW46IHN0cmluZywgbG9naW4gPSB0cnVlKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlamVjdGVkIHRva2VuIHJlZnJlc2ggcmVxdWVzdGVkXCIsIHsgLi4udGhpcy5jb250ZXh0KCksIGxvZ2luIH0pO1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hSZWplY3RlZChzdGFsZUFjY2Vzc1Rva2VuLCBsb2dpbik7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwibG9nb3V0IHJlcXVlc3RlZFwiLCB0aGlzLmNvbnRleHQoKSk7XG4gICAgYXdhaXQgdGhpcy53aXRoTG9jaygoKSA9PiB0aGlzLnN0b3JlLnJlbW92ZSh0aGlzLmtleSkpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInN0b3JlZCBjcmVkZW50aWFsIHJlbW92ZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkVG9rZW4obG9naW46IGJvb2xlYW4pOiBQcm9taXNlPEFjY2Vzc1Rva2VuPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLnN0b3JlLmxvYWQodGhpcy5rZXkpO1xuICAgIGNvbnN0IHJldXNhYmxlID0gQm9vbGVhbihleGlzdGluZyAmJiB0aGlzLmNhblJldXNlKGV4aXN0aW5nKSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY2hlY2tlZCBjcmVkZW50aWFsIGNhY2hlXCIsIHtcbiAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgbG9naW4sXG4gICAgICByZXVzYWJsZSxcbiAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKGV4aXN0aW5nLCB0aGlzLm5vdygpKSxcbiAgICB9KTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgcmV1c2FibGUpIHJldHVybiBwdWJsaWNUb2tlbihleGlzdGluZyk7XG4gICAgcmV0dXJuIHRoaXMud2l0aExvY2soYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHRoaXMuc3RvcmUubG9hZCh0aGlzLmtleSk7XG4gICAgICBjb25zdCBjdXJyZW50UmV1c2FibGUgPSBCb29sZWFuKGN1cnJlbnQgJiYgdGhpcy5jYW5SZXVzZShjdXJyZW50KSk7XG4gICAgICBsb2dnZXIuZGVidWcoXCJyZWNoZWNrZWQgY3JlZGVudGlhbCBjYWNoZSBhZnRlciBsb2NrXCIsIHtcbiAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgIHJldXNhYmxlOiBjdXJyZW50UmV1c2FibGUsXG4gICAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKGN1cnJlbnQsIHRoaXMubm93KCkpLFxuICAgICAgfSk7XG4gICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50UmV1c2FibGUpIHJldHVybiBwdWJsaWNUb2tlbihjdXJyZW50KTtcbiAgICAgIHJldHVybiB0aGlzLnJlbmV3KGN1cnJlbnQsIGxvZ2luKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFJlamVjdGVkKFxuICAgIHN0YWxlQWNjZXNzVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBsb2dpbjogYm9vbGVhbixcbiAgKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj4ge1xuICAgIHJldHVybiB0aGlzLndpdGhMb2NrKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLnN0b3JlLmxvYWQodGhpcy5rZXkpO1xuICAgICAgaWYgKFxuICAgICAgICBzdGFsZUFjY2Vzc1Rva2VuICYmXG4gICAgICAgIGN1cnJlbnQ/LmFjY2Vzc1Rva2VuICYmXG4gICAgICAgIGN1cnJlbnQuYWNjZXNzVG9rZW4gIT09IHN0YWxlQWNjZXNzVG9rZW4gJiZcbiAgICAgICAgaXNWYWxpZChjdXJyZW50LCB0aGlzLm5vdygpKVxuICAgICAgKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcInJldXNlZCByZXBsYWNlbWVudCBmb3IgcmVqZWN0ZWQgY3JlZGVudGlhbFwiLCB7XG4gICAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgICAgdG9rZW46IHRva2VuTWV0YWRhdGEoY3VycmVudCwgdGhpcy5ub3coKSksXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHVibGljVG9rZW4oY3VycmVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5yZW5ldyhjdXJyZW50LCBsb2dpbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbmV3KGN1cnJlbnQ6IFRva2VuIHwgdW5kZWZpbmVkLCBsb2dpbjogYm9vbGVhbik6IFByb21pc2U8QWNjZXNzVG9rZW4+IHtcbiAgICBsZXQgdG9rZW46IFRva2VuO1xuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJyZWZyZXNoaW5nIHN0b3JlZCBjcmVkZW50aWFsXCIsIHtcbiAgICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICAgIGxvZ2luRmFsbGJhY2s6IGxvZ2luLFxuICAgICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YShjdXJyZW50LCB0aGlzLm5vdygpKSxcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdG9rZW4gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLnJlZnJlc2goY3VycmVudCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIHJlZnJlc2ggZmFpbGVkXCIsIHtcbiAgICAgICAgICAuLi50aGlzLmNvbnRleHQoKSxcbiAgICAgICAgICBsb2dpbkZhbGxiYWNrOiBsb2dpbixcbiAgICAgICAgICBlcnJvcjogZmFpbHVyZU1ldGFkYXRhKGVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghbG9naW4pIHRocm93IGVycm9yO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJmYWxsaW5nIGJhY2sgdG8gaW50ZXJhY3RpdmUgbG9naW5cIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgICAgICB0b2tlbiA9IGF3YWl0IHRoaXMucHJvdmlkZXIubG9naW4odGhpcy5vcHRpb25zLmxvZ2luVGltZW91dE1zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvdmlkZXIuY2FuQXV0aGVudGljYXRlU2lsZW50bHkoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiYXR0ZW1wdGluZyBzaWxlbnQgY3JlZGVudGlhbCBhY3F1aXNpdGlvblwiLCB7XG4gICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICBsb2dpbkZhbGxiYWNrOiBsb2dpbixcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdG9rZW4gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmF1dGhlbnRpY2F0ZSh0aGlzLm9wdGlvbnMubG9naW5UaW1lb3V0TXMpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwic2lsZW50IGNyZWRlbnRpYWwgYWNxdWlzaXRpb24gZmFpbGVkXCIsIHtcbiAgICAgICAgICAuLi50aGlzLmNvbnRleHQoKSxcbiAgICAgICAgICBsb2dpbkZhbGxiYWNrOiBsb2dpbixcbiAgICAgICAgICBlcnJvcjogZmFpbHVyZU1ldGFkYXRhKGVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghbG9naW4pIHRocm93IGVycm9yO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJmYWxsaW5nIGJhY2sgdG8gaW50ZXJhY3RpdmUgbG9naW5cIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgICAgICB0b2tlbiA9IGF3YWl0IHRoaXMucHJvdmlkZXIubG9naW4odGhpcy5vcHRpb25zLmxvZ2luVGltZW91dE1zKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvZ2luKSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJwcm92aWRlciByZXF1aXJlcyBpbnRlcmFjdGl2ZSBsb2dpblwiLCB0aGlzLmNvbnRleHQoKSk7XG4gICAgICB0b2tlbiA9IGF3YWl0IHRoaXMucHJvdmlkZXIubG9naW4odGhpcy5vcHRpb25zLmxvZ2luVGltZW91dE1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEF1dGhFcnJvcihcbiAgICAgICAgXCJvYXV0aFwiLFxuICAgICAgICBcIk5vIHN0b3JlZCBjcmVkZW50aWFsIGlzIGF2YWlsYWJsZSBhbmQgaW50ZXJhY3RpdmUgbG9naW4gaXMgZGlzYWJsZWRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRva2VuID0gdmFsaWRhdGVUb2tlbih0b2tlbiwgY3VycmVudCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiY3JlZGVudGlhbCBhY3F1aXNpdGlvbiBjb21wbGV0ZWRcIiwge1xuICAgICAgLi4udGhpcy5jb250ZXh0KCksXG4gICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YSh0b2tlbiwgdGhpcy5ub3coKSksXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5wcmVwYXJlV3JpdGUoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3JlLnNhdmUodGhpcy5rZXksIHRva2VuKTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIHNhdmVkXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICByZXR1cm4gcHVibGljVG9rZW4odG9rZW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZXVzZSh0b2tlbjogVG9rZW4pOiBib29sZWFuIHtcbiAgICBpZiAoIWlzVmFsaWQodG9rZW4sIHRoaXMubm93KCkpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCF0b2tlbi5leHBpcnkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiAoXG4gICAgICBEYXRlLnBhcnNlKHRva2VuLmV4cGlyeSkgLSB0aGlzLm5vdygpLmdldFRpbWUoKSA+IHRoaXMub3B0aW9ucy5yZWZyZXNoQnVmZmVyTXNcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3aXRoTG9jazxUPihhY3Rpb246ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJ3YWl0aW5nIGZvciBjcmVkZW50aWFsIGxvY2tcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIC8vIE9taXQgdGhlIHRpbWVvdXQgKHdhaXQgaW5kZWZpbml0ZWx5KSB1bmxlc3MgYSBwb3NpdGl2ZSBjYXAgaXMgY29uZmlndXJlZC5cbiAgICAvLyBUaGUgaG9sZGVyIG1heSBydW4gZm9yIG1pbnV0ZXM7IHRoZSBjYWxsZXIgb3ducyB0aGUgb3ZlcmFsbCByZXF1ZXN0IGJ1ZGdldFxuICAgIC8vIGFuZCB0aGUgbG9jayBpcyBhbHdheXMgcmVsZWFzZWQgd2hlbiBgYWN0aW9uYCBzZXR0bGVzIChzdWNjZXNzIG9yIGVycm9yKS5cbiAgICBjb25zdCBsb2NrVGltZW91dE1zID0gdGhpcy5vcHRpb25zLmxvY2tUaW1lb3V0TXMgPiAwID8gdGhpcy5vcHRpb25zLmxvY2tUaW1lb3V0TXMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGVhc2UgPSBhd2FpdCB0aGlzLnN0b3JlLmFjcXVpcmVMb2NrKHRoaXMua2V5LCBsb2NrVGltZW91dE1zKTtcbiAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIGxvY2sgYWNxdWlyZWRcIiwgdGhpcy5jb250ZXh0KCkpO1xuICAgIGxldCBmYWlsdXJlOiB1bmtub3duO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGZhaWx1cmUgPSBlcnJvcjtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JlLnJlbGVhc2VMb2NrKGxlYXNlKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiY3JlZGVudGlhbCBsb2NrIHJlbGVhc2VkXCIsIHRoaXMuY29udGV4dCgpKTtcbiAgICAgIH0gY2F0Y2ggKHJlbGVhc2VFcnJvcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJjcmVkZW50aWFsIGxvY2sgcmVsZWFzZSBmYWlsZWRcIiwge1xuICAgICAgICAgIC4uLnRoaXMuY29udGV4dCgpLFxuICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWV0YWRhdGEocmVsZWFzZUVycm9yKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSB1bmRlZmluZWQpIHRocm93IHJlbGVhc2VFcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnRleHQoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB7IGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZCh0aGlzLmtleSksIHN0b3JhZ2U6IHRoaXMuc3RvcmUubmFtZSgpIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1YmxpY1Rva2VuKHRva2VuOiBUb2tlbik6IEFjY2Vzc1Rva2VuIHtcbiAgcmV0dXJuIHtcbiAgICBhY2Nlc3NUb2tlbjogdG9rZW4uYWNjZXNzVG9rZW4sXG4gICAgdG9rZW5UeXBlOiB0b2tlbi50b2tlblR5cGUsXG4gICAgLi4uKHRva2VuLmV4cGlyeSA/IHsgZXhwaXJ5OiB0b2tlbi5leHBpcnkgfSA6IHt9KSxcbiAgICBzY29wZXM6IFsuLi50b2tlbi5zY29wZXNdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbih0b2tlbjogVG9rZW4sIHByZXZpb3VzPzogVG9rZW4pOiBUb2tlbiB7XG4gIGlmICghdG9rZW4uYWNjZXNzVG9rZW4udHJpbSgpKVxuICAgIHRocm93IG5ldyBBdXRoRXJyb3IoXCJvYXV0aFwiLCBcIlRva2VuIHJlc3BvbnNlIGRpZCBub3QgY29udGFpbiBhbiBhY2Nlc3MgdG9rZW5cIik7XG4gIHJldHVybiB7XG4gICAgYWNjZXNzVG9rZW46IHRva2VuLmFjY2Vzc1Rva2VuLFxuICAgIHRva2VuVHlwZTogdG9rZW4udG9rZW5UeXBlIHx8IFwiQmVhcmVyXCIsXG4gICAgcmVmcmVzaFRva2VuOiB0b2tlbi5yZWZyZXNoVG9rZW4gPz8gcHJldmlvdXM/LnJlZnJlc2hUb2tlbixcbiAgICBleHBpcnk6IHRva2VuLmV4cGlyeSxcbiAgICBzY29wZXM6IHRva2VuLnNjb3Blcy5sZW5ndGggPyBbLi4udG9rZW4uc2NvcGVzXSA6IFsuLi4ocHJldmlvdXM/LnNjb3BlcyA/PyBbXSldLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkKHRva2VuOiBUb2tlbiwgbm93OiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHRva2VuLmFjY2Vzc1Rva2VuKSAmJiAoIXRva2VuLmV4cGlyeSB8fCBEYXRlLnBhcnNlKHRva2VuLmV4cGlyeSkgPiBub3cuZ2V0VGltZSgpKTtcbn1cbiJdfQ==
|
package/lib/src/storage.d.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import type { CredentialStore, LockAdapter, Token } from "./types.ts";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Process-local keyed mutex used by the in-memory store.
|
|
4
|
+
*
|
|
5
|
+
* Modeled on `@dbx-tools/core`'s `withProcessLock` coordinator: one holder per
|
|
6
|
+
* key, the rest queue in arrival order, distinct keys proceed concurrently.
|
|
7
|
+
* Waiting is purely promise-based, so a waiter never blocks the event loop and,
|
|
8
|
+
* by default, waits indefinitely - a holder may legitimately run for minutes
|
|
9
|
+
* (e.g. an interactive `databricks auth login` that opens a browser). A finite
|
|
10
|
+
* `timeoutMs` is opt-in for callers that prefer to fail fast.
|
|
11
|
+
*/
|
|
3
12
|
export declare class MemoryLockAdapter implements LockAdapter {
|
|
4
13
|
#private;
|
|
5
|
-
acquire(key: string, timeoutMs
|
|
14
|
+
acquire(key: string, timeoutMs?: number): Promise<string>;
|
|
6
15
|
release(lease: string): Promise<void>;
|
|
7
16
|
}
|
|
8
17
|
/** Process-local credential store with per-key refresh locks. */
|
|
@@ -14,7 +23,7 @@ export declare class MemoryCredentialStore implements CredentialStore {
|
|
|
14
23
|
prepareWrite(): Promise<void>;
|
|
15
24
|
save(key: string, token: Token): Promise<void>;
|
|
16
25
|
remove(key: string): Promise<void>;
|
|
17
|
-
acquireLock(key: string, timeoutMs
|
|
26
|
+
acquireLock(key: string, timeoutMs?: number): Promise<string>;
|
|
18
27
|
releaseLock(lease: string): Promise<void>;
|
|
19
28
|
name(): string;
|
|
20
29
|
}
|
package/lib/src/storage.js
CHANGED
|
@@ -1,44 +1,75 @@
|
|
|
1
1
|
import { authLogger, credentialId, tokenMetadata } from "./_logging.js";
|
|
2
2
|
const logger = authLogger("memory-storage");
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Process-local keyed mutex used by the in-memory store.
|
|
5
|
+
*
|
|
6
|
+
* Modeled on `@dbx-tools/core`'s `withProcessLock` coordinator: one holder per
|
|
7
|
+
* key, the rest queue in arrival order, distinct keys proceed concurrently.
|
|
8
|
+
* Waiting is purely promise-based, so a waiter never blocks the event loop and,
|
|
9
|
+
* by default, waits indefinitely - a holder may legitimately run for minutes
|
|
10
|
+
* (e.g. an interactive `databricks auth login` that opens a browser). A finite
|
|
11
|
+
* `timeoutMs` is opt-in for callers that prefer to fail fast.
|
|
12
|
+
*/
|
|
4
13
|
export class MemoryLockAdapter {
|
|
5
|
-
#
|
|
6
|
-
#leases = new Map();
|
|
14
|
+
#states = new Map();
|
|
7
15
|
#sequence = 0;
|
|
8
|
-
|
|
16
|
+
acquire(key, timeoutMs) {
|
|
9
17
|
const credential = credentialId(key);
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.#tails.set(key, tail);
|
|
17
|
-
try {
|
|
18
|
-
logger.debug("waiting for memory lock", { credential, timeoutMs });
|
|
19
|
-
await withTimeout(previous, timeoutMs, `Timed out waiting for lock ${key}`);
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
release();
|
|
23
|
-
if (this.#tails.get(key) === tail)
|
|
24
|
-
this.#tails.delete(key);
|
|
25
|
-
throw error;
|
|
18
|
+
const state = this.#states.get(key);
|
|
19
|
+
if (!state) {
|
|
20
|
+
const lease = this.#nextLease(key);
|
|
21
|
+
this.#states.set(key, { lease, queue: [] });
|
|
22
|
+
logger.debug("memory lock acquired", { credential });
|
|
23
|
+
return Promise.resolve(lease);
|
|
26
24
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
logger.debug("waiting for memory lock", { credential, timeoutMs });
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
let timer;
|
|
28
|
+
const waiter = {
|
|
29
|
+
resolve: (lease) => {
|
|
30
|
+
if (timer)
|
|
31
|
+
clearTimeout(timer);
|
|
32
|
+
logger.debug("memory lock acquired", { credential });
|
|
33
|
+
resolve(lease);
|
|
34
|
+
},
|
|
35
|
+
reject: (error) => {
|
|
36
|
+
if (timer)
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
reject(error);
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
state.queue.push(waiter);
|
|
42
|
+
// A timer is created only for a finite positive budget. Omitted, Infinity,
|
|
43
|
+
// or non-positive all mean "wait forever" - no timer to leak or fire.
|
|
44
|
+
if (timeoutMs !== undefined && Number.isFinite(timeoutMs) && timeoutMs > 0) {
|
|
45
|
+
timer = setTimeout(() => {
|
|
46
|
+
const index = state.queue.indexOf(waiter);
|
|
47
|
+
if (index >= 0)
|
|
48
|
+
state.queue.splice(index, 1);
|
|
49
|
+
waiter.reject(new Error(`Timed out waiting for lock ${key}`));
|
|
50
|
+
}, timeoutMs);
|
|
51
|
+
}
|
|
33
52
|
});
|
|
34
|
-
logger.debug("memory lock acquired", { credential });
|
|
35
|
-
return lease;
|
|
36
53
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
release(lease) {
|
|
55
|
+
const key = lease.split(":").slice(1).join(":");
|
|
56
|
+
logger.debug("releasing memory lock", { credential: credentialId(key) });
|
|
57
|
+
const state = this.#states.get(key);
|
|
58
|
+
// Ignore a stale release from anyone who no longer owns the key (a timed-out
|
|
59
|
+
// or superseded lease). Honoring it would revoke the lock from the holder.
|
|
60
|
+
if (!state || state.lease !== lease)
|
|
61
|
+
return Promise.resolve();
|
|
62
|
+
const next = state.queue.shift();
|
|
63
|
+
if (!next) {
|
|
64
|
+
this.#states.delete(key);
|
|
65
|
+
return Promise.resolve();
|
|
66
|
+
}
|
|
67
|
+
state.lease = this.#nextLease(key);
|
|
68
|
+
next.resolve(state.lease);
|
|
69
|
+
return Promise.resolve();
|
|
70
|
+
}
|
|
71
|
+
#nextLease(key) {
|
|
72
|
+
return `${++this.#sequence}:${key}`;
|
|
42
73
|
}
|
|
43
74
|
}
|
|
44
75
|
/** Process-local credential store with per-key refresh locks. */
|
|
@@ -78,21 +109,4 @@ export class MemoryCredentialStore {
|
|
|
78
109
|
return "memory";
|
|
79
110
|
}
|
|
80
111
|
}
|
|
81
|
-
async function withTimeout(promise, timeoutMs, message) {
|
|
82
|
-
if (!Number.isFinite(timeoutMs) || timeoutMs < 0)
|
|
83
|
-
throw new TypeError("timeoutMs must be non-negative");
|
|
84
|
-
let timeout;
|
|
85
|
-
try {
|
|
86
|
-
return await Promise.race([
|
|
87
|
-
promise,
|
|
88
|
-
new Promise((_, reject) => {
|
|
89
|
-
timeout = setTimeout(() => reject(new Error(message)), timeoutMs);
|
|
90
|
-
}),
|
|
91
|
-
]);
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
if (timeout)
|
|
95
|
-
clearTimeout(timeout);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUU1Qyx3RUFBd0U7QUFDeEUsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFDMUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ2pELFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFZCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFpQjtRQUMxQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNELElBQUksT0FBb0IsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzVDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxXQUFXLENBQUMsUUFBUSxF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QUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXLEVBQUUsU0FBaUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxLQUFLLFVBQVUsV0FBVyxDQUFJLE9BQW1CLEVBQUUsU0FBaUIsRUFBRSxPQUFlO0lBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUN4RCxJQUFJLE9BQWtELENBQUM7SUFDdkQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEIsT0FBTztZQUNQLElBQUksT0FBTyxDQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMvQixPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7WUFBUyxDQUFDO1FBQ1QsSUFBSSxPQUFPO1lBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXV0aExvZ2dlciwgY3JlZGVudGlhbElkLCB0b2tlbk1ldGFkYXRhIH0gZnJvbSBcIi4vX2xvZ2dpbmcudHNcIjtcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFN0b3JlLCBMb2NrQWRhcHRlciwgVG9rZW4gfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBhdXRoTG9nZ2VyKFwibWVtb3J5LXN0b3JhZ2VcIik7XG5cbi8qKiBQcm9jZXNzLWxvY2FsIGdlbmVyaWMgbGVhc2UgcmVnaXN0cnkgdXNlZCBieSB0aGUgaW4tbWVtb3J5IHN0b3JlLiAqL1xuZXhwb3J0IGNsYXNzIE1lbW9yeUxvY2tBZGFwdGVyIGltcGxlbWVudHMgTG9ja0FkYXB0ZXIge1xuICByZWFkb25seSAjdGFpbHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcbiAgcmVhZG9ubHkgI2xlYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCAoKSA9PiB2b2lkPigpO1xuICAjc2VxdWVuY2UgPSAwO1xuXG4gIGFzeW5jIGFjcXVpcmUoa2V5OiBzdHJpbmcsIHRpbWVvdXRNczogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsID0gY3JlZGVudGlhbElkKGtleSk7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLiN0YWlscy5nZXQoa2V5KSA/PyBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBsZXQgcmVsZWFzZSE6ICgpID0+IHZvaWQ7XG4gICAgY29uc3QgY3VycmVudCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICByZWxlYXNlID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgICBjb25zdCB0YWlsID0gcHJldmlvdXMudGhlbigoKSA9PiBjdXJyZW50KTtcbiAgICB0aGlzLiN0YWlscy5zZXQoa2V5LCB0YWlsKTtcbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwid2FpdGluZyBmb3IgbWVtb3J5IGxvY2tcIiwgeyBjcmVkZW50aWFsLCB0aW1lb3V0TXMgfSk7XG4gICAgICBhd2FpdCB3aXRoVGltZW91dChwcmV2aW91cywgdGltZW91dE1zLCBgVGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvY2sgJHtrZXl9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJlbGVhc2UoKTtcbiAgICAgIGlmICh0aGlzLiN0YWlscy5nZXQoa2V5KSA9PT0gdGFpbCkgdGhpcy4jdGFpbHMuZGVsZXRlKGtleSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgY29uc3QgbGVhc2UgPSBgJHsrK3RoaXMuI3NlcXVlbmNlfToke2tleX1gO1xuICAgIHRoaXMuI2xlYXNlcy5zZXQobGVhc2UsICgpID0+IHtcbiAgICAgIHJlbGVhc2UoKTtcbiAgICAgIHRoaXMuI2xlYXNlcy5kZWxldGUobGVhc2UpO1xuICAgICAgaWYgKHRoaXMuI3RhaWxzLmdldChrZXkpID09PSB0YWlsKSB0aGlzLiN0YWlscy5kZWxldGUoa2V5KTtcbiAgICB9KTtcbiAgICBsb2dnZXIuZGVidWcoXCJtZW1vcnkgbG9jayBhY3F1aXJlZFwiLCB7IGNyZWRlbnRpYWwgfSk7XG4gICAgcmV0dXJuIGxlYXNlO1xuICB9XG5cbiAgYXN5bmMgcmVsZWFzZShsZWFzZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVsZWFzaW5nIG1lbW9yeSBsb2NrXCIsIHtcbiAgICAgIGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChsZWFzZS5zcGxpdChcIjpcIikuc2xpY2UoMSkuam9pbihcIjpcIikpLFxuICAgIH0pO1xuICAgIHRoaXMuI2xlYXNlcy5nZXQobGVhc2UpPy4oKTtcbiAgfVxufVxuXG4vKiogUHJvY2Vzcy1sb2NhbCBjcmVkZW50aWFsIHN0b3JlIHdpdGggcGVyLWtleSByZWZyZXNoIGxvY2tzLiAqL1xuZXhwb3J0IGNsYXNzIE1lbW9yeUNyZWRlbnRpYWxTdG9yZSBpbXBsZW1lbnRzIENyZWRlbnRpYWxTdG9yZSB7XG4gIHJlYWRvbmx5ICN0b2tlbnMgPSBuZXcgTWFwPHN0cmluZywgVG9rZW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NrczogTG9ja0FkYXB0ZXIgPSBuZXcgTWVtb3J5TG9ja0FkYXB0ZXIoKSkge31cblxuICBhc3luYyBsb2FkKGtleTogc3RyaW5nKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy4jdG9rZW5zLmdldChrZXkpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImxvYWRlZCBtZW1vcnkgY3JlZGVudGlhbFwiLCB7XG4gICAgICBjcmVkZW50aWFsOiBjcmVkZW50aWFsSWQoa2V5KSxcbiAgICAgIHRva2VuOiB0b2tlbk1ldGFkYXRhKHRva2VuKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdG9rZW4gPyBzdHJ1Y3R1cmVkQ2xvbmUodG9rZW4pIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgcHJlcGFyZVdyaXRlKCk6IFByb21pc2U8dm9pZD4ge31cblxuICBhc3luYyBzYXZlKGtleTogc3RyaW5nLCB0b2tlbjogVG9rZW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLiN0b2tlbnMuc2V0KGtleSwgc3RydWN0dXJlZENsb25lKHRva2VuKSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwic2F2ZWQgbWVtb3J5IGNyZWRlbnRpYWxcIiwge1xuICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbElkKGtleSksXG4gICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YSh0b2tlbiksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLiN0b2tlbnMuZGVsZXRlKGtleSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVtb3ZlZCBtZW1vcnkgY3JlZGVudGlhbFwiLCB7IGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChrZXkpIH0pO1xuICB9XG5cbiAgYWNxdWlyZUxvY2soa2V5OiBzdHJpbmcsIHRpbWVvdXRNczogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5sb2Nrcy5hY3F1aXJlKGtleSwgdGltZW91dE1zKTtcbiAgfVxuXG4gIHJlbGVhc2VMb2NrKGxlYXNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2Nrcy5yZWxlYXNlKGxlYXNlKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJtZW1vcnlcIjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3aXRoVGltZW91dDxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCB0aW1lb3V0TXM6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRpbWVvdXRNcykgfHwgdGltZW91dE1zIDwgMClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwidGltZW91dE1zIG11c3QgYmUgbm9uLW5lZ2F0aXZlXCIpO1xuICBsZXQgdGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBwcm9taXNlLFxuICAgICAgbmV3IFByb21pc2U8bmV2ZXI+KChfLCByZWplY3QpID0+IHtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSksIHRpbWVvdXRNcyk7XG4gICAgICB9KSxcbiAgICBdKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAodGltZW91dCkgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9XG59XG4iXX0=
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQXFCNUM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7SUFDdEQsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVkLE9BQU8sQ0FBQyxHQUFXLEVBQUUsU0FBa0I7UUFDckMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxL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QUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF1dGhMb2dnZXIsIGNyZWRlbnRpYWxJZCwgdG9rZW5NZXRhZGF0YSB9IGZyb20gXCIuL19sb2dnaW5nLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENyZWRlbnRpYWxTdG9yZSwgTG9ja0FkYXB0ZXIsIFRva2VuIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gYXV0aExvZ2dlcihcIm1lbW9yeS1zdG9yYWdlXCIpO1xuXG4vKiogT25lIHF1ZXVlZCB3YWl0ZXIgZm9yIGEgaGVsZCBrZXk6IHJlc29sdmVkIHdoZW4gcHJvbW90ZWQsIHJlamVjdGVkIG9uIHRpbWVvdXQuICovXG5pbnRlcmZhY2UgTWVtb3J5TG9ja1dhaXRlciB7XG4gIHJlc29sdmU6IChsZWFzZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBBIGtleSdzIGN1cnJlbnQgb3duZXIgbGVhc2UgcGx1cyBpdHMgRklGTyBxdWV1ZSBvZiB3YWl0ZXJzLlxuICpcbiAqIE93bmVyIGFuZCBxdWV1ZSBsaXZlIGluIG9uZSBlbnRyeSBzbyB0aGUga2V5IGlzIG5ldmVyIGhhbGYtcHJlc2VudDogaXQgaXNcbiAqIGRyb3BwZWQgb25seSB3aGVuIGl0IGlzIGJvdGggdW5vd25lZCBhbmQgdW53YW50ZWQuIEEgd2FpdGVyIHRoYXQgdGltZXMgb3V0XG4gKiByZW1vdmVzIG9ubHkgaXRzZWxmIGZyb20gYHF1ZXVlYCBhbmQgbmV2ZXIgZGlzdHVyYnMgYGxlYXNlYCwgc28gYSB0aW1lZC1vdXRcbiAqIHdhaXRlciBjYW4gbm8gbG9uZ2VyIGxldCBhIGxhdGVyIGNhbGxlciBieXBhc3MgdGhlIGFjdGl2ZSBob2xkZXIuXG4gKi9cbmludGVyZmFjZSBNZW1vcnlMb2NrU3RhdGUge1xuICBsZWFzZTogc3RyaW5nO1xuICBxdWV1ZTogTWVtb3J5TG9ja1dhaXRlcltdO1xufVxuXG4vKipcbiAqIFByb2Nlc3MtbG9jYWwga2V5ZWQgbXV0ZXggdXNlZCBieSB0aGUgaW4tbWVtb3J5IHN0b3JlLlxuICpcbiAqIE1vZGVsZWQgb24gYEBkYngtdG9vbHMvY29yZWAncyBgd2l0aFByb2Nlc3NMb2NrYCBjb29yZGluYXRvcjogb25lIGhvbGRlciBwZXJcbiAqIGtleSwgdGhlIHJlc3QgcXVldWUgaW4gYXJyaXZhbCBvcmRlciwgZGlzdGluY3Qga2V5cyBwcm9jZWVkIGNvbmN1cnJlbnRseS5cbiAqIFdhaXRpbmcgaXMgcHVyZWx5IHByb21pc2UtYmFzZWQsIHNvIGEgd2FpdGVyIG5ldmVyIGJsb2NrcyB0aGUgZXZlbnQgbG9vcCBhbmQsXG4gKiBieSBkZWZhdWx0LCB3YWl0cyBpbmRlZmluaXRlbHkgLSBhIGhvbGRlciBtYXkgbGVnaXRpbWF0ZWx5IHJ1biBmb3IgbWludXRlc1xuICogKGUuZy4gYW4gaW50ZXJhY3RpdmUgYGRhdGFicmlja3MgYXV0aCBsb2dpbmAgdGhhdCBvcGVucyBhIGJyb3dzZXIpLiBBIGZpbml0ZVxuICogYHRpbWVvdXRNc2AgaXMgb3B0LWluIGZvciBjYWxsZXJzIHRoYXQgcHJlZmVyIHRvIGZhaWwgZmFzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1lbW9yeUxvY2tBZGFwdGVyIGltcGxlbWVudHMgTG9ja0FkYXB0ZXIge1xuICByZWFkb25seSAjc3RhdGVzID0gbmV3IE1hcDxzdHJpbmcsIE1lbW9yeUxvY2tTdGF0ZT4oKTtcbiAgI3NlcXVlbmNlID0gMDtcblxuICBhY3F1aXJlKGtleTogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBjcmVkZW50aWFsSWQoa2V5KTtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuI3N0YXRlcy5nZXQoa2V5KTtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICBjb25zdCBsZWFzZSA9IHRoaXMuI25leHRMZWFzZShrZXkpO1xuICAgICAgdGhpcy4jc3RhdGVzLnNldChrZXksIHsgbGVhc2UsIHF1ZXVlOiBbXSB9KTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcIm1lbW9yeSBsb2NrIGFjcXVpcmVkXCIsIHsgY3JlZGVudGlhbCB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobGVhc2UpO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoXCJ3YWl0aW5nIGZvciBtZW1vcnkgbG9ja1wiLCB7IGNyZWRlbnRpYWwsIHRpbWVvdXRNcyB9KTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgd2FpdGVyOiBNZW1vcnlMb2NrV2FpdGVyID0ge1xuICAgICAgICByZXNvbHZlOiAobGVhc2UpID0+IHtcbiAgICAgICAgICBpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKFwibWVtb3J5IGxvY2sgYWNxdWlyZWRcIiwgeyBjcmVkZW50aWFsIH0pO1xuICAgICAgICAgIHJlc29sdmUobGVhc2UpO1xuICAgICAgICB9LFxuICAgICAgICByZWplY3Q6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmICh0aW1lcikgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHN0YXRlLnF1ZXVlLnB1c2god2FpdGVyKTtcbiAgICAgIC8vIEEgdGltZXIgaXMgY3JlYXRlZCBvbmx5IGZvciBhIGZpbml0ZSBwb3NpdGl2ZSBidWRnZXQuIE9taXR0ZWQsIEluZmluaXR5LFxuICAgICAgLy8gb3Igbm9uLXBvc2l0aXZlIGFsbCBtZWFuIFwid2FpdCBmb3JldmVyXCIgLSBubyB0aW1lciB0byBsZWFrIG9yIGZpcmUuXG4gICAgICBpZiAodGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgTnVtYmVyLmlzRmluaXRlKHRpbWVvdXRNcykgJiYgdGltZW91dE1zID4gMCkge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3RhdGUucXVldWUuaW5kZXhPZih3YWl0ZXIpO1xuICAgICAgICAgIGlmIChpbmRleCA+PSAwKSBzdGF0ZS5xdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHdhaXRlci5yZWplY3QobmV3IEVycm9yKGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgbG9jayAke2tleX1gKSk7XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWxlYXNlKGxlYXNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXkgPSBsZWFzZS5zcGxpdChcIjpcIikuc2xpY2UoMSkuam9pbihcIjpcIik7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVsZWFzaW5nIG1lbW9yeSBsb2NrXCIsIHsgY3JlZGVudGlhbDogY3JlZGVudGlhbElkKGtleSkgfSk7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLiNzdGF0ZXMuZ2V0KGtleSk7XG4gICAgLy8gSWdub3JlIGEgc3RhbGUgcmVsZWFzZSBmcm9tIGFueW9uZSB3aG8gbm8gbG9uZ2VyIG93bnMgdGhlIGtleSAoYSB0aW1lZC1vdXRcbiAgICAvLyBvciBzdXBlcnNlZGVkIGxlYXNlKS4gSG9ub3JpbmcgaXQgd291bGQgcmV2b2tlIHRoZSBsb2NrIGZyb20gdGhlIGhvbGRlci5cbiAgICBpZiAoIXN0YXRlIHx8IHN0YXRlLmxlYXNlICE9PSBsZWFzZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWV1ZS5zaGlmdCgpO1xuICAgIGlmICghbmV4dCkge1xuICAgICAgdGhpcy4jc3RhdGVzLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICBzdGF0ZS5sZWFzZSA9IHRoaXMuI25leHRMZWFzZShrZXkpO1xuICAgIG5leHQucmVzb2x2ZShzdGF0ZS5sZWFzZSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgI25leHRMZWFzZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAkeysrdGhpcy4jc2VxdWVuY2V9OiR7a2V5fWA7XG4gIH1cbn1cblxuLyoqIFByb2Nlc3MtbG9jYWwgY3JlZGVudGlhbCBzdG9yZSB3aXRoIHBlci1rZXkgcmVmcmVzaCBsb2Nrcy4gKi9cbmV4cG9ydCBjbGFzcyBNZW1vcnlDcmVkZW50aWFsU3RvcmUgaW1wbGVtZW50cyBDcmVkZW50aWFsU3RvcmUge1xuICByZWFkb25seSAjdG9rZW5zID0gbmV3IE1hcDxzdHJpbmcsIFRva2VuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9ja3M6IExvY2tBZGFwdGVyID0gbmV3IE1lbW9yeUxvY2tBZGFwdGVyKCkpIHt9XG5cbiAgYXN5bmMgbG9hZChrZXk6IHN0cmluZyk6IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuI3Rva2Vucy5nZXQoa2V5KTtcbiAgICBsb2dnZXIuZGVidWcoXCJsb2FkZWQgbWVtb3J5IGNyZWRlbnRpYWxcIiwge1xuICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbElkKGtleSksXG4gICAgICB0b2tlbjogdG9rZW5NZXRhZGF0YSh0b2tlbiksXG4gICAgfSk7XG4gICAgcmV0dXJuIHRva2VuID8gc3RydWN0dXJlZENsb25lKHRva2VuKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVXcml0ZSgpOiBQcm9taXNlPHZvaWQ+IHt9XG5cbiAgYXN5bmMgc2F2ZShrZXk6IHN0cmluZywgdG9rZW46IFRva2VuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy4jdG9rZW5zLnNldChrZXksIHN0cnVjdHVyZWRDbG9uZSh0b2tlbikpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInNhdmVkIG1lbW9yeSBjcmVkZW50aWFsXCIsIHtcbiAgICAgIGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxJZChrZXkpLFxuICAgICAgdG9rZW46IHRva2VuTWV0YWRhdGEodG9rZW4pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy4jdG9rZW5zLmRlbGV0ZShrZXkpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlbW92ZWQgbWVtb3J5IGNyZWRlbnRpYWxcIiwgeyBjcmVkZW50aWFsOiBjcmVkZW50aWFsSWQoa2V5KSB9KTtcbiAgfVxuXG4gIGFjcXVpcmVMb2NrKGtleTogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmxvY2tzLmFjcXVpcmUoa2V5LCB0aW1lb3V0TXMpO1xuICB9XG5cbiAgcmVsZWFzZUxvY2sobGVhc2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmxvY2tzLnJlbGVhc2UobGVhc2UpO1xuICB9XG5cbiAgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIm1lbW9yeVwiO1xuICB9XG59XG4iXX0=
|
package/lib/src/types.d.ts
CHANGED
|
@@ -38,11 +38,18 @@ export interface AccessToken {
|
|
|
38
38
|
expiry?: string;
|
|
39
39
|
scopes: string[];
|
|
40
40
|
}
|
|
41
|
-
/** Shared lifecycle configuration embedded by every provider. */
|
|
41
|
+
/** Shared lifecycle configuration embedded by every provider. All times in milliseconds. */
|
|
42
42
|
export interface AuthOptions {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
refreshBufferMs: number;
|
|
44
|
+
/**
|
|
45
|
+
* Opt-in cap, in milliseconds, on waiting to acquire the per-credential
|
|
46
|
+
* refresh lock. `0` (the default) means wait indefinitely: a holder may
|
|
47
|
+
* legitimately run for minutes (an interactive login that opens a browser),
|
|
48
|
+
* and the caller owns the overall request budget. Set a positive value to
|
|
49
|
+
* fail fast instead.
|
|
50
|
+
*/
|
|
51
|
+
lockTimeoutMs: number;
|
|
52
|
+
loginTimeoutMs: number;
|
|
46
53
|
}
|
|
47
54
|
/** Record-style factory retained for straightforward Node/Python bridging. */
|
|
48
55
|
export declare const AuthOptions: {
|
|
@@ -104,7 +111,8 @@ export interface DatabricksProfile extends DatabricksProfileSummary {
|
|
|
104
111
|
}
|
|
105
112
|
/** Cross-language lease adapter; implementations may use files, databases, or FFI. */
|
|
106
113
|
export interface LockAdapter {
|
|
107
|
-
|
|
114
|
+
/** Acquire the key's lease. Omit `timeoutMs` (or pass `0`) to wait indefinitely. */
|
|
115
|
+
acquire(key: string, timeoutMs?: number): Promise<string>;
|
|
108
116
|
release(lease: string): Promise<void>;
|
|
109
117
|
}
|
|
110
118
|
/** Cross-language credential persistence contract. */
|
|
@@ -113,7 +121,7 @@ export interface CredentialStore {
|
|
|
113
121
|
prepareWrite(): Promise<void>;
|
|
114
122
|
save(key: string, token: Token): Promise<void>;
|
|
115
123
|
remove(key: string): Promise<void>;
|
|
116
|
-
acquireLock(key: string, timeoutMs
|
|
124
|
+
acquireLock(key: string, timeoutMs?: number): Promise<string>;
|
|
117
125
|
releaseLock(lease: string): Promise<void>;
|
|
118
126
|
name(): string;
|
|
119
127
|
}
|
package/lib/src/types.js
CHANGED
|
@@ -28,9 +28,9 @@ export var FileLayout;
|
|
|
28
28
|
FileLayout["PerCredential"] = "per-credential";
|
|
29
29
|
})(FileLayout || (FileLayout = {}));
|
|
30
30
|
const AUTH_DEFAULTS = {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
refreshBufferMs: 300_000,
|
|
32
|
+
lockTimeoutMs: 0,
|
|
33
|
+
loginTimeoutMs: 900_000,
|
|
34
34
|
};
|
|
35
35
|
/** Record-style factory retained for straightforward Node/Python bridging. */
|
|
36
36
|
export const AuthOptions = {
|
|
@@ -64,4 +64,4 @@ export const WORKSPACE_ID_HEADER = "x-databricks-workspace-id";
|
|
|
64
64
|
export const AUTH_TYPE_APP_OBO = "app_obo";
|
|
65
65
|
/** Authentication type for Databricks App service-principal credentials. */
|
|
66
66
|
export const AUTH_TYPE_APP_SP = "app_sp";
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNkNBQWlDLENBQUE7SUFDakMsbURBQXVDLENBQUE7SUFDdkMseURBQTZDLENBQUE7SUFDN0MseURBQTZDLENBQUE7SUFDN0MsOENBQWtDLENBQUE7QUFDcEMsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIscUNBQXVCLENBQUE7SUFDdkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBTixJQUFZLE9BSVg7QUFKRCxXQUFZLE9BQU87SUFDakIsd0JBQWEsQ0FBQTtJQUNiLDRCQUFpQixDQUFBO0lBQ2pCLHdCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiw4Q0FBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBSFcsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUEwQkQsTUFBTSxhQUFhLEdBQWdCO0lBQ2pDLG9CQUFvQixFQUFFLEdBQUc7SUFDekIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixtQkFBbUIsRUFBRSxHQUFHO0NBQ3pCLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE1BQU0sQ0FBQyxVQUFnQyxFQUFFO1FBQ3ZDLE9BQU8sRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxRQUFRO1FBQ04sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRixDQUFDO0FBeUNGLG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxNQUFNLENBQUMsVUFBMEMsRUFBRTtRQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRixDQUFDO0FBMERGLGlGQUFpRjtBQUNqRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDdEQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHVDQUF1QyxDQUFDO0FBQzdFLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxlQUFlLENBQUM7QUFDM0QsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBQy9ELCtFQUErRTtBQUMvRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7QUFDM0MsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBdXRoZW50aWNhdGlvbiBzdHJhdGVneSBzZWxlY3RlZCBmcm9tIERhdGFicmlja3MgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBlbnVtIEF1dGhLaW5kIHtcbiAgVXNlclRvTWFjaGluZSA9IFwidXNlci10by1tYWNoaW5lXCIsXG4gIE1hY2hpbmVUb01hY2hpbmUgPSBcIm1hY2hpbmUtdG8tbWFjaGluZVwiLFxuICBQZXJzb25hbEFjY2Vzc1Rva2VuID0gXCJwZXJzb25hbC1hY2Nlc3MtdG9rZW5cIixcbiAgQXBwU2VydmljZVByaW5jaXBhbCA9IFwiYXBwLXNlcnZpY2UtcHJpbmNpcGFsXCIsXG4gIEFwcE9uQmVoYWxmT2YgPSBcImFwcC1vbi1iZWhhbGYtb2ZcIixcbn1cblxuLyoqIFNjb3BlIG9mIHRoZSBEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldEtpbmQge1xuICBXb3Jrc3BhY2UgPSBcIndvcmtzcGFjZVwiLFxuICBBY2NvdW50ID0gXCJhY2NvdW50XCIsXG4gIFVuaWZpZWQgPSBcInVuaWZpZWRcIixcbn1cblxuLyoqIEJ1aWx0LWluIGNyZWRlbnRpYWwgc3RvcmFnZSBiYWNrZW5kLiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZSB7XG4gIEF1dG8gPSBcImF1dG9cIixcbiAgTWVtb3J5ID0gXCJtZW1vcnlcIixcbiAgRmlsZSA9IFwiZmlsZVwiLFxufVxuXG4vKiogRmlsZSBvcmdhbml6YXRpb24gdXNlZCBieSBhIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yZS4gKi9cbmV4cG9ydCBlbnVtIEZpbGVMYXlvdXQge1xuICBTaW5nbGUgPSBcInNpbmdsZVwiLFxuICBQZXJDcmVkZW50aWFsID0gXCJwZXItY3JlZGVudGlhbFwiLFxufVxuXG4vKiogU3RvcmVkIE9BdXRoIGNyZWRlbnRpYWwsIGluY2x1ZGluZyByZW5ld2FsIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyeT86IHN0cmluZztcbiAgc2NvcGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqIFB1YmxpYyBjcmVkZW50aWFsIHJlc3VsdDsgZGVsaWJlcmF0ZWx5IGV4Y2x1ZGVzIHRoZSByZWZyZXNoIHRva2VuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NUb2tlbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICBleHBpcnk/OiBzdHJpbmc7XG4gIHNjb3Blczogc3RyaW5nW107XG59XG5cbi8qKiBTaGFyZWQgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZW1iZWRkZWQgYnkgZXZlcnkgcHJvdmlkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhPcHRpb25zIHtcbiAgcmVmcmVzaEJ1ZmZlclNlY29uZHM6IG51bWJlcjtcbiAgbG9ja1RpbWVvdXRTZWNvbmRzOiBudW1iZXI7XG4gIGxvZ2luVGltZW91dFNlY29uZHM6IG51bWJlcjtcbn1cblxuY29uc3QgQVVUSF9ERUZBVUxUUzogQXV0aE9wdGlvbnMgPSB7XG4gIHJlZnJlc2hCdWZmZXJTZWNvbmRzOiAzMDAsXG4gIGxvY2tUaW1lb3V0U2Vjb25kczogMzAsXG4gIGxvZ2luVGltZW91dFNlY29uZHM6IDkwMCxcbn07XG5cbi8qKiBSZWNvcmQtc3R5bGUgZmFjdG9yeSByZXRhaW5lZCBmb3Igc3RyYWlnaHRmb3J3YXJkIE5vZGUvUHl0aG9uIGJyaWRnaW5nLiAqL1xuZXhwb3J0IGNvbnN0IEF1dGhPcHRpb25zID0ge1xuICBjcmVhdGUob3B0aW9uczogUGFydGlhbDxBdXRoT3B0aW9ucz4gPSB7fSk6IEF1dGhPcHRpb25zIHtcbiAgICByZXR1cm4geyAuLi5BVVRIX0RFRkFVTFRTLCAuLi5vcHRpb25zIH07XG4gIH0sXG4gIGRlZmF1bHRzKCk6IFJlYWRvbmx5PEF1dGhPcHRpb25zPiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyAuLi5BVVRIX0RFRkFVTFRTIH0pO1xuICB9LFxufTtcblxuLyoqIFNlY3JldC1mcmVlIG1ldGFkYXRhIGRpc2NvdmVyZWQgZnJvbSBvbmUgRGF0YWJyaWNrcyBDTEkgcHJvZmlsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJyaWNrc1Byb2ZpbGVTdW1tYXJ5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBob3N0Pzogc3RyaW5nO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkPzogc3RyaW5nO1xuICB0YXJnZXQ6IFRhcmdldEtpbmQ7XG4gIGF1dGhLaW5kOiBBdXRoS2luZDtcbn1cblxuLyoqIFJlc29sdmVkIERhdGFicmlja3MgaWRlbnRpdHkgYW5kIGFjdGl2ZSBzdG9yYWdlIGJhY2tlbmQuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFicmlja3NBdXRoU3RhdHVzIHtcbiAgcHJvZmlsZTogc3RyaW5nO1xuICBob3N0OiBzdHJpbmc7XG4gIHN0b3JhZ2U6IFN0b3JhZ2U7XG59XG5cbi8qKiBQdWJsaWMgRGF0YWJyaWNrcyBhdXRoZW50aWNhdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhYnJpY2tzQXV0aE9wdGlvbnMge1xuICBwcm9maWxlPzogc3RyaW5nO1xuICBob3N0Pzogc3RyaW5nO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkPzogc3RyaW5nO1xuICBjb25maWdGaWxlPzogc3RyaW5nO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgY2xpZW50U2VjcmV0Pzogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgZ3JvdXBJZD86IHN0cmluZztcbiAgYXV0aFR5cGU/OiBzdHJpbmc7XG4gIHNjb3Blcz86IHN0cmluZ1tdO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGNhY2hlRGlyPzogc3RyaW5nO1xuICBhdXRoPzogQXV0aE9wdGlvbnM7XG4gIHJlcXVlc3RIZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgYWNjZXNzVG9rZW5IZWFkZXI/OiBzdHJpbmc7XG4gIGluc3RhbGxDbGlJbkFwcD86IGJvb2xlYW47XG4gIHByZWZlclVzZXJUb01hY2hpbmU6IGJvb2xlYW47XG59XG5cbi8qKiBSZWNvcmQtc3R5bGUgZmFjdG9yeSByZXRhaW5lZCBmb3IgY2FsbGVycyBtaWdyYXRpbmcgZnJvbSBnZW5lcmF0ZWQgYmluZGluZ3MuICovXG5leHBvcnQgY29uc3QgRGF0YWJyaWNrc0F1dGhPcHRpb25zID0ge1xuICBjcmVhdGUob3B0aW9uczogUGFydGlhbDxEYXRhYnJpY2tzQXV0aE9wdGlvbnM+ID0ge30pOiBEYXRhYnJpY2tzQXV0aE9wdGlvbnMge1xuICAgIHJldHVybiB7IHByZWZlclVzZXJUb01hY2hpbmU6IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgfSxcbiAgZGVmYXVsdHMoKTogUmVhZG9ubHk8RGF0YWJyaWNrc0F1dGhPcHRpb25zPiB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyBwcmVmZXJVc2VyVG9NYWNoaW5lOiB0cnVlIH0pO1xuICB9LFxufTtcblxuLyoqIFJlc29sdmVkIHByb2ZpbGUgd2l0aCBzZWNyZXRzIHJldGFpbmVkIG9ubHkgZm9yIHByb3ZpZGVyIGNvbnN0cnVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJyaWNrc1Byb2ZpbGUgZXh0ZW5kcyBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnkge1xuICBob3N0OiBzdHJpbmc7XG4gIGF1dGhUeXBlPzogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBncm91cElkPzogc3RyaW5nO1xuICBzY29wZXM6IHN0cmluZ1tdO1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBjYWNoZUtleTogc3RyaW5nO1xuICBwcmluY2lwYWw6IHN0cmluZztcbn1cblxuLyoqIENyb3NzLWxhbmd1YWdlIGxlYXNlIGFkYXB0ZXI7IGltcGxlbWVudGF0aW9ucyBtYXkgdXNlIGZpbGVzLCBkYXRhYmFzZXMsIG9yIEZGSS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9ja0FkYXB0ZXIge1xuICBhY3F1aXJlKGtleTogc3RyaW5nLCB0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPjtcbiAgcmVsZWFzZShsZWFzZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIENyb3NzLWxhbmd1YWdlIGNyZWRlbnRpYWwgcGVyc2lzdGVuY2UgY29udHJhY3QuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxTdG9yZSB7XG4gIGxvYWQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFRva2VuIHwgdW5kZWZpbmVkPjtcbiAgcHJlcGFyZVdyaXRlKCk6IFByb21pc2U8dm9pZD47XG4gIHNhdmUoa2V5OiBzdHJpbmcsIHRva2VuOiBUb2tlbik6IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gIGFjcXVpcmVMb2NrKGtleTogc3RyaW5nLCB0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPjtcbiAgcmVsZWFzZUxvY2sobGVhc2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gIG5hbWUoKTogc3RyaW5nO1xufVxuXG4vKiogUHJvdmlkZXItc3BlY2lmaWMgdG9rZW4gYWNxdWlzaXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUHJvdmlkZXIge1xuICBhdXRoZW50aWNhdGUodGltZW91dE1zOiBudW1iZXIpOiBQcm9taXNlPFRva2VuPjtcbiAgbG9naW4odGltZW91dE1zOiBudW1iZXIpOiBQcm9taXNlPFRva2VuPjtcbiAgcmVmcmVzaCh0b2tlbjogVG9rZW4pOiBQcm9taXNlPFRva2VuPjtcbiAgY2FuQXV0aGVudGljYXRlU2lsZW50bHkoKTogYm9vbGVhbjtcbn1cblxuLyoqIFN0YWJsZSBmYWNhZGUgc2hhcmVkIGJ5IE5vZGUsIHRoZSBDTEksIGFuZCBnZW5lcmF0ZWQgbGFuZ3VhZ2UgYmluZGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDbGllbnQge1xuICBjaGFsbGVuZ2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgdG9rZW4obG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj47XG4gIGF1dGhlbnRpY2F0ZShsb2dpbj86IGJvb2xlYW4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuICBhdXRob3JpemF0aW9uSGVhZGVyRm9yVXJsKHJlcXVlc3RVcmw6IHN0cmluZywgbG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICByZXF1ZXN0SGVhZGVyc0ZvclVybChyZXF1ZXN0VXJsOiBzdHJpbmcsIGxvZ2luPzogYm9vbGVhbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gIGZvcmNlUmVmcmVzaFRva2VuKGxvZ2luPzogYm9vbGVhbik6IFByb21pc2U8QWNjZXNzVG9rZW4+O1xuICByZWZyZXNoUmVqZWN0ZWRUb2tlbihzdGFsZUFjY2Vzc1Rva2VuOiBzdHJpbmcsIGxvZ2luPzogYm9vbGVhbik6IFByb21pc2U8QWNjZXNzVG9rZW4+O1xuICBsb2dvdXQoKTogUHJvbWlzZTx2b2lkPjtcbiAgc3RhdHVzKCk6IERhdGFicmlja3NBdXRoU3RhdHVzO1xuICBwcmluY2lwYWwoKTogc3RyaW5nO1xuICB3b3Jrc3BhY2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGF1dGhLaW5kKCk6IEF1dGhLaW5kO1xuICBwcm9maWxlKG5hbWU/OiBzdHJpbmcpOiBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnk7XG4gIGxpc3RQcm9maWxlcyhyZWZyZXNoPzogYm9vbGVhbik6IERhdGFicmlja3NQcm9maWxlU3VtbWFyeVtdO1xufVxuXG4vKiogUHVibGljIE9BdXRoIGNsaWVudCB1c2VkIGJ5IERhdGFicmlja3MgQ0xJLWNvbXBhdGlibGUgdXNlciBhdXRoZW50aWNhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NMSUVOVF9JRCA9IFwiZGF0YWJyaWNrcy1jbGlcIjtcbi8qKiBEZWZhdWx0IERhdGFicmlja3MgcHJvZmlsZSBjb25maWd1cmF0aW9uIHBhdGguICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05GSUdfRklMRSA9IFwifi8uZGF0YWJyaWNrc2NmZ1wiO1xuLyoqIERlZmF1bHQgRGF0YWJyaWNrcyBhY2NvdW50IGNvbnNvbGUgb3JpZ2luLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUNDT1VOVFNfSE9TVCA9IFwiaHR0cHM6Ly9hY2NvdW50cy5jbG91ZC5kYXRhYnJpY2tzLmNvbVwiO1xuLyoqIENhbm9uaWNhbCByZXF1ZXN0IGhlYWRlciBjYXJyeWluZyBhIGJlYXJlciBhY2Nlc3MgdG9rZW4uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ0NFU1NfVE9LRU5fSEVBREVSID0gXCJhdXRob3JpemF0aW9uXCI7XG4vKiogQ2Fub25pY2FsIHJlcXVlc3QgaGVhZGVyIGNhcnJ5aW5nIHRoZSByZXNvbHZlZCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBJRC4gKi9cbmV4cG9ydCBjb25zdCBXT1JLU1BBQ0VfSURfSEVBREVSID0gXCJ4LWRhdGFicmlja3Mtd29ya3NwYWNlLWlkXCI7XG4vKiogQXV0aGVudGljYXRpb24gdHlwZSBmb3IgRGF0YWJyaWNrcyBBcHAgb24tYmVoYWxmLW9mIHJlcXVlc3QgY3JlZGVudGlhbHMuICovXG5leHBvcnQgY29uc3QgQVVUSF9UWVBFX0FQUF9PQk8gPSBcImFwcF9vYm9cIjtcbi8qKiBBdXRoZW50aWNhdGlvbiB0eXBlIGZvciBEYXRhYnJpY2tzIEFwcCBzZXJ2aWNlLXByaW5jaXBhbCBjcmVkZW50aWFscy4gKi9cbmV4cG9ydCBjb25zdCBBVVRIX1RZUEVfQVBQX1NQID0gXCJhcHBfc3BcIjtcbiJdfQ==
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNkNBQWlDLENBQUE7SUFDakMsbURBQXVDLENBQUE7SUFDdkMseURBQTZDLENBQUE7SUFDN0MseURBQTZDLENBQUE7SUFDN0MsOENBQWtDLENBQUE7QUFDcEMsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIscUNBQXVCLENBQUE7SUFDdkIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBTixJQUFZLE9BSVg7QUFKRCxXQUFZLE9BQU87SUFDakIsd0JBQWEsQ0FBQTtJQUNiLDRCQUFpQixDQUFBO0lBQ2pCLHdCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiw4Q0FBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBSFcsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUFpQ0QsTUFBTSxhQUFhLEdBQWdCO0lBQ2pDLGVBQWUsRUFBRSxPQUFPO0lBQ3hCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLGNBQWMsRUFBRSxPQUFPO0NBQ3hCLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE1BQU0sQ0FBQyxVQUFnQyxFQUFFO1FBQ3ZDLE9BQU8sRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxRQUFRO1FBQ04sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRixDQUFDO0FBeUNGLG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxNQUFNLENBQUMsVUFBMEMsRUFBRTtRQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRixDQUFDO0FBMkRGLGlGQUFpRjtBQUNqRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRCxxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDdEQsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHVDQUF1QyxDQUFDO0FBQzdFLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxlQUFlLENBQUM7QUFDM0QsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBQy9ELCtFQUErRTtBQUMvRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7QUFDM0MsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBdXRoZW50aWNhdGlvbiBzdHJhdGVneSBzZWxlY3RlZCBmcm9tIERhdGFicmlja3MgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBlbnVtIEF1dGhLaW5kIHtcbiAgVXNlclRvTWFjaGluZSA9IFwidXNlci10by1tYWNoaW5lXCIsXG4gIE1hY2hpbmVUb01hY2hpbmUgPSBcIm1hY2hpbmUtdG8tbWFjaGluZVwiLFxuICBQZXJzb25hbEFjY2Vzc1Rva2VuID0gXCJwZXJzb25hbC1hY2Nlc3MtdG9rZW5cIixcbiAgQXBwU2VydmljZVByaW5jaXBhbCA9IFwiYXBwLXNlcnZpY2UtcHJpbmNpcGFsXCIsXG4gIEFwcE9uQmVoYWxmT2YgPSBcImFwcC1vbi1iZWhhbGYtb2ZcIixcbn1cblxuLyoqIFNjb3BlIG9mIHRoZSBEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldEtpbmQge1xuICBXb3Jrc3BhY2UgPSBcIndvcmtzcGFjZVwiLFxuICBBY2NvdW50ID0gXCJhY2NvdW50XCIsXG4gIFVuaWZpZWQgPSBcInVuaWZpZWRcIixcbn1cblxuLyoqIEJ1aWx0LWluIGNyZWRlbnRpYWwgc3RvcmFnZSBiYWNrZW5kLiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZSB7XG4gIEF1dG8gPSBcImF1dG9cIixcbiAgTWVtb3J5ID0gXCJtZW1vcnlcIixcbiAgRmlsZSA9IFwiZmlsZVwiLFxufVxuXG4vKiogRmlsZSBvcmdhbml6YXRpb24gdXNlZCBieSBhIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yZS4gKi9cbmV4cG9ydCBlbnVtIEZpbGVMYXlvdXQge1xuICBTaW5nbGUgPSBcInNpbmdsZVwiLFxuICBQZXJDcmVkZW50aWFsID0gXCJwZXItY3JlZGVudGlhbFwiLFxufVxuXG4vKiogU3RvcmVkIE9BdXRoIGNyZWRlbnRpYWwsIGluY2x1ZGluZyByZW5ld2FsIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyeT86IHN0cmluZztcbiAgc2NvcGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqIFB1YmxpYyBjcmVkZW50aWFsIHJlc3VsdDsgZGVsaWJlcmF0ZWx5IGV4Y2x1ZGVzIHRoZSByZWZyZXNoIHRva2VuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NUb2tlbiB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHRva2VuVHlwZTogc3RyaW5nO1xuICBleHBpcnk/OiBzdHJpbmc7XG4gIHNjb3Blczogc3RyaW5nW107XG59XG5cbi8qKiBTaGFyZWQgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZW1iZWRkZWQgYnkgZXZlcnkgcHJvdmlkZXIuIEFsbCB0aW1lcyBpbiBtaWxsaXNlY29uZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhPcHRpb25zIHtcbiAgcmVmcmVzaEJ1ZmZlck1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHQtaW4gY2FwLCBpbiBtaWxsaXNlY29uZHMsIG9uIHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgcGVyLWNyZWRlbnRpYWxcbiAgICogcmVmcmVzaCBsb2NrLiBgMGAgKHRoZSBkZWZhdWx0KSBtZWFucyB3YWl0IGluZGVmaW5pdGVseTogYSBob2xkZXIgbWF5XG4gICAqIGxlZ2l0aW1hdGVseSBydW4gZm9yIG1pbnV0ZXMgKGFuIGludGVyYWN0aXZlIGxvZ2luIHRoYXQgb3BlbnMgYSBicm93c2VyKSxcbiAgICogYW5kIHRoZSBjYWxsZXIgb3ducyB0aGUgb3ZlcmFsbCByZXF1ZXN0IGJ1ZGdldC4gU2V0IGEgcG9zaXRpdmUgdmFsdWUgdG9cbiAgICogZmFpbCBmYXN0IGluc3RlYWQuXG4gICAqL1xuICBsb2NrVGltZW91dE1zOiBudW1iZXI7XG4gIGxvZ2luVGltZW91dE1zOiBudW1iZXI7XG59XG5cbmNvbnN0IEFVVEhfREVGQVVMVFM6IEF1dGhPcHRpb25zID0ge1xuICByZWZyZXNoQnVmZmVyTXM6IDMwMF8wMDAsXG4gIGxvY2tUaW1lb3V0TXM6IDAsXG4gIGxvZ2luVGltZW91dE1zOiA5MDBfMDAwLFxufTtcblxuLyoqIFJlY29yZC1zdHlsZSBmYWN0b3J5IHJldGFpbmVkIGZvciBzdHJhaWdodGZvcndhcmQgTm9kZS9QeXRob24gYnJpZGdpbmcuICovXG5leHBvcnQgY29uc3QgQXV0aE9wdGlvbnMgPSB7XG4gIGNyZWF0ZShvcHRpb25zOiBQYXJ0aWFsPEF1dGhPcHRpb25zPiA9IHt9KTogQXV0aE9wdGlvbnMge1xuICAgIHJldHVybiB7IC4uLkFVVEhfREVGQVVMVFMsIC4uLm9wdGlvbnMgfTtcbiAgfSxcbiAgZGVmYXVsdHMoKTogUmVhZG9ubHk8QXV0aE9wdGlvbnM+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IC4uLkFVVEhfREVGQVVMVFMgfSk7XG4gIH0sXG59O1xuXG4vKiogU2VjcmV0LWZyZWUgbWV0YWRhdGEgZGlzY292ZXJlZCBmcm9tIG9uZSBEYXRhYnJpY2tzIENMSSBwcm9maWxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhYnJpY2tzUHJvZmlsZVN1bW1hcnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIGhvc3Q/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIHRhcmdldDogVGFyZ2V0S2luZDtcbiAgYXV0aEtpbmQ6IEF1dGhLaW5kO1xufVxuXG4vKiogUmVzb2x2ZWQgRGF0YWJyaWNrcyBpZGVudGl0eSBhbmQgYWN0aXZlIHN0b3JhZ2UgYmFja2VuZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJyaWNrc0F1dGhTdGF0dXMge1xuICBwcm9maWxlOiBzdHJpbmc7XG4gIGhvc3Q6IHN0cmluZztcbiAgc3RvcmFnZTogU3RvcmFnZTtcbn1cblxuLyoqIFB1YmxpYyBEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFicmlja3NBdXRoT3B0aW9ucyB7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIGhvc3Q/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgd29ya3NwYWNlSWQ/OiBzdHJpbmc7XG4gIGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBncm91cElkPzogc3RyaW5nO1xuICBhdXRoVHlwZT86IHN0cmluZztcbiAgc2NvcGVzPzogc3RyaW5nW107XG4gIHRhcmdldD86IHN0cmluZztcbiAgY2FjaGVEaXI/OiBzdHJpbmc7XG4gIGF1dGg/OiBBdXRoT3B0aW9ucztcbiAgcmVxdWVzdEhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBhY2Nlc3NUb2tlbkhlYWRlcj86IHN0cmluZztcbiAgaW5zdGFsbENsaUluQXBwPzogYm9vbGVhbjtcbiAgcHJlZmVyVXNlclRvTWFjaGluZTogYm9vbGVhbjtcbn1cblxuLyoqIFJlY29yZC1zdHlsZSBmYWN0b3J5IHJldGFpbmVkIGZvciBjYWxsZXJzIG1pZ3JhdGluZyBmcm9tIGdlbmVyYXRlZCBiaW5kaW5ncy4gKi9cbmV4cG9ydCBjb25zdCBEYXRhYnJpY2tzQXV0aE9wdGlvbnMgPSB7XG4gIGNyZWF0ZShvcHRpb25zOiBQYXJ0aWFsPERhdGFicmlja3NBdXRoT3B0aW9ucz4gPSB7fSk6IERhdGFicmlja3NBdXRoT3B0aW9ucyB7XG4gICAgcmV0dXJuIHsgcHJlZmVyVXNlclRvTWFjaGluZTogdHJ1ZSwgLi4ub3B0aW9ucyB9O1xuICB9LFxuICBkZWZhdWx0cygpOiBSZWFkb25seTxEYXRhYnJpY2tzQXV0aE9wdGlvbnM+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IHByZWZlclVzZXJUb01hY2hpbmU6IHRydWUgfSk7XG4gIH0sXG59O1xuXG4vKiogUmVzb2x2ZWQgcHJvZmlsZSB3aXRoIHNlY3JldHMgcmV0YWluZWQgb25seSBmb3IgcHJvdmlkZXIgY29uc3RydWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhYnJpY2tzUHJvZmlsZSBleHRlbmRzIERhdGFicmlja3NQcm9maWxlU3VtbWFyeSB7XG4gIGhvc3Q6IHN0cmluZztcbiAgYXV0aFR5cGU/OiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGdyb3VwSWQ/OiBzdHJpbmc7XG4gIHNjb3Blczogc3RyaW5nW107XG4gIGNsaWVudFNlY3JldD86IHN0cmluZztcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIGNhY2hlS2V5OiBzdHJpbmc7XG4gIHByaW5jaXBhbDogc3RyaW5nO1xufVxuXG4vKiogQ3Jvc3MtbGFuZ3VhZ2UgbGVhc2UgYWRhcHRlcjsgaW1wbGVtZW50YXRpb25zIG1heSB1c2UgZmlsZXMsIGRhdGFiYXNlcywgb3IgRkZJLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NrQWRhcHRlciB7XG4gIC8qKiBBY3F1aXJlIHRoZSBrZXkncyBsZWFzZS4gT21pdCBgdGltZW91dE1zYCAob3IgcGFzcyBgMGApIHRvIHdhaXQgaW5kZWZpbml0ZWx5LiAqL1xuICBhY3F1aXJlKGtleTogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz47XG4gIHJlbGVhc2UobGVhc2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKiBDcm9zcy1sYW5ndWFnZSBjcmVkZW50aWFsIHBlcnNpc3RlbmNlIGNvbnRyYWN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVkZW50aWFsU3RvcmUge1xuICBsb2FkKGtleTogc3RyaW5nKTogUHJvbWlzZTxUb2tlbiB8IHVuZGVmaW5lZD47XG4gIHByZXBhcmVXcml0ZSgpOiBQcm9taXNlPHZvaWQ+O1xuICBzYXZlKGtleTogc3RyaW5nLCB0b2tlbjogVG9rZW4pOiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBhY3F1aXJlTG9jayhrZXk6IHN0cmluZywgdGltZW91dE1zPzogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+O1xuICByZWxlYXNlTG9jayhsZWFzZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgbmFtZSgpOiBzdHJpbmc7XG59XG5cbi8qKiBQcm92aWRlci1zcGVjaWZpYyB0b2tlbiBhY3F1aXNpdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5Qcm92aWRlciB7XG4gIGF1dGhlbnRpY2F0ZSh0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8VG9rZW4+O1xuICBsb2dpbih0aW1lb3V0TXM6IG51bWJlcik6IFByb21pc2U8VG9rZW4+O1xuICByZWZyZXNoKHRva2VuOiBUb2tlbik6IFByb21pc2U8VG9rZW4+O1xuICBjYW5BdXRoZW50aWNhdGVTaWxlbnRseSgpOiBib29sZWFuO1xufVxuXG4vKiogU3RhYmxlIGZhY2FkZSBzaGFyZWQgYnkgTm9kZSwgdGhlIENMSSwgYW5kIGdlbmVyYXRlZCBsYW5ndWFnZSBiaW5kaW5ncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENsaWVudCB7XG4gIGNoYWxsZW5nZSgpOiBQcm9taXNlPHZvaWQ+O1xuICB0b2tlbihsb2dpbj86IGJvb2xlYW4pOiBQcm9taXNlPEFjY2Vzc1Rva2VuPjtcbiAgYXV0aGVudGljYXRlKGxvZ2luPzogYm9vbGVhbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gIGF1dGhvcml6YXRpb25IZWFkZXJGb3JVcmwocmVxdWVzdFVybDogc3RyaW5nLCBsb2dpbj86IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHJlcXVlc3RIZWFkZXJzRm9yVXJsKHJlcXVlc3RVcmw6IHN0cmluZywgbG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcbiAgZm9yY2VSZWZyZXNoVG9rZW4obG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj47XG4gIHJlZnJlc2hSZWplY3RlZFRva2VuKHN0YWxlQWNjZXNzVG9rZW46IHN0cmluZywgbG9naW4/OiBib29sZWFuKTogUHJvbWlzZTxBY2Nlc3NUb2tlbj47XG4gIGxvZ291dCgpOiBQcm9taXNlPHZvaWQ+O1xuICBzdGF0dXMoKTogRGF0YWJyaWNrc0F1dGhTdGF0dXM7XG4gIHByaW5jaXBhbCgpOiBzdHJpbmc7XG4gIHdvcmtzcGFjZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXV0aEtpbmQoKTogQXV0aEtpbmQ7XG4gIHByb2ZpbGUobmFtZT86IHN0cmluZyk6IERhdGFicmlja3NQcm9maWxlU3VtbWFyeTtcbiAgbGlzdFByb2ZpbGVzKHJlZnJlc2g/OiBib29sZWFuKTogRGF0YWJyaWNrc1Byb2ZpbGVTdW1tYXJ5W107XG59XG5cbi8qKiBQdWJsaWMgT0F1dGggY2xpZW50IHVzZWQgYnkgRGF0YWJyaWNrcyBDTEktY29tcGF0aWJsZSB1c2VyIGF1dGhlbnRpY2F0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ0xJRU5UX0lEID0gXCJkYXRhYnJpY2tzLWNsaVwiO1xuLyoqIERlZmF1bHQgRGF0YWJyaWNrcyBwcm9maWxlIGNvbmZpZ3VyYXRpb24gcGF0aC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJR19GSUxFID0gXCJ+Ly5kYXRhYnJpY2tzY2ZnXCI7XG4vKiogRGVmYXVsdCBEYXRhYnJpY2tzIGFjY291bnQgY29uc29sZSBvcmlnaW4uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ0NPVU5UU19IT1NUID0gXCJodHRwczovL2FjY291bnRzLmNsb3VkLmRhdGFicmlja3MuY29tXCI7XG4vKiogQ2Fub25pY2FsIHJlcXVlc3QgaGVhZGVyIGNhcnJ5aW5nIGEgYmVhcmVyIGFjY2VzcyB0b2tlbi4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FDQ0VTU19UT0tFTl9IRUFERVIgPSBcImF1dGhvcml6YXRpb25cIjtcbi8qKiBDYW5vbmljYWwgcmVxdWVzdCBoZWFkZXIgY2FycnlpbmcgdGhlIHJlc29sdmVkIERhdGFicmlja3Mgd29ya3NwYWNlIElELiAqL1xuZXhwb3J0IGNvbnN0IFdPUktTUEFDRV9JRF9IRUFERVIgPSBcIngtZGF0YWJyaWNrcy13b3Jrc3BhY2UtaWRcIjtcbi8qKiBBdXRoZW50aWNhdGlvbiB0eXBlIGZvciBEYXRhYnJpY2tzIEFwcCBvbi1iZWhhbGYtb2YgcmVxdWVzdCBjcmVkZW50aWFscy4gKi9cbmV4cG9ydCBjb25zdCBBVVRIX1RZUEVfQVBQX09CTyA9IFwiYXBwX29ib1wiO1xuLyoqIEF1dGhlbnRpY2F0aW9uIHR5cGUgZm9yIERhdGFicmlja3MgQXBwIHNlcnZpY2UtcHJpbmNpcGFsIGNyZWRlbnRpYWxzLiAqL1xuZXhwb3J0IGNvbnN0IEFVVEhfVFlQRV9BUFBfU1AgPSBcImFwcF9zcFwiO1xuIl19
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -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/
|
|
1
|
+
{"root":["../src/_logging.ts","../src/_profile-core.ts","../src/_profile.ts","../src/databricks-auth.ts","../src/databricks-cli.ts","../src/errors.ts","../src/file-storage.ts","../src/http-client.ts","../src/lifecycle.ts","../src/personal-access-token.ts","../src/service-principal.ts","../src/storage.ts","../src/types.ts","../index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"typescript": "^5.9.3"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@dbx-tools/core": "^0.9.
|
|
29
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
28
|
+
"@dbx-tools/core": "^0.9.32",
|
|
29
|
+
"@dbx-tools/shared-core": "^0.9.32",
|
|
30
30
|
"ini": "^6.0.0",
|
|
31
31
|
"oauth4webapi": "^3.8.8"
|
|
32
32
|
},
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"./package.json": "./package.json"
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
-
"version": "0.9.
|
|
47
|
+
"version": "0.9.32",
|
|
48
48
|
"types": "./lib/index.d.ts",
|
|
49
49
|
"type": "module",
|
|
50
50
|
"exports": {
|
package/src/databricks-auth.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { authLogger, tokenMetadata } from "./_logging.ts";
|
|
|
7
7
|
import { AuthError } from "./errors.ts";
|
|
8
8
|
import { DatabricksCliProvider, resolveDatabricksCli } from "./databricks-cli.ts";
|
|
9
9
|
import { publicToken, TokenLifecycle } from "./lifecycle.ts";
|
|
10
|
-
import { FileCredentialStore } from "./
|
|
10
|
+
import { FileCredentialStore } from "./file-storage.ts";
|
|
11
11
|
import { DatabricksPersonalAccessTokenProvider } from "./personal-access-token.ts";
|
|
12
12
|
import {
|
|
13
13
|
listDatabricksProfiles,
|
|
@@ -17,12 +17,12 @@ interface TokenCache {
|
|
|
17
17
|
tokens: Record<string, unknown>;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
class
|
|
20
|
+
class FileLocks implements LockAdapter {
|
|
21
21
|
private readonly leases = new Map<string, FileLockLease>();
|
|
22
22
|
|
|
23
23
|
constructor(private readonly lockDirectory: string) {}
|
|
24
24
|
|
|
25
|
-
async acquire(key: string, timeoutMs
|
|
25
|
+
async acquire(key: string, timeoutMs?: number): Promise<string> {
|
|
26
26
|
logger.debug("waiting for file lock", {
|
|
27
27
|
credential: credentialId(key),
|
|
28
28
|
timeoutMs,
|
|
@@ -55,7 +55,7 @@ export class FileCredentialStore implements CredentialStore {
|
|
|
55
55
|
private readonly layout = FileLayout.Single,
|
|
56
56
|
locks?: LockAdapter,
|
|
57
57
|
) {
|
|
58
|
-
this.locks = locks ?? new
|
|
58
|
+
this.locks = locks ?? new FileLocks(join(root, "locks"));
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
async load(key: string): Promise<Token | undefined> {
|
|
@@ -103,7 +103,7 @@ export class FileCredentialStore implements CredentialStore {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
acquireLock(key: string, timeoutMs
|
|
106
|
+
acquireLock(key: string, timeoutMs?: number): Promise<string> {
|
|
107
107
|
return this.locks.acquire(
|
|
108
108
|
this.layout === FileLayout.Single ? `${this.root}:refresh` : `${this.root}:${key}:refresh`,
|
|
109
109
|
timeoutMs,
|