@typedly/affix
Version:
A TypeScript type definitions package for affix.
38 lines (37 loc) • 2.17 kB
TypeScript
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;
}