@@ -10,69 +10,69 @@ type Groups = string[];
1010type NamedGroups = undefined | { [ key : string ] : string } ;
1111
1212export type TypedRegExpMatchArray < TGroups extends Groups = Groups , TNamedGroups extends NamedGroups = NamedGroups , TInputString extends string = string > = {
13- index ?: number ;
14- input ?: TInputString ;
15- groups : TNamedGroups ;
13+ index ?: number ;
14+ input ?: TInputString ;
15+ groups : TNamedGroups ;
1616} & ( [ string , ...TGroups ] & IntersectedArray < string , TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > > ) ;
1717
1818export type TypedRegExpExecArray < TGroups extends Groups = Groups , TNamedGroups extends NamedGroups = NamedGroups , TInputString extends string = string > = TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > & {
19- index : number ;
20- input : TInputString ;
19+ index : number ;
20+ input : TInputString ;
2121} ;
2222
2323export interface TypedRegExp <
24- TGroups extends Groups = Groups ,
25- TNamedGroups extends NamedGroups = NamedGroups ,
26- TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos ,
24+ TGroups extends Groups = Groups ,
25+ TNamedGroups extends NamedGroups = NamedGroups ,
26+ TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos ,
2727> extends RegExp {
28- exec < TInputString extends string , TMatches extends boolean = boolean > ( string : TInputString ) : If < TMatches , TypedRegExpExecArray < TGroups , TNamedGroups , TInputString > , null > ;
29- readonly dotAll : HasFlag < TFlagCombo , "d" > ;
30- readonly global : HasFlag < TFlagCombo , "g" > ;
31- readonly ignoreCase : HasFlag < TFlagCombo , "i" > ;
32- readonly multiline : HasFlag < TFlagCombo , "m" > ;
33- readonly unicode : HasFlag < TFlagCombo , "u" > ;
34- readonly sticky : HasFlag < TFlagCombo , "y" > ;
35- readonly flags : SortRegExpFlags < TFlagCombo > ;
36- // this method is restricted to return a sub type so that the type safety is kept
37- compile < TNewGroups extends TGroups = TGroups , TNewNamedGroups extends TNamedGroups = TNamedGroups , NewFlagCombo extends TFlagCombo = TFlagCombo > ( pattern : string , flags ?: NewFlagCombo ) : this & TypedRegExp < TNewGroups , TNewNamedGroups , NewFlagCombo > ;
38- [ Symbol . match ] < TInputString extends string , TMatches extends boolean = boolean > ( string : TInputString ) : If < TMatches , TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > , null > ;
39- [ Symbol . replace ] ( string : string , replaceValue : string ) : string ;
40- [ Symbol . replace ] ( string : string , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( undefined extends TNamedGroups ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
41- [ Symbol . matchAll ] < TInputString extends string > ( str : TInputString ) : IterableIterator < TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > > ;
28+ exec < TInputString extends string , TMatches extends boolean = boolean > ( string : TInputString ) : If < TMatches , TypedRegExpExecArray < TGroups , TNamedGroups , TInputString > , null > ;
29+ readonly dotAll : HasFlag < TFlagCombo , "d" > ;
30+ readonly global : HasFlag < TFlagCombo , "g" > ;
31+ readonly ignoreCase : HasFlag < TFlagCombo , "i" > ;
32+ readonly multiline : HasFlag < TFlagCombo , "m" > ;
33+ readonly unicode : HasFlag < TFlagCombo , "u" > ;
34+ readonly sticky : HasFlag < TFlagCombo , "y" > ;
35+ readonly flags : SortRegExpFlags < TFlagCombo > ;
36+ // this method is restricted to return a sub type so that the type safety is kept
37+ compile < TNewGroups extends TGroups = TGroups , TNewNamedGroups extends TNamedGroups = TNamedGroups , NewFlagCombo extends TFlagCombo = TFlagCombo > ( pattern : string , flags ?: NewFlagCombo ) : this & TypedRegExp < TNewGroups , TNewNamedGroups , NewFlagCombo > ;
38+ [ Symbol . match ] < TInputString extends string , TMatches extends boolean = boolean > ( string : TInputString ) : If < TMatches , TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > , null > ;
39+ [ Symbol . replace ] ( string : string , replaceValue : string ) : string ;
40+ [ Symbol . replace ] ( string : string , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( undefined extends TNamedGroups ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
41+ [ Symbol . matchAll ] < TInputString extends string > ( str : TInputString ) : IterableIterator < TypedRegExpMatchArray < TGroups , TNamedGroups , TInputString > > ;
4242}
4343
4444export declare const TypedRegExp : TypedRegExpConstructor ;
4545
4646type RegExpConstructor = typeof RegExp ;
4747interface TypedRegExpConstructor extends RegExpConstructor {
48- new ( ) : TypedRegExp < [ ] , { } , "" > ;
49- new < TGroups extends Groups , TNamedGroups extends NamedGroups > ( pattern : string ) : TypedRegExp < TGroups , TNamedGroups , "" > ;
50- new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : string , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
51- new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
52- new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups > , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
53- < TGroups extends Groups , TNamedGroups extends NamedGroups > ( pattern : string ) : TypedRegExp < TGroups , TNamedGroups , "" > ;
54- < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : string , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
55- < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
56- < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups > , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
57- readonly prototype : TypedRegExp ;
58- readonly [ Symbol . species ] : TypedRegExpConstructor ;
48+ new ( ) : TypedRegExp < [ ] , { } , "" > ;
49+ new < TGroups extends Groups , TNamedGroups extends NamedGroups > ( pattern : string ) : TypedRegExp < TGroups , TNamedGroups , "" > ;
50+ new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : string , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
51+ new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
52+ new < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups > , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
53+ < TGroups extends Groups , TNamedGroups extends NamedGroups > ( pattern : string ) : TypedRegExp < TGroups , TNamedGroups , "" > ;
54+ < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : string , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
55+ < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
56+ < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos > ( pattern : TypedRegExp < TGroups , TNamedGroups > , flags : TFlagCombo ) : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ;
57+ readonly prototype : TypedRegExp ;
58+ readonly [ Symbol . species ] : TypedRegExpConstructor ;
5959}
6060
6161/** @experimental This class is intended to prevent overloads from the default string methods. */
6262export interface TypedRegExpString extends Omit < String , "match" | "matchAll" | "replace" | "replaceAll" > /* excludes the old properties to prevent overloads */ {
63- // IDEA use return value from the Regexp[Symbol.match] etc. definitions
64- // IDEA pass this as string to matches
63+ // IDEA use return value from the Regexp[Symbol.match] etc. definitions
64+ // IDEA pass this as string to matches
65+ match < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos , TMatches extends boolean = boolean > ( regexp : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : If < TMatches , TypedRegExpMatchArray < TGroups , TNamedGroups > , null > ;
66+ matchAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( regexp : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : IterableIterator < TypedRegExpMatchArray < TGroups , TNamedGroups > > ;
67+ replace < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
68+ replaceAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
69+ }
70+
71+ declare global {
72+ interface String {
6573 match < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos , TMatches extends boolean = boolean > ( regexp : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : If < TMatches , TypedRegExpMatchArray < TGroups , TNamedGroups > , null > ;
6674 matchAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( regexp : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : IterableIterator < TypedRegExpMatchArray < TGroups , TNamedGroups > > ;
6775 replace < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
6876 replaceAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
69- }
70-
71- declare global {
72- interface String {
73- match < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos , TMatches extends boolean = boolean > ( regexp : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : If < TMatches , TypedRegExpMatchArray < TGroups , TNamedGroups > , null > ;
74- matchAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( regexp : TypedRegExp < TGroups , TNamedGroups , TFlagCombo > ) : IterableIterator < TypedRegExpMatchArray < TGroups , TNamedGroups > > ;
75- replace < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos = RegExpFlagCombos > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
76- replaceAll < TGroups extends Groups , TNamedGroups extends NamedGroups , TFlagCombo extends RegExpFlagCombos < { g :true } > = RegExpFlagCombos < { g :true } > > ( searchValue : string | TypedRegExp < TGroups , TNamedGroups , TFlagCombo > , replacer : ( substring : string , ...args : [ ...TGroups , number , string , ...( keyof TNamedGroups extends never ? [ ] : [ TNamedGroups ] ) ] ) => string ) : string ;
77- }
77+ }
7878}
0 commit comments