@dbx-tools/cli 0.6.130 → 0.6.133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -7
- package/lib/src/cli.js +10 -7
- package/package.json +7 -6
- package/src/cli.ts +17 -6
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# @dbx-tools/cli
|
|
2
2
|
|
|
3
|
-
The single `dbx` CLI: workspace lifecycle, Model Serving proxy, AppKit env,
|
|
4
|
-
a gated public tunnel.
|
|
3
|
+
The single `dbx` CLI: workspace lifecycle, Model Serving proxy, AppKit env,
|
|
4
|
+
local token brokering, and a gated public tunnel.
|
|
5
5
|
|
|
6
|
-
This package installs one command, `dbx` (aliased `dbx-tools`), with
|
|
6
|
+
This package installs one command, `dbx` (aliased `dbx-tools`), with five
|
|
7
7
|
groups:
|
|
8
8
|
|
|
9
9
|
| Command | What it does |
|
|
@@ -12,6 +12,7 @@ groups:
|
|
|
12
12
|
| `dbx model-proxy` | Local OpenAI-compatible proxy in front of Databricks Model Serving. |
|
|
13
13
|
| `dbx appkit env` | Print the environment an AppKit app resolves, as eval-able shell output. |
|
|
14
14
|
| `dbx tunnel` | Front any command with a public portr tunnel and an email-OTP gate. |
|
|
15
|
+
| `dbx token` | Broker short-lived provider tokens for host and container clients. |
|
|
15
16
|
|
|
16
17
|
Key features:
|
|
17
18
|
|
|
@@ -29,10 +30,11 @@ Key features:
|
|
|
29
30
|
Every feature group lives in its own package -
|
|
30
31
|
[`@dbx-tools/cli-model-proxy`](../model-proxy),
|
|
31
32
|
[`@dbx-tools/cli-appkit-env`](../appkit-env), and
|
|
32
|
-
[`@dbx-tools/cli-tunnel`](../tunnel)
|
|
33
|
-
is matched, so `dbx dev` never pays
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
[`@dbx-tools/cli-tunnel`](../tunnel), and [`@dbx-tools/cli-token`](../token) -
|
|
34
|
+
and is imported LAZILY, only once its name is matched, so `dbx dev` never pays
|
|
35
|
+
to load the Databricks SDK, AppKit, SMTP, keychain, or X.509 stack. Run
|
|
36
|
+
`dbx <group> --help` for a group's own flags; each forwards `--help` to the child
|
|
37
|
+
program rather than answering it at the root.
|
|
36
38
|
|
|
37
39
|
## Bootstrap A Workspace
|
|
38
40
|
|
|
@@ -85,6 +87,18 @@ See [`@dbx-tools/cli-model-proxy`](../model-proxy) and
|
|
|
85
87
|
[`@dbx-tools/cli-appkit-env`](../appkit-env) for the full flag surface, auth
|
|
86
88
|
resolution, and output formats.
|
|
87
89
|
|
|
90
|
+
## Broker Local Provider Tokens
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
dbx token serve --google --auth jwt --bind-docker
|
|
94
|
+
dbx token client-token container-client --scope https://www.googleapis.com/auth/gmail.modify
|
|
95
|
+
dbx token access-token --client container-client
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The broker keeps Google ADC under gcloud, caches access tokens only in memory,
|
|
99
|
+
and defaults to mTLS. See [`@dbx-tools/cli-token`](../token) for service
|
|
100
|
+
installation, client authorization, Docker, Podman, and configuration.
|
|
101
|
+
|
|
88
102
|
## Put A Gated Public URL In Front Of A Command
|
|
89
103
|
|
|
90
104
|
```sh
|
package/lib/src/cli.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The single `dbx` (alias `dbx-tools`) commander entry.
|
|
3
3
|
*
|
|
4
|
-
* One bin,
|
|
4
|
+
* One bin, five command groups:
|
|
5
5
|
* - `dev` - workspace lifecycle: detect the root, bootstrap or repair, then
|
|
6
6
|
* forward whatever follows to projen. This is the passthrough, and it is an
|
|
7
7
|
* EXPLICIT subcommand rather than the bare root action so a projen task
|
|
8
8
|
* name can never shadow (or be shadowed by) a sibling command.
|
|
9
9
|
* - `model-proxy` - the local OpenAI-compatible Model Serving proxy.
|
|
10
10
|
* - `appkit` - AppKit environment helpers (`appkit env`).
|
|
11
|
+
* - `tunnel` - public portr tunnel with passwordless access gating.
|
|
12
|
+
* - `token` - local provider access-token broker.
|
|
11
13
|
*
|
|
12
|
-
* The
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* The four feature groups stay in sibling packages and are `await import()`ed
|
|
15
|
+
* only once their name is matched, so `dbx dev` never loads the Databricks SDK,
|
|
16
|
+
* AppKit, tunnel, or token-broker dependencies. That lazy hop is also why they
|
|
17
|
+
* are mounted as ARG-FORWARDING commands instead of
|
|
16
18
|
* `addCommand()`: building a child program eagerly to register it would defeat
|
|
17
19
|
* the point. Each forwards its own `--help`, so the child prints its real help.
|
|
18
20
|
*
|
|
@@ -78,7 +80,7 @@ function addForwardedCommand(program, name, description, load) {
|
|
|
78
80
|
export function buildProgram(name = PROGRAM_NAMES[0]) {
|
|
79
81
|
const program = new Command()
|
|
80
82
|
.name(name)
|
|
81
|
-
.description("Databricks developer tools: workspace lifecycle, model proxy, AppKit env")
|
|
83
|
+
.description("Databricks developer tools: workspace lifecycle, model proxy, AppKit env, tunnel, and token broker")
|
|
82
84
|
.showHelpAfterError()
|
|
83
85
|
.helpOption("-h, --help", `Show ${name} help`);
|
|
84
86
|
program
|
|
@@ -94,6 +96,7 @@ export function buildProgram(name = PROGRAM_NAMES[0]) {
|
|
|
94
96
|
addForwardedCommand(program, "model-proxy", "Serve a local OpenAI-compatible proxy in front of Databricks Model Serving", async () => (await import("@dbx-tools/cli-model-proxy/cli")).buildProgram);
|
|
95
97
|
addForwardedCommand(program, "appkit", "AppKit helpers (env: print the environment an AppKit app resolves)", async () => (await import("@dbx-tools/cli-appkit-env/cli")).buildProgram);
|
|
96
98
|
addForwardedCommand(program, "tunnel", "Run a public portr tunnel with an email-OTP gate", async () => (await import("@dbx-tools/cli-tunnel/cli")).buildProgram);
|
|
99
|
+
addForwardedCommand(program, "token", "Broker short-lived provider access tokens for local development", async () => (await import("@dbx-tools/cli-token/cli")).buildProgram);
|
|
97
100
|
return program;
|
|
98
101
|
}
|
|
99
102
|
/**
|
|
@@ -108,4 +111,4 @@ function programName(argv) {
|
|
|
108
111
|
export async function runCli(argv) {
|
|
109
112
|
await buildProgram(programName(argv)).parseAsync(argv);
|
|
110
113
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUUsc0VBQXNFO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBRXBEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQW9CLEVBQUUsUUFBaUI7SUFDL0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLE9BQU87SUFDVCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsSUFBSSxD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QUFvRTtBQUNwRSxNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUFjO0lBQ3pDLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2luZ2xlIGBkYnhgIChhbGlhcyBgZGJ4LXRvb2xzYCkgY29tbWFuZGVyIGVudHJ5LlxuICpcbiAqIE9uZSBiaW4sIHRocmVlIGNvbW1hbmQgZ3JvdXBzOlxuICogICAtIGBkZXZgIC0gd29ya3NwYWNlIGxpZmVjeWNsZTogZGV0ZWN0IHRoZSByb290LCBib290c3RyYXAgb3IgcmVwYWlyLCB0aGVuXG4gKiAgICAgZm9yd2FyZCB3aGF0ZXZlciBmb2xsb3dzIHRvIHByb2plbi4gVGhpcyBpcyB0aGUgcGFzc3Rocm91Z2gsIGFuZCBpdCBpcyBhblxuICogICAgIEVYUExJQ0lUIHN1YmNvbW1hbmQgcmF0aGVyIHRoYW4gdGhlIGJhcmUgcm9vdCBhY3Rpb24gc28gYSBwcm9qZW4gdGFza1xuICogICAgIG5hbWUgY2FuIG5ldmVyIHNoYWRvdyAob3IgYmUgc2hhZG93ZWQgYnkpIGEgc2libGluZyBjb21tYW5kLlxuICogICAtIGBtb2RlbC1wcm94eWAgLSB0aGUgbG9jYWwgT3BlbkFJLWNvbXBhdGlibGUgTW9kZWwgU2VydmluZyBwcm94eS5cbiAqICAgLSBgYXBwa2l0YCAtIEFwcEtpdCBlbnZpcm9ubWVudCBoZWxwZXJzIChgYXBwa2l0IGVudmApLlxuICpcbiAqIFRoZSB0d28gZmVhdHVyZSBncm91cHMgc3RheSBpbiB0aGVpciBvd24gcGFja2FnZXMgKGBAZGJ4LXRvb2xzL2NsaS1tb2RlbC1wcm94eWAsXG4gKiBgQGRieC10b29scy9jbGktYXBwa2l0LWVudmApIGFuZCBhcmUgYGF3YWl0IGltcG9ydCgpYGVkIG9ubHkgb25jZSB0aGVpciBuYW1lIGlzXG4gKiBtYXRjaGVkLCBzbyBgZGJ4IGRldmAgbmV2ZXIgbG9hZHMgdGhlIERhdGFicmlja3MgU0RLIG9yIEFwcEtpdC4gVGhhdCBsYXp5IGhvcFxuICogaXMgYWxzbyB3aHkgdGhleSBhcmUgbW91bnRlZCBhcyBBUkctRk9SV0FSRElORyBjb21tYW5kcyBpbnN0ZWFkIG9mXG4gKiBgYWRkQ29tbWFuZCgpYDogYnVpbGRpbmcgYSBjaGlsZCBwcm9ncmFtIGVhZ2VybHkgdG8gcmVnaXN0ZXIgaXQgd291bGQgZGVmZWF0XG4gKiB0aGUgcG9pbnQuIEVhY2ggZm9yd2FyZHMgaXRzIG93biBgLS1oZWxwYCwgc28gdGhlIGNoaWxkIHByaW50cyBpdHMgcmVhbCBoZWxwLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHtcbiAgYm9vdHN0cmFwV29ya3NwYWNlLFxuICBlbnN1cmVFbmdpbmVDdXJyZW50LFxuICBydW5Jbml0aWFsU3ludGgsXG4gIHNlZWRUb29sY2hhaW4sXG59IGZyb20gXCIuL2Jvb3RzdHJhcC50c1wiO1xuaW1wb3J0IHsgZW5zdXJlV29ya3NwYWNlUmVhZHksIHJ1bkJ1biwgcnVuUHJvamVuIH0gZnJvbSBcIi4vYnVuLnRzXCI7XG5pbXBvcnQgeyBmaW5kV29ya3NwYWNlUm9vdCwgbmVlZHNCb290c3RyYXAsIG5lZWRzVG9vbGNoYWluIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG4vKiogQ29tbWFuZHMgdGhlIGJpbiBleHBvc2VzLCBhbmQgdGhlIG5hbWVzIGhlbHAgaXMgcmVuZGVyZWQgdW5kZXIuICovXG5jb25zdCBQUk9HUkFNX05BTUVTID0gW1wiZGJ4XCIsIFwiZGJ4LXRvb2xzXCJdIGFzIGNvbnN0O1xuXG4vKipcbiAqIFByZXBhcmUgdGhlIHdvcmtzcGFjZSBhdCBgcm9vdGAsIHRoZW4gcnVuIHByb2plbiAodmlhIGJ1bikgd2l0aCBgcHJvamVuQXJnc2AuXG4gKlxuICogVGhyZWUgY2FzZXMsIGluIG9yZGVyOlxuICogICAtIG5vIGAucHJvamVucmMudHNgIGF0IGFsbCAtPiBmdWxsIGJvb3RzdHJhcCAoc2NhZmZvbGQgKyBpbnN0YWxsICsgc3ludGgpLFxuICogICAgIHdoaWNoIGFscmVhZHkgcnVucyB0aGUgaW5pdGlhbCBzeW50aDsgbm90aGluZyBtb3JlIHRvIGZvcndhcmQuXG4gKiAgIC0gYSBgLnByb2plbnJjLnRzYCBidXQgdGhlIGVuZ2luZS90b29sY2hhaW4gaXNuJ3QgaW5zdGFsbGVkIChlLmcuIGEgZnJlc2hseVxuICogICAgIGNvcGllZCBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBmaWxlcyArIG1hbmlmZXN0cyBhcmUgZ2l0aWdub3JlZCkgLT4gc2VlZFxuICogICAgIHRoZSB0b29sY2hhaW4sIHRoZW4gcnVuIHRoZSBJTklUSUFMIHN5bnRoIGRpcmVjdGx5ICh0aGUgcHJvamVuIHRhc2tzIHRoZVxuICogICAgIGFyZ3Mgd291bGQgbmFtZSwgbGlrZSBgc3luY2AsIGRvbid0IGV4aXN0IHVudGlsIGAucHJvamVucmMudHNgIGhhcyBydW5cbiAqICAgICBvbmNlKSwgYW5kIGluc3RhbGwuIERvbid0IGZvcndhcmQgYHByb2plbkFyZ3NgIC0gdGhlIHN5bnRoIGlzIHRoZSB3b3JrLlxuICogICAtIG90aGVyd2lzZSAoZXN0YWJsaXNoZWQgd29ya3NwYWNlKSAtPiBlbnN1cmUgZGVwcywgYnJpbmcgdGhlIGVuZ2luZSB1cCB0b1xuICogICAgIHRoaXMgQ0xJJ3MgdmVyc2lvbiwgdGhlbiBmb3J3YXJkIHRvIHByb2plbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBbmRSdW5Qcm9qZW4ocHJvamVuQXJnczogc3RyaW5nW10sIHN0YXJ0RGlyPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvb3QgPSBhd2FpdCBmaW5kV29ya3NwYWNlUm9vdChzdGFydERpcik7XG4gIGlmIChuZWVkc0Jvb3RzdHJhcChyb290KSkge1xuICAgIGJvb3RzdHJhcFdvcmtzcGFjZShyb290KTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5lZWRzVG9vbGNoYWluKHJvb3QpKSB7XG4gICAgc2VlZFRvb2xjaGFpbihyb290KTtcbiAgICBydW5Jbml0aWFsU3ludGgocm9vdCk7XG4gICAgcnVuQnVuKFtcImluc3RhbGxcIl0sIHJvb3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbnN1cmVXb3Jrc3BhY2VSZWFkeShyb290KTtcbiAgZW5zdXJlRW5naW5lQ3VycmVudChyb290KTtcbiAgcnVuUHJvamVuKHByb2plbkFyZ3MsIHJvb3QpO1xufVxuXG4vKipcbiAqIE1vdW50IGBuYW1lYCBhcyBhIGNvbW1hbmQgdGhhdCBjYXB0dXJlcyBldmVyeSBmb2xsb3dpbmcgdG9rZW4gdmVyYmF0aW0gYW5kXG4gKiBoYW5kcyBpdCB0byB0aGUgcHJvZ3JhbSBgbG9hZCgpYCByZXNvbHZlcy4gYGhlbHBPcHRpb24oZmFsc2UpYCBpcyB3aGF0IGxldHNcbiAqIGAtLWhlbHBgIHRocm91Z2ggdG8gdGhlIGNoaWxkIGluc3RlYWQgb2YgYmVpbmcgYW5zd2VyZWQgaGVyZSwgYW5kIHRoZSBjaGlsZFxuICogcHJvZ3JhbSBvd25zIGl0cyBvd24gZmxhZ3MsIHNvIHRoaXMgd3JhcHBlciBuZXZlciBoYXMgdG8gcmVzdGF0ZSB0aGVtLlxuICovXG5mdW5jdGlvbiBhZGRGb3J3YXJkZWRDb21tYW5kKFxuICBwcm9ncmFtOiBDb21tYW5kLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIGxvYWQ6ICgpID0+IFByb21pc2U8KG5hbWU6IHN0cmluZykgPT4gQ29tbWFuZD4sXG4pOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKG5hbWUpXG4gICAgLmRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKVxuICAgIC5hcmd1bWVudChcIlthcmdzLi4uXVwiLCBgYXJndW1lbnRzIGZvcndhcmRlZCB0byAke25hbWV9YClcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKGFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBidWlsZFByb2dyYW0gPSBhd2FpdCBsb2FkKCk7XG4gICAgICBhd2FpdCBidWlsZFByb2dyYW0oYCR7cHJvZ3JhbS5uYW1lKCl9ICR7bmFtZX1gKS5wYXJzZUFzeW5jKGFyZ3MsIHsgZnJvbTogXCJ1c2VyXCIgfSk7XG4gICAgfSk7XG59XG5cbi8qKiBCdWlsZCB0aGUgYGRieGAgY29tbWFuZGVyIHByb2dyYW0gKG5vIHNpZGUgZWZmZWN0cyB1bnRpbCBwYXJzZWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lOiBzdHJpbmcgPSBQUk9HUkFNX05BTUVTWzBdKTogQ29tbWFuZCB7XG4gIGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUobmFtZSlcbiAgICAuZGVzY3JpcHRpb24oXCJEYXRhYnJpY2tzIGRldmVsb3BlciB0b29sczogd29ya3NwYWNlIGxpZmVjeWNsZSwgbW9kZWwgcHJveHksIEFwcEtpdCBlbnZcIilcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKClcbiAgICAuaGVscE9wdGlvbihcIi1oLCAtLWhlbHBcIiwgYFNob3cgJHtuYW1lfSBoZWxwYCk7XG5cbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiZGV2XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQm9vdHN0cmFwIG9yIHJlcGFpciBhIGRieC10b29scyB3b3Jrc3BhY2UsIHRoZW4gZm9yd2FyZCB0byBwcm9qZW5cIilcbiAgICAuYXJndW1lbnQoXCJbcHJvamVuQXJncy4uLl1cIiwgXCJwcm9qZW4gdGFzayBhbmQgYXJndW1lbnRzIChlLmcuIHN5bmMgLS13YXRjaClcIilcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKHByb2plbkFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBhd2FpdCBwcmVwYXJlQW5kUnVuUHJvamVuKHByb2plbkFyZ3MpO1xuICAgIH0pO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcIm1vZGVsLXByb3h5XCIsXG4gICAgXCJTZXJ2ZSBhIGxvY2FsIE9wZW5BSS1jb21wYXRpYmxlIHByb3h5IGluIGZyb250IG9mIERhdGFicmlja3MgTW9kZWwgU2VydmluZ1wiLFxuICAgIGFzeW5jICgpID0+IChhd2FpdCBpbXBvcnQoXCJAZGJ4LXRvb2xzL2NsaS1tb2RlbC1wcm94eS9jbGlcIikpLmJ1aWxkUHJvZ3JhbSxcbiAgKTtcblxuICBhZGRGb3J3YXJkZWRDb21tYW5kKFxuICAgIHByb2dyYW0sXG4gICAgXCJhcHBraXRcIixcbiAgICBcIkFwcEtpdCBoZWxwZXJzIChlbnY6IHByaW50IHRoZSBlbnZpcm9ubWVudCBhbiBBcHBLaXQgYXBwIHJlc29sdmVzKVwiLFxuICAgIGFzeW5jICgpID0+IChhd2FpdCBpbXBvcnQoXCJAZGJ4LXRvb2xzL2NsaS1hcHBraXQtZW52L2NsaVwiKSkuYnVpbGRQcm9ncmFtLFxuICApO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcInR1bm5lbFwiLFxuICAgIFwiUnVuIGEgcHVibGljIHBvcnRyIHR1bm5lbCB3aXRoIGFuIGVtYWlsLU9UUCBnYXRlXCIsXG4gICAgYXN5bmMgKCkgPT4gKGF3YWl0IGltcG9ydChcIkBkYngtdG9vbHMvY2xpLXR1bm5lbC9jbGlcIikpLmJ1aWxkUHJvZ3JhbSxcbiAgKTtcblxuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLyoqXG4gKiBQcm9ncmFtIG5hbWUgZm9yIGhlbHAgb3V0cHV0OiB3aGljaGV2ZXIgYmluIHRoZSB1c2VyIGFjdHVhbGx5IHR5cGVkLCBzb1xuICogYGRieC10b29scyAtLWhlbHBgIGRvZXNuJ3QgZG9jdW1lbnQgaXRzZWxmIGFzIGBkYnhgLiBGYWxscyBiYWNrIHRvIGBkYnhgLlxuICovXG5mdW5jdGlvbiBwcm9ncmFtTmFtZShhcmd2OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGludm9rZWQgPSBhcmd2WzFdID8gYmFzZW5hbWUoYXJndlsxXSkucmVwbGFjZSgvXFwuKD86W2NtXT9banRdcykkLywgXCJcIikgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBQUk9HUkFNX05BTUVTLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlID09PSBpbnZva2VkKSA/PyBQUk9HUkFNX05BTUVTWzBdO1xufVxuXG4vKiogUGFyc2UgYGFyZ3ZgIChhIGBwcm9jZXNzLmFyZ3ZgKSBhbmQgcnVuIHRoZSBtYXRjaGluZyBjb21tYW5kLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNsaShhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBidWlsZFByb2dyYW0ocHJvZ3JhbU5hbWUoYXJndikpLnBhcnNlQXN5bmMoYXJndik7XG59XG4iXX0=
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU5RSxzRUFBc0U7QUFDdEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsVUFBb0IsRUFBRSxRQUFpQjtJQUMvRSxNQUFNLElBQUksR0FBRyxNQUFNLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDekIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTztJQUNULENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxJQUFJ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UyxDQUFDO0lBQ3pGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQWM7SUFDekMsTUFBTSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBzaW5nbGUgYGRieGAgKGFsaWFzIGBkYngtdG9vbHNgKSBjb21tYW5kZXIgZW50cnkuXG4gKlxuICogT25lIGJpbiwgZml2ZSBjb21tYW5kIGdyb3VwczpcbiAqICAgLSBgZGV2YCAtIHdvcmtzcGFjZSBsaWZlY3ljbGU6IGRldGVjdCB0aGUgcm9vdCwgYm9vdHN0cmFwIG9yIHJlcGFpciwgdGhlblxuICogICAgIGZvcndhcmQgd2hhdGV2ZXIgZm9sbG93cyB0byBwcm9qZW4uIFRoaXMgaXMgdGhlIHBhc3N0aHJvdWdoLCBhbmQgaXQgaXMgYW5cbiAqICAgICBFWFBMSUNJVCBzdWJjb21tYW5kIHJhdGhlciB0aGFuIHRoZSBiYXJlIHJvb3QgYWN0aW9uIHNvIGEgcHJvamVuIHRhc2tcbiAqICAgICBuYW1lIGNhbiBuZXZlciBzaGFkb3cgKG9yIGJlIHNoYWRvd2VkIGJ5KSBhIHNpYmxpbmcgY29tbWFuZC5cbiAqICAgLSBgbW9kZWwtcHJveHlgIC0gdGhlIGxvY2FsIE9wZW5BSS1jb21wYXRpYmxlIE1vZGVsIFNlcnZpbmcgcHJveHkuXG4gKiAgIC0gYGFwcGtpdGAgLSBBcHBLaXQgZW52aXJvbm1lbnQgaGVscGVycyAoYGFwcGtpdCBlbnZgKS5cbiAqICAgLSBgdHVubmVsYCAtIHB1YmxpYyBwb3J0ciB0dW5uZWwgd2l0aCBwYXNzd29yZGxlc3MgYWNjZXNzIGdhdGluZy5cbiAqICAgLSBgdG9rZW5gIC0gbG9jYWwgcHJvdmlkZXIgYWNjZXNzLXRva2VuIGJyb2tlci5cbiAqXG4gKiBUaGUgZm91ciBmZWF0dXJlIGdyb3VwcyBzdGF5IGluIHNpYmxpbmcgcGFja2FnZXMgYW5kIGFyZSBgYXdhaXQgaW1wb3J0KClgZWRcbiAqIG9ubHkgb25jZSB0aGVpciBuYW1lIGlzIG1hdGNoZWQsIHNvIGBkYnggZGV2YCBuZXZlciBsb2FkcyB0aGUgRGF0YWJyaWNrcyBTREssXG4gKiBBcHBLaXQsIHR1bm5lbCwgb3IgdG9rZW4tYnJva2VyIGRlcGVuZGVuY2llcy4gVGhhdCBsYXp5IGhvcCBpcyBhbHNvIHdoeSB0aGV5XG4gKiBhcmUgbW91bnRlZCBhcyBBUkctRk9SV0FSRElORyBjb21tYW5kcyBpbnN0ZWFkIG9mXG4gKiBgYWRkQ29tbWFuZCgpYDogYnVpbGRpbmcgYSBjaGlsZCBwcm9ncmFtIGVhZ2VybHkgdG8gcmVnaXN0ZXIgaXQgd291bGQgZGVmZWF0XG4gKiB0aGUgcG9pbnQuIEVhY2ggZm9yd2FyZHMgaXRzIG93biBgLS1oZWxwYCwgc28gdGhlIGNoaWxkIHByaW50cyBpdHMgcmVhbCBoZWxwLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHtcbiAgYm9vdHN0cmFwV29ya3NwYWNlLFxuICBlbnN1cmVFbmdpbmVDdXJyZW50LFxuICBydW5Jbml0aWFsU3ludGgsXG4gIHNlZWRUb29sY2hhaW4sXG59IGZyb20gXCIuL2Jvb3RzdHJhcC50c1wiO1xuaW1wb3J0IHsgZW5zdXJlV29ya3NwYWNlUmVhZHksIHJ1bkJ1biwgcnVuUHJvamVuIH0gZnJvbSBcIi4vYnVuLnRzXCI7XG5pbXBvcnQgeyBmaW5kV29ya3NwYWNlUm9vdCwgbmVlZHNCb290c3RyYXAsIG5lZWRzVG9vbGNoYWluIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG4vKiogQ29tbWFuZHMgdGhlIGJpbiBleHBvc2VzLCBhbmQgdGhlIG5hbWVzIGhlbHAgaXMgcmVuZGVyZWQgdW5kZXIuICovXG5jb25zdCBQUk9HUkFNX05BTUVTID0gW1wiZGJ4XCIsIFwiZGJ4LXRvb2xzXCJdIGFzIGNvbnN0O1xuXG4vKipcbiAqIFByZXBhcmUgdGhlIHdvcmtzcGFjZSBhdCBgcm9vdGAsIHRoZW4gcnVuIHByb2plbiAodmlhIGJ1bikgd2l0aCBgcHJvamVuQXJnc2AuXG4gKlxuICogVGhyZWUgY2FzZXMsIGluIG9yZGVyOlxuICogICAtIG5vIGAucHJvamVucmMudHNgIGF0IGFsbCAtPiBmdWxsIGJvb3RzdHJhcCAoc2NhZmZvbGQgKyBpbnN0YWxsICsgc3ludGgpLFxuICogICAgIHdoaWNoIGFscmVhZHkgcnVucyB0aGUgaW5pdGlhbCBzeW50aDsgbm90aGluZyBtb3JlIHRvIGZvcndhcmQuXG4gKiAgIC0gYSBgLnByb2plbnJjLnRzYCBidXQgdGhlIGVuZ2luZS90b29sY2hhaW4gaXNuJ3QgaW5zdGFsbGVkIChlLmcuIGEgZnJlc2hseVxuICogICAgIGNvcGllZCBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBmaWxlcyArIG1hbmlmZXN0cyBhcmUgZ2l0aWdub3JlZCkgLT4gc2VlZFxuICogICAgIHRoZSB0b29sY2hhaW4sIHRoZW4gcnVuIHRoZSBJTklUSUFMIHN5bnRoIGRpcmVjdGx5ICh0aGUgcHJvamVuIHRhc2tzIHRoZVxuICogICAgIGFyZ3Mgd291bGQgbmFtZSwgbGlrZSBgc3luY2AsIGRvbid0IGV4aXN0IHVudGlsIGAucHJvamVucmMudHNgIGhhcyBydW5cbiAqICAgICBvbmNlKSwgYW5kIGluc3RhbGwuIERvbid0IGZvcndhcmQgYHByb2plbkFyZ3NgIC0gdGhlIHN5bnRoIGlzIHRoZSB3b3JrLlxuICogICAtIG90aGVyd2lzZSAoZXN0YWJsaXNoZWQgd29ya3NwYWNlKSAtPiBlbnN1cmUgZGVwcywgYnJpbmcgdGhlIGVuZ2luZSB1cCB0b1xuICogICAgIHRoaXMgQ0xJJ3MgdmVyc2lvbiwgdGhlbiBmb3J3YXJkIHRvIHByb2plbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBbmRSdW5Qcm9qZW4ocHJvamVuQXJnczogc3RyaW5nW10sIHN0YXJ0RGlyPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvb3QgPSBhd2FpdCBmaW5kV29ya3NwYWNlUm9vdChzdGFydERpcik7XG4gIGlmIChuZWVkc0Jvb3RzdHJhcChyb290KSkge1xuICAgIGJvb3RzdHJhcFdvcmtzcGFjZShyb290KTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5lZWRzVG9vbGNoYWluKHJvb3QpKSB7XG4gICAgc2VlZFRvb2xjaGFpbihyb290KTtcbiAgICBydW5Jbml0aWFsU3ludGgocm9vdCk7XG4gICAgcnVuQnVuKFtcImluc3RhbGxcIl0sIHJvb3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbnN1cmVXb3Jrc3BhY2VSZWFkeShyb290KTtcbiAgZW5zdXJlRW5naW5lQ3VycmVudChyb290KTtcbiAgcnVuUHJvamVuKHByb2plbkFyZ3MsIHJvb3QpO1xufVxuXG4vKipcbiAqIE1vdW50IGBuYW1lYCBhcyBhIGNvbW1hbmQgdGhhdCBjYXB0dXJlcyBldmVyeSBmb2xsb3dpbmcgdG9rZW4gdmVyYmF0aW0gYW5kXG4gKiBoYW5kcyBpdCB0byB0aGUgcHJvZ3JhbSBgbG9hZCgpYCByZXNvbHZlcy4gYGhlbHBPcHRpb24oZmFsc2UpYCBpcyB3aGF0IGxldHNcbiAqIGAtLWhlbHBgIHRocm91Z2ggdG8gdGhlIGNoaWxkIGluc3RlYWQgb2YgYmVpbmcgYW5zd2VyZWQgaGVyZSwgYW5kIHRoZSBjaGlsZFxuICogcHJvZ3JhbSBvd25zIGl0cyBvd24gZmxhZ3MsIHNvIHRoaXMgd3JhcHBlciBuZXZlciBoYXMgdG8gcmVzdGF0ZSB0aGVtLlxuICovXG5mdW5jdGlvbiBhZGRGb3J3YXJkZWRDb21tYW5kKFxuICBwcm9ncmFtOiBDb21tYW5kLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIGxvYWQ6ICgpID0+IFByb21pc2U8KG5hbWU6IHN0cmluZykgPT4gQ29tbWFuZD4sXG4pOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKG5hbWUpXG4gICAgLmRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKVxuICAgIC5hcmd1bWVudChcIlthcmdzLi4uXVwiLCBgYXJndW1lbnRzIGZvcndhcmRlZCB0byAke25hbWV9YClcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKGFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBidWlsZFByb2dyYW0gPSBhd2FpdCBsb2FkKCk7XG4gICAgICBhd2FpdCBidWlsZFByb2dyYW0oYCR7cHJvZ3JhbS5uYW1lKCl9ICR7bmFtZX1gKS5wYXJzZUFzeW5jKGFyZ3MsIHsgZnJvbTogXCJ1c2VyXCIgfSk7XG4gICAgfSk7XG59XG5cbi8qKiBCdWlsZCB0aGUgYGRieGAgY29tbWFuZGVyIHByb2dyYW0gKG5vIHNpZGUgZWZmZWN0cyB1bnRpbCBwYXJzZWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lOiBzdHJpbmcgPSBQUk9HUkFNX05BTUVTWzBdKTogQ29tbWFuZCB7XG4gIGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUobmFtZSlcbiAgICAuZGVzY3JpcHRpb24oXG4gICAgICBcIkRhdGFicmlja3MgZGV2ZWxvcGVyIHRvb2xzOiB3b3Jrc3BhY2UgbGlmZWN5Y2xlLCBtb2RlbCBwcm94eSwgQXBwS2l0IGVudiwgdHVubmVsLCBhbmQgdG9rZW4gYnJva2VyXCIsXG4gICAgKVxuICAgIC5zaG93SGVscEFmdGVyRXJyb3IoKVxuICAgIC5oZWxwT3B0aW9uKFwiLWgsIC0taGVscFwiLCBgU2hvdyAke25hbWV9IGhlbHBgKTtcblxuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoXCJkZXZcIilcbiAgICAuZGVzY3JpcHRpb24oXCJCb290c3RyYXAgb3IgcmVwYWlyIGEgZGJ4LXRvb2xzIHdvcmtzcGFjZSwgdGhlbiBmb3J3YXJkIHRvIHByb2plblwiKVxuICAgIC5hcmd1bWVudChcIltwcm9qZW5BcmdzLi4uXVwiLCBcInByb2plbiB0YXNrIGFuZCBhcmd1bWVudHMgKGUuZy4gc3luYyAtLXdhdGNoKVwiKVxuICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cygpXG4gICAgLmhlbHBPcHRpb24oZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAocHJvamVuQXJnczogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHByZXBhcmVBbmRSdW5Qcm9qZW4ocHJvamVuQXJncyk7XG4gICAgfSk7XG5cbiAgYWRkRm9yd2FyZGVkQ29tbWFuZChcbiAgICBwcm9ncmFtLFxuICAgIFwibW9kZWwtcHJveHlcIixcbiAgICBcIlNlcnZlIGEgbG9jYWwgT3BlbkFJLWNvbXBhdGlibGUgcHJveHkgaW4gZnJvbnQgb2YgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nXCIsXG4gICAgYXN5bmMgKCkgPT4gKGF3YWl0IGltcG9ydChcIkBkYngtdG9vbHMvY2xpLW1vZGVsLXByb3h5L2NsaVwiKSkuYnVpbGRQcm9ncmFtLFxuICApO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcImFwcGtpdFwiLFxuICAgIFwiQXBwS2l0IGhlbHBlcnMgKGVudjogcHJpbnQgdGhlIGVudmlyb25tZW50IGFuIEFwcEtpdCBhcHAgcmVzb2x2ZXMpXCIsXG4gICAgYXN5bmMgKCkgPT4gKGF3YWl0IGltcG9ydChcIkBkYngtdG9vbHMvY2xpLWFwcGtpdC1lbnYvY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgYWRkRm9yd2FyZGVkQ29tbWFuZChcbiAgICBwcm9ncmFtLFxuICAgIFwidHVubmVsXCIsXG4gICAgXCJSdW4gYSBwdWJsaWMgcG9ydHIgdHVubmVsIHdpdGggYW4gZW1haWwtT1RQIGdhdGVcIixcbiAgICBhc3luYyAoKSA9PiAoYXdhaXQgaW1wb3J0KFwiQGRieC10b29scy9jbGktdHVubmVsL2NsaVwiKSkuYnVpbGRQcm9ncmFtLFxuICApO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcInRva2VuXCIsXG4gICAgXCJCcm9rZXIgc2hvcnQtbGl2ZWQgcHJvdmlkZXIgYWNjZXNzIHRva2VucyBmb3IgbG9jYWwgZGV2ZWxvcG1lbnRcIixcbiAgICBhc3luYyAoKSA9PiAoYXdhaXQgaW1wb3J0KFwiQGRieC10b29scy9jbGktdG9rZW4vY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG5cbi8qKlxuICogUHJvZ3JhbSBuYW1lIGZvciBoZWxwIG91dHB1dDogd2hpY2hldmVyIGJpbiB0aGUgdXNlciBhY3R1YWxseSB0eXBlZCwgc29cbiAqIGBkYngtdG9vbHMgLS1oZWxwYCBkb2Vzbid0IGRvY3VtZW50IGl0c2VsZiBhcyBgZGJ4YC4gRmFsbHMgYmFjayB0byBgZGJ4YC5cbiAqL1xuZnVuY3Rpb24gcHJvZ3JhbU5hbWUoYXJndjogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBpbnZva2VkID0gYXJndlsxXSA/IGJhc2VuYW1lKGFyZ3ZbMV0pLnJlcGxhY2UoL1xcLig/OltjbV0/W2p0XXMpJC8sIFwiXCIpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gUFJPR1JBTV9OQU1FUy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZSA9PT0gaW52b2tlZCkgPz8gUFJPR1JBTV9OQU1FU1swXTtcbn1cblxuLyoqIFBhcnNlIGBhcmd2YCAoYSBgcHJvY2Vzcy5hcmd2YCkgYW5kIHJ1biB0aGUgbWF0Y2hpbmcgY29tbWFuZC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5DbGkoYXJndjogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgYnVpbGRQcm9ncmFtKHByb2dyYW1OYW1lKGFyZ3YpKS5wYXJzZUFzeW5jKGFyZ3YpO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -28,11 +28,12 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@clack/prompts": "^1.7.0",
|
|
31
|
-
"@dbx-tools/cli-appkit-env": "0.6.
|
|
32
|
-
"@dbx-tools/cli-model-proxy": "0.6.
|
|
33
|
-
"@dbx-tools/cli-
|
|
34
|
-
"@dbx-tools/
|
|
35
|
-
"@dbx-tools/
|
|
31
|
+
"@dbx-tools/cli-appkit-env": "0.6.133",
|
|
32
|
+
"@dbx-tools/cli-model-proxy": "0.6.133",
|
|
33
|
+
"@dbx-tools/cli-token": "0.6.133",
|
|
34
|
+
"@dbx-tools/cli-tunnel": "0.6.133",
|
|
35
|
+
"@dbx-tools/core": "0.6.133",
|
|
36
|
+
"@dbx-tools/shared-core": "0.6.133",
|
|
36
37
|
"commander": "^15.0.0"
|
|
37
38
|
},
|
|
38
39
|
"main": "./lib/index.js",
|
|
@@ -69,7 +70,7 @@
|
|
|
69
70
|
"./package.json": "./package.json"
|
|
70
71
|
}
|
|
71
72
|
},
|
|
72
|
-
"version": "0.6.
|
|
73
|
+
"version": "0.6.133",
|
|
73
74
|
"types": "./lib/index.d.ts",
|
|
74
75
|
"type": "module",
|
|
75
76
|
"exports": {
|
package/src/cli.ts
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The single `dbx` (alias `dbx-tools`) commander entry.
|
|
3
3
|
*
|
|
4
|
-
* One bin,
|
|
4
|
+
* One bin, five command groups:
|
|
5
5
|
* - `dev` - workspace lifecycle: detect the root, bootstrap or repair, then
|
|
6
6
|
* forward whatever follows to projen. This is the passthrough, and it is an
|
|
7
7
|
* EXPLICIT subcommand rather than the bare root action so a projen task
|
|
8
8
|
* name can never shadow (or be shadowed by) a sibling command.
|
|
9
9
|
* - `model-proxy` - the local OpenAI-compatible Model Serving proxy.
|
|
10
10
|
* - `appkit` - AppKit environment helpers (`appkit env`).
|
|
11
|
+
* - `tunnel` - public portr tunnel with passwordless access gating.
|
|
12
|
+
* - `token` - local provider access-token broker.
|
|
11
13
|
*
|
|
12
|
-
* The
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* The four feature groups stay in sibling packages and are `await import()`ed
|
|
15
|
+
* only once their name is matched, so `dbx dev` never loads the Databricks SDK,
|
|
16
|
+
* AppKit, tunnel, or token-broker dependencies. That lazy hop is also why they
|
|
17
|
+
* are mounted as ARG-FORWARDING commands instead of
|
|
16
18
|
* `addCommand()`: building a child program eagerly to register it would defeat
|
|
17
19
|
* the point. Each forwards its own `--help`, so the child prints its real help.
|
|
18
20
|
*
|
|
@@ -92,7 +94,9 @@ function addForwardedCommand(
|
|
|
92
94
|
export function buildProgram(name: string = PROGRAM_NAMES[0]): Command {
|
|
93
95
|
const program = new Command()
|
|
94
96
|
.name(name)
|
|
95
|
-
.description(
|
|
97
|
+
.description(
|
|
98
|
+
"Databricks developer tools: workspace lifecycle, model proxy, AppKit env, tunnel, and token broker",
|
|
99
|
+
)
|
|
96
100
|
.showHelpAfterError()
|
|
97
101
|
.helpOption("-h, --help", `Show ${name} help`);
|
|
98
102
|
|
|
@@ -128,6 +132,13 @@ export function buildProgram(name: string = PROGRAM_NAMES[0]): Command {
|
|
|
128
132
|
async () => (await import("@dbx-tools/cli-tunnel/cli")).buildProgram,
|
|
129
133
|
);
|
|
130
134
|
|
|
135
|
+
addForwardedCommand(
|
|
136
|
+
program,
|
|
137
|
+
"token",
|
|
138
|
+
"Broker short-lived provider access tokens for local development",
|
|
139
|
+
async () => (await import("@dbx-tools/cli-token/cli")).buildProgram,
|
|
140
|
+
);
|
|
141
|
+
|
|
131
142
|
return program;
|
|
132
143
|
}
|
|
133
144
|
|