diff --git a/packages/imask/src/masked/factory.ts b/packages/imask/src/masked/factory.ts index 358b44e1..9ac01fc5 100644 --- a/packages/imask/src/masked/factory.ts +++ b/packages/imask/src/masked/factory.ts @@ -114,10 +114,10 @@ type UpdateStaticOpts = Opts extends MaskedRangeOptions ? MaskedRangeOptions : Opts extends MaskedDynamicOptions ? MaskedDynamicOptions : Opts extends MaskedPatternOptions ? MaskedPatternOptions : + Opts extends MaskedDateOptions ? MaskedDateOptions : Opts extends MaskedNumberOptions ? MaskedNumberOptions : Opts extends MaskedRegExpOptions ? MaskedRegExpOptions : Opts extends MaskedFunctionOptions ? MaskedFunctionOptions : - Opts extends MaskedDateOptions ? MaskedDateOptions : never ; @@ -126,13 +126,13 @@ type UpdateAnyOpts = Record; export type UpdateInstanceOpts = M extends MaskedRegExp ? MaskedRegExpOptions : - M extends MaskedPattern ? MaskedPatternOptions : M extends MaskedFunction ? MaskedFunctionOptions : M extends MaskedDate ? MaskedDateOptions : M extends MaskedNumber ? MaskedNumberOptions : M extends MaskedDynamic ? MaskedDynamicOptions : M extends MaskedRange ? MaskedRangeOptions : M extends MaskedEnum ? MaskedEnumOptions : + M extends MaskedPattern ? MaskedPatternOptions : UpdateAnyOpts ; diff --git a/packages/imask/test/controls/input.types.ts b/packages/imask/test/controls/input.types.ts new file mode 100644 index 00000000..2fa499b1 --- /dev/null +++ b/packages/imask/test/controls/input.types.ts @@ -0,0 +1,67 @@ +import type InputMask from '../../src/controls/input'; +import { type Check, type Equal } from '../types'; + +import Masked from '../../src/masked/base'; +import type MaskedDate from '../../src/masked/date'; +import type MaskedDynamic from '../../src/masked/dynamic'; +import type MaskedEnum from '../../src/masked/enum'; +import type MaskedFunction from '../../src/masked/function'; +import type MaskedNumber from '../../src/masked/number'; +import type MaskedPattern from '../../src/masked/pattern'; +import type MaskedRange from '../../src/masked/range'; +import type MaskedRegExp from '../../src/masked/regexp'; + +import { type MaskedDynamicOptions } from '../../src/masked/dynamic'; +import { type MaskedFunctionOptions } from '../../src/masked/function'; +import { type MaskedNumberOptions } from '../../src/masked/number'; +import { type MaskedPatternOptions } from '../../src/masked/pattern'; +import { type MaskedRegExpOptions } from '../../src/masked/regexp'; +import { type MaskedEnumOptions } from '../../src/masked/enum'; +import { type MaskedDateOptions } from '../../src/masked/date'; +import { type MaskedRangeOptions } from '../../src/masked/range'; + +class MyMasked extends Masked { + declare overwrite?: boolean | 'shift' | undefined; + declare eager?: boolean | 'remove' | 'append' | undefined; + declare skipInvalid?: boolean | undefined; +} + + +type cases = [ + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check boolean }>['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial>]>>, + + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial>]>>, + + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial]>>, + Check['updateOptions']>, [Partial>]>>, +]; diff --git a/packages/imask/test/masked/factory.types.ts b/packages/imask/test/masked/factory.types.ts index 2e80142e..cff14109 100644 --- a/packages/imask/test/masked/factory.types.ts +++ b/packages/imask/test/masked/factory.types.ts @@ -67,6 +67,5 @@ type cases = [ Check extends { _mask: MaskedNumber, mask: typeof MaskedNumber } ? true : false>, Check, { mask: typeof MaskedNumber }>>, Check, { mask: NumberConstructor }>>, - Check> ? true : false>, ];