import { toRegExp } from 'oniguruma-to-es'; import { J as JavaScriptScanner } from './shared/engine-javascript.hzpS1_41.mjs'; function defaultJavaScriptRegexConstructor(pattern, options) { return toRegExp( pattern, { global: true, hasIndices: true, rules: { // Needed since TextMate grammars merge backrefs across patterns allowOrphanBackrefs: true, // Improves search performance for generated regexes asciiWordBoundaries: true, // Follow `vscode-oniguruma` which enables this Oniguruma option by default captureGroup: true, // Oniguruma uses depth limit `20`; lowered here to keep regexes shorter and maybe // sometimes faster, but can be increased if issues reported due to low limit recursionLimit: 5, // Oniguruma option for `^`->`\A`, `$`->`\Z`; improves search performance without any // change in meaning since TM grammars search line by line singleline: true }, ...options } ); } function createJavaScriptRegexEngine(options = {}) { const _options = Object.assign( { target: "auto", cache: /* @__PURE__ */ new Map() }, options ); _options.regexConstructor ||= (pattern) => defaultJavaScriptRegexConstructor(pattern, { target: _options.target }); return { createScanner(patterns) { return new JavaScriptScanner(patterns, _options); }, createString(s) { return { content: s }; } }; } export { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor };