@dbx-tools/cli 0.9.121 → 0.9.122

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 CHANGED
@@ -452,13 +452,13 @@ dbx lakebase-proxy [options] [command]
452
452
 
453
453
  #### Options
454
454
 
455
- | Option | Description |
456
- | --------------------------------------- | ---------------------------------------------------------------------------- |
457
- | `-V, --version` | output the version number |
458
- | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: DBX_TOOLS_POSTGRES_ROLE) |
459
- | `-l, --listen <value>` | Loopback listener address. (default: tcp://localhost:5432, env: LISTEN) |
460
- | `-s, --startup-timeout-seconds <value>` | Startup timeout in seconds. (default: 30, env: STARTUP_TIMEOUT_SECONDS) |
461
- | `--profile <value>` | Exact Databricks profile. (env: DATABRICKS_CONFIG_PROFILE) |
455
+ | Option | Description |
456
+ | --------------------------------------- | ----------------------------------------------------------------------- |
457
+ | `-V, --version` | output the version number |
458
+ | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: POSTGRES_ROLE) |
459
+ | `-l, --listen <value>` | Loopback listener address. (default: tcp://localhost:5432, env: LISTEN) |
460
+ | `-s, --startup-timeout-seconds <value>` | Startup timeout in seconds. (default: 30, env: STARTUP_TIMEOUT_SECONDS) |
461
+ | `--profile <value>` | Exact Databricks profile. (env: DATABRICKS_CONFIG_PROFILE) |
462
462
 
463
463
  #### Commands
464
464
 
@@ -512,15 +512,15 @@ dbx lakebase-proxy service install [options]
512
512
 
513
513
  #### Options
514
514
 
515
- | Option | Description |
516
- | --------------------------------------- | ---------------------------------------------------------------------------- |
517
- | `--no-start` | Do not start the service after installation |
518
- | `--python-project <path>` | Install a local Python project instead of the registry package |
519
- | `--offline` | Install Python packages from the uv cache without network access |
520
- | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: DBX_TOOLS_POSTGRES_ROLE) |
521
- | `-l, --listen <value>` | Loopback listener address. (default: tcp://localhost:5432, env: LISTEN) |
522
- | `-s, --startup-timeout-seconds <value>` | Startup timeout in seconds. (default: 30, env: STARTUP_TIMEOUT_SECONDS) |
523
- | `--profile <value>` | Exact Databricks profile. (env: DATABRICKS_CONFIG_PROFILE) |
515
+ | Option | Description |
516
+ | --------------------------------------- | ----------------------------------------------------------------------- |
517
+ | `--no-start` | Do not start the service after installation |
518
+ | `--python-project <path>` | Install a local Python project instead of the registry package |
519
+ | `--offline` | Install Python packages from the uv cache without network access |
520
+ | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: POSTGRES_ROLE) |
521
+ | `-l, --listen <value>` | Loopback listener address. (default: tcp://localhost:5432, env: LISTEN) |
522
+ | `-s, --startup-timeout-seconds <value>` | Startup timeout in seconds. (default: 30, env: STARTUP_TIMEOUT_SECONDS) |
523
+ | `--profile <value>` | Exact Databricks profile. (env: DATABRICKS_CONFIG_PROFILE) |
524
524
 
525
525
  ### `dbx lakebase-proxy service start`
526
526
 
@@ -735,11 +735,11 @@ dbx graphiti [options] [command]
735
735
  | `-m, --model-class <value>` | Optional chat capability class used when selecting a default model. (choices: "chat-thinking", "chat-balanced", "chat-fast", default: "chat-fast", env: MODEL_CLASS) |
736
736
  | `-t, --temperature <value>` | Sampling temperature forwarded to the Graphiti LLM client. (default: 1, env: TEMPERATURE) |
737
737
  | `--structured-output-mode <value>` | Structured-output mode forwarded to Graphiti's OpenAI provider. (default: "json_object", env: LLM_STRUCTURED_OUTPUT_MODE) |
738
- | `--startup-timeout-ms <value>` | Maximum milliseconds allowed for the Graphiti runtime to become ready. (default: 180000, env: DBX_TOOLS_GRAPHITI_STARTUP_TIMEOUT_MS) |
738
+ | `--startup-timeout-ms <value>` | Maximum milliseconds allowed for the Graphiti runtime to become ready. (default: 180000, env: GRAPHITI_STARTUP_TIMEOUT_MS) |
739
739
  | `-l, --listen <value>` | Graphiti HTTP listener. (default: tcp://127.0.0.1:7272, env: GRAPHITI_LISTEN) |
740
740
  | `--database-url <value>` | PostgreSQL URL or Lakebase target. Omit it to use persistent embedded PostgreSQL. (env: LAKEBASE_ENDPOINT) |
741
741
  | `--database-schema <value>` | PostgreSQL schema used for Lakebase graph tables. (default: "dbx_tools_graphiti", env: GRAPHITI_DATABASE_SCHEMA) |
742
- | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: DBX_TOOLS_POSTGRES_ROLE) |
742
+ | `--postgres-role <value>` | PostgreSQL role assumed after authentication. (env: POSTGRES_ROLE) |
743
743
 
744
744
  #### Commands
745
745
 
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
6
- export const PACKAGE_VERSION = "0.9.121";
6
+ export const PACKAGE_VERSION = "0.9.122";
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";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
2
- export declare const PACKAGE_VERSION = "0.9.121";
2
+ export declare const PACKAGE_VERSION = "0.9.122";
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";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
5
- export const PACKAGE_VERSION = "0.9.121";
5
+ export const PACKAGE_VERSION = "0.9.122";
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";
@@ -41,4 +41,4 @@ export { SSL_REQUEST, CANCEL_REQUEST, PROTOCOL_3, PostgresProtocolError } from "
41
41
  export { LakebaseProxy } from "./src/lakebase-proxy/proxy.js";
42
42
  export { workspaceRoot } from "./src/root.js";
43
43
  export { TunnelOptionsSchema } from "./src/tunnel/options.js";
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssWUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssZUFBZSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxLQUFLLHlCQUF5QixNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssb0JBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxLQUFLLHFCQUFxQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssZUFBZSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEyMVwiO1xuZXhwb3J0ICogYXMgYXBwa2l0Q2xpIGZyb20gXCIuL3NyYy9hcHBraXQvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBhcHBraXRFbnZFeHBvcnQgZnJvbSBcIi4vc3JjL2FwcGtpdC9lbnYtZXhwb3J0LnRzXCI7XG5leHBvcnQgKiBhcyBhdXRoQ2xpIGZyb20gXCIuL3NyYy9hdXRoL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgYXV0aE9wdGlvbnMgZnJvbSBcIi4vc3JjL2F1dGgvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlQ2xpIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlQ29uZmlnIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlSW5zdGFsbCBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9pbnN0YWxsLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVPcHRpb25zIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZVJ1bm5lciBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW5uZXIudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZVJ1bnRpbWUgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvcnVudGltZS50c1wiO1xuZXhwb3J0ICogYXMgZ3JhcGhpdGlDbGkgZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ3JhcGhpdGlPcHRpb25zIGZyb20gXCIuL3NyYy9ncmFwaGl0aS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5Q2FuY2VsbGF0aW9uIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jYW5jZWxsYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlDbGkgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NsaS50c1wiO1xuZXhwb3J0ICogYXMgbGFrZWJhc2VQcm94eU9wdGlvbnMgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlQcm90b2NvbCBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJvdG9jb2wudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlQcm94eSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJveHkudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsR2F0ZXdheUNsaSBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsR2F0ZXdheVNlcnZlciBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9zZXJ2ZXIudHNcIjtcbmV4cG9ydCAqIGFzIHJvb3QgZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbEFwcCBmcm9tIFwiLi9zcmMvdHVubmVsL2FwcC50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsQ2xpIGZyb20gXCIuL3NyYy90dW5uZWwvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyB0dW5uZWxPcHRpb25zIGZyb20gXCIuL3NyYy90dW5uZWwvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsUHJveHkgZnJvbSBcIi4vc3JjL3R1bm5lbC9wcm94eS50c1wiO1xuZXhwb3J0IHsgRW52RXhwb3J0Rm9ybWF0U2NoZW1hLCBFbnZDb21tYW5kT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9hcHBraXQvZW52LWV4cG9ydC50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbnZFeHBvcnRGb3JtYXQsIEVudkNvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FwcGtpdC9lbnYtZXhwb3J0LnRzXCI7XG5leHBvcnQgeyBBdXRoQ2xpT3B0aW9uc1NjaGVtYSwgVG9rZW5Db21tYW5kT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9hdXRoL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aENsaU9wdGlvbnMsIFRva2VuQ29tbWFuZE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzXCI7XG5leHBvcnQgeyBHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVIgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLCBHZW5pZUNvZGVQcm9maWxlSG9tZSwgR2VuaWVDb2RlSG9tZSB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHNcIjtcbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bm5lci50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUNvZGVSdW50aW1lRGVwZW5kZW5jaWVzLCBSdW5HZW5pZUNvZGVPcHRpb25zLCBQcmVwYXJlZEdlbmllQ29kZVJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW50aW1lLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdyYXBoaXRpQ2xpRGVwZW5kZW5jaWVzLCBHcmFwaGl0aVNlcnZpY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0IHsgQ2FuY2VsbGF0aW9uUmVnaXN0cnkgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvY2FuY2VsbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IENhbmNlbGxhdGlvblRhcmdldCwgQ2FuY2VsbGF0aW9uRm9yd2FyZGVyIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NhbmNlbGxhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBMYWtlYmFzZVByb3h5Q2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NsaS50c1wiO1xuZXhwb3J0IHsgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWEsIExha2ViYXNlUHJveHlVcmxPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJhc2VQcm94eU9wdGlvbnMsIFJlc29sdmVkTGFrZWJhc2VQcm94eU9wdGlvbnMsIExha2ViYXNlUHJveHlVcmxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCB7IFNTTF9SRVFVRVNULCBDQU5DRUxfUkVRVUVTVCwgUFJPVE9DT0xfMywgUG9zdGdyZXNQcm90b2NvbEVycm9yIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3RvY29sLnRzXCI7XG5leHBvcnQgdHlwZSB7IFN0YXJ0dXBNZXNzYWdlLCBDYW5jZWxNZXNzYWdlLCBJbml0aWFsTWVzc2FnZSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm90b2NvbC50c1wiO1xuZXhwb3J0IHsgTGFrZWJhc2VQcm94eSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm94eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbEdhdGV3YXlDbGlEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9jbGkudHNcIjtcbmV4cG9ydCB7IHdvcmtzcGFjZVJvb3QgfSBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0IHsgVHVubmVsT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy90dW5uZWwvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBUdW5uZWxPcHRpb25zLCBSZXNvbHZlZFR1bm5lbE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgUHJveHlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3R1bm5lbC9wcm94eS50c1wiO1xuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssWUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssZUFBZSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxLQUFLLHlCQUF5QixNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssb0JBQW9CLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxLQUFLLHFCQUFxQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssZUFBZSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEyMlwiO1xuZXhwb3J0ICogYXMgYXBwa2l0Q2xpIGZyb20gXCIuL3NyYy9hcHBraXQvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBhcHBraXRFbnZFeHBvcnQgZnJvbSBcIi4vc3JjL2FwcGtpdC9lbnYtZXhwb3J0LnRzXCI7XG5leHBvcnQgKiBhcyBhdXRoQ2xpIGZyb20gXCIuL3NyYy9hdXRoL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgYXV0aE9wdGlvbnMgZnJvbSBcIi4vc3JjL2F1dGgvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlQ2xpIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlQ29uZmlnIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlSW5zdGFsbCBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9pbnN0YWxsLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVPcHRpb25zIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZVJ1bm5lciBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW5uZXIudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZVJ1bnRpbWUgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvcnVudGltZS50c1wiO1xuZXhwb3J0ICogYXMgZ3JhcGhpdGlDbGkgZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZ3JhcGhpdGlPcHRpb25zIGZyb20gXCIuL3NyYy9ncmFwaGl0aS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5Q2FuY2VsbGF0aW9uIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jYW5jZWxsYXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlDbGkgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NsaS50c1wiO1xuZXhwb3J0ICogYXMgbGFrZWJhc2VQcm94eU9wdGlvbnMgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlQcm90b2NvbCBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJvdG9jb2wudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlQcm94eSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJveHkudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsR2F0ZXdheUNsaSBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsR2F0ZXdheVNlcnZlciBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9zZXJ2ZXIudHNcIjtcbmV4cG9ydCAqIGFzIHJvb3QgZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbEFwcCBmcm9tIFwiLi9zcmMvdHVubmVsL2FwcC50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsQ2xpIGZyb20gXCIuL3NyYy90dW5uZWwvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyB0dW5uZWxPcHRpb25zIGZyb20gXCIuL3NyYy90dW5uZWwvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsUHJveHkgZnJvbSBcIi4vc3JjL3R1bm5lbC9wcm94eS50c1wiO1xuZXhwb3J0IHsgRW52RXhwb3J0Rm9ybWF0U2NoZW1hLCBFbnZDb21tYW5kT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9hcHBraXQvZW52LWV4cG9ydC50c1wiO1xuZXhwb3J0IHR5cGUgeyBFbnZFeHBvcnRGb3JtYXQsIEVudkNvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FwcGtpdC9lbnYtZXhwb3J0LnRzXCI7XG5leHBvcnQgeyBBdXRoQ2xpT3B0aW9uc1NjaGVtYSwgVG9rZW5Db21tYW5kT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9hdXRoL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aENsaU9wdGlvbnMsIFRva2VuQ29tbWFuZE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzXCI7XG5leHBvcnQgeyBHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVIgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLCBHZW5pZUNvZGVQcm9maWxlSG9tZSwgR2VuaWVDb2RlSG9tZSB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHNcIjtcbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bm5lci50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUNvZGVSdW50aW1lRGVwZW5kZW5jaWVzLCBSdW5HZW5pZUNvZGVPcHRpb25zLCBQcmVwYXJlZEdlbmllQ29kZVJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW50aW1lLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdyYXBoaXRpQ2xpRGVwZW5kZW5jaWVzLCBHcmFwaGl0aVNlcnZpY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0IHsgQ2FuY2VsbGF0aW9uUmVnaXN0cnkgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvY2FuY2VsbGF0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IENhbmNlbGxhdGlvblRhcmdldCwgQ2FuY2VsbGF0aW9uRm9yd2FyZGVyIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NhbmNlbGxhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBMYWtlYmFzZVByb3h5Q2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NsaS50c1wiO1xuZXhwb3J0IHsgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWEsIExha2ViYXNlUHJveHlVcmxPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJhc2VQcm94eU9wdGlvbnMsIFJlc29sdmVkTGFrZWJhc2VQcm94eU9wdGlvbnMsIExha2ViYXNlUHJveHlVcmxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L29wdGlvbnMudHNcIjtcbmV4cG9ydCB7IFNTTF9SRVFVRVNULCBDQU5DRUxfUkVRVUVTVCwgUFJPVE9DT0xfMywgUG9zdGdyZXNQcm90b2NvbEVycm9yIH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3RvY29sLnRzXCI7XG5leHBvcnQgdHlwZSB7IFN0YXJ0dXBNZXNzYWdlLCBDYW5jZWxNZXNzYWdlLCBJbml0aWFsTWVzc2FnZSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm90b2NvbC50c1wiO1xuZXhwb3J0IHsgTGFrZWJhc2VQcm94eSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm94eS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbEdhdGV3YXlDbGlEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi9zcmMvbW9kZWwtZ2F0ZXdheS9jbGkudHNcIjtcbmV4cG9ydCB7IHdvcmtzcGFjZVJvb3QgfSBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0IHsgVHVubmVsT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy90dW5uZWwvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBUdW5uZWxPcHRpb25zLCBSZXNvbHZlZFR1bm5lbE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgUHJveHlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3R1bm5lbC9wcm94eS50c1wiO1xuIl19
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { AppKitChildProcess } from "@dbx-tools/appkit/child-process";
6
+ import { exec } from "@dbx-tools/core";
7
7
  import { asyncUtils, log } from "@dbx-tools/shared-core";
8
8
  import { GenieCodeRunnerOptionsSchema } from "@dbx-tools/shared-genie-code/options";
9
9
  /** Private environment field carrying serialized runner options. */
@@ -50,26 +50,21 @@ export async function runGenieCodeChild(environment = process.env) {
50
50
  executable: options.executable,
51
51
  home: options.home,
52
52
  });
53
- const child = new AppKitChildProcess([
54
- options.executable,
55
- [...options.arguments],
56
- {
57
- cwd: process.cwd(),
58
- env: {
59
- ...environment,
60
- GENIE_HOME: options.home,
61
- },
62
- stdin: "inherit",
63
- stdout: "inherit",
64
- stderr: "inherit",
53
+ const child = exec.spawn(options.executable, [...options.arguments], {
54
+ cwd: process.cwd(),
55
+ env: {
56
+ ...environment,
57
+ GENIE_HOME: options.home,
65
58
  },
66
- ], {
67
- gracefulTimeoutMs: 5_000,
68
- forceTimeoutMs: 1_000,
59
+ stdin: "inherit",
60
+ stdout: "inherit",
61
+ stderr: "inherit",
62
+ terminateTimeout: 5_000,
63
+ killTimeout: 1_000,
69
64
  });
70
- const result = await child.run();
65
+ const result = await child;
71
66
  if (result.exitCode !== 0)
72
67
  process.exitCode = result.exitCode;
73
68
  }
74
69
  export { RUNNER_OPTIONS_ENV };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXBGLG9FQUFvRTtBQUNwRSxNQUFNLGtCQUFrQixHQUFHLGdDQUFnQyxDQUFDO0FBQzVELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvQywrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGNBQWlDLE9BQU8sQ0FBQyxHQUFHO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxVQUFVO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixjQUFjLENBQUMsQ0FBQztJQUN0RSxPQUFPLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxTQUFpQixFQUNqQixXQUFtQixFQUNuQixTQUFpQjtJQUVqQixJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxVQUFVLENBQUMsSUFBSSxDQUN2QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ25CLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsV0FBVyxFQUFFLEVBQUU7Z0JBQ25ELE1BQU07YUFDUCxDQUFDLENBQUM7WUFDSCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUMsRUFDRDtRQUNFLFVBQVUsRUFBRSxHQUFHO1FBQ2YsU0FBUztRQUNULFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLO0tBQzdCLENBQ0YsRUFBRSxDQUFDO1FBQ0YsSUFBSSxLQUFLO1lBQUUsT0FBTztJQUNwQixDQUFDO0FBQ0gsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxjQUFpQyxPQUFPLENBQUMsR0FBRztJQUU1QyxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1FBQ3ZDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1FBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO0tBQ3BDLENBQUMsQ0FBQztJQUNILE1BQU0sdUJBQXVCLENBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFDeEIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO0lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQywwQ0FBMEMsRUFBRTtRQUN0RCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztJQUNILE1BQU0sS0FBSyxHQUFHLElBQUksa0JBQWtCLENBQ2xDO1FBQ0UsT0FBTyxDQUFDLFVBQVU7UUFDbEIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDdEI7WUFDRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNsQixHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxXQUFXO2dCQUNkLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSTthQUN6QjtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLE1BQU0sRUFBRSxTQUFTO1NBQ2xCO0tBQ0YsRUFDRDtRQUNFLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FDRixDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakMsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLENBQUM7UUFBRSxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDaEUsQ0FBQztBQUVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlcm5hbCByZWFkaW5lc3MgZ2F0ZSBhbmQgaW50ZXJhY3RpdmUgR2VuaWUgQ29kZSBjaGlsZCBwcm9jZXNzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBBcHBLaXRDaGlsZFByb2Nlc3MgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQvY2hpbGQtcHJvY2Vzc1wiO1xuaW1wb3J0IHsgYXN5bmNVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IEdlbmllQ29kZVJ1bm5lck9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWUtY29kZS9vcHRpb25zXCI7XG5cbi8qKiBQcml2YXRlIGVudmlyb25tZW50IGZpZWxkIGNhcnJ5aW5nIHNlcmlhbGl6ZWQgcnVubmVyIG9wdGlvbnMuICovXG5jb25zdCBSVU5ORVJfT1BUSU9OU19FTlYgPSBcIkRCWF9UT09MU19HRU5JRV9SVU5ORVJfT1BUSU9OU1wiO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllLWNvZGU6cnVubmVyXCIpO1xuXG4vKiogUGFyc2UgdGhlIHNlcmlhbGl6ZWQgcnVubmVyIGJvdW5kYXJ5IGZyb20gaXRzIHByaXZhdGUgZW52aXJvbm1lbnQgZmllbGQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuaWVDb2RlUnVubmVyT3B0aW9ucyhlbnZpcm9ubWVudDogTm9kZUpTLlByb2Nlc3NFbnYgPSBwcm9jZXNzLmVudikge1xuICBjb25zdCBzZXJpYWxpemVkID0gZW52aXJvbm1lbnRbUlVOTkVSX09QVElPTlNfRU5WXTtcbiAgaWYgKCFzZXJpYWxpemVkKSB0aHJvdyBuZXcgRXJyb3IoYCR7UlVOTkVSX09QVElPTlNfRU5WfSBpcyByZXF1aXJlZGApO1xuICByZXR1cm4gR2VuaWVDb2RlUnVubmVyT3B0aW9uc1NjaGVtYS5wYXJzZShKU09OLnBhcnNlKHNlcmlhbGl6ZWQpKTtcbn1cblxuLyoqIFdhaXQgdW50aWwgdGhlIGd1YXJkZWQgbW9kZWwtZ2F0ZXdheSBoZWFsdGggcm91dGUgYWNjZXB0cyB0aGUgcnVubmVyIHRva2VuLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JHZW5pZUNvZGVHYXRld2F5KFxuICBoZWFsdGhVcmw6IHN0cmluZyxcbiAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgdGltZW91dE1zOiBudW1iZXIsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIGF3YWl0IChjb25zdCByZWFkeSBvZiBhc3luY1V0aWxzLnBvbGwoXG4gICAgYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaGVhbHRoVXJsLCB7XG4gICAgICAgICAgaGVhZGVyczogeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YmVhcmVyVG9rZW59YCB9LFxuICAgICAgICAgIHNpZ25hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5vaztcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBpbnRlcnZhbE1zOiAyMDAsXG4gICAgICB0aW1lb3V0TXMsXG4gICAgICBwcmVkaWNhdGU6IChyZWFkeSkgPT4gIXJlYWR5LFxuICAgIH0sXG4gICkpIHtcbiAgICBpZiAocmVhZHkpIHJldHVybjtcbiAgfVxufVxuXG4vKiogUnVuIEdlbmllIENvZGUgd2l0aCBpbmhlcml0ZWQgdGVybWluYWwgc3RyZWFtcyBhZnRlciBpdHMgZ2F0ZXdheSBpcyByZWFkeS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5HZW5pZUNvZGVDaGlsZChcbiAgZW52aXJvbm1lbnQ6IE5vZGVKUy5Qcm9jZXNzRW52ID0gcHJvY2Vzcy5lbnYsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGdlbmllQ29kZVJ1bm5lck9wdGlvbnMoZW52aXJvbm1lbnQpO1xuICBsb2dnZXIuaW5mbyhcIndhaXRpbmcgZm9yIG1vZGVsIGdhdGV3YXlcIiwge1xuICAgIGdhdGV3YXk6IG9wdGlvbnMuZ2F0ZXdheUhlYWx0aFVybCxcbiAgICB0aW1lb3V0TXM6IG9wdGlvbnMuc3RhcnR1cFRpbWVvdXRNcyxcbiAgfSk7XG4gIGF3YWl0IHdhaXRGb3JHZW5pZUNvZGVHYXRld2F5KFxuICAgIG9wdGlvbnMuZ2F0ZXdheUhlYWx0aFVybCxcbiAgICBvcHRpb25zLmJlYXJlclRva2VuLFxuICAgIG9wdGlvbnMuc3RhcnR1cFRpbWVvdXRNcyxcbiAgKTtcbiAgbG9nZ2VyLmluZm8oXCJtb2RlbCBnYXRld2F5IHJlYWR5OyBzdGFydGluZyBHZW5pZSBDb2RlXCIsIHtcbiAgICBleGVjdXRhYmxlOiBvcHRpb25zLmV4ZWN1dGFibGUsXG4gICAgaG9tZTogb3B0aW9ucy5ob21lLFxuICB9KTtcbiAgY29uc3QgY2hpbGQgPSBuZXcgQXBwS2l0Q2hpbGRQcm9jZXNzKFxuICAgIFtcbiAgICAgIG9wdGlvbnMuZXhlY3V0YWJsZSxcbiAgICAgIFsuLi5vcHRpb25zLmFyZ3VtZW50c10sXG4gICAgICB7XG4gICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgLi4uZW52aXJvbm1lbnQsXG4gICAgICAgICAgR0VOSUVfSE9NRTogb3B0aW9ucy5ob21lLFxuICAgICAgICB9LFxuICAgICAgICBzdGRpbjogXCJpbmhlcml0XCIsXG4gICAgICAgIHN0ZG91dDogXCJpbmhlcml0XCIsXG4gICAgICAgIHN0ZGVycjogXCJpbmhlcml0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAge1xuICAgICAgZ3JhY2VmdWxUaW1lb3V0TXM6IDVfMDAwLFxuICAgICAgZm9yY2VUaW1lb3V0TXM6IDFfMDAwLFxuICAgIH0sXG4gICk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNoaWxkLnJ1bigpO1xuICBpZiAocmVzdWx0LmV4aXRDb2RlICE9PSAwKSBwcm9jZXNzLmV4aXRDb2RlID0gcmVzdWx0LmV4aXRDb2RlO1xufVxuXG5leHBvcnQgeyBSVU5ORVJfT1BUSU9OU19FTlYgfTtcbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVwRixvRUFBb0U7QUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUM1RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFL0MsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxjQUFpQyxPQUFPLENBQUMsR0FBRztJQUNqRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsVUFBVTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxrQkFBa0IsY0FBYyxDQUFDLENBQUM7SUFDdEUsT0FBTyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsU0FBaUI7SUFFakIsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksVUFBVSxDQUFDLElBQUksQ0FDdkMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUNuQixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLFdBQVcsRUFBRSxFQUFFO2dCQUNuRCxNQUFNO2FBQ1AsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDLEVBQ0Q7UUFDRSxVQUFVLEVBQUUsR0FBRztRQUNmLFNBQVM7UUFDVCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSztLQUM3QixDQUNGLEVBQUUsQ0FBQztRQUNGLElBQUksS0FBSztZQUFFLE9BQU87SUFDcEIsQ0FBQztBQUNILENBQUM7QUFFRCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsY0FBaUMsT0FBTyxDQUFDLEdBQUc7SUFFNUMsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtRQUN2QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUNqQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtLQUNwQyxDQUFDLENBQUM7SUFDSCxNQUFNLHVCQUF1QixDQUMzQixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsQ0FBQztJQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUU7UUFDdEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtLQUNuQixDQUFDLENBQUM7SUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNuRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixHQUFHLEVBQUU7WUFDSCxHQUFHLFdBQVc7WUFDZCxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUk7U0FDekI7UUFDRCxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDO0lBQzNCLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ2hFLENBQUM7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZXJuYWwgcmVhZGluZXNzIGdhdGUgYW5kIGludGVyYWN0aXZlIEdlbmllIENvZGUgY2hpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGFzeW5jVXRpbHMsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBHZW5pZUNvZGVSdW5uZXJPcHRpb25zU2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGUvb3B0aW9uc1wiO1xuXG4vKiogUHJpdmF0ZSBlbnZpcm9ubWVudCBmaWVsZCBjYXJyeWluZyBzZXJpYWxpemVkIHJ1bm5lciBvcHRpb25zLiAqL1xuY29uc3QgUlVOTkVSX09QVElPTlNfRU5WID0gXCJEQlhfVE9PTFNfR0VOSUVfUlVOTkVSX09QVElPTlNcIjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS1jb2RlOnJ1bm5lclwiKTtcblxuLyoqIFBhcnNlIHRoZSBzZXJpYWxpemVkIHJ1bm5lciBib3VuZGFyeSBmcm9tIGl0cyBwcml2YXRlIGVudmlyb25tZW50IGZpZWxkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZVJ1bm5lck9wdGlvbnMoZW52aXJvbm1lbnQ6IE5vZGVKUy5Qcm9jZXNzRW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3Qgc2VyaWFsaXplZCA9IGVudmlyb25tZW50W1JVTk5FUl9PUFRJT05TX0VOVl07XG4gIGlmICghc2VyaWFsaXplZCkgdGhyb3cgbmV3IEVycm9yKGAke1JVTk5FUl9PUFRJT05TX0VOVn0gaXMgcmVxdWlyZWRgKTtcbiAgcmV0dXJuIEdlbmllQ29kZVJ1bm5lck9wdGlvbnNTY2hlbWEucGFyc2UoSlNPTi5wYXJzZShzZXJpYWxpemVkKSk7XG59XG5cbi8qKiBXYWl0IHVudGlsIHRoZSBndWFyZGVkIG1vZGVsLWdhdGV3YXkgaGVhbHRoIHJvdXRlIGFjY2VwdHMgdGhlIHJ1bm5lciB0b2tlbi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yR2VuaWVDb2RlR2F0ZXdheShcbiAgaGVhbHRoVXJsOiBzdHJpbmcsXG4gIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gIHRpbWVvdXRNczogbnVtYmVyLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgcmVhZHkgb2YgYXN5bmNVdGlscy5wb2xsKFxuICAgIGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGhlYWx0aFVybCwge1xuICAgICAgICAgIGhlYWRlcnM6IHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke2JlYXJlclRva2VufWAgfSxcbiAgICAgICAgICBzaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2Uub2s7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaW50ZXJ2YWxNczogMjAwLFxuICAgICAgdGltZW91dE1zLFxuICAgICAgcHJlZGljYXRlOiAocmVhZHkpID0+ICFyZWFkeSxcbiAgICB9LFxuICApKSB7XG4gICAgaWYgKHJlYWR5KSByZXR1cm47XG4gIH1cbn1cblxuLyoqIFJ1biBHZW5pZSBDb2RlIHdpdGggaW5oZXJpdGVkIHRlcm1pbmFsIHN0cmVhbXMgYWZ0ZXIgaXRzIGdhdGV3YXkgaXMgcmVhZHkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuR2VuaWVDb2RlQ2hpbGQoXG4gIGVudmlyb25tZW50OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZW5pZUNvZGVSdW5uZXJPcHRpb25zKGVudmlyb25tZW50KTtcbiAgbG9nZ2VyLmluZm8oXCJ3YWl0aW5nIGZvciBtb2RlbCBnYXRld2F5XCIsIHtcbiAgICBnYXRld2F5OiBvcHRpb25zLmdhdGV3YXlIZWFsdGhVcmwsXG4gICAgdGltZW91dE1zOiBvcHRpb25zLnN0YXJ0dXBUaW1lb3V0TXMsXG4gIH0pO1xuICBhd2FpdCB3YWl0Rm9yR2VuaWVDb2RlR2F0ZXdheShcbiAgICBvcHRpb25zLmdhdGV3YXlIZWFsdGhVcmwsXG4gICAgb3B0aW9ucy5iZWFyZXJUb2tlbixcbiAgICBvcHRpb25zLnN0YXJ0dXBUaW1lb3V0TXMsXG4gICk7XG4gIGxvZ2dlci5pbmZvKFwibW9kZWwgZ2F0ZXdheSByZWFkeTsgc3RhcnRpbmcgR2VuaWUgQ29kZVwiLCB7XG4gICAgZXhlY3V0YWJsZTogb3B0aW9ucy5leGVjdXRhYmxlLFxuICAgIGhvbWU6IG9wdGlvbnMuaG9tZSxcbiAgfSk7XG4gIGNvbnN0IGNoaWxkID0gZXhlYy5zcGF3bihvcHRpb25zLmV4ZWN1dGFibGUsIFsuLi5vcHRpb25zLmFyZ3VtZW50c10sIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgZW52OiB7XG4gICAgICAuLi5lbnZpcm9ubWVudCxcbiAgICAgIEdFTklFX0hPTUU6IG9wdGlvbnMuaG9tZSxcbiAgICB9LFxuICAgIHN0ZGluOiBcImluaGVyaXRcIixcbiAgICBzdGRvdXQ6IFwiaW5oZXJpdFwiLFxuICAgIHN0ZGVycjogXCJpbmhlcml0XCIsXG4gICAgdGVybWluYXRlVGltZW91dDogNV8wMDAsXG4gICAga2lsbFRpbWVvdXQ6IDFfMDAwLFxuICB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2hpbGQ7XG4gIGlmIChyZXN1bHQuZXhpdENvZGUgIT09IDApIHByb2Nlc3MuZXhpdENvZGUgPSByZXN1bHQuZXhpdENvZGU7XG59XG5cbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9O1xuIl19
@@ -8,7 +8,7 @@ import { z } from "zod";
8
8
  const text = (description) => z.string().trim().min(1).optional().describe(description);
9
9
  export const LakebaseProxyOptionsSchema = z
10
10
  .object({
11
- ...options.PostgresOptionsSchema.shape,
11
+ ...options.PostgresConfigOptionsSchema.shape,
12
12
  listen: options
13
13
  .listenAddressSchema({ port: 5432, loopback: true })
14
14
  .describe("Loopback listener address."),
@@ -38,4 +38,4 @@ export const LakebaseProxyUrlOptionsSchema = z
38
38
  export function resolveLakebaseProxyOptions(options = {}) {
39
39
  return LakebaseProxyOptionsSchema.parse(options);
40
40
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLElBQUksR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUM7S0FDeEMsTUFBTSxDQUFDO0lBQ04sR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSztJQUN0QyxNQUFNLEVBQUUsT0FBTztTQUNaLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkQsUUFBUSxDQUFDLDRCQUE0QixDQUFDO0lBQ3pDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxNQUFNO1NBQzVCLE1BQU0sRUFBVTtTQUNoQixHQUFHLEVBQUU7U0FDTCxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsUUFBUSxDQUFDLDZCQUE2QixDQUFDO0lBQzFDLE9BQU8sRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Q0FDN0YsQ0FBQztLQUNELE1BQU0sRUFBRTtLQUNSLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUM7S0FDM0MsTUFBTSxDQUFDO0lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxnREFBZ0QsQ0FBQztJQUM5RCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtJQUN0RSxNQUFNLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO0NBQ3JGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixNQUFNLENBQ0wsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQzVGO0lBQ0UsT0FBTyxFQUFFLGtDQUFrQztJQUMzQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7Q0FDakIsQ0FDRjtLQUNBLFFBQVEsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBUXZFLDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFVBQWdDLEVBQUU7SUFFbEMsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGFrZWJhc2UgcHJveHkgbGlzdGVuZXIsIHNlcnZpY2UsIGFuZCBVUkwgY29tbWFuZCBvcHRpb25zLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBvcHRpb25zIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IHRleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT4gei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuXG5leHBvcnQgY29uc3QgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLm9wdGlvbnMuUG9zdGdyZXNPcHRpb25zU2NoZW1hLnNoYXBlLFxuICAgIGxpc3Rlbjogb3B0aW9uc1xuICAgICAgLmxpc3RlbkFkZHJlc3NTY2hlbWEoeyBwb3J0OiA1NDMyLCBsb29wYmFjazogdHJ1ZSB9KVxuICAgICAgLmRlc2NyaWJlKFwiTG9vcGJhY2sgbGlzdGVuZXIgYWRkcmVzcy5cIiksXG4gICAgc3RhcnR1cFRpbWVvdXRTZWNvbmRzOiB6LmNvZXJjZVxuICAgICAgLm51bWJlcjxudW1iZXI+KClcbiAgICAgIC5pbnQoKVxuICAgICAgLm5vbm5lZ2F0aXZlKClcbiAgICAgIC5kZWZhdWx0KDMwKVxuICAgICAgLmRlc2NyaWJlKFwiU3RhcnR1cCB0aW1lb3V0IGluIHNlY29uZHMuXCIpLFxuICAgIHByb2ZpbGU6IG9wdGlvbnMuRGF0YWJyaWNrc09wdGlvbnNTY2hlbWEuc2hhcGUucHJvZmlsZS5kZXNjcmliZShcIkV4YWN0IERhdGFicmlja3MgcHJvZmlsZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJMYWtlYmFzZSBwcm94eSBsaXN0ZW5lciBhbmQgc2VydmljZSBvcHRpb25zLlwiKTtcblxuZXhwb3J0IGNvbnN0IExha2ViYXNlUHJveHlVcmxPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0YXJnZXQ6IHRleHQoXCJMYWtlYmFzZSBwcm9qZWN0LCByZXNvdXJjZSBwYXRoLCBob3N0LCBvciBVUkwuXCIpLFxuICAgIGxha2ViYXNlRW5kcG9pbnQ6IG9wdGlvbnMuTGFrZWJhc2VPcHRpb25zU2NoZW1hLnNoYXBlLmxha2ViYXNlRW5kcG9pbnQsXG4gICAgbGlzdGVuOiBvcHRpb25zLmxpc3RlbkFkZHJlc3NTY2hlbWEoeyBwb3J0OiA1NDMyIH0pLmRlc2NyaWJlKFwiTG9jYWwgcHJveHkgYWRkcmVzcy5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAucmVmaW5lKFxuICAgIChjb25maWd1cmVkKSA9PiBjb25maWd1cmVkLnRhcmdldCAhPT0gdW5kZWZpbmVkIHx8IGNvbmZpZ3VyZWQubGFrZWJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkLFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6IFwiVVJMIHJlcXVpcmVzIHRhcmdldCBvciBlbmRwb2ludC5cIixcbiAgICAgIHBhdGg6IFtcInRhcmdldFwiXSxcbiAgICB9LFxuICApXG4gIC5kZXNjcmliZShcIk9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgYSBsb2NhbCBMYWtlYmFzZSBQb3N0Z3JlU1FMIFVSTC5cIik7XG5cbmV4cG9ydCB0eXBlIExha2ViYXNlUHJveHlPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zID0gei5vdXRwdXQ8dHlwZW9mIExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGFrZWJhc2VQcm94eVVybE9wdGlvbnMgPSB6Lm91dHB1dDx0eXBlb2YgTGFrZWJhc2VQcm94eVVybE9wdGlvbnNTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgYW5kIGRlZmF1bHQgTGFrZWJhc2UgcHJveHkgbGlzdGVuZXIgb3B0aW9ucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTGFrZWJhc2VQcm94eU9wdGlvbnMoXG4gIG9wdGlvbnM6IExha2ViYXNlUHJveHlPcHRpb25zID0ge30sXG4pOiBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zIHtcbiAgcmV0dXJuIExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hLnBhcnNlKG9wdGlvbnMpO1xufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLElBQUksR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUM7S0FDeEMsTUFBTSxDQUFDO0lBQ04sR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUMsS0FBSztJQUM1QyxNQUFNLEVBQUUsT0FBTztTQUNaLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkQsUUFBUSxDQUFDLDRCQUE0QixDQUFDO0lBQ3pDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxNQUFNO1NBQzVCLE1BQU0sRUFBVTtTQUNoQixHQUFHLEVBQUU7U0FDTCxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsUUFBUSxDQUFDLDZCQUE2QixDQUFDO0lBQzFDLE9BQU8sRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Q0FDN0YsQ0FBQztLQUNELE1BQU0sRUFBRTtLQUNSLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUM7S0FDM0MsTUFBTSxDQUFDO0lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxnREFBZ0QsQ0FBQztJQUM5RCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtJQUN0RSxNQUFNLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO0NBQ3JGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixNQUFNLENBQ0wsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQzVGO0lBQ0UsT0FBTyxFQUFFLGtDQUFrQztJQUMzQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7Q0FDakIsQ0FDRjtLQUNBLFFBQVEsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBUXZFLDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFVBQWdDLEVBQUU7SUFFbEMsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGFrZWJhc2UgcHJveHkgbGlzdGVuZXIsIHNlcnZpY2UsIGFuZCBVUkwgY29tbWFuZCBvcHRpb25zLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBvcHRpb25zIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IHRleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZykgPT4gei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuXG5leHBvcnQgY29uc3QgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLm9wdGlvbnMuUG9zdGdyZXNDb25maWdPcHRpb25zU2NoZW1hLnNoYXBlLFxuICAgIGxpc3Rlbjogb3B0aW9uc1xuICAgICAgLmxpc3RlbkFkZHJlc3NTY2hlbWEoeyBwb3J0OiA1NDMyLCBsb29wYmFjazogdHJ1ZSB9KVxuICAgICAgLmRlc2NyaWJlKFwiTG9vcGJhY2sgbGlzdGVuZXIgYWRkcmVzcy5cIiksXG4gICAgc3RhcnR1cFRpbWVvdXRTZWNvbmRzOiB6LmNvZXJjZVxuICAgICAgLm51bWJlcjxudW1iZXI+KClcbiAgICAgIC5pbnQoKVxuICAgICAgLm5vbm5lZ2F0aXZlKClcbiAgICAgIC5kZWZhdWx0KDMwKVxuICAgICAgLmRlc2NyaWJlKFwiU3RhcnR1cCB0aW1lb3V0IGluIHNlY29uZHMuXCIpLFxuICAgIHByb2ZpbGU6IG9wdGlvbnMuRGF0YWJyaWNrc09wdGlvbnNTY2hlbWEuc2hhcGUucHJvZmlsZS5kZXNjcmliZShcIkV4YWN0IERhdGFicmlja3MgcHJvZmlsZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJMYWtlYmFzZSBwcm94eSBsaXN0ZW5lciBhbmQgc2VydmljZSBvcHRpb25zLlwiKTtcblxuZXhwb3J0IGNvbnN0IExha2ViYXNlUHJveHlVcmxPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0YXJnZXQ6IHRleHQoXCJMYWtlYmFzZSBwcm9qZWN0LCByZXNvdXJjZSBwYXRoLCBob3N0LCBvciBVUkwuXCIpLFxuICAgIGxha2ViYXNlRW5kcG9pbnQ6IG9wdGlvbnMuTGFrZWJhc2VPcHRpb25zU2NoZW1hLnNoYXBlLmxha2ViYXNlRW5kcG9pbnQsXG4gICAgbGlzdGVuOiBvcHRpb25zLmxpc3RlbkFkZHJlc3NTY2hlbWEoeyBwb3J0OiA1NDMyIH0pLmRlc2NyaWJlKFwiTG9jYWwgcHJveHkgYWRkcmVzcy5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAucmVmaW5lKFxuICAgIChjb25maWd1cmVkKSA9PiBjb25maWd1cmVkLnRhcmdldCAhPT0gdW5kZWZpbmVkIHx8IGNvbmZpZ3VyZWQubGFrZWJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkLFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6IFwiVVJMIHJlcXVpcmVzIHRhcmdldCBvciBlbmRwb2ludC5cIixcbiAgICAgIHBhdGg6IFtcInRhcmdldFwiXSxcbiAgICB9LFxuICApXG4gIC5kZXNjcmliZShcIk9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgYSBsb2NhbCBMYWtlYmFzZSBQb3N0Z3JlU1FMIFVSTC5cIik7XG5cbmV4cG9ydCB0eXBlIExha2ViYXNlUHJveHlPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgTGFrZWJhc2VQcm94eU9wdGlvbnNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zID0gei5vdXRwdXQ8dHlwZW9mIExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGFrZWJhc2VQcm94eVVybE9wdGlvbnMgPSB6Lm91dHB1dDx0eXBlb2YgTGFrZWJhc2VQcm94eVVybE9wdGlvbnNTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgYW5kIGRlZmF1bHQgTGFrZWJhc2UgcHJveHkgbGlzdGVuZXIgb3B0aW9ucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTGFrZWJhc2VQcm94eU9wdGlvbnMoXG4gIG9wdGlvbnM6IExha2ViYXNlUHJveHlPcHRpb25zID0ge30sXG4pOiBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zIHtcbiAgcmV0dXJuIExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hLnBhcnNlKG9wdGlvbnMpO1xufVxuIl19
@@ -22,8 +22,8 @@
22
22
  * @module
23
23
  */
24
24
  import { createServer } from "node:net";
25
- import { AppKitChildProcess } from "@dbx-tools/appkit/child-process";
26
25
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
26
+ import { exec } from "@dbx-tools/core";
27
27
  import { log } from "@dbx-tools/shared-core";
28
28
  import { frp, interceptor, portr } from "@dbx-tools/tunnel";
29
29
  import { Command, CommanderError } from "commander";
@@ -48,10 +48,10 @@ function freePort() {
48
48
  });
49
49
  }
50
50
  /**
51
- * Tie the wrapper's lifetime to its children's, in both directions: a child that
52
- * exits takes the wrapper down with its code, and a signal to the wrapper is
53
- * forwarded before it leaves. Without this a crashed app leaves a portr tunnel
54
- * serving a dead port, which looks like a hang rather than a failure.
51
+ * Tie the wrapper's lifetime to its children: a child that exits takes the
52
+ * wrapper down with its code. Core exec owns parent termination forwarding for
53
+ * every spawned child. Without this a crashed app leaves a portr tunnel serving
54
+ * a dead port, which looks like a hang rather than a failure.
55
55
  */
56
56
  function supervise(children) {
57
57
  let stopping = false;
@@ -64,10 +64,7 @@ function supervise(children) {
64
64
  });
65
65
  };
66
66
  for (const child of children) {
67
- void child.process?.on("exit", (code) => stop(code ?? 1));
68
- }
69
- for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"]) {
70
- process.on(signal, () => stop(0));
67
+ void child.on("exit", (code) => stop(code ?? 1));
71
68
  }
72
69
  }
73
70
  async function run(raw, command) {
@@ -84,22 +81,18 @@ async function run(raw, command) {
84
81
  let appPort;
85
82
  if (executable) {
86
83
  appPort = resolved.appPort ?? (await freePort());
87
- const app = new AppKitChildProcess([
88
- executable,
89
- args,
90
- {
91
- env: {
92
- ...process.env,
93
- DATABRICKS_APP_PORT: String(appPort),
94
- PORT: String(appPort),
95
- HOST: "127.0.0.1",
96
- },
97
- stdin: "inherit",
98
- stdout: "inherit",
99
- stderr: "inherit",
84
+ const app = exec.spawn(executable, args, {
85
+ env: {
86
+ ...process.env,
87
+ DATABRICKS_APP_PORT: String(appPort),
88
+ PORT: String(appPort),
89
+ HOST: "127.0.0.1",
100
90
  },
101
- ], { gracefulTimeoutMs: 10_000 });
102
- await app.start();
91
+ stdin: "inherit",
92
+ stdout: "inherit",
93
+ stderr: "inherit",
94
+ terminateTimeout: 10_000,
95
+ });
103
96
  children.push(app);
104
97
  }
105
98
  else if (resolved.appPort) {
@@ -131,12 +124,12 @@ async function run(raw, command) {
131
124
  if ((resolved.transport === "portr" || resolved.transport === "both") && resolved.portr) {
132
125
  const portrEnv = await portr.installPortr();
133
126
  await portr.writePortrConfig(resolved.portr, portrEnv);
134
- children.push(await portr.startPortr(resolved.portr, portrEnv));
127
+ children.push(portr.startPortr(resolved.portr, portrEnv));
135
128
  }
136
129
  if ((resolved.transport === "frp" || resolved.transport === "both") && resolved.frp) {
137
130
  const frpEnv = await frp.installFrp();
138
131
  const configPath = await frp.writeFrpConfig(resolved.frp, frpEnv);
139
- children.push(await frp.startFrp(resolved.frp, frpEnv, configPath));
132
+ children.push(frp.startFrp(resolved.frp, frpEnv, configPath));
140
133
  }
141
134
  const activeTunnelCount = children.length - (executable ? 1 : 0);
142
135
  if (!activeTunnelCount) {
@@ -187,4 +180,4 @@ export function buildProgram(name = "dbx tunnel") {
187
180
  });
188
181
  return program;
189
182
  }
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxjQUFjLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFFMUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVwQzs7OztHQUlHO0FBQ0gsU0FBUyxRQUFRO0lBQ2YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUM3QixLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxN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LFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1NBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNsQixRQUFRLENBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQztTQUN2RCxXQUFXLENBQUMsZ0RBQWdELENBQUM7U0FDN0QsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDbEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLE1BQU07WUFBRSxNQUFNLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4RSxJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLE1BQU07WUFBRSxNQUFNLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBkYnggdHVubmVsYCAtIGZyb250IGEgY29tbWFuZCB3aXRoIGEgcHVibGljIHBvcnRyIHR1bm5lbCBhbmQgcGFzc3dvcmRsZXNzIGdhdGUuXG4gKlxuICogVGhpcyBpcyB0aGUgV1JBUFBFUiBwYXRoLCBhbmQgaXQgZXhpc3RzIGZvciBvbmUgY2FzZTogYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBgQGRieC10b29scy9hcHBraXRgJ3MgYGNyZWF0ZUFwcGAsIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlZ2lzdGVyXG4gKiBgdHVubmVsSW50ZXJjZXB0b3IoKWAgKyB0aGUgYGF1dGhHYXRlYCBwbHVnaW4gaW4tcHJvY2Vzcy4gQW4gQXBwS2l0IGFwcCBzaG91bGRcbiAqIHN0aWxsIHRha2UgdGhlIHBsdWdpbiBwYXRoIC0gb25lIHByb2Nlc3MsIG5vIHByb3h5IGhvcCwgbm8gZHVwbGljYXRlZCBoZWFkZXJcbiAqIGhhbmRsaW5nLlxuICpcbiAqIFRoZSB3cmFwcGVyIGNsYWltcyB0aGUgUFVCTElDIHBvcnQgKGBEQVRBQlJJQ0tTX0FQUF9QT1JUYCwgdGhlIHBvcnQgdGhlXG4gKiBwbGF0Zm9ybSBhbmQgcG9ydHIgcm91dGUgdG8pLCBtb3ZlcyB0aGUgd3JhcHBlZCBhcHAgdG8gYSBwcml2YXRlIG9uZSwgYW5kXG4gKiByZXZlcnNlLXByb3hpZXMgYmV0d2VlbiB0aGVtIHNvIHRoZSBnYXRlIHNpdHMgaW4gZnJvbnQgb2YgdHJhZmZpYyBpdCB3b3VsZFxuICogb3RoZXJ3aXNlIGhhdmUgbm8gd2F5IHRvIGludGVyY2VwdC4gRXZlcnl0aGluZyBlbHNlIGlzIGRlbGVnYXRlZDogdGhlIGdhdGVcbiAqIGNvbmZpZyBjb21lcyBmcm9tIGBwbHVnaW4ucmVzb2x2ZUF1dGhHYXRlQ29uZmlnYCwgdGhlIHBvcnRyIGxpZmVjeWNsZSBmcm9tXG4gKiBgcG9ydHIuKmAgLSBib3RoIHRoZSBzYW1lIGZ1bmN0aW9ucyB0aGUgaW4tcHJvY2VzcyBwYXRoIHVzZXMuXG4gKlxuICogU2hpcHMgbm8gYmluLiBgQGRieC10b29scy9jbGlgIG1vdW50cyBgYnVpbGRQcm9ncmFtKClgIGFzIGBkYnggdHVubmVsYCBsYXppbHksXG4gKiBzbyBgZGJ4IGRldmAgcGF5cyBmb3Igbm9uZSBvZiB0aGlzLCBhbmQgYC0taW5zZWN1cmVgIC8gYHN0YXR1c2AgLyBgaW5zdGFsbGBcbiAqIG5ldmVyIGxvYWQgQXBwS2l0IG9yIHRoZSBTTVRQIHN0YWNrIGVpdGhlciAodGhlIGdhdGUgYXBwIGlzIGJlaGluZCBhIGR5bmFtaWNcbiAqIGltcG9ydCkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0IHsgQXBwS2l0Q2hpbGRQcm9jZXNzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0L2NoaWxkLXByb2Nlc3NcIjtcbmltcG9ydCB7IGFkZEFyZ3MsIHBhcnNlQXJncyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NsaS1hcmdzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZnJwLCBpbnRlcmNlcHRvciwgcG9ydHIgfSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcbmltcG9ydCB7IENvbW1hbmQsIENvbW1hbmRlckVycm9yIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5pbXBvcnQgeyByZXNvbHZlVHVubmVsT3B0aW9ucywgVHVubmVsT3B0aW9uc1NjaGVtYSwgdHlwZSBUdW5uZWxPcHRpb25zIH0gZnJvbSBcIi4vb3B0aW9ucy50c1wiO1xuaW1wb3J0IHsgc3RhcnRQcm94eSB9IGZyb20gXCIuL3Byb3h5LnRzXCI7XG5cbmV4cG9ydCB7IENvbW1hbmRlckVycm9yIH07XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0dW5uZWxcIik7XG5cbi8qKlxuICogQSBmcmVlIGxvb3BiYWNrIHBvcnQsIGZyb20gdGhlIE9TIHJhdGhlciB0aGFuIGEgcmFuZG9tIGd1ZXNzOiBiaW5kaW5nIGAwYCBhbmRcbiAqIHJlYWRpbmcgYmFjayB3aGF0IHdhcyBhc3NpZ25lZCBpcyB0aGUgb25seSB3YXkgdG8ga25vdyB0aGUgcG9ydCBpcyBhY3R1YWxseVxuICogYXZhaWxhYmxlLCBzbyB0d28gdHVubmVscyBjYW4gcnVuIHNpZGUgYnkgc2lkZSB3aXRob3V0IGNvbGxpZGluZy5cbiAqL1xuZnVuY3Rpb24gZnJlZVBvcnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBwcm9iZSA9IGNyZWF0ZVNlcnZlcigpO1xuICAgIHByb2JlLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBwcm9iZS5saXN0ZW4oMCwgXCIxMjcuMC4wLjFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IHByb2JlLmFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IHBvcnQgPSB0eXBlb2YgYWRkcmVzcyA9PT0gXCJvYmplY3RcIiAmJiBhZGRyZXNzID8gYWRkcmVzcy5wb3J0IDogMDtcbiAgICAgIHByb2JlLmNsb3NlKCgpID0+IChwb3J0ID4gMCA/IHJlc29sdmUocG9ydCkgOiByZWplY3QobmV3IEVycm9yKFwibm8gZnJlZSBwb3J0XCIpKSkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaWUgdGhlIHdyYXBwZXIncyBsaWZldGltZSB0byBpdHMgY2hpbGRyZW4ncywgaW4gYm90aCBkaXJlY3Rpb25zOiBhIGNoaWxkIHRoYXRcbiAqIGV4aXRzIHRha2VzIHRoZSB3cmFwcGVyIGRvd24gd2l0aCBpdHMgY29kZSwgYW5kIGEgc2lnbmFsIHRvIHRoZSB3cmFwcGVyIGlzXG4gKiBmb3J3YXJkZWQgYmVmb3JlIGl0IGxlYXZlcy4gV2l0aG91dCB0aGlzIGEgY3Jhc2hlZCBhcHAgbGVhdmVzIGEgcG9ydHIgdHVubmVsXG4gKiBzZXJ2aW5nIGEgZGVhZCBwb3J0LCB3aGljaCBsb29rcyBsaWtlIGEgaGFuZyByYXRoZXIgdGhhbiBhIGZhaWx1cmUuXG4gKi9cbmZ1bmN0aW9uIHN1cGVydmlzZShjaGlsZHJlbjogcmVhZG9ubHkgQXBwS2l0Q2hpbGRQcm9jZXNzW10pOiB2b2lkIHtcbiAgbGV0IHN0b3BwaW5nID0gZmFsc2U7XG4gIGNvbnN0IHN0b3AgPSAoY29kZTogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKHN0b3BwaW5nKSByZXR1cm47XG4gICAgc3RvcHBpbmcgPSB0cnVlO1xuICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKGNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLnNodXRkb3duKCkpKS50aGVuKCgpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICB9KTtcbiAgfTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIHZvaWQgY2hpbGQucHJvY2Vzcz8ub24oXCJleGl0XCIsIChjb2RlKSA9PiBzdG9wKGNvZGUgPz8gMSkpO1xuICB9XG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFtcIlNJR1RFUk1cIiwgXCJTSUdJTlRcIiwgXCJTSUdIVVBcIl0gYXMgY29uc3QpIHtcbiAgICBwcm9jZXNzLm9uKHNpZ25hbCwgKCkgPT4gc3RvcCgwKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKHJhdzogVHVubmVsT3B0aW9ucywgY29tbWFuZDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgW2V4ZWN1dGFibGUsIC4uLmFyZ3NdID0gY29tbWFuZDtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlVHVubmVsT3B0aW9ucyhyYXcpO1xuICBjb25zdCBjaGlsZHJlbjogQXBwS2l0Q2hpbGRQcm9jZXNzW10gPSBbXTtcblxuICAvLyBUd28gdXBzdHJlYW0gbW9kZXM6XG4gIC8vICAgLSBXUkFQOiBhIGNvbW1hbmQgYWZ0ZXIgYC0tYC4gVGhlIHdyYXBwZXIgc3Bhd25zIGl0IG9uIGEgcHJpdmF0ZSBsb29wYmFja1xuICAvLyAgICAgcG9ydCBhbmQgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCB0YWxrcyB0byBpdC5cbiAgLy8gICAtIEFUVEFDSDogbm8gY29tbWFuZCwgYnV0IGAtLWFwcC1wb3J0YCBuYW1lcyBhbiBhbHJlYWR5LXJ1bm5pbmcgdXBzdHJlYW1cbiAgLy8gICAgIChlLmcuIGEgbG9jYWwgcmV2ZXJzZSBwcm94eSkuIFRoZSBnYXRlIGZyb250cyBpdCB3aXRob3V0IHNwYXduaW5nIGFcbiAgLy8gICAgIGNoaWxkLiBUaGlzIGlzIHdoYXQgbGV0cyB0aGUgZ2F0ZSBzaXQgb24gYW4gaW50ZXJmYWNlIGluIGZyb250IG9mIGFcbiAgLy8gICAgIHNlcGFyYXRlbHktc3VwZXJ2aXNlZCBzdGFjay5cbiAgbGV0IGFwcFBvcnQ6IG51bWJlcjtcbiAgaWYgKGV4ZWN1dGFibGUpIHtcbiAgICBhcHBQb3J0ID0gcmVzb2x2ZWQuYXBwUG9ydCA/PyAoYXdhaXQgZnJlZVBvcnQoKSk7XG4gICAgY29uc3QgYXBwID0gbmV3IEFwcEtpdENoaWxkUHJvY2VzcyhcbiAgICAgIFtcbiAgICAgICAgZXhlY3V0YWJsZSxcbiAgICAgICAgYXJncyxcbiAgICAgICAge1xuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgICAgICBEQVRBQlJJQ0tTX0FQUF9QT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgICAgICBQT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgICAgICBIT1NUOiBcIjEyNy4wLjAuMVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RkaW46IFwiaW5oZXJpdFwiLFxuICAgICAgICAgIHN0ZG91dDogXCJpbmhlcml0XCIsXG4gICAgICAgICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB7IGdyYWNlZnVsVGltZW91dE1zOiAxMF8wMDAgfSxcbiAgICApO1xuICAgIGF3YWl0IGFwcC5zdGFydCgpO1xuICAgIGNoaWxkcmVuLnB1c2goYXBwKTtcbiAgfSBlbHNlIGlmIChyZXNvbHZlZC5hcHBQb3J0KSB7XG4gICAgYXBwUG9ydCA9IHJlc29sdmVkLmFwcFBvcnQ7XG4gICAgbG9nZ2VyLmluZm8oXCJhdHRhY2hpbmcgZ2F0ZSB0byBleGlzdGluZyB1cHN0cmVhbVwiLCB7IGFwcFBvcnQgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IENvbW1hbmRlckVycm9yKFxuICAgICAgMSxcbiAgICAgIFwidHVubmVsLm5vLXVwc3RyZWFtXCIsXG4gICAgICBcIm5vIGNvbW1hbmQgZ2l2ZW4gKHBhc3MgaXQgYWZ0ZXIgYC0tYCkgYW5kIG5vIC0tYXBwLXBvcnQgdG8gYXR0YWNoIHRvXCIsXG4gICAgKTtcbiAgfVxuXG4gIC8vIER5bmFtaWMgaW1wb3J0OiB0aGUgZ2F0ZSBpcyB0aGUgb25seSB0aGluZyBoZXJlIHRoYXQgbmVlZHMgQXBwS2l0ICsgU01UUCwgc29cbiAgLy8gYW4gYC0taW5zZWN1cmVgIHJ1biBuZXZlciBsb2FkcyBlaXRoZXIuXG4gIGNvbnN0IGdhdGUgPSByZXNvbHZlZC5nYXRlLmluc2VjdXJlXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGF3YWl0IChcbiAgICAgICAgYXdhaXQgaW1wb3J0KFwiLi9hcHAudHNcIilcbiAgICAgICkuc3RhcnRHYXRlQXBwKHtcbiAgICAgICAgLi4ucmVzb2x2ZWQuZ2F0ZUNvbmZpZyxcbiAgICAgICAgcHVibGljRG9tYWluOiByZXNvbHZlZC5nYXRlLnB1YmxpY0RvbWFpbiA/PyBgbG9jYWxob3N0OiR7cmVzb2x2ZWQucHVibGljUG9ydH1gLFxuICAgICAgfSk7XG4gIGlmICghZ2F0ZSkgbG9nZ2VyLndhcm4oXCJydW5uaW5nIE9QRU4gLSBubyBnYXRlIGlzIGluIGZyb250IG9mIHRoaXMgdHVubmVsXCIpO1xuXG4gIGF3YWl0IHN0YXJ0UHJveHkoe1xuICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgYXBwUG9ydCxcbiAgICBnYXRlLFxuICAgIGZvcndhcmRIZWFkZXJzOiByZXNvbHZlZC5nYXRlLmZvcndhcmRIZWFkZXJzLFxuICAgIGdhdGVQYXRoczogcmVzb2x2ZWQuZ2F0ZS5nYXRlUGF0aHMsXG4gICAgYnJhbmROYW1lOiByZXNvbHZlZC5nYXRlLmJyYW5kTmFtZSxcbiAgICBiaW5kSG9zdHM6IHJlc29sdmVkLmJpbmRIb3N0cyxcbiAgfSk7XG5cbiAgaWYgKChyZXNvbHZlZC50cmFuc3BvcnQgPT09IFwicG9ydHJcIiB8fCByZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiYm90aFwiKSAmJiByZXNvbHZlZC5wb3J0cikge1xuICAgIGNvbnN0IHBvcnRyRW52ID0gYXdhaXQgcG9ydHIuaW5zdGFsbFBvcnRyKCk7XG4gICAgYXdhaXQgcG9ydHIud3JpdGVQb3J0ckNvbmZpZyhyZXNvbHZlZC5wb3J0ciwgcG9ydHJFbnYpO1xuICAgIGNoaWxkcmVuLnB1c2goYXdhaXQgcG9ydHIuc3RhcnRQb3J0cihyZXNvbHZlZC5wb3J0ciwgcG9ydHJFbnYpKTtcbiAgfVxuICBpZiAoKHJlc29sdmVkLnRyYW5zcG9ydCA9PT0gXCJmcnBcIiB8fCByZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiYm90aFwiKSAmJiByZXNvbHZlZC5mcnApIHtcbiAgICBjb25zdCBmcnBFbnYgPSBhd2FpdCBmcnAuaW5zdGFsbEZycCgpO1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBhd2FpdCBmcnAud3JpdGVGcnBDb25maWcocmVzb2x2ZWQuZnJwLCBmcnBFbnYpO1xuICAgIGNoaWxkcmVuLnB1c2goYXdhaXQgZnJwLnN0YXJ0RnJwKHJlc29sdmVkLmZycCwgZnJwRW52LCBjb25maWdQYXRoKSk7XG4gIH1cbiAgY29uc3QgYWN0aXZlVHVubmVsQ291bnQgPSBjaGlsZHJlbi5sZW5ndGggLSAoZXhlY3V0YWJsZSA/IDEgOiAwKTtcbiAgaWYgKCFhY3RpdmVUdW5uZWxDb3VudCkge1xuICAgIGxvZ2dlci5pbmZvKFwibm8gc2VsZWN0ZWQgcHVibGljIHR1bm5lbCBpcyBjb25maWd1cmVkXCIsIHtcbiAgICAgIHRyYW5zcG9ydDogcmVzb2x2ZWQudHJhbnNwb3J0LFxuICAgICAgcHVibGljUG9ydDogcmVzb2x2ZWQucHVibGljUG9ydCxcbiAgICB9KTtcbiAgfVxuICBzdXBlcnZpc2UoY2hpbGRyZW4pO1xufVxuXG4vKiogVGhlIGBkYnggdHVubmVsYCBwcm9ncmFtLiBObyBzaWRlIGVmZmVjdHMgdW50aWwgcGFyc2VkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lID0gXCJkYnggdHVubmVsXCIpOiBDb21tYW5kIHtcbiAgY29uc3QgcHJvZ3JhbSA9IGFkZEFyZ3MoXG4gICAgbmV3IENvbW1hbmQoKVxuICAgICAgLm5hbWUobmFtZSlcbiAgICAgIC5kZXNjcmlwdGlvbihcIkZyb250IGEgY29tbWFuZCB3aXRoIGEgcHVibGljIHR1bm5lbCBhbmQgcGFzc3dvcmRsZXNzIGF1dGhcIiksXG4gICAgVHVubmVsT3B0aW9uc1NjaGVtYSxcbiAgKTtcblxuICAvLyBgcnVuYCBpcyB0aGUgREVGQVVMVCBhY3Rpb24gYXMgd2VsbCBhcyBhIG5hbWVkIHN1YmNvbW1hbmQsIHByZXNlcnZpbmcgdGhlIG9sZFxuICAvLyB3cmFwcGVyJ3MgZXJnb25vbWljcyAoYGRieCB0dW5uZWwgLS1hbGxvdyB4IC0tIGJ1biBzcmMvc2VydmVyLnRzYCkgd2hpbGVcbiAgLy8gbGVhdmluZyBzb21ld2hlcmUgZm9yIGBzdGF0dXNgIGFuZCBgaW5zdGFsbGAgdG8gbGl2ZS5cbiAgcHJvZ3JhbVxuICAgIC5hcmd1bWVudChcIltjb21tYW5kLi4uXVwiLCBcInRoZSBjb21tYW5kIHRvIHdyYXAsIGFmdGVyIGAtLWBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChjb21tYW5kOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgYXdhaXQgcnVuKHBhcnNlQXJncyhwcm9ncmFtLCBUdW5uZWxPcHRpb25zU2NoZW1hKSwgY29tbWFuZCk7XG4gICAgfSk7XG5cbiAgY29uc3QgcnVuQ29tbWFuZCA9IGFkZEFyZ3MoXG4gICAgcHJvZ3JhbS5jb21tYW5kKFwicnVuXCIpLmRlc2NyaXB0aW9uKFwiV3JhcCBhIGNvbW1hbmQgKHRoZSBkZWZhdWx0IGFjdGlvbilcIiksXG4gICAgVHVubmVsT3B0aW9uc1NjaGVtYSxcbiAgKTtcbiAgcnVuQ29tbWFuZFxuICAgIC5hcmd1bWVudChcIjxjb21tYW5kLi4uPlwiLCBcInRoZSBjb21tYW5kIHRvIHdyYXAsIGFmdGVyIGAtLWBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChjb21tYW5kOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgYXdhaXQgcnVuKHBhcnNlQXJncyhydW5Db21tYW5kLCBUdW5uZWxPcHRpb25zU2NoZW1hKSwgY29tbWFuZCk7XG4gICAgfSk7XG5cbiAgLy8gV29ydGggaXRzIG93biBjb21tYW5kOiB0aGUgbW9zdCBjb21tb24gZmFpbHVyZSBpcyBhIHR1bm5lbCB0aGF0IHNpbGVudGx5XG4gIC8vIGRvZXMgbm90aGluZyBiZWNhdXNlIG5vIHRva2VuIG9yIGRvbWFpbiByZXNvbHZlZCwgYW5kIHRoaXMgcHJpbnRzIGV4YWN0bHlcbiAgLy8gd2hhdCB3b3VsZCBoYXBwZW4gd2l0aG91dCBzdGFydGluZyBhbnl0aGluZy5cbiAgY29uc3Qgc3RhdHVzQ29tbWFuZCA9IGFkZEFyZ3MoXG4gICAgcHJvZ3JhbS5jb21tYW5kKFwic3RhdHVzXCIpLmRlc2NyaXB0aW9uKFwiUmVzb2x2ZSB0aGUgY29uZmlndXJhdGlvbiBhbmQgcHJpbnQgaXRcIiksXG4gICAgVHVubmVsT3B0aW9uc1NjaGVtYSxcbiAgKTtcbiAgc3RhdHVzQ29tbWFuZC5hY3Rpb24oKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVR1bm5lbE9wdGlvbnMocGFyc2VBcmdzKHN0YXR1c0NvbW1hbmQsIFR1bm5lbE9wdGlvbnNTY2hlbWEpKTtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtKU09OLnN0cmluZ2lmeShyZXNvbHZlZCwgbnVsbCwgMil9XFxuYCk7XG4gIH0pO1xuXG4gIHByb2dyYW1cbiAgICAuY29tbWFuZChcImluc3RhbGxcIilcbiAgICAuYXJndW1lbnQoXCJbdHJhbnNwb3J0XVwiLCBcInBvcnRyLCBmcnAsIG9yIGJvdGhcIiwgXCJwb3J0clwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkluc3RhbGwgcHVibGljIHR1bm5lbCBjbGllbnQgYmluYXJpZXMgYW5kIGV4aXRcIilcbiAgICAuYWN0aW9uKGFzeW5jICh0cmFuc3BvcnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkID0gaW50ZXJjZXB0b3IuVHVubmVsVHJhbnNwb3J0U2NoZW1hLnBhcnNlKHRyYW5zcG9ydCk7XG4gICAgICBpZiAocGFyc2VkID09PSBcInBvcnRyXCIgfHwgcGFyc2VkID09PSBcImJvdGhcIikgYXdhaXQgcG9ydHIuaW5zdGFsbFBvcnRyKCk7XG4gICAgICBpZiAocGFyc2VkID09PSBcImZycFwiIHx8IHBhcnNlZCA9PT0gXCJib3RoXCIpIGF3YWl0IGZycC5pbnN0YWxsRnJwKCk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R1bm5lbC9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sY0FBYyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBRTFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEM7Ozs7R0FJRztBQUNILFNBQVMsUUFBUTtJQUNmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEMsTUFB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LGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUM7U0FDdkQsV0FBVyxDQUFDLGdEQUFnRCxDQUFDO1NBQzdELE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLE1BQU0sS0FBSyxNQUFNO1lBQUUsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEUsSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IHR1bm5lbGAgLSBmcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyBwb3J0ciB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBnYXRlLlxuICpcbiAqIFRoaXMgaXMgdGhlIFdSQVBQRVIgcGF0aCwgYW5kIGl0IGV4aXN0cyBmb3Igb25lIGNhc2U6IGEgcHJvamVjdCB0aGF0IGRvZXMgbm90XG4gKiB1c2UgYEBkYngtdG9vbHMvYXBwa2l0YCdzIGBjcmVhdGVBcHBgLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWdpc3RlclxuICogYHR1bm5lbEludGVyY2VwdG9yKClgICsgdGhlIGBhdXRoR2F0ZWAgcGx1Z2luIGluLXByb2Nlc3MuIEFuIEFwcEtpdCBhcHAgc2hvdWxkXG4gKiBzdGlsbCB0YWtlIHRoZSBwbHVnaW4gcGF0aCAtIG9uZSBwcm9jZXNzLCBubyBwcm94eSBob3AsIG5vIGR1cGxpY2F0ZWQgaGVhZGVyXG4gKiBoYW5kbGluZy5cbiAqXG4gKiBUaGUgd3JhcHBlciBjbGFpbXMgdGhlIFBVQkxJQyBwb3J0IChgREFUQUJSSUNLU19BUFBfUE9SVGAsIHRoZSBwb3J0IHRoZVxuICogcGxhdGZvcm0gYW5kIHBvcnRyIHJvdXRlIHRvKSwgbW92ZXMgdGhlIHdyYXBwZWQgYXBwIHRvIGEgcHJpdmF0ZSBvbmUsIGFuZFxuICogcmV2ZXJzZS1wcm94aWVzIGJldHdlZW4gdGhlbSBzbyB0aGUgZ2F0ZSBzaXRzIGluIGZyb250IG9mIHRyYWZmaWMgaXQgd291bGRcbiAqIG90aGVyd2lzZSBoYXZlIG5vIHdheSB0byBpbnRlcmNlcHQuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxlZ2F0ZWQ6IHRoZSBnYXRlXG4gKiBjb25maWcgY29tZXMgZnJvbSBgcGx1Z2luLnJlc29sdmVBdXRoR2F0ZUNvbmZpZ2AsIHRoZSBwb3J0ciBsaWZlY3ljbGUgZnJvbVxuICogYHBvcnRyLipgIC0gYm90aCB0aGUgc2FtZSBmdW5jdGlvbnMgdGhlIGluLXByb2Nlc3MgcGF0aCB1c2VzLlxuICpcbiAqIFNoaXBzIG5vIGJpbi4gYEBkYngtdG9vbHMvY2xpYCBtb3VudHMgYGJ1aWxkUHJvZ3JhbSgpYCBhcyBgZGJ4IHR1bm5lbGAgbGF6aWx5LFxuICogc28gYGRieCBkZXZgIHBheXMgZm9yIG5vbmUgb2YgdGhpcywgYW5kIGAtLWluc2VjdXJlYCAvIGBzdGF0dXNgIC8gYGluc3RhbGxgXG4gKiBuZXZlciBsb2FkIEFwcEtpdCBvciB0aGUgU01UUCBzdGFjayBlaXRoZXIgKHRoZSBnYXRlIGFwcCBpcyBiZWhpbmQgYSBkeW5hbWljXG4gKiBpbXBvcnQpLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB7IGFkZEFyZ3MsIHBhcnNlQXJncyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NsaS1hcmdzXCI7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBDaGlsZFByb2Nlc3NSZXN1bHQgfSBmcm9tIFwiQGRieC10b29scy9jb3JlL2V4ZWNcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBmcnAsIGludGVyY2VwdG9yLCBwb3J0ciB9IGZyb20gXCJAZGJ4LXRvb2xzL3R1bm5lbFwiO1xuaW1wb3J0IHsgQ29tbWFuZCwgQ29tbWFuZGVyRXJyb3IgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB7IHJlc29sdmVUdW5uZWxPcHRpb25zLCBUdW5uZWxPcHRpb25zU2NoZW1hLCB0eXBlIFR1bm5lbE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5pbXBvcnQgeyBzdGFydFByb3h5IH0gZnJvbSBcIi4vcHJveHkudHNcIjtcblxuZXhwb3J0IHsgQ29tbWFuZGVyRXJyb3IgfTtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInR1bm5lbFwiKTtcblxuLyoqXG4gKiBBIGZyZWUgbG9vcGJhY2sgcG9ydCwgZnJvbSB0aGUgT1MgcmF0aGVyIHRoYW4gYSByYW5kb20gZ3Vlc3M6IGJpbmRpbmcgYDBgIGFuZFxuICogcmVhZGluZyBiYWNrIHdoYXQgd2FzIGFzc2lnbmVkIGlzIHRoZSBvbmx5IHdheSB0byBrbm93IHRoZSBwb3J0IGlzIGFjdHVhbGx5XG4gKiBhdmFpbGFibGUsIHNvIHR3byB0dW5uZWxzIGNhbiBydW4gc2lkZSBieSBzaWRlIHdpdGhvdXQgY29sbGlkaW5nLlxuICovXG5mdW5jdGlvbiBmcmVlUG9ydCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHByb2JlID0gY3JlYXRlU2VydmVyKCk7XG4gICAgcHJvYmUub24oXCJlcnJvclwiLCByZWplY3QpO1xuICAgIHByb2JlLmxpc3RlbigwLCBcIjEyNy4wLjAuMVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gcHJvYmUuYWRkcmVzcygpO1xuICAgICAgY29uc3QgcG9ydCA9IHR5cGVvZiBhZGRyZXNzID09PSBcIm9iamVjdFwiICYmIGFkZHJlc3MgPyBhZGRyZXNzLnBvcnQgOiAwO1xuICAgICAgcHJvYmUuY2xvc2UoKCkgPT4gKHBvcnQgPiAwID8gcmVzb2x2ZShwb3J0KSA6IHJlamVjdChuZXcgRXJyb3IoXCJubyBmcmVlIHBvcnRcIikpKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRpZSB0aGUgd3JhcHBlcidzIGxpZmV0aW1lIHRvIGl0cyBjaGlsZHJlbjogYSBjaGlsZCB0aGF0IGV4aXRzIHRha2VzIHRoZVxuICogd3JhcHBlciBkb3duIHdpdGggaXRzIGNvZGUuIENvcmUgZXhlYyBvd25zIHBhcmVudCB0ZXJtaW5hdGlvbiBmb3J3YXJkaW5nIGZvclxuICogZXZlcnkgc3Bhd25lZCBjaGlsZC4gV2l0aG91dCB0aGlzIGEgY3Jhc2hlZCBhcHAgbGVhdmVzIGEgcG9ydHIgdHVubmVsIHNlcnZpbmdcbiAqIGEgZGVhZCBwb3J0LCB3aGljaCBsb29rcyBsaWtlIGEgaGFuZyByYXRoZXIgdGhhbiBhIGZhaWx1cmUuXG4gKi9cbmZ1bmN0aW9uIHN1cGVydmlzZShjaGlsZHJlbjogcmVhZG9ubHkgQ2hpbGRQcm9jZXNzUmVzdWx0W10pOiB2b2lkIHtcbiAgbGV0IHN0b3BwaW5nID0gZmFsc2U7XG4gIGNvbnN0IHN0b3AgPSAoY29kZTogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKHN0b3BwaW5nKSByZXR1cm47XG4gICAgc3RvcHBpbmcgPSB0cnVlO1xuICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKGNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLnNodXRkb3duKCkpKS50aGVuKCgpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICB9KTtcbiAgfTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIHZvaWQgY2hpbGQub24oXCJleGl0XCIsIChjb2RlKSA9PiBzdG9wKGNvZGUgPz8gMSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bihyYXc6IFR1bm5lbE9wdGlvbnMsIGNvbW1hbmQ6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFtleGVjdXRhYmxlLCAuLi5hcmdzXSA9IGNvbW1hbmQ7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVR1bm5lbE9wdGlvbnMocmF3KTtcbiAgY29uc3QgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1Jlc3VsdFtdID0gW107XG5cbiAgLy8gVHdvIHVwc3RyZWFtIG1vZGVzOlxuICAvLyAgIC0gV1JBUDogYSBjb21tYW5kIGFmdGVyIGAtLWAuIFRoZSB3cmFwcGVyIHNwYXducyBpdCBvbiBhIHByaXZhdGUgbG9vcGJhY2tcbiAgLy8gICAgIHBvcnQgYW5kIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgdGFsa3MgdG8gaXQuXG4gIC8vICAgLSBBVFRBQ0g6IG5vIGNvbW1hbmQsIGJ1dCBgLS1hcHAtcG9ydGAgbmFtZXMgYW4gYWxyZWFkeS1ydW5uaW5nIHVwc3RyZWFtXG4gIC8vICAgICAoZS5nLiBhIGxvY2FsIHJldmVyc2UgcHJveHkpLiBUaGUgZ2F0ZSBmcm9udHMgaXQgd2l0aG91dCBzcGF3bmluZyBhXG4gIC8vICAgICBjaGlsZC4gVGhpcyBpcyB3aGF0IGxldHMgdGhlIGdhdGUgc2l0IG9uIGFuIGludGVyZmFjZSBpbiBmcm9udCBvZiBhXG4gIC8vICAgICBzZXBhcmF0ZWx5LXN1cGVydmlzZWQgc3RhY2suXG4gIGxldCBhcHBQb3J0OiBudW1iZXI7XG4gIGlmIChleGVjdXRhYmxlKSB7XG4gICAgYXBwUG9ydCA9IHJlc29sdmVkLmFwcFBvcnQgPz8gKGF3YWl0IGZyZWVQb3J0KCkpO1xuICAgIGNvbnN0IGFwcCA9IGV4ZWMuc3Bhd24oZXhlY3V0YWJsZSwgYXJncywge1xuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBEQVRBQlJJQ0tTX0FQUF9QT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgIFBPUlQ6IFN0cmluZyhhcHBQb3J0KSxcbiAgICAgICAgSE9TVDogXCIxMjcuMC4wLjFcIixcbiAgICAgIH0sXG4gICAgICBzdGRpbjogXCJpbmhlcml0XCIsXG4gICAgICBzdGRvdXQ6IFwiaW5oZXJpdFwiLFxuICAgICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgICAgIHRlcm1pbmF0ZVRpbWVvdXQ6IDEwXzAwMCxcbiAgICB9KTtcbiAgICBjaGlsZHJlbi5wdXNoKGFwcCk7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWQuYXBwUG9ydCkge1xuICAgIGFwcFBvcnQgPSByZXNvbHZlZC5hcHBQb3J0O1xuICAgIGxvZ2dlci5pbmZvKFwiYXR0YWNoaW5nIGdhdGUgdG8gZXhpc3RpbmcgdXBzdHJlYW1cIiwgeyBhcHBQb3J0IH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBDb21tYW5kZXJFcnJvcihcbiAgICAgIDEsXG4gICAgICBcInR1bm5lbC5uby11cHN0cmVhbVwiLFxuICAgICAgXCJubyBjb21tYW5kIGdpdmVuIChwYXNzIGl0IGFmdGVyIGAtLWApIGFuZCBubyAtLWFwcC1wb3J0IHRvIGF0dGFjaCB0b1wiLFxuICAgICk7XG4gIH1cblxuICAvLyBEeW5hbWljIGltcG9ydDogdGhlIGdhdGUgaXMgdGhlIG9ubHkgdGhpbmcgaGVyZSB0aGF0IG5lZWRzIEFwcEtpdCArIFNNVFAsIHNvXG4gIC8vIGFuIGAtLWluc2VjdXJlYCBydW4gbmV2ZXIgbG9hZHMgZWl0aGVyLlxuICBjb25zdCBnYXRlID0gcmVzb2x2ZWQuZ2F0ZS5pbnNlY3VyZVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBhd2FpdCAoXG4gICAgICAgIGF3YWl0IGltcG9ydChcIi4vYXBwLnRzXCIpXG4gICAgICApLnN0YXJ0R2F0ZUFwcCh7XG4gICAgICAgIC4uLnJlc29sdmVkLmdhdGVDb25maWcsXG4gICAgICAgIHB1YmxpY0RvbWFpbjogcmVzb2x2ZWQuZ2F0ZS5wdWJsaWNEb21haW4gPz8gYGxvY2FsaG9zdDoke3Jlc29sdmVkLnB1YmxpY1BvcnR9YCxcbiAgICAgIH0pO1xuICBpZiAoIWdhdGUpIGxvZ2dlci53YXJuKFwicnVubmluZyBPUEVOIC0gbm8gZ2F0ZSBpcyBpbiBmcm9udCBvZiB0aGlzIHR1bm5lbFwiKTtcblxuICBhd2FpdCBzdGFydFByb3h5KHtcbiAgICBwdWJsaWNQb3J0OiByZXNvbHZlZC5wdWJsaWNQb3J0LFxuICAgIGFwcFBvcnQsXG4gICAgZ2F0ZSxcbiAgICBmb3J3YXJkSGVhZGVyczogcmVzb2x2ZWQuZ2F0ZS5mb3J3YXJkSGVhZGVycyxcbiAgICBnYXRlUGF0aHM6IHJlc29sdmVkLmdhdGUuZ2F0ZVBhdGhzLFxuICAgIGJyYW5kTmFtZTogcmVzb2x2ZWQuZ2F0ZS5icmFuZE5hbWUsXG4gICAgYmluZEhvc3RzOiByZXNvbHZlZC5iaW5kSG9zdHMsXG4gIH0pO1xuXG4gIGlmICgocmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcInBvcnRyXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQucG9ydHIpIHtcbiAgICBjb25zdCBwb3J0ckVudiA9IGF3YWl0IHBvcnRyLmluc3RhbGxQb3J0cigpO1xuICAgIGF3YWl0IHBvcnRyLndyaXRlUG9ydHJDb25maWcocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KTtcbiAgICBjaGlsZHJlbi5wdXNoKHBvcnRyLnN0YXJ0UG9ydHIocmVzb2x2ZWQucG9ydHIsIHBvcnRyRW52KSk7XG4gIH1cbiAgaWYgKChyZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiZnJwXCIgfHwgcmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImJvdGhcIikgJiYgcmVzb2x2ZWQuZnJwKSB7XG4gICAgY29uc3QgZnJwRW52ID0gYXdhaXQgZnJwLmluc3RhbGxGcnAoKTtcbiAgICBjb25zdCBjb25maWdQYXRoID0gYXdhaXQgZnJwLndyaXRlRnJwQ29uZmlnKHJlc29sdmVkLmZycCwgZnJwRW52KTtcbiAgICBjaGlsZHJlbi5wdXNoKGZycC5zdGFydEZycChyZXNvbHZlZC5mcnAsIGZycEVudiwgY29uZmlnUGF0aCkpO1xuICB9XG4gIGNvbnN0IGFjdGl2ZVR1bm5lbENvdW50ID0gY2hpbGRyZW4ubGVuZ3RoIC0gKGV4ZWN1dGFibGUgPyAxIDogMCk7XG4gIGlmICghYWN0aXZlVHVubmVsQ291bnQpIHtcbiAgICBsb2dnZXIuaW5mbyhcIm5vIHNlbGVjdGVkIHB1YmxpYyB0dW5uZWwgaXMgY29uZmlndXJlZFwiLCB7XG4gICAgICB0cmFuc3BvcnQ6IHJlc29sdmVkLnRyYW5zcG9ydCxcbiAgICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgfSk7XG4gIH1cbiAgc3VwZXJ2aXNlKGNoaWxkcmVuKTtcbn1cblxuLyoqIFRoZSBgZGJ4IHR1bm5lbGAgcHJvZ3JhbS4gTm8gc2lkZSBlZmZlY3RzIHVudGlsIHBhcnNlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb2dyYW0obmFtZSA9IFwiZGJ4IHR1bm5lbFwiKTogQ29tbWFuZCB7XG4gIGNvbnN0IHByb2dyYW0gPSBhZGRBcmdzKFxuICAgIG5ldyBDb21tYW5kKClcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oXCJGcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBhdXRoXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG5cbiAgLy8gYHJ1bmAgaXMgdGhlIERFRkFVTFQgYWN0aW9uIGFzIHdlbGwgYXMgYSBuYW1lZCBzdWJjb21tYW5kLCBwcmVzZXJ2aW5nIHRoZSBvbGRcbiAgLy8gd3JhcHBlcidzIGVyZ29ub21pY3MgKGBkYnggdHVubmVsIC0tYWxsb3cgeCAtLSBidW4gc3JjL3NlcnZlci50c2ApIHdoaWxlXG4gIC8vIGxlYXZpbmcgc29tZXdoZXJlIGZvciBgc3RhdHVzYCBhbmQgYGluc3RhbGxgIHRvIGxpdmUuXG4gIHByb2dyYW1cbiAgICAuYXJndW1lbnQoXCJbY29tbWFuZC4uLl1cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocHJvZ3JhbSwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHJ1bkNvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInJ1blwiKS5kZXNjcmlwdGlvbihcIldyYXAgYSBjb21tYW5kICh0aGUgZGVmYXVsdCBhY3Rpb24pXCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHJ1bkNvbW1hbmRcbiAgICAuYXJndW1lbnQoXCI8Y29tbWFuZC4uLj5cIiwgXCJ0aGUgY29tbWFuZCB0byB3cmFwLCBhZnRlciBgLS1gXCIpXG4gICAgLmFjdGlvbihhc3luYyAoY29tbWFuZDogc3RyaW5nW10pID0+IHtcbiAgICAgIGF3YWl0IHJ1bihwYXJzZUFyZ3MocnVuQ29tbWFuZCwgVHVubmVsT3B0aW9uc1NjaGVtYSksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIC8vIFdvcnRoIGl0cyBvd24gY29tbWFuZDogdGhlIG1vc3QgY29tbW9uIGZhaWx1cmUgaXMgYSB0dW5uZWwgdGhhdCBzaWxlbnRseVxuICAvLyBkb2VzIG5vdGhpbmcgYmVjYXVzZSBubyB0b2tlbiBvciBkb21haW4gcmVzb2x2ZWQsIGFuZCB0aGlzIHByaW50cyBleGFjdGx5XG4gIC8vIHdoYXQgd291bGQgaGFwcGVuIHdpdGhvdXQgc3RhcnRpbmcgYW55dGhpbmcuXG4gIGNvbnN0IHN0YXR1c0NvbW1hbmQgPSBhZGRBcmdzKFxuICAgIHByb2dyYW0uY29tbWFuZChcInN0YXR1c1wiKS5kZXNjcmlwdGlvbihcIlJlc29sdmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHByaW50IGl0XCIpLFxuICAgIFR1bm5lbE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHN0YXR1c0NvbW1hbmQuYWN0aW9uKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUdW5uZWxPcHRpb25zKHBhcnNlQXJncyhzdGF0dXNDb21tYW5kLCBUdW5uZWxPcHRpb25zU2NoZW1hKSk7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIG51bGwsIDIpfVxcbmApO1xuICB9KTtcblxuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoXCJpbnN0YWxsXCIpXG4gICAgLmFyZ3VtZW50KFwiW3RyYW5zcG9ydF1cIiwgXCJwb3J0ciwgZnJwLCBvciBib3RoXCIsIFwicG9ydHJcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbnN0YWxsIHB1YmxpYyB0dW5uZWwgY2xpZW50IGJpbmFyaWVzIGFuZCBleGl0XCIpXG4gICAgLmFjdGlvbihhc3luYyAodHJhbnNwb3J0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGludGVyY2VwdG9yLlR1bm5lbFRyYW5zcG9ydFNjaGVtYS5wYXJzZSh0cmFuc3BvcnQpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJwb3J0clwiIHx8IHBhcnNlZCA9PT0gXCJib3RoXCIpIGF3YWl0IHBvcnRyLmluc3RhbGxQb3J0cigpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gXCJmcnBcIiB8fCBwYXJzZWQgPT09IFwiYm90aFwiKSBhd2FpdCBmcnAuaW5zdGFsbEZycCgpO1xuICAgIH0pO1xuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl19
package/package.json CHANGED
@@ -34,24 +34,24 @@
34
34
  "dependencies": {
35
35
  "@clack/prompts": "^1.7.0",
36
36
  "@databricks/appkit": "0.81.0",
37
- "@dbx-tools/appkit": "^0.9.121",
38
- "@dbx-tools/appkit-graphiti": "^0.9.121",
39
- "@dbx-tools/appkit-model-gateway": "^0.9.121",
40
- "@dbx-tools/auth": "^0.9.121",
41
- "@dbx-tools/auth-gate": "^0.9.121",
42
- "@dbx-tools/cli-args": "^0.9.121",
43
- "@dbx-tools/cli-service": "^0.9.121",
44
- "@dbx-tools/core": "^0.9.121",
45
- "@dbx-tools/databricks": "^0.9.121",
46
- "@dbx-tools/email": "^0.9.121",
47
- "@dbx-tools/lakebase": "^0.9.121",
48
- "@dbx-tools/postgres": "^0.9.121",
49
- "@dbx-tools/shared-auth": "^0.9.121",
50
- "@dbx-tools/shared-core": "^0.9.121",
51
- "@dbx-tools/shared-email": "^0.9.121",
52
- "@dbx-tools/shared-genie-code": "^0.9.121",
53
- "@dbx-tools/shared-model-gateway": "^0.9.121",
54
- "@dbx-tools/tunnel": "^0.9.121",
37
+ "@dbx-tools/appkit": "^0.9.122",
38
+ "@dbx-tools/appkit-graphiti": "^0.9.122",
39
+ "@dbx-tools/appkit-model-gateway": "^0.9.122",
40
+ "@dbx-tools/auth": "^0.9.122",
41
+ "@dbx-tools/auth-gate": "^0.9.122",
42
+ "@dbx-tools/cli-args": "^0.9.122",
43
+ "@dbx-tools/cli-service": "^0.9.122",
44
+ "@dbx-tools/core": "^0.9.122",
45
+ "@dbx-tools/databricks": "^0.9.122",
46
+ "@dbx-tools/email": "^0.9.122",
47
+ "@dbx-tools/lakebase": "^0.9.122",
48
+ "@dbx-tools/postgres": "^0.9.122",
49
+ "@dbx-tools/shared-auth": "^0.9.122",
50
+ "@dbx-tools/shared-core": "^0.9.122",
51
+ "@dbx-tools/shared-email": "^0.9.122",
52
+ "@dbx-tools/shared-genie-code": "^0.9.122",
53
+ "@dbx-tools/shared-model-gateway": "^0.9.122",
54
+ "@dbx-tools/tunnel": "^0.9.122",
55
55
  "commander": "^15.0.0",
56
56
  "concurrently": "^10.0.3",
57
57
  "get-port": "^7.1.0",
@@ -158,7 +158,7 @@
158
158
  "./package.json": "./package.json"
159
159
  }
160
160
  },
161
- "version": "0.9.121",
161
+ "version": "0.9.122",
162
162
  "types": "./lib/index.d.ts",
163
163
  "dbxToolsConfig": {
164
164
  "tags": [
@@ -4,7 +4,7 @@
4
4
  * @module
5
5
  */
6
6
 
7
- import { AppKitChildProcess } from "@dbx-tools/appkit/child-process";
7
+ import { exec } from "@dbx-tools/core";
8
8
  import { asyncUtils, log } from "@dbx-tools/shared-core";
9
9
  import { GenieCodeRunnerOptionsSchema } from "@dbx-tools/shared-genie-code/options";
10
10
 
@@ -65,27 +65,19 @@ export async function runGenieCodeChild(
65
65
  executable: options.executable,
66
66
  home: options.home,
67
67
  });
68
- const child = new AppKitChildProcess(
69
- [
70
- options.executable,
71
- [...options.arguments],
72
- {
73
- cwd: process.cwd(),
74
- env: {
75
- ...environment,
76
- GENIE_HOME: options.home,
77
- },
78
- stdin: "inherit",
79
- stdout: "inherit",
80
- stderr: "inherit",
81
- },
82
- ],
83
- {
84
- gracefulTimeoutMs: 5_000,
85
- forceTimeoutMs: 1_000,
68
+ const child = exec.spawn(options.executable, [...options.arguments], {
69
+ cwd: process.cwd(),
70
+ env: {
71
+ ...environment,
72
+ GENIE_HOME: options.home,
86
73
  },
87
- );
88
- const result = await child.run();
74
+ stdin: "inherit",
75
+ stdout: "inherit",
76
+ stderr: "inherit",
77
+ terminateTimeout: 5_000,
78
+ killTimeout: 1_000,
79
+ });
80
+ const result = await child;
89
81
  if (result.exitCode !== 0) process.exitCode = result.exitCode;
90
82
  }
91
83
 
@@ -11,7 +11,7 @@ const text = (description: string) => z.string().trim().min(1).optional().descri
11
11
 
12
12
  export const LakebaseProxyOptionsSchema = z
13
13
  .object({
14
- ...options.PostgresOptionsSchema.shape,
14
+ ...options.PostgresConfigOptionsSchema.shape,
15
15
  listen: options
16
16
  .listenAddressSchema({ port: 5432, loopback: true })
17
17
  .describe("Loopback listener address."),
package/src/tunnel/cli.ts CHANGED
@@ -23,8 +23,9 @@
23
23
  */
24
24
 
25
25
  import { createServer } from "node:net";
26
- import { AppKitChildProcess } from "@dbx-tools/appkit/child-process";
27
26
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
27
+ import { exec } from "@dbx-tools/core";
28
+ import type { ChildProcessResult } from "@dbx-tools/core/exec";
28
29
  import { log } from "@dbx-tools/shared-core";
29
30
  import { frp, interceptor, portr } from "@dbx-tools/tunnel";
30
31
  import { Command, CommanderError } from "commander";
@@ -54,12 +55,12 @@ function freePort(): Promise<number> {
54
55
  }
55
56
 
56
57
  /**
57
- * Tie the wrapper's lifetime to its children's, in both directions: a child that
58
- * exits takes the wrapper down with its code, and a signal to the wrapper is
59
- * forwarded before it leaves. Without this a crashed app leaves a portr tunnel
60
- * serving a dead port, which looks like a hang rather than a failure.
58
+ * Tie the wrapper's lifetime to its children: a child that exits takes the
59
+ * wrapper down with its code. Core exec owns parent termination forwarding for
60
+ * every spawned child. Without this a crashed app leaves a portr tunnel serving
61
+ * a dead port, which looks like a hang rather than a failure.
61
62
  */
62
- function supervise(children: readonly AppKitChildProcess[]): void {
63
+ function supervise(children: readonly ChildProcessResult[]): void {
63
64
  let stopping = false;
64
65
  const stop = (code: number): void => {
65
66
  if (stopping) return;
@@ -69,17 +70,14 @@ function supervise(children: readonly AppKitChildProcess[]): void {
69
70
  });
70
71
  };
71
72
  for (const child of children) {
72
- void child.process?.on("exit", (code) => stop(code ?? 1));
73
- }
74
- for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"] as const) {
75
- process.on(signal, () => stop(0));
73
+ void child.on("exit", (code) => stop(code ?? 1));
76
74
  }
77
75
  }
78
76
 
79
77
  async function run(raw: TunnelOptions, command: readonly string[]): Promise<void> {
80
78
  const [executable, ...args] = command;
81
79
  const resolved = resolveTunnelOptions(raw);
82
- const children: AppKitChildProcess[] = [];
80
+ const children: ChildProcessResult[] = [];
83
81
 
84
82
  // Two upstream modes:
85
83
  // - WRAP: a command after `--`. The wrapper spawns it on a private loopback
@@ -91,25 +89,18 @@ async function run(raw: TunnelOptions, command: readonly string[]): Promise<void
91
89
  let appPort: number;
92
90
  if (executable) {
93
91
  appPort = resolved.appPort ?? (await freePort());
94
- const app = new AppKitChildProcess(
95
- [
96
- executable,
97
- args,
98
- {
99
- env: {
100
- ...process.env,
101
- DATABRICKS_APP_PORT: String(appPort),
102
- PORT: String(appPort),
103
- HOST: "127.0.0.1",
104
- },
105
- stdin: "inherit",
106
- stdout: "inherit",
107
- stderr: "inherit",
108
- },
109
- ],
110
- { gracefulTimeoutMs: 10_000 },
111
- );
112
- await app.start();
92
+ const app = exec.spawn(executable, args, {
93
+ env: {
94
+ ...process.env,
95
+ DATABRICKS_APP_PORT: String(appPort),
96
+ PORT: String(appPort),
97
+ HOST: "127.0.0.1",
98
+ },
99
+ stdin: "inherit",
100
+ stdout: "inherit",
101
+ stderr: "inherit",
102
+ terminateTimeout: 10_000,
103
+ });
113
104
  children.push(app);
114
105
  } else if (resolved.appPort) {
115
106
  appPort = resolved.appPort;
@@ -147,12 +138,12 @@ async function run(raw: TunnelOptions, command: readonly string[]): Promise<void
147
138
  if ((resolved.transport === "portr" || resolved.transport === "both") && resolved.portr) {
148
139
  const portrEnv = await portr.installPortr();
149
140
  await portr.writePortrConfig(resolved.portr, portrEnv);
150
- children.push(await portr.startPortr(resolved.portr, portrEnv));
141
+ children.push(portr.startPortr(resolved.portr, portrEnv));
151
142
  }
152
143
  if ((resolved.transport === "frp" || resolved.transport === "both") && resolved.frp) {
153
144
  const frpEnv = await frp.installFrp();
154
145
  const configPath = await frp.writeFrpConfig(resolved.frp, frpEnv);
155
- children.push(await frp.startFrp(resolved.frp, frpEnv, configPath));
146
+ children.push(frp.startFrp(resolved.frp, frpEnv, configPath));
156
147
  }
157
148
  const activeTunnelCount = children.length - (executable ? 1 : 0);
158
149
  if (!activeTunnelCount) {