re2js 2.6.0 → 2.7.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 +1 -1
- package/build/index.cjs.cjs +27 -12
- package/build/index.cjs.cjs.map +1 -1
- package/build/index.esm.d.ts.map +1 -1
- package/build/index.esm.js +27 -12
- package/build/index.esm.js.map +1 -1
- package/build/index.umd.js +27 -12
- package/build/index.umd.js.map +1 -1
- package/package.json +1 -1
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":"AA22CA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;IACE;;;;;;;OAOG;IACH,6BAJW,MAAM,aACN,OAAO,GACL,MAAM,CA2BlB;IACD;;;;OAIG;IACH,qBAHW,KAAK,SACL,MAAM,GAAC,MAAM,EAAE,GAAC,UAAU,EA6BpC;IAvBC;;;OAGG;IACH,cAFU,KAAK,CAEY;IAG3B,qBAAqB;IACrB,mBADW,MAAM,CACqC;IAEtD,uBAAuB;IACvB,QADW,MAAM,EAAE,CACH;IAChB,qCAAqC;IACrC,aADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACC;IAClC,qBAAqB;IACrB,sBADW,MAAM,CACqC;IAUxD;;;OAGG;IACH,WAFa,KAAK,CAIjB;IAED;;;;OAIG;IACH,SAFa,OAAO,CAiBnB;IAbC,qBAAqB;IACrB,uCAAoD;IAEpD,qBAAqB;IACrB,8BAAkB;IAElB,8BAAqB;IAGrB,+BAAsB;IAEtB,+BAAmB;IAIrB;;;;OAIG;IACH,yBAHW,gBAAgB,GACd,OAAO,CASnB;IAHC,2CAAyB;IAK3B;;;;;OAKG;IACH,cAHW,MAAM,GAAC,MAAM,GACX,MAAM,CAYlB;IAED;;;;;OAKG;IACH,YAHW,MAAM,GAAC,MAAM,GACX,MAAM,CAYlB;IAED;;;;;;;;;OASG;IACH,eAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,MAAM,GACX,MAAM,GAAC,IAAI,CAgBvB;IAED;;;;OAIG;IACH,kBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,IAAI,CAAC,CAWvC;IAED;;;;OAIG;IACH,cAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,kBAkBC;IAED;;;;;OAKG;IACH,WAFa,OAAO,CAInB;IAED;;;;;OAKG;IACH,aAFa,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,aAJW,MAAM,GAAC,IAAI,GACT,OAAO,CA4BnB;IAED;;;;;;OAMG;IACH,iBAaC;IAED;;;;;OAKG;IACH,iBAJW,MAAM,OACN,MAAM,GACJ,MAAM,CAOlB;IAED;;;OAGG;IACH,eAFa,MAAM,CAIlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,0BAUC;IAED;;;;OAIG;IACH,sCAgEC;IAED;;;;OAIG;IACH,oCAuGC;IAED;;;;OAIG;IACH,cAFa,MAAM,CAIlB;IAED;;;;;;;;OAQG;IACH,wBALW,MAAM,aACN,OAAO,GACL,MAAM,CAKlB;IAED;;;;;;;;OAQG;IACH,0BALW,MAAM,aACN,OAAO,GACL,MAAM,CAKlB;IAED;;;;;;;OAOG;IACH,gBAWC;CACF;
|
|
1
|
+
{"version":3,"file":"index.esm.d.ts","sourceRoot":"","sources":["index.esm.js"],"names":[],"mappings":"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"}
|
package/build/index.esm.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* re2js
|
|
3
3
|
* RE2JS is the JavaScript port of RE2, a regular expression engine that provides linear time matching
|
|
4
4
|
*
|
|
5
|
-
* @version v2.
|
|
5
|
+
* @version v2.7.0
|
|
6
6
|
* @author Oleksii Vasyliev
|
|
7
7
|
* @homepage https://github.com/le0pard/re2js#readme
|
|
8
8
|
* @repository github:le0pard/re2js
|
|
@@ -2153,9 +2153,9 @@ class Inst {
|
|
|
2153
2153
|
case Inst.NOP:
|
|
2154
2154
|
return `nop -> ${this.out}`;
|
|
2155
2155
|
case Inst.LB_WRITE:
|
|
2156
|
-
return `lbwrite ${this.
|
|
2156
|
+
return `lbwrite ${this.arg} -> ${this.out}`;
|
|
2157
2157
|
case Inst.LB_CHECK:
|
|
2158
|
-
return `lbcheck ${this.
|
|
2158
|
+
return `lbcheck ${this.arg} -> ${this.out}`;
|
|
2159
2159
|
case Inst.RUNE:
|
|
2160
2160
|
if (this.runes === null) {
|
|
2161
2161
|
return 'rune <null>';
|
|
@@ -2594,17 +2594,17 @@ class Machine {
|
|
|
2594
2594
|
continue;
|
|
2595
2595
|
}
|
|
2596
2596
|
case Inst.LB_WRITE:
|
|
2597
|
-
this.lbTable[Math.abs(inst.
|
|
2597
|
+
this.lbTable[Math.abs(inst.arg)] = pos;
|
|
2598
2598
|
pc = inst.out;
|
|
2599
2599
|
continue;
|
|
2600
2600
|
case Inst.LB_CHECK:
|
|
2601
|
-
if (inst.
|
|
2601
|
+
if (inst.arg > 0) {
|
|
2602
2602
|
// Positive Lookbehind
|
|
2603
|
-
if (this.lbTable[inst.
|
|
2603
|
+
if (this.lbTable[inst.arg] === pos) {
|
|
2604
2604
|
pc = inst.out; // Flattened tail recursion
|
|
2605
2605
|
continue;
|
|
2606
2606
|
}
|
|
2607
|
-
} else if (this.lbTable[-inst.
|
|
2607
|
+
} else if (this.lbTable[-inst.arg] !== pos) {
|
|
2608
2608
|
// Negative Lookbehind
|
|
2609
2609
|
pc = inst.out; // Flattened tail recursion
|
|
2610
2610
|
continue;
|
|
@@ -4684,7 +4684,7 @@ class Compiler {
|
|
|
4684
4684
|
}
|
|
4685
4685
|
lookBehind(a, lb) {
|
|
4686
4686
|
const id = this.newInst(Inst.LB_WRITE);
|
|
4687
|
-
this.prog.getInst(id.i).
|
|
4687
|
+
this.prog.getInst(id.i).arg = lb;
|
|
4688
4688
|
|
|
4689
4689
|
// Create the prefix wildcard `.*` for the lookbehind automaton
|
|
4690
4690
|
const any = this.rune(Compiler.ANY_RUNE(), 0);
|
|
@@ -4692,7 +4692,7 @@ class Compiler {
|
|
|
4692
4692
|
const lbAutomaton = this.cat(dotStar, a);
|
|
4693
4693
|
this.prog.patch(lbAutomaton.out, id.i);
|
|
4694
4694
|
const checkId = this.newInst(Inst.LB_CHECK);
|
|
4695
|
-
this.prog.getInst(checkId.i).
|
|
4695
|
+
this.prog.getInst(checkId.i).arg = lb;
|
|
4696
4696
|
|
|
4697
4697
|
// Save the starting point of this lookbehind automaton
|
|
4698
4698
|
this.prog.lbStarts.push(lbAutomaton.i);
|
|
@@ -5467,6 +5467,7 @@ class Parser {
|
|
|
5467
5467
|
static ERR_UNEXPECTED_PAREN = 'unexpected )';
|
|
5468
5468
|
static ERR_NESTING_DEPTH = 'expression nests too deeply';
|
|
5469
5469
|
static ERR_LARGE = 'expression too large';
|
|
5470
|
+
static ERR_INVALID_CAPTURE_IN_LOOKBEHIND = 'invalid capture in lookbehind';
|
|
5470
5471
|
|
|
5471
5472
|
// maxHeight is the maximum height of a regexp parse tree.
|
|
5472
5473
|
// It is somewhat arbitrarily chosen, but the idea is to be large enough
|
|
@@ -5870,6 +5871,18 @@ class Parser {
|
|
|
5870
5871
|
}
|
|
5871
5872
|
return x;
|
|
5872
5873
|
}
|
|
5874
|
+
|
|
5875
|
+
// recursively check for captures
|
|
5876
|
+
static hasCapture(re) {
|
|
5877
|
+
if (re === null) return false;
|
|
5878
|
+
if (re.op === Regexp.Op.CAPTURE) return true;
|
|
5879
|
+
if (re.subs) {
|
|
5880
|
+
for (let sub of re.subs) {
|
|
5881
|
+
if (Parser.hasCapture(sub)) return true;
|
|
5882
|
+
}
|
|
5883
|
+
}
|
|
5884
|
+
return false;
|
|
5885
|
+
}
|
|
5873
5886
|
constructor(wholeRegexp, flags = 0) {
|
|
5874
5887
|
this.wholeRegexp = wholeRegexp;
|
|
5875
5888
|
// Flags control the behavior of the parser and record information about
|
|
@@ -6553,7 +6566,7 @@ class Parser {
|
|
|
6553
6566
|
case 1:
|
|
6554
6567
|
// Impossible but handle.
|
|
6555
6568
|
re.op = Regexp.Op.EMPTY_MATCH;
|
|
6556
|
-
re.subs =
|
|
6569
|
+
re.subs = Regexp.emptySubs();
|
|
6557
6570
|
break;
|
|
6558
6571
|
case 2:
|
|
6559
6572
|
{
|
|
@@ -7004,6 +7017,9 @@ class Parser {
|
|
|
7004
7017
|
|
|
7005
7018
|
// Handle lookbehinds
|
|
7006
7019
|
if (re2.lb !== 0) {
|
|
7020
|
+
if (Parser.hasCapture(re1)) {
|
|
7021
|
+
throw new RE2JSSyntaxException(Parser.ERR_INVALID_CAPTURE_IN_LOOKBEHIND, this.wholeRegexp);
|
|
7022
|
+
}
|
|
7007
7023
|
if (re2.lb > 0) {
|
|
7008
7024
|
re2.op = Regexp.Op.PLB;
|
|
7009
7025
|
} else {
|
|
@@ -8661,7 +8677,6 @@ class RE2JS {
|
|
|
8661
8677
|
*/
|
|
8662
8678
|
*matchAll(input) {
|
|
8663
8679
|
const m = this.matcher(input);
|
|
8664
|
-
const inputStr = typeof input === 'string' ? input : m.matcherInput.asCharSequence();
|
|
8665
8680
|
while (m.find()) {
|
|
8666
8681
|
// Build the match array starting with the full match
|
|
8667
8682
|
const result = [m.group(0)];
|
|
@@ -8674,7 +8689,7 @@ class RE2JS {
|
|
|
8674
8689
|
|
|
8675
8690
|
// Attach native RegExp match properties
|
|
8676
8691
|
result.index = m.start(0);
|
|
8677
|
-
result.input =
|
|
8692
|
+
result.input = input; // Retains original String or Uint8Array so index aligns perfectly
|
|
8678
8693
|
|
|
8679
8694
|
// Attach named capture groups if they exist
|
|
8680
8695
|
const namedGroups = this.namedGroups();
|