@dbx-tools/cli-args 0.9.152 → 0.9.154
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/exports.ts +1 -1
- package/index.ts +1 -1
- package/lib/exports.d.ts +1 -1
- package/lib/exports.js +2 -2
- 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 +8 -2
- package/package.json +3 -3
- package/src/args.ts +11 -0
package/exports.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { addArgs, parseArgs, serializeArgs } from "./src/args.ts";
|
|
1
|
+
export { addArgs, parseArgs, parseArgv, serializeArgs } from "./src/args.ts";
|
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-args";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.154";
|
|
7
7
|
export * as args from "./src/args.ts";
|
|
8
8
|
export type { CliArgsOptions, CliArgMeta, CliObjectSchema, ArgumentSource } from "./src/args.ts";
|
|
9
9
|
export * from "./exports.ts";
|
package/lib/exports.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { addArgs, parseArgs, serializeArgs } from "./src/args.ts";
|
|
1
|
+
export { addArgs, parseArgs, parseArgv, serializeArgs } from "./src/args.ts";
|
package/lib/exports.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addArgs, parseArgs, serializeArgs } from "./src/args.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { addArgs, parseArgs, parseArgv, serializeArgs } from "./src/args.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2V4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGFkZEFyZ3MsIHBhcnNlQXJncywgcGFyc2VBcmd2LCBzZXJpYWxpemVBcmdzIH0gZnJvbSBcIi4vc3JjL2FyZ3MudHNcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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.154";
|
|
3
3
|
export * as args from "./src/args.ts";
|
|
4
4
|
export type { CliArgsOptions, CliArgMeta, CliObjectSchema, ArgumentSource } from "./src/args.ts";
|
|
5
5
|
export * from "./exports.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-args";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.154";
|
|
6
6
|
export * as args from "./src/args.js";
|
|
7
7
|
export * from "./exports.js";
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBRXRDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGktYXJnc1wiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE1NFwiO1xuZXhwb3J0ICogYXMgYXJncyBmcm9tIFwiLi9zcmMvYXJncy50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbGlBcmdzT3B0aW9ucywgQ2xpQXJnTWV0YSwgQ2xpT2JqZWN0U2NoZW1hLCBBcmd1bWVudFNvdXJjZSB9IGZyb20gXCIuL3NyYy9hcmdzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leHBvcnRzLnRzXCI7XG4iXX0=
|
package/lib/src/args.d.ts
CHANGED
|
@@ -33,5 +33,7 @@ export type ArgumentSource = CliObjectSchema | Readonly<Record<string, unknown>>
|
|
|
33
33
|
export declare function addArgs<TSchema extends CliObjectSchema>(command: Command, schema: TSchema, options?: CliArgsOptions): Command;
|
|
34
34
|
/** Merge CLI values over layered config, then validate and default through Zod. */
|
|
35
35
|
export declare function parseArgs<TSchema extends CliObjectSchema>(command: Command, schema: TSchema, options?: CliArgsOptions): ReturnType<TSchema["parse"]>;
|
|
36
|
+
/** Parse a standalone argv array through Commander and an owning Zod schema. */
|
|
37
|
+
export declare function parseArgv<TSchema extends CliObjectSchema>(schema: TSchema, argv?: readonly string[], options?: CliArgsOptions): ReturnType<TSchema["parse"]>;
|
|
36
38
|
/** Convert schema defaults or concrete option values into Commander arguments. */
|
|
37
39
|
export declare function serializeArgs(source: ArgumentSource): string[];
|
package/lib/src/args.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { configUtils } from "@dbx-tools/core";
|
|
11
11
|
import { object, options as sharedOptions, stringUtils } from "@dbx-tools/shared-core";
|
|
12
|
-
import { Option } from "commander";
|
|
12
|
+
import { Command, Option } from "commander";
|
|
13
13
|
const boundOptions = new WeakMap();
|
|
14
14
|
/** Register Commander arguments for every enabled field on a Zod object schema. */
|
|
15
15
|
export function addArgs(command, schema, options = {}) {
|
|
@@ -60,6 +60,12 @@ export function parseArgs(command, schema, options = boundOptions.get(command) ?
|
|
|
60
60
|
}
|
|
61
61
|
return schema.parse(values);
|
|
62
62
|
}
|
|
63
|
+
/** Parse a standalone argv array through Commander and an owning Zod schema. */
|
|
64
|
+
export function parseArgv(schema, argv = process.argv.slice(2), options = {}) {
|
|
65
|
+
const command = addArgs(new Command(), schema, options);
|
|
66
|
+
command.parse([...argv], { from: "user" });
|
|
67
|
+
return parseArgs(command, schema, options);
|
|
68
|
+
}
|
|
63
69
|
/** Convert schema defaults or concrete option values into Commander arguments. */
|
|
64
70
|
export function serializeArgs(source) {
|
|
65
71
|
if (isCliObjectSchema(source)) {
|
|
@@ -194,4 +200,4 @@ function listenAddress(value) {
|
|
|
194
200
|
}
|
|
195
201
|
return undefined;
|
|
196
202
|
}
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQVcsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBNEM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztBQUU1RCxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLE9BQU8sQ0FDckIsT0FBZ0IsRUFDaEIsTUFBZSxFQUNmLFVBQTBCLEVBQUU7SUFFNUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLO1lBQUUsU0FBUztRQUNuQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxD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ZXJhdGVkIGZyb20gYSBab2Qgb2JqZWN0IHNjaGVtYS5cbiAqXG4gKiBab2Qgb3ducyB2YWxpZGF0aW9uLCBjb2VyY2lvbiwgbWV0YWRhdGEsIGFuZCBkZWZhdWx0cy4gQ29tbWFuZGVyIG93bnMgZmxhZ3MsXG4gKiBoZWxwLCBhbmQgZW52aXJvbm1lbnQgZGlzcGxheS4ge0BsaW5rIGNvbmZpZ1V0aWxzfSBzdXBwbGllcyBsYXllcmVkIGxvY2FsXG4gKiBjb25maWd1cmF0aW9uIGJlZm9yZSB0aGUgZmluYWwgWm9kIHBhcnNlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjb25maWdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IG9iamVjdCwgb3B0aW9ucyBhcyBzaGFyZWRPcHRpb25zLCBzdHJpbmdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbi8qKiBMYXllcmVkIGNvbmZpZyBsb29rdXAgdXNlZCB0byByZXNvbHZlIGFyZ3VtZW50IHZhbHVlcyBhbmQgaGVscCBkZWZhdWx0cy4gKi9cbmV4cG9ydCB0eXBlIENsaUFyZ3NPcHRpb25zID0gY29uZmlnVXRpbHMuQ29uZmlnT3B0aW9ucztcblxuLyoqIENMSSBtZXRhZGF0YSByZWFkIGZyb20gYSBmaWVsZCdzIFpvZCBgLm1ldGEoKWAgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaUFyZ01ldGEge1xuICAvKiogRXhhY3QgZW52aXJvbm1lbnQgbmFtZSBvciBvcmRlcmVkIGFsaWFzZXMgdXNlZCBpbnN0ZWFkIG9mIGZpZWxkLW5hbWUgZGVyaXZhdGlvbi4gKi9cbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBTZXQgZmFsc2UgdG8gcmVzb2x2ZSB0aGUgZmllbGQgZnJvbSBjb25maWcgd2l0aG91dCBnZW5lcmF0aW5nIGEgQ29tbWFuZGVyIGZsYWcuICovXG4gIHJlYWRvbmx5IGZsYWc/OiBib29sZWFuO1xuICAvKiogU2V0IGZhbHNlIHRvIGhpZGUgZGVmYXVsdHMgYW5kIGRlZmVyIGxheWVyZWQgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIHBhcnNpbmcuICovXG4gIHJlYWRvbmx5IGhlbHBEZWZhdWx0PzogYm9vbGVhbjtcbiAgLyoqIE9uZS1jaGFyYWN0ZXIgc2hvcnQgZmxhZyB3aXRob3V0IGEgZGFzaCwgb3IgZmFsc2UgdG8gZGlzYWJsZSBhdXRvbWF0aWMgZ2VuZXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgc2hvcnQ/OiBzdHJpbmcgfCBmYWxzZTtcbn1cblxuLyoqIFN0cnVjdHVyYWwgWm9kIG9iamVjdCBjb250cmFjdCB0aGF0IHJlbWFpbnMgY29tcGF0aWJsZSBhY3Jvc3MgWm9kIHY0IG1pbm9ycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpT2JqZWN0U2NoZW1hPFxuICBUT3V0cHV0IGV4dGVuZHMgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuPiB7XG4gIHBhcnNlKHZhbHVlOiB1bmtub3duKTogVE91dHB1dDtcbiAgdG9KU09OU2NoZW1hKCk6IHVua25vd247XG59XG5cbi8qKiBab2QgZGVmYXVsdHMgb3IgY29uY3JldGUgb3B0aW9uIHZhbHVlcyBzZXJpYWxpemVkIGJ5IHtAbGluayBzZXJpYWxpemVBcmdzfS4gKi9cbmV4cG9ydCB0eXBlIEFyZ3VtZW50U291cmNlID0gQ2xpT2JqZWN0U2NoZW1hIHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgSnNvbkZpZWxkIGV4dGVuZHMgQ2xpQXJnTWV0YSB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZWZhdWx0PzogdW5rbm93bjtcbiAgZW51bT86IHVua25vd25bXTtcbiAgY29uc3Q/OiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgRmllbGQgZXh0ZW5kcyBDbGlBcmdNZXRhIHtcbiAga2V5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNob2ljZXM/OiBzdHJpbmdbXTtcbiAgZmFsbGJhY2s/OiB1bmtub3duO1xufVxuXG5jb25zdCBib3VuZE9wdGlvbnMgPSBuZXcgV2Vha01hcDxDb21tYW5kLCBDbGlBcmdzT3B0aW9ucz4oKTtcblxuLyoqIFJlZ2lzdGVyIENvbW1hbmRlciBhcmd1bWVudHMgZm9yIGV2ZXJ5IGVuYWJsZWQgZmllbGQgb24gYSBab2Qgb2JqZWN0IHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBcmdzPFRTY2hlbWEgZXh0ZW5kcyBDbGlPYmplY3RTY2hlbWE+KFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBzY2hlbWE6IFRTY2hlbWEsXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0ge30sXG4pOiBDb21tYW5kIHtcbiAgYm91bmRPcHRpb25zLnNldChjb21tYW5kLCBvcHRpb25zKTtcbiAgY29uc3Qgc2NoZW1hRmllbGRzID0gZmllbGRzKHNjaGVtYSk7XG4gIGNvbnN0IHNob3J0RmxhZ3MgPSBmaWVsZFNob3J0RmxhZ3Moc2NoZW1hRmllbGRzKTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBzY2hlbWFGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQuZmxhZyA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGVudktleXMgPSBmaWVsZEVudktleXMoZmllbGQpO1xuICAgIGNvbnN0IGVudk5hbWUgPSBlbnZBcmdOYW1lKGZpZWxkLCBlbnZLZXlzLCBvcHRpb25zKTtcbiAgICBjb25zdCBmbGFncyA9IGFyZ0ZsYWdzKGZpZWxkLCBzaG9ydEZsYWdzLmdldChmaWVsZC5rZXkpKTtcbiAgICBjb25zdCBzb3VyY2VkID0gZmllbGQuaGVscERlZmF1bHQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogY29uZmlnVmFsdWUoZmllbGQsIGVudktleXMsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGZhbGxiYWNrID0gc291cmNlZCA/PyBmaWVsZC5mYWxsYmFjaztcbiAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKGZsYWdzLCBmaWVsZC5kZXNjcmlwdGlvbik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdGlvbiwgXCJzY2hlbWFIZWxwRGVmYXVsdFwiLCB7XG4gICAgICB2YWx1ZTogZmllbGQuaGVscERlZmF1bHQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZmllbGQuZmFsbGJhY2ssXG4gICAgfSk7XG4gICAgaWYgKGVudk5hbWUpIG9wdGlvbi5lbnYoZW52TmFtZSk7XG4gICAgaWYgKGZpZWxkLmNob2ljZXMgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggPiAwKSBvcHRpb24uY2hvaWNlcyhmaWVsZC5jaG9pY2VzKTtcbiAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiBmaWVsZC5oZWxwRGVmYXVsdCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBsaXN0ZW5BZGRyZXNzKGZhbGxiYWNrKTtcbiAgICAgIG9wdGlvbi5kZWZhdWx0KGZhbGxiYWNrLCBhZGRyZXNzID8gc2hhcmVkT3B0aW9ucy5mb3JtYXRMaXN0ZW5BZGRyZXNzKGFkZHJlc3MpIDogdW5kZWZpbmVkKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgICAgb3B0aW9uLmFyZ1BhcnNlcigodmFsdWU6IHN0cmluZywgcHJldmlvdXM6IHVua25vd24pID0+XG4gICAgICAgIHByZXZpb3VzID09PSBmYWxsYmFjayB8fCAhQXJyYXkuaXNBcnJheShwcmV2aW91cykgPyBbdmFsdWVdIDogWy4uLnByZXZpb3VzLCB2YWx1ZV0sXG4gICAgICApO1xuICAgIH1cbiAgICBjb21tYW5kLmFkZE9wdGlvbihvcHRpb24pO1xuICAgIGlmIChmaWVsZC50eXBlID09PSBcImJvb2xlYW5cIiAmJiBvcHRpb24ubG9uZykge1xuICAgICAgY29tbWFuZC5hZGRPcHRpb24oXG4gICAgICAgIG5ldyBPcHRpb24oYC0tbm8tJHtvcHRpb24ubG9uZy5zbGljZSgyKX1gLCBgRGlzYWJsZSAke2ZpZWxkLmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCl9YCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29tbWFuZDtcbn1cblxuLyoqIE1lcmdlIENMSSB2YWx1ZXMgb3ZlciBsYXllcmVkIGNvbmZpZywgdGhlbiB2YWxpZGF0ZSBhbmQgZGVmYXVsdCB0aHJvdWdoIFpvZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3M8VFNjaGVtYSBleHRlbmRzIENsaU9iamVjdFNjaGVtYT4oXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHNjaGVtYTogVFNjaGVtYSxcbiAgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMgPSBib3VuZE9wdGlvbnMuZ2V0KGNvbW1hbmQpID8/IHt9LFxuKTogUmV0dXJuVHlwZTxUU2NoZW1hW1wicGFyc2VcIl0+IHtcbiAgY29uc3QgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcyhzY2hlbWEpKSB7XG4gICAgaWYgKGNvbW1hbmQuZ2V0T3B0aW9uVmFsdWVTb3VyY2UoZmllbGQua2V5KSA9PT0gXCJjbGlcIikge1xuICAgICAgdmFsdWVzW2ZpZWxkLmtleV0gPSBjb21tYW5kLmdldE9wdGlvblZhbHVlKGZpZWxkLmtleSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlZCA9IGNvbmZpZ1ZhbHVlKGZpZWxkLCBmaWVsZEVudktleXMoZmllbGQpLCBvcHRpb25zKTtcbiAgICBpZiAoc291cmNlZCAhPT0gdW5kZWZpbmVkKSB2YWx1ZXNbZmllbGQua2V5XSA9IHNvdXJjZWQ7XG4gIH1cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZSh2YWx1ZXMpIGFzIFJldHVyblR5cGU8VFNjaGVtYVtcInBhcnNlXCJdPjtcbn1cblxuLyoqIENvbnZlcnQgc2NoZW1hIGRlZmF1bHRzIG9yIGNvbmNyZXRlIG9wdGlvbiB2YWx1ZXMgaW50byBDb21tYW5kZXIgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUFyZ3Moc291cmNlOiBBcmd1bWVudFNvdXJjZSk6IHN0cmluZ1tdIHtcbiAgaWYgKGlzQ2xpT2JqZWN0U2NoZW1hKHNvdXJjZSkpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBzb3VyY2UucGFyc2Uoe30pIGFzIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICByZXR1cm4gZmllbGRzKHNvdXJjZSkuZmxhdE1hcCgoZmllbGQpID0+XG4gICAgICBmaWVsZC5mbGFnID09PSBmYWxzZSA/IFtdIDogdmFsdWVBcmd1bWVudHMoZmllbGQua2V5LCB2YWx1ZXNbZmllbGQua2V5XSksXG4gICAgKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc291cmNlKS5mbGF0TWFwKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlQXJndW1lbnRzKGtleSwgdmFsdWUpKTtcbn1cblxuZnVuY3Rpb24gZmllbGRzKHNjaGVtYTogQ2xpT2JqZWN0U2NoZW1hKTogRmllbGRbXSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gc2NoZW1hLnRvSlNPTlNjaGVtYSgpO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gb2JqZWN0LmlzUmVjb3JkKGRvY3VtZW50KSA/IGRvY3VtZW50LnByb3BlcnRpZXMgOiB1bmRlZmluZWQ7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHByb3BlcnRpZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlpvZCBDb21tYW5kZXIgYmluZGluZyByZXF1aXJlcyBhIHoub2JqZWN0KCkgc2NoZW1hXCIpO1xuICB9XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGJpbmQgQ0xJIGFyZ3VtZW50IFwiJHtrZXl9XCJgKTtcbiAgICB9XG4gICAgY29uc3QganNvbiA9IHZhbHVlIGFzIEpzb25GaWVsZDtcbiAgICBjb25zdCBjaG9pY2VzID1cbiAgICAgIGpzb24uZW51bT8ubWFwKFN0cmluZykgPz8gKGpzb24uY29uc3QgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IFtTdHJpbmcoanNvbi5jb25zdCldKTtcbiAgICByZXR1cm4ge1xuICAgICAga2V5LFxuICAgICAgZGVzY3JpcHRpb246IHR5cGVvZiBqc29uLmRlc2NyaXB0aW9uID09PSBcInN0cmluZ1wiID8ganNvbi5kZXNjcmlwdGlvbiA6IFwiXCIsXG4gICAgICB0eXBlOiBqc29uLnR5cGUsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmFsbGJhY2s6IGpzb24uZGVmYXVsdCxcbiAgICAgIGVudjoganNvbi5lbnYsXG4gICAgICBmbGFnOiBqc29uLmZsYWcsXG4gICAgICBoZWxwRGVmYXVsdDoganNvbi5oZWxwRGVmYXVsdCxcbiAgICAgIHNob3J0OiBqc29uLnNob3J0LFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0NsaU9iamVjdFNjaGVtYSh2YWx1ZTogQXJndW1lbnRTb3VyY2UpOiB2YWx1ZSBpcyBDbGlPYmplY3RTY2hlbWEge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlLnBhcnNlID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHZhbHVlLnRvSlNPTlNjaGVtYSA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5mdW5jdGlvbiBhcmdGbGFncyhmaWVsZDogRmllbGQsIHNob3J0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBjb25zdCBsb25nID0gYC0tJHtzdHJpbmdVdGlscy50b1NsdWcoZmllbGQua2V5KX1gO1xuICBjb25zdCB2YWx1ZSA9IGZpZWxkLnR5cGUgPT09IFwiYm9vbGVhblwiID8gXCJcIiA6IFwiIDx2YWx1ZT5cIjtcbiAgaWYgKHNob3J0KSByZXR1cm4gYC0ke3Nob3J0fSwgJHtsb25nfSR7dmFsdWV9YDtcbiAgcmV0dXJuIGAke2xvbmd9JHt2YWx1ZX1gO1xufVxuXG5mdW5jdGlvbiBmaWVsZFNob3J0RmxhZ3MoZmllbGRzOiByZWFkb25seSBGaWVsZFtdKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgY29uc3QgcmVzZXJ2ZWQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbW1wiaFwiLCBcImhlbHBcIl1dKTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGQuc2hvcnQgPT09IGZhbHNlIHx8IGZpZWxkLnNob3J0ID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGlmICghL15bQS1aYS16XSQvLnRlc3QoZmllbGQuc2hvcnQpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBTaG9ydCBmbGFnIGZvciBcIiR7ZmllbGQua2V5fVwiIG11c3QgYmUgb25lIGxldHRlciBvciBmYWxzZWApO1xuICAgIH1cbiAgICBjb25zdCBzaG9ydCA9IGZpZWxkLnNob3J0LnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSByZXNlcnZlZC5nZXQoc2hvcnQpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgU2hvcnQgZmxhZyAtJHtzaG9ydH0gaXMgc2hhcmVkIGJ5IFwiJHtleGlzdGluZ31cIiBhbmQgXCIke2ZpZWxkLmtleX1cImApO1xuICAgIH1cbiAgICByZXNlcnZlZC5zZXQoc2hvcnQsIGZpZWxkLmtleSk7XG4gICAgcmVzdWx0LnNldChmaWVsZC5rZXksIHNob3J0KTtcbiAgfVxuICBjb25zdCBjYW5kaWRhdGVzID0gbmV3IE1hcDxzdHJpbmcsIEZpZWxkW10+KCk7XG4gIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkLnNob3J0ICE9PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNob3J0ID0gWy4uLnN0cmluZ1V0aWxzLnRva2VuaXplKGZpZWxkLmtleSldWzBdPy5bMF0/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFzaG9ydCB8fCByZXNlcnZlZC5oYXMoc2hvcnQpKSBjb250aW51ZTtcbiAgICBjb25zdCBtYXRjaGluZyA9IGNhbmRpZGF0ZXMuZ2V0KHNob3J0KSA/PyBbXTtcbiAgICBtYXRjaGluZy5wdXNoKGZpZWxkKTtcbiAgICBjYW5kaWRhdGVzLnNldChzaG9ydCwgbWF0Y2hpbmcpO1xuICB9XG4gIGZvciAoY29uc3QgW3Nob3J0LCBtYXRjaGluZ10gb2YgY2FuZGlkYXRlcykge1xuICAgIGlmIChtYXRjaGluZy5sZW5ndGggPT09IDEpIHJlc3VsdC5zZXQobWF0Y2hpbmdbMF0hLmtleSwgc2hvcnQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGZpZWxkRW52S2V5cyhmaWVsZDogRmllbGQpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgZmllbGQuZW52ID09PSBcInN0cmluZ1wiKSByZXR1cm4gW2ZpZWxkLmVudl07XG4gIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmVudikpIHJldHVybiBbLi4uZmllbGQuZW52XTtcbiAgcmV0dXJuIGNvbmZpZ1V0aWxzLmVudmlyb25tZW50S2V5cyhmaWVsZC5rZXkpO1xufVxuXG5mdW5jdGlvbiBlbnZBcmdOYW1lKGZpZWxkOiBGaWVsZCwgZW52S2V5czogcmVhZG9ubHkgc3RyaW5nW10sIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zKTogc3RyaW5nIHtcbiAgaWYgKGZpZWxkLmVudiAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZW52S2V5c1swXSA/PyBcIlwiO1xuICBjb25zdCBjYW5vbmljYWwgPVxuICAgIGVudktleXMuZmluZCgoa2V5KSA9PiAvXltBLVpdW0EtWjAtOV0qKF9bQS1aMC05XSspKyQvLnRlc3Qoa2V5KSkgPz9cbiAgICBlbnZLZXlzLmZpbmQoKGtleSkgPT4ga2V5ID09PSBrZXkudG9VcHBlckNhc2UoKSAmJiAvW0EtWl0vLnRlc3Qoa2V5KSkgPz9cbiAgICBlbnZLZXlzLmF0KC0xKSA/P1xuICAgIFwiXCI7XG4gIC8vIEhlbHAgc2hvd3MgdGhlIHVuc2NvcGVkIG5hbWU7IGNvbmZpZ1V0aWxzIHN0aWxsIHJlYWRzIERCWF9UT09MU18gYWxpYXNlcy5cbiAgcmV0dXJuIGNvbmZpZ1V0aWxzLm5hbWUoY2Fub25pY2FsLCB7IC4uLm9wdGlvbnMsIHNjb3BlOiBbXSB9KTtcbn1cblxuZnVuY3Rpb24gY29uZmlnVmFsdWUoXG4gIGZpZWxkOiBGaWVsZCxcbiAgZW52S2V5czogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10sXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zLFxuKTogdW5rbm93biB7XG4gIGlmIChmaWVsZC50eXBlID09PSBcImFycmF5XCIpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb25maWdVdGlscy5saXN0KHVuZGVmaW5lZCwgZW52S2V5cywgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA+IDAgPyB2YWx1ZXMgOiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gY29uZmlnVXRpbHMuYm9vbGVhbih1bmRlZmluZWQsIGVudktleXMsIG9wdGlvbnMpO1xuICByZXR1cm4gY29uZmlnVXRpbHMudGV4dChlbnZLZXlzLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gdmFsdWVBcmd1bWVudHMoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuICBjb25zdCBmbGFnID0gYC0tJHtzdHJpbmdVdGlscy50b1NsdWcoa2V5KX1gO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikgcmV0dXJuIFt2YWx1ZSA/IGZsYWcgOiBgLS1uby0ke2ZsYWcuc2xpY2UoMil9YF07XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5mbGF0TWFwKChlbnRyeSkgPT4gW2ZsYWcsIHNjYWxhckFyZ3VtZW50KGtleSwgZW50cnkpXSk7XG4gIH1cbiAgcmV0dXJuIFtmbGFnLCBzY2FsYXJBcmd1bWVudChrZXksIHZhbHVlKV07XG59XG5cbmZ1bmN0aW9uIHNjYWxhckFyZ3VtZW50KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG4gIGNvbnN0IGFkZHJlc3MgPSBsaXN0ZW5BZGRyZXNzKHZhbHVlKTtcbiAgaWYgKGFkZHJlc3MpIHJldHVybiBzaGFyZWRPcHRpb25zLmZvcm1hdExpc3RlbkFkZHJlc3MoYWRkcmVzcyk7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgQ0xJIGFyZ3VtZW50IFwiJHtrZXl9XCIgd2l0aCBhIG5vbi1zY2FsYXIgdmFsdWVgKTtcbn1cblxuZnVuY3Rpb24gbGlzdGVuQWRkcmVzcyh2YWx1ZTogdW5rbm93bik6IHNoYXJlZE9wdGlvbnMuTGlzdGVuQWRkcmVzcyB8IHVuZGVmaW5lZCB7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKHZhbHVlLnNjaGVtZSA9PT0gXCJ0Y3BcIiAmJiB0eXBlb2YgdmFsdWUuaG9zdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUucG9ydCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogdmFsdWUuaG9zdCwgcG9ydDogdmFsdWUucG9ydCB9O1xuICB9XG4gIGlmICh2YWx1ZS5zY2hlbWUgPT09IFwidW5peFwiICYmIHR5cGVvZiB2YWx1ZS5wYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogdmFsdWUucGF0aCB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQTRDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7QUFFNUQsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSxPQUFPLENBQ3JCLE9BQWdCLEVBQ2hCLE1BQWUsRUFDZixVQUEwQixFQUFFO0lBRTVCLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSztZQUFFLFNBQVM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxD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LE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbW1hbmRlciBhcmd1bWVudHMgZ2VuZXJhdGVkIGZyb20gYSBab2Qgb2JqZWN0IHNjaGVtYS5cbiAqXG4gKiBab2Qgb3ducyB2YWxpZGF0aW9uLCBjb2VyY2lvbiwgbWV0YWRhdGEsIGFuZCBkZWZhdWx0cy4gQ29tbWFuZGVyIG93bnMgZmxhZ3MsXG4gKiBoZWxwLCBhbmQgZW52aXJvbm1lbnQgZGlzcGxheS4ge0BsaW5rIGNvbmZpZ1V0aWxzfSBzdXBwbGllcyBsYXllcmVkIGxvY2FsXG4gKiBjb25maWd1cmF0aW9uIGJlZm9yZSB0aGUgZmluYWwgWm9kIHBhcnNlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjb25maWdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IG9iamVjdCwgb3B0aW9ucyBhcyBzaGFyZWRPcHRpb25zLCBzdHJpbmdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbi8qKiBMYXllcmVkIGNvbmZpZyBsb29rdXAgdXNlZCB0byByZXNvbHZlIGFyZ3VtZW50IHZhbHVlcyBhbmQgaGVscCBkZWZhdWx0cy4gKi9cbmV4cG9ydCB0eXBlIENsaUFyZ3NPcHRpb25zID0gY29uZmlnVXRpbHMuQ29uZmlnT3B0aW9ucztcblxuLyoqIENMSSBtZXRhZGF0YSByZWFkIGZyb20gYSBmaWVsZCdzIFpvZCBgLm1ldGEoKWAgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaUFyZ01ldGEge1xuICAvKiogRXhhY3QgZW52aXJvbm1lbnQgbmFtZSBvciBvcmRlcmVkIGFsaWFzZXMgdXNlZCBpbnN0ZWFkIG9mIGZpZWxkLW5hbWUgZGVyaXZhdGlvbi4gKi9cbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBTZXQgZmFsc2UgdG8gcmVzb2x2ZSB0aGUgZmllbGQgZnJvbSBjb25maWcgd2l0aG91dCBnZW5lcmF0aW5nIGEgQ29tbWFuZGVyIGZsYWcuICovXG4gIHJlYWRvbmx5IGZsYWc/OiBib29sZWFuO1xuICAvKiogU2V0IGZhbHNlIHRvIGhpZGUgZGVmYXVsdHMgYW5kIGRlZmVyIGxheWVyZWQgY29uZmlndXJhdGlvbiBsb2FkaW5nIHVudGlsIHBhcnNpbmcuICovXG4gIHJlYWRvbmx5IGhlbHBEZWZhdWx0PzogYm9vbGVhbjtcbiAgLyoqIE9uZS1jaGFyYWN0ZXIgc2hvcnQgZmxhZyB3aXRob3V0IGEgZGFzaCwgb3IgZmFsc2UgdG8gZGlzYWJsZSBhdXRvbWF0aWMgZ2VuZXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgc2hvcnQ/OiBzdHJpbmcgfCBmYWxzZTtcbn1cblxuLyoqIFN0cnVjdHVyYWwgWm9kIG9iamVjdCBjb250cmFjdCB0aGF0IHJlbWFpbnMgY29tcGF0aWJsZSBhY3Jvc3MgWm9kIHY0IG1pbm9ycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpT2JqZWN0U2NoZW1hPFxuICBUT3V0cHV0IGV4dGVuZHMgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuPiB7XG4gIHBhcnNlKHZhbHVlOiB1bmtub3duKTogVE91dHB1dDtcbiAgdG9KU09OU2NoZW1hKCk6IHVua25vd247XG59XG5cbi8qKiBab2QgZGVmYXVsdHMgb3IgY29uY3JldGUgb3B0aW9uIHZhbHVlcyBzZXJpYWxpemVkIGJ5IHtAbGluayBzZXJpYWxpemVBcmdzfS4gKi9cbmV4cG9ydCB0eXBlIEFyZ3VtZW50U291cmNlID0gQ2xpT2JqZWN0U2NoZW1hIHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgSnNvbkZpZWxkIGV4dGVuZHMgQ2xpQXJnTWV0YSB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZWZhdWx0PzogdW5rbm93bjtcbiAgZW51bT86IHVua25vd25bXTtcbiAgY29uc3Q/OiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgRmllbGQgZXh0ZW5kcyBDbGlBcmdNZXRhIHtcbiAga2V5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNob2ljZXM/OiBzdHJpbmdbXTtcbiAgZmFsbGJhY2s/OiB1bmtub3duO1xufVxuXG5jb25zdCBib3VuZE9wdGlvbnMgPSBuZXcgV2Vha01hcDxDb21tYW5kLCBDbGlBcmdzT3B0aW9ucz4oKTtcblxuLyoqIFJlZ2lzdGVyIENvbW1hbmRlciBhcmd1bWVudHMgZm9yIGV2ZXJ5IGVuYWJsZWQgZmllbGQgb24gYSBab2Qgb2JqZWN0IHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBcmdzPFRTY2hlbWEgZXh0ZW5kcyBDbGlPYmplY3RTY2hlbWE+KFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBzY2hlbWE6IFRTY2hlbWEsXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0ge30sXG4pOiBDb21tYW5kIHtcbiAgYm91bmRPcHRpb25zLnNldChjb21tYW5kLCBvcHRpb25zKTtcbiAgY29uc3Qgc2NoZW1hRmllbGRzID0gZmllbGRzKHNjaGVtYSk7XG4gIGNvbnN0IHNob3J0RmxhZ3MgPSBmaWVsZFNob3J0RmxhZ3Moc2NoZW1hRmllbGRzKTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBzY2hlbWFGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQuZmxhZyA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGVudktleXMgPSBmaWVsZEVudktleXMoZmllbGQpO1xuICAgIGNvbnN0IGVudk5hbWUgPSBlbnZBcmdOYW1lKGZpZWxkLCBlbnZLZXlzLCBvcHRpb25zKTtcbiAgICBjb25zdCBmbGFncyA9IGFyZ0ZsYWdzKGZpZWxkLCBzaG9ydEZsYWdzLmdldChmaWVsZC5rZXkpKTtcbiAgICBjb25zdCBzb3VyY2VkID0gZmllbGQuaGVscERlZmF1bHQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogY29uZmlnVmFsdWUoZmllbGQsIGVudktleXMsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGZhbGxiYWNrID0gc291cmNlZCA/PyBmaWVsZC5mYWxsYmFjaztcbiAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKGZsYWdzLCBmaWVsZC5kZXNjcmlwdGlvbik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdGlvbiwgXCJzY2hlbWFIZWxwRGVmYXVsdFwiLCB7XG4gICAgICB2YWx1ZTogZmllbGQuaGVscERlZmF1bHQgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogZmllbGQuZmFsbGJhY2ssXG4gICAgfSk7XG4gICAgaWYgKGVudk5hbWUpIG9wdGlvbi5lbnYoZW52TmFtZSk7XG4gICAgaWYgKGZpZWxkLmNob2ljZXMgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggPiAwKSBvcHRpb24uY2hvaWNlcyhmaWVsZC5jaG9pY2VzKTtcbiAgICBpZiAoZmFsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiBmaWVsZC5oZWxwRGVmYXVsdCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBsaXN0ZW5BZGRyZXNzKGZhbGxiYWNrKTtcbiAgICAgIG9wdGlvbi5kZWZhdWx0KGZhbGxiYWNrLCBhZGRyZXNzID8gc2hhcmVkT3B0aW9ucy5mb3JtYXRMaXN0ZW5BZGRyZXNzKGFkZHJlc3MpIDogdW5kZWZpbmVkKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgICAgb3B0aW9uLmFyZ1BhcnNlcigodmFsdWU6IHN0cmluZywgcHJldmlvdXM6IHVua25vd24pID0+XG4gICAgICAgIHByZXZpb3VzID09PSBmYWxsYmFjayB8fCAhQXJyYXkuaXNBcnJheShwcmV2aW91cykgPyBbdmFsdWVdIDogWy4uLnByZXZpb3VzLCB2YWx1ZV0sXG4gICAgICApO1xuICAgIH1cbiAgICBjb21tYW5kLmFkZE9wdGlvbihvcHRpb24pO1xuICAgIGlmIChmaWVsZC50eXBlID09PSBcImJvb2xlYW5cIiAmJiBvcHRpb24ubG9uZykge1xuICAgICAgY29tbWFuZC5hZGRPcHRpb24oXG4gICAgICAgIG5ldyBPcHRpb24oYC0tbm8tJHtvcHRpb24ubG9uZy5zbGljZSgyKX1gLCBgRGlzYWJsZSAke2ZpZWxkLmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCl9YCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29tbWFuZDtcbn1cblxuLyoqIE1lcmdlIENMSSB2YWx1ZXMgb3ZlciBsYXllcmVkIGNvbmZpZywgdGhlbiB2YWxpZGF0ZSBhbmQgZGVmYXVsdCB0aHJvdWdoIFpvZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3M8VFNjaGVtYSBleHRlbmRzIENsaU9iamVjdFNjaGVtYT4oXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHNjaGVtYTogVFNjaGVtYSxcbiAgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMgPSBib3VuZE9wdGlvbnMuZ2V0KGNvbW1hbmQpID8/IHt9LFxuKTogUmV0dXJuVHlwZTxUU2NoZW1hW1wicGFyc2VcIl0+IHtcbiAgY29uc3QgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcyhzY2hlbWEpKSB7XG4gICAgaWYgKGNvbW1hbmQuZ2V0T3B0aW9uVmFsdWVTb3VyY2UoZmllbGQua2V5KSA9PT0gXCJjbGlcIikge1xuICAgICAgdmFsdWVzW2ZpZWxkLmtleV0gPSBjb21tYW5kLmdldE9wdGlvblZhbHVlKGZpZWxkLmtleSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlZCA9IGNvbmZpZ1ZhbHVlKGZpZWxkLCBmaWVsZEVudktleXMoZmllbGQpLCBvcHRpb25zKTtcbiAgICBpZiAoc291cmNlZCAhPT0gdW5kZWZpbmVkKSB2YWx1ZXNbZmllbGQua2V5XSA9IHNvdXJjZWQ7XG4gIH1cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZSh2YWx1ZXMpIGFzIFJldHVyblR5cGU8VFNjaGVtYVtcInBhcnNlXCJdPjtcbn1cblxuLyoqIFBhcnNlIGEgc3RhbmRhbG9uZSBhcmd2IGFycmF5IHRocm91Z2ggQ29tbWFuZGVyIGFuZCBhbiBvd25pbmcgWm9kIHNjaGVtYS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3Y8VFNjaGVtYSBleHRlbmRzIENsaU9iamVjdFNjaGVtYT4oXG4gIHNjaGVtYTogVFNjaGVtYSxcbiAgYXJndjogcmVhZG9ubHkgc3RyaW5nW10gPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksXG4gIG9wdGlvbnM6IENsaUFyZ3NPcHRpb25zID0ge30sXG4pOiBSZXR1cm5UeXBlPFRTY2hlbWFbXCJwYXJzZVwiXT4ge1xuICBjb25zdCBjb21tYW5kID0gYWRkQXJncyhuZXcgQ29tbWFuZCgpLCBzY2hlbWEsIG9wdGlvbnMpO1xuICBjb21tYW5kLnBhcnNlKFsuLi5hcmd2XSwgeyBmcm9tOiBcInVzZXJcIiB9KTtcbiAgcmV0dXJuIHBhcnNlQXJncyhjb21tYW5kLCBzY2hlbWEsIG9wdGlvbnMpO1xufVxuXG4vKiogQ29udmVydCBzY2hlbWEgZGVmYXVsdHMgb3IgY29uY3JldGUgb3B0aW9uIHZhbHVlcyBpbnRvIENvbW1hbmRlciBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQXJncyhzb3VyY2U6IEFyZ3VtZW50U291cmNlKTogc3RyaW5nW10ge1xuICBpZiAoaXNDbGlPYmplY3RTY2hlbWEoc291cmNlKSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IHNvdXJjZS5wYXJzZSh7fSkgYXMgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICAgIHJldHVybiBmaWVsZHMoc291cmNlKS5mbGF0TWFwKChmaWVsZCkgPT5cbiAgICAgIGZpZWxkLmZsYWcgPT09IGZhbHNlID8gW10gOiB2YWx1ZUFyZ3VtZW50cyhmaWVsZC5rZXksIHZhbHVlc1tmaWVsZC5rZXldKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhzb3VyY2UpLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWVBcmd1bWVudHMoa2V5LCB2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBmaWVsZHMoc2NoZW1hOiBDbGlPYmplY3RTY2hlbWEpOiBGaWVsZFtdIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBzY2hlbWEudG9KU09OU2NoZW1hKCk7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBvYmplY3QuaXNSZWNvcmQoZG9jdW1lbnQpID8gZG9jdW1lbnQucHJvcGVydGllcyA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQocHJvcGVydGllcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiWm9kIENvbW1hbmRlciBiaW5kaW5nIHJlcXVpcmVzIGEgei5vYmplY3QoKSBzY2hlbWFcIik7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgYmluZCBDTEkgYXJndW1lbnQgXCIke2tleX1cImApO1xuICAgIH1cbiAgICBjb25zdCBqc29uID0gdmFsdWUgYXMgSnNvbkZpZWxkO1xuICAgIGNvbnN0IGNob2ljZXMgPVxuICAgICAganNvbi5lbnVtPy5tYXAoU3RyaW5nKSA/PyAoanNvbi5jb25zdCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogW1N0cmluZyhqc29uLmNvbnN0KV0pO1xuICAgIHJldHVybiB7XG4gICAgICBrZXksXG4gICAgICBkZXNjcmlwdGlvbjogdHlwZW9mIGpzb24uZGVzY3JpcHRpb24gPT09IFwic3RyaW5nXCIgPyBqc29uLmRlc2NyaXB0aW9uIDogXCJcIixcbiAgICAgIHR5cGU6IGpzb24udHlwZSxcbiAgICAgIGNob2ljZXMsXG4gICAgICBmYWxsYmFjazoganNvbi5kZWZhdWx0LFxuICAgICAgZW52OiBqc29uLmVudixcbiAgICAgIGZsYWc6IGpzb24uZmxhZyxcbiAgICAgIGhlbHBEZWZhdWx0OiBqc29uLmhlbHBEZWZhdWx0LFxuICAgICAgc2hvcnQ6IGpzb24uc2hvcnQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xpT2JqZWN0U2NoZW1hKHZhbHVlOiBBcmd1bWVudFNvdXJjZSk6IHZhbHVlIGlzIENsaU9iamVjdFNjaGVtYSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUucGFyc2UgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdmFsdWUudG9KU09OU2NoZW1hID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmZ1bmN0aW9uIGFyZ0ZsYWdzKGZpZWxkOiBGaWVsZCwgc2hvcnQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IGxvbmcgPSBgLS0ke3N0cmluZ1V0aWxzLnRvU2x1ZyhmaWVsZC5rZXkpfWA7XG4gIGNvbnN0IHZhbHVlID0gZmllbGQudHlwZSA9PT0gXCJib29sZWFuXCIgPyBcIlwiIDogXCIgPHZhbHVlPlwiO1xuICBpZiAoc2hvcnQpIHJldHVybiBgLSR7c2hvcnR9LCAke2xvbmd9JHt2YWx1ZX1gO1xuICByZXR1cm4gYCR7bG9uZ30ke3ZhbHVlfWA7XG59XG5cbmZ1bmN0aW9uIGZpZWxkU2hvcnRGbGFncyhmaWVsZHM6IHJlYWRvbmx5IEZpZWxkW10pOiBSZWFkb25seU1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBjb25zdCByZXNlcnZlZCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbXCJoXCIsIFwiaGVscFwiXV0pO1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIGlmIChmaWVsZC5zaG9ydCA9PT0gZmFsc2UgfHwgZmllbGQuc2hvcnQgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgaWYgKCEvXltBLVphLXpdJC8udGVzdChmaWVsZC5zaG9ydCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFNob3J0IGZsYWcgZm9yIFwiJHtmaWVsZC5rZXl9XCIgbXVzdCBiZSBvbmUgbGV0dGVyIG9yIGZhbHNlYCk7XG4gICAgfVxuICAgIGNvbnN0IHNob3J0ID0gZmllbGQuc2hvcnQudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBleGlzdGluZyA9IHJlc2VydmVkLmdldChzaG9ydCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBTaG9ydCBmbGFnIC0ke3Nob3J0fSBpcyBzaGFyZWQgYnkgXCIke2V4aXN0aW5nfVwiIGFuZCBcIiR7ZmllbGQua2V5fVwiYCk7XG4gICAgfVxuICAgIHJlc2VydmVkLnNldChzaG9ydCwgZmllbGQua2V5KTtcbiAgICByZXN1bHQuc2V0KGZpZWxkLmtleSwgc2hvcnQpO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBuZXcgTWFwPHN0cmluZywgRmllbGRbXT4oKTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGQuc2hvcnQgIT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgY29uc3Qgc2hvcnQgPSBbLi4uc3RyaW5nVXRpbHMudG9rZW5pemUoZmllbGQua2V5KV1bMF0/LlswXT8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXNob3J0IHx8IHJlc2VydmVkLmhhcyhzaG9ydCkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IG1hdGNoaW5nID0gY2FuZGlkYXRlcy5nZXQoc2hvcnQpID8/IFtdO1xuICAgIG1hdGNoaW5nLnB1c2goZmllbGQpO1xuICAgIGNhbmRpZGF0ZXMuc2V0KHNob3J0LCBtYXRjaGluZyk7XG4gIH1cbiAgZm9yIChjb25zdCBbc2hvcnQsIG1hdGNoaW5nXSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA9PT0gMSkgcmVzdWx0LnNldChtYXRjaGluZ1swXSEua2V5LCBzaG9ydCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZmllbGRFbnZLZXlzKGZpZWxkOiBGaWVsZCk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgaWYgKHR5cGVvZiBmaWVsZC5lbnYgPT09IFwic3RyaW5nXCIpIHJldHVybiBbZmllbGQuZW52XTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQuZW52KSkgcmV0dXJuIFsuLi5maWVsZC5lbnZdO1xuICByZXR1cm4gY29uZmlnVXRpbHMuZW52aXJvbm1lbnRLZXlzKGZpZWxkLmtleSk7XG59XG5cbmZ1bmN0aW9uIGVudkFyZ05hbWUoZmllbGQ6IEZpZWxkLCBlbnZLZXlzOiByZWFkb25seSBzdHJpbmdbXSwgb3B0aW9uczogQ2xpQXJnc09wdGlvbnMpOiBzdHJpbmcge1xuICBpZiAoZmllbGQuZW52ICE9PSB1bmRlZmluZWQpIHJldHVybiBlbnZLZXlzWzBdID8/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.154",
|
|
27
|
+
"@dbx-tools/shared-core": "^0.9.154",
|
|
28
28
|
"commander": "^15.0.0",
|
|
29
29
|
"zod": "4.3.6"
|
|
30
30
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"./package.json": "./package.json"
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
-
"version": "0.9.
|
|
53
|
+
"version": "0.9.154",
|
|
54
54
|
"types": "./lib/index.d.ts",
|
|
55
55
|
"dbxToolsConfig": {
|
|
56
56
|
"tags": [
|
package/src/args.ts
CHANGED
|
@@ -115,6 +115,17 @@ export function parseArgs<TSchema extends CliObjectSchema>(
|
|
|
115
115
|
return schema.parse(values) as ReturnType<TSchema["parse"]>;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
/** Parse a standalone argv array through Commander and an owning Zod schema. */
|
|
119
|
+
export function parseArgv<TSchema extends CliObjectSchema>(
|
|
120
|
+
schema: TSchema,
|
|
121
|
+
argv: readonly string[] = process.argv.slice(2),
|
|
122
|
+
options: CliArgsOptions = {},
|
|
123
|
+
): ReturnType<TSchema["parse"]> {
|
|
124
|
+
const command = addArgs(new Command(), schema, options);
|
|
125
|
+
command.parse([...argv], { from: "user" });
|
|
126
|
+
return parseArgs(command, schema, options);
|
|
127
|
+
}
|
|
128
|
+
|
|
118
129
|
/** Convert schema defaults or concrete option values into Commander arguments. */
|
|
119
130
|
export function serializeArgs(source: ArgumentSource): string[] {
|
|
120
131
|
if (isCliObjectSchema(source)) {
|