@@ -3,21 +3,31 @@ import { Input, exactly } from './core/inputs'
33import type { Join } from './core/types/join'
44import type { MagicRegExp , MagicRegExpMatchArray } from './core/types/magic-regexp'
55
6- export const createRegExp = <
7- Value extends string ,
8- NamedGroups extends string = never ,
9- CapturedGroupsArr extends ( string | undefined ) [ ] = [ ] ,
10- Flags extends Flag [ ] = never [ ]
11- > (
12- raw : Input < Value , NamedGroups , CapturedGroupsArr > | Value ,
13- flags ?: [ ...Flags ] | string | Set < Flag >
14- ) =>
15- new RegExp ( exactly ( raw ) . toString ( ) , [ ...( flags || '' ) ] . join ( '' ) ) as MagicRegExp <
16- `/${Value } /${Join < Flags , '' , '' > } `,
17- NamedGroups ,
18- CapturedGroupsArr ,
6+ import type { Escape , ExactEscapeChar } from './core/types/escape'
7+
8+ export const createRegExp : {
9+ /** Create Magic RegExp from Input helper */
10+ <
11+ Value extends string ,
12+ NamedGroups extends string = never ,
13+ CapturedGroupsArr extends ( string | undefined ) [ ] = [ ] ,
14+ Flags extends Flag [ ] = never [ ]
15+ > (
16+ raw : Input < Value , NamedGroups , CapturedGroupsArr > ,
17+ flags ?: [ ...Flags ] | string | Set < Flag >
18+ ) : MagicRegExp < `/${Value } /${Join < Flags , '' , '' > } `, NamedGroups , CapturedGroupsArr , Flags [ number ] >
19+ /** Create Magic RegExp from string, string will be sanitized */
20+ < Value extends string , Flags extends Flag [ ] = never [ ] > (
21+ raw : Value ,
22+ flags ?: [ ...Flags ] | string | Set < Flag >
23+ ) : MagicRegExp <
24+ `/${Escape < Value , ExactEscapeChar > } /${Join < Flags , '' , '' > } `,
25+ never ,
26+ [ ] ,
1927 Flags [ number ]
2028 >
29+ } = ( raw : any , flags ?: any ) =>
30+ new RegExp ( exactly ( raw ) . toString ( ) , [ ...( flags || '' ) ] . join ( '' ) ) as any
2131
2232export * from './core/flags'
2333export * from './core/inputs'
0 commit comments