@dbx-tools/cli-args 0.9.43 → 0.9.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/args.d.ts +2 -0
- package/lib/src/args.js +17 -7
- package/package.json +3 -3
- package/src/args.ts +17 -6
package/index.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
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-args";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.46";
|
|
7
7
|
export * as args from "./src/args.ts";
|
|
8
8
|
export type { CliArgsOptions, CliArgMeta, ArgumentSource } from "./src/args.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli-args";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.46";
|
|
3
3
|
export * as args from "./src/args.ts";
|
|
4
4
|
export type { CliArgsOptions, CliArgMeta, ArgumentSource } from "./src/args.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
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-args";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.46";
|
|
6
6
|
export * as args from "./src/args.js";
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGktYXJnc1wiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjQ2XCI7XG5leHBvcnQgKiBhcyBhcmdzIGZyb20gXCIuL3NyYy9hcmdzLnRzXCI7XG5leHBvcnQgdHlwZSB7IENsaUFyZ3NPcHRpb25zLCBDbGlBcmdNZXRhLCBBcmd1bWVudFNvdXJjZSB9IGZyb20gXCIuL3NyYy9hcmdzLnRzXCI7XG4iXX0=
|
package/lib/src/args.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface CliArgMeta {
|
|
|
18
18
|
readonly env?: string | readonly string[];
|
|
19
19
|
/** Set false to resolve the field from config without generating a Commander flag. */
|
|
20
20
|
readonly flag?: boolean;
|
|
21
|
+
/** Set false to keep schema and configured defaults out of generated help. */
|
|
22
|
+
readonly helpDefault?: boolean;
|
|
21
23
|
}
|
|
22
24
|
/** Zod defaults or concrete option values serialized by {@link serializeArgs}. */
|
|
23
25
|
export type ArgumentSource = z.ZodObject<z.ZodRawShape> | Readonly<Record<string, unknown>>;
|
package/lib/src/args.js
CHANGED
|
@@ -24,12 +24,14 @@ export function addArgs(command, schema, options = {}) {
|
|
|
24
24
|
const sourced = configValue(field, envKeys, options);
|
|
25
25
|
const fallback = sourced ?? field.fallback;
|
|
26
26
|
const option = new Option(flags, field.description);
|
|
27
|
-
Object.defineProperty(option, "schemaHelpDefault", {
|
|
27
|
+
Object.defineProperty(option, "schemaHelpDefault", {
|
|
28
|
+
value: field.helpDefault === false ? undefined : field.fallback,
|
|
29
|
+
});
|
|
28
30
|
if (envName)
|
|
29
31
|
option.env(envName);
|
|
30
32
|
if (field.choices && field.choices.length > 0)
|
|
31
33
|
option.choices(field.choices);
|
|
32
|
-
if (fallback !== undefined) {
|
|
34
|
+
if (fallback !== undefined && field.helpDefault !== false) {
|
|
33
35
|
const address = listenAddress(fallback);
|
|
34
36
|
option.default(fallback, address ? sharedOptions.formatListenAddress(address) : undefined);
|
|
35
37
|
}
|
|
@@ -85,6 +87,7 @@ function fields(schema) {
|
|
|
85
87
|
fallback: json.default,
|
|
86
88
|
env: json.env,
|
|
87
89
|
flag: json.flag,
|
|
90
|
+
helpDefault: json.helpDefault,
|
|
88
91
|
};
|
|
89
92
|
});
|
|
90
93
|
}
|
|
@@ -106,7 +109,8 @@ function envArgName(field, envKeys, options) {
|
|
|
106
109
|
envKeys.find((key) => key === key.toUpperCase() && /[A-Z]/.test(key)) ??
|
|
107
110
|
envKeys.at(-1) ??
|
|
108
111
|
"";
|
|
109
|
-
|
|
112
|
+
// Help shows the unscoped name; configUtils still reads DBX_TOOLS_ aliases.
|
|
113
|
+
return configUtils.name(canonical, { ...options, scope: [] });
|
|
110
114
|
}
|
|
111
115
|
function configValue(field, envKeys, options) {
|
|
112
116
|
if (field.type === "array") {
|
|
@@ -138,8 +142,14 @@ function scalarArgument(key, value) {
|
|
|
138
142
|
throw new TypeError(`Cannot serialize CLI argument "${key}" with a non-scalar value`);
|
|
139
143
|
}
|
|
140
144
|
function listenAddress(value) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
145
|
+
if (!object.isRecord(value))
|
|
146
|
+
return undefined;
|
|
147
|
+
if (value.scheme === "tcp" && typeof value.host === "string" && typeof value.port === "number") {
|
|
148
|
+
return { scheme: "tcp", host: value.host, port: value.port };
|
|
149
|
+
}
|
|
150
|
+
if (value.scheme === "unix" && typeof value.path === "string") {
|
|
151
|
+
return { scheme: "unix", path: value.path };
|
|
152
|
+
}
|
|
153
|
+
return undefined;
|
|
144
154
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQVcsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFnQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO0FBRTVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUsT0FBTyxDQUNyQixPQUFnQixFQUNoQixNQUFzQixFQUN0QixVQUEwQixFQUFFO0lBRTVCLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUs7WUFBRSxTQUFTO1FBQ25DLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5RSxJQUFJLE9BQU87WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0UsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsUUFBaUIsRUFBRSxFQUFFLENBQ3BELFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUNuRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsT0FBTyxDQUFDLFNBQVMsQ0FDZixJQUFJLE1BQU0sQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUFnQixFQUNoQixNQUFzQixFQUN0QixVQUEwQixZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7SUFFekQsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakUsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQXNCO0lBQ2xELElBQUksTUFBTSxZQUFZLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBc0MsQ0FBQztRQUNyRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN0QyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLE1BQWtDO0lBQ2hELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxTQUFTLENBQUMsNkJBQTZCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEtBQWtCLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE9BQU87WUFDTCxHQUFHO1lBQ0gsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTztZQUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQVk7SUFDNUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2xELE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBWTtJQUNoQyxJQUFJLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFZLEVBQUUsT0FBMEIsRUFBRSxPQUF1QjtJQUNuRixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxFQUFFLENBQUM7SUFDTCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBWSxFQUNaLE9BQW1DLEVBQ25DLE9BQXVCO0lBRXZCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEdBQVcsRUFBRSxLQUFjO0lBQ2pELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3JELE1BQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsR0FBVyxFQUFFLEtBQWM7SUFDakQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hGLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPO1FBQUUsT0FBTyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsTUFBTSxJQUFJLFNBQVMsQ0FBQyxrQ0FBa0MsR0FBRywyQkFBMkIsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQy9GLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ3hDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tbWFuZGVyIGFyZ3VtZW50cyBnZW5lcmF0ZWQgZnJvbSBhIFpvZCBvYmplY3Qgc2NoZW1hLlxuICpcbiAqIFpvZCBvd25zIHZhbGlkYXRpb24sIGNvZXJjaW9uLCBtZXRhZGF0YSwgYW5kIGRlZmF1bHRzLiBDb21tYW5kZXIgb3ducyBmbGFncyxcbiAqIGhlbHAsIGFuZCBlbnZpcm9ubWVudCBkaXNwbGF5LiB7QGxpbmsgY29uZmlnVXRpbHN9IHN1cHBsaWVzIGxheWVyZWQgbG9jYWxcbiAqIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHRoZSBmaW5hbCBab2QgcGFyc2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNvbmZpZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgb2JqZWN0LCBvcHRpb25zIGFzIHNoYXJlZE9wdGlvbnMsIHN0cmluZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8qKiBMYXllcmVkIGNvbmZpZyBsb29rdXAgdXNlZCB0byByZXNvbHZlIGFyZ3VtZW50IHZhbHVlcyBhbmQgaGVscCBkZWZhdWx0cy4gKi9cbmV4cG9ydCB0eXBlIENsaUFyZ3NPcHRpb25zID0gY29uZmlnVXRpbHMuQ29uZmlnT3B0aW9ucztcblxuLyoqIENMSSBtZXRhZGF0YSByZWFkIGZyb20gYSBmaWVsZCdzIFpvZCBgLm1ldGEoKWAgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaUFyZ01ldGEge1xuICAvKiogRXhhY3QgZW52aXJvbm1lbnQgbmFtZSBvciBvcmRlcmVkIGFsaWFzZXMgdXNlZCBpbnN0ZWFkIG9mIGZpZWxkLW5hbWUgZGVyaXZhdGlvbi4gKi9cbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBTZXQgZmFsc2UgdG8gcmVzb2x2ZSB0aGUgZmllbGQgZnJvbSBjb25maWcgd2l0aG91dCBnZW5lcmF0aW5nIGEgQ29tbWFuZGVyIGZsYWcuICovXG4gIHJlYWRvbmx5IGZsYWc/OiBib29sZWFuO1xufVxuXG4vKiogWm9kIGRlZmF1bHRzIG9yIGNvbmNyZXRlIG9wdGlvbiB2YWx1ZXMgc2VyaWFsaXplZCBieSB7QGxpbmsgc2VyaWFsaXplQXJnc30uICovXG5leHBvcnQgdHlwZSBBcmd1bWVudFNvdXJjZSA9IHouWm9kT2JqZWN0PHouWm9kUmF3U2hhcGU+IHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgSnNvbkZpZWxkIGV4dGVuZHMgQ2xpQXJnTWV0YSB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZWZhdWx0PzogdW5rbm93bjtcbiAgZW51bT86IHVua25vd25bXTtcbiAgY29uc3Q/OiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgRmllbGQgZXh0ZW5kcyBDbGlBcmdNZXRhIHtcbiAga2V5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNob2ljZXM/OiBzdHJpbmdbXTtcbiAgZmFsbGJhY2s/OiB1bmtub3duO1xufVxuXG5jb25zdCBib3VuZE9wdGlvbnMgPSBuZXcgV2Vha01hcDxDb21tYW5kLCBDbGlBcmdzT3B0aW9ucz4oKTtcblxuLyoqIFJlZ2lzdGVyIENvbW1hbmRlciBhcmd1bWVudHMgZm9yIGV2ZXJ5IGVuYWJsZWQgZmllbGQgb24gYSBab2Qgb2JqZWN0IHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBcmdzPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgY29tbWFuZDogQ29tbWFuZCxcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMgPSB7fSxcbik6IENvbW1hbmQge1xuICBib3VuZE9wdGlvbnMuc2V0KGNvbW1hbmQsIG9wdGlvbnMpO1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcyhzY2hlbWEpKSB7XG4gICAgaWYgKGZpZWxkLmZsYWcgPT09IGZhbHNlKSBjb250aW51ZTtcbiAgICBjb25zdCBlbnZLZXlzID0gZmllbGRFbnZLZXlzKGZpZWxkKTtcbiAgICBjb25zdCBlbnZOYW1lID0gZW52QXJnTmFtZShmaWVsZCwgZW52S2V5cywgb3B0aW9ucyk7XG4gICAgY29uc3QgZmxhZ3MgPSBhcmdGbGFncyhmaWVsZCk7XG4gICAgY29uc3Qgc291cmNlZCA9IGNvbmZpZ1ZhbHVlKGZpZWxkLCBlbnZLZXlzLCBvcHRpb25zKTtcbiAgICBjb25zdCBmYWxsYmFjayA9IHNvdXJjZWQgPz8gZmllbGQuZmFsbGJhY2s7XG4gICAgY29uc3Qgb3B0aW9uID0gbmV3IE9wdGlvbihmbGFncywgZmllbGQuZGVzY3JpcHRpb24pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRpb24sIFwic2NoZW1hSGVscERlZmF1bHRcIiwgeyB2YWx1ZTogZmllbGQuZmFsbGJhY2sgfSk7XG4gICAgaWYgKGVudk5hbWUpIG9wdGlvbi5lbnYoZW52TmFtZSk7XG4gICAgaWYgKGZpZWxkLmNob2ljZXMgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggPiAwKSBvcHRpb24uY2hvaWNlcyhmaWVsZC5jaG9pY2VzKTtcbiAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGxpc3RlbkFkZHJlc3MoZmFsbGJhY2spO1xuICAgICAgb3B0aW9uLmRlZmF1bHQoZmFsbGJhY2ssIGFkZHJlc3MgPyBzaGFyZWRPcHRpb25zLmZvcm1hdExpc3RlbkFkZHJlc3MoYWRkcmVzcykgOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICBvcHRpb24uYXJnUGFyc2VyKCh2YWx1ZTogc3RyaW5nLCBwcmV2aW91czogdW5rbm93bikgPT5cbiAgICAgICAgcHJldmlvdXMgPT09IGZhbGxiYWNrIHx8ICFBcnJheS5pc0FycmF5KHByZXZpb3VzKSA/IFt2YWx1ZV0gOiBbLi4ucHJldmlvdXMsIHZhbHVlXSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbW1hbmQuYWRkT3B0aW9uKG9wdGlvbik7XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYm9vbGVhblwiICYmIG9wdGlvbi5sb25nKSB7XG4gICAgICBjb21tYW5kLmFkZE9wdGlvbihcbiAgICAgICAgbmV3IE9wdGlvbihgLS1uby0ke29wdGlvbi5sb25nLnNsaWNlKDIpfWAsIGBEaXNhYmxlICR7ZmllbGQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKX1gKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb21tYW5kO1xufVxuXG4vKiogTWVyZ2UgQ0xJIHZhbHVlcyBvdmVyIGxheWVyZWQgY29uZmlnLCB0aGVuIHZhbGlkYXRlIGFuZCBkZWZhdWx0IHRocm91Z2ggWm9kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJnczxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0gYm91bmRPcHRpb25zLmdldChjb21tYW5kKSA/PyB7fSxcbik6IHoub3V0cHV0PHouWm9kT2JqZWN0PFQ+PiB7XG4gIGNvbnN0IHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMoc2NoZW1hKSkge1xuICAgIGlmIChjb21tYW5kLmdldE9wdGlvblZhbHVlU291cmNlKGZpZWxkLmtleSkgPT09IFwiY2xpXCIpIHtcbiAgICAgIHZhbHVlc1tmaWVsZC5rZXldID0gY29tbWFuZC5nZXRPcHRpb25WYWx1ZShmaWVsZC5rZXkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZWQgPSBjb25maWdWYWx1ZShmaWVsZCwgZmllbGRFbnZLZXlzKGZpZWxkKSwgb3B0aW9ucyk7XG4gICAgaWYgKHNvdXJjZWQgIT09IHVuZGVmaW5lZCkgdmFsdWVzW2ZpZWxkLmtleV0gPSBzb3VyY2VkO1xuICB9XG4gIHJldHVybiBzY2hlbWEucGFyc2UodmFsdWVzKTtcbn1cblxuLyoqIENvbnZlcnQgc2NoZW1hIGRlZmF1bHRzIG9yIGNvbmNyZXRlIG9wdGlvbiB2YWx1ZXMgaW50byBDb21tYW5kZXIgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUFyZ3Moc291cmNlOiBBcmd1bWVudFNvdXJjZSk6IHN0cmluZ1tdIHtcbiAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gc291cmNlLnBhcnNlKHt9KSBhcyBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gICAgcmV0dXJuIGZpZWxkcyhzb3VyY2UpLmZsYXRNYXAoKGZpZWxkKSA9PlxuICAgICAgZmllbGQuZmxhZyA9PT0gZmFsc2UgPyBbXSA6IHZhbHVlQXJndW1lbnRzKGZpZWxkLmtleSwgdmFsdWVzW2ZpZWxkLmtleV0pLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkuZmxhdE1hcCgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZUFyZ3VtZW50cyhrZXksIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGZpZWxkcyhzY2hlbWE6IHouWm9kT2JqZWN0PHouWm9kUmF3U2hhcGU+KTogRmllbGRbXSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gei50b0pTT05TY2hlbWEoc2NoZW1hKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IG9iamVjdC5pc1JlY29yZChkb2N1bWVudCkgPyBkb2N1bWVudC5wcm9wZXJ0aWVzIDogdW5kZWZpbmVkO1xuICBpZiAoIW9iamVjdC5pc1JlY29yZChwcm9wZXJ0aWVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJab2QgQ29tbWFuZGVyIGJpbmRpbmcgcmVxdWlyZXMgYSB6Lm9iamVjdCgpIHNjaGVtYVwiKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIW9iamVjdC5pc1JlY29yZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBiaW5kIENMSSBhcmd1bWVudCBcIiR7a2V5fVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IGpzb24gPSB2YWx1ZSBhcyBKc29uRmllbGQ7XG4gICAgY29uc3QgY2hvaWNlcyA9XG4gICAgICBqc29uLmVudW0/Lm1hcChTdHJpbmcpID8/IChqc29uLmNvbnN0ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBbU3RyaW5nKGpzb24uY29uc3QpXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eXBlb2YganNvbi5kZXNjcmlwdGlvbiA9PT0gXCJzdHJpbmdcIiA/IGpzb24uZGVzY3JpcHRpb24gOiBcIlwiLFxuICAgICAgdHlwZToganNvbi50eXBlLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIGZhbGxiYWNrOiBqc29uLmRlZmF1bHQsXG4gICAgICBlbnY6IGpzb24uZW52LFxuICAgICAgZmxhZzoganNvbi5mbGFnLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhcmdGbGFncyhmaWVsZDogRmllbGQpOiBzdHJpbmcge1xuICBjb25zdCBmbGFnID0gYC0tJHtzdHJpbmdVdGlscy50b1NsdWcoZmllbGQua2V5KX1gO1xuICByZXR1cm4gZmllbGQudHlwZSA9PT0gXCJib29sZWFuXCIgPyBmbGFnIDogYCR7ZmxhZ30gPHZhbHVlPmA7XG59XG5cbmZ1bmN0aW9uIGZpZWxkRW52S2V5cyhmaWVsZDogRmllbGQpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgZmllbGQuZW52ID09PSBcInN0cmluZ1wiKSByZXR1cm4gW2ZpZWxkLmVudl07XG4gIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmVudikpIHJldHVybiBbLi4uZmllbGQuZW52XTtcbiAgcmV0dXJuIGNvbmZpZ1V0aWxzLmVudmlyb25tZW50S2V5cyhmaWVsZC5rZXkpO1xufVxuXG5mdW5jdGlvbiBlbnZBcmdOYW1lKGZpZWxkOiBGaWVsZCwgZW52S2V5czogcmVhZG9ubHkgc3RyaW5nW10sIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zKTogc3RyaW5nIHtcbiAgaWYgKGZpZWxkLmVudiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZW52S2V5c1swXSA/PyBcIlwiO1xuICBjb25zdCBjYW5vbmljYWwgPVxuICAgIGVudktleXMuZmluZCgoa2V5KSA9PiAvXltBLVpdW0EtWjAtOV0qKF9bQS1aMC05XSspKyQvLnRlc3Qoa2V5KSkgPz9cbiAgICBlbnZLZXlzLmZpbmQoKGtleSkgPT4ga2V5ID09PSBrZXkudG9VcHBlckNhc2UoKSAmJiAvW0EtWl0vLnRlc3Qoa2V5KSkgPz9cbiAgICBlbnZLZXlzLmF0KC0xKSA/P1xuICAgIFwiXCI7XG4gIHJldHVybiBjb25maWdVdGlscy5uYW1lKGNhbm9uaWNhbCwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ1ZhbHVlKFxuICBmaWVsZDogRmllbGQsXG4gIGVudktleXM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBvcHRpb25zOiBDbGlBcmdzT3B0aW9ucyxcbik6IHVua25vd24ge1xuICBpZiAoZmllbGQudHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgY29uc3QgdmFsdWVzID0gY29uZmlnVXRpbHMubGlzdCh1bmRlZmluZWQsIGVudktleXMsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPiAwID8gdmFsdWVzIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmIChmaWVsZC50eXBlID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGNvbmZpZ1V0aWxzLmJvb2xlYW4odW5kZWZpbmVkLCBlbnZLZXlzLCBvcHRpb25zKTtcbiAgcmV0dXJuIGNvbmZpZ1V0aWxzLnRleHQoZW52S2V5cywgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHZhbHVlQXJndW1lbnRzKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBbXTtcbiAgY29uc3QgZmxhZyA9IGAtLSR7c3RyaW5nVXRpbHMudG9TbHVnKGtleSl9YDtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHJldHVybiBbdmFsdWUgPyBmbGFnIDogYC0tbm8tJHtmbGFnLnNsaWNlKDIpfWBdO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuZmxhdE1hcCgoZW50cnkpID0+IFtmbGFnLCBzY2FsYXJBcmd1bWVudChrZXksIGVudHJ5KV0pO1xuICB9XG4gIHJldHVybiBbZmxhZywgc2NhbGFyQXJndW1lbnQoa2V5LCB2YWx1ZSldO1xufVxuXG5mdW5jdGlvbiBzY2FsYXJBcmd1bWVudChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuICBjb25zdCBhZGRyZXNzID0gbGlzdGVuQWRkcmVzcyh2YWx1ZSk7XG4gIGlmIChhZGRyZXNzKSByZXR1cm4gc2hhcmVkT3B0aW9ucy5mb3JtYXRMaXN0ZW5BZGRyZXNzKGFkZHJlc3MpO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3Qgc2VyaWFsaXplIENMSSBhcmd1bWVudCBcIiR7a2V5fVwiIHdpdGggYSBub24tc2NhbGFyIHZhbHVlYCk7XG59XG5cbmZ1bmN0aW9uIGxpc3RlbkFkZHJlc3ModmFsdWU6IHVua25vd24pOiBzaGFyZWRPcHRpb25zLkxpc3RlbkFkZHJlc3MgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUuaG9zdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUucG9ydCA9PT0gXCJudW1iZXJcIlxuICAgID8geyBob3N0OiB2YWx1ZS5ob3N0LCBwb3J0OiB2YWx1ZS5wb3J0IH1cbiAgICA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQVcsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFrQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO0FBRTVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUsT0FBTyxDQUNyQixPQUFnQixFQUNoQixNQUFzQixFQUN0QixVQUEwQixFQUFFO0lBRTVCLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUs7WUFBRSxTQUFTO1FBQ25DLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FB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QUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4RixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLElBQUksT0FBTztRQUFFLE9BQU8sYUFBYSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sSUFBSSxTQUFTLENBQUMsa0NBQWtDLEdBQUcsMkJBQTJCLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM5QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbW1hbmRlciBhcmd1bWVudHMgZ2VuZXJhdGVkIGZyb20gYSBab2Qgb2JqZWN0IHNjaGVtYS5cbiAqXG4gKiBab2Qgb3ducyB2YWxpZGF0aW9uLCBjb2VyY2lvbiwgbWV0YWRhdGEsIGFuZCBkZWZhdWx0cy4gQ29tbWFuZGVyIG93bnMgZmxhZ3MsXG4gKiBoZWxwLCBhbmQgZW52aXJvbm1lbnQgZGlzcGxheS4ge0BsaW5rIGNvbmZpZ1V0aWxzfSBzdXBwbGllcyBsYXllcmVkIGxvY2FsXG4gKiBjb25maWd1cmF0aW9uIGJlZm9yZSB0aGUgZmluYWwgWm9kIHBhcnNlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjb25maWdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IG9iamVjdCwgb3B0aW9ucyBhcyBzaGFyZWRPcHRpb25zLCBzdHJpbmdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vKiogTGF5ZXJlZCBjb25maWcgbG9va3VwIHVzZWQgdG8gcmVzb2x2ZSBhcmd1bWVudCB2YWx1ZXMgYW5kIGhlbHAgZGVmYXVsdHMuICovXG5leHBvcnQgdHlwZSBDbGlBcmdzT3B0aW9ucyA9IGNvbmZpZ1V0aWxzLkNvbmZpZ09wdGlvbnM7XG5cbi8qKiBDTEkgbWV0YWRhdGEgcmVhZCBmcm9tIGEgZmllbGQncyBab2QgYC5tZXRhKClgIHZhbHVlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlBcmdNZXRhIHtcbiAgLyoqIEV4YWN0IGVudmlyb25tZW50IG5hbWUgb3Igb3JkZXJlZCBhbGlhc2VzIHVzZWQgaW5zdGVhZCBvZiBmaWVsZC1uYW1lIGRlcml2YXRpb24uICovXG4gIHJlYWRvbmx5IGVudj86IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogU2V0IGZhbHNlIHRvIHJlc29sdmUgdGhlIGZpZWxkIGZyb20gY29uZmlnIHdpdGhvdXQgZ2VuZXJhdGluZyBhIENvbW1hbmRlciBmbGFnLiAqL1xuICByZWFkb25seSBmbGFnPzogYm9vbGVhbjtcbiAgLyoqIFNldCBmYWxzZSB0byBrZWVwIHNjaGVtYSBhbmQgY29uZmlndXJlZCBkZWZhdWx0cyBvdXQgb2YgZ2VuZXJhdGVkIGhlbHAuICovXG4gIHJlYWRvbmx5IGhlbHBEZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqIFpvZCBkZWZhdWx0cyBvciBjb25jcmV0ZSBvcHRpb24gdmFsdWVzIHNlcmlhbGl6ZWQgYnkge0BsaW5rIHNlcmlhbGl6ZUFyZ3N9LiAqL1xuZXhwb3J0IHR5cGUgQXJndW1lbnRTb3VyY2UgPSB6LlpvZE9iamVjdDx6LlpvZFJhd1NoYXBlPiB8IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcblxuaW50ZXJmYWNlIEpzb25GaWVsZCBleHRlbmRzIENsaUFyZ01ldGEge1xuICB0eXBlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZGVmYXVsdD86IHVua25vd247XG4gIGVudW0/OiB1bmtub3duW107XG4gIGNvbnN0PzogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIEZpZWxkIGV4dGVuZHMgQ2xpQXJnTWV0YSB7XG4gIGtleTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBjaG9pY2VzPzogc3RyaW5nW107XG4gIGZhbGxiYWNrPzogdW5rbm93bjtcbn1cblxuY29uc3QgYm91bmRPcHRpb25zID0gbmV3IFdlYWtNYXA8Q29tbWFuZCwgQ2xpQXJnc09wdGlvbnM+KCk7XG5cbi8qKiBSZWdpc3RlciBDb21tYW5kZXIgYXJndW1lbnRzIGZvciBldmVyeSBlbmFibGVkIGZpZWxkIG9uIGEgWm9kIG9iamVjdCBzY2hlbWEuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQXJnczxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0ge30sXG4pOiBDb21tYW5kIHtcbiAgYm91bmRPcHRpb25zLnNldChjb21tYW5kLCBvcHRpb25zKTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMoc2NoZW1hKSkge1xuICAgIGlmIChmaWVsZC5mbGFnID09PSBmYWxzZSkgY29udGludWU7XG4gICAgY29uc3QgZW52S2V5cyA9IGZpZWxkRW52S2V5cyhmaWVsZCk7XG4gICAgY29uc3QgZW52TmFtZSA9IGVudkFyZ05hbWUoZmllbGQsIGVudktleXMsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGZsYWdzID0gYXJnRmxhZ3MoZmllbGQpO1xuICAgIGNvbnN0IHNvdXJjZWQgPSBjb25maWdWYWx1ZShmaWVsZCwgZW52S2V5cywgb3B0aW9ucyk7XG4gICAgY29uc3QgZmFsbGJhY2sgPSBzb3VyY2VkID8/IGZpZWxkLmZhbGxiYWNrO1xuICAgIGNvbnN0IG9wdGlvbiA9IG5ldyBPcHRpb24oZmxhZ3MsIGZpZWxkLmRlc2NyaXB0aW9uKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0aW9uLCBcInNjaGVtYUhlbHBEZWZhdWx0XCIsIHtcbiAgICAgIHZhbHVlOiBmaWVsZC5oZWxwRGVmYXVsdCA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBmaWVsZC5mYWxsYmFjayxcbiAgICB9KTtcbiAgICBpZiAoZW52TmFtZSkgb3B0aW9uLmVudihlbnZOYW1lKTtcbiAgICBpZiAoZmllbGQuY2hvaWNlcyAmJiBmaWVsZC5jaG9pY2VzLmxlbmd0aCA+IDApIG9wdGlvbi5jaG9pY2VzKGZpZWxkLmNob2ljZXMpO1xuICAgIGlmIChmYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGZpZWxkLmhlbHBEZWZhdWx0ICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGxpc3RlbkFkZHJlc3MoZmFsbGJhY2spO1xuICAgICAgb3B0aW9uLmRlZmF1bHQoZmFsbGJhY2ssIGFkZHJlc3MgPyBzaGFyZWRPcHRpb25zLmZvcm1hdExpc3RlbkFkZHJlc3MoYWRkcmVzcykgOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICBvcHRpb24uYXJnUGFyc2VyKCh2YWx1ZTogc3RyaW5nLCBwcmV2aW91czogdW5rbm93bikgPT5cbiAgICAgICAgcHJldmlvdXMgPT09IGZhbGxiYWNrIHx8ICFBcnJheS5pc0FycmF5KHByZXZpb3VzKSA/IFt2YWx1ZV0gOiBbLi4ucHJldmlvdXMsIHZhbHVlXSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbW1hbmQuYWRkT3B0aW9uKG9wdGlvbik7XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYm9vbGVhblwiICYmIG9wdGlvbi5sb25nKSB7XG4gICAgICBjb21tYW5kLmFkZE9wdGlvbihcbiAgICAgICAgbmV3IE9wdGlvbihgLS1uby0ke29wdGlvbi5sb25nLnNsaWNlKDIpfWAsIGBEaXNhYmxlICR7ZmllbGQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKX1gKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb21tYW5kO1xufVxuXG4vKiogTWVyZ2UgQ0xJIHZhbHVlcyBvdmVyIGxheWVyZWQgY29uZmlnLCB0aGVuIHZhbGlkYXRlIGFuZCBkZWZhdWx0IHRocm91Z2ggWm9kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJnczxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0gYm91bmRPcHRpb25zLmdldChjb21tYW5kKSA/PyB7fSxcbik6IHoub3V0cHV0PHouWm9kT2JqZWN0PFQ+PiB7XG4gIGNvbnN0IHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMoc2NoZW1hKSkge1xuICAgIGlmIChjb21tYW5kLmdldE9wdGlvblZhbHVlU291cmNlKGZpZWxkLmtleSkgPT09IFwiY2xpXCIpIHtcbiAgICAgIHZhbHVlc1tmaWVsZC5rZXldID0gY29tbWFuZC5nZXRPcHRpb25WYWx1ZShmaWVsZC5rZXkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZWQgPSBjb25maWdWYWx1ZShmaWVsZCwgZmllbGRFbnZLZXlzKGZpZWxkKSwgb3B0aW9ucyk7XG4gICAgaWYgKHNvdXJjZWQgIT09IHVuZGVmaW5lZCkgdmFsdWVzW2ZpZWxkLmtleV0gPSBzb3VyY2VkO1xuICB9XG4gIHJldHVybiBzY2hlbWEucGFyc2UodmFsdWVzKTtcbn1cblxuLyoqIENvbnZlcnQgc2NoZW1hIGRlZmF1bHRzIG9yIGNvbmNyZXRlIG9wdGlvbiB2YWx1ZXMgaW50byBDb21tYW5kZXIgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUFyZ3Moc291cmNlOiBBcmd1bWVudFNvdXJjZSk6IHN0cmluZ1tdIHtcbiAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gc291cmNlLnBhcnNlKHt9KSBhcyBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gICAgcmV0dXJuIGZpZWxkcyhzb3VyY2UpLmZsYXRNYXAoKGZpZWxkKSA9PlxuICAgICAgZmllbGQuZmxhZyA9PT0gZmFsc2UgPyBbXSA6IHZhbHVlQXJndW1lbnRzKGZpZWxkLmtleSwgdmFsdWVzW2ZpZWxkLmtleV0pLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkuZmxhdE1hcCgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZUFyZ3VtZW50cyhrZXksIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGZpZWxkcyhzY2hlbWE6IHouWm9kT2JqZWN0PHouWm9kUmF3U2hhcGU+KTogRmllbGRbXSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gei50b0pTT05TY2hlbWEoc2NoZW1hKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IG9iamVjdC5pc1JlY29yZChkb2N1bWVudCkgPyBkb2N1bWVudC5wcm9wZXJ0aWVzIDogdW5kZWZpbmVkO1xuICBpZiAoIW9iamVjdC5pc1JlY29yZChwcm9wZXJ0aWVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJab2QgQ29tbWFuZGVyIGJpbmRpbmcgcmVxdWlyZXMgYSB6Lm9iamVjdCgpIHNjaGVtYVwiKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoIW9iamVjdC5pc1JlY29yZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBiaW5kIENMSSBhcmd1bWVudCBcIiR7a2V5fVwiYCk7XG4gICAgfVxuICAgIGNvbnN0IGpzb24gPSB2YWx1ZSBhcyBKc29uRmllbGQ7XG4gICAgY29uc3QgY2hvaWNlcyA9XG4gICAgICBqc29uLmVudW0/Lm1hcChTdHJpbmcpID8/IChqc29uLmNvbnN0ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBbU3RyaW5nKGpzb24uY29uc3QpXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eXBlb2YganNvbi5kZXNjcmlwdGlvbiA9PT0gXCJzdHJpbmdcIiA/IGpzb24uZGVzY3JpcHRpb24gOiBcIlwiLFxuICAgICAgdHlwZToganNvbi50eXBlLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIGZhbGxiYWNrOiBqc29uLmRlZmF1bHQsXG4gICAgICBlbnY6IGpzb24uZW52LFxuICAgICAgZmxhZzoganNvbi5mbGFnLFxuICAgICAgaGVscERlZmF1bHQ6IGpzb24uaGVscERlZmF1bHQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFyZ0ZsYWdzKGZpZWxkOiBGaWVsZCk6IHN0cmluZyB7XG4gIGNvbnN0IGZsYWcgPSBgLS0ke3N0cmluZ1V0aWxzLnRvU2x1ZyhmaWVsZC5rZXkpfWA7XG4gIHJldHVybiBmaWVsZC50eXBlID09PSBcImJvb2xlYW5cIiA/IGZsYWcgOiBgJHtmbGFnfSA8dmFsdWU+YDtcbn1cblxuZnVuY3Rpb24gZmllbGRFbnZLZXlzKGZpZWxkOiBGaWVsZCk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgaWYgKHR5cGVvZiBmaWVsZC5lbnYgPT09IFwic3RyaW5nXCIpIHJldHVybiBbZmllbGQuZW52XTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQuZW52KSkgcmV0dXJuIFsuLi5maWVsZC5lbnZdO1xuICByZXR1cm4gY29uZmlnVXRpbHMuZW52aXJvbm1lbnRLZXlzKGZpZWxkLmtleSk7XG59XG5cbmZ1bmN0aW9uIGVudkFyZ05hbWUoZmllbGQ6IEZpZWxkLCBlbnZLZXlzOiByZWFkb25seSBzdHJpbmdbXSwgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMpOiBzdHJpbmcge1xuICBpZiAoZmllbGQuZW52ICE9PSB1bmRlZmluZWQpIHJldHVybiBlbnZLZXlzWzBdID8/IFwiXCI7XG4gIGNvbnN0IGNhbm9uaWNhbCA9XG4gICAgZW52S2V5cy5maW5kKChrZXkpID0+IC9eW0EtWl1bQS1aMC05XSooX1tBLVowLTldKykrJC8udGVzdChrZXkpKSA/P1xuICAgIGVudktleXMuZmluZCgoa2V5KSA9PiBrZXkgPT09IGtleS50b1VwcGVyQ2FzZSgpICYmIC9bQS1aXS8udGVzdChrZXkpKSA/P1xuICAgIGVudktleXMuYXQoLTEpID8/XG4gICAgXCJcIjtcbiAgLy8gSGVscCBzaG93cyB0aGUgdW5zY29wZWQgbmFtZTsgY29uZmlnVXRpbHMgc3RpbGwgcmVhZHMgREJYX1RPT0xTXyBhbGlhc2VzLlxuICByZXR1cm4gY29uZmlnVXRpbHMubmFtZShjYW5vbmljYWwsIHsgLi4ub3B0aW9ucywgc2NvcGU6IFtdIH0pO1xufVxuXG5mdW5jdGlvbiBjb25maWdWYWx1ZShcbiAgZmllbGQ6IEZpZWxkLFxuICBlbnZLZXlzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbiAgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMsXG4pOiB1bmtub3duIHtcbiAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbmZpZ1V0aWxzLmxpc3QodW5kZWZpbmVkLCBlbnZLZXlzLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID4gMCA/IHZhbHVlcyA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZmllbGQudHlwZSA9PT0gXCJib29sZWFuXCIpIHJldHVybiBjb25maWdVdGlscy5ib29sZWFuKHVuZGVmaW5lZCwgZW52S2V5cywgb3B0aW9ucyk7XG4gIHJldHVybiBjb25maWdVdGlscy50ZXh0KGVudktleXMsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiB2YWx1ZUFyZ3VtZW50cyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gW107XG4gIGNvbnN0IGZsYWcgPSBgLS0ke3N0cmluZ1V0aWxzLnRvU2x1ZyhrZXkpfWA7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gW3ZhbHVlID8gZmxhZyA6IGAtLW5vLSR7ZmxhZy5zbGljZSgyKX1gXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKGVudHJ5KSA9PiBbZmxhZywgc2NhbGFyQXJndW1lbnQoa2V5LCBlbnRyeSldKTtcbiAgfVxuICByZXR1cm4gW2ZsYWcsIHNjYWxhckFyZ3VtZW50KGtleSwgdmFsdWUpXTtcbn1cblxuZnVuY3Rpb24gc2NhbGFyQXJndW1lbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgY29uc3QgYWRkcmVzcyA9IGxpc3RlbkFkZHJlc3ModmFsdWUpO1xuICBpZiAoYWRkcmVzcykgcmV0dXJuIHNoYXJlZE9wdGlvbnMuZm9ybWF0TGlzdGVuQWRkcmVzcyhhZGRyZXNzKTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSBDTEkgYXJndW1lbnQgXCIke2tleX1cIiB3aXRoIGEgbm9uLXNjYWxhciB2YWx1ZWApO1xufVxuXG5mdW5jdGlvbiBsaXN0ZW5BZGRyZXNzKHZhbHVlOiB1bmtub3duKTogc2hhcmVkT3B0aW9ucy5MaXN0ZW5BZGRyZXNzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodmFsdWUuc2NoZW1lID09PSBcInRjcFwiICYmIHR5cGVvZiB2YWx1ZS5ob3N0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWx1ZS5wb3J0ID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiB2YWx1ZS5ob3N0LCBwb3J0OiB2YWx1ZS5wb3J0IH07XG4gIH1cbiAgaWYgKHZhbHVlLnNjaGVtZSA9PT0gXCJ1bml4XCIgJiYgdHlwZW9mIHZhbHVlLnBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4geyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiB2YWx1ZS5wYXRoIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/core": "^0.9.
|
|
27
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
26
|
+
"@dbx-tools/core": "^0.9.46",
|
|
27
|
+
"@dbx-tools/shared-core": "^0.9.46",
|
|
28
28
|
"commander": "^15.0.0",
|
|
29
29
|
"zod": "4.3.6"
|
|
30
30
|
},
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"./package.json": "./package.json"
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
|
-
"version": "0.9.
|
|
49
|
+
"version": "0.9.46",
|
|
50
50
|
"types": "./lib/index.d.ts",
|
|
51
51
|
"dbxToolsConfig": {
|
|
52
52
|
"tags": [
|
package/src/args.ts
CHANGED
|
@@ -22,6 +22,8 @@ export interface CliArgMeta {
|
|
|
22
22
|
readonly env?: string | readonly string[];
|
|
23
23
|
/** Set false to resolve the field from config without generating a Commander flag. */
|
|
24
24
|
readonly flag?: boolean;
|
|
25
|
+
/** Set false to keep schema and configured defaults out of generated help. */
|
|
26
|
+
readonly helpDefault?: boolean;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
/** Zod defaults or concrete option values serialized by {@link serializeArgs}. */
|
|
@@ -60,10 +62,12 @@ export function addArgs<T extends z.ZodRawShape>(
|
|
|
60
62
|
const sourced = configValue(field, envKeys, options);
|
|
61
63
|
const fallback = sourced ?? field.fallback;
|
|
62
64
|
const option = new Option(flags, field.description);
|
|
63
|
-
Object.defineProperty(option, "schemaHelpDefault", {
|
|
65
|
+
Object.defineProperty(option, "schemaHelpDefault", {
|
|
66
|
+
value: field.helpDefault === false ? undefined : field.fallback,
|
|
67
|
+
});
|
|
64
68
|
if (envName) option.env(envName);
|
|
65
69
|
if (field.choices && field.choices.length > 0) option.choices(field.choices);
|
|
66
|
-
if (fallback !== undefined) {
|
|
70
|
+
if (fallback !== undefined && field.helpDefault !== false) {
|
|
67
71
|
const address = listenAddress(fallback);
|
|
68
72
|
option.default(fallback, address ? sharedOptions.formatListenAddress(address) : undefined);
|
|
69
73
|
}
|
|
@@ -132,6 +136,7 @@ function fields(schema: z.ZodObject<z.ZodRawShape>): Field[] {
|
|
|
132
136
|
fallback: json.default,
|
|
133
137
|
env: json.env,
|
|
134
138
|
flag: json.flag,
|
|
139
|
+
helpDefault: json.helpDefault,
|
|
135
140
|
};
|
|
136
141
|
});
|
|
137
142
|
}
|
|
@@ -154,7 +159,8 @@ function envArgName(field: Field, envKeys: readonly string[], options: CliArgsOp
|
|
|
154
159
|
envKeys.find((key) => key === key.toUpperCase() && /[A-Z]/.test(key)) ??
|
|
155
160
|
envKeys.at(-1) ??
|
|
156
161
|
"";
|
|
157
|
-
|
|
162
|
+
// Help shows the unscoped name; configUtils still reads DBX_TOOLS_ aliases.
|
|
163
|
+
return configUtils.name(canonical, { ...options, scope: [] });
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
function configValue(
|
|
@@ -190,7 +196,12 @@ function scalarArgument(key: string, value: unknown): string {
|
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
function listenAddress(value: unknown): sharedOptions.ListenAddress | undefined {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
:
|
|
199
|
+
if (!object.isRecord(value)) return undefined;
|
|
200
|
+
if (value.scheme === "tcp" && typeof value.host === "string" && typeof value.port === "number") {
|
|
201
|
+
return { scheme: "tcp", host: value.host, port: value.port };
|
|
202
|
+
}
|
|
203
|
+
if (value.scheme === "unix" && typeof value.path === "string") {
|
|
204
|
+
return { scheme: "unix", path: value.path };
|
|
205
|
+
}
|
|
206
|
+
return undefined;
|
|
196
207
|
}
|