re2js 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/build/index.cjs.cjs +256 -74
- package/build/index.cjs.cjs.map +1 -1
- package/build/index.esm.d.ts +54 -79
- package/build/index.esm.d.ts.map +1 -1
- package/build/index.esm.js +256 -74
- package/build/index.esm.js.map +1 -1
- package/build/index.umd.js +256 -74
- package/build/index.umd.js.map +1 -1
- package/package.json +4 -2
package/build/index.esm.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type RE2JS_Pattern = any;
|
|
1
2
|
/**
|
|
2
3
|
* A stateful iterator that interprets a regex {@code RE2JS} on a specific input.
|
|
3
4
|
*
|
|
@@ -20,6 +21,9 @@
|
|
|
20
21
|
*
|
|
21
22
|
* @author rsc@google.com (Russ Cox)
|
|
22
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* @typedef {import('./index').RE2JS} RE2JS_Pattern
|
|
26
|
+
*/
|
|
23
27
|
export class Matcher {
|
|
24
28
|
/**
|
|
25
29
|
* Quotes '\' and '$' in {@code s}, so that the returned string could be used in
|
|
@@ -32,11 +36,15 @@ export class Matcher {
|
|
|
32
36
|
static quoteReplacement(str: string, javaMode?: boolean): string;
|
|
33
37
|
/**
|
|
34
38
|
*
|
|
35
|
-
* @param {
|
|
36
|
-
* @param {
|
|
39
|
+
* @param {RE2JS_Pattern} pattern
|
|
40
|
+
* @param {Uint8Array|number[]|string} input
|
|
41
|
+
*/
|
|
42
|
+
constructor(pattern: RE2JS_Pattern, input: Uint8Array | number[] | string);
|
|
43
|
+
/**
|
|
44
|
+
* The pattern being matched.
|
|
45
|
+
* @type {RE2JS_Pattern}
|
|
37
46
|
*/
|
|
38
|
-
|
|
39
|
-
patternInput: RE2JS;
|
|
47
|
+
patternInput: RE2JS_Pattern;
|
|
40
48
|
/** @type {number} */
|
|
41
49
|
patternGroupCount: number;
|
|
42
50
|
/** @type {number[]} */
|
|
@@ -47,9 +55,9 @@ export class Matcher {
|
|
|
47
55
|
numberOfInstructions: number;
|
|
48
56
|
/**
|
|
49
57
|
* Returns the {@code RE2JS} associated with this {@code Matcher}.
|
|
50
|
-
* @returns {
|
|
58
|
+
* @returns {RE2JS_Pattern}
|
|
51
59
|
*/
|
|
52
|
-
pattern():
|
|
60
|
+
pattern(): RE2JS_Pattern;
|
|
53
61
|
/**
|
|
54
62
|
* Resets the {@code Matcher}, rewinding input and discarding any match information.
|
|
55
63
|
*
|
|
@@ -65,11 +73,11 @@ export class Matcher {
|
|
|
65
73
|
anchorFlag: number | undefined;
|
|
66
74
|
/**
|
|
67
75
|
* Resets the {@code Matcher} and changes the input.
|
|
68
|
-
* @param {
|
|
76
|
+
* @param {import('./MatcherInput').MatcherInputBase} input
|
|
69
77
|
* @returns {Matcher} the {@code Matcher} itself, for chained method calls
|
|
70
78
|
*/
|
|
71
|
-
resetMatcherInput(input:
|
|
72
|
-
matcherInput:
|
|
79
|
+
resetMatcherInput(input: any): Matcher;
|
|
80
|
+
matcherInput: any;
|
|
73
81
|
/**
|
|
74
82
|
* Returns the start of the named group of the most recent match, or -1 if the group was not
|
|
75
83
|
* matched.
|
|
@@ -98,7 +106,7 @@ export class Matcher {
|
|
|
98
106
|
/**
|
|
99
107
|
* Returns the named group of the most recent match, or {@code null} if the group was not matched.
|
|
100
108
|
* @param {string|number} [group=0]
|
|
101
|
-
* @returns {
|
|
109
|
+
* @returns {string|null}
|
|
102
110
|
*/
|
|
103
111
|
group(group?: string | number): string | null;
|
|
104
112
|
/**
|
|
@@ -137,11 +145,11 @@ export class Matcher {
|
|
|
137
145
|
* Matches the input against the pattern (unanchored), starting at a specified position. If there
|
|
138
146
|
* is a match, {@code find} sets the match state to describe it.
|
|
139
147
|
*
|
|
140
|
-
* @param {number} [start=null] the input position where the search begins
|
|
148
|
+
* @param {number|null} [start=null] the input position where the search begins
|
|
141
149
|
* @returns {boolean} if it finds a match
|
|
142
150
|
* @throws IndexOutOfBoundsException if start is not a valid input position
|
|
143
151
|
*/
|
|
144
|
-
find(start?: number): boolean;
|
|
152
|
+
find(start?: number | null): boolean;
|
|
145
153
|
/**
|
|
146
154
|
* Helper: does match starting at start, with RE2 anchor flag.
|
|
147
155
|
* @param {number} startByte
|
|
@@ -299,10 +307,10 @@ export class RE2JS {
|
|
|
299
307
|
* RE2JS-compatible syntax, and handling Unicode sequences properly. It ensures that the
|
|
300
308
|
* resulting regex is safe and properly formatted before compilation.
|
|
301
309
|
*
|
|
302
|
-
* @param {string} expr - The regular expression string to be translated.
|
|
310
|
+
* @param {string|RegExp} expr - The regular expression string to be translated.
|
|
303
311
|
* @returns {string} - The transformed regular expression string, ready for compilation.
|
|
304
312
|
*/
|
|
305
|
-
static translateRegExp(expr: string): string;
|
|
313
|
+
static translateRegExp(expr: string | RegExp): string;
|
|
306
314
|
/**
|
|
307
315
|
* Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.
|
|
308
316
|
* @param {string} regex
|
|
@@ -314,11 +322,11 @@ export class RE2JS {
|
|
|
314
322
|
* Matches a string against a regular expression.
|
|
315
323
|
*
|
|
316
324
|
* @param {string} regex the regular expression
|
|
317
|
-
* @param {string|number[]} input the input
|
|
325
|
+
* @param {string|number[]|Uint8Array} input the input
|
|
318
326
|
* @returns {boolean} true if the regular expression matches the entire input
|
|
319
327
|
* @throws RE2JSSyntaxException if the regular expression is malformed
|
|
320
328
|
*/
|
|
321
|
-
static matches(regex: string, input: string | number[]): boolean;
|
|
329
|
+
static matches(regex: string, input: string | number[] | Uint8Array): boolean;
|
|
322
330
|
/**
|
|
323
331
|
* This is visible for testing.
|
|
324
332
|
* @private
|
|
@@ -351,37 +359,37 @@ export class RE2JS {
|
|
|
351
359
|
/**
|
|
352
360
|
* Matches a string against a regular expression.
|
|
353
361
|
*
|
|
354
|
-
* @param {string|number[]} input the input
|
|
362
|
+
* @param {string|number[]|Uint8Array} input the input
|
|
355
363
|
* @returns {boolean} true if the regular expression matches the entire input
|
|
356
364
|
*/
|
|
357
|
-
matches(input: string | number[]): boolean;
|
|
365
|
+
matches(input: string | number[] | Uint8Array): boolean;
|
|
358
366
|
/**
|
|
359
367
|
* Creates a new {@code Matcher} matching the pattern against the input.
|
|
360
368
|
*
|
|
361
|
-
* @param {string|number[]} input the input string
|
|
369
|
+
* @param {string|number[]|Uint8Array} input the input string
|
|
362
370
|
* @returns {Matcher}
|
|
363
371
|
*/
|
|
364
|
-
matcher(input: string | number[]): Matcher;
|
|
372
|
+
matcher(input: string | number[] | Uint8Array): Matcher;
|
|
365
373
|
/**
|
|
366
374
|
* Tests whether the regular expression matches any part of the input string.
|
|
367
375
|
* Performance Note: This method is highly optimized. Because it only returns
|
|
368
376
|
* a boolean and does not extract capture groups, it bypasses the `Matcher` overhead
|
|
369
377
|
* and guarantees execution on the high-speed DFA engine whenever possible.
|
|
370
378
|
*
|
|
371
|
-
* @param {string|number[]} input - The input string or UTF-8 byte array to test against.
|
|
379
|
+
* @param {string|number[]|Uint8Array} input - The input string or UTF-8 byte array to test against.
|
|
372
380
|
* @returns {boolean} `true` if the pattern is found anywhere in the input, `false` otherwise.
|
|
373
381
|
*/
|
|
374
|
-
test(input: string | number[]): boolean;
|
|
382
|
+
test(input: string | number[] | Uint8Array): boolean;
|
|
375
383
|
/**
|
|
376
384
|
* Tests whether the regular expression matches the ENTIRE input string.
|
|
377
385
|
* * **Performance Note:** This operates identically to `.matches()`, but is significantly
|
|
378
386
|
* faster because it does not request capture group data. By requesting 0 capture groups,
|
|
379
387
|
* it securely routes execution through the DFA fast-path.
|
|
380
388
|
*
|
|
381
|
-
* @param {string|number[]} input - The input string or UTF-8 byte array to test against.
|
|
389
|
+
* @param {string|number[]|Uint8Array} input - The input string or UTF-8 byte array to test against.
|
|
382
390
|
* @returns {boolean} `true` if the exact input string fully matches the pattern, `false` otherwise.
|
|
383
391
|
*/
|
|
384
|
-
testExact(input: string | number[]): boolean;
|
|
392
|
+
testExact(input: string | number[] | Uint8Array): boolean;
|
|
385
393
|
/**
|
|
386
394
|
* Splits input around instances of the regular expression. It returns an array giving the strings
|
|
387
395
|
* that occur before, between, and after instances of the regular expression.
|
|
@@ -481,9 +489,17 @@ export class RE2JSSyntaxException extends RE2JSException {
|
|
|
481
489
|
getPattern(): string | null;
|
|
482
490
|
}
|
|
483
491
|
export class RE2Set {
|
|
492
|
+
/** @type {number} */
|
|
484
493
|
static UNANCHORED: number;
|
|
494
|
+
/** @type {number} */
|
|
485
495
|
static ANCHOR_START: number;
|
|
496
|
+
/** @type {number} */
|
|
486
497
|
static ANCHOR_BOTH: number;
|
|
498
|
+
/**
|
|
499
|
+
* Constructs a new RE2Set with the specified anchor mode and flags.
|
|
500
|
+
* @param {number} [anchor=RE2Set.UNANCHORED] - The anchoring mode (e.g., RE2Set.UNANCHORED).
|
|
501
|
+
* @param {number} [flags=0] - The public flags to apply to all patterns in the set.
|
|
502
|
+
*/
|
|
487
503
|
constructor(anchor?: number, flags?: number);
|
|
488
504
|
anchor: number;
|
|
489
505
|
jsFlags: number;
|
|
@@ -498,49 +514,26 @@ export class RE2Set {
|
|
|
498
514
|
prefixRune: number;
|
|
499
515
|
longest: boolean;
|
|
500
516
|
} | null;
|
|
501
|
-
add(pattern: any): number;
|
|
502
|
-
compile(): void;
|
|
503
|
-
match(input: any): any[];
|
|
504
|
-
}
|
|
505
|
-
declare class Utf8MatcherInput extends MatcherInputBase {
|
|
506
|
-
constructor(bytes?: null);
|
|
507
|
-
bytes: any;
|
|
508
|
-
getEncoding(): any;
|
|
509
|
-
/**
|
|
510
|
-
*
|
|
511
|
-
* @returns {string}
|
|
512
|
-
*/
|
|
513
|
-
asCharSequence(): string;
|
|
514
|
-
/**
|
|
515
|
-
*
|
|
516
|
-
* @returns {number[]}
|
|
517
|
-
*/
|
|
518
|
-
asBytes(): number[];
|
|
519
|
-
/**
|
|
520
|
-
*
|
|
521
|
-
* @returns {number}
|
|
522
|
-
*/
|
|
523
|
-
length(): number;
|
|
524
|
-
}
|
|
525
|
-
declare class Utf16MatcherInput extends MatcherInputBase {
|
|
526
|
-
constructor(charSequence?: null);
|
|
527
|
-
charSequence: any;
|
|
528
|
-
getEncoding(): any;
|
|
529
517
|
/**
|
|
530
|
-
*
|
|
531
|
-
*
|
|
518
|
+
* Adds a new regular expression pattern to the set.
|
|
519
|
+
* Patterns cannot be added after the set has been compiled.
|
|
520
|
+
* @param {string} pattern - The regular expression pattern to add.
|
|
521
|
+
* @returns {number} The integer index assigned to the added pattern.
|
|
522
|
+
* @throws {RE2JSCompileException} If patterns are added after compilation.
|
|
532
523
|
*/
|
|
533
|
-
|
|
524
|
+
add(pattern: string): number;
|
|
534
525
|
/**
|
|
535
|
-
*
|
|
536
|
-
*
|
|
526
|
+
* Compiles the added patterns into a single state machine.
|
|
527
|
+
* This is automatically called on the first match if not called explicitly.
|
|
528
|
+
* @returns {void}
|
|
537
529
|
*/
|
|
538
|
-
|
|
530
|
+
compile(): void;
|
|
539
531
|
/**
|
|
540
|
-
*
|
|
541
|
-
* @
|
|
532
|
+
* Matches the input against the compiled set of regular expressions.
|
|
533
|
+
* @param {string|number[]|Uint8Array} input - The input string or UTF-8 byte array to match against.
|
|
534
|
+
* @returns {number[]} An array of indices representing the patterns that successfully matched the input.
|
|
542
535
|
*/
|
|
543
|
-
|
|
536
|
+
match(input: string | number[] | Uint8Array): number[];
|
|
544
537
|
}
|
|
545
538
|
/**
|
|
546
539
|
* A Prog is a compiled regular expression program.
|
|
@@ -557,7 +550,6 @@ declare class Prog {
|
|
|
557
550
|
skipNop(pc: any): any;
|
|
558
551
|
prefix(): (string | boolean)[];
|
|
559
552
|
startCond(): number;
|
|
560
|
-
next(l: any): any;
|
|
561
553
|
patch(l: any, val: any): void;
|
|
562
554
|
append(l1: any, l2: any): any;
|
|
563
555
|
/**
|
|
@@ -588,22 +580,5 @@ declare class DFA {
|
|
|
588
580
|
match(input: any, pos: any, anchor: any): boolean | null;
|
|
589
581
|
matchSet(input: any, pos: any, anchor: any): any[] | null;
|
|
590
582
|
}
|
|
591
|
-
/**
|
|
592
|
-
* Abstract the representations of input text supplied to Matcher.
|
|
593
|
-
*/
|
|
594
|
-
declare class MatcherInputBase {
|
|
595
|
-
static Encoding: any;
|
|
596
|
-
getEncoding(): void;
|
|
597
|
-
/**
|
|
598
|
-
*
|
|
599
|
-
* @returns {boolean}
|
|
600
|
-
*/
|
|
601
|
-
isUTF8Encoding(): boolean;
|
|
602
|
-
/**
|
|
603
|
-
*
|
|
604
|
-
* @returns {boolean}
|
|
605
|
-
*/
|
|
606
|
-
isUTF16Encoding(): boolean;
|
|
607
|
-
}
|
|
608
583
|
export {};
|
|
609
584
|
//# sourceMappingURL=index.esm.d.ts.map
|
package/build/index.esm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.d.ts","sourceRoot":"","sources":["index.esm.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.d.ts","sourceRoot":"","sources":["index.esm.js"],"names":[],"mappings":"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"}
|