parse-my-command 0.1.9 → 0.2.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/README.md CHANGED
@@ -11,7 +11,7 @@ Parse `argv` with **Commander.js** without executing the command
11
11
  <hr />
12
12
 
13
13
  [Commander.js](https://github.com/tj/commander.js) doesn't support parsing
14
- `argv` without executing the command. This package provides a workaround for that.
14
+ `argv` without executing the command. This module provides a workaround for that.
15
15
 
16
16
  ## Installation
17
17
 
@@ -41,14 +41,17 @@ const childCommand = rootCommand
41
41
 
42
42
  const argv = ["node", "index.mjs", "-a", "value1", "child", "-b", "value2"];
43
43
 
44
- const { matchedCommand, providedOptions, missingOptions } = partialParse(
45
- rootCommand,
46
- argv,
47
- );
44
+ const {
45
+ matchedCommand,
46
+ providedOptions,
47
+ missingOptions,
48
+ providedOptionsSources,
49
+ } = partialParse(rootCommand, argv);
48
50
 
49
51
  console.log(matchedCommand.name()); // child
50
52
  console.log(providedOptions.get(childCommand)); // { optionB: 'value2' }
51
53
  console.log(missingOptions.get(childCommand)); // Set(1) { 'optionC' }
54
+ console.log(providedOptionsSources.get(childCommand)); // Map(1) { 'optionB' => 'cli' }
52
55
  ```
53
56
 
54
57
  More examples can be found in the [examples](/examples/) directory.
@@ -62,7 +65,8 @@ More examples can be found in the [examples](/examples/) directory.
62
65
  would throw an error (e.g. when displaying help)
63
66
  2. In all cases where your command would throw an error before an action is
64
67
  executed except for when a required `Option` (not to be confused with an
65
- `Argument`) is missing (missing options are returned in the result instead).
68
+ `Argument`) is missing (missing options are returned in the result object
69
+ instead).
66
70
 
67
71
  ## How It Works and Limitations
68
72
 
@@ -72,6 +76,6 @@ subcommands, setting the actions to no-op functions, and then parsing the
72
76
 
73
77
  1. The implementation might break if Commander.js changes its internals
74
78
  2. Custom argument and option processors are assumed to be pure functions
75
- 3. Hooks attached to the commands will not be called
76
- 4. Some edge cases might not be handled correctly (Please feel free to open an
77
- issue/PR if you find one)
79
+ 3. Hook listeners attached to the commands will be ignored
80
+ 4. Some edge cases might not be handled correctly (please feel free to open an
81
+ issue/PR in case you find any)
package/dist/index.cjs CHANGED
@@ -48,8 +48,8 @@ var findMissingOptions = (command, providedOptionsByCommand) => {
48
48
  const missingOptions = /* @__PURE__ */ new Set();
49
49
  const providedOptions = providedOptionsByCommand.get(currentCommand);
50
50
  for (const option of currentCommand.options) {
51
- const key = (0, import_camelcase.default)(option.long ?? option.short);
52
- if (providedOptions?.[key]) {
51
+ const key = option.negate ? (0, import_camelcase.default)(option.long.replace(/^--no-/, "")) : (0, import_camelcase.default)(option.long ?? option.short);
52
+ if (providedOptions?.[key] !== void 0) {
53
53
  continue;
54
54
  }
55
55
  missingOptions.add(key);
@@ -73,6 +73,12 @@ var copyCommandSettings = (source, target) => {
73
73
  }
74
74
  target.name(source.name());
75
75
  target.aliases(source.aliases());
76
+ target.version(
77
+ source.version(),
78
+ source.options.find(
79
+ (option) => option.attributeName() === source._versionOptionName
80
+ )?.flags
81
+ );
76
82
  };
77
83
  var disableCommandOutput = (command) => {
78
84
  command.configureOutput({
@@ -101,8 +107,17 @@ var cloneOption = (option) => {
101
107
  };
102
108
  var partialParse = (command, argv, options) => {
103
109
  const providedOptions = /* @__PURE__ */ new Map();
110
+ const providedOptionsSources = /* @__PURE__ */ new Map();
104
111
  const commandsMap = /* @__PURE__ */ new Map();
105
112
  let matchedCommand;
113
+ const setProvidedOptionSource = (command2, optionKey, source) => {
114
+ if (!source) {
115
+ return;
116
+ }
117
+ const sourcesMap = providedOptionsSources.get(command2) ?? /* @__PURE__ */ new Map();
118
+ sourcesMap.set(optionKey, source);
119
+ providedOptionsSources.set(command2, sourcesMap);
120
+ };
106
121
  const createParserCommand = (parserCommand2, command2) => {
107
122
  commandsMap.set(parserCommand2, command2);
108
123
  copyCommandSettings(command2, parserCommand2);
@@ -112,14 +127,29 @@ var partialParse = (command, argv, options) => {
112
127
  parserCommand2.addOption(cloneOption(option));
113
128
  }
114
129
  parserCommand2.hook("preSubcommand", (thisCommand, actionCommand) => {
115
- providedOptions.set(commandsMap.get(parserCommand2), thisCommand.opts());
116
- providedOptions.set(commandsMap.get(actionCommand), thisCommand.opts());
130
+ for (const cmd of [thisCommand, actionCommand]) {
131
+ providedOptions.set(commandsMap.get(cmd), cmd.opts());
132
+ for (const optionKey of Object.keys(cmd.opts())) {
133
+ setProvidedOptionSource(
134
+ cmd,
135
+ optionKey,
136
+ cmd.getOptionValueSource(optionKey)
137
+ );
138
+ }
139
+ }
117
140
  });
118
141
  parserCommand2.action(() => {
119
142
  providedOptions.set(
120
143
  commandsMap.get(parserCommand2),
121
144
  parserCommand2.opts()
122
145
  );
146
+ for (const optionKey of Object.keys(parserCommand2.opts())) {
147
+ setProvidedOptionSource(
148
+ commandsMap.get(parserCommand2),
149
+ optionKey,
150
+ parserCommand2.getOptionValueSource(optionKey)
151
+ );
152
+ }
123
153
  matchedCommand = command2;
124
154
  });
125
155
  for (const subcommand of command2.commands) {
@@ -128,17 +158,19 @@ var partialParse = (command, argv, options) => {
128
158
  }
129
159
  return parserCommand2;
130
160
  };
131
- const parserCommand = createParserCommand(
132
- new import_commander.Command().exitOverride(),
133
- command
134
- );
161
+ const parserCommand = createParserCommand(new import_commander.Command(), command);
135
162
  parserCommand.parse(argv, options);
136
163
  const missingOptions = matchedCommand ? findMissingOptions(matchedCommand, providedOptions) : /* @__PURE__ */ new Map();
137
- return { matchedCommand, missingOptions, providedOptions };
164
+ return {
165
+ matchedCommand,
166
+ missingOptions,
167
+ providedOptions,
168
+ providedOptionsSources
169
+ };
138
170
  };
139
171
  // Annotate the CommonJS export names for ESM import in node:
140
172
  0 && (module.exports = {
141
173
  findMissingOptions,
142
174
  partialParse
143
175
  });
144
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9ub29wLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBub29wIH0gZnJvbSBcIi4vbm9vcFwiO1xuaW1wb3J0IGNhbWVsQ2FzZSBmcm9tIFwiY2FtZWxjYXNlXCI7XG5pbXBvcnQge1xuICB0eXBlIE9wdGlvblZhbHVlcyxcbiAgQ29tbWFuZCxcbiAgdHlwZSBQYXJzZU9wdGlvbnMsXG4gIE9wdGlvbixcbn0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5leHBvcnQgY29uc3QgZmluZE1pc3NpbmdPcHRpb25zID0gKFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBwcm92aWRlZE9wdGlvbnNCeUNvbW1hbmQ6IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+LFxuKSA9PiB7XG4gIGNvbnN0IG1pc3NpbmdPcHRpb25zQnlDb21tYW5kID0gbmV3IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBsZXQgY3VycmVudENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQgfCBudWxsID0gY29tbWFuZDtcblxuICB3aGlsZSAoY3VycmVudENvbW1hbmQpIHtcbiAgICBjb25zdCBtaXNzaW5nT3B0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb3ZpZGVkT3B0aW9ucyA9IHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZC5nZXQoY3VycmVudENvbW1hbmQpO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGN1cnJlbnRDb21tYW5kLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGNhbWVsQ2FzZSgob3B0aW9uLmxvbmcgPz8gb3B0aW9uLnNob3J0KSEpO1xuICAgICAgaWYgKHByb3ZpZGVkT3B0aW9ucz8uW2tleV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1pc3NpbmdPcHRpb25zLmFkZChrZXkpO1xuICAgIH1cblxuICAgIG1pc3NpbmdPcHRpb25zQnlDb21tYW5kLnNldChjdXJyZW50Q29tbWFuZCwgbWlzc2luZ09wdGlvbnMpO1xuICAgIGN1cnJlbnRDb21tYW5kID0gY3VycmVudENvbW1hbmQucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG1pc3NpbmdPcHRpb25zQnlDb21tYW5kO1xufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFBhcnNlUmVzdWx0ID0ge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgd2hvc2UgYWN0aW9uIHdpbGwgYmUgZXhlY3V0ZWRcbiAgICovXG4gIG1hdGNoZWRDb21tYW5kOiBDb21tYW5kIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQSBtYXAgb2YgY29tbWFuZHMgdG8gYSBzZXQgb2YgbWlzc2luZyBvcHRpb25zIGZvciB0aGF0IGNvbW1hbmRcbiAgICovXG4gIG1pc3NpbmdPcHRpb25zOiBNYXA8Q29tbWFuZCwgU2V0PHN0cmluZz4+O1xuICAvKipcbiAgICogQSBtYXAgb2YgY29tbWFuZHMgdG8gdGhlIG9wdGlvbnMgcHJvdmlkZWQgZm9yIHRoYXQgY29tbWFuZFxuICAgKi9cbiAgcHJvdmlkZWRPcHRpb25zOiBNYXA8Q29tbWFuZCwgT3B0aW9uVmFsdWVzPjtcbn07XG5cbmNvbnN0IGNvcHlDb21tYW5kU2V0dGluZ3MgPSAoc291cmNlOiBDb21tYW5kLCB0YXJnZXQ6IENvbW1hbmQpID0+IHtcbiAgZm9yIChjb25zdCBrZXlzVG9Db3B5IG9mIFtcbiAgICBcIl9hbGxvd0V4Y2Vzc0FyZ3VtZW50c1wiLFxuICAgIFwiX2FsbG93VW5rbm93bk9wdGlvblwiLFxuICAgIFwiX2FyZ3NcIixcbiAgICBcIl9jb21iaW5lRmxhZ0FuZE9wdGlvbmFsVmFsdWVcIixcbiAgICBcIl9kZWZhdWx0Q29tbWFuZE5hbWVcIixcbiAgICBcIl9lbmFibGVQb3NpdGlvbmFsT3B0aW9uc1wiLFxuICAgIFwiX3Bhc3NUaHJvdWdoT3B0aW9uc1wiLFxuICBdIGFzIGNvbnN0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICh0YXJnZXQgYXMgYW55KVtrZXlzVG9Db3B5XSA9IChzb3VyY2UgYXMgYW55KVtrZXlzVG9Db3B5XTtcbiAgfVxuXG4gIHRhcmdldC5uYW1lKHNvdXJjZS5uYW1lKCkpO1xuICB0YXJnZXQuYWxpYXNlcyhzb3VyY2UuYWxpYXNlcygpKTtcbn07XG5cbmNvbnN0IGRpc2FibGVDb21tYW5kT3V0cHV0ID0gKGNvbW1hbmQ6IENvbW1hbmQpID0+IHtcbiAgY29tbWFuZC5jb25maWd1cmVPdXRwdXQoe1xuICAgIHdyaXRlT3V0OiBub29wLFxuICAgIHdyaXRlRXJyOiBub29wLFxuICAgIG91dHB1dEVycm9yOiBub29wLFxuICB9KTtcbn07XG5cbmNvbnN0IGNsb25lT3B0aW9uID0gKG9wdGlvbjogT3B0aW9uKSA9PiB7XG4gIGNvbnN0IG5ld09wdGlvbiA9IG5ldyBPcHRpb24ob3B0aW9uLmZsYWdzLCBvcHRpb24uZGVzY3JpcHRpb24pO1xuICBuZXdPcHRpb24ubWFrZU9wdGlvbk1hbmRhdG9yeShmYWxzZSk7XG4gIG5ld09wdGlvbi5kZWZhdWx0KG9wdGlvbi5kZWZhdWx0VmFsdWUsIG9wdGlvbi5kZWZhdWx0VmFsdWVEZXNjcmlwdGlvbik7XG5cbiAgbmV3T3B0aW9uLnByZXNldCgob3B0aW9uIGFzIE9wdGlvbiAmIHsgcHJlc2V0QXJnOiB1bmtub3duIH0pLnByZXNldEFyZyk7XG4gIG5ld09wdGlvbi5lbnYoKG9wdGlvbiBhcyBPcHRpb24gJiB7IGVudlZhcjogc3RyaW5nIH0pLmVudlZhcik7XG4gIGlmIChvcHRpb24ucGFyc2VBcmcpIHtcbiAgICBuZXdPcHRpb24uYXJnUGFyc2VyKG9wdGlvbi5wYXJzZUFyZyk7XG4gIH1cblxuICBpZiAob3B0aW9uLmFyZ0Nob2ljZXMpIHtcbiAgICBuZXdPcHRpb24uY2hvaWNlcyhvcHRpb24uYXJnQ2hvaWNlcyk7XG4gIH1cblxuICBuZXdPcHRpb24uY29uZmxpY3RzKFxuICAgIChvcHRpb24gYXMgT3B0aW9uICYgeyBjb25mbGljdHNXaXRoOiBzdHJpbmdbXSB9KS5jb25mbGljdHNXaXRoLFxuICApO1xuXG4gIChuZXdPcHRpb24gYXMgT3B0aW9uICYgeyBpbXBsaWVkOiB1bmtub3duIH0pLmltcGxpZWQgPSAoXG4gICAgb3B0aW9uIGFzIE9wdGlvbiAmIHsgaW1wbGllZDogdW5rbm93biB9XG4gICkuaW1wbGllZDtcblxuICByZXR1cm4gbmV3T3B0aW9uO1xufTtcblxuLyoqXG4gKiBQYXJ0aWFsbHkgcGFyc2UgYXJndiBmb3IgYSBjb21tYW5kIHdpdGhvdXQgZXhlY3V0aW5nIHRoZSBhY3Rpb24uIEBzZWUge0BsaW5rIENvbW1hbmQucGFyc2V9XG4gKlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hdGNoZWQgY29tbWFuZCwgdGhlIHByb3ZpZGVkIG9wdGlvbnMsIGFuZCB0aGUgbWlzc2luZyBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgcGFydGlhbFBhcnNlID0gKFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBhcmd2OiByZWFkb25seSBzdHJpbmdbXSxcbiAgb3B0aW9ucz86IFBhcnNlT3B0aW9ucyxcbik6IFBhcnRpYWxQYXJzZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHByb3ZpZGVkT3B0aW9ucyA9IG5ldyBNYXA8Q29tbWFuZCwgT3B0aW9uVmFsdWVzPigpO1xuICBjb25zdCBjb21tYW5kc01hcCA9IG5ldyBNYXA8Q29tbWFuZCwgQ29tbWFuZD4oKTtcbiAgbGV0IG1hdGNoZWRDb21tYW5kOiBDb21tYW5kIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNyZWF0ZVBhcnNlckNvbW1hbmQgPSAocGFyc2VyQ29tbWFuZDogQ29tbWFuZCwgY29tbWFuZDogQ29tbWFuZCkgPT4ge1xuICAgIGNvbW1hbmRzTWFwLnNldChwYXJzZXJDb21tYW5kLCBjb21tYW5kKTtcblxuICAgIGNvcHlDb21tYW5kU2V0dGluZ3MoY29tbWFuZCwgcGFyc2VyQ29tbWFuZCk7XG4gICAgZGlzYWJsZUNvbW1hbmRPdXRwdXQocGFyc2VyQ29tbWFuZCk7XG4gICAgcGFyc2VyQ29tbWFuZC5leGl0T3ZlcnJpZGUoKTtcblxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGNvbW1hbmQub3B0aW9ucykge1xuICAgICAgcGFyc2VyQ29tbWFuZC5hZGRPcHRpb24oY2xvbmVPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcGFyc2VyQ29tbWFuZC5ob29rKFwicHJlU3ViY29tbWFuZFwiLCAodGhpc0NvbW1hbmQsIGFjdGlvbkNvbW1hbmQpID0+IHtcbiAgICAgIHByb3ZpZGVkT3B0aW9ucy5zZXQoY29tbWFuZHNNYXAuZ2V0KHBhcnNlckNvbW1hbmQpISwgdGhpc0NvbW1hbmQub3B0cygpKTtcbiAgICAgIHByb3ZpZGVkT3B0aW9ucy5zZXQoY29tbWFuZHNNYXAuZ2V0KGFjdGlvbkNvbW1hbmQpISwgdGhpc0NvbW1hbmQub3B0cygpKTtcbiAgICB9KTtcblxuICAgIHBhcnNlckNvbW1hbmQuYWN0aW9uKCgpID0+IHtcbiAgICAgIHByb3ZpZGVkT3B0aW9ucy5zZXQoXG4gICAgICAgIGNvbW1hbmRzTWFwLmdldChwYXJzZXJDb21tYW5kKSEsXG4gICAgICAgIHBhcnNlckNvbW1hbmQub3B0cygpLFxuICAgICAgKTtcbiAgICAgIG1hdGNoZWRDb21tYW5kID0gY29tbWFuZDtcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3ViY29tbWFuZCBvZiBjb21tYW5kLmNvbW1hbmRzIGFzIENvbW1hbmRbXSkge1xuICAgICAgY29uc3QgcGFyc2VyU3ViY29tbWFuZCA9IHBhcnNlckNvbW1hbmQuY29tbWFuZChzdWJjb21tYW5kLm5hbWUoKSk7XG4gICAgICBjcmVhdGVQYXJzZXJDb21tYW5kKHBhcnNlclN1YmNvbW1hbmQsIHN1YmNvbW1hbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZXJDb21tYW5kO1xuICB9O1xuXG4gIGNvbnN0IHBhcnNlckNvbW1hbmQgPSBjcmVhdGVQYXJzZXJDb21tYW5kKFxuICAgIG5ldyBDb21tYW5kKCkuZXhpdE92ZXJyaWRlKCksXG4gICAgY29tbWFuZCxcbiAgKTtcbiAgcGFyc2VyQ29tbWFuZC5wYXJzZShhcmd2LCBvcHRpb25zKTtcblxuICBjb25zdCBtaXNzaW5nT3B0aW9ucyA9IG1hdGNoZWRDb21tYW5kXG4gICAgPyBmaW5kTWlzc2luZ09wdGlvbnMobWF0Y2hlZENvbW1hbmQsIHByb3ZpZGVkT3B0aW9ucylcbiAgICA6IG5ldyBNYXA8Q29tbWFuZCwgU2V0PHN0cmluZz4+KCk7XG5cbiAgcmV0dXJuIHsgbWF0Y2hlZENvbW1hbmQsIG1pc3NpbmdPcHRpb25zLCBwcm92aWRlZE9wdGlvbnMgfTtcbn07XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuZXhwb3J0IGNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNDTyxJQUFNLE9BQU8sTUFBTTtBQUFDOzs7QURBM0IsdUJBQXNCO0FBQ3RCLHVCQUtPO0FBRUEsSUFBTSxxQkFBcUIsQ0FDaEMsU0FDQSw2QkFDRztBQUNILFFBQU0sMEJBQTBCLG9CQUFJLElBQTBCO0FBRzlELE1BQUksaUJBQTZDO0FBRWpELFNBQU8sZ0JBQWdCO0FBQ3JCLFVBQU0saUJBQWlCLG9CQUFJLElBQVk7QUFDdkMsVUFBTSxrQkFBa0IseUJBQXlCLElBQUksY0FBYztBQUNuRSxlQUFXLFVBQVUsZUFBZSxTQUFTO0FBQzNDLFlBQU0sVUFBTSxpQkFBQUEsU0FBVyxPQUFPLFFBQVEsT0FBTyxLQUFPO0FBQ3BELFVBQUksa0JBQWtCLEdBQUcsR0FBRztBQUMxQjtBQUFB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
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9ub29wLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBub29wIH0gZnJvbSBcIi4vbm9vcC50c1wiO1xuaW1wb3J0IGNhbWVsQ2FzZSBmcm9tIFwiY2FtZWxjYXNlXCI7XG5pbXBvcnQge1xuICB0eXBlIE9wdGlvblZhbHVlcyxcbiAgQ29tbWFuZCxcbiAgdHlwZSBQYXJzZU9wdGlvbnMsXG4gIE9wdGlvbixcbiAgdHlwZSBPcHRpb25WYWx1ZVNvdXJjZSxcbn0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5leHBvcnQgY29uc3QgZmluZE1pc3NpbmdPcHRpb25zID0gKFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBwcm92aWRlZE9wdGlvbnNCeUNvbW1hbmQ6IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+LFxuKSA9PiB7XG4gIGNvbnN0IG1pc3NpbmdPcHRpb25zQnlDb21tYW5kID0gbmV3IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBsZXQgY3VycmVudENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQgfCBudWxsID0gY29tbWFuZDtcblxuICB3aGlsZSAoY3VycmVudENvbW1hbmQpIHtcbiAgICBjb25zdCBtaXNzaW5nT3B0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb3ZpZGVkT3B0aW9ucyA9IHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZC5nZXQoY3VycmVudENvbW1hbmQpO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGN1cnJlbnRDb21tYW5kLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IG9wdGlvbi5uZWdhdGVcbiAgICAgICAgPyBjYW1lbENhc2Uob3B0aW9uLmxvbmchLnJlcGxhY2UoL14tLW5vLS8sIFwiXCIpKVxuICAgICAgICA6IGNhbWVsQ2FzZSgob3B0aW9uLmxvbmcgPz8gb3B0aW9uLnNob3J0KSEpO1xuXG4gICAgICBpZiAocHJvdmlkZWRPcHRpb25zPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBtaXNzaW5nT3B0aW9ucy5hZGQoa2V5KTtcbiAgICB9XG5cbiAgICBtaXNzaW5nT3B0aW9uc0J5Q29tbWFuZC5zZXQoY3VycmVudENvbW1hbmQsIG1pc3NpbmdPcHRpb25zKTtcbiAgICBjdXJyZW50Q29tbWFuZCA9IGN1cnJlbnRDb21tYW5kLnBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBtaXNzaW5nT3B0aW9uc0J5Q29tbWFuZDtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxQYXJzZVJlc3VsdCA9IHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHdob3NlIGFjdGlvbiB3aWxsIGJlIGV4ZWN1dGVkXG4gICAqL1xuICBtYXRjaGVkQ29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGNvbW1hbmRzIHRvIGEgc2V0IG9mIG1pc3Npbmcgb3B0aW9ucyBmb3IgdGhhdCBjb21tYW5kXG4gICAqL1xuICBtaXNzaW5nT3B0aW9uczogTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGNvbW1hbmRzIHRvIHRoZSBvcHRpb25zIHByb3ZpZGVkIGZvciB0aGF0IGNvbW1hbmRcbiAgICovXG4gIHByb3ZpZGVkT3B0aW9uczogTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz47XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byBhIG1hcCBvZiBvcHRpb24ga2V5cyB0byB0aGUgc291cmNlIG9mIHRoZSBvcHRpb24gdmFsdWVcbiAgICovXG4gIHByb3ZpZGVkT3B0aW9uc1NvdXJjZXM6IE1hcDxDb21tYW5kLCBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+Pjtcbn07XG5cbmNvbnN0IGNvcHlDb21tYW5kU2V0dGluZ3MgPSAoc291cmNlOiBDb21tYW5kLCB0YXJnZXQ6IENvbW1hbmQpID0+IHtcbiAgZm9yIChjb25zdCBrZXlzVG9Db3B5IG9mIFtcbiAgICBcIl9hbGxvd0V4Y2Vzc0FyZ3VtZW50c1wiLFxuICAgIFwiX2FsbG93VW5rbm93bk9wdGlvblwiLFxuICAgIFwiX2FyZ3NcIixcbiAgICBcIl9jb21iaW5lRmxhZ0FuZE9wdGlvbmFsVmFsdWVcIixcbiAgICBcIl9kZWZhdWx0Q29tbWFuZE5hbWVcIixcbiAgICBcIl9lbmFibGVQb3NpdGlvbmFsT3B0aW9uc1wiLFxuICAgIFwiX3Bhc3NUaHJvdWdoT3B0aW9uc1wiLFxuICBdIGFzIGNvbnN0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICh0YXJnZXQgYXMgYW55KVtrZXlzVG9Db3B5XSA9IChzb3VyY2UgYXMgYW55KVtrZXlzVG9Db3B5XTtcbiAgfVxuXG4gIHRhcmdldC5uYW1lKHNvdXJjZS5uYW1lKCkpO1xuICB0YXJnZXQuYWxpYXNlcyhzb3VyY2UuYWxpYXNlcygpKTtcbiAgdGFyZ2V0LnZlcnNpb24oXG4gICAgKHNvdXJjZSBhcyBDb21tYW5kICYgeyB2ZXJzaW9uOiAoKSA9PiBzdHJpbmcgfSkudmVyc2lvbigpLFxuICAgIHNvdXJjZS5vcHRpb25zLmZpbmQoXG4gICAgICAob3B0aW9uKSA9PlxuICAgICAgICBvcHRpb24uYXR0cmlidXRlTmFtZSgpID09PVxuICAgICAgICAoc291cmNlIGFzIENvbW1hbmQgJiB7IF92ZXJzaW9uT3B0aW9uTmFtZTogc3RyaW5nIH0pLl92ZXJzaW9uT3B0aW9uTmFtZSxcbiAgICApPy5mbGFncyxcbiAgKTtcbn07XG5cbmNvbnN0IGRpc2FibGVDb21tYW5kT3V0cHV0ID0gKGNvbW1hbmQ6IENvbW1hbmQpID0+IHtcbiAgY29tbWFuZC5jb25maWd1cmVPdXRwdXQoe1xuICAgIHdyaXRlT3V0OiBub29wLFxuICAgIHdyaXRlRXJyOiBub29wLFxuICAgIG91dHB1dEVycm9yOiBub29wLFxuICB9KTtcbn07XG5cbmNvbnN0IGNsb25lT3B0aW9uID0gKG9wdGlvbjogT3B0aW9uKSA9PiB7XG4gIGNvbnN0IG5ld09wdGlvbiA9IG5ldyBPcHRpb24ob3B0aW9uLmZsYWdzLCBvcHRpb24uZGVzY3JpcHRpb24pO1xuICBuZXdPcHRpb24ubWFrZU9wdGlvbk1hbmRhdG9yeShmYWxzZSk7XG4gIG5ld09wdGlvbi5kZWZhdWx0KG9wdGlvbi5kZWZhdWx0VmFsdWUsIG9wdGlvbi5kZWZhdWx0VmFsdWVEZXNjcmlwdGlvbik7XG5cbiAgbmV3T3B0aW9uLnByZXNldCgob3B0aW9uIGFzIE9wdGlvbiAmIHsgcHJlc2V0QXJnOiB1bmtub3duIH0pLnByZXNldEFyZyk7XG4gIG5ld09wdGlvbi5lbnYoKG9wdGlvbiBhcyBPcHRpb24gJiB7IGVudlZhcjogc3RyaW5nIH0pLmVudlZhcik7XG4gIGlmIChvcHRpb24ucGFyc2VBcmcpIHtcbiAgICBuZXdPcHRpb24uYXJnUGFyc2VyKG9wdGlvbi5wYXJzZUFyZyk7XG4gIH1cblxuICBpZiAob3B0aW9uLmFyZ0Nob2ljZXMpIHtcbiAgICBuZXdPcHRpb24uY2hvaWNlcyhvcHRpb24uYXJnQ2hvaWNlcyk7XG4gIH1cblxuICBuZXdPcHRpb24uY29uZmxpY3RzKFxuICAgIChvcHRpb24gYXMgT3B0aW9uICYgeyBjb25mbGljdHNXaXRoOiBzdHJpbmdbXSB9KS5jb25mbGljdHNXaXRoLFxuICApO1xuXG4gIChuZXdPcHRpb24gYXMgT3B0aW9uICYgeyBpbXBsaWVkOiB1bmtub3duIH0pLmltcGxpZWQgPSAoXG4gICAgb3B0aW9uIGFzIE9wdGlvbiAmIHsgaW1wbGllZDogdW5rbm93biB9XG4gICkuaW1wbGllZDtcblxuICByZXR1cm4gbmV3T3B0aW9uO1xufTtcblxuLyoqXG4gKiBQYXJ0aWFsbHkgcGFyc2UgYXJndiBmb3IgYSBjb21tYW5kIHdpdGhvdXQgZXhlY3V0aW5nIHRoZSBhY3Rpb24uIEBzZWUge0BsaW5rIENvbW1hbmQucGFyc2V9XG4gKlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hdGNoZWQgY29tbWFuZCwgdGhlIHByb3ZpZGVkIG9wdGlvbnMsIGFuZCB0aGUgbWlzc2luZyBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgcGFydGlhbFBhcnNlID0gKFxuICBjb21tYW5kOiBDb21tYW5kLFxuICBhcmd2OiByZWFkb25seSBzdHJpbmdbXSxcbiAgb3B0aW9ucz86IFBhcnNlT3B0aW9ucyxcbik6IFBhcnRpYWxQYXJzZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHByb3ZpZGVkT3B0aW9ucyA9IG5ldyBNYXA8Q29tbWFuZCwgT3B0aW9uVmFsdWVzPigpO1xuICBjb25zdCBwcm92aWRlZE9wdGlvbnNTb3VyY2VzID0gbmV3IE1hcDxcbiAgICBDb21tYW5kLFxuICAgIE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgPigpO1xuICBjb25zdCBjb21tYW5kc01hcCA9IG5ldyBNYXA8Q29tbWFuZCwgQ29tbWFuZD4oKTtcbiAgbGV0IG1hdGNoZWRDb21tYW5kOiBDb21tYW5kIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHNldFByb3ZpZGVkT3B0aW9uU291cmNlID0gKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgb3B0aW9uS2V5OiBzdHJpbmcsXG4gICAgc291cmNlOiBPcHRpb25WYWx1ZVNvdXJjZSB8IHVuZGVmaW5lZCxcbiAgKSA9PiB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VzTWFwID1cbiAgICAgIHByb3ZpZGVkT3B0aW9uc1NvdXJjZXMuZ2V0KGNvbW1hbmQpID8/IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgc291cmNlc01hcC5zZXQob3B0aW9uS2V5LCBzb3VyY2UpO1xuICAgIHByb3ZpZGVkT3B0aW9uc1NvdXJjZXMuc2V0KGNvbW1hbmQsIHNvdXJjZXNNYXApO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZVBhcnNlckNvbW1hbmQgPSAocGFyc2VyQ29tbWFuZDogQ29tbWFuZCwgY29tbWFuZDogQ29tbWFuZCkgPT4ge1xuICAgIGNvbW1hbmRzTWFwLnNldChwYXJzZXJDb21tYW5kLCBjb21tYW5kKTtcblxuICAgIGNvcHlDb21tYW5kU2V0dGluZ3MoY29tbWFuZCwgcGFyc2VyQ29tbWFuZCk7XG4gICAgZGlzYWJsZUNvbW1hbmRPdXRwdXQocGFyc2VyQ29tbWFuZCk7XG4gICAgcGFyc2VyQ29tbWFuZC5leGl0T3ZlcnJpZGUoKTtcblxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGNvbW1hbmQub3B0aW9ucykge1xuICAgICAgcGFyc2VyQ29tbWFuZC5hZGRPcHRpb24oY2xvbmVPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcGFyc2VyQ29tbWFuZC5ob29rKFwicHJlU3ViY29tbWFuZFwiLCAodGhpc0NvbW1hbmQsIGFjdGlvbkNvbW1hbmQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgY21kIG9mIFt0aGlzQ29tbWFuZCwgYWN0aW9uQ29tbWFuZF0pIHtcbiAgICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQoY21kKSEsIGNtZC5vcHRzKCkpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uS2V5IG9mIE9iamVjdC5rZXlzKGNtZC5vcHRzKCkpKSB7XG4gICAgICAgICAgc2V0UHJvdmlkZWRPcHRpb25Tb3VyY2UoXG4gICAgICAgICAgICBjbWQsXG4gICAgICAgICAgICBvcHRpb25LZXksXG4gICAgICAgICAgICBjbWQuZ2V0T3B0aW9uVmFsdWVTb3VyY2Uob3B0aW9uS2V5KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXJzZXJDb21tYW5kLmFjdGlvbigoKSA9PiB7XG4gICAgICBwcm92aWRlZE9wdGlvbnMuc2V0KFxuICAgICAgICBjb21tYW5kc01hcC5nZXQocGFyc2VyQ29tbWFuZCkhLFxuICAgICAgICBwYXJzZXJDb21tYW5kLm9wdHMoKSxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uS2V5IG9mIE9iamVjdC5rZXlzKHBhcnNlckNvbW1hbmQub3B0cygpKSkge1xuICAgICAgICBzZXRQcm92aWRlZE9wdGlvblNvdXJjZShcbiAgICAgICAgICBjb21tYW5kc01hcC5nZXQocGFyc2VyQ29tbWFuZCkhLFxuICAgICAgICAgIG9wdGlvbktleSxcbiAgICAgICAgICBwYXJzZXJDb21tYW5kLmdldE9wdGlvblZhbHVlU291cmNlKG9wdGlvbktleSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIG1hdGNoZWRDb21tYW5kID0gY29tbWFuZDtcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3ViY29tbWFuZCBvZiBjb21tYW5kLmNvbW1hbmRzIGFzIENvbW1hbmRbXSkge1xuICAgICAgY29uc3QgcGFyc2VyU3ViY29tbWFuZCA9IHBhcnNlckNvbW1hbmQuY29tbWFuZChzdWJjb21tYW5kLm5hbWUoKSk7XG4gICAgICBjcmVhdGVQYXJzZXJDb21tYW5kKHBhcnNlclN1YmNvbW1hbmQsIHN1YmNvbW1hbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZXJDb21tYW5kO1xuICB9O1xuXG4gIGNvbnN0IHBhcnNlckNvbW1hbmQgPSBjcmVhdGVQYXJzZXJDb21tYW5kKG5ldyBDb21tYW5kKCksIGNvbW1hbmQpO1xuICBwYXJzZXJDb21tYW5kLnBhcnNlKGFyZ3YsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbWF0Y2hlZENvbW1hbmRcbiAgICA/IGZpbmRNaXNzaW5nT3B0aW9ucyhtYXRjaGVkQ29tbWFuZCwgcHJvdmlkZWRPcHRpb25zKVxuICAgIDogbmV3IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj4oKTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoZWRDb21tYW5kLFxuICAgIG1pc3NpbmdPcHRpb25zLFxuICAgIHByb3ZpZGVkT3B0aW9ucyxcbiAgICBwcm92aWRlZE9wdGlvbnNTb3VyY2VzLFxuICB9O1xufTtcbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0NPLElBQU0sT0FBTyxNQUFNO0FBQUM7OztBREEzQix1QkFBc0I7QUFDdEIsdUJBTU87QUFFQSxJQUFNLHFCQUFxQixDQUNoQyxTQUNBLDZCQUNHO0FBQ0gsUUFBTSwwQkFBMEIsb0JBQUksSUFBMEI7QUFHOUQsTUFBSSxpQkFBNkM7QUFFakQsU0FBTyxnQkFBZ0I7QUFDckIsVUFBTSxpQkFBaUIsb0JBQUksSUFBWTtBQUN2QyxVQUFNLGtCQUFrQix5QkFBeUIsSUFBSSxjQUFjO0FBQ25FLGVBQVcsVUFBVSxlQUFlLFNBQVM7QUFDM0MsWUFBTSxNQUFNLE9BQU8sYUFDZixpQkFBQUEsU0FBVSxPQUFPLEtBQU0sUUFBUSxVQUFVLEVBQUUsQ0FBQyxRQUM1QyxpQkFBQUEsU0FBVyxPQUFPLFFBQVEsT0FBTyxLQUFPO0FBRTVDLFVBQUksa0JBQWtCLEdBQUcsTUFBTSxRQUFXO0FBQ3hDO0FBQUEsTUFDRjtBQUVBLHFCQUFlLElBQUksR0FBRztBQUFBLElBQ3hCO0FBRUEsNEJBQXdCLElBQUksZ0JBQWdCLGNBQWM7QUFDMUQscUJBQWlCLGVBQWU7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDtBQXFCQSxJQUFNLHNCQUFzQixDQUFDLFFBQWlCLFdBQW9CO0FBQ2hFLGFBQVcsY0FBYztBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixHQUFZO0FBRVYsSUFBQyxPQUFlLFVBQVUsSUFBSyxPQUFlLFVBQVU7QUFBQSxFQUMxRDtBQUVBLFNBQU8sS0FBSyxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFPLFFBQVEsT0FBTyxRQUFRLENBQUM7QUFDL0IsU0FBTztBQUFBLElBQ0osT0FBK0MsUUFBUTtBQUFBLElBQ3hELE9BQU8sUUFBUTtBQUFBLE1BQ2IsQ0FBQyxXQUNDLE9BQU8sY0FBYyxNQUNwQixPQUFvRDtBQUFBLElBQ3pELEdBQUc7QUFBQSxFQUNMO0FBQ0Y7QUFFQSxJQUFNLHVCQUF1QixDQUFDLFlBQXFCO0FBQ2pELFVBQVEsZ0JBQWdCO0FBQUEsSUFDdEIsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNIO0FBRUEsSUFBTSxjQUFjLENBQUMsV0FBbUI7QUFDdEMsUUFBTSxZQUFZLElBQUksd0JBQU8sT0FBTyxPQUFPLE9BQU8sV0FBVztBQUM3RCxZQUFVLG9CQUFvQixLQUFLO0FBQ25DLFlBQVUsUUFBUSxPQUFPLGNBQWMsT0FBTyx1QkFBdUI7QUFFckUsWUFBVSxPQUFRLE9BQTJDLFNBQVM7QUFDdEUsWUFBVSxJQUFLLE9BQXVDLE1BQU07QUFDNUQsTUFBSSxPQUFPLFVBQVU7QUFDbkIsY0FBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLEVBQ3JDO0FBRUEsTUFBSSxPQUFPLFlBQVk7QUFDckIsY0FBVSxRQUFRLE9BQU8sVUFBVTtBQUFBLEVBQ3JDO0FBRUEsWUFBVTtBQUFBLElBQ1AsT0FBZ0Q7QUFBQSxFQUNuRDtBQUVBLEVBQUMsVUFBNEMsVUFDM0MsT0FDQTtBQUVGLFNBQU87QUFDVDtBQU9PLElBQU0sZUFBZSxDQUMxQixTQUNBLE1BQ0EsWUFDdUI7QUFDdkIsUUFBTSxrQkFBa0Isb0JBQUksSUFBMkI7QUFDdkQsUUFBTSx5QkFBeUIsb0JBQUksSUFHakM7QUFDRixRQUFNLGNBQWMsb0JBQUksSUFBc0I7QUFDOUMsTUFBSTtBQUVKLFFBQU0sMEJBQTBCLENBQzlCQyxVQUNBLFdBQ0EsV0FDRztBQUNILFFBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxJQUNGO0FBRUEsVUFBTSxhQUNKLHVCQUF1QixJQUFJQSxRQUFPLEtBQUssb0JBQUksSUFBb0I7QUFDakUsZUFBVyxJQUFJLFdBQVcsTUFBTTtBQUNoQywyQkFBdUIsSUFBSUEsVUFBUyxVQUFVO0FBQUEsRUFDaEQ7QUFFQSxRQUFNLHNCQUFzQixDQUFDQyxnQkFBd0JELGFBQXFCO0FBQ3hFLGdCQUFZLElBQUlDLGdCQUFlRCxRQUFPO0FBRXRDLHdCQUFvQkEsVUFBU0MsY0FBYTtBQUMxQyx5QkFBcUJBLGNBQWE7QUFDbEMsSUFBQUEsZUFBYyxhQUFhO0FBRTNCLGVBQVcsVUFBVUQsU0FBUSxTQUFTO0FBQ3BDLE1BQUFDLGVBQWMsVUFBVSxZQUFZLE1BQU0sQ0FBQztBQUFBLElBQzdDO0FBRUEsSUFBQUEsZUFBYyxLQUFLLGlCQUFpQixDQUFDLGFBQWEsa0JBQWtCO0FBQ2xFLGlCQUFXLE9BQU8sQ0FBQyxhQUFhLGFBQWEsR0FBRztBQUM5Qyx3QkFBZ0IsSUFBSSxZQUFZLElBQUksR0FBRyxHQUFJLElBQUksS0FBSyxDQUFDO0FBRXJELG1CQUFXLGFBQWEsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUc7QUFDL0M7QUFBQSxZQUNFO0FBQUEsWUFDQTtBQUFBLFlBQ0EsSUFBSSxxQkFBcUIsU0FBUztBQUFBLFVBQ3BDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFFRCxJQUFBQSxlQUFjLE9BQU8sTUFBTTtBQUN6QixzQkFBZ0I7QUFBQSxRQUNkLFlBQVksSUFBSUEsY0FBYTtBQUFBLFFBQzdCQSxlQUFjLEtBQUs7QUFBQSxNQUNyQjtBQUVBLGlCQUFXLGFBQWEsT0FBTyxLQUFLQSxlQUFjLEtBQUssQ0FBQyxHQUFHO0FBQ3pEO0FBQUEsVUFDRSxZQUFZLElBQUlBLGNBQWE7QUFBQSxVQUM3QjtBQUFBLFVBQ0FBLGVBQWMscUJBQXFCLFNBQVM7QUFBQSxRQUM5QztBQUFBLE1BQ0Y7QUFFQSx1QkFBaUJEO0FBQUEsSUFDbkIsQ0FBQztBQUVELGVBQVcsY0FBY0EsU0FBUSxVQUF1QjtBQUN0RCxZQUFNLG1CQUFtQkMsZUFBYyxRQUFRLFdBQVcsS0FBSyxDQUFDO0FBQ2hFLDBCQUFvQixrQkFBa0IsVUFBVTtBQUFBLElBQ2xEO0FBRUEsV0FBT0E7QUFBQSxFQUNUO0FBRUEsUUFBTSxnQkFBZ0Isb0JBQW9CLElBQUkseUJBQVEsR0FBRyxPQUFPO0FBQ2hFLGdCQUFjLE1BQU0sTUFBTSxPQUFPO0FBRWpDLFFBQU0saUJBQWlCLGlCQUNuQixtQkFBbUIsZ0JBQWdCLGVBQWUsSUFDbEQsb0JBQUksSUFBMEI7QUFFbEMsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbImNhbWVsQ2FzZSIsICJjb21tYW5kIiwgInBhcnNlckNvbW1hbmQiXQp9Cg==
package/dist/index.d.cts CHANGED
@@ -14,6 +14,10 @@ type PartialParseResult = {
14
14
  * A map of commands to the options provided for that command
15
15
  */
16
16
  providedOptions: Map<Command, OptionValues>;
17
+ /**
18
+ * A map of commands to a map of option keys to the source of the option value
19
+ */
20
+ providedOptionsSources: Map<Command, Map<string, string | undefined>>;
17
21
  };
18
22
  /**
19
23
  * Partially parse argv for a command without executing the action. @see {@link Command.parse}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,10 @@ type PartialParseResult = {
14
14
  * A map of commands to the options provided for that command
15
15
  */
16
16
  providedOptions: Map<Command, OptionValues>;
17
+ /**
18
+ * A map of commands to a map of option keys to the source of the option value
19
+ */
20
+ providedOptionsSources: Map<Command, Map<string, string | undefined>>;
17
21
  };
18
22
  /**
19
23
  * Partially parse argv for a command without executing the action. @see {@link Command.parse}
package/dist/index.js CHANGED
@@ -15,8 +15,8 @@ var findMissingOptions = (command, providedOptionsByCommand) => {
15
15
  const missingOptions = /* @__PURE__ */ new Set();
16
16
  const providedOptions = providedOptionsByCommand.get(currentCommand);
17
17
  for (const option of currentCommand.options) {
18
- const key = camelCase(option.long ?? option.short);
19
- if (providedOptions?.[key]) {
18
+ const key = option.negate ? camelCase(option.long.replace(/^--no-/, "")) : camelCase(option.long ?? option.short);
19
+ if (providedOptions?.[key] !== void 0) {
20
20
  continue;
21
21
  }
22
22
  missingOptions.add(key);
@@ -40,6 +40,12 @@ var copyCommandSettings = (source, target) => {
40
40
  }
41
41
  target.name(source.name());
42
42
  target.aliases(source.aliases());
43
+ target.version(
44
+ source.version(),
45
+ source.options.find(
46
+ (option) => option.attributeName() === source._versionOptionName
47
+ )?.flags
48
+ );
43
49
  };
44
50
  var disableCommandOutput = (command) => {
45
51
  command.configureOutput({
@@ -68,8 +74,17 @@ var cloneOption = (option) => {
68
74
  };
69
75
  var partialParse = (command, argv, options) => {
70
76
  const providedOptions = /* @__PURE__ */ new Map();
77
+ const providedOptionsSources = /* @__PURE__ */ new Map();
71
78
  const commandsMap = /* @__PURE__ */ new Map();
72
79
  let matchedCommand;
80
+ const setProvidedOptionSource = (command2, optionKey, source) => {
81
+ if (!source) {
82
+ return;
83
+ }
84
+ const sourcesMap = providedOptionsSources.get(command2) ?? /* @__PURE__ */ new Map();
85
+ sourcesMap.set(optionKey, source);
86
+ providedOptionsSources.set(command2, sourcesMap);
87
+ };
73
88
  const createParserCommand = (parserCommand2, command2) => {
74
89
  commandsMap.set(parserCommand2, command2);
75
90
  copyCommandSettings(command2, parserCommand2);
@@ -79,14 +94,29 @@ var partialParse = (command, argv, options) => {
79
94
  parserCommand2.addOption(cloneOption(option));
80
95
  }
81
96
  parserCommand2.hook("preSubcommand", (thisCommand, actionCommand) => {
82
- providedOptions.set(commandsMap.get(parserCommand2), thisCommand.opts());
83
- providedOptions.set(commandsMap.get(actionCommand), thisCommand.opts());
97
+ for (const cmd of [thisCommand, actionCommand]) {
98
+ providedOptions.set(commandsMap.get(cmd), cmd.opts());
99
+ for (const optionKey of Object.keys(cmd.opts())) {
100
+ setProvidedOptionSource(
101
+ cmd,
102
+ optionKey,
103
+ cmd.getOptionValueSource(optionKey)
104
+ );
105
+ }
106
+ }
84
107
  });
85
108
  parserCommand2.action(() => {
86
109
  providedOptions.set(
87
110
  commandsMap.get(parserCommand2),
88
111
  parserCommand2.opts()
89
112
  );
113
+ for (const optionKey of Object.keys(parserCommand2.opts())) {
114
+ setProvidedOptionSource(
115
+ commandsMap.get(parserCommand2),
116
+ optionKey,
117
+ parserCommand2.getOptionValueSource(optionKey)
118
+ );
119
+ }
90
120
  matchedCommand = command2;
91
121
  });
92
122
  for (const subcommand of command2.commands) {
@@ -95,16 +125,18 @@ var partialParse = (command, argv, options) => {
95
125
  }
96
126
  return parserCommand2;
97
127
  };
98
- const parserCommand = createParserCommand(
99
- new Command().exitOverride(),
100
- command
101
- );
128
+ const parserCommand = createParserCommand(new Command(), command);
102
129
  parserCommand.parse(argv, options);
103
130
  const missingOptions = matchedCommand ? findMissingOptions(matchedCommand, providedOptions) : /* @__PURE__ */ new Map();
104
- return { matchedCommand, missingOptions, providedOptions };
131
+ return {
132
+ matchedCommand,
133
+ missingOptions,
134
+ providedOptions,
135
+ providedOptionsSources
136
+ };
105
137
  };
106
138
  export {
107
139
  findMissingOptions,
108
140
  partialParse
109
141
  };
110
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vb3AudHMiLCAiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuIiwgImltcG9ydCB7IG5vb3AgfSBmcm9tIFwiLi9ub29wXCI7XG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9uVmFsdWVzLFxuICBDb21tYW5kLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgT3B0aW9uLFxufSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWlzc2luZ09wdGlvbnMgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZDogTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4sXG4pID0+IHtcbiAgY29uc3QgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQgPSBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIGxldCBjdXJyZW50Q29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZCB8IG51bGwgPSBjb21tYW5kO1xuXG4gIHdoaWxlIChjdXJyZW50Q29tbWFuZCkge1xuICAgIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gcHJvdmlkZWRPcHRpb25zQnlDb21tYW5kLmdldChjdXJyZW50Q29tbWFuZCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY3VycmVudENvbW1hbmQub3B0aW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gY2FtZWxDYXNlKChvcHRpb24ubG9uZyA/PyBvcHRpb24uc2hvcnQpISk7XG4gICAgICBpZiAocHJvdmlkZWRPcHRpb25zPy5ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbWlzc2luZ09wdGlvbnMuYWRkKGtleSk7XG4gICAgfVxuXG4gICAgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQuc2V0KGN1cnJlbnRDb21tYW5kLCBtaXNzaW5nT3B0aW9ucyk7XG4gICAgY3VycmVudENvbW1hbmQgPSBjdXJyZW50Q29tbWFuZC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJ0aWFsUGFyc2VSZXN1bHQgPSB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB3aG9zZSBhY3Rpb24gd2lsbCBiZSBleGVjdXRlZFxuICAgKi9cbiAgbWF0Y2hlZENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byBhIHNldCBvZiBtaXNzaW5nIG9wdGlvbnMgZm9yIHRoYXQgY29tbWFuZFxuICAgKi9cbiAgbWlzc2luZ09wdGlvbnM6IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byB0aGUgb3B0aW9ucyBwcm92aWRlZCBmb3IgdGhhdCBjb21tYW5kXG4gICAqL1xuICBwcm92aWRlZE9wdGlvbnM6IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+O1xufTtcblxuY29uc3QgY29weUNvbW1hbmRTZXR0aW5ncyA9IChzb3VyY2U6IENvbW1hbmQsIHRhcmdldDogQ29tbWFuZCkgPT4ge1xuICBmb3IgKGNvbnN0IGtleXNUb0NvcHkgb2YgW1xuICAgIFwiX2FsbG93RXhjZXNzQXJndW1lbnRzXCIsXG4gICAgXCJfYWxsb3dVbmtub3duT3B0aW9uXCIsXG4gICAgXCJfYXJnc1wiLFxuICAgIFwiX2NvbWJpbmVGbGFnQW5kT3B0aW9uYWxWYWx1ZVwiLFxuICAgIFwiX2RlZmF1bHRDb21tYW5kTmFtZVwiLFxuICAgIFwiX2VuYWJsZVBvc2l0aW9uYWxPcHRpb25zXCIsXG4gICAgXCJfcGFzc1Rocm91Z2hPcHRpb25zXCIsXG4gIF0gYXMgY29uc3QpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgKHRhcmdldCBhcyBhbnkpW2tleXNUb0NvcHldID0gKHNvdXJjZSBhcyBhbnkpW2tleXNUb0NvcHldO1xuICB9XG5cbiAgdGFyZ2V0Lm5hbWUoc291cmNlLm5hbWUoKSk7XG4gIHRhcmdldC5hbGlhc2VzKHNvdXJjZS5hbGlhc2VzKCkpO1xufTtcblxuY29uc3QgZGlzYWJsZUNvbW1hbmRPdXRwdXQgPSAoY29tbWFuZDogQ29tbWFuZCkgPT4ge1xuICBjb21tYW5kLmNvbmZpZ3VyZU91dHB1dCh7XG4gICAgd3JpdGVPdXQ6IG5vb3AsXG4gICAgd3JpdGVFcnI6IG5vb3AsXG4gICAgb3V0cHV0RXJyb3I6IG5vb3AsXG4gIH0pO1xufTtcblxuY29uc3QgY2xvbmVPcHRpb24gPSAob3B0aW9uOiBPcHRpb24pID0+IHtcbiAgY29uc3QgbmV3T3B0aW9uID0gbmV3IE9wdGlvbihvcHRpb24uZmxhZ3MsIG9wdGlvbi5kZXNjcmlwdGlvbik7XG4gIG5ld09wdGlvbi5tYWtlT3B0aW9uTWFuZGF0b3J5KGZhbHNlKTtcbiAgbmV3T3B0aW9uLmRlZmF1bHQob3B0aW9uLmRlZmF1bHRWYWx1ZSwgb3B0aW9uLmRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uKTtcblxuICBuZXdPcHRpb24ucHJlc2V0KChvcHRpb24gYXMgT3B0aW9uICYgeyBwcmVzZXRBcmc6IHVua25vd24gfSkucHJlc2V0QXJnKTtcbiAgbmV3T3B0aW9uLmVudigob3B0aW9uIGFzIE9wdGlvbiAmIHsgZW52VmFyOiBzdHJpbmcgfSkuZW52VmFyKTtcbiAgaWYgKG9wdGlvbi5wYXJzZUFyZykge1xuICAgIG5ld09wdGlvbi5hcmdQYXJzZXIob3B0aW9uLnBhcnNlQXJnKTtcbiAgfVxuXG4gIGlmIChvcHRpb24uYXJnQ2hvaWNlcykge1xuICAgIG5ld09wdGlvbi5jaG9pY2VzKG9wdGlvbi5hcmdDaG9pY2VzKTtcbiAgfVxuXG4gIG5ld09wdGlvbi5jb25mbGljdHMoXG4gICAgKG9wdGlvbiBhcyBPcHRpb24gJiB7IGNvbmZsaWN0c1dpdGg6IHN0cmluZ1tdIH0pLmNvbmZsaWN0c1dpdGgsXG4gICk7XG5cbiAgKG5ld09wdGlvbiBhcyBPcHRpb24gJiB7IGltcGxpZWQ6IHVua25vd24gfSkuaW1wbGllZCA9IChcbiAgICBvcHRpb24gYXMgT3B0aW9uICYgeyBpbXBsaWVkOiB1bmtub3duIH1cbiAgKS5pbXBsaWVkO1xuXG4gIHJldHVybiBuZXdPcHRpb247XG59O1xuXG4vKipcbiAqIFBhcnRpYWxseSBwYXJzZSBhcmd2IGZvciBhIGNvbW1hbmQgd2l0aG91dCBleGVjdXRpbmcgdGhlIGFjdGlvbi4gQHNlZSB7QGxpbmsgQ29tbWFuZC5wYXJzZX1cbiAqXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbWF0Y2hlZCBjb21tYW5kLCB0aGUgcHJvdmlkZWQgb3B0aW9ucywgYW5kIHRoZSBtaXNzaW5nIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJ0aWFsUGFyc2UgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIGFyZ3Y6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBvcHRpb25zPzogUGFyc2VPcHRpb25zLFxuKTogUGFydGlhbFBhcnNlUmVzdWx0ID0+IHtcbiAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gbmV3IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+KCk7XG4gIGNvbnN0IGNvbW1hbmRzTWFwID0gbmV3IE1hcDxDb21tYW5kLCBDb21tYW5kPigpO1xuICBsZXQgbWF0Y2hlZENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgY3JlYXRlUGFyc2VyQ29tbWFuZCA9IChwYXJzZXJDb21tYW5kOiBDb21tYW5kLCBjb21tYW5kOiBDb21tYW5kKSA9PiB7XG4gICAgY29tbWFuZHNNYXAuc2V0KHBhcnNlckNvbW1hbmQsIGNvbW1hbmQpO1xuXG4gICAgY29weUNvbW1hbmRTZXR0aW5ncyhjb21tYW5kLCBwYXJzZXJDb21tYW5kKTtcbiAgICBkaXNhYmxlQ29tbWFuZE91dHB1dChwYXJzZXJDb21tYW5kKTtcbiAgICBwYXJzZXJDb21tYW5kLmV4aXRPdmVycmlkZSgpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY29tbWFuZC5vcHRpb25zKSB7XG4gICAgICBwYXJzZXJDb21tYW5kLmFkZE9wdGlvbihjbG9uZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwYXJzZXJDb21tYW5kLmhvb2soXCJwcmVTdWJjb21tYW5kXCIsICh0aGlzQ29tbWFuZCwgYWN0aW9uQ29tbWFuZCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQocGFyc2VyQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQoYWN0aW9uQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgIH0pO1xuXG4gICAgcGFyc2VyQ29tbWFuZC5hY3Rpb24oKCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChcbiAgICAgICAgY29tbWFuZHNNYXAuZ2V0KHBhcnNlckNvbW1hbmQpISxcbiAgICAgICAgcGFyc2VyQ29tbWFuZC5vcHRzKCksXG4gICAgICApO1xuICAgICAgbWF0Y2hlZENvbW1hbmQgPSBjb21tYW5kO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdWJjb21tYW5kIG9mIGNvbW1hbmQuY29tbWFuZHMgYXMgQ29tbWFuZFtdKSB7XG4gICAgICBjb25zdCBwYXJzZXJTdWJjb21tYW5kID0gcGFyc2VyQ29tbWFuZC5jb21tYW5kKHN1YmNvbW1hbmQubmFtZSgpKTtcbiAgICAgIGNyZWF0ZVBhcnNlckNvbW1hbmQocGFyc2VyU3ViY29tbWFuZCwgc3ViY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlckNvbW1hbmQ7XG4gIH07XG5cbiAgY29uc3QgcGFyc2VyQ29tbWFuZCA9IGNyZWF0ZVBhcnNlckNvbW1hbmQoXG4gICAgbmV3IENvbW1hbmQoKS5leGl0T3ZlcnJpZGUoKSxcbiAgICBjb21tYW5kLFxuICApO1xuICBwYXJzZXJDb21tYW5kLnBhcnNlKGFyZ3YsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbWF0Y2hlZENvbW1hbmRcbiAgICA/IGZpbmRNaXNzaW5nT3B0aW9ucyhtYXRjaGVkQ29tbWFuZCwgcHJvdmlkZWRPcHRpb25zKVxuICAgIDogbmV3IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj4oKTtcblxuICByZXR1cm4geyBtYXRjaGVkQ29tbWFuZCwgbWlzc2luZ09wdGlvbnMsIHByb3ZpZGVkT3B0aW9ucyB9O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDTyxJQUFNLE9BQU8sTUFBTTtBQUFDOzs7QUNBM0IsT0FBTyxlQUFlO0FBQ3RCO0FBQUEsRUFFRTtBQUFBLEVBRUE7QUFBQSxPQUNLO0FBRUEsSUFBTSxxQkFBcUIsQ0FDaEMsU0FDQSw2QkFDRztBQUNILFFBQU0sMEJBQTBCLG9CQUFJLElBQTBCO0FBRzlELE1BQUksaUJBQTZDO0FBRWpELFNBQU8sZ0JBQWdCO0FBQ3JCLFVBQU0saUJBQWlCLG9CQUFJLElBQVk7QUFDdkMsVUFBTSxrQkFBa0IseUJBQXlCLElBQUksY0FBYztBQUNuRSxlQUFXLFVBQVUsZUFBZSxTQUFTO0FBQzNDLFlBQU0sTUFBTSxVQUFXLE9BQU8sUUFBUSxPQUFPLEtBQU87QUFDcEQsVUFBSSxrQkFBa0IsR0FBRyxHQUFHO0FBQzFCO0FBQUEsTUFDRjtBQUVBLHFCQUFlLElBQUksR0FBRztBQUFBLElBQ3hCO0FB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
142
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vb3AudHMiLCAiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuIiwgImltcG9ydCB7IG5vb3AgfSBmcm9tIFwiLi9ub29wLnRzXCI7XG5pbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9uVmFsdWVzLFxuICBDb21tYW5kLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgT3B0aW9uLFxuICB0eXBlIE9wdGlvblZhbHVlU291cmNlLFxufSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWlzc2luZ09wdGlvbnMgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZDogTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4sXG4pID0+IHtcbiAgY29uc3QgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQgPSBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIGxldCBjdXJyZW50Q29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZCB8IG51bGwgPSBjb21tYW5kO1xuXG4gIHdoaWxlIChjdXJyZW50Q29tbWFuZCkge1xuICAgIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gcHJvdmlkZWRPcHRpb25zQnlDb21tYW5kLmdldChjdXJyZW50Q29tbWFuZCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY3VycmVudENvbW1hbmQub3B0aW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gb3B0aW9uLm5lZ2F0ZVxuICAgICAgICA/IGNhbWVsQ2FzZShvcHRpb24ubG9uZyEucmVwbGFjZSgvXi0tbm8tLywgXCJcIikpXG4gICAgICAgIDogY2FtZWxDYXNlKChvcHRpb24ubG9uZyA/PyBvcHRpb24uc2hvcnQpISk7XG5cbiAgICAgIGlmIChwcm92aWRlZE9wdGlvbnM/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1pc3NpbmdPcHRpb25zLmFkZChrZXkpO1xuICAgIH1cblxuICAgIG1pc3NpbmdPcHRpb25zQnlDb21tYW5kLnNldChjdXJyZW50Q29tbWFuZCwgbWlzc2luZ09wdGlvbnMpO1xuICAgIGN1cnJlbnRDb21tYW5kID0gY3VycmVudENvbW1hbmQucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG1pc3NpbmdPcHRpb25zQnlDb21tYW5kO1xufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFBhcnNlUmVzdWx0ID0ge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgd2hvc2UgYWN0aW9uIHdpbGwgYmUgZXhlY3V0ZWRcbiAgICovXG4gIG1hdGNoZWRDb21tYW5kOiBDb21tYW5kIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQSBtYXAgb2YgY29tbWFuZHMgdG8gYSBzZXQgb2YgbWlzc2luZyBvcHRpb25zIGZvciB0aGF0IGNvbW1hbmRcbiAgICovXG4gIG1pc3NpbmdPcHRpb25zOiBNYXA8Q29tbWFuZCwgU2V0PHN0cmluZz4+O1xuICAvKipcbiAgICogQSBtYXAgb2YgY29tbWFuZHMgdG8gdGhlIG9wdGlvbnMgcHJvdmlkZWQgZm9yIHRoYXQgY29tbWFuZFxuICAgKi9cbiAgcHJvdmlkZWRPcHRpb25zOiBNYXA8Q29tbWFuZCwgT3B0aW9uVmFsdWVzPjtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGNvbW1hbmRzIHRvIGEgbWFwIG9mIG9wdGlvbiBrZXlzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlIG9wdGlvbiB2YWx1ZVxuICAgKi9cbiAgcHJvdmlkZWRPcHRpb25zU291cmNlczogTWFwPENvbW1hbmQsIE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xufTtcblxuY29uc3QgY29weUNvbW1hbmRTZXR0aW5ncyA9IChzb3VyY2U6IENvbW1hbmQsIHRhcmdldDogQ29tbWFuZCkgPT4ge1xuICBmb3IgKGNvbnN0IGtleXNUb0NvcHkgb2YgW1xuICAgIFwiX2FsbG93RXhjZXNzQXJndW1lbnRzXCIsXG4gICAgXCJfYWxsb3dVbmtub3duT3B0aW9uXCIsXG4gICAgXCJfYXJnc1wiLFxuICAgIFwiX2NvbWJpbmVGbGFnQW5kT3B0aW9uYWxWYWx1ZVwiLFxuICAgIFwiX2RlZmF1bHRDb21tYW5kTmFtZVwiLFxuICAgIFwiX2VuYWJsZVBvc2l0aW9uYWxPcHRpb25zXCIsXG4gICAgXCJfcGFzc1Rocm91Z2hPcHRpb25zXCIsXG4gIF0gYXMgY29uc3QpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgKHRhcmdldCBhcyBhbnkpW2tleXNUb0NvcHldID0gKHNvdXJjZSBhcyBhbnkpW2tleXNUb0NvcHldO1xuICB9XG5cbiAgdGFyZ2V0Lm5hbWUoc291cmNlLm5hbWUoKSk7XG4gIHRhcmdldC5hbGlhc2VzKHNvdXJjZS5hbGlhc2VzKCkpO1xuICB0YXJnZXQudmVyc2lvbihcbiAgICAoc291cmNlIGFzIENvbW1hbmQgJiB7IHZlcnNpb246ICgpID0+IHN0cmluZyB9KS52ZXJzaW9uKCksXG4gICAgc291cmNlLm9wdGlvbnMuZmluZChcbiAgICAgIChvcHRpb24pID0+XG4gICAgICAgIG9wdGlvbi5hdHRyaWJ1dGVOYW1lKCkgPT09XG4gICAgICAgIChzb3VyY2UgYXMgQ29tbWFuZCAmIHsgX3ZlcnNpb25PcHRpb25OYW1lOiBzdHJpbmcgfSkuX3ZlcnNpb25PcHRpb25OYW1lLFxuICAgICk/LmZsYWdzLFxuICApO1xufTtcblxuY29uc3QgZGlzYWJsZUNvbW1hbmRPdXRwdXQgPSAoY29tbWFuZDogQ29tbWFuZCkgPT4ge1xuICBjb21tYW5kLmNvbmZpZ3VyZU91dHB1dCh7XG4gICAgd3JpdGVPdXQ6IG5vb3AsXG4gICAgd3JpdGVFcnI6IG5vb3AsXG4gICAgb3V0cHV0RXJyb3I6IG5vb3AsXG4gIH0pO1xufTtcblxuY29uc3QgY2xvbmVPcHRpb24gPSAob3B0aW9uOiBPcHRpb24pID0+IHtcbiAgY29uc3QgbmV3T3B0aW9uID0gbmV3IE9wdGlvbihvcHRpb24uZmxhZ3MsIG9wdGlvbi5kZXNjcmlwdGlvbik7XG4gIG5ld09wdGlvbi5tYWtlT3B0aW9uTWFuZGF0b3J5KGZhbHNlKTtcbiAgbmV3T3B0aW9uLmRlZmF1bHQob3B0aW9uLmRlZmF1bHRWYWx1ZSwgb3B0aW9uLmRlZmF1bHRWYWx1ZURlc2NyaXB0aW9uKTtcblxuICBuZXdPcHRpb24ucHJlc2V0KChvcHRpb24gYXMgT3B0aW9uICYgeyBwcmVzZXRBcmc6IHVua25vd24gfSkucHJlc2V0QXJnKTtcbiAgbmV3T3B0aW9uLmVudigob3B0aW9uIGFzIE9wdGlvbiAmIHsgZW52VmFyOiBzdHJpbmcgfSkuZW52VmFyKTtcbiAgaWYgKG9wdGlvbi5wYXJzZUFyZykge1xuICAgIG5ld09wdGlvbi5hcmdQYXJzZXIob3B0aW9uLnBhcnNlQXJnKTtcbiAgfVxuXG4gIGlmIChvcHRpb24uYXJnQ2hvaWNlcykge1xuICAgIG5ld09wdGlvbi5jaG9pY2VzKG9wdGlvbi5hcmdDaG9pY2VzKTtcbiAgfVxuXG4gIG5ld09wdGlvbi5jb25mbGljdHMoXG4gICAgKG9wdGlvbiBhcyBPcHRpb24gJiB7IGNvbmZsaWN0c1dpdGg6IHN0cmluZ1tdIH0pLmNvbmZsaWN0c1dpdGgsXG4gICk7XG5cbiAgKG5ld09wdGlvbiBhcyBPcHRpb24gJiB7IGltcGxpZWQ6IHVua25vd24gfSkuaW1wbGllZCA9IChcbiAgICBvcHRpb24gYXMgT3B0aW9uICYgeyBpbXBsaWVkOiB1bmtub3duIH1cbiAgKS5pbXBsaWVkO1xuXG4gIHJldHVybiBuZXdPcHRpb247XG59O1xuXG4vKipcbiAqIFBhcnRpYWxseSBwYXJzZSBhcmd2IGZvciBhIGNvbW1hbmQgd2l0aG91dCBleGVjdXRpbmcgdGhlIGFjdGlvbi4gQHNlZSB7QGxpbmsgQ29tbWFuZC5wYXJzZX1cbiAqXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbWF0Y2hlZCBjb21tYW5kLCB0aGUgcHJvdmlkZWQgb3B0aW9ucywgYW5kIHRoZSBtaXNzaW5nIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJ0aWFsUGFyc2UgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIGFyZ3Y6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBvcHRpb25zPzogUGFyc2VPcHRpb25zLFxuKTogUGFydGlhbFBhcnNlUmVzdWx0ID0+IHtcbiAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gbmV3IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+KCk7XG4gIGNvbnN0IHByb3ZpZGVkT3B0aW9uc1NvdXJjZXMgPSBuZXcgTWFwPFxuICAgIENvbW1hbmQsXG4gICAgTWFwPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPlxuICA+KCk7XG4gIGNvbnN0IGNvbW1hbmRzTWFwID0gbmV3IE1hcDxDb21tYW5kLCBDb21tYW5kPigpO1xuICBsZXQgbWF0Y2hlZENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3Qgc2V0UHJvdmlkZWRPcHRpb25Tb3VyY2UgPSAoXG4gICAgY29tbWFuZDogQ29tbWFuZCxcbiAgICBvcHRpb25LZXk6IHN0cmluZyxcbiAgICBzb3VyY2U6IE9wdGlvblZhbHVlU291cmNlIHwgdW5kZWZpbmVkLFxuICApID0+IHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZXNNYXAgPVxuICAgICAgcHJvdmlkZWRPcHRpb25zU291cmNlcy5nZXQoY29tbWFuZCkgPz8gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBzb3VyY2VzTWFwLnNldChvcHRpb25LZXksIHNvdXJjZSk7XG4gICAgcHJvdmlkZWRPcHRpb25zU291cmNlcy5zZXQoY29tbWFuZCwgc291cmNlc01hcCk7XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlUGFyc2VyQ29tbWFuZCA9IChwYXJzZXJDb21tYW5kOiBDb21tYW5kLCBjb21tYW5kOiBDb21tYW5kKSA9PiB7XG4gICAgY29tbWFuZHNNYXAuc2V0KHBhcnNlckNvbW1hbmQsIGNvbW1hbmQpO1xuXG4gICAgY29weUNvbW1hbmRTZXR0aW5ncyhjb21tYW5kLCBwYXJzZXJDb21tYW5kKTtcbiAgICBkaXNhYmxlQ29tbWFuZE91dHB1dChwYXJzZXJDb21tYW5kKTtcbiAgICBwYXJzZXJDb21tYW5kLmV4aXRPdmVycmlkZSgpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY29tbWFuZC5vcHRpb25zKSB7XG4gICAgICBwYXJzZXJDb21tYW5kLmFkZE9wdGlvbihjbG9uZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwYXJzZXJDb21tYW5kLmhvb2soXCJwcmVTdWJjb21tYW5kXCIsICh0aGlzQ29tbWFuZCwgYWN0aW9uQ29tbWFuZCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjbWQgb2YgW3RoaXNDb21tYW5kLCBhY3Rpb25Db21tYW5kXSkge1xuICAgICAgICBwcm92aWRlZE9wdGlvbnMuc2V0KGNvbW1hbmRzTWFwLmdldChjbWQpISwgY21kLm9wdHMoKSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcHRpb25LZXkgb2YgT2JqZWN0LmtleXMoY21kLm9wdHMoKSkpIHtcbiAgICAgICAgICBzZXRQcm92aWRlZE9wdGlvblNvdXJjZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIG9wdGlvbktleSxcbiAgICAgICAgICAgIGNtZC5nZXRPcHRpb25WYWx1ZVNvdXJjZShvcHRpb25LZXkpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhcnNlckNvbW1hbmQuYWN0aW9uKCgpID0+IHtcbiAgICAgIHByb3ZpZGVkT3B0aW9ucy5zZXQoXG4gICAgICAgIGNvbW1hbmRzTWFwLmdldChwYXJzZXJDb21tYW5kKSEsXG4gICAgICAgIHBhcnNlckNvbW1hbmQub3B0cygpLFxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCBvcHRpb25LZXkgb2YgT2JqZWN0LmtleXMocGFyc2VyQ29tbWFuZC5vcHRzKCkpKSB7XG4gICAgICAgIHNldFByb3ZpZGVkT3B0aW9uU291cmNlKFxuICAgICAgICAgIGNvbW1hbmRzTWFwLmdldChwYXJzZXJDb21tYW5kKSEsXG4gICAgICAgICAgb3B0aW9uS2V5LFxuICAgICAgICAgIHBhcnNlckNvbW1hbmQuZ2V0T3B0aW9uVmFsdWVTb3VyY2Uob3B0aW9uS2V5KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbWF0Y2hlZENvbW1hbmQgPSBjb21tYW5kO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdWJjb21tYW5kIG9mIGNvbW1hbmQuY29tbWFuZHMgYXMgQ29tbWFuZFtdKSB7XG4gICAgICBjb25zdCBwYXJzZXJTdWJjb21tYW5kID0gcGFyc2VyQ29tbWFuZC5jb21tYW5kKHN1YmNvbW1hbmQubmFtZSgpKTtcbiAgICAgIGNyZWF0ZVBhcnNlckNvbW1hbmQocGFyc2VyU3ViY29tbWFuZCwgc3ViY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlckNvbW1hbmQ7XG4gIH07XG5cbiAgY29uc3QgcGFyc2VyQ29tbWFuZCA9IGNyZWF0ZVBhcnNlckNvbW1hbmQobmV3IENvbW1hbmQoKSwgY29tbWFuZCk7XG4gIHBhcnNlckNvbW1hbmQucGFyc2UoYXJndiwgb3B0aW9ucyk7XG5cbiAgY29uc3QgbWlzc2luZ09wdGlvbnMgPSBtYXRjaGVkQ29tbWFuZFxuICAgID8gZmluZE1pc3NpbmdPcHRpb25zKG1hdGNoZWRDb21tYW5kLCBwcm92aWRlZE9wdGlvbnMpXG4gICAgOiBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2hlZENvbW1hbmQsXG4gICAgbWlzc2luZ09wdGlvbnMsXG4gICAgcHJvdmlkZWRPcHRpb25zLFxuICAgIHByb3ZpZGVkT3B0aW9uc1NvdXJjZXMsXG4gIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNPLElBQU0sT0FBTyxNQUFNO0FBQUM7OztBQ0EzQixPQUFPLGVBQWU7QUFDdEI7QUFBQSxFQUVFO0FBQUEsRUFFQTtBQUFBLE9BRUs7QUFFQSxJQUFNLHFCQUFxQixDQUNoQyxTQUNBLDZCQUNHO0FBQ0gsUUFBTSwwQkFBMEIsb0JBQUksSUFBMEI7QUFHOUQsTUFBSSxpQkFBNkM7QUFFakQsU0FBTyxnQkFBZ0I7QUFDckIsVUFBTSxpQkFBaUIsb0JBQUksSUFBWTtBQUN2QyxVQUFNLGtCQUFrQix5QkFBeUIsSUFBSSxjQUFjO0FBQ25FLGVBQVcsVUFBVSxlQUFlLFNBQVM7QUFDM0MsWUFBTSxNQUFNLE9BQU8sU0FDZixVQUFVLE9BQU8sS0FBTSxRQUFRLFVBQVUsRUFBRSxDQUFDLElBQzVDLFVBQVcsT0FBTyxRQUFRLE9BQU8sS0FBTztBQUU1QyxVQUFJLGtCQUFrQixHQUFHLE1BQU0sUUFBVztBQUN4QztBQUFBLE1BQ0Y7QUFFQSxxQkFBZSxJQUFJLEdBQUc7QUFBQSxJQUN4QjtBQUVBLDRCQUF3QixJQUFJLGdCQUFnQixjQUFjO0FBQzFELHFCQUFpQixlQUFlO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7QUFxQkEsSUFBTSxzQkFBc0IsQ0FBQyxRQUFpQixXQUFvQjtBQUNoRSxhQUFXLGNBQWM7QUFBQSxJQUN2QjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsR0FBWTtBQUVWLElBQUMsT0FBZSxVQUFVLElBQUssT0FBZSxVQUFVO0FBQUEsRUFDMUQ7QUFFQSxTQUFPLEtBQUssT0FBTyxLQUFLLENBQUM7QUFDekIsU0FBTyxRQUFRLE9BQU8sUUFBUSxDQUFDO0FBQy9CLFNBQU87QUFBQSxJQUNKLE9BQStDLFFBQVE7QUFBQSxJQUN4RCxPQUFPLFFBQVE7QUFBQSxNQUNiLENBQUMsV0FDQyxPQUFPLGNBQWMsTUFDcEIsT0FBb0Q7QUFBQSxJQUN6RCxHQUFHO0FBQUEsRUFDTDtBQUNGO0FBRUEsSUFBTSx1QkFBdUIsQ0FBQyxZQUFxQjtBQUNqRCxVQUFRLGdCQUFnQjtBQUFBLElBQ3RCLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDSDtBQUVBLElBQU0sY0FBYyxDQUFDLFdBQW1CO0FBQ3RDLFFBQU0sWUFBWSxJQUFJLE9BQU8sT0FBTyxPQUFPLE9BQU8sV0FBVztBQUM3RCxZQUFVLG9CQUFvQixLQUFLO0FBQ25DLFlBQVUsUUFBUSxPQUFPLGNBQWMsT0FBTyx1QkFBdUI7QUFFckUsWUFBVSxPQUFRLE9BQTJDLFNBQVM7QUFDdEUsWUFBVSxJQUFLLE9BQXVDLE1BQU07QUFDNUQsTUFBSSxPQUFPLFVBQVU7QUFDbkIsY0FBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLEVBQ3JDO0FBRUEsTUFBSSxPQUFPLFlBQVk7QUFDckIsY0FBVSxRQUFRLE9BQU8sVUFBVTtBQUFBLEVBQ3JDO0FBRUEsWUFBVTtBQUFBLElBQ1AsT0FBZ0Q7QUFBQSxFQUNuRDtBQUVBLEVBQUMsVUFBNEMsVUFDM0MsT0FDQTtBQUVGLFNBQU87QUFDVDtBQU9PLElBQU0sZUFBZSxDQUMxQixTQUNBLE1BQ0EsWUFDdUI7QUFDdkIsUUFBTSxrQkFBa0Isb0JBQUksSUFBMkI7QUFDdkQsUUFBTSx5QkFBeUIsb0JBQUksSUFHakM7QUFDRixRQUFNLGNBQWMsb0JBQUksSUFBc0I7QUFDOUMsTUFBSTtBQUVKLFFBQU0sMEJBQTBCLENBQzlCQSxVQUNBLFdBQ0EsV0FDRztBQUNILFFBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxJQUNGO0FBRUEsVUFBTSxhQUNKLHVCQUF1QixJQUFJQSxRQUFPLEtBQUssb0JBQUksSUFBb0I7QUFDakUsZUFBVyxJQUFJLFdBQVcsTUFBTTtBQUNoQywyQkFBdUIsSUFBSUEsVUFBUyxVQUFVO0FBQUEsRUFDaEQ7QUFFQSxRQUFNLHNCQUFzQixDQUFDQyxnQkFBd0JELGFBQXFCO0FBQ3hFLGdCQUFZLElBQUlDLGdCQUFlRCxRQUFPO0FBRXRDLHdCQUFvQkEsVUFBU0MsY0FBYTtBQUMxQyx5QkFBcUJBLGNBQWE7QUFDbEMsSUFBQUEsZUFBYyxhQUFhO0FBRTNCLGVBQVcsVUFBVUQsU0FBUSxTQUFTO0FBQ3BDLE1BQUFDLGVBQWMsVUFBVSxZQUFZLE1BQU0sQ0FBQztBQUFBLElBQzdDO0FBRUEsSUFBQUEsZUFBYyxLQUFLLGlCQUFpQixDQUFDLGFBQWEsa0JBQWtCO0FBQ2xFLGlCQUFXLE9BQU8sQ0FBQyxhQUFhLGFBQWEsR0FBRztBQUM5Qyx3QkFBZ0IsSUFBSSxZQUFZLElBQUksR0FBRyxHQUFJLElBQUksS0FBSyxDQUFDO0FBRXJELG1CQUFXLGFBQWEsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUc7QUFDL0M7QUFBQSxZQUNFO0FBQUEsWUFDQTtBQUFBLFlBQ0EsSUFBSSxxQkFBcUIsU0FBUztBQUFBLFVBQ3BDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFFRCxJQUFBQSxlQUFjLE9BQU8sTUFBTTtBQUN6QixzQkFBZ0I7QUFBQSxRQUNkLFlBQVksSUFBSUEsY0FBYTtBQUFBLFFBQzdCQSxlQUFjLEtBQUs7QUFBQSxNQUNyQjtBQUVBLGlCQUFXLGFBQWEsT0FBTyxLQUFLQSxlQUFjLEtBQUssQ0FBQyxHQUFHO0FBQ3pEO0FBQUEsVUFDRSxZQUFZLElBQUlBLGNBQWE7QUFBQSxVQUM3QjtBQUFBLFVBQ0FBLGVBQWMscUJBQXFCLFNBQVM7QUFBQSxRQUM5QztBQUFBLE1BQ0Y7QUFFQSx1QkFBaUJEO0FBQUEsSUFDbkIsQ0FBQztBQUVELGVBQVcsY0FBY0EsU0FBUSxVQUF1QjtBQUN0RCxZQUFNLG1CQUFtQkMsZUFBYyxRQUFRLFdBQVcsS0FBSyxDQUFDO0FBQ2hFLDBCQUFvQixrQkFBa0IsVUFBVTtBQUFBLElBQ2xEO0FBRUEsV0FBT0E7QUFBQSxFQUNUO0FBRUEsUUFBTSxnQkFBZ0Isb0JBQW9CLElBQUksUUFBUSxHQUFHLE9BQU87QUFDaEUsZ0JBQWMsTUFBTSxNQUFNLE9BQU87QUFFakMsUUFBTSxpQkFBaUIsaUJBQ25CLG1CQUFtQixnQkFBZ0IsZUFBZSxJQUNsRCxvQkFBSSxJQUEwQjtBQUVsQyxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFsiY29tbWFuZCIsICJwYXJzZXJDb21tYW5kIl0KfQo=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-my-command",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "description": "Parse argv with Commander.js without executing the command",
5
5
  "keywords": [
6
6
  "parser",
@@ -44,7 +44,7 @@
44
44
  "lint": "prettier --check . && eslint --ext .js --ext .cjs --ext .mjs --ext .ts --ext .cts --ext .mts --ext .d.ts .",
45
45
  "prepare": "tsup ./src/index.ts --format esm,cjs --dts --clean --sourcemap inline --silent",
46
46
  "pretest": "tsc",
47
- "test": "glob -c \"tsx --test --test-reporter spec\" \"src/**/*.test.ts\"",
47
+ "test": "glob -c \"tsx --test --test-reporter spec\" \"test/**/*.test.ts\"",
48
48
  "posttest": "npm run lint",
49
49
  "test:coverage": "c8 npm run test"
50
50
  },