oniguruma-to-es
Advanced tools
Comparing version 0.1.0 to 0.1.1
@@ -1,10 +0,10 @@ | ||
var OnigurumaToES=(()=>{var ae=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var _t=Object.getOwnPropertyNames;var At=Object.prototype.hasOwnProperty;var kt=(e,t)=>{for(var r in t)ae(e,r,{get:t[r],enumerable:!0})},St=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _t(t))!At.call(e,n)&&n!==r&&ae(e,n,{get:()=>t[n],enumerable:!(s=wt(t,n))||s.enumerable});return e};var yt=e=>St(ae({},"__esModule",{value:!0}),e);var Ur={};kt(Ur,{EmulatedRegExp:()=>se,toDetails:()=>Et,toOnigurumaAst:()=>Rr,toRegExp:()=>Or});var Z={ES2018:2018,ES2024:2024,ESNext:2025};function J(e){if(e?.target!==void 0&&!Z[e.target])throw new Error(`Unexpected target "${e.target}"`);return{accuracy:"default",avoidSubclass:!1,flags:"",global:!1,hasIndices:!1,maxRecursionDepth:6,target:"ES2024",tmGrammar:!1,verbose:!1,...e}}var _=String.fromCodePoint,f=String.raw;function U(e,{enable:t,disable:r}){return{dotAll:!r?.dotAll&&!!(t?.dotAll||e.dotAll),ignoreCase:!r?.ignoreCase&&!!(t?.ignoreCase||e.ignoreCase)}}function T(e,t,r){return e.has(t)||e.set(t,r),e.get(t)}function V(e,t){return Z[e]>=Z[t]}function N(e,t){if(!e)throw new Error(t??"Value expected");return e}var xt=new Set([_(304),_(305)]);function ie(e){if(xt.has(e))return[e];let t=new Set,r=e.toLowerCase(),s=r.toUpperCase(),n=Nt.get(r),o=Ft.get(r);return[...s].length===1&&t.add(s),t.add(r),n&&t.add(n),o&&t.add(o),[...t]}var ce=new Set(["C","Other","Cc","Control","cntrl","Cf","Format","Cn","Unassigned","Co","Private_Use","Cs","Surrogate","L","Letter","LC","Cased_Letter","Ll","Lowercase_Letter","Lm","Modifier_Letter","Lo","Other_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter","M","Mark","Combining_Mark","Mc","Spacing_Mark","Me","Enclosing_Mark","Mn","Nonspacing_Mark","N","Number","Nd","Decimal_Number","digit","Nl","Letter_Number","No","Other_Number","P","Punctuation","punct","Pc","Connector_Punctuation","Pd","Dash_Punctuation","Pe","Close_Punctuation","Pf","Final_Punctuation","Pi","Initial_Punctuation","Po","Other_Punctuation","Ps","Open_Punctuation","S","Symbol","Sc","Currency_Symbol","Sk","Modifier_Symbol","Sm","Math_Symbol","So","Other_Symbol","Z","Separator","Zl","Line_Separator","Zp","Paragraph_Separator","Zs","Space_Separator","ASCII","ASCII_Hex_Digit","AHex","Alphabetic","Alpha","Any","Assigned","Bidi_Control","Bidi_C","Bidi_Mirrored","Bidi_M","Case_Ignorable","CI","Cased","Changes_When_Casefolded","CWCF","Changes_When_Casemapped","CWCM","Changes_When_Lowercased","CWL","Changes_When_NFKC_Casefolded","CWKCF","Changes_When_Titlecased","CWT","Changes_When_Uppercased","CWU","Dash","Default_Ignorable_Code_Point","DI","Deprecated","Dep","Diacritic","Dia","Emoji","Emoji_Component","EComp","Emoji_Modifier","EMod","Emoji_Modifier_Base","EBase","Emoji_Presentation","EPres","Extended_Pictographic","ExtPict","Extender","Ext","Grapheme_Base","Gr_Base","Grapheme_Extend","Gr_Ext","Hex_Digit","Hex","IDS_Binary_Operator","IDSB","IDS_Trinary_Operator","IDST","ID_Continue","IDC","ID_Start","IDS","Ideographic","Ideo","Join_Control","Join_C","Logical_Order_Exception","LOE","Lowercase","Lower","Math","Noncharacter_Code_Point","NChar","Pattern_Syntax","Pat_Syn","Pattern_White_Space","Pat_WS","Quotation_Mark","QMark","Radical","Regional_Indicator","RI","Sentence_Terminal","STerm","Soft_Dotted","SD","Terminal_Punctuation","Term","Unified_Ideograph","UIdeo","Uppercase","Upper","Variation_Selector","VS","White_Space","space","XID_Continue","XIDC","XID_Start","XIDS"]),ue=new Map;for(let e of ce)ue.set(j(e),e);var bt=new Set(["Basic_Emoji","Emoji_Keycap_Sequence","RGI_Emoji","RGI_Emoji_Flag_Sequence","RGI_Emoji_Modifier_Sequence","RGI_Emoji_Tag_Sequence","RGI_Emoji_ZWJ_Sequence"]),le=new Map;for(let e of bt)le.set(j(e),e);var ke=new Set("Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo Extended_Pictographic Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi EBase EComp EMod EPres ExtPict Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz".split(" ")),Ft=new Map([[_(223),_(7838)],[_(107),_(8490)],[_(229),_(8491)],[_(969),_(8486)]]),Nt=new Map([L(453),L(456),L(459),L(498),...oe(8072,8079),...oe(8088,8095),...oe(8104,8111),L(8124),L(8140),L(8188)]),Y=new Map([["alnum",f`[\p{Alpha}\p{Nd}]`],["alpha",f`\p{Alpha}`],["ascii",f`\p{ASCII}`],["blank",f`[\p{Zs}\t]`],["cntrl",f`\p{cntrl}`],["digit",f`\p{Nd}`],["graph",f`[\P{space}&&\P{cntrl}&&\P{Cn}&&\P{Cs}]`],["lower",f`\p{Lower}`],["print",f`[[\P{space}&&\P{cntrl}&&\P{Cn}&&\P{Cs}]\p{Zs}]`],["punct",f`[\p{P}\p{S}]`],["space",f`\p{space}`],["upper",f`\p{Upper}`],["word",f`[\p{Alpha}\p{M}\p{Nd}\p{Pc}]`],["xdigit",f`\p{AHex}`]]),Se=new Set(["alnum","blank","graph","print","word","xdigit"]);function It(e,t){let r=[];for(let s=e;s<=t;s++)r.push(s);return r}function j(e){return e.replace(/[- _]+/g,"").toLowerCase()}function L(e){let t=_(e);return[t.toLowerCase(),t]}function oe(e,t){return It(e,t).map(r=>L(r))}var pe=new Set(["Lower","Lowercase","Upper","Uppercase","Ll","Lowercase_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter"]);var h={Alternator:"Alternator",Assertion:"Assertion",Backreference:"Backreference",Character:"Character",CharacterClassClose:"CharacterClassClose",CharacterClassHyphen:"CharacterClassHyphen",CharacterClassIntersector:"CharacterClassIntersector",CharacterClassOpen:"CharacterClassOpen",CharacterSet:"CharacterSet",Directive:"Directive",GroupClose:"GroupClose",GroupOpen:"GroupOpen",Subroutine:"Subroutine",Quantifier:"Quantifier",VariableLengthCharacterSet:"VariableLengthCharacterSet",EscapedNumber:"EscapedNumber"},A={any:"any",digit:"digit",dot:"dot",hex:"hex",non_newline:"non_newline",posix:"posix",property:"property",space:"space",word:"word"},H={flags:"flags",keep:"keep"},S={atomic:"atomic",capturing:"capturing",group:"group",lookahead:"lookahead",lookbehind:"lookbehind"},ye=new Map([["a",7],["b",8],["e",27],["f",12],["n",10],["r",13],["t",9],["v",11]]),Fe="c.? | C(?:-.?)?",Ne=f`[pP]\{(?:\^?[\x20\w]+\})?`,Ie=f`x[89A-Fa-f]\p{AHex}(?:\\x[89A-Fa-f]\p{AHex})*`,$e=f`u(?:\p{AHex}{4})? | x\{[^\}]*\}? | x\p{AHex}{0,2}`,ve=f`\d{1,3}`,Pe=f`\[\^?\]?`,Ge=/[?*+][?+]?|\{(?:\d+(?:,\d*)?|,\d+)\}\??/,ee=new RegExp(f` | ||
var OnigurumaToES=(()=>{var ae=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var _t=Object.getOwnPropertyNames;var kt=Object.prototype.hasOwnProperty;var St=(e,t)=>{for(var r in t)ae(e,r,{get:t[r],enumerable:!0})},yt=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of _t(t))!kt.call(e,n)&&n!==r&&ae(e,n,{get:()=>t[n],enumerable:!(s=At(t,n))||s.enumerable});return e};var xt=e=>yt(ae({},"__esModule",{value:!0}),e);var Br={};St(Br,{EmulatedRegExp:()=>se,toDetails:()=>wt,toOnigurumaAst:()=>Dr,toRegExp:()=>Mr});var X={ES2018:2018,ES2024:2024,ESNext:2025};function Z(e){if(e?.target!==void 0&&!X[e.target])throw new Error(`Unexpected target "${e.target}"`);return{accuracy:"default",avoidSubclass:!1,flags:"",global:!1,hasIndices:!1,maxRecursionDepth:6,target:"ES2024",tmGrammar:!1,verbose:!1,...e}}var A=String.fromCodePoint,f=String.raw;function U(e,{enable:t,disable:r}){return{dotAll:!r?.dotAll&&!!(t?.dotAll||e.dotAll),ignoreCase:!r?.ignoreCase&&!!(t?.ignoreCase||e.ignoreCase)}}function L(e,t,r){return e.has(t)||e.set(t,r),e.get(t)}function V(e,t){return X[e]>=X[t]}function F(e,t){if(!e)throw new Error(t??"Value expected");return e}var bt=new Set([A(304),A(305)]);function ie(e){if(bt.has(e))return[e];let t=new Set,r=e.toLowerCase(),s=r.toUpperCase(),n=It.get(r),o=Nt.get(r);return[...s].length===1&&t.add(s),t.add(r),n&&t.add(n),o&&t.add(o),[...t]}var ce=new Set(["C","Other","Cc","Control","cntrl","Cf","Format","Cn","Unassigned","Co","Private_Use","Cs","Surrogate","L","Letter","LC","Cased_Letter","Ll","Lowercase_Letter","Lm","Modifier_Letter","Lo","Other_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter","M","Mark","Combining_Mark","Mc","Spacing_Mark","Me","Enclosing_Mark","Mn","Nonspacing_Mark","N","Number","Nd","Decimal_Number","digit","Nl","Letter_Number","No","Other_Number","P","Punctuation","punct","Pc","Connector_Punctuation","Pd","Dash_Punctuation","Pe","Close_Punctuation","Pf","Final_Punctuation","Pi","Initial_Punctuation","Po","Other_Punctuation","Ps","Open_Punctuation","S","Symbol","Sc","Currency_Symbol","Sk","Modifier_Symbol","Sm","Math_Symbol","So","Other_Symbol","Z","Separator","Zl","Line_Separator","Zp","Paragraph_Separator","Zs","Space_Separator","ASCII","ASCII_Hex_Digit","AHex","Alphabetic","Alpha","Any","Assigned","Bidi_Control","Bidi_C","Bidi_Mirrored","Bidi_M","Case_Ignorable","CI","Cased","Changes_When_Casefolded","CWCF","Changes_When_Casemapped","CWCM","Changes_When_Lowercased","CWL","Changes_When_NFKC_Casefolded","CWKCF","Changes_When_Titlecased","CWT","Changes_When_Uppercased","CWU","Dash","Default_Ignorable_Code_Point","DI","Deprecated","Dep","Diacritic","Dia","Emoji","Emoji_Component","EComp","Emoji_Modifier","EMod","Emoji_Modifier_Base","EBase","Emoji_Presentation","EPres","Extended_Pictographic","ExtPict","Extender","Ext","Grapheme_Base","Gr_Base","Grapheme_Extend","Gr_Ext","Hex_Digit","Hex","IDS_Binary_Operator","IDSB","IDS_Trinary_Operator","IDST","ID_Continue","IDC","ID_Start","IDS","Ideographic","Ideo","Join_Control","Join_C","Logical_Order_Exception","LOE","Lowercase","Lower","Math","Noncharacter_Code_Point","NChar","Pattern_Syntax","Pat_Syn","Pattern_White_Space","Pat_WS","Quotation_Mark","QMark","Radical","Regional_Indicator","RI","Sentence_Terminal","STerm","Soft_Dotted","SD","Terminal_Punctuation","Term","Unified_Ideograph","UIdeo","Uppercase","Upper","Variation_Selector","VS","White_Space","space","XID_Continue","XIDC","XID_Start","XIDS"]),ue=new Map;for(let e of ce)ue.set(j(e),e);var Ft=new Set(["Basic_Emoji","Emoji_Keycap_Sequence","RGI_Emoji","RGI_Emoji_Flag_Sequence","RGI_Emoji_Modifier_Sequence","RGI_Emoji_Tag_Sequence","RGI_Emoji_ZWJ_Sequence"]),le=new Map;for(let e of Ft)le.set(j(e),e);var Se=new Set("Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo Extended_Pictographic Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi EBase EComp EMod EPres ExtPict Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz".split(" ")),Nt=new Map([[A(223),A(7838)],[A(107),A(8490)],[A(229),A(8491)],[A(969),A(8486)]]),It=new Map([T(453),T(456),T(459),T(498),...oe(8072,8079),...oe(8088,8095),...oe(8104,8111),T(8124),T(8140),T(8188)]),J=new Map([["alnum",f`[\p{Alpha}\p{Nd}]`],["alpha",f`\p{Alpha}`],["ascii",f`\p{ASCII}`],["blank",f`[\p{Zs}\t]`],["cntrl",f`\p{cntrl}`],["digit",f`\p{Nd}`],["graph",f`[\P{space}&&\P{cntrl}&&\P{Cn}&&\P{Cs}]`],["lower",f`\p{Lower}`],["print",f`[[\P{space}&&\P{cntrl}&&\P{Cn}&&\P{Cs}]\p{Zs}]`],["punct",f`[\p{P}\p{S}]`],["space",f`\p{space}`],["upper",f`\p{Upper}`],["word",f`[\p{Alpha}\p{M}\p{Nd}\p{Pc}]`],["xdigit",f`\p{AHex}`]]),ye=new Set(["alnum","blank","graph","print","word","xdigit"]);function $t(e,t){let r=[];for(let s=e;s<=t;s++)r.push(s);return r}function j(e){return e.replace(/[- _]+/g,"").toLowerCase()}function T(e){let t=A(e);return[t.toLowerCase(),t]}function oe(e,t){return $t(e,t).map(r=>T(r))}var pe=new Set(["Lower","Lowercase","Upper","Uppercase","Ll","Lowercase_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter"]);var h={Alternator:"Alternator",Assertion:"Assertion",Backreference:"Backreference",Character:"Character",CharacterClassClose:"CharacterClassClose",CharacterClassHyphen:"CharacterClassHyphen",CharacterClassIntersector:"CharacterClassIntersector",CharacterClassOpen:"CharacterClassOpen",CharacterSet:"CharacterSet",Directive:"Directive",GroupClose:"GroupClose",GroupOpen:"GroupOpen",Subroutine:"Subroutine",Quantifier:"Quantifier",VariableLengthCharacterSet:"VariableLengthCharacterSet",EscapedNumber:"EscapedNumber"},_={any:"any",digit:"digit",dot:"dot",hex:"hex",non_newline:"non_newline",posix:"posix",property:"property",space:"space",word:"word"},H={flags:"flags",keep:"keep"},S={atomic:"atomic",capturing:"capturing",group:"group",lookahead:"lookahead",lookbehind:"lookbehind"},xe=new Map([["a",7],["b",8],["e",27],["f",12],["n",10],["r",13],["t",9],["v",11]]),Ne="c.? | C(?:-.?)?",Ie=f`[pP]\{(?:\^?[\x20\w]+\})?`,$e=f`x[89A-Fa-f]\p{AHex}(?:\\x[89A-Fa-f]\p{AHex})*`,ve=f`u(?:\p{AHex}{4})? | x\{[^\}]*\}? | x\p{AHex}{0,2}`,Pe=f`\d{1,3}`,Ge=f`\[\^?\]?`,Te=/[?*+][?+]?|\{(?:\d+(?:,\d*)?|,\d+)\}\??/,Y=new RegExp(f` | ||
\\ (?: | ||
${Fe} | ||
| ${Ne} | ||
${Ne} | ||
| ${Ie} | ||
| ${$e} | ||
| ${ve} | ||
| [gk]<[^>]*> | ||
| [gk]'[^']*' | ||
| ${Pe} | ||
| [gk]<[^>]*>? | ||
| [gk]'[^']*'? | ||
| . | ||
@@ -20,25 +20,25 @@ ) | ||
)?)? | ||
| ${Ge.source} | ||
| ${Pe} | ||
| ${Te.source} | ||
| ${Ge} | ||
| . | ||
`.replace(/\s+/g,""),"gsu"),fe=new RegExp(f` | ||
\\ (?: | ||
${Fe} | ||
| ${Ne} | ||
${Ne} | ||
| ${Ie} | ||
| ${$e} | ||
| ${ve} | ||
| ${Pe} | ||
| . | ||
) | ||
| \[:[^:]*:\] | ||
| ${Pe} | ||
| ${Ge} | ||
| && | ||
| . | ||
`.replace(/\s+/g,""),"gsu");function K(e,t=""){if(typeof e!="string")throw new Error("String expected as pattern");if(!/^[imx]*$/.test(t))throw new Error(`Flags "${t}" unsupported in Oniguruma`);let r=[t.includes("x")],s={getCurrentModX:()=>r.at(-1),numOpenGroups:0,popModX(){r.pop()},pushModX(c){r.push(c)},replaceCurrentModX(c){r[r.length-1]=c}},n=[],o;for(ee.lastIndex=0;o=ee.exec(e);){let c=$t(s,e,o[0],ee.lastIndex);c.tokens?n.push(...c.tokens):c.token&&n.push(c.token),c.lastIndex!==void 0&&(ee.lastIndex=c.lastIndex)}let a=[],i=0;n.forEach(c=>{c.type===h.GroupOpen&&(c.kind===S.capturing?(i++,c.number=i):c.raw==="("&&a.push(c))}),i||a.forEach((c,p)=>{c.kind=S.capturing,c.number=p+1});let u=i||a.length;return n=n.map(c=>c.type===h.EscapedNumber?Dt(c,u):c).flat(),{tokens:n,flags:{ignoreCase:t.includes("i"),dotAll:t.includes("m"),extended:t.includes("x")}}}function $t(e,t,r,s){let[n,o,a]=r;if(n==="["){let i=vt(t,r,s);return{tokens:i.tokens,lastIndex:i.lastIndex}}if(n==="\\"){if("AbBGzZ".includes(o))return{token:m(h.Assertion,r,{kind:r})};if(/^\\g[<']/.test(r))return{token:m(h.Subroutine,r)};if(/^\\k[<']/.test(r))return{token:m(h.Backreference,r)};if(o==="K")return{token:m(h.Directive,r,{kind:H.keep})};if(o==="N")return{token:m(h.CharacterSet,r,{kind:A.non_newline})};if(o==="O")return{token:m(h.CharacterSet,r,{kind:A.any})};if("RX".includes(o))return{token:m(h.VariableLengthCharacterSet,r,{kind:r})};let i=Te(r,{inCharClass:!1});return Array.isArray(i)?{tokens:i}:{token:i}}if(n==="("){if(a==="#"){if(t[s]!==")")throw new Error('Unclosed comment group "(?#"');return{lastIndex:s+1}}if("-imx".includes(a))return{token:Tt(r,e)};if(e.pushModX(e.getCurrentModX()),e.numOpenGroups++,r==="("||r==="(?:")return{token:m(h.GroupOpen,r,{kind:S.group})};if(r==="(?>")return{token:m(h.GroupOpen,r,{kind:S.atomic})};if(r==="(?="||r==="(?!"||r==="(?<="||r==="(?<!")return{token:m(h.GroupOpen,r,{kind:a==="<"?S.lookbehind:S.lookahead,negate:r.endsWith("!")})};if(a==="<"||a==="'")return{token:m(h.GroupOpen,r,{kind:S.capturing,name:r.slice(3,-1)})};throw a==="("?new Error(`Unsupported conditional "${r}"`):a==="~"?new Error(`Unsupported absence operator "${r}"`):r==="(?"?new Error("Invalid group"):new Error(`Unexpected group "${r}"`)}if(r===")"){if(e.popModX(),e.numOpenGroups--,e.numOpenGroups<0)throw new Error('Unmatched ")"');return{token:m(h.GroupClose,r)}}if(r==="#"&&e.getCurrentModX()){let i=t.indexOf(` | ||
`,s);return{lastIndex:i===-1?t.length:i}}if(/^\s$/.test(r)&&e.getCurrentModX()){let i=/\s+/y;return i.lastIndex=s,{lastIndex:i.exec(t)?i.lastIndex:s}}return r==="."?{token:m(h.CharacterSet,r,{kind:A.dot})}:r==="^"||r==="$"?{token:m(h.Assertion,r,{kind:r})}:r==="|"?{token:m(h.Alternator,r)}:Ge.test(r)?{token:Lt(r)}:(Le(r),{token:m(h.Character,r,{value:r.codePointAt(0)})})}function vt(e,t,r){be(t);let s=[m(h.CharacterClassOpen,t,{negate:t[1]==="^"})],n=1,o;for(fe.lastIndex=r;o=fe.exec(e);){let a=o[0];if(a[0]==="["&&a[1]!==":")be(a),n++,s.push(m(h.CharacterClassOpen,a,{negate:a[1]==="^"}));else if(a==="]"){if(n--,s.push(m(h.CharacterClassClose,a)),!n)break}else{let i=Pt(a);Array.isArray(i)?s.push(...i):s.push(i)}}return{tokens:s,lastIndex:fe.lastIndex||e.length}}function Pt(e){if(e[0]==="\\")return Te(e,{inCharClass:!0});if(e[0]==="["){let t=/\[:(?<negate>\^?)(?<name>[a-z]+):\]/.exec(e);if(!t||!Y.get(t.groups.name))throw new Error(`Invalid POSIX class "${e}"`);return m(h.CharacterSet,e,{kind:A.posix,negate:!!t.groups.negate,value:t.groups.name})}return e==="-"?m(h.CharacterClassHyphen,e):e==="&&"?m(h.CharacterClassIntersector,e):(Le(e),m(h.Character,e,{value:e.codePointAt(0)}))}function Te(e,{inCharClass:t}){let r=e[1];if(r==="c"||r==="C")return Gt(e);if("dDhHsSwW".includes(r))return Rt(e);if(/^\\[pP]\{/.test(e)){if(e.length===3)throw new Error("Incomplete or invalid Unicode property");return Ot(e)}if(/^\\x[89A-Fa-f]\p{AHex}/u.test(e))try{let s=e.split(/\\x/).slice(1).map(i=>parseInt(i,16)),n=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}).decode(new Uint8Array(s)),o=new TextEncoder;return[...n].map(i=>{let u=[...o.encode(i)].map(c=>`\\x${c.toString(16)}`).join("");return m(h.Character,u,{value:i.codePointAt(0)})})}catch{throw new Error(`Too short or invalid multibyte code "${e}"`)}if(r==="u"||r==="x")return m(h.Character,e,{value:Ut(e)});if(ye.has(r))return m(h.Character,e,{value:ye.get(r)});if(/\d/.test(r))return m(h.EscapedNumber,e,{inCharClass:t});if(e==="\\")throw new Error(f`Incomplete escape "\"`);if(r==="M")throw new Error(`Unsupported meta "${e}"`);if([...e].length===2)return m(h.Character,e,{value:e.codePointAt(1)});throw new Error(`Unexpected escape "${e}"`)}function m(e,t,r){return{type:e,raw:t,...r}}function Gt(e){let t=e[1]==="c"?e[2]:e[3];if(!t||!/[A-Za-z]/.test(t))throw new Error(`Unsupported control character "${e}"`);return m(h.Character,e,{value:t.toUpperCase().codePointAt(0)-64})}function Tt(e,t){let{on:r,off:s}=/^\(\?(?<on>[imx]*)(?:-(?<off>[imx\-]*))?/.exec(e).groups;s??="";let n=(t.getCurrentModX()||r.includes("x"))&&!s.includes("x"),o=xe(r),a=xe(s),i={};if(o&&(i.enable=o),a&&(i.disable=a),e.endsWith(")"))return t.replaceCurrentModX(n),m(h.Directive,e,{kind:H.flags,flags:i});if(e.endsWith(":")){t.pushModX(n),t.numOpenGroups++;let u=m(h.GroupOpen,e,{kind:S.group});return(o||a)&&(u.flags=i),u}throw new Error(`Unexpected flag modifier "${e}"`)}function Lt(e){let t={};if(e[0]==="{"){let{min:r,max:s}=/^\{(?<min>\d*)(?:,(?<max>\d*))?/.exec(e).groups,n=1e5;if(+r>n||+s>n)throw new Error("Quantifier value unsupported in Oniguruma");t.min=+r,t.max=s===void 0?+r:s===""?1/0:+s,t.greedy=!e.endsWith("?"),t.possessive=!1}else t.min=e[0]==="+"?1:0,t.max=e[0]==="?"?1:1/0,t.greedy=e[1]!=="?",t.possessive=e[1]==="+";return m(h.Quantifier,e,t)}function Rt(e){let t=e[1].toLowerCase();return m(h.CharacterSet,e,{kind:{d:A.digit,h:A.hex,s:A.space,w:A.word}[t],negate:e[1]!==t})}function Ot(e){let{p:t,neg:r,value:s}=/^\\(?<p>[pP])\{(?<neg>\^?)(?<value>[ \w]+)/.exec(e).groups,n=t==="P"&&!r||t==="p"&&!!r;return m(h.CharacterSet,e,{kind:A.property,negate:n,value:s})}function xe(e){let t={};return e.includes("i")&&(t.ignoreCase=!0),e.includes("m")&&(t.dotAll=!0),e.includes("x")&&(t.extended=!0),Object.keys(t).length?t:null}function Ut(e){if(/^(?:\\u(?!\p{AHex}{4})|\\x(?!\p{AHex}{1,2}|\{\p{AHex}{1,8}\}))/u.test(e))throw new Error(`Incomplete or invalid escape "${e}"`);let t=e[2]==="{"?/^\\x\{\s*(?<hex>\p{AHex}+)/u.exec(e).groups.hex:e.slice(2),r=parseInt(t,16);if(r>127&&/^\\x\p{AHex}/u.test(e))throw new Error(f`\xNN above 7F unsupported in Oniguruma "${e}"`);if(r>1310719)throw new Error(`Invalid out of range "${e}"`);if(r>1114111)throw new Error(`Invalid out of range in JS "${e}"`);return r}function Dt(e,t){let{raw:r,inCharClass:s}=e,n=r.slice(1);if(!s&&(n!=="0"&&n.length===1||n[0]!=="0"&&+n<=t))return[m(h.Backreference,r)];let o=[],a=n.match(/^[0-7]+|\d/g);for(let i=0;i<a.length;i++){let u=a[i],c=i===0&&u!=="8"&&u!=="9"?parseInt(u,8):u.codePointAt(0);o.push(m(h.Character,(i===0?"\\":"")+u,{value:c}))}return o}function be(e){if(e.endsWith("]"))throw new Error(`Empty character class "${e}" unsupported in Oniguruma`)}function Le(e){if([...e].length!==1)throw new Error(`Expected "${e}" to be a single code point`)}function G(e,t,r){let s=e.node;for(;s.parent;)s=s.parent;function n(a,i){for(let u=0;u<a.length;u++){let c=o(a[u],i,u,a);u=Math.max(-1,u+c)}}function o(a,i=null,u=null,c=null){let p=0,g=!1,C={node:a,parent:i,key:u,container:c,ast:s,remove(){N(c,"Container expected").splice(Math.max(0,u+p),1),p-=1},removeAllNextSiblings(){return N(c,"Container expected").splice(u+1)},removeAllPrevSiblings(){let F=u+p;return p-=F,N(c,"Container expected").splice(0,Math.max(0,F))},replaceWith(F){Mt(F,i),c?c[Math.max(0,u+p)]=F:i[u]=F},skip(){g=!0}},d=Re(a).find(F=>!!r[F]),w=d&&r[d],k=typeof w=="function"?w:w?.enter,x=w?.exit;if(k?.(C,t),!g)switch(a.type){case l.Regex:o(a.pattern,a,"pattern"),o(a.flags,a,"flags");break;case l.Alternative:case l.CharacterClass:n(a.elements,a);break;case l.Assertion:I(a)&&n(a.alternatives,a);break;case l.Backreference:case l.Character:case l.CharacterSet:case l.Directive:case l.Flags:case l.Recursion:case l.Subroutine:case l.VariableLengthCharacterSet:break;case l.CapturingGroup:case l.Group:case l.Pattern:n(a.alternatives,a);break;case l.CharacterClassIntersection:n(a.classes,a);break;case l.CharacterClassRange:o(a.min,a,"min"),o(a.max,a,"max");break;case l.Quantifier:o(a.element,a,"element");break;default:throw new Error(`Unexpected node type "${a.type}"`)}return x?.(C,t),p}o(e.node,e.parent,e.key,e.container)}function Mt(e,t){"parent"in t&&(e.parent=t)}var l={Alternative:"Alternative",Assertion:"Assertion",Backreference:"Backreference",CapturingGroup:"CapturingGroup",Character:"Character",CharacterClass:"CharacterClass",CharacterClassIntersection:"CharacterClassIntersection",CharacterClassRange:"CharacterClassRange",CharacterSet:"CharacterSet",Directive:"Directive",Flags:"Flags",Group:"Group",Pattern:"Pattern",Quantifier:"Quantifier",Regex:"Regex",Subroutine:"Subroutine",VariableLengthCharacterSet:"VariableLengthCharacterSet",Recursion:"Recursion"},Oe={AnyGroup:"AnyGroup",AnyNode:"AnyNode"};function Re(e){let{type:t}=e,r=[Oe.AnyNode];return(I(e)||t===l.CapturingGroup||t===l.Group)&&r.push(Oe.AnyGroup),r.push(t),r}var E={line_end:"line_end",line_start:"line_start",lookahead:"lookahead",lookbehind:"lookbehind",search_start:"search_start",string_end:"string_end",string_end_newline:"string_end_newline",string_start:"string_start",word_boundary:"word_boundary"},y=A,W=H,Q={grapheme:"grapheme",newline:"newline"};function q({tokens:e,flags:t},r){let s={skipBackrefValidation:!1,skipPropertyNameValidation:!1,verbose:!1,...r},n={capturingGroups:[],current:0,hasNumberedRef:!1,namedGroupsByName:new Map,parent:null,skipBackrefValidation:s.skipBackrefValidation,skipPropertyNameValidation:s.skipPropertyNameValidation,subroutines:[],token:null,tokens:e,verbose:s.verbose,walk:o};function o(C,d){let w=e[n.current];switch(n.parent=C,n.token=w,n.current++,w.type){case h.Alternator:return v();case h.Assertion:return Me(w);case h.Backreference:return Bt(n);case h.Character:return Be(w.value);case h.CharacterClassHyphen:return Vt(n,d);case h.CharacterClassOpen:return jt(n,d);case h.CharacterSet:return Ht(n);case h.Directive:return Zt(w);case h.GroupOpen:return Kt(n,d);case h.Quantifier:return Qt(n);case h.Subroutine:return Wt(n);case h.VariableLengthCharacterSet:return nr(w.kind);default:throw new Error(`Unexpected token type "${w.type}"`)}}let a=tr(Yt(),Jt(t)),i=a.pattern.alternatives[0];for(;n.current<e.length;){let C=o(i,{});C.type===l.Alternative?(a.pattern.alternatives.push(C),i=C):i.elements.push(C)}let{capturingGroups:u,hasNumberedRef:c,namedGroupsByName:p,subroutines:g}=n;if(c&&p.size)throw new Error("Numbered backref/subroutine not allowed when using named capture");for(let{ref:C}of g)if(typeof C=="number"){if(C>u.length)throw new Error("Subroutine uses a group number that's not defined")}else if(p.has(C)){if(p.get(C).length>1)throw new Error(f`Subroutine uses a duplicate group name "\g<${C}>"`)}else throw new Error(f`Subroutine uses a group name that's not defined "\g<${C}>"`);return G({node:a},null,{AnyNode({node:C,parent:d}){C.parent=d}}),a}function Bt(e){let{raw:t}=e.token,r=/^\\k[<']/.test(t),s=r?t.slice(3,-1):t.slice(1),n=(o,a=!1)=>{let i=e.capturingGroups.length,u=!1;if(o>i)if(e.skipBackrefValidation)u=!0;else throw new Error(`Not enough capturing groups defined to the left "${t}"`);return e.hasNumberedRef=!0,te(a?i+1-o:o,{orphan:u})};if(r){let o=/^(?<sign>-?)0*(?<num>[1-9]\d*)$/.exec(s);if(o)return n(+o.groups.num,!!o.groups.sign);if(/[-+]/.test(s))throw new Error(`Invalid backref name "${t}"`);if(!e.namedGroupsByName.has(s))throw new Error(`Group name not defined to the left "${t}"`);return te(s)}return n(+s)}function Vt(e,t){let{parent:r,tokens:s,walk:n}=e,o=r.elements.at(-1),a=s[e.current];if(o&&o.type!==l.CharacterClass&&o.type!==l.CharacterClassRange&&a&&a.type!==h.CharacterClassOpen&&a.type!==h.CharacterClassClose&&a.type!==h.CharacterClassIntersector){let i=n(r,t);if(o.type===l.Character&&i.type===l.Character)return r.elements.pop(),Xt(o,i);throw new Error("Invalid character class range")}return Be(45)}function jt(e,t){let{token:r,tokens:s,verbose:n,walk:o}=e,a=ge({negate:r.negate}),i=a.elements[0],u=Ue(s[e.current]);for(;u.type!==h.CharacterClassClose;){if(u.type===h.CharacterClassIntersector)i.classes.push(ge({negate:!1,baseOnly:!0})),e.current++;else{let c=i.classes.at(-1);c.elements.push(o(c,t))}u=Ue(s[e.current])}if(n||ir(i),i.classes.length===1){let c=i.classes[0];c.negate=a.negate!==c.negate,a=c}return e.current++,a}function Ht({token:e,skipPropertyNameValidation:t}){let{kind:r,negate:s,value:n}=e;if(r===A.property){let a=j(n);if(Se.has(a))r=A.posix,n=a;else return D(n,{negate:s,skipPropertyNameValidation:t})}let o={type:l.CharacterSet,kind:N(y[r],`Unexpected character set kind "${r}"`)};return(r===A.digit||r===A.hex||r===A.posix||r===A.space||r===A.word)&&(o.negate=s,r===A.posix&&(o.value=n)),o}function Kt(e,t){let{token:r,tokens:s,capturingGroups:n,namedGroupsByName:o,verbose:a,walk:i}=e,u=qt(r);u.type===l.CapturingGroup&&(n.push(u),u.name&&T(o,u.name,[]).push(u));let c=De(s[e.current]);for(;c.type!==h.GroupClose;){if(c.type===h.Alternator)u.alternatives.push(v()),e.current++;else{let p=u.alternatives.at(-1);p.elements.push(i(p,t))}c=De(s[e.current])}return a||(u=ar(u)),e.current++,u}function Qt({token:e,parent:t}){let{min:r,max:s,greedy:n,possessive:o}=e,a=t.elements.at(-1);if(!a||a.type===l.Assertion||a.type===l.Directive)throw new Error("Quantifier requires a repeatable token");let i=er(a,r,s,n,o);return t.elements.pop(),i}function Wt(e){let{token:t,capturingGroups:r,subroutines:s}=e,n=t.raw.slice(3,-1),o=/^(?<sign>[-+]?)0*(?<num>[1-9]\d*)$/.exec(n);if(o){let i=+o.groups.num,u=r.length;if(e.hasNumberedRef=!0,n={"":i,"+":u+i,"-":u+1-i}[o.groups.sign],n<1)throw new Error("Invalid subroutine number")}else n==="0"&&(n=0);let a=rr(n);return s.push(a),a}function v(){return{type:l.Alternative,elements:[]}}function Me({type:e,kind:t,negate:r}){if(e===h.GroupOpen)return z({behind:t===S.lookbehind,negate:r});let s=N({"^":E.line_start,$:E.line_end,"\\A":E.string_start,"\\b":E.word_boundary,"\\B":E.word_boundary,"\\G":E.search_start,"\\z":E.string_end,"\\Z":E.string_end_newline}[t],`Unexpected assertion kind "${t}"`),n={type:l.Assertion,kind:s};return s===E.word_boundary&&(n.negate=t===f`\B`),n}function te(e,{orphan:t}={}){return{type:l.Backreference,...t&&{orphan:t},ref:e}}function qt(e){let{kind:t,number:r,name:s,flags:n}=e;switch(t){case S.atomic:return $({atomic:!0});case S.capturing:return he(r,s);case S.group:return $({flags:n});case S.lookahead:case S.lookbehind:return Me(e);default:throw new Error(`Unexpected group kind "${t}"`)}}function he(e,t){let r=t!==void 0;if(r&&!or(t))throw new Error(`Group name "${t}" invalid in Oniguruma`);return{type:l.CapturingGroup,number:e,...r&&{name:t},alternatives:[v()]}}function Be(e){return{type:l.Character,value:e}}function ge(e){let t={baseOnly:!1,negate:!1,...e};return{type:l.CharacterClass,negate:t.negate,elements:t.baseOnly?[]:[zt()]}}function zt(){return{type:l.CharacterClassIntersection,classes:[ge({negate:!1,baseOnly:!0})]}}function Xt(e,t){if(t.value<e.value)throw new Error("Character class range out of order");return{type:l.CharacterClassRange,min:e,max:t}}function Zt({kind:e,flags:t}){let r={type:l.Directive,kind:N(W[e],`Unexpected directive kind "${e}"`)};return e===H.flags&&(r.flags=t),r}function Jt({ignoreCase:e,dotAll:t,extended:r}){return{type:l.Flags,ignoreCase:e,dotAll:t,extended:r}}function $({atomic:e,flags:t}={}){return{type:l.Group,...e&&{atomic:e},...t&&{flags:t},alternatives:[v()]}}function z({behind:e=!1,negate:t=!1}={}){return{type:l.Assertion,kind:e?E.lookbehind:E.lookahead,negate:t,alternatives:[v()]}}function Yt(){return{type:l.Pattern,alternatives:[v()]}}function er(e,t,r,s,n){if(r<t)throw new Error("Quantifier range out of order");return{type:l.Quantifier,min:t,max:r,greedy:s,possessive:n,element:e}}function tr(e,t){return{type:l.Regex,pattern:e,flags:t}}function rr(e){return{type:l.Subroutine,ref:e}}function D(e,t){let r={negate:!1,skipPropertyNameValidation:!1,...t};return{type:l.CharacterSet,kind:y.property,value:r.skipPropertyNameValidation?e:sr(e),negate:r.negate}}function nr(e){return{type:l.VariableLengthCharacterSet,kind:N({"\\R":Q.newline,"\\X":Q.grapheme}[e],`Unexpected varcharset kind "${e}"`)}}function sr(e){let t=j(e);if(le.has(t))throw new Error(f`Unicode property "\p{${e}}" unsupported in Oniguruma`);let r=ue.get(t);return r||e.trim().replace(/\s+/g,"_").replace(/[A-Z][a-z]+(?=[A-Z])/g,"$&_").replace(/[A-Za-z]+/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function ar(e){let t=e.alternatives[0],r=t.elements[0];return e.type===l.Group&&e.alternatives.length===1&&t.elements.length===1&&r.type===l.Group&&!(e.atomic&&r.flags)&&!(e.flags&&(r.atomic||r.flags))?(e.atomic?r.atomic=!0:e.flags&&(r.flags=e.flags),r):e}function I({type:e,kind:t}){return e===l.Assertion&&(t===E.lookahead||t===E.lookbehind)}function or(e){return!/^(?:[-\d]|$)/.test(e)}function ir(e){for(let t=0;t<e.classes.length;t++){let r=e.classes[t],s=r.elements[0];r.elements.length===1&&s.type===l.CharacterClass&&(e.classes[t]=s,s.negate=r.negate!==s.negate)}}function Ue(e){return N(e,"Unclosed character class")}function De(e){return N(e,"Unclosed group")}var de=String.raw,Ve=de`(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})`,je=de`\u{E0061}-\u{E007A}`,He=()=>new RegExp(de`[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[${je}]{2}[\u{E0030}-\u{E0039}${je}]{1,3}\u{E007F}|${Ve}(?:\u200D${Ve})*`,"gu");function Qe(e,t){let r={accuracy:"default",avoidSubclass:!1,bestEffortTarget:"ESNext",...t},s=r.avoidSubclass?null:ur(e,r.accuracy),n={accuracy:r.accuracy,flagDirectivesByAlt:new Map,minTargetEs2024:V(r.bestEffortTarget,"ES2024"),subroutineRefMap:new Map,supportedGNodes:new Set};G({node:e},n,We);let o={dotAll:e.flags.dotAll,ignoreCase:e.flags.ignoreCase},a={currentFlags:o,prevFlags:null,globalFlags:o,groupOriginByCopy:new Map,groupsWithDuplicateNamesToRemove:new Set,multiplexCapturesToLeftByRef:new Map,namedGroupsInScopeByAlt:new Map,openDirectCaptures:new Set,openSubroutineRefs:new Set,reffedNodesByBackreference:new Map,subroutineRefMap:n.subroutineRefMap};G({node:e},a,qe);let i={groupsWithDuplicateNamesToRemove:a.groupsWithDuplicateNamesToRemove,highestOrphanBackref:0,numCapturesToLeft:0,reffedNodesByBackreference:a.reffedNodesByBackreference};return G({node:e},i,cr),s&&(e._strategy=s),e}var We={Alternative:{enter({node:e,parent:t,key:r},{flagDirectivesByAlt:s}){let n=e.elements.filter(o=>o.kind===W.flags);for(let o=r+1;o<t.alternatives.length;o++){let a=t.alternatives[o];T(s,a,[]).push(...n)}},exit({node:e},{flagDirectivesByAlt:t}){if(t.get(e)?.length){let r=Je(t.get(e));if(r){let s=X($({flags:r}),e.elements);s.parent=e,e.elements=[s]}}}},Assertion({node:e,ast:t,remove:r,replaceWith:s},{accuracy:n,supportedGNodes:o}){let{kind:a,negate:i}=e;if(a===E.line_end)s(P(f`(?=\z|\n)`));else if(a===E.line_start)s(P(f`(?<=\A|\n)`));else if(a===E.search_start){if(!o.has(e)&&n!=="loose")throw new Error(f`Uses "\G" in a way that's unsupported`);t.flags.sticky=!0,r()}else if(a===E.string_end_newline)s(P(f`(?=\n?\z)`));else if(a===E.word_boundary){let u=f`[\p{L}\p{N}\p{Pc}]`,c=`(?:(?<=${u})(?!${u})|(?<!${u})(?=${u}))`,p=`(?:(?<=${u})(?=${u})|(?<!${u})(?!${u}))`;s(P(i?p:c))}},CapturingGroup({node:e},{subroutineRefMap:t}){let{name:r,number:s}=e;if(r&&!fr(r))throw new Error(`Group name "${r}" invalid in JS`);t.set(r??s,e)},CharacterSet({node:e,replaceWith:t},{accuracy:r,minTargetEs2024:s}){let{kind:n,negate:o,value:a}=e;if(n===y.any)t(D("Any"));else if(n===y.hex)t(D("AHex",{negate:o}));else if(n===y.non_newline)t(P(f`[^\n]`));else if(n===y.posix)if(!s&&(a==="graph"||a==="print")){if(r==="strict")throw new Error(`POSIX class "${a}" requires min target ES2024 or non-strict accuracy`);let i={graph:"!-~",print:" -~"}[a];o&&(i=`\0-${_(i.codePointAt(0)-1)}${_(i.codePointAt(2)+1)}-\u{10FFFF}`),t(P(`[${i}]`))}else{let i=P(Y.get(a));i.negate=o,t(i)}else if(n===y.property)ce.has(a)||(e.key="sc");else if(n===y.space){let i=P(`[ | ||
\v\f\r]`);i.negate=o,t(i)}},Directive(e,t){let{node:r,parent:s,ast:n,remove:o,replaceWith:a,removeAllPrevSiblings:i,removeAllNextSiblings:u}=e,{kind:c,flags:p}=r;if(c===W.flags)if(!p.enable&&!p.disable)o();else{let g=X($({flags:p}),u());a(g),et(g,e,t,We)}else if(c===W.keep){if(s.parent!==n.pattern||n.pattern.alternatives.length>1)throw new Error(f`Uses "\K" in a way that's unsupported`);a(X(z({behind:!0}),i()))}},Flags({node:e,parent:t}){delete e.extended,Object.assign(e,{global:!1,hasIndices:!1,multiline:!1,sticky:e.sticky??!1}),t.options={disable:{x:!0,n:!0},force:{v:!0}}},Group({node:e}){if(!e.flags)return;let{enable:t,disable:r}=e.flags;t?.extended&&delete t.extended,r?.extended&&delete r.extended,t?.dotAll&&r?.dotAll&&delete t.dotAll,t?.ignoreCase&&r?.ignoreCase&&delete t.ignoreCase,t&&!Object.keys(t).length&&delete e.flags.enable,r&&!Object.keys(r).length&&delete e.flags.disable,!e.flags.enable&&!e.flags.disable&&delete e.flags},Pattern({node:e},{accuracy:t,supportedGNodes:r}){let s=[],n=!1,o=!1;for(let a of e.alternatives){let i=Ye(a.elements);i?(n=!0,Array.isArray(i)?s.push(...i):s.push(i)):o=!0}if(n&&o&&t!=="loose")throw new Error(f`Uses "\G" in a way that's unsupported`);s.forEach(a=>r.add(a))},Quantifier({node:e}){if(e.element.type===l.Quantifier){let t=X($(),[e.element]);t.parent=e,e.element=t}},VariableLengthCharacterSet({node:e,replaceWith:t},{accuracy:r,minTargetEs2024:s}){let{kind:n}=e;if(n===Q.newline)t(P(`(?>\r | ||
`.replace(/\s+/g,""),"gsu");function K(e,t=""){if(typeof e!="string")throw new Error("String expected as pattern");if(!/^[imx]*$/.test(t))throw new Error(`Flags "${t}" unsupported in Oniguruma`);let r=[t.includes("x")],s={getCurrentModX:()=>r.at(-1),numOpenGroups:0,popModX(){r.pop()},pushModX(c){r.push(c)},replaceCurrentModX(c){r[r.length-1]=c}},n=[],o;for(Y.lastIndex=0;o=Y.exec(e);){let c=vt(s,e,o[0],Y.lastIndex);c.tokens?n.push(...c.tokens):c.token&&n.push(c.token),c.lastIndex!==void 0&&(Y.lastIndex=c.lastIndex)}let a=[],i=0;n.forEach(c=>{c.type===h.GroupOpen&&(c.kind===S.capturing?(i++,c.number=i):c.raw==="("&&a.push(c))}),i||a.forEach((c,p)=>{c.kind=S.capturing,c.number=p+1});let u=i||a.length;return n=n.map(c=>c.type===h.EscapedNumber?Mt(c,u):c).flat(),{tokens:n,flags:{ignoreCase:t.includes("i"),dotAll:t.includes("m"),extended:t.includes("x")}}}function vt(e,t,r,s){let[n,o,a]=r;if(n==="["){let i=Pt(t,r,s);return{tokens:i.tokens,lastIndex:i.lastIndex}}if(n==="\\"){if("AbBGzZ".includes(o))return{token:m(h.Assertion,r,{kind:r})};if(/^\\g[<']/.test(r)){if(!/^\\g(?:<[^>]+>|'[^']+')$/.test(r))throw new Error(`Invalid group name "${r}"`);return{token:m(h.Subroutine,r)}}if(/^\\k[<']/.test(r)){if(!/^\\k(?:<[^>]+>|'[^']+')$/.test(r))throw new Error(`Invalid group name "${r}"`);return{token:m(h.Backreference,r)}}if(o==="K")return{token:m(h.Directive,r,{kind:H.keep})};if(o==="N")return{token:m(h.CharacterSet,r,{kind:_.non_newline})};if(o==="O")return{token:m(h.CharacterSet,r,{kind:_.any})};if("RX".includes(o))return{token:m(h.VariableLengthCharacterSet,r,{kind:r})};let i=Le(r,{inCharClass:!1});return Array.isArray(i)?{tokens:i}:{token:i}}if(n==="("){if(a==="#"){if(t[s]!==")")throw new Error('Unclosed comment group "(?#"');return{lastIndex:s+1}}if("-imx".includes(a))return{token:Lt(r,e)};if(e.pushModX(e.getCurrentModX()),e.numOpenGroups++,r==="("||r==="(?:")return{token:m(h.GroupOpen,r,{kind:S.group})};if(r==="(?>")return{token:m(h.GroupOpen,r,{kind:S.atomic})};if(r==="(?="||r==="(?!"||r==="(?<="||r==="(?<!")return{token:m(h.GroupOpen,r,{kind:a==="<"?S.lookbehind:S.lookahead,negate:r.endsWith("!")})};if(a==="<"||a==="'")return{token:m(h.GroupOpen,r,{kind:S.capturing,name:r.slice(3,-1)})};throw a==="("?new Error(`Unsupported conditional "${r}"`):a==="~"?new Error(`Unsupported absence operator "${r}"`):r==="(?"?new Error("Invalid group"):new Error(`Unexpected group "${r}"`)}if(r===")"){if(e.popModX(),e.numOpenGroups--,e.numOpenGroups<0)throw new Error('Unmatched ")"');return{token:m(h.GroupClose,r)}}if(r==="#"&&e.getCurrentModX()){let i=t.indexOf(` | ||
`,s);return{lastIndex:i===-1?t.length:i}}if(/^\s$/.test(r)&&e.getCurrentModX()){let i=/\s+/y;return i.lastIndex=s,{lastIndex:i.exec(t)?i.lastIndex:s}}return r==="."?{token:m(h.CharacterSet,r,{kind:_.dot})}:r==="^"||r==="$"?{token:m(h.Assertion,r,{kind:r})}:r==="|"?{token:m(h.Alternator,r)}:Te.test(r)?{token:Rt(r)}:(Re(r),{token:m(h.Character,r,{value:r.codePointAt(0)})})}function Pt(e,t,r){Fe(t);let s=[m(h.CharacterClassOpen,t,{negate:t[1]==="^"})],n=1,o;for(fe.lastIndex=r;o=fe.exec(e);){let a=o[0];if(a[0]==="["&&a[1]!==":")Fe(a),n++,s.push(m(h.CharacterClassOpen,a,{negate:a[1]==="^"}));else if(a==="]"){if(n--,s.push(m(h.CharacterClassClose,a)),!n)break}else{let i=Gt(a);Array.isArray(i)?s.push(...i):s.push(i)}}return{tokens:s,lastIndex:fe.lastIndex||e.length}}function Gt(e){if(e[0]==="\\")return Le(e,{inCharClass:!0});if(e[0]==="["){let t=/\[:(?<negate>\^?)(?<name>[a-z]+):\]/.exec(e);if(!t||!J.get(t.groups.name))throw new Error(`Invalid POSIX class "${e}"`);return m(h.CharacterSet,e,{kind:_.posix,negate:!!t.groups.negate,value:t.groups.name})}return e==="-"?m(h.CharacterClassHyphen,e):e==="&&"?m(h.CharacterClassIntersector,e):(Re(e),m(h.Character,e,{value:e.codePointAt(0)}))}function Le(e,{inCharClass:t}){let r=e[1];if(r==="c"||r==="C")return Tt(e);if("dDhHsSwW".includes(r))return Ot(e);if(/^\\[pP]\{/.test(e)){if(e.length===3)throw new Error("Incomplete or invalid Unicode property");return Ut(e)}if(/^\\x[89A-Fa-f]\p{AHex}/u.test(e))try{let s=e.split(/\\x/).slice(1).map(i=>parseInt(i,16)),n=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}).decode(new Uint8Array(s)),o=new TextEncoder;return[...n].map(i=>{let u=[...o.encode(i)].map(c=>`\\x${c.toString(16)}`).join("");return m(h.Character,u,{value:i.codePointAt(0)})})}catch{throw new Error(`Too short or invalid multibyte code "${e}"`)}if(r==="u"||r==="x")return m(h.Character,e,{value:Dt(e)});if(xe.has(r))return m(h.Character,e,{value:xe.get(r)});if(/\d/.test(r))return m(h.EscapedNumber,e,{inCharClass:t});if(e==="\\")throw new Error(f`Incomplete escape "\"`);if(r==="M")throw new Error(`Unsupported meta "${e}"`);if([...e].length===2)return m(h.Character,e,{value:e.codePointAt(1)});throw new Error(`Unexpected escape "${e}"`)}function m(e,t,r){return{type:e,raw:t,...r}}function Tt(e){let t=e[1]==="c"?e[2]:e[3];if(!t||!/[A-Za-z]/.test(t))throw new Error(`Unsupported control character "${e}"`);return m(h.Character,e,{value:t.toUpperCase().codePointAt(0)-64})}function Lt(e,t){let{on:r,off:s}=/^\(\?(?<on>[imx]*)(?:-(?<off>[imx\-]*))?/.exec(e).groups;s??="";let n=(t.getCurrentModX()||r.includes("x"))&&!s.includes("x"),o=be(r),a=be(s),i={};if(o&&(i.enable=o),a&&(i.disable=a),e.endsWith(")"))return t.replaceCurrentModX(n),m(h.Directive,e,{kind:H.flags,flags:i});if(e.endsWith(":")){t.pushModX(n),t.numOpenGroups++;let u=m(h.GroupOpen,e,{kind:S.group});return(o||a)&&(u.flags=i),u}throw new Error(`Unexpected flag modifier "${e}"`)}function Rt(e){let t={};if(e[0]==="{"){let{min:r,max:s}=/^\{(?<min>\d*)(?:,(?<max>\d*))?/.exec(e).groups,n=1e5;if(+r>n||+s>n)throw new Error("Quantifier value unsupported in Oniguruma");t.min=+r,t.max=s===void 0?+r:s===""?1/0:+s,t.greedy=!e.endsWith("?"),t.possessive=!1}else t.min=e[0]==="+"?1:0,t.max=e[0]==="?"?1:1/0,t.greedy=e[1]!=="?",t.possessive=e[1]==="+";return m(h.Quantifier,e,t)}function Ot(e){let t=e[1].toLowerCase();return m(h.CharacterSet,e,{kind:{d:_.digit,h:_.hex,s:_.space,w:_.word}[t],negate:e[1]!==t})}function Ut(e){let{p:t,neg:r,value:s}=/^\\(?<p>[pP])\{(?<neg>\^?)(?<value>[ \w]+)/.exec(e).groups,n=t==="P"&&!r||t==="p"&&!!r;return m(h.CharacterSet,e,{kind:_.property,negate:n,value:s})}function be(e){let t={};return e.includes("i")&&(t.ignoreCase=!0),e.includes("m")&&(t.dotAll=!0),e.includes("x")&&(t.extended=!0),Object.keys(t).length?t:null}function Dt(e){if(/^(?:\\u(?!\p{AHex}{4})|\\x(?!\p{AHex}{1,2}|\{\p{AHex}{1,8}\}))/u.test(e))throw new Error(`Incomplete or invalid escape "${e}"`);let t=e[2]==="{"?/^\\x\{\s*(?<hex>\p{AHex}+)/u.exec(e).groups.hex:e.slice(2),r=parseInt(t,16);if(r>127&&/^\\x\p{AHex}/u.test(e))throw new Error(f`\xNN above 7F unsupported in Oniguruma "${e}"`);if(r>1310719)throw new Error(`Invalid out of range "${e}"`);if(r>1114111)throw new Error(`Invalid out of range in JS "${e}"`);return r}function Mt(e,t){let{raw:r,inCharClass:s}=e,n=r.slice(1);if(!s&&(n!=="0"&&n.length===1||n[0]!=="0"&&+n<=t))return[m(h.Backreference,r)];let o=[],a=n.match(/^[0-7]+|\d/g);for(let i=0;i<a.length;i++){let u=a[i],c=i===0&&u!=="8"&&u!=="9"?parseInt(u,8):u.codePointAt(0);o.push(m(h.Character,(i===0?"\\":"")+u,{value:c}))}return o}function Fe(e){if(e.endsWith("]"))throw new Error(`Empty character class "${e}" unsupported in Oniguruma`)}function Re(e){if([...e].length!==1)throw new Error(`Expected "${e}" to be a single code point`)}function P(e,t,r){let s=e.node;for(;s.parent;)s=s.parent;function n(a,i){for(let u=0;u<a.length;u++){let c=o(a[u],i,u,a);u=Math.max(-1,u+c)}}function o(a,i=null,u=null,c=null){let p=0,g=!1,C={node:a,parent:i,key:u,container:c,ast:s,remove(){F(c,"Container expected").splice(Math.max(0,u+p),1),p-=1},removeAllNextSiblings(){return F(c,"Container expected").splice(u+1)},removeAllPrevSiblings(){let G=u+p;return p-=G,F(c,"Container expected").splice(0,Math.max(0,G))},replaceWith(G){Bt(G,i),c?c[Math.max(0,u+p)]=G:i[u]=G},skip(){g=!0}},d=Oe(a).find(G=>!!r[G]),w=d&&r[d],k=typeof w=="function"?w:w?.enter,b=w?.exit;if(k?.(C,t),!g)switch(a.type){case l.Regex:o(a.pattern,a,"pattern"),o(a.flags,a,"flags");break;case l.Alternative:case l.CharacterClass:n(a.elements,a);break;case l.Assertion:N(a)&&n(a.alternatives,a);break;case l.Backreference:case l.Character:case l.CharacterSet:case l.Directive:case l.Flags:case l.Recursion:case l.Subroutine:case l.VariableLengthCharacterSet:break;case l.CapturingGroup:case l.Group:case l.Pattern:n(a.alternatives,a);break;case l.CharacterClassIntersection:n(a.classes,a);break;case l.CharacterClassRange:o(a.min,a,"min"),o(a.max,a,"max");break;case l.Quantifier:o(a.element,a,"element");break;default:throw new Error(`Unexpected node type "${a.type}"`)}return b?.(C,t),p}o(e.node,e.parent,e.key,e.container)}function Bt(e,t){"parent"in t&&(e.parent=t)}var l={Alternative:"Alternative",Assertion:"Assertion",Backreference:"Backreference",CapturingGroup:"CapturingGroup",Character:"Character",CharacterClass:"CharacterClass",CharacterClassIntersection:"CharacterClassIntersection",CharacterClassRange:"CharacterClassRange",CharacterSet:"CharacterSet",Directive:"Directive",Flags:"Flags",Group:"Group",Pattern:"Pattern",Quantifier:"Quantifier",Regex:"Regex",Subroutine:"Subroutine",VariableLengthCharacterSet:"VariableLengthCharacterSet",Recursion:"Recursion"},Ue={AnyGroup:"AnyGroup",AnyNode:"AnyNode"};function Oe(e){let{type:t}=e,r=[Ue.AnyNode];return(N(e)||t===l.CapturingGroup||t===l.Group)&&r.push(Ue.AnyGroup),r.push(t),r}var E={line_end:"line_end",line_start:"line_start",lookahead:"lookahead",lookbehind:"lookbehind",search_start:"search_start",string_end:"string_end",string_end_newline:"string_end_newline",string_start:"string_start",word_boundary:"word_boundary"},y=_,W=H,Q={grapheme:"grapheme",newline:"newline"};function q({tokens:e,flags:t},r){let s={skipBackrefValidation:!1,skipPropertyNameValidation:!1,verbose:!1,...r},n={capturingGroups:[],current:0,hasNumberedRef:!1,namedGroupsByName:new Map,parent:null,skipBackrefValidation:s.skipBackrefValidation,skipPropertyNameValidation:s.skipPropertyNameValidation,subroutines:[],token:null,tokens:e,verbose:s.verbose,walk:o};function o(C,d){let w=e[n.current];switch(n.parent=C,n.token=w,n.current++,w.type){case h.Alternator:return $();case h.Assertion:return Be(w);case h.Backreference:return Vt(n);case h.Character:return Ve(w.value);case h.CharacterClassHyphen:return jt(n,d);case h.CharacterClassOpen:return Ht(n,d);case h.CharacterSet:return Kt(n);case h.Directive:return Jt(w);case h.GroupOpen:return Qt(n,d);case h.Quantifier:return Wt(n);case h.Subroutine:return qt(n);case h.VariableLengthCharacterSet:return sr(w.kind);default:throw new Error(`Unexpected token type "${w.type}"`)}}let a=rr(er(),Yt(t)),i=a.pattern.alternatives[0];for(;n.current<e.length;){let C=o(i,{});C.type===l.Alternative?(a.pattern.alternatives.push(C),i=C):i.elements.push(C)}let{capturingGroups:u,hasNumberedRef:c,namedGroupsByName:p,subroutines:g}=n;if(c&&p.size)throw new Error("Numbered backref/subroutine not allowed when using named capture");for(let{ref:C}of g)if(typeof C=="number"){if(C>u.length)throw new Error("Subroutine uses a group number that's not defined")}else if(p.has(C)){if(p.get(C).length>1)throw new Error(f`Subroutine uses a duplicate group name "\g<${C}>"`)}else throw new Error(f`Subroutine uses a group name that's not defined "\g<${C}>"`);return P({node:a},null,{AnyNode({node:C,parent:d}){C.parent=d}}),a}function Vt(e){let{raw:t}=e.token,r=/^\\k[<']/.test(t),s=r?t.slice(3,-1):t.slice(1),n=(o,a=!1)=>{let i=e.capturingGroups.length,u=!1;if(o>i)if(e.skipBackrefValidation)u=!0;else throw new Error(`Not enough capturing groups defined to the left "${t}"`);return e.hasNumberedRef=!0,ee(a?i+1-o:o,{orphan:u})};if(r){let o=/^(?<sign>-?)0*(?<num>[1-9]\d*)$/.exec(s);if(o)return n(+o.groups.num,!!o.groups.sign);if(/[-+]/.test(s))throw new Error(`Invalid backref name "${t}"`);if(!e.namedGroupsByName.has(s))throw new Error(`Group name not defined to the left "${t}"`);return ee(s)}return n(+s)}function jt(e,t){let{parent:r,tokens:s,walk:n}=e,o=r.elements.at(-1),a=s[e.current];if(o&&o.type!==l.CharacterClass&&o.type!==l.CharacterClassRange&&a&&a.type!==h.CharacterClassOpen&&a.type!==h.CharacterClassClose&&a.type!==h.CharacterClassIntersector){let i=n(r,t);if(o.type===l.Character&&i.type===l.Character)return r.elements.pop(),Zt(o,i);throw new Error("Invalid character class range")}return Ve(45)}function Ht(e,t){let{token:r,tokens:s,verbose:n,walk:o}=e,a=ge({negate:r.negate}),i=a.elements[0],u=De(s[e.current]);for(;u.type!==h.CharacterClassClose;){if(u.type===h.CharacterClassIntersector)i.classes.push(ge({negate:!1,baseOnly:!0})),e.current++;else{let c=i.classes.at(-1);c.elements.push(o(c,t))}u=De(s[e.current])}if(n||cr(i),i.classes.length===1){let c=i.classes[0];c.negate=a.negate!==c.negate,a=c}return e.current++,a}function Kt({token:e,skipPropertyNameValidation:t}){let{kind:r,negate:s,value:n}=e;if(r===_.property){let a=j(n);if(ye.has(a))r=_.posix,n=a;else return D(n,{negate:s,skipPropertyNameValidation:t})}let o={type:l.CharacterSet,kind:F(y[r],`Unexpected character set kind "${r}"`)};return(r===_.digit||r===_.hex||r===_.posix||r===_.space||r===_.word)&&(o.negate=s,r===_.posix&&(o.value=n)),o}function Qt(e,t){let{token:r,tokens:s,capturingGroups:n,namedGroupsByName:o,verbose:a,walk:i}=e,u=zt(r);u.type===l.CapturingGroup&&(n.push(u),u.name&&L(o,u.name,[]).push(u));let c=Me(s[e.current]);for(;c.type!==h.GroupClose;){if(c.type===h.Alternator)u.alternatives.push($()),e.current++;else{let p=u.alternatives.at(-1);p.elements.push(i(p,t))}c=Me(s[e.current])}return a||(u=or(u)),e.current++,u}function Wt({token:e,parent:t}){let{min:r,max:s,greedy:n,possessive:o}=e,a=t.elements.at(-1);if(!a||a.type===l.Assertion||a.type===l.Directive)throw new Error("Quantifier requires a repeatable token");let i=tr(a,r,s,n,o);return t.elements.pop(),i}function qt(e){let{token:t,capturingGroups:r,subroutines:s}=e,n=t.raw.slice(3,-1),o=/^(?<sign>[-+]?)0*(?<num>[1-9]\d*)$/.exec(n);if(o){let i=+o.groups.num,u=r.length;if(e.hasNumberedRef=!0,n={"":i,"+":u+i,"-":u+1-i}[o.groups.sign],n<1)throw new Error("Invalid subroutine number")}else n==="0"&&(n=0);let a=nr(n);return s.push(a),a}function $(){return{type:l.Alternative,elements:[]}}function Be({type:e,kind:t,negate:r}){if(e===h.GroupOpen)return te({behind:t===S.lookbehind,negate:r});let s=F({"^":E.line_start,$:E.line_end,"\\A":E.string_start,"\\b":E.word_boundary,"\\B":E.word_boundary,"\\G":E.search_start,"\\z":E.string_end,"\\Z":E.string_end_newline}[t],`Unexpected assertion kind "${t}"`),n={type:l.Assertion,kind:s};return s===E.word_boundary&&(n.negate=t===f`\B`),n}function ee(e,{orphan:t}={}){return{type:l.Backreference,...t&&{orphan:t},ref:e}}function zt(e){let{kind:t,number:r,name:s,flags:n}=e;switch(t){case S.atomic:return I({atomic:!0});case S.capturing:return he(r,s);case S.group:return I({flags:n});case S.lookahead:case S.lookbehind:return Be(e);default:throw new Error(`Unexpected group kind "${t}"`)}}function he(e,t){let r=t!==void 0;if(r&&!ir(t))throw new Error(`Group name "${t}" invalid in Oniguruma`);return{type:l.CapturingGroup,number:e,...r&&{name:t},alternatives:[$()]}}function Ve(e){return{type:l.Character,value:e}}function ge(e){let t={baseOnly:!1,negate:!1,...e};return{type:l.CharacterClass,negate:t.negate,elements:t.baseOnly?[]:[Xt()]}}function Xt(){return{type:l.CharacterClassIntersection,classes:[ge({negate:!1,baseOnly:!0})]}}function Zt(e,t){if(t.value<e.value)throw new Error("Character class range out of order");return{type:l.CharacterClassRange,min:e,max:t}}function Jt({kind:e,flags:t}){let r={type:l.Directive,kind:F(W[e],`Unexpected directive kind "${e}"`)};return e===H.flags&&(r.flags=t),r}function Yt({ignoreCase:e,dotAll:t,extended:r}){return{type:l.Flags,ignoreCase:e,dotAll:t,extended:r}}function I({atomic:e,flags:t}={}){return{type:l.Group,...e&&{atomic:e},...t&&{flags:t},alternatives:[$()]}}function te({behind:e=!1,negate:t=!1}={}){return{type:l.Assertion,kind:e?E.lookbehind:E.lookahead,negate:t,alternatives:[$()]}}function er(){return{type:l.Pattern,alternatives:[$()]}}function tr(e,t,r,s,n){if(r<t)throw new Error("Quantifier range out of order");return{type:l.Quantifier,min:t,max:r,greedy:s,possessive:n,element:e}}function rr(e,t){return{type:l.Regex,pattern:e,flags:t}}function nr(e){return{type:l.Subroutine,ref:e}}function D(e,t){let r={negate:!1,skipPropertyNameValidation:!1,...t};return{type:l.CharacterSet,kind:y.property,value:r.skipPropertyNameValidation?e:ar(e),negate:r.negate}}function sr(e){return{type:l.VariableLengthCharacterSet,kind:F({"\\R":Q.newline,"\\X":Q.grapheme}[e],`Unexpected varcharset kind "${e}"`)}}function ar(e){let t=j(e);if(le.has(t))throw new Error(f`Unicode property "\p{${e}}" unsupported in Oniguruma`);let r=ue.get(t);return r||e.trim().replace(/\s+/g,"_").replace(/[A-Z][a-z]+(?=[A-Z])/g,"$&_").replace(/[A-Za-z]+/g,s=>s[0].toUpperCase()+s.slice(1).toLowerCase())}function or(e){let t=e.alternatives[0],r=t.elements[0];return e.type===l.Group&&e.alternatives.length===1&&t.elements.length===1&&r.type===l.Group&&!(e.atomic&&r.flags)&&!(e.flags&&(r.atomic||r.flags))?(e.atomic?r.atomic=!0:e.flags&&(r.flags=e.flags),r):e}function N({type:e,kind:t}){return e===l.Assertion&&(t===E.lookahead||t===E.lookbehind)}function ir(e){return!/^(?:[-\d]|$)/.test(e)}function cr(e){for(let t=0;t<e.classes.length;t++){let r=e.classes[t],s=r.elements[0];r.elements.length===1&&s.type===l.CharacterClass&&(e.classes[t]=s,s.negate=r.negate!==s.negate)}}function De(e){return F(e,"Unclosed character class")}function Me(e){return F(e,"Unclosed group")}var de=String.raw,je=de`(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})`,He=de`\u{E0061}-\u{E007A}`,Ke=()=>new RegExp(de`[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[${He}]{2}[\u{E0030}-\u{E0039}${He}]{1,3}\u{E007F}|${je}(?:\u200D${je})*`,"gu");function We(e,t){let r={accuracy:"default",avoidSubclass:!1,bestEffortTarget:"ESNext",...t},s=r.avoidSubclass?null:lr(e,r.accuracy),n={accuracy:r.accuracy,flagDirectivesByAlt:new Map,minTargetEs2024:V(r.bestEffortTarget,"ES2024"),subroutineRefMap:new Map,supportedGNodes:new Set};P({node:e},n,qe);let o={dotAll:e.flags.dotAll,ignoreCase:e.flags.ignoreCase},a={currentFlags:o,prevFlags:null,globalFlags:o,groupOriginByCopy:new Map,groupsWithDuplicateNamesToRemove:new Set,multiplexCapturesToLeftByRef:new Map,namedGroupsInScopeByAlt:new Map,openDirectCaptures:new Set,openSubroutineRefs:new Set,reffedNodesByBackreference:new Map,subroutineRefMap:n.subroutineRefMap};P({node:e},a,ze);let i={groupsWithDuplicateNamesToRemove:a.groupsWithDuplicateNamesToRemove,highestOrphanBackref:0,numCapturesToLeft:0,reffedNodesByBackreference:a.reffedNodesByBackreference};return P({node:e},i,ur),s&&(e._strategy=s),e}var qe={Alternative:{enter({node:e,parent:t,key:r},{flagDirectivesByAlt:s}){let n=e.elements.filter(o=>o.kind===W.flags);for(let o=r+1;o<t.alternatives.length;o++){let a=t.alternatives[o];L(s,a,[]).push(...n)}},exit({node:e},{flagDirectivesByAlt:t}){if(t.get(e)?.length){let r=Ze(t.get(e));if(r){let s=z(I({flags:r}),e.elements);s.parent=e,e.elements=[s]}}}},Assertion({node:e,ast:t,remove:r,replaceWith:s},{accuracy:n,supportedGNodes:o}){let{kind:a,negate:i}=e;if(a===E.line_end)s(v(f`(?=\z|\n)`));else if(a===E.line_start)s(v(f`(?<=\A|\n)`));else if(a===E.search_start){if(!o.has(e)&&n!=="loose")throw new Error(f`Uses "\G" in a way that's unsupported`);t.flags.sticky=!0,r()}else if(a===E.string_end_newline)s(v(f`(?=\n?\z)`));else if(a===E.word_boundary){let u=f`[\p{L}\p{N}\p{Pc}]`,c=`(?:(?<=${u})(?!${u})|(?<!${u})(?=${u}))`,p=`(?:(?<=${u})(?=${u})|(?<!${u})(?!${u}))`;s(v(i?p:c))}},CapturingGroup({node:e},{subroutineRefMap:t}){let{name:r,number:s}=e;if(r&&!dr(r))throw new Error(`Group name "${r}" invalid in JS`);t.set(r??s,e)},CharacterSet({node:e,replaceWith:t},{accuracy:r,minTargetEs2024:s}){let{kind:n,negate:o,value:a}=e;if(n===y.any)t(D("Any"));else if(n===y.hex)t(D("AHex",{negate:o}));else if(n===y.non_newline)t(v(f`[^\n]`));else if(n===y.posix)if(!s&&(a==="graph"||a==="print")){if(r==="strict")throw new Error(`POSIX class "${a}" requires min target ES2024 or non-strict accuracy`);let i={graph:"!-~",print:" -~"}[a];o&&(i=`\0-${A(i.codePointAt(0)-1)}${A(i.codePointAt(2)+1)}-\u{10FFFF}`),t(v(`[${i}]`))}else{let i=v(J.get(a));i.negate=o,t(i)}else if(n===y.property)ce.has(a)||(e.key="sc");else if(n===y.space){let i=v(`[ | ||
\v\f\r]`);i.negate=o,t(i)}},Directive(e,t){let{node:r,parent:s,ast:n,remove:o,replaceWith:a,removeAllPrevSiblings:i,removeAllNextSiblings:u}=e,{kind:c,flags:p}=r;if(c===W.flags)if(!p.enable&&!p.disable)o();else{let g=z(I({flags:p}),u());a(g),tt(g,e,t,qe)}else if(c===W.keep){if(s.parent!==n.pattern||n.pattern.alternatives.length>1)throw new Error(f`Uses "\K" in a way that's unsupported`);a(z(te({behind:!0}),i()))}},Flags({node:e,parent:t}){delete e.extended,Object.assign(e,{global:!1,hasIndices:!1,multiline:!1,sticky:e.sticky??!1}),t.options={disable:{x:!0,n:!0},force:{v:!0}}},Group({node:e}){if(!e.flags)return;let{enable:t,disable:r}=e.flags;t?.extended&&delete t.extended,r?.extended&&delete r.extended,t?.dotAll&&r?.dotAll&&delete t.dotAll,t?.ignoreCase&&r?.ignoreCase&&delete t.ignoreCase,t&&!Object.keys(t).length&&delete e.flags.enable,r&&!Object.keys(r).length&&delete e.flags.disable,!e.flags.enable&&!e.flags.disable&&delete e.flags},Pattern({node:e},{accuracy:t,supportedGNodes:r}){let s=[],n=!1,o=!1;for(let a of e.alternatives){let i=Ye(a.elements);i?(n=!0,Array.isArray(i)?s.push(...i):s.push(i)):o=!0}if(n&&o&&t!=="loose")throw new Error(f`Uses "\G" in a way that's unsupported`);s.forEach(a=>r.add(a))},Quantifier({node:e}){if(e.element.type===l.Quantifier){let t=z(I(),[e.element]);t.parent=e,e.element=t}},VariableLengthCharacterSet({node:e,replaceWith:t},{accuracy:r,minTargetEs2024:s}){let{kind:n}=e;if(n===Q.newline)t(v(`(?>\r | ||
?|[ | ||
\v\f\x85\u2028\u2029])`));else if(n===Q.grapheme){if(r==="strict")throw new Error(f`Use of "\X" requires non-strict accuracy`);let o=s?f`\p{RGI_Emoji}`:He().source.replace(/\\u\{/g,f`\x{`);t(P(f`(?>\r\n|${o}|\P{M}\p{M}*)`,{skipPropertyNameValidation:!0}))}else throw new Error(`Unexpected varcharset kind "${n}"`)}},qe={Alternative({node:e},{namedGroupsInScopeByAlt:t}){let r=re(e);if(r){let s=t.get(r);s&&t.set(e,s)}},Backreference({node:e},{multiplexCapturesToLeftByRef:t,reffedNodesByBackreference:r}){let{orphan:s,ref:n}=e;s||r.set(e,[...t.get(n).map(({node:o})=>o)])},CapturingGroup:{enter({node:e,replaceWith:t,skip:r},{groupOriginByCopy:s,groupsWithDuplicateNamesToRemove:n,multiplexCapturesToLeftByRef:o,namedGroupsInScopeByAlt:a,openDirectCaptures:i,openSubroutineRefs:u}){let{name:c,number:p}=e,g=c??p,C=s.get(e),d=re(e);if(u.has(g))throw new Error("Unsupported indirect recursion");if(C?u.add(g):i.add(e),i.has(C)){t(Ke(g)),r();return}let w=T(o,g,[]);for(let k=0;k<w.length;k++){let x=w[k],F=x.node.name;if(C===x.node||C&&C===x.origin||e===x.origin||F&&!T(a,d,new Map).has(F)){w.splice(k,1);break}}if(w.push({node:e,origin:C}),c){let k=T(a,d,new Map);k.has(c)&&n.add(k.get(c)),k.set(c,e);let x=re(d);if(x)do T(a,x,new Map).set(c,e);while(x=re(x))}},exit({node:e},{groupOriginByCopy:t,openDirectCaptures:r,openSubroutineRefs:s}){let{name:n,number:o}=e;t.get(e)?s.delete(n??o):r.delete(e)}},Group:{enter({node:e},t){t.prevFlags=t.currentFlags,e.flags&&(t.currentFlags=U(t.currentFlags,e.flags))},exit(e,t){t.currentFlags=t.prevFlags}},Subroutine(e,t){let{node:r,replaceWith:s}=e,{ref:n}=r,o=t.subroutineRefMap.get(n),a=n===0,i=a?Ke(n):ze(o,t.groupOriginByCopy,null),u=i;if(!a){let c=Je(Xe(o,g=>g.type===l.Group&&!!g.flags)),p=c?U(t.globalFlags,c):t.globalFlags;lr(p,t.currentFlags)||(u=X($({flags:pr(p)}),[i]))}s(u),a||et(u,e,t,qe)}},cr={Backreference({node:e,replaceWith:t},r){if(e.orphan){r.highestOrphanBackref=Math.max(r.highestOrphanBackref,e.ref);return}let s=r.reffedNodesByBackreference.get(e),n=Xe(e,o=>o.type===l.CapturingGroup);if(s.length>1){let o=s.map(a=>R(v(),[n.some(i=>i.number===a.number)?z({negate:!0}):te(a.number)]));t(R($(),o))}else e.ref=s[0].number,n.some(o=>o.number===e.ref)&&t(z({negate:!0}))},CapturingGroup({node:e},t){e.number=++t.numCapturesToLeft,t.groupsWithDuplicateNamesToRemove.has(e)&&delete e.name},Regex:{exit({node:e},t){let r=Math.max(t.highestOrphanBackref-t.numCapturesToLeft,0);for(let s=0;s<r;s++){let n=he();e.pattern.alternatives.at(-1).elements.push(n)}}}};function R(e,t){return t.forEach(r=>r.parent=e),e[Ze(e)]=t,e}function ur(e,t){let r=e.pattern.alternatives,s=r[0].elements[0];if(r.length>1||!s)return null;let n=r[0].elements.length===1&&(s.type===l.CapturingGroup||s.type===l.Group)&&s.alternatives.length===1,o=n?s.alternatives[0]:r[0],a=n?o.elements[0]:s;if(!a)return null;if((a.type===l.CapturingGroup||a.type===l.Group)&&a.alternatives.length===2&&a.alternatives[0].elements.length===1&&a.alternatives[1].elements.length===1){let c=a.alternatives[0].elements[0],p=a.alternatives[1].elements[0];if(c.kind===E.line_start&&p.kind===E.search_start||c.kind===E.search_start&&p.kind===E.line_start)return c.kind===E.line_start?a.alternatives.pop():a.alternatives.shift(),{name:"line_or_search_start"}}function i(c){return I(c)&&c.negate&&c.alternatives.length===1&&c.alternatives[0].elements.length===1&&c.alternatives[0].elements[0].kind===E.search_start}if(i(a))return a.parent.elements.shift(),{name:"not_search_start"};let u=o.elements.findIndex(c=>i(c));if(u>-1&&o.elements.every(c=>c.type===l.Assertion))return o.elements.splice(u,1),{name:"not_search_start"};if(I(a)&&!a.negate&&a.alternatives.length>1){let c=[],p=!1;if(a.alternatives.forEach(g=>{g.elements.length===1&&g.elements[0].kind===E.search_start?p=!0:c.push(g)}),p&&c.length){let g=!0;if(c.some(C=>C.elements.some(d=>d.type===l.CapturingGroup||d.type===l.Group||d.type===l.Subroutine||I(d))))if(t==="loose")g=!1;else throw new Error(f`Uses "\G" in a way that's unsupported`);if(g){let C=R($(),[R(v(),[D("<<",{skipPropertyNameValidation:!0})]),...c,R(v(),[D(">>",{skipPropertyNameValidation:!0})])]);return C.parent=a.parent,a.parent.elements[0]=C,{name:"after_search_start_or_subpattern"}}}}return null}function lr(e,t){return e.dotAll===t.dotAll&&e.ignoreCase===t.ignoreCase}function ze(e,t,r,s){let n=Array.isArray(e)?[]:{};for(let[o,a]of Object.entries(e))o==="parent"?n.parent=Array.isArray(r)?s:r:a&&typeof a=="object"?n[o]=ze(a,t,n,r):(o==="type"&&a===l.CapturingGroup&&t.set(n,t.get(e)??e),n[o]=a);return n}function Ke(e){return{type:l.Recursion,ref:e}}function Xe(e,t){let r=[];for(;e=e.parent;)(!t||t(e))&&r.push(e);return r}function Ze(e){if(e.alternatives)return"alternatives";if(e.elements)return"elements";if(e.classes)return"classes";throw new Error("Accessor for child container unknown")}function Je(e){let t=["dotAll","ignoreCase"],r={enable:{},disable:{}};return e.forEach(({flags:s})=>{t.forEach(n=>{s.enable?.[n]&&(delete r.disable[n],r.enable[n]=!0),s.disable?.[n]&&(r.disable[n]=!0)})}),Object.keys(r.enable).length||delete r.enable,Object.keys(r.disable).length||delete r.disable,r.enable||r.disable?r:null}function pr({dotAll:e,ignoreCase:t}){let r={};return(e||t)&&(r.enable={},e&&(r.enable.dotAll=!0),t&&(r.enable.ignoreCase=!0)),(!e||!t)&&(r.disable={},!e&&(r.disable.dotAll=!0),!t&&(r.disable.ignoreCase=!0)),r}function Ye(e){if(!e.length)return null;let t=e[0];if(I(t)&&!t.negate&&t.alternatives.length===1&&t.alternatives[0].elements.length){let s=t.alternatives[0].elements,n=t.kind===E.lookahead?0:s.length-1;if(s[n].kind===E.search_start)return s[n]}let r=e.find(s=>s.kind===E.search_start?!0:s.type!==l.Directive&&s.type!==l.Assertion&&!(s.type===l.Quantifier&&!s.min));if(!r)return null;if(r.kind===E.search_start)return r;if(r.type===l.Group||r.type===l.CapturingGroup){let s=[];for(let n of r.alternatives){let o=Ye(n.elements);if(!o)return null;Array.isArray(o)?s.push(...o):s.push(o)}return s}return null}function re(e){for(;e=e.parent;)if(e.type===l.Alternative)return e;return null}function fr(e){return/^[$_\p{IDS}][$\u200C\u200D\p{IDC}]*$/u.test(e)}function P(e,{skipPropertyNameValidation:t}={}){let s=q(K(e),{skipPropertyNameValidation:t}).pattern.alternatives;return s.length>1||s[0].elements.length>1?R($(),s):s[0].elements[0]}function X(e,t){let r=Ze(e);return e[r][0].parent=e,t&&R(e[r][0],t),e}function et(e,{parent:t,key:r,container:s},n,o){G({node:e,parent:t,key:r,container:s},n,o)}function rt(e,t){let r=J(t),s=V(r.target,"ES2024"),n=V(r.target,"ESNext"),o=r.maxRecursionDepth;if(o!==null&&(!Number.isInteger(o)||o<2||o>100))throw new Error("Invalid maxRecursionDepth; use null or 2-100");let a=null,i=null;if(!n){let d=[e.flags.ignoreCase];G({node:e},{getCurrentModI:()=>d.at(-1),popModI(){d.pop()},pushModI(w){d.push(w)},setHasCasedChar(){d.at(-1)?a=!0:i=!0}},gr)}let u={dotAll:e.flags.dotAll,ignoreCase:!!((e.flags.ignoreCase||a)&&!i)},c=null,p={accuracy:r.accuracy,appliedGlobalFlags:u,captureFlagIMap:new Map,currentFlags:{dotAll:e.flags.dotAll,ignoreCase:e.flags.ignoreCase},groupNames:new Set,inCharClass:!1,lastNode:c,maxRecursionDepth:o,useAppliedIgnoreCase:!!(!n&&a&&i),useDuplicateNames:n,useFlagMods:n,useFlagV:s,usePostEs2018Properties:s,verbose:r.verbose};function g(d){switch(p.lastNode=c,c=d,d.type){case l.Regex:return{pattern:g(d.pattern),flags:g(d.flags),options:{...d.options}};case l.Alternative:return d.elements.map(g).join("");case l.Assertion:return Er(d,p,g);case l.Backreference:return wr(d,p);case l.CapturingGroup:return _r(d,p,g);case l.Character:return Ar(d,p);case l.CharacterClass:return kr(d,p,g);case l.CharacterClassIntersection:if(!p.useFlagV)throw new Error("Use of class intersection requires min target ES2024");return d.classes.map(g).join("&&");case l.CharacterClassRange:return Sr(d,p);case l.CharacterSet:return yr(d,p);case l.Flags:return xr(d,p);case l.Group:return br(d,p,g);case l.Pattern:return d.alternatives.map(g).join("|");case l.Quantifier:return g(d.element)+$r(d);case l.Recursion:return Fr(d,p);default:throw new Error(`Unexpected node type "${d.type}"`)}}let C=g(e);return s||(delete C.options.force.v,C.options.disable.v=!0,C.options.unicodeSetsPlugin=null),C}var gr={AnyGroup:{enter({node:e},t){let r=t.getCurrentModI();t.pushModI(e.flags?U({ignoreCase:r},e.flags).ignoreCase:r)},exit(e,t){t.popModI()}},Backreference(e,t){t.setHasCasedChar()},Character({node:e},t){Ce(_(e.value))&&t.setHasCasedChar()},CharacterClassRange({node:e,skip:t},r){t(),nt(e,{firstOnly:!0}).length&&r.setHasCasedChar()},CharacterSet({node:e},t){e.kind===y.property&&pe.has(e.value)&&t.setHasCasedChar()}},hr=new Set(["$","(",")","*","+",".","?","[","\\","]","^","{","|","}"]),dr=new Set(["-","\\","]","^"]),Cr=new Set(["(",")","-","/","[","\\","]","^","{","|","}","!","#","$","%","&","*","+",",",".",":",";","<","=",">","?","@","`","~"]),tt=new Map([[9,f`\t`],[10,f`\n`],[11,f`\v`],[12,f`\f`],[13,f`\r`],[8232,f`\u2028`],[8233,f`\u2029`],[65279,f`\uFEFF`]]),mr=/^\p{Cased}$/u;function Ce(e){return mr.test(e)}function Er(e,t,r){let{kind:s,negate:n,alternatives:o}=e;if(I(e))return`(?${`${s===E.lookahead?"":"<"}${n?"!":"="}`}${o.map(r).join("|")})`;if(s===E.string_end)return"$";if(s===E.string_start)return"^";throw new Error(`Unexpected assertion kind "${s}"`)}function wr({ref:e},t){if(typeof e!="number")throw new Error("Unexpected named backref in transformed AST");if(!t.useFlagMods&&t.accuracy==="strict"&&t.currentFlags.ignoreCase&&!t.captureFlagIMap.get(e))throw new Error("Use of case-insensitive backref to case-sensitive group requires target ESNext or non-strict accuracy");return"\\"+e}function _r({name:e,number:t,alternatives:r},s,n){return e&&(s.groupNames.has(e)?s.useDuplicateNames||(e=null):s.groupNames.add(e)),s.captureFlagIMap.set(t,s.currentFlags.ignoreCase),`(${e?`?<${e}>`:""}${r.map(n).join("|")})`}function Ar({value:e},t){let r=_(e),s=M(e,{isAfterBackref:t.lastNode.type===l.Backreference,inCharClass:t.inCharClass,useFlagV:t.useFlagV});if(s!==r)return s;if(t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase&&Ce(r)){let n=ie(r);return t.inCharClass?n.join(""):n.length>1?`[${n.join("")}]`:n[0]}return r}function kr({negate:e,parent:t,elements:r},s,n){if(!e&&(!s.useFlagV||!s.verbose)&&t.type===l.CharacterClass&&r[0].type!==l.CharacterClassIntersection||!s.verbose&&t.type===l.CharacterClassIntersection&&r.length===1&&r[0].type!==l.CharacterClassRange)return r.map(n).join("");if(!s.useFlagV&&t.type===l.CharacterClass)throw new Error("Use of nested character class requires min target ES2024");s.inCharClass=!0;let o=`[${e?"^":""}${r.map(n).join("")}]`;return s.inCharClass=!1,o}function Sr(e,t){let r=e.min.value,s=e.max.value,n={isAfterBackref:!1,inCharClass:!0,useFlagV:t.useFlagV},o=M(r,n),a=M(s,n),i="";if(t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase){let u=nt(e);Nr(u).forEach(p=>{i+=Array.isArray(p)?`${M(p[0],n)}-${M(p[1],n)}`:M(p,n)})}return`${o}-${a}${i}`}function yr({kind:e,negate:t,value:r,key:s},n){if(e===y.dot)return n.currentFlags.dotAll?n.appliedGlobalFlags.dotAll||n.useFlagMods?".":"[^]":f`[^\n]`;if(e===y.digit)return t?f`\D`:f`\d`;if(e===y.property){if(!n.usePostEs2018Properties&&ke.has(r))throw new Error(`Unicode property "${r}" unavailable in target ES2018`);if(n.useAppliedIgnoreCase&&n.currentFlags.ignoreCase&&pe.has(r))throw new Error(`Unicode property "${r}" can't be case-insensitive when other chars have specific case`);return`${t?f`\P`:f`\p`}{${s?`${s}=`:""}${r}}`}if(e===y.word)return t?f`\W`:f`\w`;throw new Error(`Unexpected character set kind "${e}"`)}function xr(e,t){return(t.appliedGlobalFlags.ignoreCase?"i":"")+(e.dotAll?"s":"")+(e.sticky?"y":"")}function br({atomic:e,flags:t,parent:r,alternatives:s},n,o){let a=n.currentFlags;t&&(n.currentFlags=U(a,t));let i=s.map(o).join("|"),u=!n.verbose&&s.length===1&&r.type!==l.Quantifier&&!e&&(!n.useFlagMods||!t)?i:`(?${Ir(e,t,n.useFlagMods)}${i})`;return n.currentFlags=a,u}function Fr({ref:e},t){let r=t.maxRecursionDepth;if(!r)throw new Error("Use of recursion disabled");if(t.accuracy==="strict")throw new Error("Use of recursion requires non-strict accuracy due to depth limit");return e===0?`(?R=${r})`:f`\g<${e}&R=${r}>`}function nt(e,{firstOnly:t}={}){let r=e.min.value,s=e.max.value,n=[];if(r<65&&(s===65535||s>=131071)||r===65536&&s>=131071)return n;for(let o=r;o<=s;o++){let a=_(o);if(!Ce(a))continue;let i=ie(a).filter(u=>{let c=u.codePointAt(0);return c<r||c>s});if(i.length&&(n.push(...i),t))break}return n}function M(e,{isAfterBackref:t,inCharClass:r,useFlagV:s}){if(tt.has(e))return tt.get(e);if(e<32||e>126&&e<160||e>262143||t&&vr(e))return e>255?f`\u{${e.toString(16).toUpperCase()}}`:f`\x${e.toString(16).toUpperCase().padStart(2,"0")}`;let n=r?s?Cr:dr:hr,o=_(e);return(n.has(o)?"\\":"")+o}function Nr(e){let t=e.map(n=>n.codePointAt(0)).sort((n,o)=>n-o),r=[],s=null;for(let n=0;n<t.length;n++)t[n+1]===t[n]+1?s??=t[n]:s===null?r.push(t[n]):(r.push([s,t[n]]),s=null);return r}function Ir(e,t,r){if(e)return">";let s="";if(t&&r){let{enable:n,disable:o}=t;s=(n?.ignoreCase?"i":"")+(n?.dotAll?"s":"")+(o?"-":"")+(o?.ignoreCase?"i":"")+(o?.dotAll?"s":"")}return`${s}:`}function $r({min:e,max:t,greedy:r,possessive:s}){let n;return!e&&t===1?n="?":!e&&t===1/0?n="*":e===1&&t===1/0?n="+":e===t?n=`{${e}}`:n=`{${e},${t===1/0?"":t}}`,n+(s?"+":r?"":"?")}function vr(e){return e>47&&e<58}var b=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function B(e,t,r,s){let n=new RegExp(String.raw`${t}|(?<$skip>\[\^?|\\?.)`,"gsu"),o=[!1],a=0,i="";for(let u of e.matchAll(n)){let{0:c,groups:{$skip:p}}=u;if(!p&&(!s||s===b.DEFAULT==!a)){r instanceof Function?i+=r(u,{context:a?b.CHAR_CLASS:b.DEFAULT,negated:o[o.length-1]}):i+=r;continue}c[0]==="["?(a++,o.push(c[1]==="^")):c==="]"&&a&&(a--,o.pop()),i+=c}return i}function me(e,t,r,s){B(e,t,r,s)}function Pr(e,t,r=0,s){if(!new RegExp(t,"su").test(e))return null;let n=new RegExp(`${t}|(?<$skip>\\\\?.)`,"gsu");n.lastIndex=r;let o=0,a;for(;a=n.exec(e);){let{0:i,groups:{$skip:u}}=a;if(!u&&(!s||s===b.DEFAULT==!o))return a;i==="["?o++:i==="]"&&o&&o--,n.lastIndex==a.index&&n.lastIndex++}return null}function ne(e,t,r){return!!Pr(e,t,0,r)}function st(e,t){let r=/\\?./gsu;r.lastIndex=t;let s=e.length,n=0,o=1,a;for(;a=r.exec(e);){let[i]=a;if(i==="[")n++;else if(n)i==="]"&&n--;else if(i==="(")o++;else if(i===")"&&(o--,!o)){s=a.index;break}}return e.slice(t,s)}var at={DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS",ENCLOSED_P:"ENCLOSED_P",ENCLOSED_U:"ENCLOSED_U",GROUP_NAME:"GROUP_NAME",INTERVAL_QUANTIFIER:"INTERVAL_QUANTIFIER",INVALID_INCOMPLETE_TOKEN:"INVALID_INCOMPLETE_TOKEN"},Ee={DEFAULT:"DEFAULT",ENCLOSED_P:"ENCLOSED_P",ENCLOSED_Q:"ENCLOSED_Q",ENCLOSED_U:"ENCLOSED_U",INVALID_INCOMPLETE_TOKEN:"INVALID_INCOMPLETE_TOKEN",RANGE:"RANGE"},Fn=new Set([at.ENCLOSED_P,at.ENCLOSED_U]),Nn=new Set([Ee.ENCLOSED_P,Ee.ENCLOSED_Q,Ee.ENCLOSED_U]),In=(()=>{try{new RegExp("(?i:)")}catch{return!1}return!0})(),$n=(()=>{try{new RegExp("","v")}catch{return!1}return!0})(),ot="$E$";var Gr=String.raw`\(\?<(?![=!])(?<captureName>[^>]+)>`,vn=String.raw`\((?!\?)(?!(?<=\(\?\()DEFINE\))|${Gr}`,it=String.raw`\(\?(?:[:=!>A-Za-z\-]|<[=!]|\(DEFINE\))`;var Tr=["Basic_Emoji","Emoji_Keycap_Sequence","RGI_Emoji_Modifier_Sequence","RGI_Emoji_Flag_Sequence","RGI_Emoji_Tag_Sequence","RGI_Emoji_ZWJ_Sequence","RGI_Emoji"].join("|"),Pn=new RegExp(String.raw` | ||
\v\f\x85\u2028\u2029])`));else if(n===Q.grapheme){if(r==="strict")throw new Error(f`Use of "\X" requires non-strict accuracy`);let o=s?f`\p{RGI_Emoji}`:Ke().source.replace(/\\u\{/g,f`\x{`);t(v(f`(?>\r\n|${o}|\P{M}\p{M}*)`,{skipPropertyNameValidation:!0}))}else throw new Error(`Unexpected varcharset kind "${n}"`)}},ze={Alternative({node:e},{namedGroupsInScopeByAlt:t}){let r=re(e);if(r){let s=t.get(r);s&&t.set(e,s)}},Backreference({node:e},{multiplexCapturesToLeftByRef:t,reffedNodesByBackreference:r}){let{orphan:s,ref:n}=e;s||r.set(e,[...t.get(n).map(({node:o})=>o)])},CapturingGroup:{enter({node:e,replaceWith:t,skip:r},{groupOriginByCopy:s,groupsWithDuplicateNamesToRemove:n,multiplexCapturesToLeftByRef:o,namedGroupsInScopeByAlt:a,openDirectCaptures:i,openSubroutineRefs:u}){let{name:c,number:p}=e,g=c??p,C=s.get(e),d=re(e);if(u.has(g))throw new Error("Unsupported indirect recursion");if(C?u.add(g):i.add(e),i.has(C)){t(Qe(g)),r();return}let w=L(o,g,[]);for(let k=0;k<w.length;k++){let b=w[k];if(C===b.node||C&&C===b.origin||e===b.origin){w.splice(k,1);break}}if(w.push({node:e,origin:C}),c){let k=L(a,d,new Map);k.has(c)&&n.add(k.get(c)),k.set(c,e);let b=re(d);if(b)do L(a,b,new Map).set(c,e);while(b=re(b))}},exit({node:e},{groupOriginByCopy:t,openDirectCaptures:r,openSubroutineRefs:s}){let{name:n,number:o}=e;t.get(e)?s.delete(n??o):r.delete(e)}},Group:{enter({node:e},t){t.prevFlags=t.currentFlags,e.flags&&(t.currentFlags=U(t.currentFlags,e.flags))},exit(e,t){t.currentFlags=t.prevFlags}},Subroutine(e,t){let{node:r,replaceWith:s}=e,{ref:n}=r,o=t.subroutineRefMap.get(n),a=n===0,i=a?Qe(n):Xe(o,t.groupOriginByCopy,null),u=i;if(!a){let c=Ze(gr(o,g=>g.type===l.Group&&!!g.flags)),p=c?U(t.globalFlags,c):t.globalFlags;pr(p,t.currentFlags)||(u=z(I({flags:hr(p)}),[i]))}s(u),a||tt(u,e,t,ze)}},ur={Backreference({node:e,replaceWith:t},r){if(e.orphan){r.highestOrphanBackref=Math.max(r.highestOrphanBackref,e.ref);return}let n=r.reffedNodesByBackreference.get(e).filter(o=>fr(o,e));if(!n.length)t(te({negate:!0}));else if(n.length>1){let o=n.map(a=>R($(),[ee(a.number)]));t(R(I(),o))}else e.ref=n[0].number},CapturingGroup({node:e},t){e.number=++t.numCapturesToLeft,t.groupsWithDuplicateNamesToRemove.has(e)&&delete e.name},Regex:{exit({node:e},t){let r=Math.max(t.highestOrphanBackref-t.numCapturesToLeft,0);for(let s=0;s<r;s++){let n=he();e.pattern.alternatives.at(-1).elements.push(n)}}}};function R(e,t){return t.forEach(r=>r.parent=e),e[Ce(e)]=t,e}function lr(e,t){let r=e.pattern.alternatives,s=r[0].elements[0];if(r.length>1||!s)return null;let n=r[0].elements.length===1&&(s.type===l.CapturingGroup||s.type===l.Group)&&s.alternatives.length===1,o=n?s.alternatives[0]:r[0],a=n?o.elements[0]:s;if(!a)return null;if((a.type===l.CapturingGroup||a.type===l.Group)&&a.alternatives.length===2&&a.alternatives[0].elements.length===1&&a.alternatives[1].elements.length===1){let c=a.alternatives[0].elements[0],p=a.alternatives[1].elements[0];if(c.kind===E.line_start&&p.kind===E.search_start||c.kind===E.search_start&&p.kind===E.line_start)return c.kind===E.line_start?a.alternatives.pop():a.alternatives.shift(),{name:"line_or_search_start"}}function i(c){return N(c)&&c.negate&&c.alternatives.length===1&&c.alternatives[0].elements.length===1&&c.alternatives[0].elements[0].kind===E.search_start}if(i(a))return a.parent.elements.shift(),{name:"not_search_start"};let u=o.elements.findIndex(c=>i(c));if(u>-1&&o.elements.every(c=>c.type===l.Assertion))return o.elements.splice(u,1),{name:"not_search_start"};if(N(a)&&!a.negate&&a.alternatives.length>1){let c=[],p=!1;if(a.alternatives.forEach(g=>{g.elements.length===1&&g.elements[0].kind===E.search_start?p=!0:c.push(g)}),p&&c.length){let g=!0;if(c.some(C=>C.elements.some(d=>d.type===l.CapturingGroup||d.type===l.Group||d.type===l.Subroutine||N(d))))if(t==="loose")g=!1;else throw new Error(f`Uses "\G" in a way that's unsupported`);if(g){let C=R(I(),[R($(),[D("<<",{skipPropertyNameValidation:!0})]),...c,R($(),[D(">>",{skipPropertyNameValidation:!0})])]);return C.parent=a.parent,a.parent.elements[0]=C,{name:"after_search_start_or_subpattern"}}}}return null}function pr(e,t){return e.dotAll===t.dotAll&&e.ignoreCase===t.ignoreCase}function fr(e,t){let r=t;do{if(r.type===l.Pattern)return!1;if(r.type===l.Alternative)continue;if(r===e)return!1;let s=Je(r.parent);for(let n of s){if(n===r)break;if(n===e||et(n,e))return!0}}while(r=r.parent);throw new Error("Unexpected path")}function Xe(e,t,r,s){let n=Array.isArray(e)?[]:{};for(let[o,a]of Object.entries(e))o==="parent"?n.parent=Array.isArray(r)?s:r:a&&typeof a=="object"?n[o]=Xe(a,t,n,r):(o==="type"&&a===l.CapturingGroup&&t.set(n,t.get(e)??e),n[o]=a);return n}function Qe(e){return{type:l.Recursion,ref:e}}function gr(e,t){let r=[];for(;e=e.parent;)(!t||t(e))&&r.push(e);return r}function Ce(e){for(let t of["alternatives","classes","elements"])if(e[t])return t;return null}function Ze(e){let t=["dotAll","ignoreCase"],r={enable:{},disable:{}};return e.forEach(({flags:s})=>{t.forEach(n=>{s.enable?.[n]&&(delete r.disable[n],r.enable[n]=!0),s.disable?.[n]&&(r.disable[n]=!0)})}),Object.keys(r.enable).length||delete r.enable,Object.keys(r.disable).length||delete r.disable,r.enable||r.disable?r:null}function hr({dotAll:e,ignoreCase:t}){let r={};return(e||t)&&(r.enable={},e&&(r.enable.dotAll=!0),t&&(r.enable.ignoreCase=!0)),(!e||!t)&&(r.disable={},!e&&(r.disable.dotAll=!0),!t&&(r.disable.ignoreCase=!0)),r}function Je(e){if(!e)throw new Error("Node expected");if(e.type===l.Quantifier)return[e.element];let t=Ce(e);return t&&e[t]}function Ye(e){if(!e.length)return null;let t=e[0];if(N(t)&&!t.negate&&t.alternatives.length===1&&t.alternatives[0].elements.length){let s=t.alternatives[0].elements,n=t.kind===E.lookahead?0:s.length-1;if(s[n].kind===E.search_start)return s[n]}let r=e.find(s=>s.kind===E.search_start?!0:s.type!==l.Directive&&s.type!==l.Assertion&&!(s.type===l.Quantifier&&!s.min));if(!r)return null;if(r.kind===E.search_start)return r;if(r.type===l.Group||r.type===l.CapturingGroup){let s=[];for(let n of r.alternatives){let o=Ye(n.elements);if(!o)return null;Array.isArray(o)?s.push(...o):s.push(o)}return s}return null}function re(e){for(;e=e.parent;)if(e.type===l.Alternative)return e;return null}function et(e,t){let r=Je(e)??[];for(let s of r)if(s===t||et(s,t))return!0;return!1}function dr(e){return/^[$_\p{IDS}][$\u200C\u200D\p{IDC}]*$/u.test(e)}function v(e,{skipPropertyNameValidation:t}={}){let s=q(K(e),{skipPropertyNameValidation:t}).pattern.alternatives;return s.length>1||s[0].elements.length>1?R(I(),s):s[0].elements[0]}function z(e,t){let r=Ce(e);return e[r][0].parent=e,t&&R(e[r][0],t),e}function tt(e,{parent:t,key:r,container:s},n,o){P({node:e,parent:t,key:r,container:s},n,o)}function nt(e,t){let r=Z(t),s=V(r.target,"ES2024"),n=V(r.target,"ESNext"),o=r.maxRecursionDepth;if(o!==null&&(!Number.isInteger(o)||o<2||o>100))throw new Error("Invalid maxRecursionDepth; use 2-100 or null");let a=null,i=null;if(!n){let d=[e.flags.ignoreCase];P({node:e},{getCurrentModI:()=>d.at(-1),popModI(){d.pop()},pushModI(w){d.push(w)},setHasCasedChar(){d.at(-1)?a=!0:i=!0}},Cr)}let u={dotAll:e.flags.dotAll,ignoreCase:!!((e.flags.ignoreCase||a)&&!i)},c=null,p={accuracy:r.accuracy,appliedGlobalFlags:u,captureFlagIMap:new Map,currentFlags:{dotAll:e.flags.dotAll,ignoreCase:e.flags.ignoreCase},groupNames:new Set,inCharClass:!1,lastNode:c,maxRecursionDepth:o,useAppliedIgnoreCase:!!(!n&&a&&i),useDuplicateNames:n,useFlagMods:n,useFlagV:s,usePostEs2018Properties:s,verbose:r.verbose};function g(d){switch(p.lastNode=c,c=d,d.type){case l.Regex:return{pattern:g(d.pattern),flags:g(d.flags),options:{...d.options}};case l.Alternative:return d.elements.map(g).join("");case l.Assertion:return _r(d,p,g);case l.Backreference:return kr(d,p);case l.CapturingGroup:return Sr(d,p,g);case l.Character:return yr(d,p);case l.CharacterClass:return xr(d,p,g);case l.CharacterClassIntersection:if(!p.useFlagV)throw new Error("Use of class intersection requires min target ES2024");return d.classes.map(g).join("&&");case l.CharacterClassRange:return br(d,p);case l.CharacterSet:return Fr(d,p);case l.Flags:return Nr(d,p);case l.Group:return Ir(d,p,g);case l.Pattern:return d.alternatives.map(g).join("|");case l.Quantifier:return g(d.element)+Gr(d);case l.Recursion:return $r(d,p);default:throw new Error(`Unexpected node type "${d.type}"`)}}let C=g(e);return s||(delete C.options.force.v,C.options.disable.v=!0,C.options.unicodeSetsPlugin=null),C}var Cr={AnyGroup:{enter({node:e},t){let r=t.getCurrentModI();t.pushModI(e.flags?U({ignoreCase:r},e.flags).ignoreCase:r)},exit(e,t){t.popModI()}},Backreference(e,t){t.setHasCasedChar()},Character({node:e},t){me(A(e.value))&&t.setHasCasedChar()},CharacterClassRange({node:e,skip:t},r){t(),st(e,{firstOnly:!0}).length&&r.setHasCasedChar()},CharacterSet({node:e},t){e.kind===y.property&&pe.has(e.value)&&t.setHasCasedChar()}},mr=new Set(["$","(",")","*","+",".","?","[","\\","]","^","{","|","}"]),Er=new Set(["-","\\","]","^"]),wr=new Set(["(",")","-","/","[","\\","]","^","{","|","}","!","#","$","%","&","*","+",",",".",":",";","<","=",">","?","@","`","~"]),rt=new Map([[9,f`\t`],[10,f`\n`],[11,f`\v`],[12,f`\f`],[13,f`\r`],[8232,f`\u2028`],[8233,f`\u2029`],[65279,f`\uFEFF`]]),Ar=/^\p{Cased}$/u;function me(e){return Ar.test(e)}function _r(e,t,r){let{kind:s,negate:n,alternatives:o}=e;if(N(e))return`(?${`${s===E.lookahead?"":"<"}${n?"!":"="}`}${o.map(r).join("|")})`;if(s===E.string_end)return"$";if(s===E.string_start)return"^";throw new Error(`Unexpected assertion kind "${s}"`)}function kr({ref:e},t){if(typeof e!="number")throw new Error("Unexpected named backref in transformed AST");if(!t.useFlagMods&&t.accuracy==="strict"&&t.currentFlags.ignoreCase&&!t.captureFlagIMap.get(e))throw new Error("Use of case-insensitive backref to case-sensitive group requires target ESNext or non-strict accuracy");return"\\"+e}function Sr({name:e,number:t,alternatives:r},s,n){return e&&(s.groupNames.has(e)?s.useDuplicateNames||(e=null):s.groupNames.add(e)),s.captureFlagIMap.set(t,s.currentFlags.ignoreCase),`(${e?`?<${e}>`:""}${r.map(n).join("|")})`}function yr({value:e},t){let r=A(e),s=M(e,{isAfterBackref:t.lastNode.type===l.Backreference,inCharClass:t.inCharClass,useFlagV:t.useFlagV});if(s!==r)return s;if(t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase&&me(r)){let n=ie(r);return t.inCharClass?n.join(""):n.length>1?`[${n.join("")}]`:n[0]}return r}function xr({negate:e,parent:t,elements:r},s,n){if(!e&&(!s.useFlagV||!s.verbose)&&t.type===l.CharacterClass&&r[0].type!==l.CharacterClassIntersection||!s.verbose&&t.type===l.CharacterClassIntersection&&r.length===1&&r[0].type!==l.CharacterClassRange)return r.map(n).join("");if(!s.useFlagV&&t.type===l.CharacterClass)throw new Error("Use of nested character class requires min target ES2024");s.inCharClass=!0;let o=`[${e?"^":""}${r.map(n).join("")}]`;return s.inCharClass=!1,o}function br(e,t){let r=e.min.value,s=e.max.value,n={isAfterBackref:!1,inCharClass:!0,useFlagV:t.useFlagV},o=M(r,n),a=M(s,n),i="";if(t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase){let u=st(e);vr(u).forEach(p=>{i+=Array.isArray(p)?`${M(p[0],n)}-${M(p[1],n)}`:M(p,n)})}return`${o}-${a}${i}`}function Fr({kind:e,negate:t,value:r,key:s},n){if(e===y.dot)return n.currentFlags.dotAll?n.appliedGlobalFlags.dotAll||n.useFlagMods?".":"[^]":f`[^\n]`;if(e===y.digit)return t?f`\D`:f`\d`;if(e===y.property){if(!n.usePostEs2018Properties&&Se.has(r))throw new Error(`Unicode property "${r}" unavailable in target ES2018`);if(n.useAppliedIgnoreCase&&n.currentFlags.ignoreCase&&pe.has(r))throw new Error(`Unicode property "${r}" can't be case-insensitive when other chars have specific case`);return`${t?f`\P`:f`\p`}{${s?`${s}=`:""}${r}}`}if(e===y.word)return t?f`\W`:f`\w`;throw new Error(`Unexpected character set kind "${e}"`)}function Nr(e,t){return(t.appliedGlobalFlags.ignoreCase?"i":"")+(e.dotAll?"s":"")+(e.sticky?"y":"")}function Ir({atomic:e,flags:t,parent:r,alternatives:s},n,o){let a=n.currentFlags;t&&(n.currentFlags=U(a,t));let i=s.map(o).join("|"),u=!n.verbose&&s.length===1&&r.type!==l.Quantifier&&!e&&(!n.useFlagMods||!t)?i:`(?${Pr(e,t,n.useFlagMods)}${i})`;return n.currentFlags=a,u}function $r({ref:e},t){let r=t.maxRecursionDepth;if(!r)throw new Error("Use of recursion disabled");if(t.accuracy==="strict")throw new Error("Use of recursion requires non-strict accuracy due to depth limit");return e===0?`(?R=${r})`:f`\g<${e}&R=${r}>`}function st(e,{firstOnly:t}={}){let r=e.min.value,s=e.max.value,n=[];if(r<65&&(s===65535||s>=131071)||r===65536&&s>=131071)return n;for(let o=r;o<=s;o++){let a=A(o);if(!me(a))continue;let i=ie(a).filter(u=>{let c=u.codePointAt(0);return c<r||c>s});if(i.length&&(n.push(...i),t))break}return n}function M(e,{isAfterBackref:t,inCharClass:r,useFlagV:s}){if(rt.has(e))return rt.get(e);if(e<32||e>126&&e<160||e>262143||t&&Tr(e))return e>255?f`\u{${e.toString(16).toUpperCase()}}`:f`\x${e.toString(16).toUpperCase().padStart(2,"0")}`;let n=r?s?wr:Er:mr,o=A(e);return(n.has(o)?"\\":"")+o}function vr(e){let t=e.map(n=>n.codePointAt(0)).sort((n,o)=>n-o),r=[],s=null;for(let n=0;n<t.length;n++)t[n+1]===t[n]+1?s??=t[n]:s===null?r.push(t[n]):(r.push([s,t[n]]),s=null);return r}function Pr(e,t,r){if(e)return">";let s="";if(t&&r){let{enable:n,disable:o}=t;s=(n?.ignoreCase?"i":"")+(n?.dotAll?"s":"")+(o?"-":"")+(o?.ignoreCase?"i":"")+(o?.dotAll?"s":"")}return`${s}:`}function Gr({min:e,max:t,greedy:r,possessive:s}){let n;return!e&&t===1?n="?":!e&&t===1/0?n="*":e===1&&t===1/0?n="+":e===t?n=`{${e}}`:n=`{${e},${t===1/0?"":t}}`,n+(s?"+":r?"":"?")}function Tr(e){return e>47&&e<58}var x=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function B(e,t,r,s){let n=new RegExp(String.raw`${t}|(?<$skip>\[\^?|\\?.)`,"gsu"),o=[!1],a=0,i="";for(let u of e.matchAll(n)){let{0:c,groups:{$skip:p}}=u;if(!p&&(!s||s===x.DEFAULT==!a)){r instanceof Function?i+=r(u,{context:a?x.CHAR_CLASS:x.DEFAULT,negated:o[o.length-1]}):i+=r;continue}c[0]==="["?(a++,o.push(c[1]==="^")):c==="]"&&a&&(a--,o.pop()),i+=c}return i}function Ee(e,t,r,s){B(e,t,r,s)}function Lr(e,t,r=0,s){if(!new RegExp(t,"su").test(e))return null;let n=new RegExp(`${t}|(?<$skip>\\\\?.)`,"gsu");n.lastIndex=r;let o=0,a;for(;a=n.exec(e);){let{0:i,groups:{$skip:u}}=a;if(!u&&(!s||s===x.DEFAULT==!o))return a;i==="["?o++:i==="]"&&o&&o--,n.lastIndex==a.index&&n.lastIndex++}return null}function ne(e,t,r){return!!Lr(e,t,0,r)}function at(e,t){let r=/\\?./gsu;r.lastIndex=t;let s=e.length,n=0,o=1,a;for(;a=r.exec(e);){let[i]=a;if(i==="[")n++;else if(n)i==="]"&&n--;else if(i==="(")o++;else if(i===")"&&(o--,!o)){s=a.index;break}}return e.slice(t,s)}var ot={DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS",ENCLOSED_P:"ENCLOSED_P",ENCLOSED_U:"ENCLOSED_U",GROUP_NAME:"GROUP_NAME",INTERVAL_QUANTIFIER:"INTERVAL_QUANTIFIER",INVALID_INCOMPLETE_TOKEN:"INVALID_INCOMPLETE_TOKEN"},we={DEFAULT:"DEFAULT",ENCLOSED_P:"ENCLOSED_P",ENCLOSED_Q:"ENCLOSED_Q",ENCLOSED_U:"ENCLOSED_U",INVALID_INCOMPLETE_TOKEN:"INVALID_INCOMPLETE_TOKEN",RANGE:"RANGE"},$n=new Set([ot.ENCLOSED_P,ot.ENCLOSED_U]),vn=new Set([we.ENCLOSED_P,we.ENCLOSED_Q,we.ENCLOSED_U]),Pn=(()=>{try{new RegExp("(?i:)")}catch{return!1}return!0})(),Gn=(()=>{try{new RegExp("","v")}catch{return!1}return!0})(),it="$E$";var Rr=String.raw`\(\?<(?![=!])(?<captureName>[^>]+)>`,Tn=String.raw`\((?!\?)(?!(?<=\(\?\()DEFINE\))|${Rr}`,ct=String.raw`\(\?(?:[:=!>A-Za-z\-]|<[=!]|\(DEFINE\))`;var Or=["Basic_Emoji","Emoji_Keycap_Sequence","RGI_Emoji_Modifier_Sequence","RGI_Emoji_Flag_Sequence","RGI_Emoji_Tag_Sequence","RGI_Emoji_ZWJ_Sequence","RGI_Emoji"].join("|"),Ln=new RegExp(String.raw` | ||
\\(?: c[A-Za-z] | ||
| p\{(?<pStrProp>${Tr})\} | ||
| p\{(?<pStrProp>${Or})\} | ||
| [pP]\{[^\}]+\} | ||
@@ -53,3 +53,3 @@ | (?<qStrProp>q) | ||
| . | ||
`.replace(/\s+/g,""),"gsu");var Gn=new RegExp(String.raw` | ||
`.replace(/\s+/g,""),"gsu");var Rn=new RegExp(String.raw` | ||
(?<groupN>\(\?<(?![=!])|\\[gk]<) | ||
@@ -67,3 +67,3 @@ | (?<enclosedPU>\\[pPu]\{) | ||
| \\?. | ||
`.replace(/\s+/g,""),"gsu");function ct(e,t,r,s){return e.slice(0,t)+s+e.slice(t+r.length)}var ut=new RegExp(String.raw`(?<noncapturingStart>${it})|(?<capturingStart>\((?:\?<[^>]+>)?)|\\?.`,"gsu");function lt(e,t){if(!/\(\?>/.test(e))return e;let r="(?>",s=`(?:(?=(${t?.useEmulationGroups?ot:""}`,n=[0],o=0,a=0,i=NaN,u;do{u=!1;let c=0,p=0,g=!1,C;for(ut.lastIndex=Number.isNaN(i)?0:i+s.length;C=ut.exec(e);){let{0:d,index:w,groups:{capturingStart:k,noncapturingStart:x}}=C;if(d==="[")c++;else if(c)d==="]"&&c--;else if(d===r&&!g)i=w,g=!0;else if(g&&x)p++;else if(k)g?p++:(o++,n.push(o+a));else if(d===")"&&g){if(!p){a++,e=`${e.slice(0,i)}${s}${e.slice(i+r.length,w)}))<$$${a+o}>)${e.slice(w+1)}`,u=!0;break}p--}}}while(u);return e=B(e,String.raw`\\(?<backrefNum>[1-9]\d*)|<\$\$(?<wrappedBackrefNum>\d+)>`,({0:c,groups:{backrefNum:p,wrappedBackrefNum:g}})=>{if(p){let C=+p;if(C>n.length-1)throw new Error(`Backref "${c}" greater than number of captures`);return`\\${n[C]}`}return`\\${g}`},b.DEFAULT),e}var pt=String.raw`(?:[?*+]|\{\d+(?:,\d*)?\})`,we=new RegExp(String.raw` | ||
`.replace(/\s+/g,""),"gsu");function ut(e,t,r,s){return e.slice(0,t)+s+e.slice(t+r.length)}var lt=new RegExp(String.raw`(?<noncapturingStart>${ct})|(?<capturingStart>\((?:\?<[^>]+>)?)|\\?.`,"gsu");function pt(e,t){if(!/\(\?>/.test(e))return e;let r="(?>",s=`(?:(?=(${t?.useEmulationGroups?it:""}`,n=[0],o=0,a=0,i=NaN,u;do{u=!1;let c=0,p=0,g=!1,C;for(lt.lastIndex=Number.isNaN(i)?0:i+s.length;C=lt.exec(e);){let{0:d,index:w,groups:{capturingStart:k,noncapturingStart:b}}=C;if(d==="[")c++;else if(c)d==="]"&&c--;else if(d===r&&!g)i=w,g=!0;else if(g&&b)p++;else if(k)g?p++:(o++,n.push(o+a));else if(d===")"&&g){if(!p){a++,e=`${e.slice(0,i)}${s}${e.slice(i+r.length,w)}))<$$${a+o}>)${e.slice(w+1)}`,u=!0;break}p--}}}while(u);return e=B(e,String.raw`\\(?<backrefNum>[1-9]\d*)|<\$\$(?<wrappedBackrefNum>\d+)>`,({0:c,groups:{backrefNum:p,wrappedBackrefNum:g}})=>{if(p){let C=+p;if(C>n.length-1)throw new Error(`Backref "${c}" greater than number of captures`);return`\\${n[C]}`}return`\\${g}`},x.DEFAULT),e}var ft=String.raw`(?:[?*+]|\{\d+(?:,\d*)?\})`,Ae=new RegExp(String.raw` | ||
\\(?: \d+ | ||
@@ -81,5 +81,5 @@ | c[A-Za-z] | ||
))? | ||
| (?<qBase>${pt})(?<qMod>[?+]?)(?<invalidQ>[?*+\{]?) | ||
| (?<qBase>${ft})(?<qMod>[?+]?)(?<invalidQ>[?*+\{]?) | ||
| \\?. | ||
`.replace(/\s+/g,""),"gsu");function ft(e){if(!new RegExp(`${pt}\\+`).test(e))return e;let t=[],r=null,s=null,n="",o=0,a;for(we.lastIndex=0;a=we.exec(e);){let{0:i,index:u,groups:{qBase:c,qMod:p,invalidQ:g}}=a;if(i==="[")o||(s=u),o++;else if(i==="]")o?o--:s=null;else if(!o)if(p==="+"&&n&&!n.startsWith("(")){if(g)throw new Error(`Invalid quantifier "${i}"`);let C=-1;if(/^\{\d+\}$/.test(c))e=ct(e,u+c.length,p,"");else{if(n===")"||n==="]"){let d=n===")"?r:s;if(d===null)throw new Error(`Invalid unmatched "${n}"`);e=`${e.slice(0,d)}(?>${e.slice(d,u)}${c})${e.slice(u+i.length)}`}else e=`${e.slice(0,u-n.length)}(?>${n}${c})${e.slice(u+i.length)}`;C+=4}we.lastIndex+=C}else i[0]==="("?t.push(u):i===")"&&(r=t.length?t.pop():null);n=i}return e}var Lr=String.raw`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,_e=String.raw`\(\?R=(?<rDepth>[^\)]+)\)|${Lr}`,Ae=String.raw`\(\?<(?![=!])(?<captureName>[^>]+)>`,O=new RegExp(String.raw`${Ae}|${_e}|\\?.`,"gsu");function mt(e){if(!new RegExp(_e,"su").test(e))return e;if(ne(e,String.raw`\\[1-9]`,b.DEFAULT))throw new Error("Numbered backrefs cannot be used with recursion; use named backref");if(ne(e,String.raw`\(\?\(DEFINE\)`,b.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let t=new Map,r=[],s=0,n=0,o;for(O.lastIndex=0;o=O.exec(e);){let{0:a,groups:{captureName:i,rDepth:u,gRNameOrNum:c,gRDepth:p}}=o;if(a==="[")s++;else if(s)a==="]"&&s--;else if(u){gt(u);let g=e.slice(0,o.index),C=e.slice(O.lastIndex);return ht(C),dt(g,C,+u,!1)}else if(c){if(gt(p),ht(e.slice(O.lastIndex)),!r.some(k=>k.name===c||k.num===+c))throw new Error(`Recursion via \\g<${c}&R=${p}> must be used within the referenced group`);let g=t.get(c),C=st(e,g),d=e.slice(g,o.index),w=C.slice(d.length+a.length);return e.slice(0,g)+dt(d,w,+p,!0)+e.slice(g+C.length)}else if(i)n++,t.set(String(n),O.lastIndex),t.set(i,O.lastIndex),r.push({num:n,name:i});else if(a.startsWith("(")){let g=a==="(";g&&(n++,t.set(String(n),O.lastIndex)),r.push(g?{num:n}:{})}else a===")"&&r.pop()}return e}function gt(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 ht(e){if(ne(e,_e,b.DEFAULT))throw new Error("Recursion can only be used once per regex")}function dt(e,t,r,s){let n=new Set;s&&me(e+t,Ae,({groups:{captureName:a}})=>{n.add(a)},b.DEFAULT);let o=r-1;return`${e}${Ct(`(?:${e}`,o,s?n:null)}(?:)${Ct(`${t})`,o,s?n:null,"backward")}${t}`}function Ct(e,t,r,s="forward"){let o=i=>s==="backward"?t-i+2-1:i+2,a="";for(let i=0;i<t;i++){let u=o(i);a+=B(e,String.raw`${Ae}|\\k<(?<backref>[^>]+)>`,({0:c,groups:{captureName:p,backref:g}})=>{if(g&&r&&!r.has(g))return c;let C=`_$${u}`;return p?`(?<${p}${C}>`:`\\k<${g}${C}>`},b.DEFAULT)}return a}function Et(e,t){let r=J(t),s=K(e,r.flags),n=q(s,{skipBackrefValidation:r.tmGrammar,verbose:r.verbose}),o=Qe(n,{accuracy:r.accuracy,avoidSubclass:r.avoidSubclass,bestEffortTarget:r.target}),a=rt(o,r),i=lt(ft(mt(a.pattern))),u;o._strategy&&(i=i.replace(/\(\?:\\p{sc=<<}\|(.*?)\|\\p{sc=>>}\)/s,(p,g)=>(u=g,"")));let c={pattern:i,flags:`${r.hasIndices?"d":""}${r.global?"g":""}${a.flags}${a.options.disable.v?"u":"v"}`};return o._strategy&&(c.strategy={...o._strategy},u&&(c.strategy.subpattern=u)),c}function Rr(e,t){return q(K(e,t?.flags))}function Or(e,t){let r=Et(e,t);return r.strategy?new se(r.pattern,r.flags,r.strategy):new RegExp(r.pattern,r.flags)}var se=class e extends RegExp{#e;constructor(t,r,s){super(t,r),s?this.#e=s:t instanceof e&&(this.#e=t.#e)}exec(t){let r=this.global||this.sticky,s=this.lastIndex,n=RegExp.prototype.exec;if(this.#e.name==="line_or_search_start"&&r&&this.lastIndex){this.lastIndex=0;let a=n.call(this,t.slice(s));return a&&(a.input=t,a.index+=s,this.lastIndex+=s),a}let o=r?this:new RegExp(this,`g${this.flags}`);if(this.#e.name==="not_search_start"){let a=n.call(this,t);return a?.index===s&&(o.lastIndex=a.index+1,a=n.call(o,t)),a}if(this.#e.name==="after_search_start_or_subpattern"){let a=n.call(this,t);if(!a||a.index===s)return a;let i=new RegExp(`(?:${this.#e.subpattern})$`);for(;a;){if(i.exec(t.slice(0,a.index)))return a;o.lastIndex=a.index+1,a=n.call(o,t)}return a}return n.call(this,t)}};return yt(Ur);})(); | ||
`.replace(/\s+/g,""),"gsu");function gt(e){if(!new RegExp(`${ft}\\+`).test(e))return e;let t=[],r=null,s=null,n="",o=0,a;for(Ae.lastIndex=0;a=Ae.exec(e);){let{0:i,index:u,groups:{qBase:c,qMod:p,invalidQ:g}}=a;if(i==="[")o||(s=u),o++;else if(i==="]")o?o--:s=null;else if(!o)if(p==="+"&&n&&!n.startsWith("(")){if(g)throw new Error(`Invalid quantifier "${i}"`);let C=-1;if(/^\{\d+\}$/.test(c))e=ut(e,u+c.length,p,"");else{if(n===")"||n==="]"){let d=n===")"?r:s;if(d===null)throw new Error(`Invalid unmatched "${n}"`);e=`${e.slice(0,d)}(?>${e.slice(d,u)}${c})${e.slice(u+i.length)}`}else e=`${e.slice(0,u-n.length)}(?>${n}${c})${e.slice(u+i.length)}`;C+=4}Ae.lastIndex+=C}else i[0]==="("?t.push(u):i===")"&&(r=t.length?t.pop():null);n=i}return e}var Ur=String.raw`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,_e=String.raw`\(\?R=(?<rDepth>[^\)]+)\)|${Ur}`,ke=String.raw`\(\?<(?![=!])(?<captureName>[^>]+)>`,O=new RegExp(String.raw`${ke}|${_e}|\\?.`,"gsu");function Et(e){if(!new RegExp(_e,"su").test(e))return e;if(ne(e,String.raw`\\[1-9]`,x.DEFAULT))throw new Error("Numbered backrefs cannot be used with recursion; use named backref");if(ne(e,String.raw`\(\?\(DEFINE\)`,x.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let t=new Map,r=[],s=0,n=0,o;for(O.lastIndex=0;o=O.exec(e);){let{0:a,groups:{captureName:i,rDepth:u,gRNameOrNum:c,gRDepth:p}}=o;if(a==="[")s++;else if(s)a==="]"&&s--;else if(u){ht(u);let g=e.slice(0,o.index),C=e.slice(O.lastIndex);return dt(C),Ct(g,C,+u,!1)}else if(c){if(ht(p),dt(e.slice(O.lastIndex)),!r.some(k=>k.name===c||k.num===+c))throw new Error(`Recursion via \\g<${c}&R=${p}> must be used within the referenced group`);let g=t.get(c),C=at(e,g),d=e.slice(g,o.index),w=C.slice(d.length+a.length);return e.slice(0,g)+Ct(d,w,+p,!0)+e.slice(g+C.length)}else if(i)n++,t.set(String(n),O.lastIndex),t.set(i,O.lastIndex),r.push({num:n,name:i});else if(a.startsWith("(")){let g=a==="(";g&&(n++,t.set(String(n),O.lastIndex)),r.push(g?{num:n}:{})}else a===")"&&r.pop()}return e}function ht(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 dt(e){if(ne(e,_e,x.DEFAULT))throw new Error("Recursion can only be used once per regex")}function Ct(e,t,r,s){let n=new Set;s&&Ee(e+t,ke,({groups:{captureName:a}})=>{n.add(a)},x.DEFAULT);let o=r-1;return`${e}${mt(`(?:${e}`,o,s?n:null)}(?:)${mt(`${t})`,o,s?n:null,"backward")}${t}`}function mt(e,t,r,s="forward"){let o=i=>s==="backward"?t-i+2-1:i+2,a="";for(let i=0;i<t;i++){let u=o(i);a+=B(e,String.raw`${ke}|\\k<(?<backref>[^>]+)>`,({0:c,groups:{captureName:p,backref:g}})=>{if(g&&r&&!r.has(g))return c;let C=`_$${u}`;return p?`(?<${p}${C}>`:`\\k<${g}${C}>`},x.DEFAULT)}return a}function wt(e,t){let r=Z(t),s=K(e,r.flags),n=q(s,{skipBackrefValidation:r.tmGrammar,verbose:r.verbose}),o=We(n,{accuracy:r.accuracy,avoidSubclass:r.avoidSubclass,bestEffortTarget:r.target}),a=nt(o,r),i=pt(gt(Et(a.pattern))),u;o._strategy&&(i=i.replace(/\(\?:\\p{sc=<<}\|(.*?)\|\\p{sc=>>}\)/s,(p,g)=>(u=g,"")));let c={pattern:i,flags:`${r.hasIndices?"d":""}${r.global?"g":""}${a.flags}${a.options.disable.v?"u":"v"}`};return o._strategy&&(c.strategy={...o._strategy},u&&(c.strategy.subpattern=u)),c}function Dr(e,t){return q(K(e,t?.flags))}function Mr(e,t){let r=wt(e,t);return r.strategy?new se(r.pattern,r.flags,r.strategy):new RegExp(r.pattern,r.flags)}var se=class e extends RegExp{#e;constructor(t,r,s){super(t,r),s?this.#e=s:t instanceof e&&(this.#e=t.#e)}exec(t){let r=this.global||this.sticky,s=this.lastIndex,n=RegExp.prototype.exec;if(this.#e.name==="line_or_search_start"&&r&&this.lastIndex){this.lastIndex=0;let a=n.call(this,t.slice(s));return a&&(a.input=t,a.index+=s,this.lastIndex+=s),a}let o=r?this:new RegExp(this,`g${this.flags}`);if(this.#e.name==="not_search_start"){let a=n.call(this,t);return a?.index===s&&(o.lastIndex=a.index+1,a=n.call(o,t)),a}if(this.#e.name==="after_search_start_or_subpattern"){let a=n.call(this,t);if(!a||a.index===s)return a;let i=new RegExp(`(?:${this.#e.subpattern})$`);for(;a;){if(i.exec(t.slice(0,a.index)))return a;o.lastIndex=a.index+1,a=n.call(o,t)}return a}return n.call(this,t)}};return xt(Br);})(); | ||
//# sourceMappingURL=index.min.js.map |
{ | ||
"name": "oniguruma-to-es", | ||
"version": "0.1.0", | ||
"description": "Covert Oniguruma regexes to native JavaScript RegExp", | ||
"version": "0.1.1", | ||
"description": "Convert Oniguruma patterns to native JavaScript regexes", | ||
"author": "Steven Levithan", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
# Oniguruma-To-ES | ||
[![npm version][npm-version-src]][npm-version-href] | ||
[![bundle][bundle-src]][bundle-href] | ||
A lightweight **Oniguruma to JavaScript RegExp transpiler** that runs in the browser and on your server. Use it to: | ||
- Take advantage of Oniguruma's extended regex capabilities in JavaScript. | ||
- Take advantage of Oniguruma's many extended regex featrures in JavaScript. | ||
- Run regexes intended for Oniguruma in JavaScript, such as those used in TextMate grammars (used by VS Code, [Shiki](https://shiki.matsu.io/) syntax highlighter, etc.). | ||
- Share regexes across your Ruby and JavaScript code. | ||
Compared to running the actual [Oniguruma](https://github.com/kkos/oniguruma) C library in JavaScript via WASM bindings (e.g. via [vscode-oniguruma](https://github.com/microsoft/vscode-oniguruma)), this library is **much lighter weight** and its regexes **run much faster** since they run as native JavaScript. | ||
Compared to running the actual [Oniguruma](https://github.com/kkos/oniguruma) C library in JavaScript via WASM bindings (e.g. via [vscode-oniguruma](https://github.com/microsoft/vscode-oniguruma)), this library is **much lighter weight** (the WASM binary alone is 460+ KB) and its regexes typically **run much faster** since they run as native JavaScript. | ||
> [!WARNING] | ||
> This library is currently in beta and has known bugs. | ||
### [Try the demo REPL](https://slevithan.github.io/oniguruma-to-es/demo/) | ||
@@ -18,2 +18,5 @@ | ||
> [!NOTE] | ||
> This library is currently in beta and has several known bugs. However, it's already quite robust and is ready for use. Please report any issues. | ||
## 📜 Contents | ||
@@ -35,4 +38,9 @@ | ||
import {toRegExp} from 'oniguruma-to-es'; | ||
const str = '…'; | ||
const pattern = '…'; | ||
// Works with all string/regexp methods since it returns a native JS regexp | ||
str.match(toRegExp(pattern)); | ||
``` | ||
<!-- | ||
In browsers: | ||
@@ -46,2 +54,3 @@ | ||
``` | ||
--> | ||
@@ -63,3 +72,3 @@ <details> | ||
Transpiles an Oniguruma pattern and returns a native JavaScript `RegExp`. | ||
Transpiles an Oniguruma pattern and returns a JavaScript `RegExp`. | ||
@@ -96,3 +105,3 @@ > [!TIP] | ||
Transpiles an Oniguruma pattern to the parts needed to construct a native JavaScript `RegExp`. | ||
Transpiles an Oniguruma pattern to the parts needed to construct a JavaScript `RegExp`. | ||
@@ -113,9 +122,22 @@ ```ts | ||
The returned `pattern` and `flags` might be different than those provided, as a result of the emulation process. The returned `pattern`, `flags`, and `strategy` can be provided as arguments to the `EmulatedRegExp` constructor to produce the same result as `toRegExp`. | ||
The returned `flags` (as well as the `pattern`, of course) might be different than those provided, as a result of the emulation process. The returned `pattern`, `flags`, and `strategy` can be provided as arguments to the `EmulatedRegExp` constructor to produce the same result as `toRegExp`. | ||
If the only keys returned are `pattern` and `flags`, they can optionally be provided to JavaScript's `RegExp` constructor instead. Setting option `avoidSubclass` to `true` ensures that this is always the case, and any patterns that are emulatable only via `EmulatedRegExp` throw an error. | ||
If the only keys returned are `pattern` and `flags`, they can optionally be provided to JavaScript's `RegExp` constructor instead. Setting option `avoidSubclass` to `true` ensures that this is always the case, and any patterns that rely on `EmulatedRegExp`'s additional handling for emulation throw an error. | ||
### `toOnigurumaAst` | ||
Generates an Oniguruma AST from an Oniguruma pattern. | ||
```ts | ||
function toOnigurumaAst( | ||
pattern: string, | ||
options?: { | ||
flags?: OnigurumaFlags; | ||
} | ||
): OnigurumaAst; | ||
``` | ||
### `EmulatedRegExp` | ||
Can be provided results from `toDetails` to produce the same result as `toRegExp`. | ||
Works the same as the native JavaScript `RegExp` constructor in all contexts, but can be provided results from `toDetails` to produce the same result as `toRegExp`. | ||
@@ -135,18 +157,5 @@ ```ts | ||
### `toOnigurumaAst` | ||
Generates an Oniguruma AST from an Oniguruma pattern. | ||
```ts | ||
function toOnigurumaAst( | ||
pattern: string, | ||
options?: { | ||
flags?: OnigurumaFlags; | ||
} | ||
): OnigurumaAst; | ||
``` | ||
## 🔩 Options | ||
These options are shared by functions [`toRegExp`](#toregexp) and [`toDetails`](#todetails). | ||
The following options are shared by functions [`toRegExp`](#toregexp) and [`toDetails`](#todetails). | ||
@@ -237,3 +246,3 @@ ### `accuracy` | ||
*Default: `'ES2024'`.* | ||
One of `'ES2018'`, `'ES2024'` *(default)*, or `'ESNext'`. | ||
@@ -250,6 +259,6 @@ Sets the JavaScript language version for the generated pattern and flags. Later targets allow faster processing, simpler generated source, and support for additional features. | ||
- No emulation restrictions. | ||
- Generated regexes require Node.js 20 or a 2023-era browser ([compat table](https://caniuse.com/mdn-javascript_builtins_regexp_unicodesets)). | ||
- Generated regexes require Node.js 20 or any 2023-era browser ([compat table](https://caniuse.com/mdn-javascript_builtins_regexp_unicodesets)). | ||
- `ESNext`: Uses JS flag `v` and allows use of flag groups and duplicate group names. | ||
- Benefits: Faster transpilation, simpler generated source, and duplicate group names are preserved across separate alternation paths. | ||
- Generated regexes might use features that require Node.js 23 or a 2024-era browser (except Safari, which lacks support). | ||
- Generated regexes might use features that require Node.js 23 or a 2024-era browser (except Safari, which lacks support for flag groups). | ||
</details> | ||
@@ -271,3 +280,3 @@ | ||
Following are the supported features by target. | ||
Following are the supported features by target. The official Oniguruma [syntax doc](https://github.com/kkos/oniguruma/blob/master/doc/RE) doesn't cover many of the finer details described here. | ||
@@ -277,3 +286,3 @@ > [!NOTE] | ||
Notice that nearly every feature below has at least subtle differences from JavaScript. Some features and subfeatures listed as unsupported are not emulatable using native JavaScript regexes, but support for others might be added in future versions of Oniguruma-To-ES. Unsupported features throw an error. | ||
Notice that nearly every feature below has at least subtle differences from JavaScript. Some features and subfeatures listed as unsupported are not emulatable using native JavaScript regexes, but support for others might be added in future versions of this library. Unsupported features throw an error. | ||
@@ -625,3 +634,3 @@ <table> | ||
<td> | ||
✔ Same as JS <code>^</code> <code>$</code> without flag <code>m</code><br> | ||
✔ Same as JS <code>^</code> <code>$</code> without JS flag <code>m</code><br> | ||
</td> | ||
@@ -948,4 +957,4 @@ </tr> | ||
1. Target `ES2018` doesn't allow Unicode property names added in JavaScript specifications after ES2018 to be used. | ||
2. Unicode blocks are easily emulatable but their character data would significantly increase library weight. They're also a deeply flawed and arguably-unuseful feature, given the ability to use Unicode scripts and other properties. | ||
1. Target `ES2018` doesn't allow using Unicode property names added in JavaScript specifications after ES2018. | ||
2. Unicode blocks (which in Oniguruma are used with an `In…` prefix) are easily emulatable but their character data would significantly increase library weight. They're also a flawed and arguably-unuseful feature, given the ability to use Unicode scripts and other properties. | ||
3. With target `ES2018`, the specific POSIX classes `[:graph:]` and `[:print:]` use ASCII-based versions rather than the Unicode versions available for target `ES2024` and later, and they result in an error if using strict `accuracy`. | ||
@@ -962,3 +971,3 @@ 4. Target `ES2018` doesn't support nested *negated* character classes. | ||
- Character class intersection and nested negated character classes are unsupported with target `ES2018`. Use target `ES2024` or later if you need support for these Oniguruma features. | ||
- Character class intersection and nested negated character classes are unsupported with target `ES2018`. Use target `ES2024` or later if you need support for these features. | ||
- With targets before `ESNext`, a handful of Unicode properties that target a specific character case (ex: `\p{Lower}`) can't be used case-insensitively in patterns that contain other characters with a specific case that are used case-sensitively. | ||
@@ -979,1 +988,8 @@ - In other words, almost every usage is fine, including `A\p{Lower}`, `(?i:A\p{Lower})`, `(?i:A)\p{Lower}`, `(?i:A(?-i:\p{Lower}))`, and `\w(?i:\p{Lower})`, but not `A(?i:\p{Lower})`. | ||
© 2024–present. MIT License. | ||
<!-- Badges --> | ||
[npm-version-src]: https://img.shields.io/npm/v/oniguruma-to-es?color=78C372 | ||
[npm-version-href]: https://npmjs.com/package/oniguruma-to-es | ||
[bundle-src]: https://img.shields.io/bundlejs/size/oniguruma-to-es?color=78C372&label=minzip | ||
[bundle-href]: https://bundlejs.com/?q=oniguruma-to-es&treeshake=[*] |
/** | ||
Generates a `regex`-compatible `pattern`, `flags`, and `options` from a `regex` AST. | ||
Generates a Regex+ compatible `pattern`, `flags`, and `options` from a Regex+ AST. | ||
@param {import('./transform.js').RegexAst} ast | ||
@@ -4,0 +4,0 @@ @param {import('.').Options} [options] |
@@ -24,10 +24,10 @@ export type RegexAst = { | ||
/** | ||
Transforms an Oniguruma AST in-place to a [`regex`](https://github.com/slevithan/regex) AST. | ||
Transforms an Oniguruma AST in-place to a [Regex+](https://github.com/slevithan/regex) AST. | ||
Targets `ESNext`, expecting the generator to then down-convert to the desired JS target version. | ||
`regex`'s syntax and behavior is a strict superset of native JavaScript, so the AST is very close | ||
Regex+'s syntax and behavior is a strict superset of native JavaScript, so the AST is very close | ||
to representing native ESNext `RegExp` but with some added features (atomic groups, possessive | ||
quantifiers, recursion). The AST doesn't use some of `regex`'s extended features like flag `x` or | ||
quantifiers, recursion). The AST doesn't use some of Regex+'s extended features like flag `x` or | ||
subroutines because they follow PCRE behavior and work somewhat differently than in Oniguruma. The | ||
AST represents what's needed to precisely reproduce Oniguruma behavior using `regex`. | ||
AST represents what's needed to precisely reproduce Oniguruma behavior using Regex+. | ||
@param {import('./parse.js').OnigurumaAst} ast | ||
@@ -34,0 +34,0 @@ @param {{ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
680663
4030
981