11import type { Flag } from './core/flags'
22import { Input , exactly } from './core/inputs'
3-
4- const MagicRegExpSymbol = Symbol ( 'MagicRegExp' )
5-
6- export type MagicRegExp < Value extends string , T = never > = RegExp & {
7- [ MagicRegExpSymbol ] : T & Value
8- }
3+ import type { MagicRegExp , MagicRegExpMatchArray } from './core/types/magic-regexp'
94
105export const createRegExp = < Value extends string , NamedGroups extends string = never > (
116 raw : Input < Value , NamedGroups > | Value ,
@@ -14,30 +9,17 @@ export const createRegExp = <Value extends string, NamedGroups extends string =
149
1510export * from './core/flags'
1611export * from './core/inputs'
17-
18- type ExtractNamedGroups < T extends MagicRegExp < string , string > > = T extends MagicRegExp <
19- string ,
20- infer V
21- >
22- ? V
23- : never
24-
25- export type MagicRegExpMatchArray < T extends MagicRegExp < string , string > > = Omit <
26- RegExpMatchArray ,
27- 'groups'
28- > & {
29- groups : Record < ExtractNamedGroups < T > , string | undefined >
30- }
12+ export * from './core/types/magic-regexp'
3113
3214// Add additional overload to global String object types to allow for typed capturing groups
3315declare global {
3416 interface String {
35- match < T extends string , RegExp extends MagicRegExp < any , T > > (
36- regexp : RegExp
37- ) : MagicRegExpMatchArray < RegExp > | null
17+ match < T extends string , R extends MagicRegExp < any , T > > (
18+ regexp : R
19+ ) : MagicRegExpMatchArray < R > | null
3820
39- matchAll < T extends string , RegExp extends MagicRegExp < any , T > > (
40- regexp : RegExp
41- ) : IterableIterator < MagicRegExpMatchArray < RegExp > >
21+ matchAll < T extends string , R extends MagicRegExp < any , T > > (
22+ regexp : R
23+ ) : IterableIterator < MagicRegExpMatchArray < R > >
4224 }
4325}
0 commit comments