Socket
Socket
Sign inDemoInstall

magic-regexp

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

magic-regexp - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

98

dist/index.d.ts

@@ -17,77 +17,91 @@ declare type Flag = 'd' | 'g' | 'i' | 'm' | 's' | 'u' | 'y';

interface Input<T extends string = never> {
declare type InputSource<S extends string = never, T extends string = never> = S | Input<S, T>;
declare type MapToValues<T extends InputSource<any, any>[]> = T extends [infer First, ...infer Rest] ? First extends InputSource<infer K> ? [K, ...MapToValues<Rest>] : [] : [];
declare type MapToGroups<T extends InputSource<any, string>[]> = T extends [
infer First,
...infer Rest
] ? First extends Input<any, infer K> ? K | MapToGroups<Rest> : MapToGroups<Rest> : never;
declare type ExactEscapeChar = '.' | '*' | '+' | '?' | '^' | '$' | '{' | '}' | '(' | ')' | '|' | '[' | ']' | '/';
declare type Escape<T extends string, EscapeChar extends string> = T extends `${infer Start}${EscapeChar}${string}` ? Start extends `${string}${EscapeChar}${string}` ? never : T extends `${Start}${infer Char}${string}` ? Char extends EscapeChar ? T extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Escape<Rest, EscapeChar>}` : never : never : never : T;
declare type GetValue<T extends InputSource<string>> = T extends string ? Escape<T, ExactEscapeChar> : T extends Input<infer R> ? R : never;
interface Input<V extends string, G extends string = never> {
/** this adds a new pattern to the current input */
and: <X extends string = never>(input: string | Input<X>) => Input<T | X>;
and: <I extends InputSource<string, G>, Groups extends string = never>(input: I) => Input<`${V}${GetValue<I>}`, G | Groups>;
/** this provides an alternative to the current input */
or: <X extends string = never>(input: string | Input<X>) => Input<T | X>;
or: <I extends InputSource<string, G>, Groups extends string = never>(input: I) => Input<`(${V}|${GetValue<I>})`, G | Groups>;
/** this is a positive lookbehind. Make sure to check [browser support](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#browser_compatibility) as not all browsers support lookbehinds (notably Safari) */
after: (input: string | Input) => Input<T>;
after: <I extends InputSource<string>>(input: I) => Input<`(?<=${GetValue<I>})${V}`, G>;
/** this is a positive lookahead */
before: (input: string | Input) => Input<T>;
before: <I extends InputSource<string>>(input: I) => Input<`${V}(?=${GetValue<I>})`, G>;
/** these is a negative lookbehind. Make sure to check [browser support](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#browser_compatibility) as not all browsers support lookbehinds (notably Safari) */
notAfter: (input: string | Input) => Input<T>;
notAfter: <I extends InputSource<string>>(input: I) => Input<`(?<!${GetValue<I>})${V}`, G>;
/** this is a negative lookahead */
notBefore: (input: string | Input) => Input<T>;
notBefore: <I extends InputSource<string>>(input: I) => Input<`${V}(?!${GetValue<I>})`, G>;
times: {
/** repeat the previous pattern an exact number of times */
(number: number): Input<T>;
<N extends number>(number: N): Input<`(${V}){${N}}`, G>;
/** specify that the expression can repeat any number of times, _including none_ */
any: () => Input<`(${V})*`, G>;
/** specify a range of times to repeat the previous pattern */
between: (min: number, max: number) => Input<T>;
/** specify that the expression can repeat any number of times, _including none_ */
any: () => Input<T>;
between: <Min extends number, Max extends number>(min: Min, max: Max) => Input<`(${V}){${Min},${Max}}`, G>;
/** specify that the expression must occur at least x times */
atLeast: (min: number) => Input<T>;
atLeast: <N extends number>(number: N) => Input<`(${V}){${N},}`, G>;
};
/** this defines the entire input so far as a named capture group. You will get type safety when using the resulting RegExp with `String.match()` */
as: <K extends string>(key: K) => Input<T | K>;
as: <K extends string>(key: K) => Input<`(?<${K}>${V})`, G | K>;
/** this allows you to match beginning/ends of lines with `at.lineStart()` and `at.lineEnd()` */
at: {
lineStart: () => Input<T>;
lineEnd: () => Input<T>;
lineStart: () => Input<`^${V}`, G>;
lineEnd: () => Input<`${V}$`, G>;
};
/** this allows you to mark the input so far as optional */
optionally: () => Input<T>;
optionally: () => Input<`(${V})?`, G>;
toString: () => string;
}
declare type Join<T extends string[], Prefix extends string = '', Joiner extends string = '|'> = T extends [infer F, ...infer R] ? F extends string ? `${Prefix}${F}${R extends string[] ? Join<R, Joiner, Joiner> : ''}` : '' : '';
/** This matches any character in the string provided */
declare const charIn: (chars: string) => Input<never>;
declare const charIn: <T extends string>(chars: T) => Input<`[${T extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : T extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? T extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${any}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : T}]`, never>;
/** This matches any character that is not in the string provided */
declare const charNotIn: (chars: string) => Input<never>;
declare const charNotIn: <T extends string>(chars: T) => Input<`[^${T extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : T extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? T extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${Rest extends `${infer Start}^${string}` | `${infer Start}]${string}` | `${infer Start}\\${string}` | `${infer Start}-${string}` ? Start extends `${string}^${string}` | `${string}]${string}` | `${string}\\${string}` | `${string}-${string}` ? never : Rest extends `${Start}${infer Char}${string}` ? Char extends "^" | "]" | "\\" | "-" ? Rest extends `${Start}${Char}${infer Rest}` ? `${Start}\\${Char}${any}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : Rest}` : never : never : never : T}]`, never>;
/** This takes an array of inputs and matches any of them. */
declare const anyOf: <T extends string = never>(...args: (string | Input<T>)[]) => Input<T>;
declare const char: Input<never>;
declare const word: Input<never>;
declare const digit: Input<never>;
declare const whitespace: Input<never>;
declare const letter: Input<never>;
declare const tab: Input<never>;
declare const linefeed: Input<never>;
declare const carriageReturn: Input<never>;
declare const anyOf: <New extends InputSource<V, T>[], V extends string, T extends string>(...args: New) => Input<`(${Join<MapToValues<New>, "", "|">})`, MapToGroups<New>>;
declare const char: Input<".", never>;
declare const word: Input<"\\w", never>;
declare const digit: Input<"\\d", never>;
declare const whitespace: Input<"\\s", never>;
declare const letter: Input<"[a-zA-Z]", never>;
declare const tab: Input<"\\t", never>;
declare const linefeed: Input<"\\n", never>;
declare const carriageReturn: Input<"\\r", never>;
declare const not: {
word: Input<never>;
digit: Input<never>;
whitespace: Input<never>;
letter: Input<never>;
tab: Input<never>;
linefeed: Input<never>;
carriageReturn: Input<never>;
word: Input<"\\W", never>;
digit: Input<"\\D", never>;
whitespace: Input<"\\S", never>;
letter: Input<"[^a-zA-Z]", never>;
tab: Input<"[^\\t]", never>;
linefeed: Input<"[^\\n]", never>;
carriageReturn: Input<"[^\\r]", never>;
};
/** Equivalent to `?` - this marks the input as optional */
declare const maybe: (str: string | Input) => Input<never>;
declare const maybe: <New extends InputSource<string, never>>(str: New) => Input<`(${GetValue<New>})?`, never>;
/** This escapes a string input to match it exactly */
declare const exactly: (str: string | Input) => Input<never>;
declare const oneOrMore: (str: string | Input) => Input<never>;
declare const exactly: <New extends InputSource<string, never>>(input: New) => Input<GetValue<New>, never>;
declare const oneOrMore: <New extends InputSource<string, never>>(str: New) => Input<`(${GetValue<New>})+`, never>;
declare const MagicRegExpSymbol: unique symbol;
declare type MagicRegExp<T = never> = RegExp & {
[MagicRegExpSymbol]: T;
declare type MagicRegExp<Value extends string, T = never> = RegExp & {
[MagicRegExpSymbol]: T & Value;
};
declare const createRegExp: <T extends string = never>(raw: string | Input<T>, flags?: Flag[]) => MagicRegExp<T>;
declare const createRegExp: <Value extends string, NamedGroups extends string = never>(raw: Value | Input<Value, NamedGroups>, flags?: Flag[]) => MagicRegExp<`/${Value}/`, NamedGroups>;
declare global {
interface String {
match<T extends string>(regexp: MagicRegExp<T>): (Omit<RegExpMatchArray, 'groups'> & {
match<T extends string>(regexp: MagicRegExp<any, T>): (Omit<RegExpMatchArray, 'groups'> & {
groups: Record<T, string | undefined>;
}) | null;
matchAll<T extends string>(regexp: MagicRegExp<T>): IterableIterator<Omit<RegExpMatchArray, 'groups'> & {
matchAll<T extends string>(regexp: MagicRegExp<any, T>): IterableIterator<Omit<RegExpMatchArray, 'groups'> & {
groups: Record<T, string | undefined>;

@@ -94,0 +108,0 @@ }>;

{
"name": "magic-regexp",
"version": "0.1.0",
"version": "0.2.0",
"description": "",

@@ -5,0 +5,0 @@ "repository": "danielroe/magic-regexp",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc