@dbx-tools/cli-appkit-env 0.3.44 → 0.4.0
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/lib/bin/dbx-tools-appkit-env.d.ts +8 -0
- package/lib/bin/dbx-tools-appkit-env.js +36 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +6 -0
- package/lib/src/env-export.d.ts +24 -0
- package/lib/src/env-export.js +91 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +15 -8
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env -S npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* `dbx-tools-appkit-env`: run AppKit auto-config and print the env vars it added or
|
|
4
|
+
* changed. Snapshots `process.env`, runs auto-config, diffs, and writes
|
|
5
|
+
* eval-able `export` / `set` lines (or JSON) to stdout - e.g.
|
|
6
|
+
* `eval "$(dbx-tools-appkit-env)"` to load a resolved Lakebase connection into your shell.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env -S npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* `dbx-tools-appkit-env`: run AppKit auto-config and print the env vars it added or
|
|
4
|
+
* changed. Snapshots `process.env`, runs auto-config, diffs, and writes
|
|
5
|
+
* eval-able `export` / `set` lines (or JSON) to stdout - e.g.
|
|
6
|
+
* `eval "$(dbx-tools-appkit-env)"` to load a resolved Lakebase connection into your shell.
|
|
7
|
+
*/
|
|
8
|
+
import { createApp } from "@dbx-tools/appkit";
|
|
9
|
+
import { log } from "@dbx-tools/shared-core";
|
|
10
|
+
import { Command, CommanderError } from "commander";
|
|
11
|
+
import { defaultEnvExportFormat, diffEnv, formatEnvExport, parseEnvExportFormat, snapshotEnv, } from "../src/env-export.js";
|
|
12
|
+
const logger = log.logger("appkit-env");
|
|
13
|
+
const program = new Command()
|
|
14
|
+
.name("dbx-tools-appkit-env")
|
|
15
|
+
.description("Run AppKit auto-config and print new/changed env vars.")
|
|
16
|
+
.option("-f, --format <format>", "Output: export (POSIX shell), windows (cmd set), or json. Defaults by platform.")
|
|
17
|
+
.option("-q, --quiet", "Suppress auto-config log output (LOG_LEVEL=error)")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
if (opts.quiet) {
|
|
20
|
+
process.env.LOG_LEVEL = "error";
|
|
21
|
+
}
|
|
22
|
+
const format = opts.format ? parseEnvExportFormat(opts.format) : defaultEnvExportFormat();
|
|
23
|
+
logger.debug("Snapshotting env vars");
|
|
24
|
+
const before = snapshotEnv();
|
|
25
|
+
await createApp.autoConfigure({ autoConfigure: "env" });
|
|
26
|
+
const changes = diffEnv(before, snapshotEnv());
|
|
27
|
+
process.stdout.write(formatEnvExport(changes, format));
|
|
28
|
+
});
|
|
29
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
30
|
+
if (err instanceof CommanderError) {
|
|
31
|
+
process.exit(err.exitCode);
|
|
32
|
+
}
|
|
33
|
+
process.stderr.write(`${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJ4LXRvb2xzLWFwcGtpdC1lbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9iaW4vZGJ4LXRvb2xzLWFwcGtpdC1lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLE9BQU8sRUFDUCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLFdBQVcsR0FDWixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUU7S0FDMUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0tBQzVCLFdBQVcsQ0FBQyx3REFBd0QsQ0FBQztLQUNyRSxNQUFNLENBQ0wsdUJBQXVCLEVBQ3ZCLGlGQUFpRixDQUNsRjtLQUNBLE1BQU0sQ0FBQyxhQUFhLEVBQUUsbURBQW1ELENBQUM7S0FDMUUsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUEwQyxFQUFFLEVBQUU7SUFDM0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUMxRixNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDN0IsTUFBTSxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFO0lBQ3RELElBQUksR0FBRyxZQUFZLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IC1TIG5weCB0c3hcbi8qKlxuICogYGRieC10b29scy1hcHBraXQtZW52YDogcnVuIEFwcEtpdCBhdXRvLWNvbmZpZyBhbmQgcHJpbnQgdGhlIGVudiB2YXJzIGl0IGFkZGVkIG9yXG4gKiBjaGFuZ2VkLiBTbmFwc2hvdHMgYHByb2Nlc3MuZW52YCwgcnVucyBhdXRvLWNvbmZpZywgZGlmZnMsIGFuZCB3cml0ZXNcbiAqIGV2YWwtYWJsZSBgZXhwb3J0YCAvIGBzZXRgIGxpbmVzIChvciBKU09OKSB0byBzdGRvdXQgLSBlLmcuXG4gKiBgZXZhbCBcIiQoZGJ4LXRvb2xzLWFwcGtpdC1lbnYpXCJgIHRvIGxvYWQgYSByZXNvbHZlZCBMYWtlYmFzZSBjb25uZWN0aW9uIGludG8geW91ciBzaGVsbC5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVBcHAgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBDb21tYW5kZXJFcnJvciB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7XG4gIGRlZmF1bHRFbnZFeHBvcnRGb3JtYXQsXG4gIGRpZmZFbnYsXG4gIGZvcm1hdEVudkV4cG9ydCxcbiAgcGFyc2VFbnZFeHBvcnRGb3JtYXQsXG4gIHNuYXBzaG90RW52LFxufSBmcm9tIFwiLi4vc3JjL2Vudi1leHBvcnRcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImFwcGtpdC1lbnZcIik7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiZGJ4LXRvb2xzLWFwcGtpdC1lbnZcIilcbiAgLmRlc2NyaXB0aW9uKFwiUnVuIEFwcEtpdCBhdXRvLWNvbmZpZyBhbmQgcHJpbnQgbmV3L2NoYW5nZWQgZW52IHZhcnMuXCIpXG4gIC5vcHRpb24oXG4gICAgXCItZiwgLS1mb3JtYXQgPGZvcm1hdD5cIixcbiAgICBcIk91dHB1dDogZXhwb3J0IChQT1NJWCBzaGVsbCksIHdpbmRvd3MgKGNtZCBzZXQpLCBvciBqc29uLiBEZWZhdWx0cyBieSBwbGF0Zm9ybS5cIixcbiAgKVxuICAub3B0aW9uKFwiLXEsIC0tcXVpZXRcIiwgXCJTdXBwcmVzcyBhdXRvLWNvbmZpZyBsb2cgb3V0cHV0IChMT0dfTEVWRUw9ZXJyb3IpXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgZm9ybWF0Pzogc3RyaW5nOyBxdWlldD86IGJvb2xlYW4gfSkgPT4ge1xuICAgIGlmIChvcHRzLnF1aWV0KSB7XG4gICAgICBwcm9jZXNzLmVudi5MT0dfTEVWRUwgPSBcImVycm9yXCI7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0ID0gb3B0cy5mb3JtYXQgPyBwYXJzZUVudkV4cG9ydEZvcm1hdChvcHRzLmZvcm1hdCkgOiBkZWZhdWx0RW52RXhwb3J0Rm9ybWF0KCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiU25hcHNob3R0aW5nIGVudiB2YXJzXCIpO1xuICAgIGNvbnN0IGJlZm9yZSA9IHNuYXBzaG90RW52KCk7XG4gICAgYXdhaXQgY3JlYXRlQXBwLmF1dG9Db25maWd1cmUoeyBhdXRvQ29uZmlndXJlOiBcImVudlwiIH0pO1xuICAgIGNvbnN0IGNoYW5nZXMgPSBkaWZmRW52KGJlZm9yZSwgc25hcHNob3RFbnYoKSk7XG5cbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShmb3JtYXRFbnZFeHBvcnQoY2hhbmdlcywgZm9ybWF0KSk7XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBDb21tYW5kZXJFcnJvcikge1xuICAgIHByb2Nlc3MuZXhpdChlcnIuZXhpdENvZGUpO1xuICB9XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gKGVyci5zdGFjayA/PyBlcnIubWVzc2FnZSkgOiBTdHJpbmcoZXJyKX1cXG5gKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufSk7XG4iXX0=
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
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 envExport from "./src/env-export.js";
|
|
5
|
+
export { snapshotEnv, diffEnv, defaultEnvExportFormat, formatEnvExport, parseEnvExportFormat } from "./src/env-export.js";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgZW52RXhwb3J0IGZyb20gXCIuL3NyYy9lbnYtZXhwb3J0XCI7XG5leHBvcnQgeyBzbmFwc2hvdEVudiwgZGlmZkVudiwgZGVmYXVsdEVudkV4cG9ydEZvcm1hdCwgZm9ybWF0RW52RXhwb3J0LCBwYXJzZUVudkV4cG9ydEZvcm1hdCB9IGZyb20gXCIuL3NyYy9lbnYtZXhwb3J0XCI7XG5leHBvcnQgdHlwZSB7IEVudkV4cG9ydEZvcm1hdCB9IGZyb20gXCIuL3NyYy9lbnYtZXhwb3J0XCI7XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot `process.env`, diff after auto-config, and format deltas as
|
|
3
|
+
* eval-able shell `export` / Windows `set` lines or JSON.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export type EnvExportFormat = "export" | "windows" | "json";
|
|
8
|
+
/** Shallow copy of the current process environment. */
|
|
9
|
+
export declare function snapshotEnv(env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Keys whose values were added, changed, or cleared between snapshots. A key
|
|
12
|
+
* that went from a non-blank value to blank/removed is emitted with an empty
|
|
13
|
+
* value so it can be unset. Keys that were already blank/absent and stayed that
|
|
14
|
+
* way are omitted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function diffEnv(before: Record<string, string>, after: Record<string, string>): Record<string, string>;
|
|
17
|
+
export declare function defaultEnvExportFormat(platform?: NodeJS.Platform): EnvExportFormat;
|
|
18
|
+
/**
|
|
19
|
+
* Format env entries for the requested output style. An empty map prints
|
|
20
|
+
* nothing (no trailing newline).
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatEnvExport(env: Record<string, string>, format: EnvExportFormat): string;
|
|
23
|
+
/** Normalize CLI format aliases to a supported export format. */
|
|
24
|
+
export declare function parseEnvExportFormat(value: string): EnvExportFormat;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot `process.env`, diff after auto-config, and format deltas as
|
|
3
|
+
* eval-able shell `export` / Windows `set` lines or JSON.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/** Shallow copy of the current process environment. */
|
|
8
|
+
export function snapshotEnv(env = process.env) {
|
|
9
|
+
const out = {};
|
|
10
|
+
for (const [key, value] of Object.entries(env)) {
|
|
11
|
+
if (value !== undefined) {
|
|
12
|
+
out[key] = value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return out;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Keys whose values were added, changed, or cleared between snapshots. A key
|
|
19
|
+
* that went from a non-blank value to blank/removed is emitted with an empty
|
|
20
|
+
* value so it can be unset. Keys that were already blank/absent and stayed that
|
|
21
|
+
* way are omitted.
|
|
22
|
+
*/
|
|
23
|
+
export function diffEnv(before, after) {
|
|
24
|
+
const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
|
|
25
|
+
const out = {};
|
|
26
|
+
for (const key of [...keys].sort()) {
|
|
27
|
+
// Treat a removed key as blank so a non-blank -> blank/removed transition is a delta.
|
|
28
|
+
const prev = before[key] ?? "";
|
|
29
|
+
const next = after[key] ?? "";
|
|
30
|
+
if (next !== prev) {
|
|
31
|
+
out[key] = next;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
export function defaultEnvExportFormat(platform = process.platform) {
|
|
37
|
+
return platform === "win32" ? "windows" : "export";
|
|
38
|
+
}
|
|
39
|
+
function escapeExportValue(value) {
|
|
40
|
+
return value
|
|
41
|
+
.replace(/\\/g, "\\\\")
|
|
42
|
+
.replace(/"/g, '\\"')
|
|
43
|
+
.replace(/\$/g, "\\$")
|
|
44
|
+
.replace(/`/g, "\\`");
|
|
45
|
+
}
|
|
46
|
+
function escapeWindowsSetValue(value) {
|
|
47
|
+
if (/[\s"&|<>^]/.test(value)) {
|
|
48
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Format env entries for the requested output style. An empty map prints
|
|
54
|
+
* nothing (no trailing newline).
|
|
55
|
+
*/
|
|
56
|
+
export function formatEnvExport(env, format) {
|
|
57
|
+
const entries = Object.entries(env).sort(([a], [b]) => a.localeCompare(b));
|
|
58
|
+
if (entries.length === 0) {
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
switch (format) {
|
|
62
|
+
case "json":
|
|
63
|
+
return `${JSON.stringify(Object.fromEntries(entries), null, 2)}\n`;
|
|
64
|
+
case "windows":
|
|
65
|
+
return (entries.map(([key, value]) => `set ${key}=${escapeWindowsSetValue(value)}`).join("\n") +
|
|
66
|
+
"\n");
|
|
67
|
+
case "export":
|
|
68
|
+
return (entries.map(([key, value]) => `export ${key}="${escapeExportValue(value)}"`).join("\n") +
|
|
69
|
+
"\n");
|
|
70
|
+
default:
|
|
71
|
+
throw new Error(`Unknown env export format: ${format}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Normalize CLI format aliases to a supported export format. */
|
|
75
|
+
export function parseEnvExportFormat(value) {
|
|
76
|
+
const normalized = value.trim().toLowerCase();
|
|
77
|
+
if (normalized === "export" ||
|
|
78
|
+
normalized === "shell" ||
|
|
79
|
+
normalized === "nix" ||
|
|
80
|
+
normalized === "bash") {
|
|
81
|
+
return "export";
|
|
82
|
+
}
|
|
83
|
+
if (normalized === "windows" || normalized === "win" || normalized === "cmd") {
|
|
84
|
+
return "windows";
|
|
85
|
+
}
|
|
86
|
+
if (normalized === "json") {
|
|
87
|
+
return "json";
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Unknown format '${value}'. Use export, windows, or json.`);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LWV4cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnYtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBSUgsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBeUIsT0FBTyxDQUFDLEdBQUc7SUFDOUQsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQ3JCLE1BQThCLEVBQzlCLEtBQTZCO0lBRTdCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25DLHNGQUFzRjtRQUN0RixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFD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N0UsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixLQUFLLGtDQUFrQyxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU25hcHNob3QgYHByb2Nlc3MuZW52YCwgZGlmZiBhZnRlciBhdXRvLWNvbmZpZywgYW5kIGZvcm1hdCBkZWx0YXMgYXNcbiAqIGV2YWwtYWJsZSBzaGVsbCBgZXhwb3J0YCAvIFdpbmRvd3MgYHNldGAgbGluZXMgb3IgSlNPTi5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuZXhwb3J0IHR5cGUgRW52RXhwb3J0Rm9ybWF0ID0gXCJleHBvcnRcIiB8IFwid2luZG93c1wiIHwgXCJqc29uXCI7XG5cbi8qKiBTaGFsbG93IGNvcHkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbmFwc2hvdEVudihlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0gcHJvY2Vzcy5lbnYpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVudikpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBLZXlzIHdob3NlIHZhbHVlcyB3ZXJlIGFkZGVkLCBjaGFuZ2VkLCBvciBjbGVhcmVkIGJldHdlZW4gc25hcHNob3RzLiBBIGtleVxuICogdGhhdCB3ZW50IGZyb20gYSBub24tYmxhbmsgdmFsdWUgdG8gYmxhbmsvcmVtb3ZlZCBpcyBlbWl0dGVkIHdpdGggYW4gZW1wdHlcbiAqIHZhbHVlIHNvIGl0IGNhbiBiZSB1bnNldC4gS2V5cyB0aGF0IHdlcmUgYWxyZWFkeSBibGFuay9hYnNlbnQgYW5kIHN0YXllZCB0aGF0XG4gKiB3YXkgYXJlIG9taXR0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmRW52KFxuICBiZWZvcmU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGFmdGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhiZWZvcmUpLCAuLi5PYmplY3Qua2V5cyhhZnRlcildKTtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIFsuLi5rZXlzXS5zb3J0KCkpIHtcbiAgICAvLyBUcmVhdCBhIHJlbW92ZWQga2V5IGFzIGJsYW5rIHNvIGEgbm9uLWJsYW5rIC0+IGJsYW5rL3JlbW92ZWQgdHJhbnNpdGlvbiBpcyBhIGRlbHRhLlxuICAgIGNvbnN0IHByZXYgPSBiZWZvcmVba2V5XSA/PyBcIlwiO1xuICAgIGNvbnN0IG5leHQgPSBhZnRlcltrZXldID8/IFwiXCI7XG4gICAgaWYgKG5leHQgIT09IHByZXYpIHtcbiAgICAgIG91dFtrZXldID0gbmV4dDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRFbnZFeHBvcnRGb3JtYXQoXG4gIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtLFxuKTogRW52RXhwb3J0Rm9ybWF0IHtcbiAgcmV0dXJuIHBsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcIndpbmRvd3NcIiA6IFwiZXhwb3J0XCI7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUV4cG9ydFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWVcbiAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKVxuICAgIC5yZXBsYWNlKC9cXCQvZywgXCJcXFxcJFwiKVxuICAgIC5yZXBsYWNlKC9gL2csIFwiXFxcXGBcIik7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZVdpbmRvd3NTZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKC9bXFxzXCImfDw+Xl0vLnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGBcIiR7dmFsdWUucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlbnYgZW50cmllcyBmb3IgdGhlIHJlcXVlc3RlZCBvdXRwdXQgc3R5bGUuIEFuIGVtcHR5IG1hcCBwcmludHNcbiAqIG5vdGhpbmcgKG5vIHRyYWlsaW5nIG5ld2xpbmUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RW52RXhwb3J0KGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgZm9ybWF0OiBFbnZFeHBvcnRGb3JtYXQpOiBzdHJpbmcge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZW52KS5zb3J0KChbYV0sIFtiXSkgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgXCJqc29uXCI6XG4gICAgICByZXR1cm4gYCR7SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLCBudWxsLCAyKX1cXG5gO1xuICAgIGNhc2UgXCJ3aW5kb3dzXCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBlbnRyaWVzLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgc2V0ICR7a2V5fT0ke2VzY2FwZVdpbmRvd3NTZXRWYWx1ZSh2YWx1ZSl9YCkuam9pbihcIlxcblwiKSArXG4gICAgICAgIFwiXFxuXCJcbiAgICAgICk7XG4gICAgY2FzZSBcImV4cG9ydFwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgZW50cmllcy5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYGV4cG9ydCAke2tleX09XCIke2VzY2FwZUV4cG9ydFZhbHVlKHZhbHVlKX1cImApLmpvaW4oXCJcXG5cIikgK1xuICAgICAgICBcIlxcblwiXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZW52IGV4cG9ydCBmb3JtYXQ6ICR7Zm9ybWF0IHNhdGlzZmllcyBuZXZlcn1gKTtcbiAgfVxufVxuXG4vKiogTm9ybWFsaXplIENMSSBmb3JtYXQgYWxpYXNlcyB0byBhIHN1cHBvcnRlZCBleHBvcnQgZm9ybWF0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRW52RXhwb3J0Rm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBFbnZFeHBvcnRGb3JtYXQge1xuICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChcbiAgICBub3JtYWxpemVkID09PSBcImV4cG9ydFwiIHx8XG4gICAgbm9ybWFsaXplZCA9PT0gXCJzaGVsbFwiIHx8XG4gICAgbm9ybWFsaXplZCA9PT0gXCJuaXhcIiB8fFxuICAgIG5vcm1hbGl6ZWQgPT09IFwiYmFzaFwiXG4gICkge1xuICAgIHJldHVybiBcImV4cG9ydFwiO1xuICB9XG4gIGlmIChub3JtYWxpemVkID09PSBcIndpbmRvd3NcIiB8fCBub3JtYWxpemVkID09PSBcIndpblwiIHx8IG5vcm1hbGl6ZWQgPT09IFwiY21kXCIpIHtcbiAgICByZXR1cm4gXCJ3aW5kb3dzXCI7XG4gIH1cbiAgaWYgKG5vcm1hbGl6ZWQgPT09IFwianNvblwiKSB7XG4gICAgcmV0dXJuIFwianNvblwiO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBmb3JtYXQgJyR7dmFsdWV9Jy4gVXNlIGV4cG9ydCwgd2luZG93cywgb3IganNvbi5gKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/env-export.ts","../index.ts","../bin/dbx-tools-appkit-env.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -18,26 +18,33 @@
|
|
|
18
18
|
"@databricks/appkit": "^0.43.0",
|
|
19
19
|
"commander": "^15.0.0",
|
|
20
20
|
"tsx": "^4.23.0",
|
|
21
|
-
"@dbx-tools/appkit": "0.
|
|
22
|
-
"@dbx-tools/shared-core": "0.
|
|
21
|
+
"@dbx-tools/appkit": "0.4.0",
|
|
22
|
+
"@dbx-tools/shared-core": "0.4.0"
|
|
23
23
|
},
|
|
24
|
-
"main": "index.
|
|
24
|
+
"main": "./lib/index.js",
|
|
25
25
|
"license": "UNLICENSED",
|
|
26
26
|
"publishConfig": {
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
|
-
"version": "0.
|
|
30
|
-
"types": "index.ts",
|
|
29
|
+
"version": "0.4.0",
|
|
30
|
+
"types": "./lib/index.d.ts",
|
|
31
31
|
"type": "module",
|
|
32
32
|
"exports": {
|
|
33
|
-
".":
|
|
34
|
-
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./lib/index.d.ts",
|
|
35
|
+
"default": "./lib/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./env-export": {
|
|
38
|
+
"types": "./lib/src/env-export.d.ts",
|
|
39
|
+
"default": "./lib/src/env-export.js"
|
|
40
|
+
},
|
|
35
41
|
"./package.json": "./package.json"
|
|
36
42
|
},
|
|
37
43
|
"files": [
|
|
38
44
|
"index.ts",
|
|
39
45
|
"src",
|
|
40
|
-
"bin"
|
|
46
|
+
"bin",
|
|
47
|
+
"lib"
|
|
41
48
|
],
|
|
42
49
|
"dbxToolsConfig": {
|
|
43
50
|
"tags": [
|