@jakubmazanec/args 1.0.3-unstable.feec6e4 → 2.0.0-next.2fa8a2c

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.
Files changed (221) hide show
  1. package/README.md +1 -1
  2. package/build/Arguments.js +2 -0
  3. package/build/Arguments.js.map +7 -0
  4. package/build/ArgumentsCommand.js +2 -0
  5. package/build/ArgumentsCommand.js.map +7 -0
  6. package/{dist → build}/ArgumentsOptions.d.ts +1 -1
  7. package/build/ArgumentsOptions.js +2 -0
  8. package/build/ArgumentsOptions.js.map +7 -0
  9. package/{dist → build}/ArgumentsParameters.d.ts +10 -20
  10. package/build/ArgumentsParameters.js +2 -0
  11. package/build/ArgumentsParameters.js.map +7 -0
  12. package/build/ArgumentsUnknownOptions.js +2 -0
  13. package/build/ArgumentsUnknownOptions.js.map +7 -0
  14. package/build/Argv.js +2 -0
  15. package/build/Argv.js.map +7 -0
  16. package/build/CommandConfig.js +2 -0
  17. package/build/CommandConfig.js.map +7 -0
  18. package/build/CommandsConfig.js +2 -0
  19. package/build/CommandsConfig.js.map +7 -0
  20. package/build/LongOptionName.js +2 -0
  21. package/build/LongOptionName.js.map +7 -0
  22. package/build/OptionConfig.js +2 -0
  23. package/build/OptionConfig.js.map +7 -0
  24. package/build/OptionsConfig.js +2 -0
  25. package/build/OptionsConfig.js.map +7 -0
  26. package/build/ParameterConfig.js +2 -0
  27. package/build/ParameterConfig.js.map +7 -0
  28. package/build/ParametersConfig.js +2 -0
  29. package/build/ParametersConfig.js.map +7 -0
  30. package/build/ParserConfig.js +2 -0
  31. package/build/ParserConfig.js.map +7 -0
  32. package/build/ParsingError.js +9 -0
  33. package/build/ParsingError.js.map +7 -0
  34. package/build/ShortOptionName.js +2 -0
  35. package/build/ShortOptionName.js.map +7 -0
  36. package/build/ValidationError.js +14 -0
  37. package/build/ValidationError.js.map +7 -0
  38. package/build/internals/Checker.js +98 -0
  39. package/build/internals/Checker.js.map +7 -0
  40. package/build/internals/CommandScope.js +44 -0
  41. package/build/internals/CommandScope.js.map +7 -0
  42. package/build/internals/NormalizedCommandConfig.js +2 -0
  43. package/build/internals/NormalizedCommandConfig.js.map +7 -0
  44. package/build/internals/NormalizedCommandsConfig.js +2 -0
  45. package/build/internals/NormalizedCommandsConfig.js.map +7 -0
  46. package/build/internals/OptionScope.js +69 -0
  47. package/build/internals/OptionScope.js.map +7 -0
  48. package/build/internals/castValue.js +17 -0
  49. package/build/internals/castValue.js.map +7 -0
  50. package/build/internals/commandToArguments.js +14 -0
  51. package/build/internals/commandToArguments.js.map +7 -0
  52. package/build/internals/createOptionShortNameMap.js +11 -0
  53. package/build/internals/createOptionShortNameMap.js.map +7 -0
  54. package/build/internals/expandArguments.js +14 -0
  55. package/build/internals/expandArguments.js.map +7 -0
  56. package/build/internals/isCommand.js +6 -0
  57. package/build/internals/isCommand.js.map +7 -0
  58. package/build/internals/isFalseString.js +6 -0
  59. package/build/internals/isFalseString.js.map +7 -0
  60. package/build/internals/isLongOption.js +6 -0
  61. package/build/internals/isLongOption.js.map +7 -0
  62. package/build/internals/isOptionLike.js +6 -0
  63. package/build/internals/isOptionLike.js.map +7 -0
  64. package/build/internals/isShortOption.js +6 -0
  65. package/build/internals/isShortOption.js.map +7 -0
  66. package/build/internals/isShortOptionsGroup.js +6 -0
  67. package/build/internals/isShortOptionsGroup.js.map +7 -0
  68. package/build/internals/isTrueString.js +6 -0
  69. package/build/internals/isTrueString.js.map +7 -0
  70. package/build/internals.js +18 -0
  71. package/build/internals.js.map +7 -0
  72. package/build/main.js +20 -0
  73. package/build/main.js.map +7 -0
  74. package/build/parseArguments.js +236 -0
  75. package/build/parseArguments.js.map +7 -0
  76. package/package.json +27 -16
  77. package/{src → source}/ArgumentsCommand.ts +3 -4
  78. package/source/ArgumentsOptions.ts +82 -0
  79. package/source/ArgumentsParameters.ts +149 -0
  80. package/source/ArgumentsUnknownOptions.ts +5 -0
  81. package/{src → source}/internals/Checker.ts +6 -6
  82. package/{src → source}/internals/OptionScope.ts +1 -1
  83. package/{src → source}/internals/castValue.ts +13 -12
  84. package/{src → source}/internals/commandToArguments.ts +4 -6
  85. package/{src → source}/parseArguments.ts +18 -28
  86. package/dist/Arguments.js +0 -3
  87. package/dist/Arguments.js.map +0 -1
  88. package/dist/ArgumentsCommand.js +0 -3
  89. package/dist/ArgumentsCommand.js.map +0 -1
  90. package/dist/ArgumentsOptions.js +0 -3
  91. package/dist/ArgumentsOptions.js.map +0 -1
  92. package/dist/ArgumentsParameters.js +0 -3
  93. package/dist/ArgumentsParameters.js.map +0 -1
  94. package/dist/ArgumentsUnknownOptions.js +0 -3
  95. package/dist/ArgumentsUnknownOptions.js.map +0 -1
  96. package/dist/Argv.js +0 -3
  97. package/dist/Argv.js.map +0 -1
  98. package/dist/CommandConfig.js +0 -3
  99. package/dist/CommandConfig.js.map +0 -1
  100. package/dist/CommandsConfig.js +0 -3
  101. package/dist/CommandsConfig.js.map +0 -1
  102. package/dist/LongOptionName.js +0 -3
  103. package/dist/LongOptionName.js.map +0 -1
  104. package/dist/OptionConfig.js +0 -3
  105. package/dist/OptionConfig.js.map +0 -1
  106. package/dist/OptionsConfig.js +0 -3
  107. package/dist/OptionsConfig.js.map +0 -1
  108. package/dist/ParameterConfig.js +0 -3
  109. package/dist/ParameterConfig.js.map +0 -1
  110. package/dist/ParametersConfig.js +0 -3
  111. package/dist/ParametersConfig.js.map +0 -1
  112. package/dist/ParserConfig.js +0 -3
  113. package/dist/ParserConfig.js.map +0 -1
  114. package/dist/ParsingError.js +0 -11
  115. package/dist/ParsingError.js.map +0 -1
  116. package/dist/ShortOptionName.js +0 -3
  117. package/dist/ShortOptionName.js.map +0 -1
  118. package/dist/ValidationError.js +0 -16
  119. package/dist/ValidationError.js.map +0 -1
  120. package/dist/internals/Checker.js +0 -115
  121. package/dist/internals/Checker.js.map +0 -1
  122. package/dist/internals/CommandScope.js +0 -48
  123. package/dist/internals/CommandScope.js.map +0 -1
  124. package/dist/internals/NormalizedCommandConfig.js +0 -3
  125. package/dist/internals/NormalizedCommandConfig.js.map +0 -1
  126. package/dist/internals/NormalizedCommandsConfig.js +0 -3
  127. package/dist/internals/NormalizedCommandsConfig.js.map +0 -1
  128. package/dist/internals/OptionScope.js +0 -87
  129. package/dist/internals/OptionScope.js.map +0 -1
  130. package/dist/internals/castValue.js +0 -25
  131. package/dist/internals/castValue.js.map +0 -1
  132. package/dist/internals/commandToArguments.js +0 -21
  133. package/dist/internals/commandToArguments.js.map +0 -1
  134. package/dist/internals/createOptionShortNameMap.js +0 -16
  135. package/dist/internals/createOptionShortNameMap.js.map +0 -1
  136. package/dist/internals/expandArguments.js +0 -21
  137. package/dist/internals/expandArguments.js.map +0 -1
  138. package/dist/internals/isCommand.js +0 -11
  139. package/dist/internals/isCommand.js.map +0 -1
  140. package/dist/internals/isFalseString.js +0 -10
  141. package/dist/internals/isFalseString.js.map +0 -1
  142. package/dist/internals/isLongOption.js +0 -11
  143. package/dist/internals/isLongOption.js.map +0 -1
  144. package/dist/internals/isOptionLike.js +0 -11
  145. package/dist/internals/isOptionLike.js.map +0 -1
  146. package/dist/internals/isShortOption.js +0 -11
  147. package/dist/internals/isShortOption.js.map +0 -1
  148. package/dist/internals/isShortOptionsGroup.js +0 -11
  149. package/dist/internals/isShortOptionsGroup.js.map +0 -1
  150. package/dist/internals/isTrueString.js +0 -10
  151. package/dist/internals/isTrueString.js.map +0 -1
  152. package/dist/internals.js +0 -18
  153. package/dist/internals.js.map +0 -1
  154. package/dist/main.js +0 -20
  155. package/dist/main.js.map +0 -1
  156. package/dist/parseArguments.js +0 -244
  157. package/dist/parseArguments.js.map +0 -1
  158. package/src/ArgumentsOptions.ts +0 -89
  159. package/src/ArgumentsParameters.ts +0 -158
  160. package/src/ArgumentsUnknownOptions.ts +0 -6
  161. /package/{dist → build}/Arguments.d.ts +0 -0
  162. /package/{dist → build}/ArgumentsCommand.d.ts +0 -0
  163. /package/{dist → build}/ArgumentsUnknownOptions.d.ts +0 -0
  164. /package/{dist → build}/Argv.d.ts +0 -0
  165. /package/{dist → build}/CommandConfig.d.ts +0 -0
  166. /package/{dist → build}/CommandsConfig.d.ts +0 -0
  167. /package/{dist → build}/LongOptionName.d.ts +0 -0
  168. /package/{dist → build}/OptionConfig.d.ts +0 -0
  169. /package/{dist → build}/OptionsConfig.d.ts +0 -0
  170. /package/{dist → build}/ParameterConfig.d.ts +0 -0
  171. /package/{dist → build}/ParametersConfig.d.ts +0 -0
  172. /package/{dist → build}/ParserConfig.d.ts +0 -0
  173. /package/{dist → build}/ParsingError.d.ts +0 -0
  174. /package/{dist → build}/ShortOptionName.d.ts +0 -0
  175. /package/{dist → build}/ValidationError.d.ts +0 -0
  176. /package/{dist → build}/internals/Checker.d.ts +0 -0
  177. /package/{dist → build}/internals/CommandScope.d.ts +0 -0
  178. /package/{dist → build}/internals/NormalizedCommandConfig.d.ts +0 -0
  179. /package/{dist → build}/internals/NormalizedCommandsConfig.d.ts +0 -0
  180. /package/{dist → build}/internals/OptionScope.d.ts +0 -0
  181. /package/{dist → build}/internals/castValue.d.ts +0 -0
  182. /package/{dist → build}/internals/commandToArguments.d.ts +0 -0
  183. /package/{dist → build}/internals/createOptionShortNameMap.d.ts +0 -0
  184. /package/{dist → build}/internals/expandArguments.d.ts +0 -0
  185. /package/{dist → build}/internals/isCommand.d.ts +0 -0
  186. /package/{dist → build}/internals/isFalseString.d.ts +0 -0
  187. /package/{dist → build}/internals/isLongOption.d.ts +0 -0
  188. /package/{dist → build}/internals/isOptionLike.d.ts +0 -0
  189. /package/{dist → build}/internals/isShortOption.d.ts +0 -0
  190. /package/{dist → build}/internals/isShortOptionsGroup.d.ts +0 -0
  191. /package/{dist → build}/internals/isTrueString.d.ts +0 -0
  192. /package/{dist → build}/internals.d.ts +0 -0
  193. /package/{dist → build}/main.d.ts +0 -0
  194. /package/{dist → build}/parseArguments.d.ts +0 -0
  195. /package/{src → source}/Arguments.ts +0 -0
  196. /package/{src → source}/Argv.ts +0 -0
  197. /package/{src → source}/CommandConfig.ts +0 -0
  198. /package/{src → source}/CommandsConfig.ts +0 -0
  199. /package/{src → source}/LongOptionName.ts +0 -0
  200. /package/{src → source}/OptionConfig.ts +0 -0
  201. /package/{src → source}/OptionsConfig.ts +0 -0
  202. /package/{src → source}/ParameterConfig.ts +0 -0
  203. /package/{src → source}/ParametersConfig.ts +0 -0
  204. /package/{src → source}/ParserConfig.ts +0 -0
  205. /package/{src → source}/ParsingError.ts +0 -0
  206. /package/{src → source}/ShortOptionName.ts +0 -0
  207. /package/{src → source}/ValidationError.ts +0 -0
  208. /package/{src → source}/internals/CommandScope.ts +0 -0
  209. /package/{src → source}/internals/NormalizedCommandConfig.ts +0 -0
  210. /package/{src → source}/internals/NormalizedCommandsConfig.ts +0 -0
  211. /package/{src → source}/internals/createOptionShortNameMap.ts +0 -0
  212. /package/{src → source}/internals/expandArguments.ts +0 -0
  213. /package/{src → source}/internals/isCommand.ts +0 -0
  214. /package/{src → source}/internals/isFalseString.ts +0 -0
  215. /package/{src → source}/internals/isLongOption.ts +0 -0
  216. /package/{src → source}/internals/isOptionLike.ts +0 -0
  217. /package/{src → source}/internals/isShortOption.ts +0 -0
  218. /package/{src → source}/internals/isShortOptionsGroup.ts +0 -0
  219. /package/{src → source}/internals/isTrueString.ts +0 -0
  220. /package/{src → source}/internals.ts +0 -0
  221. /package/{src → source}/main.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/internals/isOptionLike.ts"],"sourcesContent":["const OPTION_LIKE = /^-{1,2}[a-z][-a-z0-9]*=?/iu;\n\n/**\n * A function that checks if a value is an argument that looks like a long option, short option, or a short options group i.e. one or two dashes and a single word consisting only of letters, numbers (but not at the start of the word) or dashes, optionally followed by `=`.\n *\n * @param value The value to check.\n * @return `true` if `value` is an option.\n */\nexport function isOptionLike(value: string): boolean {\n return OPTION_LIKE.test(value);\n}\n"],"names":["OPTION_LIKE","isOptionLike","value","test"],"mappings":"AAAA,MAAMA,cAAc;AAEpB;;;;;CAKC,GACD,OAAO,SAASC,aAAaC,KAAa;IACxC,OAAOF,YAAYG,IAAI,CAACD;AAC1B"}
@@ -1,11 +0,0 @@
1
- const SHORT_OPTION_REGEXP = /^-[a-z]{1}$/iu;
2
- /**
3
- * A function that checks if a value is an argument that looks like a short option, i.e. a dash and a single letter; e.g. `'-x'`.
4
- *
5
- * @param value The value to check.
6
- * @return `true` if `value` is a short option.
7
- */ export function isShortOption(arg) {
8
- return SHORT_OPTION_REGEXP.test(arg);
9
- }
10
-
11
- //# sourceMappingURL=isShortOption.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/internals/isShortOption.ts"],"sourcesContent":["const SHORT_OPTION_REGEXP = /^-[a-z]{1}$/iu;\n\n/**\n * A function that checks if a value is an argument that looks like a short option, i.e. a dash and a single letter; e.g. `'-x'`.\n *\n * @param value The value to check.\n * @return `true` if `value` is a short option.\n */\nexport function isShortOption(arg: string): boolean {\n return SHORT_OPTION_REGEXP.test(arg);\n}\n"],"names":["SHORT_OPTION_REGEXP","isShortOption","arg","test"],"mappings":"AAAA,MAAMA,sBAAsB;AAE5B;;;;;CAKC,GACD,OAAO,SAASC,cAAcC,GAAW;IACvC,OAAOF,oBAAoBG,IAAI,CAACD;AAClC"}
@@ -1,11 +0,0 @@
1
- export const SHORT_OPTIONS_GROUP_REGEXP = /^-[a-z]{2,}$/iu;
2
- /**
3
- * A function that checks if a value is an argument that looks like a short options group, i.e. a dash and a single letter; e.g. `'-x'`.
4
- *
5
- * @param value The value to check.
6
- * @return `true` if `value` is a short option.
7
- */ export function isShortOptionsGroup(arg) {
8
- return SHORT_OPTIONS_GROUP_REGEXP.test(arg);
9
- }
10
-
11
- //# sourceMappingURL=isShortOptionsGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/internals/isShortOptionsGroup.ts"],"sourcesContent":["export const SHORT_OPTIONS_GROUP_REGEXP = /^-[a-z]{2,}$/iu;\n\n/**\n * A function that checks if a value is an argument that looks like a short options group, i.e. a dash and a single letter; e.g. `'-x'`.\n *\n * @param value The value to check.\n * @return `true` if `value` is a short option.\n */\nexport function isShortOptionsGroup(arg: string): boolean {\n return SHORT_OPTIONS_GROUP_REGEXP.test(arg);\n}\n"],"names":["SHORT_OPTIONS_GROUP_REGEXP","isShortOptionsGroup","arg","test"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,iBAAiB;AAE3D;;;;;CAKC,GACD,OAAO,SAASC,oBAAoBC,GAAW;IAC7C,OAAOF,2BAA2BG,IAAI,CAACD;AACzC"}
@@ -1,10 +0,0 @@
1
- const TRUE_STRING_REGEXP = /^\s*(?:true|1|yes|on)\s*$/iu;
2
- /**
3
- * A function that checks if a string value is a true string. A true string is `'true'`, `'1'`, `'yes'`, or `'on'` (case insensitive).
4
- *
5
- * @param value The value to be tested.
6
- * @return `true` if string is a true string. */ export function isTrueString(value) {
7
- return TRUE_STRING_REGEXP.test(value);
8
- }
9
-
10
- //# sourceMappingURL=isTrueString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/internals/isTrueString.ts"],"sourcesContent":["const TRUE_STRING_REGEXP = /^\\s*(?:true|1|yes|on)\\s*$/iu;\n\n/**\n * A function that checks if a string value is a true string. A true string is `'true'`, `'1'`, `'yes'`, or `'on'` (case insensitive).\n *\n * @param value The value to be tested.\n * @return `true` if string is a true string. */\nexport function isTrueString(value: string) {\n return TRUE_STRING_REGEXP.test(value);\n}\n"],"names":["TRUE_STRING_REGEXP","isTrueString","value","test"],"mappings":"AAAA,MAAMA,qBAAqB;AAE3B;;;;8CAI8C,GAC9C,OAAO,SAASC,aAAaC,KAAa;IACxC,OAAOF,mBAAmBG,IAAI,CAACD;AACjC"}
package/dist/internals.js DELETED
@@ -1,18 +0,0 @@
1
- export * from './internals/castValue.js';
2
- export * from './internals/Checker.js';
3
- export * from './internals/CommandScope.js';
4
- export * from './internals/commandToArguments.js';
5
- export * from './internals/createOptionShortNameMap.js';
6
- export * from './internals/expandArguments.js';
7
- export * from './internals/isCommand.js';
8
- export * from './internals/isFalseString.js';
9
- export * from './internals/isLongOption.js';
10
- export * from './internals/isOptionLike.js';
11
- export * from './internals/isShortOption.js';
12
- export * from './internals/isShortOptionsGroup.js';
13
- export * from './internals/isTrueString.js';
14
- export * from './internals/NormalizedCommandConfig.js';
15
- export * from './internals/NormalizedCommandsConfig.js';
16
- export * from './internals/OptionScope.js';
17
-
18
- //# sourceMappingURL=internals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internals.ts"],"sourcesContent":["export * from './internals/castValue.js';\nexport * from './internals/Checker.js';\nexport * from './internals/CommandScope.js';\nexport * from './internals/commandToArguments.js';\nexport * from './internals/createOptionShortNameMap.js';\nexport * from './internals/expandArguments.js';\nexport * from './internals/isCommand.js';\nexport * from './internals/isFalseString.js';\nexport * from './internals/isLongOption.js';\nexport * from './internals/isOptionLike.js';\nexport * from './internals/isShortOption.js';\nexport * from './internals/isShortOptionsGroup.js';\nexport * from './internals/isTrueString.js';\nexport * from './internals/NormalizedCommandConfig.js';\nexport * from './internals/NormalizedCommandsConfig.js';\nexport * from './internals/OptionScope.js';\n"],"names":[],"mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC,cAAc,8BAA8B;AAC5C,cAAc,oCAAoC;AAClD,cAAc,0CAA0C;AACxD,cAAc,iCAAiC;AAC/C,cAAc,2BAA2B;AACzC,cAAc,+BAA+B;AAC7C,cAAc,8BAA8B;AAC5C,cAAc,8BAA8B;AAC5C,cAAc,+BAA+B;AAC7C,cAAc,qCAAqC;AACnD,cAAc,8BAA8B;AAC5C,cAAc,yCAAyC;AACvD,cAAc,0CAA0C;AACxD,cAAc,6BAA6B"}
package/dist/main.js DELETED
@@ -1,20 +0,0 @@
1
- export * from './Arguments.js';
2
- export * from './ArgumentsCommand.js';
3
- export * from './ArgumentsOptions.js';
4
- export * from './ArgumentsParameters.js';
5
- export * from './ArgumentsUnknownOptions.js';
6
- export * from './Argv.js';
7
- export * from './CommandConfig.js';
8
- export * from './CommandsConfig.js';
9
- export * from './LongOptionName.js';
10
- export * from './OptionConfig.js';
11
- export * from './OptionsConfig.js';
12
- export * from './ParameterConfig.js';
13
- export * from './ParametersConfig.js';
14
- export * from './parseArguments.js';
15
- export * from './ParserConfig.js';
16
- export * from './ParsingError.js';
17
- export * from './ShortOptionName.js';
18
- export * from './ValidationError.js';
19
-
20
- //# sourceMappingURL=main.js.map
package/dist/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/main.ts"],"sourcesContent":["export * from './Arguments.js';\nexport * from './ArgumentsCommand.js';\nexport * from './ArgumentsOptions.js';\nexport * from './ArgumentsParameters.js';\nexport * from './ArgumentsUnknownOptions.js';\nexport * from './Argv.js';\nexport * from './CommandConfig.js';\nexport * from './CommandsConfig.js';\nexport * from './LongOptionName.js';\nexport * from './OptionConfig.js';\nexport * from './OptionsConfig.js';\nexport * from './ParameterConfig.js';\nexport * from './ParametersConfig.js';\nexport * from './parseArguments.js';\nexport * from './ParserConfig.js';\nexport * from './ParsingError.js';\nexport * from './ShortOptionName.js';\nexport * from './ValidationError.js';\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,wBAAwB;AACtC,cAAc,2BAA2B;AACzC,cAAc,+BAA+B;AAC7C,cAAc,YAAY;AAC1B,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,qBAAqB;AACnC,cAAc,uBAAuB;AACrC,cAAc,wBAAwB;AACtC,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,uBAAuB"}
@@ -1,244 +0,0 @@
1
- import { castValue, Checker, CommandScope, commandToArguments, createOptionShortNameMap, expandArguments, isFalseString, isLongOption, isOptionLike, isShortOption, isTrueString, OptionScope } from './internals.js';
2
- import { ParsingError } from './ParsingError.js';
3
- /* eslint-disable no-param-reassign -- we need to add properties to the `parsedOption` object */ function commitOptionScope(optionScope, parsedOptions) {
4
- let optionValue = optionScope.getValue();
5
- parsedOptions[optionScope.name] = optionValue;
6
- if (optionScope.config.validate) {
7
- optionScope.config.validate(parsedOptions[optionScope.name]); // type assertion needed to make TypeScript happy
8
- }
9
- }
10
- /* eslint-enable no-param-reassign */ /**
11
- * Parses a list of command line arguments into an arguments object. Based on provided parser config, raw arguments can be parsed as commands, options and parameters.
12
- *
13
- * @param argv Raw arguments to be parsed.
14
- * @param parserConfig Parser configuration.
15
- * @return Parsed arguments.
16
- *
17
- */ // TODO: refactor
18
- // eslint-disable-next-line complexity -- TODO
19
- export function parseArguments(argv, parserConfig) {
20
- // create separate configs for commands, parameters and options
21
- let commandsConfig = parserConfig.commands ?? [];
22
- let parametersConfig = parserConfig.parameters ?? [];
23
- let optionsConfig = parserConfig.options ?? {};
24
- // check if parser config is valid
25
- let checker = new Checker();
26
- checker.checkCommandsConfig(commandsConfig);
27
- checker.checkParametersConfig(parametersConfig);
28
- checker.checkOptionsConfig(optionsConfig);
29
- // normalize some configs
30
- let normalizedCommandsConfig = commandsConfig.map((command)=>({
31
- command: command.toLowerCase(),
32
- args: commandToArguments(command.toLowerCase())
33
- }));
34
- let commandFirstArguments = normalizedCommandsConfig.map((commandConfig)=>commandConfig.args[0]);
35
- let optionShortNameMap = parserConfig.options ? createOptionShortNameMap(parserConfig.options) : {};
36
- // variables for keeping track of the parsing
37
- let parsedCommand;
38
- let parsedParameters = [];
39
- let parsedOptions = {};
40
- let parsedUnknownOptions = {};
41
- let restArgs = [];
42
- let optionScope = null;
43
- let commandScope = null;
44
- //
45
- let args = expandArguments(argv);
46
- for (let [i, arg] of args.entries()){
47
- // extract rest arguments
48
- if (arg === '--') {
49
- restArgs.push(...args.slice(i + 1));
50
- break;
51
- }
52
- try {
53
- if (isOptionLike(arg)) {
54
- // first let's handle options
55
- if (optionScope) {
56
- commitOptionScope(optionScope, optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions);
57
- }
58
- // if there is still unhandled `commandScope`, let's handle its args as parameters...
59
- if (commandScope) {
60
- let unhandledArgs = commandScope.getArgs();
61
- for (let unhandledArg of unhandledArgs){
62
- if (parserConfig.allowUnknownParameters) {
63
- // let's handle other parameter
64
- parsedParameters.push(unhandledArg);
65
- } else {
66
- checker.addError(new ParsingError('UNKNOWN_PARAMETER', {
67
- messageParameters: [
68
- unhandledArg
69
- ]
70
- }));
71
- }
72
- }
73
- }
74
- optionScope = null;
75
- commandScope = null;
76
- let optionName = arg;
77
- let optionValue;
78
- // Extract option name and value
79
- if (optionName.includes('=')) {
80
- let result = optionName.split('=', 2);
81
- if (result[0] && result[1]) {
82
- [optionName, optionValue] = result;
83
- }
84
- }
85
- if (isShortOption(optionName)) {
86
- let fullOptionName = optionShortNameMap[optionName.slice(1)];
87
- if (typeof fullOptionName === 'string') {
88
- optionName = fullOptionName;
89
- }
90
- } else if (isLongOption(optionName)) {
91
- optionName = optionName.slice(2);
92
- }
93
- let newOptionScope = new OptionScope(optionName, optionsConfig, parserConfig.allowUnknownOptions);
94
- if (typeof parsedOptions[newOptionScope.name] !== 'undefined') {
95
- if (newOptionScope.config.multiple) {
96
- newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];
97
- } else if (newOptionScope.config.type === 'number' && newOptionScope.config.count) {
98
- newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];
99
- }
100
- }
101
- if (typeof optionValue !== 'undefined') {
102
- newOptionScope.captureArg(optionValue);
103
- }
104
- if (newOptionScope.isComplete()) {
105
- commitOptionScope(newOptionScope, optionsConfig[newOptionScope.name] ? parsedOptions : parsedUnknownOptions);
106
- optionScope = null;
107
- } else {
108
- optionScope = newOptionScope;
109
- }
110
- } else if (optionScope && !(optionScope.config.type === 'boolean' && !optionScope.config.multiple)) {
111
- // let's handle adding more values to previous option, but not if it's signle boolean option
112
- optionScope.captureArg(arg);
113
- if (optionScope.isComplete()) {
114
- commitOptionScope(optionScope, optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions);
115
- optionScope = null;
116
- }
117
- } else if (optionScope && optionScope.config.type === 'boolean' && !optionScope.config.multiple && (isFalseString(arg) || isTrueString(arg))) {
118
- // we're adding value to a single boolean option only if the value is "false" or "true" string
119
- optionScope.captureArg(arg);
120
- if (optionScope.isComplete()) {
121
- commitOptionScope(optionScope, optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions);
122
- optionScope = null;
123
- }
124
- } else if (commandScope) {
125
- // let's handle rest of the command
126
- commandScope.captureArg(arg);
127
- if (commandScope.isComplete()) {
128
- parsedCommand = commandScope.getValue();
129
- commandScope = null;
130
- } else if (commandScope.isDone()) {
131
- let unhandledArgs = commandScope.getArgs();
132
- for (let unhandledArg of unhandledArgs){
133
- if (parserConfig.allowUnknownParameters) {
134
- // let's handle other parameter
135
- parsedParameters.push(unhandledArg);
136
- } else {
137
- checker.addError(new ParsingError('UNKNOWN_PARAMETER', {
138
- messageParameters: [
139
- unhandledArg
140
- ]
141
- }));
142
- }
143
- }
144
- commandScope = null;
145
- }
146
- } else if (typeof parsedCommand === 'undefined' && commandFirstArguments.includes(arg.toLowerCase())) {
147
- // let's handle command
148
- let newCommandScope = new CommandScope(arg, normalizedCommandsConfig);
149
- if (newCommandScope.isComplete()) {
150
- parsedCommand = newCommandScope.getValue();
151
- commandScope = null;
152
- } else {
153
- commandScope = newCommandScope;
154
- }
155
- } else if (parametersConfig[parsedParameters.length]) {
156
- // let's handle configured parameter
157
- let parameterConfig = parametersConfig[parsedParameters.length];
158
- let parameterValue = castValue(arg, parameterConfig.type);
159
- if (parameterConfig.type !== 'boolean' && typeof parameterConfig.choices !== 'undefined' && !parameterConfig.choices.includes(parameterValue) // during runtime `parameterValue` has correct type
160
- ) {
161
- throw new ParsingError('INVALID_PARAMETER', {
162
- messageParameters: [
163
- parameterValue,
164
- parameterConfig.label ?? parsedParameters.length,
165
- parameterConfig.choices.map((choice)=>`"${choice}"`).join(', ')
166
- ]
167
- });
168
- }
169
- parsedParameters.push(parameterValue);
170
- if (parameterConfig.validate) {
171
- parameterConfig.validate(parameterValue); // during runtime `parameterValue` has correct type
172
- }
173
- } else if (parserConfig.allowUnknownParameters) {
174
- // let's handle other parameter
175
- parsedParameters.push(arg);
176
- } else {
177
- throw new ParsingError('UNKNOWN_PARAMETER', {
178
- messageParameters: [
179
- arg
180
- ]
181
- });
182
- }
183
- } catch (error) {
184
- optionScope = null;
185
- commandScope = null;
186
- checker.addError(error);
187
- }
188
- }
189
- try {
190
- if (optionScope) {
191
- commitOptionScope(optionScope, optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions);
192
- }
193
- // if there is still unhandled `commandScope`, let's handle its args as parameters...
194
- if (commandScope) {
195
- let unhandledArgs = commandScope.getArgs();
196
- for (let unhandledArg of unhandledArgs){
197
- if (parserConfig.allowUnknownParameters) {
198
- // let's handle other parameter
199
- parsedParameters.push(unhandledArg);
200
- } else {
201
- checker.addError(new ParsingError('UNKNOWN_PARAMETER', {
202
- messageParameters: [
203
- unhandledArg
204
- ]
205
- }));
206
- }
207
- }
208
- }
209
- // if there are missing parsed parameters, add undefined
210
- for (let [i] of parametersConfig.entries()){
211
- if (typeof parsedParameters[i] === 'undefined') {
212
- parsedParameters[i] = undefined;
213
- }
214
- }
215
- // handle default option values...
216
- for (let [optionName, optionConfig] of Object.entries(optionsConfig)){
217
- if (typeof parsedOptions[optionName] === 'undefined' && typeof optionConfig.defaultValue !== 'undefined') {
218
- parsedOptions[optionName] = optionConfig.defaultValue;
219
- } else if (typeof parsedOptions[optionName] === 'undefined') {
220
- parsedOptions[optionName] = undefined;
221
- }
222
- }
223
- // handle default parameters values...
224
- for (let [i, parameterConfig] of parametersConfig.entries()){
225
- if (typeof parsedParameters[i] === 'undefined' && typeof parameterConfig.defaultValue !== 'undefined') {
226
- parsedParameters[i] = parameterConfig.defaultValue;
227
- }
228
- }
229
- } catch (error) {
230
- checker.addError(error);
231
- }
232
- checker.checkParsedParameters(parametersConfig, parsedParameters);
233
- checker.checkParsedOptions(optionsConfig, parsedOptions);
234
- return {
235
- command: normalizedCommandsConfig.length ? parsedCommand : null,
236
- parameters: parametersConfig.length || parserConfig.allowUnknownParameters ? parsedParameters : null,
237
- options: Object.keys(optionsConfig).length ? parsedOptions : null,
238
- unknownOptions: parserConfig.allowUnknownOptions ? parsedUnknownOptions : null,
239
- rest: restArgs,
240
- errors: checker.errors
241
- };
242
- }
243
-
244
- //# sourceMappingURL=parseArguments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/parseArguments.ts"],"sourcesContent":["import {type Arguments} from './Arguments.js';\nimport {type ArgumentsCommand} from './ArgumentsCommand.js';\nimport {type ArgumentsOptions} from './ArgumentsOptions.js';\nimport {type ArgumentsParameters} from './ArgumentsParameters.js';\nimport {type ArgumentsUnknownOptions} from './ArgumentsUnknownOptions.js';\nimport {type Argv} from './Argv.js';\nimport {\n castValue,\n Checker,\n CommandScope,\n commandToArguments,\n createOptionShortNameMap,\n expandArguments,\n isFalseString,\n isLongOption,\n isOptionLike,\n isShortOption,\n isTrueString,\n type NormalizedCommandsConfig,\n OptionScope,\n} from './internals.js';\nimport {type ParameterConfig} from './ParameterConfig.js';\nimport {type ParserConfig} from './ParserConfig.js';\nimport {ParsingError} from './ParsingError.js';\n\n/* eslint-disable no-param-reassign -- we need to add properties to the `parsedOption` object */\nfunction commitOptionScope(optionScope: OptionScope, parsedOptions: Record<string, unknown>) {\n let optionValue = optionScope.getValue();\n\n parsedOptions[optionScope.name] = optionValue;\n\n if (optionScope.config.validate) {\n optionScope.config.validate(parsedOptions[optionScope.name] as never); // type assertion needed to make TypeScript happy\n }\n}\n/* eslint-enable no-param-reassign */\n\n/**\n * Parses a list of command line arguments into an arguments object. Based on provided parser config, raw arguments can be parsed as commands, options and parameters.\n *\n * @param argv Raw arguments to be parsed.\n * @param parserConfig Parser configuration.\n * @return Parsed arguments.\n *\n */\n// TODO: refactor\n// eslint-disable-next-line complexity -- TODO\nexport function parseArguments<const O extends ParserConfig>(\n argv: Argv,\n parserConfig: O,\n): Arguments<O> {\n // create separate configs for commands, parameters and options\n let commandsConfig = parserConfig.commands ?? [];\n let parametersConfig = parserConfig.parameters ?? [];\n let optionsConfig = parserConfig.options ?? {};\n\n // check if parser config is valid\n let checker = new Checker();\n\n checker.checkCommandsConfig(commandsConfig);\n checker.checkParametersConfig(parametersConfig);\n checker.checkOptionsConfig(optionsConfig);\n\n // normalize some configs\n let normalizedCommandsConfig: NormalizedCommandsConfig = commandsConfig.map((command) => ({\n command: command.toLowerCase(),\n args: commandToArguments(command.toLowerCase()),\n }));\n let commandFirstArguments = normalizedCommandsConfig.map(\n (commandConfig) => commandConfig.args[0],\n );\n let optionShortNameMap = parserConfig.options\n ? createOptionShortNameMap(parserConfig.options)\n : {};\n\n // variables for keeping track of the parsing\n let parsedCommand: string | undefined;\n let parsedParameters: unknown[] = [];\n let parsedOptions: Record<string, unknown> = {};\n let parsedUnknownOptions: Record<string, unknown> = {};\n let restArgs: string[] = [];\n let optionScope: OptionScope | null = null;\n let commandScope: CommandScope | null = null;\n\n //\n let args = expandArguments(argv);\n\n for (let [i, arg] of args.entries()) {\n // extract rest arguments\n if (arg === '--') {\n restArgs.push(...args.slice(i + 1));\n\n break;\n }\n\n try {\n if (isOptionLike(arg)) {\n // first let's handle options\n\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n }\n\n optionScope = null;\n commandScope = null;\n\n let optionName = arg;\n let optionValue;\n\n // Extract option name and value\n if (optionName.includes('=')) {\n let result = optionName.split('=', 2);\n\n if (result[0] && result[1]) {\n [optionName, optionValue] = result;\n }\n }\n\n if (isShortOption(optionName)) {\n let fullOptionName = optionShortNameMap[optionName.slice(1)];\n\n if (typeof fullOptionName === 'string') {\n optionName = fullOptionName;\n }\n } else if (isLongOption(optionName)) {\n optionName = optionName.slice(2);\n }\n\n let newOptionScope = new OptionScope(\n optionName,\n optionsConfig,\n parserConfig.allowUnknownOptions,\n );\n\n if (typeof parsedOptions[newOptionScope.name] !== 'undefined') {\n if (newOptionScope.config.multiple) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n } else if (newOptionScope.config.type === 'number' && newOptionScope.config.count) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n }\n }\n\n if (typeof optionValue !== 'undefined') {\n newOptionScope.captureArg(optionValue);\n }\n\n if (newOptionScope.isComplete()) {\n commitOptionScope(\n newOptionScope,\n optionsConfig[newOptionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n } else {\n optionScope = newOptionScope;\n }\n } else if (\n optionScope &&\n !(optionScope.config.type === 'boolean' && !optionScope.config.multiple)\n ) {\n // let's handle adding more values to previous option, but not if it's signle boolean option\n\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (\n optionScope &&\n optionScope.config.type === 'boolean' &&\n !optionScope.config.multiple &&\n (isFalseString(arg) || isTrueString(arg))\n ) {\n // we're adding value to a single boolean option only if the value is \"false\" or \"true\" string\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (commandScope) {\n // let's handle rest of the command\n\n commandScope.captureArg(arg);\n\n if (commandScope.isComplete()) {\n parsedCommand = commandScope.getValue();\n commandScope = null;\n } else if (commandScope.isDone()) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n\n commandScope = null;\n }\n } else if (\n typeof parsedCommand === 'undefined' &&\n commandFirstArguments.includes(arg.toLowerCase())\n ) {\n // let's handle command\n\n let newCommandScope = new CommandScope(arg, normalizedCommandsConfig);\n\n if (newCommandScope.isComplete()) {\n parsedCommand = newCommandScope.getValue();\n commandScope = null;\n } else {\n commandScope = newCommandScope;\n }\n } else if (parametersConfig[parsedParameters.length]) {\n // let's handle configured parameter\n let parameterConfig = parametersConfig[parsedParameters.length] as ParameterConfig;\n let parameterValue = castValue(arg, parameterConfig.type);\n\n if (\n parameterConfig.type !== 'boolean' &&\n typeof parameterConfig.choices !== 'undefined' &&\n !parameterConfig.choices.includes(parameterValue as never) // during runtime `parameterValue` has correct type\n ) {\n throw new ParsingError('INVALID_PARAMETER', {\n messageParameters: [\n parameterValue,\n parameterConfig.label ?? parsedParameters.length,\n parameterConfig.choices.map((choice) => `\"${choice}\"`).join(', '),\n ],\n });\n }\n\n parsedParameters.push(parameterValue);\n\n if (parameterConfig.validate) {\n parameterConfig.validate(parameterValue as never); // during runtime `parameterValue` has correct type\n }\n } else if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(arg);\n } else {\n throw new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [arg]});\n }\n } catch (error: unknown) {\n optionScope = null;\n commandScope = null;\n\n checker.addError(error as Error);\n }\n }\n\n try {\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n }\n\n // if there are missing parsed parameters, add undefined\n for (let [i] of parametersConfig.entries()) {\n if (typeof parsedParameters[i] === 'undefined') {\n parsedParameters[i] = undefined;\n }\n }\n\n // handle default option values...\n for (let [optionName, optionConfig] of Object.entries(optionsConfig)) {\n if (\n typeof parsedOptions[optionName] === 'undefined' &&\n typeof optionConfig.defaultValue !== 'undefined'\n ) {\n parsedOptions[optionName] = optionConfig.defaultValue;\n } else if (typeof parsedOptions[optionName] === 'undefined') {\n parsedOptions[optionName] = undefined;\n }\n }\n\n // handle default parameters values...\n for (let [i, parameterConfig] of parametersConfig.entries()) {\n if (\n typeof parsedParameters[i] === 'undefined' &&\n typeof parameterConfig.defaultValue !== 'undefined'\n ) {\n parsedParameters[i] = parameterConfig.defaultValue;\n }\n }\n } catch (error: unknown) {\n checker.addError(error as Error);\n }\n\n checker.checkParsedParameters(parametersConfig, parsedParameters);\n checker.checkParsedOptions(optionsConfig, parsedOptions);\n\n return {\n command: (normalizedCommandsConfig.length ? parsedCommand : null) as ArgumentsCommand<O>,\n parameters: (parametersConfig.length || parserConfig.allowUnknownParameters\n ? parsedParameters\n : null) as ArgumentsParameters<O>,\n options: (Object.keys(optionsConfig).length ? parsedOptions : null) as ArgumentsOptions<O>,\n unknownOptions: (parserConfig.allowUnknownOptions\n ? parsedUnknownOptions\n : null) as ArgumentsUnknownOptions<O>,\n rest: restArgs,\n errors: checker.errors,\n };\n}\n"],"names":["castValue","Checker","CommandScope","commandToArguments","createOptionShortNameMap","expandArguments","isFalseString","isLongOption","isOptionLike","isShortOption","isTrueString","OptionScope","ParsingError","commitOptionScope","optionScope","parsedOptions","optionValue","getValue","name","config","validate","parseArguments","argv","parserConfig","commandsConfig","commands","parametersConfig","parameters","optionsConfig","options","checker","checkCommandsConfig","checkParametersConfig","checkOptionsConfig","normalizedCommandsConfig","map","command","toLowerCase","args","commandFirstArguments","commandConfig","optionShortNameMap","parsedCommand","parsedParameters","parsedUnknownOptions","restArgs","commandScope","i","arg","entries","push","slice","unhandledArgs","getArgs","unhandledArg","allowUnknownParameters","addError","messageParameters","optionName","includes","result","split","fullOptionName","newOptionScope","allowUnknownOptions","multiple","previousParsedValue","type","count","captureArg","isComplete","isDone","newCommandScope","length","parameterConfig","parameterValue","choices","label","choice","join","error","undefined","optionConfig","Object","defaultValue","checkParsedParameters","checkParsedOptions","keys","unknownOptions","rest","errors"],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- import {type TupleToUnion} from '@jakubmazanec/ts-utils';
2
-
3
- import {
4
- type CountOptionConfig,
5
- type BooleansOptionConfig,
6
- type NumbersOptionConfig,
7
- type StringsOptionConfig,
8
- type OptionConfig,
9
- type BooleanOptionConfig,
10
- type NumberOptionConfig,
11
- type StringOptionConfig,
12
- } from './OptionConfig.js';
13
- import {type OptionsConfig} from './OptionsConfig.js';
14
- import {type ParserConfig} from './ParserConfig.js';
15
-
16
- type BooleanOptionConfigToArgumentsOption<O extends BooleanOptionConfig | BooleansOptionConfig> =
17
- O extends BooleanOptionConfig
18
- ? O['defaultValue'] extends boolean
19
- ? boolean
20
- : boolean | undefined
21
- : O extends BooleansOptionConfig
22
- ? O['defaultValue'] extends readonly boolean[]
23
- ? boolean[]
24
- : boolean[] | undefined
25
- : never;
26
-
27
- type NumberOptionConfigToArgumentsOption<
28
- O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig,
29
- > = O extends NumbersOptionConfig
30
- ? O['choices'] extends readonly number[]
31
- ? O['defaultValue'] extends readonly number[]
32
- ? Array<TupleToUnion<O['choices']>>
33
- : Array<TupleToUnion<O['choices']>> | undefined
34
- : O['defaultValue'] extends readonly number[]
35
- ? number[]
36
- : number[] | undefined
37
- : O extends NumberOptionConfig
38
- ? O['choices'] extends readonly number[]
39
- ? O['defaultValue'] extends number
40
- ? TupleToUnion<O['choices']>
41
- : TupleToUnion<O['choices']> | undefined
42
- : O['defaultValue'] extends number
43
- ? number
44
- : number | undefined
45
- : O extends CountOptionConfig
46
- ? O['defaultValue'] extends number
47
- ? number
48
- : number | undefined
49
- : never;
50
-
51
- type StringOptionConfigToArgumentsOption<O extends StringOptionConfig | StringsOptionConfig> =
52
- O extends StringsOptionConfig
53
- ? O['choices'] extends readonly string[]
54
- ? O['defaultValue'] extends readonly string[]
55
- ? Array<TupleToUnion<O['choices']>>
56
- : Array<TupleToUnion<O['choices']>> | undefined
57
- : O['defaultValue'] extends readonly string[]
58
- ? string[]
59
- : string[] | undefined
60
- : O extends StringOptionConfig
61
- ? O['choices'] extends readonly string[]
62
- ? O['defaultValue'] extends string
63
- ? TupleToUnion<O['choices']>
64
- : TupleToUnion<O['choices']> | undefined
65
- : O['defaultValue'] extends string
66
- ? string
67
- : string | undefined
68
- : never;
69
-
70
- type OptionConfigToArgumentOption<O extends OptionConfig> = O extends
71
- | BooleanOptionConfig
72
- | BooleansOptionConfig
73
- ? BooleanOptionConfigToArgumentsOption<O>
74
- : O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig
75
- ? NumberOptionConfigToArgumentsOption<O>
76
- : O extends StringOptionConfig | StringsOptionConfig
77
- ? StringOptionConfigToArgumentsOption<O>
78
- : never;
79
-
80
- type OptionsConfigToArgumentsOptions<O extends OptionsConfig> = {
81
- [K in keyof O]: OptionConfigToArgumentOption<O[K]>;
82
- };
83
-
84
- /** Parsed options. */
85
- export type ArgumentsOptions<O extends ParserConfig> = Omit<O, 'options'> extends O
86
- ? null
87
- : O['options'] extends undefined
88
- ? null
89
- : OptionsConfigToArgumentsOptions<NonNullable<O['options']>>;
@@ -1,158 +0,0 @@
1
- import {type TupleToUnion} from '@jakubmazanec/ts-utils';
2
-
3
- import {
4
- type ParameterConfig,
5
- type BooleanParameterConfig,
6
- type NumberParameterConfig,
7
- type StringParameterConfig,
8
- } from './ParameterConfig.js';
9
- import {type ParametersConfig} from './ParametersConfig.js';
10
- import {type ParserConfig} from './ParserConfig.js';
11
-
12
- type NumberParameterConfigToArgumentsParameter<O extends NumberParameterConfig> =
13
- O['choices'] extends readonly number[]
14
- ? O['defaultValue'] extends number
15
- ? TupleToUnion<O['choices']>
16
- : TupleToUnion<O['choices']> | undefined
17
- : O['defaultValue'] extends number
18
- ? number
19
- : number | undefined;
20
-
21
- type StringParameterConfigToArgumentsParameter<O extends StringParameterConfig> =
22
- O['choices'] extends readonly string[]
23
- ? O['defaultValue'] extends string
24
- ? TupleToUnion<O['choices']>
25
- : TupleToUnion<O['choices']> | undefined
26
- : O['defaultValue'] extends string
27
- ? string
28
- : string | undefined;
29
-
30
- type BooleanParameterConfigToArgumentsParameter<O extends BooleanParameterConfig> =
31
- O['defaultValue'] extends boolean ? boolean : boolean | undefined;
32
-
33
- type ParameterConfigToArgumentsParameter<O extends ParameterConfig> =
34
- O extends NumberParameterConfig
35
- ? NumberParameterConfigToArgumentsParameter<O>
36
- : O extends StringParameterConfig
37
- ? StringParameterConfigToArgumentsParameter<O>
38
- : O extends BooleanParameterConfig
39
- ? BooleanParameterConfigToArgumentsParameter<O>
40
- : never;
41
-
42
- type ParametersConfigToArgumentsParameters<O extends ParametersConfig> = O extends readonly [
43
- ParameterConfig,
44
- ParameterConfig,
45
- ParameterConfig,
46
- ParameterConfig,
47
- ParameterConfig,
48
- ParameterConfig,
49
- ]
50
- ? readonly [
51
- ParameterConfigToArgumentsParameter<O[0]>,
52
- ParameterConfigToArgumentsParameter<O[1]>,
53
- ParameterConfigToArgumentsParameter<O[2]>,
54
- ParameterConfigToArgumentsParameter<O[3]>,
55
- ParameterConfigToArgumentsParameter<O[4]>,
56
- ParameterConfigToArgumentsParameter<O[5]>,
57
- ]
58
- : O extends readonly [
59
- ParameterConfig,
60
- ParameterConfig,
61
- ParameterConfig,
62
- ParameterConfig,
63
- ParameterConfig,
64
- ]
65
- ? readonly [
66
- ParameterConfigToArgumentsParameter<O[0]>,
67
- ParameterConfigToArgumentsParameter<O[1]>,
68
- ParameterConfigToArgumentsParameter<O[2]>,
69
- ParameterConfigToArgumentsParameter<O[3]>,
70
- ParameterConfigToArgumentsParameter<O[4]>,
71
- ]
72
- : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]
73
- ? readonly [
74
- ParameterConfigToArgumentsParameter<O[0]>,
75
- ParameterConfigToArgumentsParameter<O[1]>,
76
- ParameterConfigToArgumentsParameter<O[2]>,
77
- ParameterConfigToArgumentsParameter<O[3]>,
78
- ]
79
- : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig]
80
- ? readonly [
81
- ParameterConfigToArgumentsParameter<O[0]>,
82
- ParameterConfigToArgumentsParameter<O[1]>,
83
- ParameterConfigToArgumentsParameter<O[2]>,
84
- ]
85
- : O extends readonly [ParameterConfig, ParameterConfig]
86
- ? readonly [ParameterConfigToArgumentsParameter<O[0]>, ParameterConfigToArgumentsParameter<O[1]>]
87
- : O extends readonly [ParameterConfig]
88
- ? readonly [ParameterConfigToArgumentsParameter<O[0]>]
89
- : never;
90
-
91
- type ParametersConfigToVariadicArgumentsParameters<O extends ParametersConfig> =
92
- O extends readonly [
93
- ParameterConfig,
94
- ParameterConfig,
95
- ParameterConfig,
96
- ParameterConfig,
97
- ParameterConfig,
98
- ParameterConfig,
99
- ]
100
- ? readonly [
101
- ParameterConfigToArgumentsParameter<O[0]>,
102
- ParameterConfigToArgumentsParameter<O[1]>,
103
- ParameterConfigToArgumentsParameter<O[2]>,
104
- ParameterConfigToArgumentsParameter<O[3]>,
105
- ParameterConfigToArgumentsParameter<O[4]>,
106
- ParameterConfigToArgumentsParameter<O[5]>,
107
- ...(readonly string[]),
108
- ]
109
- : O extends readonly [
110
- ParameterConfig,
111
- ParameterConfig,
112
- ParameterConfig,
113
- ParameterConfig,
114
- ParameterConfig,
115
- ]
116
- ? readonly [
117
- ParameterConfigToArgumentsParameter<O[0]>,
118
- ParameterConfigToArgumentsParameter<O[1]>,
119
- ParameterConfigToArgumentsParameter<O[2]>,
120
- ParameterConfigToArgumentsParameter<O[3]>,
121
- ParameterConfigToArgumentsParameter<O[4]>,
122
- ...(readonly string[]),
123
- ]
124
- : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]
125
- ? readonly [
126
- ParameterConfigToArgumentsParameter<O[0]>,
127
- ParameterConfigToArgumentsParameter<O[1]>,
128
- ParameterConfigToArgumentsParameter<O[2]>,
129
- ParameterConfigToArgumentsParameter<O[3]>,
130
- ...(readonly string[]),
131
- ]
132
- : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig]
133
- ? readonly [
134
- ParameterConfigToArgumentsParameter<O[0]>,
135
- ParameterConfigToArgumentsParameter<O[1]>,
136
- ParameterConfigToArgumentsParameter<O[2]>,
137
- ...(readonly string[]),
138
- ]
139
- : O extends readonly [ParameterConfig, ParameterConfig]
140
- ? readonly [
141
- ParameterConfigToArgumentsParameter<O[0]>,
142
- ParameterConfigToArgumentsParameter<O[1]>,
143
- ...(readonly string[]),
144
- ]
145
- : O extends readonly [ParameterConfig]
146
- ? readonly [ParameterConfigToArgumentsParameter<O[0]>, ...(readonly string[])]
147
- : readonly [...(readonly string[])];
148
-
149
- /** Parsed parameters. */
150
- export type ArgumentsParameters<O extends ParserConfig> = Omit<O, 'parameters'> extends O
151
- ? O['allowUnknownParameters'] extends true
152
- ? [...string[]]
153
- : null
154
- : O['parameters'] extends undefined
155
- ? null
156
- : O['allowUnknownParameters'] extends true
157
- ? ParametersConfigToVariadicArgumentsParameters<NonNullable<O['parameters']>>
158
- : ParametersConfigToArgumentsParameters<NonNullable<O['parameters']>>;
@@ -1,6 +0,0 @@
1
- import {type ParserConfig} from './ParserConfig.js';
2
-
3
- /** Unknown options. Unknown options are always parsed as strings. */
4
- export type ArgumentsUnknownOptions<O extends ParserConfig> = O['allowUnknownOptions'] extends true
5
- ? Record<string, unknown>
6
- : null;
File without changes