@@ -3,21 +3,31 @@ import { Input, exactly } from './core/inputs'
3
3
import type { Join } from './core/types/join'
4
4
import type { MagicRegExp , MagicRegExpMatchArray } from './core/types/magic-regexp'
5
5
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
+ [ ] ,
19
27
Flags [ number ]
20
28
>
29
+ } = ( raw : any , flags ?: any ) =>
30
+ new RegExp ( exactly ( raw ) . toString ( ) , [ ...( flags || '' ) ] . join ( '' ) ) as any
21
31
22
32
export * from './core/flags'
23
33
export * from './core/inputs'
0 commit comments