New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

regex-recursion

Package Overview
Dependencies
Maintainers
0
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

regex-recursion - npm Package Compare versions

Comparing version 6.0.1 to 6.0.2

2

dist/regex-recursion.min.js

@@ -1,2 +0,2 @@

var Regex;(Regex||={}).plugins=(()=>{var N=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var n in t)N(e,n,{get:t[n],enumerable:!0})},Q=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!J.call(e,s)&&s!==n&&N(e,s,{get:()=>t[s],enumerable:!(r=q(t,s))||r.enumerable});return e};var V=e=>Q(N({},"__esModule",{value:!0}),e);var te={};K(te,{recursion:()=>Z});var w=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function T(e,t,n,r){let s=new RegExp(String.raw`${t}|(?<$skip>\[\^?|\\?.)`,"gsu"),o=[!1],u=0,c="";for(let i of e.matchAll(s)){let{0:a,groups:{$skip:f}}=i;if(!f&&(!r||r===w.DEFAULT==!u)){n instanceof Function?c+=n(i,{context:u?w.CHAR_CLASS:w.DEFAULT,negated:o[o.length-1]}):c+=n;continue}a[0]==="["?(u++,o.push(a[1]==="^")):a==="]"&&u&&(u--,o.pop()),c+=a}return c}function F(e,t,n,r){T(e,t,n,r)}function X(e,t,n=0,r){if(!new RegExp(t,"su").test(e))return null;let s=new RegExp(`${t}|(?<$skip>\\\\?.)`,"gsu");s.lastIndex=n;let o=0,u;for(;u=s.exec(e);){let{0:c,groups:{$skip:i}}=u;if(!i&&(!r||r===w.DEFAULT==!o))return u;c==="["?o++:c==="]"&&o&&o--,s.lastIndex==u.index&&s.lastIndex++}return null}function k(e,t,n){return!!X(e,t,0,n)}function G(e,t){let n=/\\?./gsu;n.lastIndex=t;let r=e.length,s=0,o=1,u;for(;u=n.exec(e);){let[c]=u;if(c==="[")s++;else if(s)c==="]"&&s--;else if(c==="(")o++;else if(c===")"&&(o--,!o)){r=u.index;break}}return e.slice(t,r)}var m=String.raw,Y=m`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,I=m`\(\?R=(?<rDepth>[^\)]+)\)|${Y}`,A=m`\(\?<(?![=!])(?<captureName>[^>]+)>`,z=m`${A}|(?<unnamed>\()(?!\?)`,x=new RegExp(m`${A}|${I}|\(\?|\\?.`,"gsu"),b="Cannot use multiple overlapping recursions";function Z(e,t){let{hiddenCaptures:n,mode:r}={hiddenCaptures:[],mode:"plugin",...t},s=t?.captureTransfers??new Map;if(!new RegExp(I,"su").test(e))return{pattern:e,captureTransfers:s,hiddenCaptures:n};if(r==="plugin"&&k(e,m`\(\?\(DEFINE\)`,w.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let o=[],u=k(e,m`\\[1-9]`,w.DEFAULT),c=new Map,i=[],a=!1,f=0,h=0,p;for(x.lastIndex=0;p=x.exec(e);){let{0:l,groups:{captureName:d,rDepth:$,gRNameOrNum:g,gRDepth:R}}=p;if(l==="[")f++;else if(f)l==="]"&&f--;else if($){if(B($),a)throw new Error(b);if(u)throw new Error(`${r==="external"?"Backrefs":"Numbered backrefs"} cannot be used with global recursion`);let E=e.slice(0,p.index),C=e.slice(x.lastIndex);if(k(C,I,w.DEFAULT))throw new Error(b);let D=+$-1;e=W(E,C,D,!1,n,o,h),s=H(s,h,E,D,o.length,0);break}else if(g){B(R);let E=!1;for(let U of i)if(U.name===g||U.num===+g){if(E=!0,U.hasRecursedWithin)throw new Error(b);break}if(!E)throw new Error(m`Recursive \g cannot be used outside the referenced group "${r==="external"?g:m`\g<${g}&R=${R}>`}"`);let C=c.get(g),D=G(e,C);if(u&&k(D,m`${A}|\((?!\?)`,w.DEFAULT))throw new Error(`${r==="external"?"Backrefs":"Numbered backrefs"} cannot be used with recursion of capturing groups`);let L=e.slice(C,p.index),S=D.slice(L.length+l.length),O=o.length,M=+R-1,v=W(L,S,M,!0,n,o,h);s=H(s,h,L,M,o.length-O,O);let P=e.slice(0,C),j=e.slice(C+D.length);e=`${P}${v}${j}`,x.lastIndex+=v.length-l.length-L.length-S.length,i.forEach(U=>U.hasRecursedWithin=!0),a=!0}else if(d)h++,c.set(String(h),x.lastIndex),c.set(d,x.lastIndex),i.push({num:h,name:d});else if(l[0]==="("){let E=l==="(";E&&(h++,c.set(String(h),x.lastIndex)),i.push(E?{num:h}:{})}else l===")"&&i.pop()}return n.push(...o),{pattern:e,captureTransfers:s,hiddenCaptures:n}}function B(e){let t=`Max depth must be integer between 2 and 100; used ${e}`;if(!/^[1-9]\d*$/.test(e))throw new Error(t);if(e=+e,e<2||e>100)throw new Error(t)}function W(e,t,n,r,s,o,u){let c=new Set;r&&F(e+t,A,({groups:{captureName:a}})=>{c.add(a)},w.DEFAULT);let i=[n,r?c:null,s,o,u];return`${e}${_(`(?:${e}`,"forward",...i)}(?:)${_(`${t})`,"backward",...i)}${t}`}function _(e,t,n,r,s,o,u){let i=f=>t==="forward"?f+2:n-f+2-1,a="";for(let f=0;f<n;f++){let h=i(f);a+=T(e,m`${z}|\\k<(?<backref>[^>]+)>`,({0:p,groups:{captureName:l,unnamed:d,backref:$}})=>{if($&&r&&!r.has($))return p;let g=`_$${h}`;if(d||l){let R=u+o.length+1;return o.push(R),ee(s,R),d?p:`(?<${l}${g}>`}return m`\k<${$}${g}>`},w.DEFAULT)}return a}function ee(e,t){for(let n=0;n<e.length;n++)e[n]>=t&&e[n]++}function H(e,t,n,r,s,o){if(e.size&&s){let u=0;F(n,z,()=>u++,w.DEFAULT);let c=t-u+o,i=new Map;return e.forEach((a,f)=>{let h=f>t+o?f+s:f,p=[];for(let l of a)if(l<=c)p.push(l);else if(l>c+s)p.push(l+s);else if(l<=c+u)for(let d=0;d<=r;d++)p.push(l+u*d);else{let d=(s-u*r)/r,$=u*r;for(let g=0;g<=r;g++)p.push(l+$+d*g)}i.set(h,p)}),i}return e}return V(te);})();
var Regex;(Regex||={}).plugins=(()=>{var N=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var n in t)N(e,n,{get:t[n],enumerable:!0})},Q=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of y(t))!J.call(e,o)&&o!==n&&N(e,o,{get:()=>t[o],enumerable:!(r=q(t,o))||r.enumerable});return e};var V=e=>Q(N({},"__esModule",{value:!0}),e);var ne={};K(ne,{recursion:()=>Z});var m=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function T(e,t,n,r){let o=new RegExp(String.raw`${t}|(?<$skip>\[\^?|\\?.)`,"gsu"),u=[!1],s=0,c="";for(let i of e.matchAll(o)){let{0:p,groups:{$skip:f}}=i;if(!f&&(!r||r===m.DEFAULT==!s)){n instanceof Function?c+=n(i,{context:s?m.CHAR_CLASS:m.DEFAULT,negated:u[u.length-1]}):c+=n;continue}p[0]==="["?(s++,u.push(p[1]==="^")):p==="]"&&s&&(s--,u.pop()),c+=p}return c}function F(e,t,n,r){T(e,t,n,r)}function X(e,t,n=0,r){if(!new RegExp(t,"su").test(e))return null;let o=new RegExp(`${t}|(?<$skip>\\\\?.)`,"gsu");o.lastIndex=n;let u=0,s;for(;s=o.exec(e);){let{0:c,groups:{$skip:i}}=s;if(!i&&(!r||r===m.DEFAULT==!u))return s;c==="["?u++:c==="]"&&u&&u--,o.lastIndex==s.index&&o.lastIndex++}return null}function k(e,t,n){return!!X(e,t,0,n)}function G(e,t){let n=/\\?./gsu;n.lastIndex=t;let r=e.length,o=0,u=1,s;for(;s=n.exec(e);){let[c]=s;if(c==="[")o++;else if(o)c==="]"&&o--;else if(c==="(")u++;else if(c===")"&&(u--,!u)){r=s.index;break}}return e.slice(t,r)}var w=String.raw,Y=w`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,I=w`\(\?R=(?<rDepth>[^\)]+)\)|${Y}`,L=w`\(\?<(?![=!])(?<captureName>[^>]+)>`,_=w`${L}|(?<unnamed>\()(?!\?)`,x=new RegExp(w`${L}|${I}|\(\?|\\?.`,"gsu"),b="Cannot use multiple overlapping recursions";function Z(e,t){let{hiddenCaptures:n,mode:r}={hiddenCaptures:[],mode:"plugin",...t},o=t?.captureTransfers??new Map;if(!new RegExp(I,"su").test(e))return{pattern:e,captureTransfers:o,hiddenCaptures:n};if(r==="plugin"&&k(e,w`\(\?\(DEFINE\)`,m.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let u=[],s=k(e,w`\\[1-9]`,m.DEFAULT),c=new Map,i=[],p=!1,f=0,a=0,$;for(x.lastIndex=0;$=x.exec(e);){let{0:g,groups:{captureName:d,rDepth:h,gRNameOrNum:l,gRDepth:R}}=$;if(g==="[")f++;else if(f)g==="]"&&f--;else if(h){if(B(h),p)throw new Error(b);if(s)throw new Error(`${r==="external"?"Backrefs":"Numbered backrefs"} cannot be used with global recursion`);let C=e.slice(0,$.index),E=e.slice(x.lastIndex);if(k(E,I,m.DEFAULT))throw new Error(b);let D=+h-1;e=H(C,E,D,!1,n,u,a),o=W(o,C,D,u.length,0,a);break}else if(l){B(R);let C=!1;for(let U of i)if(U.name===l||U.num===+l){if(C=!0,U.hasRecursedWithin)throw new Error(b);break}if(!C)throw new Error(w`Recursive \g cannot be used outside the referenced group "${r==="external"?l:w`\g<${l}&R=${R}>`}"`);let E=c.get(l),D=G(e,E);if(s&&k(D,w`${L}|\((?!\?)`,m.DEFAULT))throw new Error(`${r==="external"?"Backrefs":"Numbered backrefs"} cannot be used with recursion of capturing groups`);let A=e.slice(E,$.index),S=D.slice(A.length+g.length),O=u.length,M=+R-1,v=H(A,S,M,!0,n,u,a);o=W(o,A,M,u.length-O,O,a);let z=e.slice(0,E),j=e.slice(E+D.length);e=`${z}${v}${j}`,x.lastIndex+=v.length-g.length-A.length-S.length,i.forEach(U=>U.hasRecursedWithin=!0),p=!0}else if(d)a++,c.set(String(a),x.lastIndex),c.set(d,x.lastIndex),i.push({num:a,name:d});else if(g[0]==="("){let C=g==="(";C&&(a++,c.set(String(a),x.lastIndex)),i.push(C?{num:a}:{})}else g===")"&&i.pop()}return n.push(...u),{pattern:e,captureTransfers:o,hiddenCaptures:n}}function B(e){let t=`Max depth must be integer between 2 and 100; used ${e}`;if(!/^[1-9]\d*$/.test(e))throw new Error(t);if(e=+e,e<2||e>100)throw new Error(t)}function H(e,t,n,r,o,u,s){let c=new Set;r&&F(e+t,L,({groups:{captureName:p}})=>{c.add(p)},m.DEFAULT);let i=[n,r?c:null,o,u,s];return`${e}${P(`(?:${e}`,"forward",...i)}(?:)${P(`${t})`,"backward",...i)}${t}`}function P(e,t,n,r,o,u,s){let i=f=>t==="forward"?f+2:n-f+2-1,p="";for(let f=0;f<n;f++){let a=i(f);p+=T(e,w`${_}|\\k<(?<backref>[^>]+)>`,({0:$,groups:{captureName:g,unnamed:d,backref:h}})=>{if(h&&r&&!r.has(h))return $;let l=`_$${a}`;if(d||g){let R=s+u.length+1;return u.push(R),ee(o,R),d?$:`(?<${g}${l}>`}return w`\k<${h}${l}>`},m.DEFAULT)}return p}function ee(e,t){for(let n=0;n<e.length;n++)e[n]>=t&&e[n]++}function W(e,t,n,r,o,u){if(e.size&&r){let s=0;F(t,_,()=>s++,m.DEFAULT);let c=u-s+o,i=new Map;return e.forEach((p,f)=>{let a=(r-s*n)/n,$=s*n,g=f>c+s?f+r:f,d=[];for(let h of p)if(h<=c)d.push(h);else if(h>c+s+a)d.push(h+r);else if(h<=c+s)for(let l=0;l<=n;l++)d.push(h+s*l);else for(let l=0;l<=n;l++)d.push(h+$+a*l);i.set(g,d)}),i}return e}return V(ne);})();
//# sourceMappingURL=regex-recursion.min.js.map
{
"name": "regex-recursion",
"version": "6.0.1",
"version": "6.0.2",
"description": "Recursive matching plugin for Regex+",

@@ -5,0 +5,0 @@ "author": "Steven Levithan",

@@ -38,3 +38,3 @@ # regex-recursion

<script src="https://cdn.jsdelivr.net/npm/regex@6.0.1/dist/regex.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/regex-recursion@6.0.1/dist/regex-recursion.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/regex-recursion@6.0.2/dist/regex-recursion.min.js"></script>
<script>

@@ -41,0 +41,0 @@ const {regex} = Regex;

@@ -99,7 +99,7 @@ import {Context, forEachUnescaped, getGroupContents, hasUnescaped, replaceUnescaped} from 'regex-utilities';

captureTransfers,
numCapturesPassed,
left,
reps,
addedHiddenCaptures.length,
0
0,
numCapturesPassed
);

@@ -153,7 +153,7 @@ // No need to parse further

captureTransfers,
numCapturesPassed,
groupContentsLeft,
reps,
addedHiddenCaptures.length - numAddedHiddenCapturesPreExpansion,
numAddedHiddenCapturesPreExpansion
numAddedHiddenCapturesPreExpansion,
numCapturesPassed
);

@@ -320,3 +320,2 @@ const pre = pattern.slice(0, startPos);

@param {Map<number, Array<number>>} captureTransfers
@param {number} numCapturesPassed
@param {string} left

@@ -326,5 +325,6 @@ @param {number} reps

@param {number} numAddedHiddenCapturesPreExpansion
@param {number} numCapturesPassed
@returns {Map<number, Array<number>>}
*/
function mapCaptureTransfers(captureTransfers, numCapturesPassed, left, reps, numCapturesAddedInExpansion, numAddedHiddenCapturesPreExpansion) {
function mapCaptureTransfers(captureTransfers, left, reps, numCapturesAddedInExpansion, numAddedHiddenCapturesPreExpansion, numCapturesPassed) {
if (captureTransfers.size && numCapturesAddedInExpansion) {

@@ -337,5 +337,5 @@ let numCapturesInLeft = 0;

captureTransfers.forEach((from, to) => {
const newTo = to > (numCapturesPassed + numAddedHiddenCapturesPreExpansion) ?
to + numCapturesAddedInExpansion :
to;
const numCapturesInRight = (numCapturesAddedInExpansion - (numCapturesInLeft * reps)) / reps;
const numCapturesAddedInLeft = numCapturesInLeft * reps;
const newTo = to > (recursionDelimCaptureNum + numCapturesInLeft) ? to + numCapturesAddedInExpansion : to;
const newFrom = [];

@@ -347,3 +347,3 @@ for (const f of from) {

// After the recursed subpattern
} else if (f > (recursionDelimCaptureNum + numCapturesAddedInExpansion)) {
} else if (f > (recursionDelimCaptureNum + numCapturesInLeft + numCapturesInRight)) {
newFrom.push(f + numCapturesAddedInExpansion);

@@ -357,4 +357,2 @@ // Within the recursed subpattern, on the left of the recursion token

} else {
const numCapturesInRight = (numCapturesAddedInExpansion - (numCapturesInLeft * reps)) / reps;
const numCapturesAddedInLeft = numCapturesInLeft * reps;
for (let i = 0; i <= reps; i++) {

@@ -361,0 +359,0 @@ newFrom.push(f + numCapturesAddedInLeft + (numCapturesInRight * i));

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