@dbx-tools/cli 0.9.131 → 0.9.136
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 +107 -34
- package/index.ts +10 -1
- package/lib/index.d.ts +10 -1
- package/lib/index.js +7 -2
- package/lib/src/brand/cli.d.ts +15 -0
- package/lib/src/brand/cli.js +36 -0
- package/lib/src/brand/export.d.ts +27 -0
- package/lib/src/brand/export.js +106 -0
- package/lib/src/brand/index.d.ts +9 -0
- package/lib/src/brand/index.js +9 -0
- package/lib/src/brand/options.d.ts +19 -0
- package/lib/src/brand/options.js +44 -0
- package/lib/src/brand/run.d.ts +17 -0
- package/lib/src/brand/run.js +59 -0
- package/lib/src/cli.js +6 -3
- package/lib/src/genie-code/cli.js +2 -2
- package/lib/src/tunnel/cli.js +2 -1
- package/lib/src/tunnel/options.d.ts +1 -0
- package/lib/src/tunnel/options.js +5 -1
- package/lib/src/tunnel/proxy.d.ts +2 -0
- package/lib/src/tunnel/proxy.js +8 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +55 -19
- package/src/brand/cli.ts +52 -0
- package/src/brand/export.ts +144 -0
- package/src/brand/index.ts +13 -0
- package/src/brand/options.ts +48 -0
- package/src/brand/run.ts +85 -0
- package/src/cli.ts +11 -2
- package/src/genie-code/cli.ts +1 -1
- package/src/tunnel/cli.ts +1 -0
- package/src/tunnel/options.ts +4 -0
- package/src/tunnel/proxy.ts +12 -1
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# @dbx-tools/cli
|
|
2
2
|
|
|
3
|
-
Use
|
|
4
|
-
Lakebase,
|
|
5
|
-
|
|
3
|
+
Use `dbx` to authenticate with Databricks, connect local PostgreSQL tools to
|
|
4
|
+
Lakebase, expose workspace models to local clients, run graph memory, and share
|
|
5
|
+
an application through an access-controlled public URL.
|
|
6
6
|
|
|
7
|
-
## Install
|
|
7
|
+
## Install and connect
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
10
|
bun add --global @dbx-tools/cli
|
|
@@ -12,21 +12,62 @@ bun add --global @dbx-tools/cli
|
|
|
12
12
|
|
|
13
13
|
`dbx-tools` is an alias for `dbx`. Authentication and a configured Databricks
|
|
14
14
|
profile are resolved automatically. Pass `--profile` only to override that
|
|
15
|
-
selection
|
|
15
|
+
selection. Examples that use `MY-PROFILE` show the explicit form.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Export a brand package
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
dbx
|
|
20
|
+
dbx brand "A neighborhood coffee company for morning commuters"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
The command researches the broader web for brand facts and design direction,
|
|
24
|
+
then visits matching iOS App Store and Google Play pages for supplemental
|
|
25
|
+
visual references. It uses the downloaded icons and screenshots during
|
|
26
|
+
multimodal synthesis without treating the mobile designs as the full brand.
|
|
27
|
+
|
|
28
|
+
The default `branding/` directory contains:
|
|
29
|
+
|
|
30
|
+
- `brand.yaml`, compatible with the shared dbx-tools brand context.
|
|
31
|
+
- `brand-package.json`, with source provenance and visual-reference metadata.
|
|
32
|
+
- `references/ios/` and `references/android/`, with the mobile images used for
|
|
33
|
+
visual research.
|
|
34
|
+
|
|
35
|
+
Use `--name` or `--website` to disambiguate the prompt, `--output` to select a
|
|
36
|
+
different package directory, and `--force` to replace an existing package:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
dbx brand "Retail analytics for store operators" \
|
|
40
|
+
--name "Acme Retail" \
|
|
41
|
+
--website https://acme.example \
|
|
42
|
+
--output branding/acme-retail
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Serve models to local tools
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
dbx model-gateway --profile MY-PROFILE --listen tcp://127.0.0.1:4000
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Point an OpenAI-compatible client at
|
|
52
|
+
[http://127.0.0.1:4000/v1](http://127.0.0.1:4000/v1). The generated
|
|
24
53
|
command reference includes all gateway and desktop-service options.
|
|
25
54
|
|
|
26
55
|
Requests may omit `model` to select the best available chat endpoint. Set a
|
|
27
56
|
gateway default with `--model` or `--model-class`, or select a class per request
|
|
28
57
|
with the `x-dbx-tools-model-class` header.
|
|
29
58
|
|
|
59
|
+
Run the gateway in the foreground for one terminal session. Install its
|
|
60
|
+
current-user service when local tools need the endpoint after the terminal
|
|
61
|
+
closes:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
dbx model-gateway service install
|
|
65
|
+
dbx model-gateway service status
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Embed [@dbx-tools/appkit-model-gateway](../../node/appkit-model-gateway)
|
|
69
|
+
instead when the gateway belongs inside an AppKit application.
|
|
70
|
+
|
|
30
71
|
## Run Genie Code
|
|
31
72
|
|
|
32
73
|
`dbx genie` runs the Databricks Genie Code CLI with dbx-tools model discovery,
|
|
@@ -84,16 +125,16 @@ dbx genie --model claude -- exec --ephemeral "Review this repository."
|
|
|
84
125
|
Use `--` only when a wrapper option such as `--model` must be sent to Genie
|
|
85
126
|
instead of being consumed by `dbx genie`.
|
|
86
127
|
|
|
87
|
-
## Connect
|
|
128
|
+
## Connect to Lakebase
|
|
88
129
|
|
|
89
130
|
```sh
|
|
90
|
-
dbx lakebase-proxy --profile MY-PROFILE --
|
|
131
|
+
dbx lakebase-proxy --profile MY-PROFILE --listen tcp://127.0.0.1:5432
|
|
91
132
|
```
|
|
92
133
|
|
|
93
134
|
Connect your PostgreSQL client to the loopback listener. The command reference
|
|
94
135
|
includes target selection, connection URLs, and service commands.
|
|
95
136
|
|
|
96
|
-
## Add
|
|
137
|
+
## Add memory or share an app
|
|
97
138
|
|
|
98
139
|
```sh
|
|
99
140
|
dbx graphiti --profile MY-PROFILE
|
|
@@ -103,7 +144,7 @@ dbx tunnel --allow example.com -- bun src/server.ts
|
|
|
103
144
|
`graphiti` provides graph memory for agents. `tunnel` adds a public URL with
|
|
104
145
|
passwordless access to an existing process.
|
|
105
146
|
|
|
106
|
-
## Export AppKit
|
|
147
|
+
## Export AppKit configuration
|
|
107
148
|
|
|
108
149
|
```sh
|
|
109
150
|
eval "$(dbx appkit env --quiet)"
|
|
@@ -112,7 +153,7 @@ eval "$(dbx appkit env --quiet)"
|
|
|
112
153
|
Use the resolved AppKit environment before starting another process. The AppKit
|
|
113
154
|
and authentication command groups below include JSON, Windows, and token options.
|
|
114
155
|
|
|
115
|
-
## Bootstrap
|
|
156
|
+
## Bootstrap a workspace
|
|
116
157
|
|
|
117
158
|
```sh
|
|
118
159
|
dbx dev sync
|
|
@@ -130,18 +171,18 @@ bun run sync -- --watch
|
|
|
130
171
|
bun run barrels
|
|
131
172
|
```
|
|
132
173
|
|
|
133
|
-
See [
|
|
174
|
+
See [@dbx-tools/projen](../../../../projen) for workspace configuration and
|
|
134
175
|
generation. Command implementations are available from `@dbx-tools/cli/appkit`,
|
|
135
|
-
`/auth`, `/genie`, `/graphiti`, `/lakebase-proxy`, `/model-gateway`,
|
|
136
|
-
`/tunnel` when a Node caller needs to embed one parser.
|
|
176
|
+
`/auth`, `/brand`, `/genie`, `/graphiti`, `/lakebase-proxy`, `/model-gateway`,
|
|
177
|
+
and `/tunnel` when a Node caller needs to embed one parser.
|
|
137
178
|
|
|
138
179
|
<!-- cli-reference:start -->
|
|
139
180
|
|
|
140
|
-
## Command
|
|
181
|
+
## Command reference
|
|
141
182
|
|
|
142
183
|
### `dbx`
|
|
143
184
|
|
|
144
|
-
Databricks developer tools: workspace lifecycle, AppKit env, auth, tunnels, and local proxies
|
|
185
|
+
Databricks developer tools: workspace lifecycle, AppKit env, auth, brand generation, tunnels, and local proxies
|
|
145
186
|
|
|
146
187
|
```sh
|
|
147
188
|
dbx [command]
|
|
@@ -149,16 +190,17 @@ dbx [command]
|
|
|
149
190
|
|
|
150
191
|
#### Commands
|
|
151
192
|
|
|
152
|
-
| Command | Description
|
|
153
|
-
| -------------------------------- |
|
|
154
|
-
| `dev [projenArgs...]` | Bootstrap or repair a dbx-tools workspace, then forward to projen
|
|
155
|
-
| `appkit` | AppKit helpers: resolve the environment an AppKit app would start with.
|
|
156
|
-
| `auth [options]` | Authenticate to Databricks with user or machine OAuth
|
|
157
|
-
| `
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
193
|
+
| Command | Description |
|
|
194
|
+
| -------------------------------- | ---------------------------------------------------------------------------------- |
|
|
195
|
+
| `dev [projenArgs...]` | Bootstrap or repair a dbx-tools workspace, then forward to projen |
|
|
196
|
+
| `appkit` | AppKit helpers: resolve the environment an AppKit app would start with. |
|
|
197
|
+
| `auth [options]` | Authenticate to Databricks with user or machine OAuth |
|
|
198
|
+
| `brand [options] <prompt>` | Research a brand brief and export brand.yaml with web and mobile visual references |
|
|
199
|
+
| `tunnel [options] [command...]` | Front a command with a public tunnel and passwordless auth |
|
|
200
|
+
| `lakebase-proxy [options]` | Run a loopback PostgreSQL proxy for Databricks Lakebase |
|
|
201
|
+
| `model-gateway [options]` | Run or manage the AppKit Databricks model gateway |
|
|
202
|
+
| `genie [options] [genieArgs...]` | Run Genie Code through an authenticated local Databricks model gateway |
|
|
203
|
+
| `graphiti [options]` | Run Graphiti or manage its current-user desktop service |
|
|
162
204
|
|
|
163
205
|
### `dbx dev`
|
|
164
206
|
|
|
@@ -170,9 +212,9 @@ dbx dev [projenArgs...]
|
|
|
170
212
|
|
|
171
213
|
#### Arguments
|
|
172
214
|
|
|
173
|
-
| Argument | Description
|
|
174
|
-
| ------------ |
|
|
175
|
-
| `projenArgs` |
|
|
215
|
+
| Argument | Description |
|
|
216
|
+
| ------------ | --------------------------------------------------- |
|
|
217
|
+
| `projenArgs` | Projen task and arguments, for example sync --watch |
|
|
176
218
|
|
|
177
219
|
### `dbx appkit`
|
|
178
220
|
|
|
@@ -294,6 +336,34 @@ Show the resolved authentication client configuration
|
|
|
294
336
|
dbx auth status
|
|
295
337
|
```
|
|
296
338
|
|
|
339
|
+
### `dbx brand`
|
|
340
|
+
|
|
341
|
+
Research a brand brief and export brand.yaml with web and mobile visual references
|
|
342
|
+
|
|
343
|
+
```sh
|
|
344
|
+
dbx brand [options] <prompt>
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
#### Arguments
|
|
348
|
+
|
|
349
|
+
| Argument | Description |
|
|
350
|
+
| -------- | ---------------------------------------------------- |
|
|
351
|
+
| `prompt` | brand, company, product, or design brief to research |
|
|
352
|
+
|
|
353
|
+
#### Options
|
|
354
|
+
|
|
355
|
+
| Option | Description |
|
|
356
|
+
| --------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
357
|
+
| `-p, --profile <value>` | Databricks CLI profile. (env: DATABRICKS_CONFIG_PROFILE) |
|
|
358
|
+
| `-n, --name <value>` | Known canonical brand name. (env: NAME) |
|
|
359
|
+
| `-w, --website <value>` | Known official HTTPS website. (env: WEBSITE) |
|
|
360
|
+
| `-o, --output <value>` | Output directory for brand.yaml, provenance, and visual references. (default: "branding", env: OUTPUT) |
|
|
361
|
+
| `--model <value>` | Optional Databricks model preference for brand synthesis. (env: MODEL) |
|
|
362
|
+
| `--max-sources <value>` | Maximum general web sources to read. (default: 4, env: MAX_SOURCES) |
|
|
363
|
+
| `-s, --source-max-length <value>` | Maximum characters retained from each source page. (default: 8000, env: SOURCE_MAX_LENGTH) |
|
|
364
|
+
| `-f, --force` | Replace files in an existing output directory. (default: false, env: FORCE) |
|
|
365
|
+
| `--no-force` | Disable replace files in an existing output directory. |
|
|
366
|
+
|
|
297
367
|
### `dbx tunnel`
|
|
298
368
|
|
|
299
369
|
Front a command with a public tunnel and passwordless auth
|
|
@@ -320,6 +390,7 @@ dbx tunnel [options] [command] [command...]
|
|
|
320
390
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
321
391
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
322
392
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
393
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
323
394
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
324
395
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
325
396
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
|
@@ -372,6 +443,7 @@ dbx tunnel run [options] <command...>
|
|
|
372
443
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
373
444
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
374
445
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
446
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
375
447
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
376
448
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
377
449
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
|
@@ -410,6 +482,7 @@ dbx tunnel status [options]
|
|
|
410
482
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
411
483
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
412
484
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
485
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
413
486
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
414
487
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
415
488
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
|
@@ -705,9 +778,9 @@ dbx genie [options] [genieArgs...]
|
|
|
705
778
|
|
|
706
779
|
#### Arguments
|
|
707
780
|
|
|
708
|
-
| Argument | Description
|
|
709
|
-
| ----------- |
|
|
710
|
-
| `genieArgs` |
|
|
781
|
+
| Argument | Description |
|
|
782
|
+
| ----------- | ------------------------------------------------------------------------------------- |
|
|
783
|
+
| `genieArgs` | Arguments and unknown flags forwarded to Genie Code. Separate wrapper options with -- |
|
|
711
784
|
|
|
712
785
|
#### Options
|
|
713
786
|
|
package/index.ts
CHANGED
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
7
7
|
export * as appkitCli from "./src/appkit/cli.ts";
|
|
8
8
|
export * as appkitEnvExport from "./src/appkit/env-export.ts";
|
|
9
9
|
export * as authCli from "./src/auth/cli.ts";
|
|
10
10
|
export * as authOptions from "./src/auth/options.ts";
|
|
11
11
|
export * as bootstrap from "./src/bootstrap.ts";
|
|
12
|
+
export * as brandCli from "./src/brand/cli.ts";
|
|
13
|
+
export * as brandExport from "./src/brand/export.ts";
|
|
14
|
+
export * as brandOptions from "./src/brand/options.ts";
|
|
15
|
+
export * as brandRun from "./src/brand/run.ts";
|
|
12
16
|
export * as bun from "./src/bun.ts";
|
|
13
17
|
export * as cli from "./src/cli.ts";
|
|
14
18
|
export * as genieCodeCli from "./src/genie-code/cli.ts";
|
|
@@ -35,6 +39,11 @@ export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env
|
|
|
35
39
|
export type { EnvExportFormat, EnvCommandOptions } from "./src/appkit/env-export.ts";
|
|
36
40
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.ts";
|
|
37
41
|
export type { AuthCliOptions, TokenCommandOptions } from "./src/auth/options.ts";
|
|
42
|
+
export type { BrandCliDependencies } from "./src/brand/cli.ts";
|
|
43
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./src/brand/export.ts";
|
|
44
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.ts";
|
|
45
|
+
export type { BrandExportOptions } from "./src/brand/options.ts";
|
|
46
|
+
export type { BrandExportCallbacks } from "./src/brand/run.ts";
|
|
38
47
|
export { resolveBunArgv } from "./src/bun.ts";
|
|
39
48
|
export type { GenieCodeCliDependencies } from "./src/genie-code/cli.ts";
|
|
40
49
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.136";
|
|
3
3
|
export * as appkitCli from "./src/appkit/cli.ts";
|
|
4
4
|
export * as appkitEnvExport from "./src/appkit/env-export.ts";
|
|
5
5
|
export * as authCli from "./src/auth/cli.ts";
|
|
6
6
|
export * as authOptions from "./src/auth/options.ts";
|
|
7
7
|
export * as bootstrap from "./src/bootstrap.ts";
|
|
8
|
+
export * as brandCli from "./src/brand/cli.ts";
|
|
9
|
+
export * as brandExport from "./src/brand/export.ts";
|
|
10
|
+
export * as brandOptions from "./src/brand/options.ts";
|
|
11
|
+
export * as brandRun from "./src/brand/run.ts";
|
|
8
12
|
export * as bun from "./src/bun.ts";
|
|
9
13
|
export * as cli from "./src/cli.ts";
|
|
10
14
|
export * as genieCodeCli from "./src/genie-code/cli.ts";
|
|
@@ -31,6 +35,11 @@ export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env
|
|
|
31
35
|
export type { EnvExportFormat, EnvCommandOptions } from "./src/appkit/env-export.ts";
|
|
32
36
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.ts";
|
|
33
37
|
export type { AuthCliOptions, TokenCommandOptions } from "./src/auth/options.ts";
|
|
38
|
+
export type { BrandCliDependencies } from "./src/brand/cli.ts";
|
|
39
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./src/brand/export.ts";
|
|
40
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.ts";
|
|
41
|
+
export type { BrandExportOptions } from "./src/brand/options.ts";
|
|
42
|
+
export type { BrandExportCallbacks } from "./src/brand/run.ts";
|
|
34
43
|
export { resolveBunArgv } from "./src/bun.ts";
|
|
35
44
|
export type { GenieCodeCliDependencies } from "./src/genie-code/cli.ts";
|
|
36
45
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
6
6
|
export * as appkitCli from "./src/appkit/cli.js";
|
|
7
7
|
export * as appkitEnvExport from "./src/appkit/env-export.js";
|
|
8
8
|
export * as authCli from "./src/auth/cli.js";
|
|
9
9
|
export * as authOptions from "./src/auth/options.js";
|
|
10
10
|
export * as bootstrap from "./src/bootstrap.js";
|
|
11
|
+
export * as brandCli from "./src/brand/cli.js";
|
|
12
|
+
export * as brandExport from "./src/brand/export.js";
|
|
13
|
+
export * as brandOptions from "./src/brand/options.js";
|
|
14
|
+
export * as brandRun from "./src/brand/run.js";
|
|
11
15
|
export * as bun from "./src/bun.js";
|
|
12
16
|
export * as cli from "./src/cli.js";
|
|
13
17
|
export * as genieCodeCli from "./src/genie-code/cli.js";
|
|
@@ -32,6 +36,7 @@ export * as tunnelOptions from "./src/tunnel/options.js";
|
|
|
32
36
|
export * as tunnelProxy from "./src/tunnel/proxy.js";
|
|
33
37
|
export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env-export.js";
|
|
34
38
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.js";
|
|
39
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.js";
|
|
35
40
|
export { resolveBunArgv } from "./src/bun.js";
|
|
36
41
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.js";
|
|
37
42
|
export { RUNNER_OPTIONS_ENV } from "./src/genie-code/runner.js";
|
|
@@ -42,4 +47,4 @@ export { SSL_REQUEST, CANCEL_REQUEST, PROTOCOL_3, PostgresProtocolError } from "
|
|
|
42
47
|
export { LakebaseProxy } from "./src/lakebase-proxy/proxy.js";
|
|
43
48
|
export { workspaceRoot } from "./src/root.js";
|
|
44
49
|
export { TunnelOptionsSchema } from "./src/tunnel/options.js";
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxZQUFZLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEtBQUsseUJBQXlCLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEtBQUsscUJBQXFCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxLQUFLLGtCQUFrQixNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGtCQUFrQixNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzUCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvY2xpXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTM2XCI7XG5leHBvcnQgKiBhcyBhcHBraXRDbGkgZnJvbSBcIi4vc3JjL2FwcGtpdC9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGFwcGtpdEVudkV4cG9ydCBmcm9tIFwiLi9zcmMvYXBwa2l0L2Vudi1leHBvcnQudHNcIjtcbmV4cG9ydCAqIGFzIGF1dGhDbGkgZnJvbSBcIi4vc3JjL2F1dGgvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBhdXRoT3B0aW9ucyBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBib290c3RyYXAgZnJvbSBcIi4vc3JjL2Jvb3RzdHJhcC50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRDbGkgZnJvbSBcIi4vc3JjL2JyYW5kL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRFeHBvcnQgZnJvbSBcIi4vc3JjL2JyYW5kL2V4cG9ydC50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRPcHRpb25zIGZyb20gXCIuL3NyYy9icmFuZC9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZFJ1biBmcm9tIFwiLi9zcmMvYnJhbmQvcnVuLnRzXCI7XG5leHBvcnQgKiBhcyBidW4gZnJvbSBcIi4vc3JjL2J1bi50c1wiO1xuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUNsaSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUNvbmZpZyBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUluc3RhbGwgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvaW5zdGFsbC50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlT3B0aW9ucyBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVSdW5uZXIgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVSdW50aW1lIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bnRpbWUudHNcIjtcbmV4cG9ydCAqIGFzIGdyYXBoaXRpQ2xpIGZyb20gXCIuL3NyYy9ncmFwaGl0aS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdyYXBoaXRpT3B0aW9ucyBmcm9tIFwiLi9zcmMvZ3JhcGhpdGkvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgbGFrZWJhc2VQcm94eUNhbmNlbGxhdGlvbiBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvY2FuY2VsbGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5Q2xpIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlPcHRpb25zIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5UHJvdG9jb2wgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3RvY29sLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5UHJveHkgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3h5LnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbEdhdGV3YXlDbGkgZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbEdhdGV3YXlTZXJ2ZXIgZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvc2VydmVyLnRzXCI7XG5leHBvcnQgKiBhcyByb290IGZyb20gXCIuL3NyYy9yb290LnRzXCI7XG5leHBvcnQgKiBhcyB0dW5uZWxBcHAgZnJvbSBcIi4vc3JjL3R1bm5lbC9hcHAudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbENsaSBmcm9tIFwiLi9zcmMvdHVubmVsL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsT3B0aW9ucyBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbFByb3h5IGZyb20gXCIuL3NyYy90dW5uZWwvcHJveHkudHNcIjtcbmV4cG9ydCB7IEVudkV4cG9ydEZvcm1hdFNjaGVtYSwgRW52Q29tbWFuZE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvYXBwa2l0L2Vudi1leHBvcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgRW52RXhwb3J0Rm9ybWF0LCBFbnZDb21tYW5kT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9hcHBraXQvZW52LWV4cG9ydC50c1wiO1xuZXhwb3J0IHsgQXV0aENsaU9wdGlvbnNTY2hlbWEsIFRva2VuQ29tbWFuZE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF1dGhDbGlPcHRpb25zLCBUb2tlbkNvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2F1dGgvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9icmFuZC9jbGkudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVCcmFuZFBhY2thZ2VPcHRpb25zLCBXcml0dGVuQnJhbmRQYWNrYWdlIH0gZnJvbSBcIi4vc3JjL2JyYW5kL2V4cG9ydC50c1wiO1xuZXhwb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2JyYW5kL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnJhbmRFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2JyYW5kL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnJhbmRFeHBvcnRDYWxsYmFja3MgfSBmcm9tIFwiLi9zcmMvYnJhbmQvcnVuLnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzXCI7XG5leHBvcnQgeyBHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVIgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLCBHZW5pZUNvZGVQcm9maWxlSG9tZSwgR2VuaWVDb2RlSG9tZSB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHNcIjtcbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bm5lci50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUNvZGVSdW50aW1lRGVwZW5kZW5jaWVzLCBSdW5HZW5pZUNvZGVPcHRpb25zLCBQcmVwYXJlZEdlbmllQ29kZVJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW50aW1lLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdyYXBoaXRpQ2xpRGVwZW5kZW5jaWVzLCBHcmFwaGl0aVNlcnZpY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0IHsgR1JBUEhJVElfREVGQVVMVFMsIEdyYXBoaXRpQ2xpT3B0aW9uc1NjaGVtYSwgR3JhcGhpdGlPcHRpb25zU2NoZW1hLCBSZXNvbHZlZEdyYXBoaXRpT3B0aW9uc1NjaGVtYSwgZ3JhcGhpdGlPcHRpb25PdmVycmlkZXMsIGdyYXBoaXRpT3B0aW9uc0Vudmlyb25tZW50LCBncmFwaGl0aU9wdGlvbnNGcm9tRW52aXJvbm1lbnQsIHJlc29sdmVHcmFwaGl0aU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZ3JhcGhpdGkvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBHcmFwaGl0aU9wdGlvbnMsIFJlc29sdmVkR3JhcGhpdGlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL29wdGlvbnMudHNcIjtcbmV4cG9ydCB7IENhbmNlbGxhdGlvblJlZ2lzdHJ5IH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NhbmNlbGxhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBDYW5jZWxsYXRpb25UYXJnZXQsIENhbmNlbGxhdGlvbkZvcndhcmRlciB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jYW5jZWxsYXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJhc2VQcm94eUNsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jbGkudHNcIjtcbmV4cG9ydCB7IExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hLCBMYWtlYmFzZVByb3h5VXJsT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IExha2ViYXNlUHJveHlPcHRpb25zLCBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zLCBMYWtlYmFzZVByb3h5VXJsT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgeyBTU0xfUkVRVUVTVCwgQ0FOQ0VMX1JFUVVFU1QsIFBST1RPQ09MXzMsIFBvc3RncmVzUHJvdG9jb2xFcnJvciB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm90b2NvbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdGFydHVwTWVzc2FnZSwgQ2FuY2VsTWVzc2FnZSwgSW5pdGlhbE1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJvdG9jb2wudHNcIjtcbmV4cG9ydCB7IExha2ViYXNlUHJveHkgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJveHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5Q2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvY2xpLnRzXCI7XG5leHBvcnQgeyB3b3Jrc3BhY2VSb290IH0gZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbmV4cG9ydCB7IFR1bm5lbE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVHVubmVsT3B0aW9ucywgUmVzb2x2ZWRUdW5uZWxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3R1bm5lbC9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByb3h5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy90dW5uZWwvcHJveHkudHNcIjtcbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` researched brand-package export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { exportBrandFromPrompt } from "./run.ts";
|
|
8
|
+
/** Replaceable command boundaries used by tests and embedders. */
|
|
9
|
+
export interface BrandCliDependencies {
|
|
10
|
+
readonly exportBrandFromPrompt?: typeof exportBrandFromPrompt;
|
|
11
|
+
readonly writeProgress?: (value: string) => void;
|
|
12
|
+
readonly writeResult?: (value: unknown) => void;
|
|
13
|
+
}
|
|
14
|
+
/** Build the lazily loaded `dbx brand` command. */
|
|
15
|
+
export declare function buildProgram(name?: string, dependencies?: BrandCliDependencies): Command;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` researched brand-package export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { addArgs, parseArgs } from "@dbx-tools/cli-args";
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { BrandExportOptionsSchema } from "./options.js";
|
|
9
|
+
import { exportBrandFromPrompt } from "./run.js";
|
|
10
|
+
/** Build the lazily loaded `dbx brand` command. */
|
|
11
|
+
export function buildProgram(name = "dbx brand", dependencies = {}) {
|
|
12
|
+
const runExport = dependencies.exportBrandFromPrompt ?? exportBrandFromPrompt;
|
|
13
|
+
const writeProgress = dependencies.writeProgress ?? ((value) => process.stderr.write(`${value}\n`));
|
|
14
|
+
const writeResult = dependencies.writeResult ??
|
|
15
|
+
((value) => process.stdout.write(`${JSON.stringify(value, null, 2)}\n`));
|
|
16
|
+
const program = addArgs(new Command()
|
|
17
|
+
.name(name)
|
|
18
|
+
.description("Research a brand brief and export brand.yaml with web and mobile visual references"), BrandExportOptionsSchema);
|
|
19
|
+
program
|
|
20
|
+
.argument("<prompt>", "brand, company, product, or design brief to research")
|
|
21
|
+
.action(async (prompt) => {
|
|
22
|
+
const options = parseArgs(program, BrandExportOptionsSchema);
|
|
23
|
+
const result = await runExport(prompt, options, {
|
|
24
|
+
onProgress(event) {
|
|
25
|
+
writeProgress(`[${event.stage}] ${event.message}`);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
writeResult({
|
|
29
|
+
brand: result.brandYamlPath,
|
|
30
|
+
manifest: result.manifestPath,
|
|
31
|
+
references: result.referenceCount,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
return program;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JyYW5kL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFTakQsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxlQUFxQyxFQUFFO0lBQ3RGLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsSUFBSSxxQkFBcUIsQ0FBQztJQUM5RSxNQUFNLGFBQWEsR0FDakIsWUFBWSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixNQUFNLFdBQVcsR0FDZixZQUFZLENBQUMsV0FBVztRQUN4QixDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLElBQUksT0FBTyxFQUFFO1NBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNWLFdBQVcsQ0FDVixvRkFBb0YsQ0FDckYsRUFDSCx3QkFBd0IsQ0FDekIsQ0FBQztJQUNGLE9BQU87U0FDSixRQUFRLENBQUMsVUFBVSxFQUFFLHNEQUFzRCxDQUFDO1NBQzVFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7WUFDOUMsVUFBVSxDQUFDLEtBQUs7Z0JBQ2QsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDO1lBQ1YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWTtZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWM7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IGJyYW5kYCByZXNlYXJjaGVkIGJyYW5kLXBhY2thZ2UgZXhwb3J0LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBhZGRBcmdzLCBwYXJzZUFyZ3MgfSBmcm9tIFwiQGRieC10b29scy9jbGktYXJnc1wiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcblxuaW1wb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vb3B0aW9ucy50c1wiO1xuaW1wb3J0IHsgZXhwb3J0QnJhbmRGcm9tUHJvbXB0IH0gZnJvbSBcIi4vcnVuLnRzXCI7XG5cbi8qKiBSZXBsYWNlYWJsZSBjb21tYW5kIGJvdW5kYXJpZXMgdXNlZCBieSB0ZXN0cyBhbmQgZW1iZWRkZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmFuZENsaURlcGVuZGVuY2llcyB7XG4gIHJlYWRvbmx5IGV4cG9ydEJyYW5kRnJvbVByb21wdD86IHR5cGVvZiBleHBvcnRCcmFuZEZyb21Qcm9tcHQ7XG4gIHJlYWRvbmx5IHdyaXRlUHJvZ3Jlc3M/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgd3JpdGVSZXN1bHQ/OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKiBCdWlsZCB0aGUgbGF6aWx5IGxvYWRlZCBgZGJ4IGJyYW5kYCBjb21tYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lID0gXCJkYnggYnJhbmRcIiwgZGVwZW5kZW5jaWVzOiBCcmFuZENsaURlcGVuZGVuY2llcyA9IHt9KTogQ29tbWFuZCB7XG4gIGNvbnN0IHJ1bkV4cG9ydCA9IGRlcGVuZGVuY2llcy5leHBvcnRCcmFuZEZyb21Qcm9tcHQgPz8gZXhwb3J0QnJhbmRGcm9tUHJvbXB0O1xuICBjb25zdCB3cml0ZVByb2dyZXNzID1cbiAgICBkZXBlbmRlbmNpZXMud3JpdGVQcm9ncmVzcyA/PyAoKHZhbHVlOiBzdHJpbmcpID0+IHByb2Nlc3Muc3RkZXJyLndyaXRlKGAke3ZhbHVlfVxcbmApKTtcbiAgY29uc3Qgd3JpdGVSZXN1bHQgPVxuICAgIGRlcGVuZGVuY2llcy53cml0ZVJlc3VsdCA/P1xuICAgICgodmFsdWU6IHVua25vd24pID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX1cXG5gKSk7XG4gIGNvbnN0IHByb2dyYW0gPSBhZGRBcmdzKFxuICAgIG5ldyBDb21tYW5kKClcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oXG4gICAgICAgIFwiUmVzZWFyY2ggYSBicmFuZCBicmllZiBhbmQgZXhwb3J0IGJyYW5kLnlhbWwgd2l0aCB3ZWIgYW5kIG1vYmlsZSB2aXN1YWwgcmVmZXJlbmNlc1wiLFxuICAgICAgKSxcbiAgICBCcmFuZEV4cG9ydE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHByb2dyYW1cbiAgICAuYXJndW1lbnQoXCI8cHJvbXB0PlwiLCBcImJyYW5kLCBjb21wYW55LCBwcm9kdWN0LCBvciBkZXNpZ24gYnJpZWYgdG8gcmVzZWFyY2hcIilcbiAgICAuYWN0aW9uKGFzeW5jIChwcm9tcHQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhwcm9ncmFtLCBCcmFuZEV4cG9ydE9wdGlvbnNTY2hlbWEpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuRXhwb3J0KHByb21wdCwgb3B0aW9ucywge1xuICAgICAgICBvblByb2dyZXNzKGV2ZW50KSB7XG4gICAgICAgICAgd3JpdGVQcm9ncmVzcyhgWyR7ZXZlbnQuc3RhZ2V9XSAke2V2ZW50Lm1lc3NhZ2V9YCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHdyaXRlUmVzdWx0KHtcbiAgICAgICAgYnJhbmQ6IHJlc3VsdC5icmFuZFlhbWxQYXRoLFxuICAgICAgICBtYW5pZmVzdDogcmVzdWx0Lm1hbmlmZXN0UGF0aCxcbiAgICAgICAgcmVmZXJlbmNlczogcmVzdWx0LnJlZmVyZW5jZUNvdW50LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand package filesystem export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { BrandResearch } from "@dbx-tools/appkit-generator";
|
|
7
|
+
import type { BrandPackage } from "@dbx-tools/shared-generator";
|
|
8
|
+
/** Inputs required to write a generated brand package. */
|
|
9
|
+
export interface WriteBrandPackageOptions {
|
|
10
|
+
readonly outputDirectory: string;
|
|
11
|
+
readonly prompt: string;
|
|
12
|
+
readonly brandPackage: BrandPackage;
|
|
13
|
+
readonly research: BrandResearch;
|
|
14
|
+
readonly force?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Files written for a generated brand package. */
|
|
17
|
+
export interface WrittenBrandPackage {
|
|
18
|
+
readonly outputDirectory: string;
|
|
19
|
+
readonly brandYamlPath: string;
|
|
20
|
+
readonly manifestPath: string;
|
|
21
|
+
readonly referenceCount: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Write a normal `brand.yaml` plus research provenance and downloaded visual
|
|
25
|
+
* references.
|
|
26
|
+
*/
|
|
27
|
+
export declare function writeBrandPackage(options: WriteBrandPackageOptions): Promise<WrittenBrandPackage>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand package filesystem export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { access, mkdir, rename, rm, writeFile } from "node:fs/promises";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { BrandPackageSchema } from "@dbx-tools/shared-generator";
|
|
9
|
+
import { stringify } from "yaml";
|
|
10
|
+
function imageExtension(contentType) {
|
|
11
|
+
if (!contentType)
|
|
12
|
+
return ".img";
|
|
13
|
+
const normalized = contentType.split(";", 1)[0].trim().toLowerCase();
|
|
14
|
+
switch (normalized) {
|
|
15
|
+
case "image/avif":
|
|
16
|
+
return ".avif";
|
|
17
|
+
case "image/gif":
|
|
18
|
+
return ".gif";
|
|
19
|
+
case "image/jpeg":
|
|
20
|
+
return ".jpg";
|
|
21
|
+
case "image/png":
|
|
22
|
+
return ".png";
|
|
23
|
+
case "image/svg+xml":
|
|
24
|
+
return ".svg";
|
|
25
|
+
case "image/webp":
|
|
26
|
+
return ".webp";
|
|
27
|
+
default:
|
|
28
|
+
return ".img";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function fileSlug(value) {
|
|
32
|
+
return (value
|
|
33
|
+
.normalize("NFKD")
|
|
34
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
35
|
+
.toLowerCase()
|
|
36
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
37
|
+
.replace(/^-+|-+$/g, "")
|
|
38
|
+
.slice(0, 60) || "reference");
|
|
39
|
+
}
|
|
40
|
+
async function writeAtomic(filePath, content) {
|
|
41
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
42
|
+
const temporaryPath = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
43
|
+
await writeFile(temporaryPath, content);
|
|
44
|
+
await rename(temporaryPath, filePath);
|
|
45
|
+
}
|
|
46
|
+
async function fileExists(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
await access(filePath);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Write a normal `brand.yaml` plus research provenance and downloaded visual
|
|
57
|
+
* references.
|
|
58
|
+
*/
|
|
59
|
+
export async function writeBrandPackage(options) {
|
|
60
|
+
const outputDirectory = path.resolve(options.outputDirectory);
|
|
61
|
+
const brandYamlPath = path.join(outputDirectory, "brand.yaml");
|
|
62
|
+
const packageExists = await fileExists(brandYamlPath);
|
|
63
|
+
if (packageExists && !options.force) {
|
|
64
|
+
throw new Error(`Brand package already exists at ${brandYamlPath}; pass --force to replace it`);
|
|
65
|
+
}
|
|
66
|
+
if (options.force) {
|
|
67
|
+
await rm(path.join(outputDirectory, "references"), { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
const visualReferences = structuredClone(options.brandPackage.visualReferences);
|
|
70
|
+
let referenceCount = 0;
|
|
71
|
+
for (let referenceIndex = 0; referenceIndex < options.research.visualReferences.length; referenceIndex += 1) {
|
|
72
|
+
const researchReference = options.research.visualReferences[referenceIndex];
|
|
73
|
+
const exportedReference = visualReferences[referenceIndex];
|
|
74
|
+
if (!exportedReference)
|
|
75
|
+
continue;
|
|
76
|
+
for (let imageIndex = 0; imageIndex < researchReference.images.length; imageIndex += 1) {
|
|
77
|
+
const researchImage = researchReference.images[imageIndex];
|
|
78
|
+
const exportedImage = exportedReference.images[imageIndex];
|
|
79
|
+
if (!exportedImage || !researchImage.data)
|
|
80
|
+
continue;
|
|
81
|
+
const fileName = `${fileSlug(researchReference.appName)}-${imageIndex + 1}${imageExtension(researchImage.contentType)}`;
|
|
82
|
+
const relativePath = path.posix.join("references", researchReference.platform, fileName);
|
|
83
|
+
await writeAtomic(path.join(outputDirectory, relativePath), researchImage.data);
|
|
84
|
+
exportedImage.localPath = `./${relativePath}`;
|
|
85
|
+
referenceCount += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const brandPackage = BrandPackageSchema.parse({
|
|
89
|
+
...options.brandPackage,
|
|
90
|
+
visualReferences,
|
|
91
|
+
});
|
|
92
|
+
const manifestPath = path.join(outputDirectory, "brand-package.json");
|
|
93
|
+
await writeAtomic(brandYamlPath, stringify(brandPackage.brand, { indent: 2 }));
|
|
94
|
+
await writeAtomic(manifestPath, `${JSON.stringify({
|
|
95
|
+
prompt: options.prompt,
|
|
96
|
+
generatedAt: new Date().toISOString(),
|
|
97
|
+
...brandPackage,
|
|
98
|
+
}, null, 2)}\n`);
|
|
99
|
+
return {
|
|
100
|
+
outputDirectory,
|
|
101
|
+
brandYamlPath,
|
|
102
|
+
manifestPath,
|
|
103
|
+
referenceCount,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JyYW5kL2V4cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFHN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1CakMsU0FBUyxjQUFjLENBQUMsV0FBb0I7SUFDMUMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNoQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRSxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssWUFBWTtZQUNmLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssWUFBWTtZQUNmLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssZUFBZTtZQUNsQixPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLFlBQVk7WUFDZixPQUFPLE9BQU8sQ0FBQztRQUNqQjtZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYTtJQUM3QixPQUFPLENBQ0wsS0FBSztTQUNGLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUs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UUFDZixhQUFhO1FBQ2IsWUFBWTtRQUNaLGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJhbmQgcGFja2FnZSBmaWxlc3lzdGVtIGV4cG9ydC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgYWNjZXNzLCBta2RpciwgcmVuYW1lLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRSZXNlYXJjaCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC1nZW5lcmF0b3JcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRQYWNrYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnJhbmRQYWNrYWdlU2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSBcInlhbWxcIjtcblxuLyoqIElucHV0cyByZXF1aXJlZCB0byB3cml0ZSBhIGdlbmVyYXRlZCBicmFuZCBwYWNrYWdlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZUJyYW5kUGFja2FnZU9wdGlvbnMge1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvbXB0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJyYW5kUGFja2FnZTogQnJhbmRQYWNrYWdlO1xuICByZWFkb25seSByZXNlYXJjaDogQnJhbmRSZXNlYXJjaDtcbiAgcmVhZG9ubHkgZm9yY2U/OiBib29sZWFuO1xufVxuXG4vKiogRmlsZXMgd3JpdHRlbiBmb3IgYSBnZW5lcmF0ZWQgYnJhbmQgcGFja2FnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdHRlbkJyYW5kUGFja2FnZSB7XG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBicmFuZFlhbWxQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hbmlmZXN0UGF0aDogc3RyaW5nO1xuICByZWFkb25seSByZWZlcmVuY2VDb3VudDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBpbWFnZUV4dGVuc2lvbihjb250ZW50VHlwZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghY29udGVudFR5cGUpIHJldHVybiBcIi5pbWdcIjtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGNvbnRlbnRUeXBlLnNwbGl0KFwiO1wiLCAxKVswXS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgc3dpdGNoIChub3JtYWxpemVkKSB7XG4gICAgY2FzZSBcImltYWdlL2F2aWZcIjpcbiAgICAgIHJldHVybiBcIi5hdmlmXCI7XG4gICAgY2FzZSBcImltYWdlL2dpZlwiOlxuICAgICAgcmV0dXJuIFwiLmdpZlwiO1xuICAgIGNhc2UgXCJpbWFnZS9qcGVnXCI6XG4gICAgICByZXR1cm4gXCIuanBnXCI7XG4gICAgY2FzZSBcImltYWdlL3BuZ1wiOlxuICAgICAgcmV0dXJuIFwiLnBuZ1wiO1xuICAgIGNhc2UgXCJpbWFnZS9zdmcreG1sXCI6XG4gICAgICByZXR1cm4gXCIuc3ZnXCI7XG4gICAgY2FzZSBcImltYWdlL3dlYnBcIjpcbiAgICAgIHJldHVybiBcIi53ZWJwXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIi5pbWdcIjtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWxlU2x1Zyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZVxuICAgICAgLm5vcm1hbGl6ZShcIk5GS0RcIilcbiAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIilcbiAgICAgIC5zbGljZSgwLCA2MCkgfHwgXCJyZWZlcmVuY2VcIlxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUF0b21pYyhmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG1rZGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCB0ZW1wb3JhcnlQYXRoID0gYCR7ZmlsZVBhdGh9LiR7cHJvY2Vzcy5waWR9LiR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0udG1wYDtcbiAgYXdhaXQgd3JpdGVGaWxlKHRlbXBvcmFyeVBhdGgsIGNvbnRlbnQpO1xuICBhd2FpdCByZW5hbWUodGVtcG9yYXJ5UGF0aCwgZmlsZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhY2Nlc3MoZmlsZVBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXcml0ZSBhIG5vcm1hbCBgYnJhbmQueWFtbGAgcGx1cyByZXNlYXJjaCBwcm92ZW5hbmNlIGFuZCBkb3dubG9hZGVkIHZpc3VhbFxuICogcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQnJhbmRQYWNrYWdlKFxuICBvcHRpb25zOiBXcml0ZUJyYW5kUGFja2FnZU9wdGlvbnMsXG4pOiBQcm9taXNlPFdyaXR0ZW5CcmFuZFBhY2thZ2U+IHtcbiAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5KTtcbiAgY29uc3QgYnJhbmRZYW1sUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIFwiYnJhbmQueWFtbFwiKTtcbiAgY29uc3QgcGFja2FnZUV4aXN0cyA9IGF3YWl0IGZpbGVFeGlzdHMoYnJhbmRZYW1sUGF0aCk7XG4gIGlmIChwYWNrYWdlRXhpc3RzICYmICFvcHRpb25zLmZvcmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBCcmFuZCBwYWNrYWdlIGFscmVhZHkgZXhpc3RzIGF0ICR7YnJhbmRZYW1sUGF0aH07IHBhc3MgLS1mb3JjZSB0byByZXBsYWNlIGl0YCk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuZm9yY2UpIHtcbiAgICBhd2FpdCBybShwYXRoLmpvaW4ob3V0cHV0RGlyZWN0b3J5LCBcInJlZmVyZW5jZXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGNvbnN0IHZpc3VhbFJlZmVyZW5jZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUob3B0aW9ucy5icmFuZFBhY2thZ2UudmlzdWFsUmVmZXJlbmNlcyk7XG4gIGxldCByZWZlcmVuY2VDb3VudCA9IDA7XG4gIGZvciAoXG4gICAgbGV0IHJlZmVyZW5jZUluZGV4ID0gMDtcbiAgICByZWZlcmVuY2VJbmRleCA8IG9wdGlvbnMucmVzZWFyY2gudmlzdWFsUmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgcmVmZXJlbmNlSW5kZXggKz0gMVxuICApIHtcbiAgICBjb25zdCByZXNlYXJjaFJlZmVyZW5jZSA9IG9wdGlvbnMucmVzZWFyY2gudmlzdWFsUmVmZXJlbmNlc1tyZWZlcmVuY2VJbmRleF07XG4gICAgY29uc3QgZXhwb3J0ZWRSZWZlcmVuY2UgPSB2aXN1YWxSZWZlcmVuY2VzW3JlZmVyZW5jZUluZGV4XTtcbiAgICBpZiAoIWV4cG9ydGVkUmVmZXJlbmNlKSBjb250aW51ZTtcbiAgICBmb3IgKGxldCBpbWFnZUluZGV4ID0gMDsgaW1hZ2VJbmRleCA8IHJlc2VhcmNoUmVmZXJlbmNlLmltYWdlcy5sZW5ndGg7IGltYWdlSW5kZXggKz0gMSkge1xuICAgICAgY29uc3QgcmVzZWFyY2hJbWFnZSA9IHJlc2VhcmNoUmVmZXJlbmNlLmltYWdlc1tpbWFnZUluZGV4XTtcbiAgICAgIGNvbnN0IGV4cG9ydGVkSW1hZ2UgPSBleHBvcnRlZFJlZmVyZW5jZS5pbWFnZXNbaW1hZ2VJbmRleF07XG4gICAgICBpZiAoIWV4cG9ydGVkSW1hZ2UgfHwgIXJlc2VhcmNoSW1hZ2UuZGF0YSkgY29udGludWU7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9IGAke2ZpbGVTbHVnKHJlc2VhcmNoUmVmZXJlbmNlLmFwcE5hbWUpfS0ke2ltYWdlSW5kZXggKyAxfSR7aW1hZ2VFeHRlbnNpb24ocmVzZWFyY2hJbWFnZS5jb250ZW50VHlwZSl9YDtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucG9zaXguam9pbihcInJlZmVyZW5jZXNcIiwgcmVzZWFyY2hSZWZlcmVuY2UucGxhdGZvcm0sIGZpbGVOYW1lKTtcbiAgICAgIGF3YWl0IHdyaXRlQXRvbWljKHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIHJlbGF0aXZlUGF0aCksIHJlc2VhcmNoSW1hZ2UuZGF0YSk7XG4gICAgICBleHBvcnRlZEltYWdlLmxvY2FsUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gICAgICByZWZlcmVuY2VDb3VudCArPSAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJyYW5kUGFja2FnZSA9IEJyYW5kUGFja2FnZVNjaGVtYS5wYXJzZSh7XG4gICAgLi4ub3B0aW9ucy5icmFuZFBhY2thZ2UsXG4gICAgdmlzdWFsUmVmZXJlbmNlcyxcbiAgfSk7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIFwiYnJhbmQtcGFja2FnZS5qc29uXCIpO1xuICBhd2FpdCB3cml0ZUF0b21pYyhicmFuZFlhbWxQYXRoLCBzdHJpbmdpZnkoYnJhbmRQYWNrYWdlLmJyYW5kLCB7IGluZGVudDogMiB9KSk7XG4gIGF3YWl0IHdyaXRlQXRvbWljKFxuICAgIG1hbmlmZXN0UGF0aCxcbiAgICBgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgcHJvbXB0OiBvcHRpb25zLnByb21wdCxcbiAgICAgICAgZ2VuZXJhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgLi4uYnJhbmRQYWNrYWdlLFxuICAgICAgfSxcbiAgICAgIG51bGwsXG4gICAgICAyLFxuICAgICl9XFxuYCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG91dHB1dERpcmVjdG9yeSxcbiAgICBicmFuZFlhbWxQYXRoLFxuICAgIG1hbmlmZXN0UGF0aCxcbiAgICByZWZlcmVuY2VDb3VudCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * as cli from "./cli.ts";
|
|
2
|
+
export * as exportModule from "./export.ts";
|
|
3
|
+
export * as options from "./options.ts";
|
|
4
|
+
export * as run from "./run.ts";
|
|
5
|
+
export type { BrandCliDependencies } from "./cli.ts";
|
|
6
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./export.ts";
|
|
7
|
+
export { BrandExportOptionsSchema } from "./options.ts";
|
|
8
|
+
export type { BrandExportOptions } from "./options.ts";
|
|
9
|
+
export type { BrandExportCallbacks } from "./run.ts";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED by projen watch - DO NOT EDIT.
|
|
2
|
+
// Regenerated from the exporting modules in ./src.
|
|
3
|
+
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
|
+
export * as cli from "./cli.js";
|
|
5
|
+
export * as exportModule from "./export.js";
|
|
6
|
+
export * as options from "./options.js";
|
|
7
|
+
export * as run from "./run.js";
|
|
8
|
+
export { BrandExportOptionsSchema } from "./options.js";
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJhbmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx3RUFBd0U7QUFFeEUsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLFlBQVksTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFHaEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZXhwb3J0TW9kdWxlIGZyb20gXCIuL2V4cG9ydC50c1wiO1xuZXhwb3J0ICogYXMgb3B0aW9ucyBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBydW4gZnJvbSBcIi4vcnVuLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vY2xpLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdyaXRlQnJhbmRQYWNrYWdlT3B0aW9ucywgV3JpdHRlbkJyYW5kUGFja2FnZSB9IGZyb20gXCIuL2V4cG9ydC50c1wiO1xuZXhwb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZEV4cG9ydE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kRXhwb3J0Q2FsbGJhY2tzIH0gZnJvbSBcIi4vcnVuLnRzXCI7XG4iXX0=
|