args-tokens 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- import { ArgToken, ParserOptions, parseArgs$1 as parseArgs } from "./parser.d-Cheh2e-O.js";
2
- import { ArgOptionSchema, ArgOptions, ArgValues, OptionResolveError$1 as OptionResolveError, OptionResolveErrorType, ResolveArgsOptions, resolveArgs$1 as resolveArgs } from "./resolver.d-D6XfwWOY.js";
1
+ import { ArgToken, ParserOptions, parseArgs$1 as parseArgs } from "./parser-Bx112mWZ.js";
2
+ import { ArgOptionSchema, ArgOptions, ArgValues, OptionResolveError$1 as OptionResolveError, OptionResolveErrorType, ResolveArgsOptions, resolveArgs$1 as resolveArgs } from "./resolver-ByBRRKOK.js";
3
3
 
4
4
  //#region src/parse.d.ts
5
5
  /**
6
6
  * Parse options for {@link parse} function.
7
7
  */
8
+ /**
9
+ * Parse options for {@link parse} function.
10
+ */
8
11
  interface ParseOptions<O extends ArgOptions> extends ParserOptions, ResolveArgsOptions {
9
12
  /**
10
13
  * Command line options, about details see {@link ArgOptions}.
11
14
  */
12
15
  options?: O;
13
16
  }
14
-
15
17
  /**
16
18
  * Parsed command line arguments.
17
19
  */
@@ -36,21 +38,21 @@ type ParsedArgs<T extends ArgOptions> = {
36
38
  * Argument tokens, same as `tokens` which is parsed by {@link parseArgs}.
37
39
  */
38
40
  tokens: ArgToken[];
39
- }; /**
40
- * Parse command line arguments.
41
- * This function is a convenient API, that is used {@link parseArgs} and {@link resolveArgs} in internal.
42
- * @example
43
- * ```js
44
- * import { parse } from 'args-tokens'
45
- *
46
- * const { values, positionals } = parse(process.argv.slice(2))
47
- * console.log('values', values)
48
- * console.log('positionals', positionals)
49
- * ```
50
- * @param args - command line arguments
51
- * @param options - parse options, about details see {@link ParseOptions}
52
- * @returns An object that contains the values of the arguments, positional arguments, {@link AggregateError | validation errors}, and {@link ArgToken | argument tokens}.
53
- */
54
-
41
+ };
42
+ /**
43
+ * Parse command line arguments.
44
+ * This function is a convenient API, that is used {@link parseArgs} and {@link resolveArgs} in internal.
45
+ * @example
46
+ * ```js
47
+ * import { parse } from 'args-tokens'
48
+ *
49
+ * const { values, positionals } = parse(process.argv.slice(2))
50
+ * console.log('values', values)
51
+ * console.log('positionals', positionals)
52
+ * ```
53
+ * @param args - command line arguments
54
+ * @param options - parse options, about details see {@link ParseOptions}
55
+ * @returns An object that contains the values of the arguments, positional arguments, {@link AggregateError | validation errors}, and {@link ArgToken | argument tokens}.
56
+ */
55
57
  declare function parse<O extends ArgOptions>(args: string[], options?: ParseOptions<O>): ParsedArgs<O>; //#endregion
56
58
  export { ArgOptionSchema, ArgOptions, ArgToken, ArgValues, OptionResolveError, OptionResolveErrorType, ParseOptions, ParsedArgs, ParserOptions, ResolveArgsOptions, parse, parseArgs, resolveArgs };
@@ -16,8 +16,8 @@
16
16
  * - `option`: option token, support short option (e.g. `-x`) and long option (e.g. `--foo`)
17
17
  * - `option-terminator`: option terminator (`--`) token, see guideline 10 in https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
18
18
  * - `positional`: positional token
19
- */type ArgTokenKind = "option" | "option-terminator" | "positional";
20
-
19
+ */
20
+ type ArgTokenKind = "option" | "option-terminator" | "positional";
21
21
  /**
22
22
  * Argument token.
23
23
  */
@@ -47,44 +47,44 @@ interface ArgToken {
47
47
  * Inline value, e.g. `--foo=bar` => `true`, `-x=bar` => `true`.
48
48
  */
49
49
  inlineValue?: boolean;
50
- } /**
51
- * Parser Options.
52
- */
53
-
50
+ }
51
+ /**
52
+ * Parser Options.
53
+ */
54
54
  interface ParserOptions {
55
55
  /**
56
56
  * [Node.js parseArgs](https://nodejs.org/api/util.html#parseargs-tokens) tokens compatible mode.
57
57
  * @default false
58
58
  */
59
59
  allowCompatible?: boolean;
60
- } /**
61
- * Parse command line arguments.
62
- * @example
63
- * ```js
64
- * import { parseArgs } from 'args-tokens' // for Node.js and Bun
65
- * // import { parseArgs } from 'jsr:@kazupon/args-tokens' // for Deno
66
- *
67
- * const tokens = parseArgs(['--foo', 'bar', '-x', '--bar=baz'])
68
- * // do something with using tokens
69
- * // ...
70
- * console.log('tokens:', tokens)
71
- * ```
72
- * @param args command line arguments
73
- * @param options parse options
74
- * @returns Argument tokens.
75
- */
76
-
77
- declare function parseArgs(args: string[], options?: ParserOptions): ArgToken[]; /**
78
- * Check if `arg` is a short option (e.g. `-f`).
79
- * @param arg the argument to check
80
- * @returns whether `arg` is a short option.
81
- */
82
-
83
- declare function isShortOption(arg: string): boolean; /**
84
- * Check if `arg` is a long option prefix (e.g. `--`).
85
- * @param arg the argument to check
86
- * @returns whether `arg` is a long option prefix.
87
- */
88
-
60
+ }
61
+ /**
62
+ * Parse command line arguments.
63
+ * @example
64
+ * ```js
65
+ * import { parseArgs } from 'args-tokens' // for Node.js and Bun
66
+ * // import { parseArgs } from 'jsr:@kazupon/args-tokens' // for Deno
67
+ *
68
+ * const tokens = parseArgs(['--foo', 'bar', '-x', '--bar=baz'])
69
+ * // do something with using tokens
70
+ * // ...
71
+ * console.log('tokens:', tokens)
72
+ * ```
73
+ * @param args command line arguments
74
+ * @param options parse options
75
+ * @returns Argument tokens.
76
+ */
77
+ declare function parseArgs(args: string[], options?: ParserOptions): ArgToken[];
78
+ /**
79
+ * Check if `arg` is a short option (e.g. `-f`).
80
+ * @param arg the argument to check
81
+ * @returns whether `arg` is a short option.
82
+ */
83
+ declare function isShortOption(arg: string): boolean;
84
+ /**
85
+ * Check if `arg` is a long option prefix (e.g. `--`).
86
+ * @param arg the argument to check
87
+ * @returns whether `arg` is a long option prefix.
88
+ */
89
89
  declare function hasLongOptionPrefix(arg: string): boolean; //#endregion
90
90
  export { ArgToken, ParserOptions, hasLongOptionPrefix as hasLongOptionPrefix$1, isShortOption as isShortOption$1, parseArgs as parseArgs$1 };
package/lib/parser.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { ArgToken, ParserOptions, hasLongOptionPrefix$1 as hasLongOptionPrefix, isShortOption$1 as isShortOption, parseArgs$1 as parseArgs } from "./parser.d-Cheh2e-O.js";
1
+ import { ArgToken, ParserOptions, hasLongOptionPrefix$1 as hasLongOptionPrefix, isShortOption$1 as isShortOption, parseArgs$1 as parseArgs } from "./parser-Bx112mWZ.js";
2
2
  export { ArgToken, ParserOptions, hasLongOptionPrefix, isShortOption, parseArgs };
@@ -1,4 +1,4 @@
1
- import { ArgToken } from "./parser.d-Cheh2e-O.js";
1
+ import { ArgToken } from "./parser-Bx112mWZ.js";
2
2
 
3
3
  //#region src/resolver.d.ts
4
4
  /**
@@ -10,6 +10,15 @@ import { ArgToken } from "./parser.d-Cheh2e-O.js";
10
10
  * - `type` is not only 'string' and 'boolean', but also 'number' and 'enum' too.
11
11
  * - `default` property type, not support multiple types
12
12
  */
13
+ /**
14
+ * An option schema for an argument.
15
+ * This schema is similar to the schema of the `node:utils`.
16
+ * difference is that:
17
+ * - `multiple` property is not supported
18
+ * - `required` property and `description` property are added
19
+ * - `type` is not only 'string' and 'boolean', but also 'number' and 'enum' too.
20
+ * - `default` property type, not support multiple types
21
+ */
13
22
  interface ArgOptionSchema {
14
23
  /**
15
24
  * Type of argument.
@@ -34,39 +43,37 @@ interface ArgOptionSchema {
34
43
  /**
35
44
  * The allowed values of the argument, and string only. This property is only used when the type is 'enum'.
36
45
  */
37
- choices?: string[];
46
+ choices?: string[] | readonly string[];
38
47
  /**
39
48
  * The default value of the argument.
40
49
  * if the type is 'enum', the default value must be one of the allowed values.
41
50
  */
42
51
  default?: string | boolean | number;
43
- } /**
44
- * An object that contains {@link ArgOptionSchema | options schema}.
45
- */
46
-
52
+ }
53
+ /**
54
+ * An object that contains {@link ArgOptionSchema | options schema}.
55
+ */
47
56
  interface ArgOptions {
48
57
  [option: string]: ArgOptionSchema;
49
- } /**
50
- * An object that contains the values of the arguments.
51
- */
52
-
58
+ }
59
+ /**
60
+ * An object that contains the values of the arguments.
61
+ */
53
62
  type ArgValues<T> = T extends ArgOptions ? ResolveArgValues<T, { [Option in keyof T]: ExtractOptionValue<T[Option]> }> : {
54
63
  [option: string]: string | boolean | number | undefined;
55
- }; /**
56
- * @internal
57
- */
58
-
59
- type ExtractOptionValue<O extends ArgOptionSchema> = O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : O["type"] extends "number" ? number : O["type"] extends "enum" ? O["choices"] extends string[] ? O["choices"][number] : never : string | boolean | number; /**
60
- * @internal
61
- */
62
-
64
+ };
65
+ /**
66
+ * @internal
67
+ */
68
+ type ExtractOptionValue<O extends ArgOptionSchema> = O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : O["type"] extends "number" ? number : O["type"] extends "enum" ? O["choices"] extends string[] | readonly string[] ? O["choices"][number] : never : string | boolean | number;
69
+ /**
70
+ * @internal
71
+ */
63
72
  type ResolveArgValues<O extends ArgOptions, V extends Record<keyof O, unknown>> = { -readonly [Option in keyof O]?: V[Option] } & FilterArgs<O, V, "default"> & FilterArgs<O, V, "required"> extends infer P ? { [K in keyof P]: P[K] } : never;
64
-
65
73
  /**
66
74
  * @internal
67
75
  */
68
76
  type FilterArgs<O extends ArgOptions, V extends Record<keyof O, unknown>, K extends keyof ArgOptionSchema> = { [Option in keyof O as O[Option][K] extends {} ? Option : never]: V[Option] };
69
-
70
77
  /**
71
78
  * An options for {@link resolveArgs | resolve arguments}.
72
79
  */
@@ -78,7 +85,6 @@ interface ResolveArgsOptions {
78
85
  */
79
86
  optionGrouping?: boolean;
80
87
  }
81
-
82
88
  /**
83
89
  * Resolve command line arguments.
84
90
  * @param options - An options that contains {@link ArgOptionSchema | options schema}.
@@ -94,12 +100,10 @@ declare function resolveArgs<T extends ArgOptions>(options: T, tokens: ArgToken[
94
100
  rest: string[];
95
101
  error: AggregateError | undefined;
96
102
  };
97
-
98
103
  /**
99
104
  * An error type for {@link OptionResolveError}.
100
105
  */
101
106
  type OptionResolveErrorType = "type" | "required";
102
-
103
107
  /**
104
108
  * An error that occurs when resolving options.
105
109
  * This error is thrown when the option is not valid.
package/lib/resolver.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import "./parser.d-Cheh2e-O.js";
2
- import { ArgOptionSchema, ArgOptions, ArgValues, ExtractOptionValue, FilterArgs, OptionResolveError$1 as OptionResolveError, OptionResolveErrorType, ResolveArgValues, ResolveArgsOptions, resolveArgs$1 as resolveArgs } from "./resolver.d-D6XfwWOY.js";
1
+ import "./parser-Bx112mWZ.js";
2
+ import { ArgOptionSchema, ArgOptions, ArgValues, ExtractOptionValue, FilterArgs, OptionResolveError$1 as OptionResolveError, OptionResolveErrorType, ResolveArgValues, ResolveArgsOptions, resolveArgs$1 as resolveArgs } from "./resolver-ByBRRKOK.js";
3
3
  export { ArgOptionSchema, ArgOptions, ArgValues, ExtractOptionValue, FilterArgs, OptionResolveError, OptionResolveErrorType, ResolveArgValues, ResolveArgsOptions, resolveArgs };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "args-tokens",
3
3
  "description": "parseArgs tokens compatibility and more high-performance parser",
4
- "version": "0.16.0",
4
+ "version": "0.16.1",
5
5
  "author": {
6
6
  "name": "kazuya kawaguchi",
7
7
  "email": "kawakazu80@gmail.com"
@@ -68,28 +68,28 @@
68
68
  "@eslint/markdown": "^6.4.0",
69
69
  "@kazupon/eslint-config": "^0.29.0",
70
70
  "@kazupon/prettier-config": "^0.1.1",
71
- "@types/node": "^22.15.2",
72
- "@vitest/eslint-plugin": "^1.1.43",
71
+ "@types/node": "^22.15.3",
72
+ "@vitest/eslint-plugin": "^1.1.44",
73
73
  "bumpp": "^10.1.0",
74
- "deno": "^2.2.12",
75
- "eslint": "^9.25.1",
74
+ "deno": "^2.3.1",
75
+ "eslint": "^9.26.0",
76
76
  "eslint-config-prettier": "^10.1.2",
77
77
  "eslint-plugin-jsonc": "^2.20.0",
78
78
  "eslint-plugin-promise": "^7.2.1",
79
79
  "eslint-plugin-regexp": "^2.7.0",
80
- "eslint-plugin-unicorn": "^58.0.0",
80
+ "eslint-plugin-unicorn": "^59.0.0",
81
81
  "eslint-plugin-yml": "^1.18.0",
82
82
  "gh-changelogen": "^0.2.8",
83
83
  "jsr": "^0.13.4",
84
84
  "jsr-exports-lint": "^0.2.0",
85
- "knip": "^5.50.5",
85
+ "knip": "^5.52.0",
86
86
  "lint-staged": "^15.5.1",
87
87
  "mitata": "^1.0.34",
88
88
  "pkg-pr-new": "^0.0.43",
89
89
  "prettier": "^3.5.3",
90
- "tsdown": "^0.10.0",
90
+ "tsdown": "^0.10.2",
91
91
  "typescript": "^5.8.3",
92
- "typescript-eslint": "^8.31.0",
92
+ "typescript-eslint": "^8.31.1",
93
93
  "vitest": "^3.1.2"
94
94
  },
95
95
  "prettier": "@kazupon/prettier-config",