@optique/core 1.1.0-dev.2087 → 1.1.0-dev.2146

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 (74) hide show
  1. package/dist/annotation-state.cjs +26 -26
  2. package/dist/annotation-state.d.cts +133 -1
  3. package/dist/annotation-state.d.ts +133 -1
  4. package/dist/annotations.cjs +2 -2
  5. package/dist/constructs.cjs +873 -73
  6. package/dist/constructs.d.cts +72 -1
  7. package/dist/constructs.d.ts +72 -1
  8. package/dist/constructs.js +808 -9
  9. package/dist/dependency-metadata.cjs +12 -12
  10. package/dist/dependency-metadata.d.cts +34 -3
  11. package/dist/dependency-metadata.d.ts +34 -3
  12. package/dist/dependency-runtime.cjs +37 -13
  13. package/dist/dependency-runtime.d.cts +197 -2
  14. package/dist/dependency-runtime.d.ts +197 -2
  15. package/dist/dependency-runtime.js +22 -1
  16. package/dist/dependency.cjs +7 -7
  17. package/dist/displaywidth.d.cts +12 -0
  18. package/dist/displaywidth.d.ts +12 -0
  19. package/dist/doc.cjs +3 -0
  20. package/dist/doc.js +3 -0
  21. package/dist/execution-context.d.cts +23 -0
  22. package/dist/execution-context.d.ts +23 -0
  23. package/dist/extension.cjs +14 -14
  24. package/dist/facade.cjs +49 -37
  25. package/dist/facade.js +34 -22
  26. package/dist/index.cjs +23 -21
  27. package/dist/index.d.cts +3 -3
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +4 -4
  30. package/dist/input-trace.d.cts +2 -1
  31. package/dist/input-trace.d.ts +2 -1
  32. package/dist/internal/annotations.cjs +3 -0
  33. package/dist/internal/annotations.d.cts +47 -5
  34. package/dist/internal/annotations.d.ts +47 -5
  35. package/dist/internal/annotations.js +1 -1
  36. package/dist/internal/command-alias.cjs +16 -0
  37. package/dist/internal/command-alias.js +14 -0
  38. package/dist/internal/dependency.cjs +131 -0
  39. package/dist/internal/dependency.d.cts +311 -2
  40. package/dist/internal/dependency.d.ts +311 -2
  41. package/dist/internal/dependency.js +119 -1
  42. package/dist/internal/parser.cjs +108 -23
  43. package/dist/internal/parser.d.cts +58 -3
  44. package/dist/internal/parser.d.ts +58 -3
  45. package/dist/internal/parser.js +101 -16
  46. package/dist/modifiers.cjs +74 -44
  47. package/dist/modifiers.js +34 -4
  48. package/dist/parser.cjs +11 -11
  49. package/dist/phase2-seed.cjs +2 -2
  50. package/dist/phase2-seed.d.cts +50 -0
  51. package/dist/phase2-seed.d.ts +50 -0
  52. package/dist/primitives.cjs +104 -33
  53. package/dist/primitives.d.cts +10 -0
  54. package/dist/primitives.d.ts +10 -0
  55. package/dist/primitives.js +84 -13
  56. package/dist/suggestion.cjs +72 -2
  57. package/dist/suggestion.d.cts +188 -0
  58. package/dist/suggestion.d.ts +188 -0
  59. package/dist/suggestion.js +71 -3
  60. package/dist/usage-internals.cjs +14 -6
  61. package/dist/usage-internals.js +14 -6
  62. package/dist/usage.cjs +33 -8
  63. package/dist/usage.d.cts +31 -0
  64. package/dist/usage.d.ts +31 -0
  65. package/dist/usage.js +33 -8
  66. package/dist/validate.cjs +1 -0
  67. package/dist/validate.d.cts +99 -0
  68. package/dist/validate.d.ts +99 -0
  69. package/dist/validate.js +1 -1
  70. package/dist/valueparser.cjs +333 -79
  71. package/dist/valueparser.d.cts +197 -1
  72. package/dist/valueparser.d.ts +197 -1
  73. package/dist/valueparser.js +334 -81
  74. package/package.json +19 -4
@@ -1065,6 +1065,28 @@ interface TupleOptions {
1065
1065
  */
1066
1066
  readonly allowDuplicates?: boolean;
1067
1067
  }
1068
+ /**
1069
+ * Options for the {@link seq} parser.
1070
+ * @since 1.1.0
1071
+ */
1072
+ interface SeqOptions {
1073
+ /**
1074
+ * When `true`, allows duplicate option names even when they can be active
1075
+ * at the same sequential position. By default (`false`), duplicate option
1076
+ * names at the same position cause a construction-time error.
1077
+ *
1078
+ * @default `false`
1079
+ * @since 1.1.0
1080
+ */
1081
+ readonly allowDuplicates?: boolean;
1082
+ }
1083
+ type SeqTailOptions = SeqOptions & {
1084
+ readonly $valueType?: never;
1085
+ };
1086
+ interface SeqState {
1087
+ readonly index: number;
1088
+ readonly states: readonly unknown[];
1089
+ }
1068
1090
  /**
1069
1091
  * Creates a parser that combines multiple parsers into a sequential tuple parser.
1070
1092
  * The parsers are applied in the order they appear in the array, and all must
@@ -1094,6 +1116,55 @@ declare function tuple<const T extends readonly Parser<Mode, unknown, unknown>[]
1094
1116
  * whitespace-only, or contains control characters.
1095
1117
  */
1096
1118
  declare function tuple<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, parsers: T, options?: TupleOptions): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, { readonly [K in keyof T]: T[K]["$stateType"][number] extends (infer U2) ? U2 : never }>;
1119
+ /**
1120
+ * Creates an ordered parser that applies child parsers in declaration order.
1121
+ *
1122
+ * Unlike {@link tuple}, which lets child parsers compete for a shared input
1123
+ * buffer by priority, `seq()` keeps a cursor and only parses the current child.
1124
+ * A child may be skipped when its {@link Parser.canSkip} predicate reports
1125
+ * that it can complete without consuming more CLI input.
1126
+ *
1127
+ * @template T A readonly array type where each element is a {@link Parser}.
1128
+ * @param parsers Parsers to apply in the order they are provided.
1129
+ * @returns A parser that produces a readonly tuple of child values.
1130
+ * @since 1.1.0
1131
+ */
1132
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(...parsers: T): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1133
+ /**
1134
+ * Creates an ordered parser with a label for generated documentation.
1135
+ *
1136
+ * @template T A readonly array type where each element is a {@link Parser}.
1137
+ * @param label A descriptive label for this parser group.
1138
+ * @param parsers Parsers to apply in the order they are provided.
1139
+ * @returns A parser that produces a readonly tuple of child values.
1140
+ * @throws {TypeError} If the label is empty, whitespace-only, or contains
1141
+ * control characters.
1142
+ * @since 1.1.0
1143
+ */
1144
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, ...parsers: T): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1145
+ /**
1146
+ * Creates an ordered parser with options.
1147
+ *
1148
+ * @template T A readonly array type where each element is a {@link Parser}.
1149
+ * @param parsers Parsers to apply in the order they are provided, followed by
1150
+ * {@link SeqOptions}.
1151
+ * @returns A parser that produces a readonly tuple of child values.
1152
+ * @since 1.1.0
1153
+ */
1154
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(...args: readonly [...T, SeqTailOptions]): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1155
+ /**
1156
+ * Creates a labeled ordered parser with options.
1157
+ *
1158
+ * @template T A readonly array type where each element is a {@link Parser}.
1159
+ * @param label A descriptive label for this parser group.
1160
+ * @param args Parsers to apply in the order they are provided, followed by
1161
+ * {@link SeqOptions}.
1162
+ * @returns A parser that produces a readonly tuple of child values.
1163
+ * @throws {TypeError} If the label is empty, whitespace-only, or contains
1164
+ * control characters.
1165
+ * @since 1.1.0
1166
+ */
1167
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, ...args: readonly [...T, SeqTailOptions]): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1097
1168
  /**
1098
1169
  * Helper type to check if all members of a union are object-like.
1099
1170
  * This allows merge() to work with parsers like withDefault() that produce union types.
@@ -1398,4 +1469,4 @@ declare function conditional<TDiscriminator extends string, TBranches extends {
1398
1469
  */
1399
1470
  declare function conditional<TDiscriminator extends string, TBranches extends { [K in TDiscriminator]: Parser<Mode, unknown, unknown> }, TDefault extends Parser<Mode, unknown, unknown>, TD extends Parser<Mode, TDiscriminator, unknown>>(discriminator: TD, branches: TBranches, defaultBranch: TDefault, options?: ConditionalOptions): Parser<CombineModes<readonly [ExtractMode<TD>, ExtractMode<TDefault>, ...{ [K in keyof TBranches]: ExtractMode<TBranches[K]> }[keyof TBranches][]]>, ConditionalResultWithDefault<TDiscriminator, TBranches, TDefault>, ConditionalState<TDiscriminator>>;
1400
1471
  //#endregion
1401
- export { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple };
1472
+ export { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple };
@@ -1065,6 +1065,28 @@ interface TupleOptions {
1065
1065
  */
1066
1066
  readonly allowDuplicates?: boolean;
1067
1067
  }
1068
+ /**
1069
+ * Options for the {@link seq} parser.
1070
+ * @since 1.1.0
1071
+ */
1072
+ interface SeqOptions {
1073
+ /**
1074
+ * When `true`, allows duplicate option names even when they can be active
1075
+ * at the same sequential position. By default (`false`), duplicate option
1076
+ * names at the same position cause a construction-time error.
1077
+ *
1078
+ * @default `false`
1079
+ * @since 1.1.0
1080
+ */
1081
+ readonly allowDuplicates?: boolean;
1082
+ }
1083
+ type SeqTailOptions = SeqOptions & {
1084
+ readonly $valueType?: never;
1085
+ };
1086
+ interface SeqState {
1087
+ readonly index: number;
1088
+ readonly states: readonly unknown[];
1089
+ }
1068
1090
  /**
1069
1091
  * Creates a parser that combines multiple parsers into a sequential tuple parser.
1070
1092
  * The parsers are applied in the order they appear in the array, and all must
@@ -1094,6 +1116,55 @@ declare function tuple<const T extends readonly Parser<Mode, unknown, unknown>[]
1094
1116
  * whitespace-only, or contains control characters.
1095
1117
  */
1096
1118
  declare function tuple<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, parsers: T, options?: TupleOptions): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, { readonly [K in keyof T]: T[K]["$stateType"][number] extends (infer U2) ? U2 : never }>;
1119
+ /**
1120
+ * Creates an ordered parser that applies child parsers in declaration order.
1121
+ *
1122
+ * Unlike {@link tuple}, which lets child parsers compete for a shared input
1123
+ * buffer by priority, `seq()` keeps a cursor and only parses the current child.
1124
+ * A child may be skipped when its {@link Parser.canSkip} predicate reports
1125
+ * that it can complete without consuming more CLI input.
1126
+ *
1127
+ * @template T A readonly array type where each element is a {@link Parser}.
1128
+ * @param parsers Parsers to apply in the order they are provided.
1129
+ * @returns A parser that produces a readonly tuple of child values.
1130
+ * @since 1.1.0
1131
+ */
1132
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(...parsers: T): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1133
+ /**
1134
+ * Creates an ordered parser with a label for generated documentation.
1135
+ *
1136
+ * @template T A readonly array type where each element is a {@link Parser}.
1137
+ * @param label A descriptive label for this parser group.
1138
+ * @param parsers Parsers to apply in the order they are provided.
1139
+ * @returns A parser that produces a readonly tuple of child values.
1140
+ * @throws {TypeError} If the label is empty, whitespace-only, or contains
1141
+ * control characters.
1142
+ * @since 1.1.0
1143
+ */
1144
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, ...parsers: T): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1145
+ /**
1146
+ * Creates an ordered parser with options.
1147
+ *
1148
+ * @template T A readonly array type where each element is a {@link Parser}.
1149
+ * @param parsers Parsers to apply in the order they are provided, followed by
1150
+ * {@link SeqOptions}.
1151
+ * @returns A parser that produces a readonly tuple of child values.
1152
+ * @since 1.1.0
1153
+ */
1154
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(...args: readonly [...T, SeqTailOptions]): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1155
+ /**
1156
+ * Creates a labeled ordered parser with options.
1157
+ *
1158
+ * @template T A readonly array type where each element is a {@link Parser}.
1159
+ * @param label A descriptive label for this parser group.
1160
+ * @param args Parsers to apply in the order they are provided, followed by
1161
+ * {@link SeqOptions}.
1162
+ * @returns A parser that produces a readonly tuple of child values.
1163
+ * @throws {TypeError} If the label is empty, whitespace-only, or contains
1164
+ * control characters.
1165
+ * @since 1.1.0
1166
+ */
1167
+ declare function seq<const T extends readonly Parser<Mode, unknown, unknown>[]>(label: string, ...args: readonly [...T, SeqTailOptions]): Parser<CombineTupleModes<T>, { readonly [K in keyof T]: T[K]["$valueType"][number] extends (infer U) ? U : never }, SeqState>;
1097
1168
  /**
1098
1169
  * Helper type to check if all members of a union are object-like.
1099
1170
  * This allows merge() to work with parsers like withDefault() that produce union types.
@@ -1398,4 +1469,4 @@ declare function conditional<TDiscriminator extends string, TBranches extends {
1398
1469
  */
1399
1470
  declare function conditional<TDiscriminator extends string, TBranches extends { [K in TDiscriminator]: Parser<Mode, unknown, unknown> }, TDefault extends Parser<Mode, unknown, unknown>, TD extends Parser<Mode, TDiscriminator, unknown>>(discriminator: TD, branches: TBranches, defaultBranch: TDefault, options?: ConditionalOptions): Parser<CombineModes<readonly [ExtractMode<TD>, ExtractMode<TDefault>, ...{ [K in keyof TBranches]: ExtractMode<TBranches[K]> }[keyof TBranches][]]>, ConditionalResultWithDefault<TDiscriminator, TBranches, TDefault>, ConditionalState<TDiscriminator>>;
1400
1471
  //#endregion
1401
- export { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple };
1472
+ export { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple };