Files
Tiber365/node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs

50 lines
1.5 KiB
JavaScript

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 };