UNPKG

@typedly/affix

Version:

A TypeScript type definitions package for affix.

38 lines (37 loc) 2.17 kB
import { ValueSetting } from '@typedly/settings'; import { LengthSetting } from '@typedly/length'; import { PatternSettings } from '@typedly/pattern'; import { BasicAffixKind } from '../type'; /** * @description The interface defines the structure of an affix settings object. * @export * @interface AffixSettings * @template {string | undefined} [Value=string | undefined] The type of value of generic type `Value`. * @template {BasicAffixKind | undefined} [Kind=BasicAffixKind | undefined] The type of kind of generic type `Kind`. * @template {number | undefined} [Length=number | undefined] The type of length of generic type `Length`. * @template {number | undefined} [Min=number | undefined] The type of min of generic type `Min`. * @template {number | undefined} [Max=number | undefined] The type of max of generic type `Max`. * @template {RegExp | string | undefined} [Pattern=RegExp | string | undefined] The type of pattern of generic type `Pattern`. * @extends {ValueSetting<Value>} The value setting interface for the affix settings. * @extends {LengthSetting<Length, Min, Max>} The length setting interface for the affix settings. * @extends {Omit<PatternSettings<Pattern>, 'regexp'>} The omitted pattern settings interface for the affix settings. * @example * const example1: AffixSettings = { * value: 'example', * kind: 'prefix', * length: { value: 7, min: 3, max: 10 }, * digit: true, * pattern: /^[a-z0-9]+$/, * lowercase: true, * uppercase: false, * special: false, * whitespace: false, * numeric: false, * }; */ export interface AffixSettings<Value extends string | undefined = string | undefined, Kind extends BasicAffixKind | undefined = BasicAffixKind | undefined, Length extends number | undefined = number | undefined, Min extends number | undefined = number | undefined, Max extends number | undefined = number | undefined, Pattern extends RegExp | string | undefined = RegExp | string | undefined> extends ValueSetting<Value>, LengthSetting<Length, Min, Max>, Omit<PatternSettings<Pattern>, 'regexp'> { digit: boolean | undefined; kind: Kind; pattern: Pattern; whitespace: boolean | undefined; }