diff --git a/README.md b/README.md index e33ad78..b9db2f6 100644 --- a/README.md +++ b/README.md @@ -249,7 +249,7 @@ const parsed = typeFlag( if (stopParsing) { return true } - const isArgument = type === 'argument' + const isArgument = type === TokenType.Argument if (isArgument) { stopParsing = isArgument return stopParsing @@ -447,7 +447,7 @@ Type: type Options = { // Callback to skip parsing on certain argv tokens ignore?: ( - type: 'known-flag' | 'unknown-flag' | 'argument', + type: TokenType, flagOrArgv: string, value: string | undefined, ) => boolean | void diff --git a/src/index.ts b/src/index.ts index 866c61a..033a96c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ export { typeFlag } from './type-flag'; export { getFlag } from './get-flag'; +export { TokenType } from './types'; export type { TypeFlag, TypeFlagOptions, diff --git a/src/type-flag.ts b/src/type-flag.ts index be9e339..e6fac52 100644 --- a/src/type-flag.ts +++ b/src/type-flag.ts @@ -5,9 +5,7 @@ import type { TypeFlagOptions, } from './types'; import { - KNOWN_FLAG, - UNKNOWN_FLAG, - ARGUMENT, + TokenType } from './types'; import { hasOwn, @@ -59,7 +57,7 @@ export const typeFlag = ( const isKnownFlag = hasOwn(flagRegistry, name); if ( ignore?.( - isKnownFlag ? KNOWN_FLAG : UNKNOWN_FLAG, + isKnownFlag ? TokenType.KnownFlag : TokenType.UnknownFlag, name, explicitValue, ) @@ -103,7 +101,7 @@ export const typeFlag = ( }, onArgument: (args, index, isEoF) => { - if (ignore?.(ARGUMENT, argv[index[0]])) { + if (ignore?.(TokenType.Argument, argv[index[0]])) { return; } diff --git a/src/types.ts b/src/types.ts index 4735505..62deb46 100644 --- a/src/types.ts +++ b/src/types.ts @@ -110,18 +110,20 @@ export type TypeFlag = ParsedFlags<{ [flag in keyof Schemas]: InferFlagType; }>; -export const KNOWN_FLAG = 'known-flag'; -export const UNKNOWN_FLAG = 'unknown-flag'; -export const ARGUMENT = 'argument'; +export enum TokenType { + KnownFlag, + UnknownFlag, + Argument, +}; type IgnoreFunction = { ( - type: typeof ARGUMENT, + type: TokenType.Argument, argvElement: string, ): boolean | void; ( - type: typeof KNOWN_FLAG | typeof UNKNOWN_FLAG, + type: TokenType.KnownFlag | TokenType.UnknownFlag, flagName: string, flagValue: string | undefined, ): boolean | void; diff --git a/tests/specs/type-flag.ts b/tests/specs/type-flag.ts index 6534f64..897fe2d 100644 --- a/tests/specs/type-flag.ts +++ b/tests/specs/type-flag.ts @@ -1,5 +1,5 @@ import { testSuite, expect } from 'manten'; -import { typeFlag, type Flags } from '#type-flag'; +import { typeFlag, TokenType, type Flags } from '#type-flag'; export default testSuite(({ describe }) => { describe('type-flag', ({ describe }) => { @@ -467,7 +467,7 @@ export default testSuite(({ describe }) => { argv, { ignore: (type, flagName) => ( - type === 'known-flag' + type === TokenType.KnownFlag && flagName === 'string' ), }, @@ -505,7 +505,7 @@ export default testSuite(({ describe }) => { }, argv, { - ignore: type => type === 'unknown-flag', + ignore: type => type === TokenType.UnknownFlag, }, ); @@ -538,7 +538,7 @@ export default testSuite(({ describe }) => { return true; } - const isArgument = type === 'argument'; + const isArgument = type === TokenType.Argument; if (isArgument) { ignore = isArgument; return isArgument; @@ -575,7 +575,7 @@ export default testSuite(({ describe }) => { }, argv, { - ignore: (type, value) => (type === 'argument' && value === '--'), + ignore: (type, value) => (type === TokenType.Argument && value === '--'), }, );