summaryrefslogtreecommitdiff
path: root/node_modules/regjsparser/parser.d.ts
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:31:11 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:31:11 +0800
commitaa773172311dcada759dfbaac485f4bc6e00bc21 (patch)
treeca6d9a5eff3ab8f689f9acb4f0df791d9486813d /node_modules/regjsparser/parser.d.ts
parentc5a5384e846f242e901e859fe600d695d8990a9a (diff)
added babel
Diffstat (limited to 'node_modules/regjsparser/parser.d.ts')
-rw-r--r--node_modules/regjsparser/parser.d.ts183
1 files changed, 183 insertions, 0 deletions
diff --git a/node_modules/regjsparser/parser.d.ts b/node_modules/regjsparser/parser.d.ts
new file mode 100644
index 00000000..4edef64f
--- /dev/null
+++ b/node_modules/regjsparser/parser.d.ts
@@ -0,0 +1,183 @@
+type _If<Test, Then, Else> = Test extends true ? Then : Else;
+
+export type Features = {
+ lookbehind?: boolean;
+ namedGroups?: boolean;
+ unicodePropertyEscape?: boolean;
+ unicodeSet?: boolean;
+ modifiers?: boolean;
+};
+
+export type AstNodeType =
+ | "alternative"
+ | "anchor"
+ | "characterClass"
+ | "characterClassEscape"
+ | "characterClassRange"
+ | "disjunction"
+ | "dot"
+ | "group"
+ | "quantifier"
+ | "reference"
+ | "unicodePropertyEscape"
+ | "value";
+
+export type Base<T extends AstNodeType> = {
+ range: [number, number];
+ raw: string;
+ type: T;
+};
+
+export type AstNode<F extends Features = {}> =
+ | Alternative<F>
+ | Anchor
+ | CharacterClass<F>
+ | CharacterClassEscape
+ | CharacterClassRange
+ | Disjunction<F>
+ | Dot
+ | Group<F>
+ | Quantifier<F>
+ | Reference<F>
+ | _If<F["unicodePropertyEscape"], UnicodePropertyEscape, never>
+ | Value;
+
+export type RootNode<F extends Features = {}> = Exclude<
+ AstNode<F>,
+ CharacterClassRange
+>;
+
+export type Anchor = Base<"anchor"> & {
+ kind: "boundary" | "end" | "not-boundary" | "start";
+};
+
+export type CharacterClassEscape = Base<"characterClassEscape"> & {
+ value: string;
+};
+
+export type Value = Base<"value"> & {
+ codePoint: number;
+ kind:
+ | "controlLetter"
+ | "hexadecimalEscape"
+ | "identifier"
+ | "null"
+ | "octal"
+ | "singleEscape"
+ | "symbol"
+ | "unicodeCodePointEscape"
+ | "unicodeEscape";
+};
+
+export type Identifier = Base<"value"> & {
+ value: string;
+};
+
+export type Alternative<F extends Features = {}> = Base<"alternative"> & {
+ body: RootNode<F>[];
+};
+
+export type CharacterClassRange = Base<"characterClassRange"> & {
+ max: Value;
+ min: Value;
+};
+
+export type UnicodePropertyEscape = Base<"unicodePropertyEscape"> & {
+ negative: boolean;
+ value: string;
+};
+
+export type CharacterClassBody =
+ | CharacterClassEscape
+ | CharacterClassRange
+ | UnicodePropertyEscape
+ | Value;
+
+export type CharacterClass<F extends Features = {}> = Base<"characterClass"> & {
+ body: CharacterClassBody[];
+ negative: boolean;
+ kind: "union" | _If<F["unicodeSet"], "intersection" | "subtraction", never>;
+};
+
+export type ModifierFlags = {
+ enabling: string,
+ disabling: string
+}
+
+export type NonCapturingGroup<F extends Features = {}> = Base<"group"> &
+ (
+ | {
+ behavior:
+ | "lookahead"
+ | "lookbehind"
+ | "negativeLookahead"
+ | "negativeLookbehind";
+ body: RootNode<F>[];
+ }
+ | ({
+ behavior: "ignore";
+ body: RootNode<F>[];
+ } & _If<
+ F["modifiers"],
+ {
+ modifierFlags?: ModifierFlags;
+ },
+ {
+ modifierFlags: undefined;
+ }
+ >)
+ );
+
+
+export type CapturingGroup<F extends Features = {}> = Base<"group"> & {
+ behavior: "normal";
+ body: RootNode<F>[];
+} & _If<
+ F["namedGroups"],
+ {
+ name?: Identifier;
+ },
+ {
+ name: undefined;
+ }
+ >;
+
+export type Group<F extends Features = {}> =
+ | CapturingGroup<F>
+ | NonCapturingGroup<F>;
+
+export type Quantifier<F extends Features = {}> = Base<"quantifier"> & {
+ body: [RootNode<F>];
+ greedy: boolean;
+ max?: number;
+ min: number;
+ symbol?: '?' | '*' | '+';
+};
+
+export type Disjunction<F extends Features = {}> = Base<"disjunction"> & {
+ body: [RootNode<F>, RootNode<F>, ...RootNode<F>[]];
+};
+
+export type Dot = Base<"dot">;
+
+export type NamedReference = Base<"reference"> & {
+ matchIndex: undefined;
+ name: Identifier;
+};
+
+export type IndexReference = Base<"reference"> & {
+ matchIndex: number;
+ name: undefined;
+};
+
+export type Reference<F extends Features = {}> = _If<
+ F["namedGroups"],
+ NamedReference,
+ IndexReference
+>;
+
+export function parse<F extends Features = {}>(
+ str: string,
+ flags: string,
+ features?: F
+): RootNode<F>;