@jakubmazanec/args 1.0.0-de51f16

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 (151) hide show
  1. package/LICENSE.md +18 -0
  2. package/README.md +84 -0
  3. package/dist/ParsingError.d.ts +4 -0
  4. package/dist/ParsingError.js +11 -0
  5. package/dist/ParsingError.js.map +1 -0
  6. package/dist/ValidationError.d.ts +4 -0
  7. package/dist/ValidationError.js +16 -0
  8. package/dist/ValidationError.js.map +1 -0
  9. package/dist/internals/Checker.d.ts +13 -0
  10. package/dist/internals/Checker.js +118 -0
  11. package/dist/internals/Checker.js.map +1 -0
  12. package/dist/internals/CommandScope.d.ts +14 -0
  13. package/dist/internals/CommandScope.js +48 -0
  14. package/dist/internals/CommandScope.js.map +1 -0
  15. package/dist/internals/OptionScope.d.ts +14 -0
  16. package/dist/internals/OptionScope.js +87 -0
  17. package/dist/internals/OptionScope.js.map +1 -0
  18. package/dist/internals/castValue.d.ts +7 -0
  19. package/dist/internals/castValue.js +25 -0
  20. package/dist/internals/castValue.js.map +1 -0
  21. package/dist/internals/commandToArguments.d.ts +7 -0
  22. package/dist/internals/commandToArguments.js +21 -0
  23. package/dist/internals/commandToArguments.js.map +1 -0
  24. package/dist/internals/createOptionShortNameMap.d.ts +2 -0
  25. package/dist/internals/createOptionShortNameMap.js +11 -0
  26. package/dist/internals/createOptionShortNameMap.js.map +1 -0
  27. package/dist/internals/expandArguments.d.ts +8 -0
  28. package/dist/internals/expandArguments.js +21 -0
  29. package/dist/internals/expandArguments.js.map +1 -0
  30. package/dist/internals/isCommand.d.ts +8 -0
  31. package/dist/internals/isCommand.js +11 -0
  32. package/dist/internals/isCommand.js.map +1 -0
  33. package/dist/internals/isFalseString.d.ts +6 -0
  34. package/dist/internals/isFalseString.js +10 -0
  35. package/dist/internals/isFalseString.js.map +1 -0
  36. package/dist/internals/isLongOption.d.ts +7 -0
  37. package/dist/internals/isLongOption.js +11 -0
  38. package/dist/internals/isLongOption.js.map +1 -0
  39. package/dist/internals/isOptionLike.d.ts +7 -0
  40. package/dist/internals/isOptionLike.js +11 -0
  41. package/dist/internals/isOptionLike.js.map +1 -0
  42. package/dist/internals/isShortOption.d.ts +7 -0
  43. package/dist/internals/isShortOption.js +11 -0
  44. package/dist/internals/isShortOption.js.map +1 -0
  45. package/dist/internals/isShortOptionsGroup.d.ts +8 -0
  46. package/dist/internals/isShortOptionsGroup.js +11 -0
  47. package/dist/internals/isShortOptionsGroup.js.map +1 -0
  48. package/dist/internals/isTrueString.d.ts +6 -0
  49. package/dist/internals/isTrueString.js +10 -0
  50. package/dist/internals/isTrueString.js.map +1 -0
  51. package/dist/internals.d.ts +14 -0
  52. package/dist/internals.js +16 -0
  53. package/dist/internals.js.map +1 -0
  54. package/dist/main.d.ts +4 -0
  55. package/dist/main.js +6 -0
  56. package/dist/main.js.map +1 -0
  57. package/dist/parseArguments.d.ts +10 -0
  58. package/dist/parseArguments.js +244 -0
  59. package/dist/parseArguments.js.map +1 -0
  60. package/dist/types/Arguments.d.ts +22 -0
  61. package/dist/types/Arguments.js +3 -0
  62. package/dist/types/Arguments.js.map +1 -0
  63. package/dist/types/ArgumentsCommand.d.ts +3 -0
  64. package/dist/types/ArgumentsCommand.js +3 -0
  65. package/dist/types/ArgumentsCommand.js.map +1 -0
  66. package/dist/types/ArgumentsOptions.d.ts +14 -0
  67. package/dist/types/ArgumentsOptions.js +3 -0
  68. package/dist/types/ArgumentsOptions.js.map +1 -0
  69. package/dist/types/ArgumentsParameters.d.ts +91 -0
  70. package/dist/types/ArgumentsParameters.js +3 -0
  71. package/dist/types/ArgumentsParameters.js.map +1 -0
  72. package/dist/types/ArgumentsUnknownOptions.d.ts +3 -0
  73. package/dist/types/ArgumentsUnknownOptions.js +3 -0
  74. package/dist/types/ArgumentsUnknownOptions.js.map +1 -0
  75. package/dist/types/Argv.d.ts +2 -0
  76. package/dist/types/Argv.js +3 -0
  77. package/dist/types/Argv.js.map +1 -0
  78. package/dist/types/CommandConfig.d.ts +2 -0
  79. package/dist/types/CommandConfig.js +3 -0
  80. package/dist/types/CommandConfig.js.map +1 -0
  81. package/dist/types/CommandsConfig.d.ts +3 -0
  82. package/dist/types/CommandsConfig.js +3 -0
  83. package/dist/types/CommandsConfig.js.map +1 -0
  84. package/dist/types/LongOptionName.d.ts +2 -0
  85. package/dist/types/LongOptionName.js +3 -0
  86. package/dist/types/LongOptionName.js.map +1 -0
  87. package/dist/types/NormalizedCommandConfig.d.ts +5 -0
  88. package/dist/types/NormalizedCommandConfig.js +3 -0
  89. package/dist/types/NormalizedCommandConfig.js.map +1 -0
  90. package/dist/types/NormalizedCommandsConfig.d.ts +3 -0
  91. package/dist/types/NormalizedCommandsConfig.js +3 -0
  92. package/dist/types/NormalizedCommandsConfig.js.map +1 -0
  93. package/dist/types/OptionConfig.d.ts +220 -0
  94. package/dist/types/OptionConfig.js +3 -0
  95. package/dist/types/OptionConfig.js.map +1 -0
  96. package/dist/types/OptionsConfig.d.ts +3 -0
  97. package/dist/types/OptionsConfig.js +3 -0
  98. package/dist/types/OptionsConfig.js.map +1 -0
  99. package/dist/types/ParameterConfig.d.ts +74 -0
  100. package/dist/types/ParameterConfig.js +3 -0
  101. package/dist/types/ParameterConfig.js.map +1 -0
  102. package/dist/types/ParametersConfig.d.ts +10 -0
  103. package/dist/types/ParametersConfig.js +3 -0
  104. package/dist/types/ParametersConfig.js.map +1 -0
  105. package/dist/types/ParserConfig.d.ts +16 -0
  106. package/dist/types/ParserConfig.js +3 -0
  107. package/dist/types/ParserConfig.js.map +1 -0
  108. package/dist/types/ShortOptionName.d.ts +2 -0
  109. package/dist/types/ShortOptionName.js +3 -0
  110. package/dist/types/ShortOptionName.js.map +1 -0
  111. package/dist/types.d.ts +17 -0
  112. package/dist/types.js +19 -0
  113. package/dist/types.js.map +1 -0
  114. package/package.json +42 -0
  115. package/src/ParsingError.ts +11 -0
  116. package/src/ValidationError.ts +22 -0
  117. package/src/internals/Checker.ts +145 -0
  118. package/src/internals/CommandScope.ts +61 -0
  119. package/src/internals/OptionScope.ts +101 -0
  120. package/src/internals/castValue.ts +36 -0
  121. package/src/internals/commandToArguments.ts +22 -0
  122. package/src/internals/createOptionShortNameMap.ts +13 -0
  123. package/src/internals/expandArguments.ts +22 -0
  124. package/src/internals/isCommand.ts +11 -0
  125. package/src/internals/isFalseString.ts +10 -0
  126. package/src/internals/isLongOption.ts +11 -0
  127. package/src/internals/isOptionLike.ts +11 -0
  128. package/src/internals/isShortOption.ts +11 -0
  129. package/src/internals/isShortOptionsGroup.ts +11 -0
  130. package/src/internals/isTrueString.ts +10 -0
  131. package/src/internals.ts +14 -0
  132. package/src/main.ts +4 -0
  133. package/src/parseArguments.ts +358 -0
  134. package/src/types/Arguments.ts +28 -0
  135. package/src/types/ArgumentsCommand.ts +8 -0
  136. package/src/types/ArgumentsOptions.ts +89 -0
  137. package/src/types/ArgumentsParameters.ts +158 -0
  138. package/src/types/ArgumentsUnknownOptions.ts +6 -0
  139. package/src/types/Argv.ts +2 -0
  140. package/src/types/CommandConfig.ts +2 -0
  141. package/src/types/CommandsConfig.ts +4 -0
  142. package/src/types/LongOptionName.ts +2 -0
  143. package/src/types/NormalizedCommandConfig.ts +5 -0
  144. package/src/types/NormalizedCommandsConfig.ts +4 -0
  145. package/src/types/OptionConfig.ts +279 -0
  146. package/src/types/OptionsConfig.ts +4 -0
  147. package/src/types/ParameterConfig.ts +100 -0
  148. package/src/types/ParametersConfig.ts +17 -0
  149. package/src/types/ParserConfig.ts +21 -0
  150. package/src/types/ShortOptionName.ts +54 -0
  151. package/src/types.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internals/expandArguments.ts"],"sourcesContent":["import {type Argv} from '../types.js';\nimport {isShortOptionsGroup} from './isShortOptionsGroup.js';\n\n/**\n * A function that converts any argument that is a short options group into separate short options.\n *\n * @param argv Arguments.\n * @return Arguments that contain no short options group\n */\nexport function expandArguments(argv: Argv): Argv {\n let expandedArguments = [];\n\n for (let arg of argv) {\n if (isShortOptionsGroup(arg)) {\n expandedArguments.push(...[...arg].slice(1).map((value) => `-${value}`));\n } else {\n expandedArguments.push(arg);\n }\n }\n\n return expandedArguments;\n}\n"],"names":["isShortOptionsGroup","expandArguments","argv","expandedArguments","arg","push","slice","map","value"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,2BAA2B;AAE7D;;;;;CAKC,GACD,OAAO,SAASC,gBAAgBC,IAAU,EAAQ;IAChD,IAAIC,oBAAoB,EAAE;IAE1B,KAAK,IAAIC,OAAOF,KAAM;QACpB,IAAIF,oBAAoBI,MAAM;YAC5BD,kBAAkBE,IAAI,IAAI;mBAAID;aAAI,CAACE,KAAK,CAAC,GAAGC,GAAG,CAAC,CAACC,QAAU,CAAC,CAAC,EAAEA,MAAM,CAAC;QACxE,OAAO;YACLL,kBAAkBE,IAAI,CAACD;QACzB,CAAC;IACH;IAEA,OAAOD;AACT,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const COMMAND_REGEXP: RegExp;
2
+ /**
3
+ * A function that checks if a value is an argument that looks like command, i.e. space-separated words consisting only of letters, numbers (but not at the start of the word) or dashes.
4
+ *
5
+ * @param value The value to check.
6
+ * @return `true` if `value` is a command.
7
+ */
8
+ export declare function isCommand(value: string): boolean;
@@ -0,0 +1,11 @@
1
+ export const COMMAND_REGEXP = /^(?:[a-z][-a-z0-9]*[a-z])+(?:\s(?:[a-z][-a-z0-9]*[a-z])+)*$/iu;
2
+ /**
3
+ * A function that checks if a value is an argument that looks like command, i.e. space-separated words consisting only of letters, numbers (but not at the start of the word) or dashes.
4
+ *
5
+ * @param value The value to check.
6
+ * @return `true` if `value` is a command.
7
+ */ export function isCommand(value) {
8
+ return COMMAND_REGEXP.test(value);
9
+ }
10
+
11
+ //# sourceMappingURL=isCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internals/isCommand.ts"],"sourcesContent":["export const COMMAND_REGEXP = /^(?:[a-z][-a-z0-9]*[a-z])+(?:\\s(?:[a-z][-a-z0-9]*[a-z])+)*$/iu;\n\n/**\n * A function that checks if a value is an argument that looks like command, i.e. space-separated words consisting only of letters, numbers (but not at the start of the word) or dashes.\n *\n * @param value The value to check.\n * @return `true` if `value` is a command.\n */\nexport function isCommand(value: string): boolean {\n return COMMAND_REGEXP.test(value);\n}\n"],"names":["COMMAND_REGEXP","isCommand","value","test"],"mappings":"AAAA,OAAO,MAAMA,iBAAiB,gEAAgE;AAE9F;;;;;CAKC,GACD,OAAO,SAASC,UAAUC,KAAa,EAAW;IAChD,OAAOF,eAAeG,IAAI,CAACD;AAC7B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A function that checks if a string value is a false string. A false string is `'false'`, `'0'`, `'no'`, or `'off'` (case insensitive).
3
+ *
4
+ * @param value The value to be tested.
5
+ * @return `true` if string is a false string. */
6
+ export declare function isFalseString(value: string): boolean;
@@ -0,0 +1,10 @@
1
+ const FALSE_STRING_REGEXP = /^\s*(?:false|0|no|off)\s*$/iu;
2
+ /**
3
+ * A function that checks if a string value is a false string. A false string is `'false'`, `'0'`, `'no'`, or `'off'` (case insensitive).
4
+ *
5
+ * @param value The value to be tested.
6
+ * @return `true` if string is a false string. */ export function isFalseString(value) {
7
+ return FALSE_STRING_REGEXP.test(value);
8
+ }
9
+
10
+ //# sourceMappingURL=isFalseString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internals/isFalseString.ts"],"sourcesContent":["const FALSE_STRING_REGEXP = /^\\s*(?:false|0|no|off)\\s*$/iu;\n\n/**\n * A function that checks if a string value is a false string. A false string is `'false'`, `'0'`, `'no'`, or `'off'` (case insensitive).\n *\n * @param value The value to be tested.\n * @return `true` if string is a false string. */\nexport function isFalseString(value: string) {\n return FALSE_STRING_REGEXP.test(value);\n}\n"],"names":["FALSE_STRING_REGEXP","isFalseString","value","test"],"mappings":"AAAA,MAAMA,sBAAsB;AAE5B;;;;+CAI+C,GAC/C,OAAO,SAASC,cAAcC,KAAa,EAAE;IAC3C,OAAOF,oBAAoBG,IAAI,CAACD;AAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A function that checks if a value is an argument that looks like a long option, i.e. two dashes and a single word consisting only of letters, numbers (but not at the start of the word) or dashes; e.g. `'--some-option'`.
3
+ *
4
+ * @param value The value to check.
5
+ * @return `true` if `value` is a long option.
6
+ */
7
+ export declare function isLongOption(arg: string): boolean;
@@ -0,0 +1,11 @@
1
+ const LONG_OPTION_REGEXP = /^--[a-z][-a-z0-9]+$/iu;
2
+ /**
3
+ * A function that checks if a value is an argument that looks like a long option, i.e. two dashes and a single word consisting only of letters, numbers (but not at the start of the word) or dashes; e.g. `'--some-option'`.
4
+ *
5
+ * @param value The value to check.
6
+ * @return `true` if `value` is a long option.
7
+ */ export function isLongOption(arg) {
8
+ return LONG_OPTION_REGEXP.test(arg);
9
+ }
10
+
11
+ //# sourceMappingURL=isLongOption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internals/isLongOption.ts"],"sourcesContent":["const LONG_OPTION_REGEXP = /^--[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, i.e. two dashes and a single word consisting only of letters, numbers (but not at the start of the word) or dashes; e.g. `'--some-option'`.\n *\n * @param value The value to check.\n * @return `true` if `value` is a long option.\n */\nexport function isLongOption(arg: string): boolean {\n return LONG_OPTION_REGEXP.test(arg);\n}\n"],"names":["LONG_OPTION_REGEXP","isLongOption","arg","test"],"mappings":"AAAA,MAAMA,qBAAqB;AAE3B;;;;;CAKC,GACD,OAAO,SAASC,aAAaC,GAAW,EAAW;IACjD,OAAOF,mBAAmBG,IAAI,CAACD;AACjC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 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 `=`.
3
+ *
4
+ * @param value The value to check.
5
+ * @return `true` if `value` is an option.
6
+ */
7
+ export declare function isOptionLike(value: string): boolean;
@@ -0,0 +1,11 @@
1
+ const OPTION_LIKE = /^-{1,2}[a-z][-a-z0-9]*=?/iu;
2
+ /**
3
+ * 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 `=`.
4
+ *
5
+ * @param value The value to check.
6
+ * @return `true` if `value` is an option.
7
+ */ export function isOptionLike(value) {
8
+ return OPTION_LIKE.test(value);
9
+ }
10
+
11
+ //# sourceMappingURL=isOptionLike.js.map
@@ -0,0 +1 @@
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,EAAW;IACnD,OAAOF,YAAYG,IAAI,CAACD;AAC1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 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'`.
3
+ *
4
+ * @param value The value to check.
5
+ * @return `true` if `value` is a short option.
6
+ */
7
+ export declare function isShortOption(arg: string): boolean;
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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,EAAW;IAClD,OAAOF,oBAAoBG,IAAI,CAACD;AAClC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const SHORT_OPTIONS_GROUP_REGEXP: RegExp;
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
+ */
8
+ export declare function isShortOptionsGroup(arg: string): boolean;
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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,EAAW;IACxD,OAAOF,2BAA2BG,IAAI,CAACD;AACzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A function that checks if a string value is a true string. A true string is `'true'`, `'1'`, `'yes'`, or `'on'` (case insensitive).
3
+ *
4
+ * @param value The value to be tested.
5
+ * @return `true` if string is a true string. */
6
+ export declare function isTrueString(value: string): boolean;
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
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,EAAE;IAC1C,OAAOF,mBAAmBG,IAAI,CAACD;AACjC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export * from './internals/castValue.js';
2
+ export * from './internals/CommandScope.js';
3
+ export * from './internals/commandToArguments.js';
4
+ export * from './internals/createOptionShortNameMap.js';
5
+ export * from './internals/expandArguments.js';
6
+ export * from './internals/Checker.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/OptionScope.js';
@@ -0,0 +1,16 @@
1
+ export * from './internals/castValue.js';
2
+ export * from './internals/CommandScope.js';
3
+ export * from './internals/commandToArguments.js';
4
+ export * from './internals/createOptionShortNameMap.js';
5
+ export * from './internals/expandArguments.js';
6
+ export * from './internals/Checker.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/OptionScope.js';
15
+
16
+ //# sourceMappingURL=internals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals.ts"],"sourcesContent":["export * from './internals/castValue.js';\nexport * from './internals/CommandScope.js';\nexport * from './internals/commandToArguments.js';\nexport * from './internals/createOptionShortNameMap.js';\nexport * from './internals/expandArguments.js';\nexport * from './internals/Checker.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/OptionScope.js';\n"],"names":[],"mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,8BAA8B;AAC5C,cAAc,oCAAoC;AAClD,cAAc,0CAA0C;AACxD,cAAc,iCAAiC;AAC/C,cAAc,yBAAyB;AACvC,cAAc,2BAA2B;AACzC,cAAc,+BAA+B;AAC7C,cAAc,8BAA8B;AAC5C,cAAc,8BAA8B;AAC5C,cAAc,+BAA+B;AAC7C,cAAc,qCAAqC;AACnD,cAAc,8BAA8B;AAC5C,cAAc,6BAA6B"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './parseArguments.js';
2
+ export * from './ParsingError.js';
3
+ export * from './types.js';
4
+ export * from './ValidationError.js';
package/dist/main.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './parseArguments.js';
2
+ export * from './ParsingError.js';
3
+ export * from './types.js';
4
+ export * from './ValidationError.js';
5
+
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/main.ts"],"sourcesContent":["export * from './parseArguments.js';\nexport * from './ParsingError.js';\nexport * from './types.js';\nexport * from './ValidationError.js';\n"],"names":[],"mappings":"AAAA,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,aAAa;AAC3B,cAAc,uBAAuB"}
@@ -0,0 +1,10 @@
1
+ import { type Arguments, type Argv, type ParserConfig } from './types.js';
2
+ /**
3
+ * Parse 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.
4
+ *
5
+ * @param argv Raw arguments to be parsed.
6
+ * @param parserConfig Parser configuration.
7
+ * @return Parsed arguments.
8
+ *
9
+ */
10
+ export declare function parseArguments<const O extends ParserConfig>(argv: Argv, parserConfig: O): Arguments<O>;
@@ -0,0 +1,244 @@
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
+ * Parse 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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/parseArguments.ts"],"sourcesContent":["import {\n castValue,\n Checker,\n CommandScope,\n commandToArguments,\n createOptionShortNameMap,\n expandArguments,\n isFalseString,\n isLongOption,\n isOptionLike,\n isShortOption,\n isTrueString,\n OptionScope,\n} from './internals.js';\nimport {ParsingError} from './ParsingError.js';\nimport {\n type Arguments,\n type ArgumentsCommand,\n type ArgumentsOptions,\n type ArgumentsParameters,\n type ArgumentsUnknownOptions,\n type Argv,\n type NormalizedCommandsConfig,\n type ParameterConfig,\n type ParserConfig,\n} from './types.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 * Parse 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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"}
@@ -0,0 +1,22 @@
1
+ import { type ArgumentsCommand } from './ArgumentsCommand.js';
2
+ import { type ArgumentsOptions } from './ArgumentsOptions.js';
3
+ import { type ArgumentsParameters } from './ArgumentsParameters.js';
4
+ import { type ArgumentsUnknownOptions } from './ArgumentsUnknownOptions.js';
5
+ import { type ParserConfig } from './ParserConfig.js';
6
+ /**
7
+ * Parsed arguments.
8
+ */
9
+ export type Arguments<T extends ParserConfig> = {
10
+ /** Parsed command. */
11
+ readonly command: ArgumentsCommand<T>;
12
+ /** Parsed parameters. */
13
+ readonly parameters: ArgumentsParameters<T>;
14
+ /** Parsed options. */
15
+ readonly options: ArgumentsOptions<T>;
16
+ /** Unconfigured options. */
17
+ readonly unknownOptions: ArgumentsUnknownOptions<T>;
18
+ /** Arguments that appear after "--". */
19
+ readonly rest: string[];
20
+ /** Parsing and validation rrors */
21
+ readonly errors: Error[];
22
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=Arguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types/Arguments.ts"],"sourcesContent":["import {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 ParserConfig} from './ParserConfig.js';\n\n/**\n * Parsed arguments.\n */\nexport type Arguments<T extends ParserConfig> = {\n /** Parsed command. */\n readonly command: ArgumentsCommand<T>;\n\n /** Parsed parameters. */\n readonly parameters: ArgumentsParameters<T>;\n\n /** Parsed options. */\n readonly options: ArgumentsOptions<T>;\n\n /** Unconfigured options. */\n readonly unknownOptions: ArgumentsUnknownOptions<T>;\n\n /** Arguments that appear after \"--\". */\n readonly rest: string[];\n\n /** Parsing and validation rrors */\n readonly errors: Error[];\n};\n"],"names":[],"mappings":"AAAA,WA2BE"}
@@ -0,0 +1,3 @@
1
+ import { type ParserConfig } from './ParserConfig.js';
2
+ /** Parsed command. */
3
+ export type ArgumentsCommand<O extends ParserConfig> = Omit<O, 'commands'> extends O ? null : O['commands'] extends undefined ? null : Lowercase<NonNullable<O['commands']>[number]> | undefined;
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=ArgumentsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types/ArgumentsCommand.ts"],"sourcesContent":["import {type ParserConfig} from './ParserConfig.js';\n\n/** Parsed command. */\nexport type ArgumentsCommand<O extends ParserConfig> = Omit<O, 'commands'> extends O\n ? null\n : O['commands'] extends undefined\n ? null\n : Lowercase<NonNullable<O['commands']>[number]> | undefined;\n"],"names":[],"mappings":"AAAA,WAO8D"}
@@ -0,0 +1,14 @@
1
+ import { type TupleToUnion } from '@jakubmazanec/ts-utils';
2
+ import { type CountOptionConfig, type BooleansOptionConfig, type NumbersOptionConfig, type StringsOptionConfig, type OptionConfig, type BooleanOptionConfig, type NumberOptionConfig, type StringOptionConfig } from './OptionConfig.js';
3
+ import { type OptionsConfig } from './OptionsConfig.js';
4
+ import { type ParserConfig } from './ParserConfig.js';
5
+ type BooleanOptionConfigToArgumentsOption<O extends BooleanOptionConfig | BooleansOptionConfig> = O extends BooleanOptionConfig ? O['defaultValue'] extends boolean ? boolean : boolean | undefined : O extends BooleansOptionConfig ? O['defaultValue'] extends readonly boolean[] ? boolean[] : boolean[] | undefined : never;
6
+ type NumberOptionConfigToArgumentsOption<O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig> = O extends NumbersOptionConfig ? O['choices'] extends readonly number[] ? O['defaultValue'] extends readonly number[] ? Array<TupleToUnion<O['choices']>> : Array<TupleToUnion<O['choices']>> | undefined : O['defaultValue'] extends readonly number[] ? number[] : number[] | undefined : O extends NumberOptionConfig ? O['choices'] extends readonly number[] ? O['defaultValue'] extends number ? TupleToUnion<O['choices']> : TupleToUnion<O['choices']> | undefined : O['defaultValue'] extends number ? number : number | undefined : O extends CountOptionConfig ? O['defaultValue'] extends number ? number : number | undefined : never;
7
+ type StringOptionConfigToArgumentsOption<O extends StringOptionConfig | StringsOptionConfig> = O extends StringsOptionConfig ? O['choices'] extends readonly string[] ? O['defaultValue'] extends readonly string[] ? Array<TupleToUnion<O['choices']>> : Array<TupleToUnion<O['choices']>> | undefined : O['defaultValue'] extends readonly string[] ? string[] : string[] | undefined : O extends StringOptionConfig ? O['choices'] extends readonly string[] ? O['defaultValue'] extends string ? TupleToUnion<O['choices']> : TupleToUnion<O['choices']> | undefined : O['defaultValue'] extends string ? string : string | undefined : never;
8
+ type OptionConfigToArgumentOption<O extends OptionConfig> = O extends BooleanOptionConfig | BooleansOptionConfig ? BooleanOptionConfigToArgumentsOption<O> : O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig ? NumberOptionConfigToArgumentsOption<O> : O extends StringOptionConfig | StringsOptionConfig ? StringOptionConfigToArgumentsOption<O> : never;
9
+ type OptionsConfigToArgumentsOptions<O extends OptionsConfig> = {
10
+ [K in keyof O]: OptionConfigToArgumentOption<O[K]>;
11
+ };
12
+ /** Parsed options. */
13
+ export type ArgumentsOptions<O extends ParserConfig> = Omit<O, 'options'> extends O ? null : O['options'] extends undefined ? null : OptionsConfigToArgumentsOptions<NonNullable<O['options']>>;
14
+ export {};
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=ArgumentsOptions.js.map