@optique/core 1.4.0-dev.2665 → 1.4.0-dev.2668
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/dist/index.cjs +1 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/valueparser.cjs +114 -0
- package/dist/valueparser.d.cts +20 -1
- package/dist/valueparser.d.ts +20 -1
- package/dist/valueparser.js +114 -1
- package/package.json +2 -2
- package/skills/optique/SKILL.md +4 -4
package/dist/index.cjs
CHANGED
|
@@ -98,6 +98,7 @@ exports.metavar = require_message.metavar;
|
|
|
98
98
|
exports.multiple = require_modifiers.multiple;
|
|
99
99
|
exports.negatableFlag = require_primitives.negatableFlag;
|
|
100
100
|
exports.nonEmpty = require_modifiers.nonEmpty;
|
|
101
|
+
exports.normalizeInput = require_valueparser.normalizeInput;
|
|
101
102
|
exports.normalizeUsage = require_usage.normalizeUsage;
|
|
102
103
|
exports.nu = require_completion.nu;
|
|
103
104
|
exports.object = require_constructs.object;
|
package/dist/index.d.cts
CHANGED
|
@@ -4,7 +4,7 @@ import { Message, MessageFormatOptions, MessageFormatter, MessageFormatterOption
|
|
|
4
4
|
import { ErrorLabelTerm, LabelTerm, ProgramNameTerm, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, defaultTerminalTheme } from "./terminal.cjs";
|
|
5
5
|
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.cjs";
|
|
6
6
|
import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, EnvironmentBindingDoc, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, deriveEnvironmentSection, formatDocPage, isDocEntryHidden } from "./doc.cjs";
|
|
7
|
-
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.cjs";
|
|
7
|
+
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.cjs";
|
|
8
8
|
import { CombineModes, DetailedParseResult, DocState, EffectfulCompletionSession, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseDetailed, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.cjs";
|
|
9
9
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
10
10
|
import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
|
|
@@ -13,4 +13,4 @@ import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./c
|
|
|
13
13
|
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.cjs";
|
|
14
14
|
import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, HelpSectionsOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
|
|
15
15
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.cjs";
|
|
16
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DetailedParseResult, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, EnvironmentBindingDoc, ErrorLabelTerm, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HelpSectionsOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LabelTerm, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageFormatter, type MessageFormatterOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, OriginOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ProgramNameTerm, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
16
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DetailedParseResult, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, EnvironmentBindingDoc, ErrorLabelTerm, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HelpSectionsOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LabelTerm, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageFormatter, type MessageFormatterOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, OriginOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ProgramNameTerm, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeInput, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Message, MessageFormatOptions, MessageFormatter, MessageFormatterOption
|
|
|
4
4
|
import { ErrorLabelTerm, LabelTerm, ProgramNameTerm, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, defaultTerminalTheme } from "./terminal.js";
|
|
5
5
|
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
|
|
6
6
|
import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, EnvironmentBindingDoc, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, deriveEnvironmentSection, formatDocPage, isDocEntryHidden } from "./doc.js";
|
|
7
|
-
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
|
|
7
|
+
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
|
|
8
8
|
import { CombineModes, DetailedParseResult, DocState, EffectfulCompletionSession, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseDetailed, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
|
|
9
9
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
10
10
|
import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
|
|
@@ -13,4 +13,4 @@ import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./c
|
|
|
13
13
|
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
|
|
14
14
|
import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, HelpSectionsOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
15
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
|
|
16
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DetailedParseResult, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, EnvironmentBindingDoc, ErrorLabelTerm, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HelpSectionsOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LabelTerm, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageFormatter, type MessageFormatterOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, OriginOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ProgramNameTerm, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
16
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DetailedParseResult, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, EnvironmentBindingDoc, ErrorLabelTerm, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HelpSectionsOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LabelTerm, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageFormatter, type MessageFormatterOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, OriginOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ProgramNameTerm, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, ShowEnvironmentOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, SyntaxPunctuationTerm, TerminalColor, TerminalFormatContext, TerminalFormatter, TerminalFragment, TerminalStyle, TerminalTerm, TerminalTheme, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeInput, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,8 @@ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
|
9
9
|
import { WithDefaultError, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
|
|
10
10
|
import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.js";
|
|
11
11
|
import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
|
|
12
|
-
import { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
|
|
12
|
+
import { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
|
|
13
13
|
import { argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
|
|
14
14
|
import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
15
|
|
|
16
|
-
export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
16
|
+
export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createMessageFormatter, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, defaultTerminalTheme, deferredValue, dependency, deriveEnvironmentSection, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeInput, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, origin, parse, parseAsync, parseDetailed, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/valueparser.cjs
CHANGED
|
@@ -276,6 +276,119 @@ function biject(mapping) {
|
|
|
276
276
|
});
|
|
277
277
|
return parser;
|
|
278
278
|
}
|
|
279
|
+
function applyInputNormalizer(normalize, input) {
|
|
280
|
+
try {
|
|
281
|
+
const value = normalize(input);
|
|
282
|
+
if (typeof value === "string") return {
|
|
283
|
+
success: true,
|
|
284
|
+
value
|
|
285
|
+
};
|
|
286
|
+
Promise.resolve(value).catch(() => {});
|
|
287
|
+
return { success: false };
|
|
288
|
+
} catch {
|
|
289
|
+
return { success: false };
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function inputNormalizationFailure() {
|
|
293
|
+
return {
|
|
294
|
+
success: false,
|
|
295
|
+
error: require_message.message`Failed to normalize input.`
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Normalizes raw string input before another value parser parses it.
|
|
300
|
+
*
|
|
301
|
+
* The same function receives completion prefixes before the wrapped parser's
|
|
302
|
+
* `suggest()` method. Suggestions themselves are left unchanged, so use a
|
|
303
|
+
* pure, idempotent function that preserves the wrapped parser's suggested
|
|
304
|
+
* spellings when completion is needed. This does not change typed fallback
|
|
305
|
+
* values handled by the wrapped parser's `validate()` or `normalize()` hooks.
|
|
306
|
+
*
|
|
307
|
+
* @template M The mode of the wrapped parser.
|
|
308
|
+
* @template T The value type produced by the wrapped parser.
|
|
309
|
+
* @param parser The value parser to wrap.
|
|
310
|
+
* @param normalize A synchronous function that maps raw strings to strings.
|
|
311
|
+
* @returns A value parser with normalized input and completion prefixes.
|
|
312
|
+
* @throws {TypeError} If `parser` is invalid, is a dependency source, or
|
|
313
|
+
* `normalize` is not a function.
|
|
314
|
+
* @since 1.4.0
|
|
315
|
+
*/
|
|
316
|
+
function normalizeInput(parser, normalize) {
|
|
317
|
+
if (!isValueParser(parser)) throw new TypeError("Expected parser to be a value parser.");
|
|
318
|
+
if (typeof normalize !== "function") throw new TypeError("Expected normalize to be a function.");
|
|
319
|
+
if (require_internal_dependency.isDependencySource(parser)) throw new TypeError("Cannot normalize a dependency source directly.");
|
|
320
|
+
const normalizeValue = parser.normalize?.bind(parser);
|
|
321
|
+
const validate = parser.validate?.bind(parser);
|
|
322
|
+
const suggest = parser.suggest?.bind(parser);
|
|
323
|
+
const wrapped = {
|
|
324
|
+
mode: parser.mode,
|
|
325
|
+
metavar: parser.metavar,
|
|
326
|
+
get placeholder() {
|
|
327
|
+
return parser.placeholder;
|
|
328
|
+
},
|
|
329
|
+
...parser.choices == null ? {} : { choices: parser.choices },
|
|
330
|
+
parse(input) {
|
|
331
|
+
const normalized = applyInputNormalizer(normalize, input);
|
|
332
|
+
return normalized.success ? parser.parse(normalized.value) : require_mode_dispatch.wrapForMode(parser.mode, inputNormalizationFailure());
|
|
333
|
+
},
|
|
334
|
+
format(value) {
|
|
335
|
+
return parser.format(value);
|
|
336
|
+
},
|
|
337
|
+
...normalizeValue == null ? {} : { normalize(value) {
|
|
338
|
+
return normalizeValue(value);
|
|
339
|
+
} },
|
|
340
|
+
...validate == null ? {} : { validate(value) {
|
|
341
|
+
return validate(value);
|
|
342
|
+
} },
|
|
343
|
+
...suggest == null ? {} : { suggest(prefix) {
|
|
344
|
+
const normalized = applyInputNormalizer(normalize, prefix);
|
|
345
|
+
return require_mode_dispatch.wrapIterableForMode(parser.mode, normalized.success ? suggest(normalized.value) : []);
|
|
346
|
+
} }
|
|
347
|
+
};
|
|
348
|
+
if (require_internal_dependency.isDerivedValueParser(parser)) preserveNormalizedDerivedMetadata(wrapped, parser, normalize);
|
|
349
|
+
return wrapped;
|
|
350
|
+
}
|
|
351
|
+
function preserveNormalizedDerivedMetadata(wrapped, parser, normalize) {
|
|
352
|
+
Object.defineProperties(wrapped, {
|
|
353
|
+
[require_internal_dependency.derivedValueParserMarker]: {
|
|
354
|
+
value: true,
|
|
355
|
+
enumerable: true
|
|
356
|
+
},
|
|
357
|
+
[require_internal_dependency.dependencyId]: {
|
|
358
|
+
value: parser[require_internal_dependency.dependencyId],
|
|
359
|
+
enumerable: true
|
|
360
|
+
},
|
|
361
|
+
[require_internal_dependency.parseWithDependency]: {
|
|
362
|
+
value(input, dependencyValue) {
|
|
363
|
+
const normalized = applyInputNormalizer(normalize, input);
|
|
364
|
+
return require_mode_dispatch.wrapForMode(parser.mode, normalized.success ? parser[require_internal_dependency.parseWithDependency](normalized.value, dependencyValue) : inputNormalizationFailure());
|
|
365
|
+
},
|
|
366
|
+
enumerable: true
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
if (require_internal_dependency.dependencyIds in parser && parser[require_internal_dependency.dependencyIds] != null) Object.defineProperty(wrapped, require_internal_dependency.dependencyIds, {
|
|
370
|
+
value: parser[require_internal_dependency.dependencyIds],
|
|
371
|
+
enumerable: true
|
|
372
|
+
});
|
|
373
|
+
if (require_internal_dependency.defaultValues in parser && parser[require_internal_dependency.defaultValues] != null) Object.defineProperty(wrapped, require_internal_dependency.defaultValues, {
|
|
374
|
+
value: parser[require_internal_dependency.defaultValues],
|
|
375
|
+
enumerable: true
|
|
376
|
+
});
|
|
377
|
+
if (require_internal_dependency.singleDefaultValue in parser && parser[require_internal_dependency.singleDefaultValue] != null) Object.defineProperty(wrapped, require_internal_dependency.singleDefaultValue, {
|
|
378
|
+
value: parser[require_internal_dependency.singleDefaultValue],
|
|
379
|
+
enumerable: true
|
|
380
|
+
});
|
|
381
|
+
if (require_internal_dependency.suggestWithDependency in parser && parser[require_internal_dependency.suggestWithDependency] != null) {
|
|
382
|
+
const suggest = parser[require_internal_dependency.suggestWithDependency].bind(parser);
|
|
383
|
+
Object.defineProperty(wrapped, require_internal_dependency.suggestWithDependency, {
|
|
384
|
+
value(prefix, dependencyValue) {
|
|
385
|
+
const normalized = applyInputNormalizer(normalize, prefix);
|
|
386
|
+
return require_mode_dispatch.wrapIterableForMode(parser.mode, normalized.success ? suggest(normalized.value, dependencyValue) : []);
|
|
387
|
+
},
|
|
388
|
+
enumerable: true
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
279
392
|
/**
|
|
280
393
|
* Creates a value parser that transforms the result of another value parser.
|
|
281
394
|
*
|
|
@@ -6876,6 +6989,7 @@ exports.json = json;
|
|
|
6876
6989
|
exports.keyValue = keyValue;
|
|
6877
6990
|
exports.locale = locale;
|
|
6878
6991
|
exports.macAddress = macAddress;
|
|
6992
|
+
exports.normalizeInput = normalizeInput;
|
|
6879
6993
|
exports.origin = origin;
|
|
6880
6994
|
exports.port = port;
|
|
6881
6995
|
exports.portRange = portRange;
|
package/dist/valueparser.d.cts
CHANGED
|
@@ -428,6 +428,25 @@ declare function choice<const T extends number>(choices: readonly T[], options?:
|
|
|
428
428
|
*/
|
|
429
429
|
declare function biject<const T extends readonly unknown[]>(mapping: T): never;
|
|
430
430
|
declare function biject<const T extends object>(mapping: T): ValueParser<"sync", BijectValue<T>>;
|
|
431
|
+
/**
|
|
432
|
+
* Normalizes raw string input before another value parser parses it.
|
|
433
|
+
*
|
|
434
|
+
* The same function receives completion prefixes before the wrapped parser's
|
|
435
|
+
* `suggest()` method. Suggestions themselves are left unchanged, so use a
|
|
436
|
+
* pure, idempotent function that preserves the wrapped parser's suggested
|
|
437
|
+
* spellings when completion is needed. This does not change typed fallback
|
|
438
|
+
* values handled by the wrapped parser's `validate()` or `normalize()` hooks.
|
|
439
|
+
*
|
|
440
|
+
* @template M The mode of the wrapped parser.
|
|
441
|
+
* @template T The value type produced by the wrapped parser.
|
|
442
|
+
* @param parser The value parser to wrap.
|
|
443
|
+
* @param normalize A synchronous function that maps raw strings to strings.
|
|
444
|
+
* @returns A value parser with normalized input and completion prefixes.
|
|
445
|
+
* @throws {TypeError} If `parser` is invalid, is a dependency source, or
|
|
446
|
+
* `normalize` is not a function.
|
|
447
|
+
* @since 1.4.0
|
|
448
|
+
*/
|
|
449
|
+
declare function normalizeInput<M extends Mode, T>(parser: ValueParser<M, T>, normalize: (input: string) => string): ValueParser<M, T>;
|
|
431
450
|
/**
|
|
432
451
|
* Creates a value parser that transforms the result of another value parser.
|
|
433
452
|
*
|
|
@@ -3426,4 +3445,4 @@ declare function firstOf<const TParsers extends readonly [ValueParser<"sync", un
|
|
|
3426
3445
|
*/
|
|
3427
3446
|
declare function firstOf<const TParsers extends readonly ValueParser<"sync", unknown>[]>(parsers: TParsers, options?: FirstOfOptions): ValueParser<"sync", ValueParserValue<TParsers[number]>>;
|
|
3428
3447
|
//#endregion
|
|
3429
|
-
export { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, type Mode, type ModeIterable, type ModeValue, type NonEmptyString, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
|
3448
|
+
export { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, type Mode, type ModeIterable, type ModeValue, type NonEmptyString, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
package/dist/valueparser.d.ts
CHANGED
|
@@ -428,6 +428,25 @@ declare function choice<const T extends number>(choices: readonly T[], options?:
|
|
|
428
428
|
*/
|
|
429
429
|
declare function biject<const T extends readonly unknown[]>(mapping: T): never;
|
|
430
430
|
declare function biject<const T extends object>(mapping: T): ValueParser<"sync", BijectValue<T>>;
|
|
431
|
+
/**
|
|
432
|
+
* Normalizes raw string input before another value parser parses it.
|
|
433
|
+
*
|
|
434
|
+
* The same function receives completion prefixes before the wrapped parser's
|
|
435
|
+
* `suggest()` method. Suggestions themselves are left unchanged, so use a
|
|
436
|
+
* pure, idempotent function that preserves the wrapped parser's suggested
|
|
437
|
+
* spellings when completion is needed. This does not change typed fallback
|
|
438
|
+
* values handled by the wrapped parser's `validate()` or `normalize()` hooks.
|
|
439
|
+
*
|
|
440
|
+
* @template M The mode of the wrapped parser.
|
|
441
|
+
* @template T The value type produced by the wrapped parser.
|
|
442
|
+
* @param parser The value parser to wrap.
|
|
443
|
+
* @param normalize A synchronous function that maps raw strings to strings.
|
|
444
|
+
* @returns A value parser with normalized input and completion prefixes.
|
|
445
|
+
* @throws {TypeError} If `parser` is invalid, is a dependency source, or
|
|
446
|
+
* `normalize` is not a function.
|
|
447
|
+
* @since 1.4.0
|
|
448
|
+
*/
|
|
449
|
+
declare function normalizeInput<M extends Mode, T>(parser: ValueParser<M, T>, normalize: (input: string) => string): ValueParser<M, T>;
|
|
431
450
|
/**
|
|
432
451
|
* Creates a value parser that transforms the result of another value parser.
|
|
433
452
|
*
|
|
@@ -3426,4 +3445,4 @@ declare function firstOf<const TParsers extends readonly [ValueParser<"sync", un
|
|
|
3426
3445
|
*/
|
|
3427
3446
|
declare function firstOf<const TParsers extends readonly ValueParser<"sync", unknown>[]>(parsers: TParsers, options?: FirstOfOptions): ValueParser<"sync", ValueParserValue<TParsers[number]>>;
|
|
3428
3447
|
//#endregion
|
|
3429
|
-
export { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, type Mode, type ModeIterable, type ModeValue, type NonEmptyString, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
|
3448
|
+
export { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, type Mode, type ModeIterable, type ModeValue, type NonEmptyString, OriginOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
package/dist/valueparser.js
CHANGED
|
@@ -276,6 +276,119 @@ function biject(mapping) {
|
|
|
276
276
|
});
|
|
277
277
|
return parser;
|
|
278
278
|
}
|
|
279
|
+
function applyInputNormalizer(normalize, input) {
|
|
280
|
+
try {
|
|
281
|
+
const value = normalize(input);
|
|
282
|
+
if (typeof value === "string") return {
|
|
283
|
+
success: true,
|
|
284
|
+
value
|
|
285
|
+
};
|
|
286
|
+
Promise.resolve(value).catch(() => {});
|
|
287
|
+
return { success: false };
|
|
288
|
+
} catch {
|
|
289
|
+
return { success: false };
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function inputNormalizationFailure() {
|
|
293
|
+
return {
|
|
294
|
+
success: false,
|
|
295
|
+
error: message`Failed to normalize input.`
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Normalizes raw string input before another value parser parses it.
|
|
300
|
+
*
|
|
301
|
+
* The same function receives completion prefixes before the wrapped parser's
|
|
302
|
+
* `suggest()` method. Suggestions themselves are left unchanged, so use a
|
|
303
|
+
* pure, idempotent function that preserves the wrapped parser's suggested
|
|
304
|
+
* spellings when completion is needed. This does not change typed fallback
|
|
305
|
+
* values handled by the wrapped parser's `validate()` or `normalize()` hooks.
|
|
306
|
+
*
|
|
307
|
+
* @template M The mode of the wrapped parser.
|
|
308
|
+
* @template T The value type produced by the wrapped parser.
|
|
309
|
+
* @param parser The value parser to wrap.
|
|
310
|
+
* @param normalize A synchronous function that maps raw strings to strings.
|
|
311
|
+
* @returns A value parser with normalized input and completion prefixes.
|
|
312
|
+
* @throws {TypeError} If `parser` is invalid, is a dependency source, or
|
|
313
|
+
* `normalize` is not a function.
|
|
314
|
+
* @since 1.4.0
|
|
315
|
+
*/
|
|
316
|
+
function normalizeInput(parser, normalize) {
|
|
317
|
+
if (!isValueParser(parser)) throw new TypeError("Expected parser to be a value parser.");
|
|
318
|
+
if (typeof normalize !== "function") throw new TypeError("Expected normalize to be a function.");
|
|
319
|
+
if (isDependencySource(parser)) throw new TypeError("Cannot normalize a dependency source directly.");
|
|
320
|
+
const normalizeValue = parser.normalize?.bind(parser);
|
|
321
|
+
const validate = parser.validate?.bind(parser);
|
|
322
|
+
const suggest = parser.suggest?.bind(parser);
|
|
323
|
+
const wrapped = {
|
|
324
|
+
mode: parser.mode,
|
|
325
|
+
metavar: parser.metavar,
|
|
326
|
+
get placeholder() {
|
|
327
|
+
return parser.placeholder;
|
|
328
|
+
},
|
|
329
|
+
...parser.choices == null ? {} : { choices: parser.choices },
|
|
330
|
+
parse(input) {
|
|
331
|
+
const normalized = applyInputNormalizer(normalize, input);
|
|
332
|
+
return normalized.success ? parser.parse(normalized.value) : wrapForMode(parser.mode, inputNormalizationFailure());
|
|
333
|
+
},
|
|
334
|
+
format(value) {
|
|
335
|
+
return parser.format(value);
|
|
336
|
+
},
|
|
337
|
+
...normalizeValue == null ? {} : { normalize(value) {
|
|
338
|
+
return normalizeValue(value);
|
|
339
|
+
} },
|
|
340
|
+
...validate == null ? {} : { validate(value) {
|
|
341
|
+
return validate(value);
|
|
342
|
+
} },
|
|
343
|
+
...suggest == null ? {} : { suggest(prefix) {
|
|
344
|
+
const normalized = applyInputNormalizer(normalize, prefix);
|
|
345
|
+
return wrapIterableForMode(parser.mode, normalized.success ? suggest(normalized.value) : []);
|
|
346
|
+
} }
|
|
347
|
+
};
|
|
348
|
+
if (isDerivedValueParser(parser)) preserveNormalizedDerivedMetadata(wrapped, parser, normalize);
|
|
349
|
+
return wrapped;
|
|
350
|
+
}
|
|
351
|
+
function preserveNormalizedDerivedMetadata(wrapped, parser, normalize) {
|
|
352
|
+
Object.defineProperties(wrapped, {
|
|
353
|
+
[derivedValueParserMarker]: {
|
|
354
|
+
value: true,
|
|
355
|
+
enumerable: true
|
|
356
|
+
},
|
|
357
|
+
[dependencyId]: {
|
|
358
|
+
value: parser[dependencyId],
|
|
359
|
+
enumerable: true
|
|
360
|
+
},
|
|
361
|
+
[parseWithDependency]: {
|
|
362
|
+
value(input, dependencyValue) {
|
|
363
|
+
const normalized = applyInputNormalizer(normalize, input);
|
|
364
|
+
return wrapForMode(parser.mode, normalized.success ? parser[parseWithDependency](normalized.value, dependencyValue) : inputNormalizationFailure());
|
|
365
|
+
},
|
|
366
|
+
enumerable: true
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
if (dependencyIds in parser && parser[dependencyIds] != null) Object.defineProperty(wrapped, dependencyIds, {
|
|
370
|
+
value: parser[dependencyIds],
|
|
371
|
+
enumerable: true
|
|
372
|
+
});
|
|
373
|
+
if (defaultValues in parser && parser[defaultValues] != null) Object.defineProperty(wrapped, defaultValues, {
|
|
374
|
+
value: parser[defaultValues],
|
|
375
|
+
enumerable: true
|
|
376
|
+
});
|
|
377
|
+
if (singleDefaultValue in parser && parser[singleDefaultValue] != null) Object.defineProperty(wrapped, singleDefaultValue, {
|
|
378
|
+
value: parser[singleDefaultValue],
|
|
379
|
+
enumerable: true
|
|
380
|
+
});
|
|
381
|
+
if (suggestWithDependency in parser && parser[suggestWithDependency] != null) {
|
|
382
|
+
const suggest = parser[suggestWithDependency].bind(parser);
|
|
383
|
+
Object.defineProperty(wrapped, suggestWithDependency, {
|
|
384
|
+
value(prefix, dependencyValue) {
|
|
385
|
+
const normalized = applyInputNormalizer(normalize, prefix);
|
|
386
|
+
return wrapIterableForMode(parser.mode, normalized.success ? suggest(normalized.value, dependencyValue) : []);
|
|
387
|
+
},
|
|
388
|
+
enumerable: true
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
279
392
|
/**
|
|
280
393
|
* Creates a value parser that transforms the result of another value parser.
|
|
281
394
|
*
|
|
@@ -6852,4 +6965,4 @@ function plainObjectsEqual(a, b) {
|
|
|
6852
6965
|
}
|
|
6853
6966
|
|
|
6854
6967
|
//#endregion
|
|
6855
|
-
export { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
|
6968
|
+
export { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, ensureNonEmptyString, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isNonEmptyString, isValueParser, json, keyValue, locale, macAddress, normalizeInput, origin, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optique/core",
|
|
3
|
-
"version": "1.4.0-dev.
|
|
3
|
+
"version": "1.4.0-dev.2668",
|
|
4
4
|
"description": "Type-safe combinatorial command-line interface parser",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"CLI",
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
},
|
|
238
238
|
"sideEffects": false,
|
|
239
239
|
"devDependencies": {
|
|
240
|
-
"@optique/env": "1.4.0-dev.
|
|
240
|
+
"@optique/env": "1.4.0-dev.2668+49837969",
|
|
241
241
|
"@types/node": "^24.0.0",
|
|
242
242
|
"fast-check": "^4.7.0",
|
|
243
243
|
"tsdown": "^0.13.0",
|
package/skills/optique/SKILL.md
CHANGED
|
@@ -44,10 +44,10 @@ Core rules
|
|
|
44
44
|
`url()`, `origin()`, and `uuid()` instead of validating raw strings after
|
|
45
45
|
parsing. Use `regExp({ flags })` for user-supplied sources, `biject()` for
|
|
46
46
|
one-to-one string-to-value choices, and `transform()` when an existing
|
|
47
|
-
value parser
|
|
48
|
-
|
|
49
|
-
file-system paths. Write a
|
|
50
|
-
parser only when
|
|
47
|
+
value parser accepts the spelling but your app needs a different result
|
|
48
|
+
type. Use `normalizeInput()` for raw-string cleanup before validation and
|
|
49
|
+
`path()` from `@optique/run/valueparser` for file-system paths. Write a
|
|
50
|
+
custom value parser only when these tools do not cover the domain.
|
|
51
51
|
- Since 1.4.0, `-p8080`/`-vp8080` accept attached values. Values consume
|
|
52
52
|
the literal suffix (`-p=5` gives `"=5"`); full single-dash names win.
|
|
53
53
|
- Async value parsers like *@optique/git* make containing parsers async.
|