fuzzy-regex
Version:
A regular expression library for Node.js that allows for a configurable number of mismatches (fuzzy matching), powered by the high-performance [TRE](https://laurikari.net/tre/) regex engine. This package supports both ESM and CommonJS, and provides a simp
1 lines • 3.95 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../node_modules/tsup/assets/cjs_shims.js","../src/tre.ts"],"sourcesContent":["import { Tre } from \"./tre\";\n\nexport type FuzzyRegex = {\n test: (str: string, maxErrors?: number) => boolean;\n exec: (str: string, maxErrors?: number) => string[] | null;\n};\n\nexport function fuzzyRegex(\n pattern: string | RegExp,\n caseInsensitive?: boolean\n): FuzzyRegex {\n const patternString = pattern instanceof RegExp ? pattern.source : pattern;\n let insensitive = true;\n if (caseInsensitive !== undefined) {\n insensitive = caseInsensitive;\n } else if (pattern instanceof RegExp) {\n insensitive = pattern.ignoreCase;\n }\n\n if (\n caseInsensitive !== undefined &&\n pattern instanceof RegExp &&\n pattern.ignoreCase !== caseInsensitive\n ) {\n throw new Error(\"Case sensitivity mismatch\");\n }\n\n const tre = new Tre(patternString, insensitive);\n return {\n test: (str: string, maxErrors?: number): boolean => {\n let errs = 0;\n if (maxErrors === undefined) {\n const min = Math.min(str.length, patternString.length);\n errs = Math.floor(min / 5) + (min % 5 > 2 ? 1 : 0);\n } else {\n errs = maxErrors;\n }\n return tre.fuzzy(str, errs);\n },\n exec: (str: string, maxErrors?: number): string[] | null => {\n let errs = 0;\n if (maxErrors === undefined) {\n const min = Math.min(str.length, patternString.length);\n errs = Math.floor(min / 5) + (min % 5 > 2 ? 1 : 0);\n } else {\n errs = maxErrors;\n }\n return tre.fuzzyExec(str, errs);\n },\n };\n}\n","// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL(`file:${__filename}`).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { TreClass } from \"./types\";\nimport { createRequire } from \"module\";\n\nconst require = createRequire(import.meta.url);\nconst path = \"./tre.node\";\nconst addon = require(path);\n\nlet TreLib: typeof TreClass | undefined;\n\nif (typeof addon === \"object\") {\n TreLib = addon.Tre;\n}\nif (typeof addon === \"string\") {\n TreLib = require(addon).Tre;\n}\n\nif (!TreLib) {\n throw new Error(\"Failed to load tre\");\n}\n\nexport const Tre = TreLib;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKA,IAAM,mBAAmB,MACvB,OAAO,aAAa,cAChB,IAAI,IAAI,QAAQ,UAAU,EAAE,EAAE,OAC7B,SAAS,iBAAiB,SAAS,cAAc,OAClD,IAAI,IAAI,WAAW,SAAS,OAAO,EAAE;AAEpC,IAAM,gBAAgC,iCAAiB;;;ACV9D,oBAA8B;AAE9B,IAAMA,eAAU,6BAAc,aAAe;AAC7C,IAAM,OAAO;AACb,IAAM,QAAQA,SAAQ,IAAI;AAE1B,IAAI;AAEJ,IAAI,OAAO,UAAU,UAAU;AAC7B,WAAS,MAAM;AACjB;AACA,IAAI,OAAO,UAAU,UAAU;AAC7B,WAASA,SAAQ,KAAK,EAAE;AAC1B;AAEA,IAAI,CAAC,QAAQ;AACX,QAAM,IAAI,MAAM,oBAAoB;AACtC;AAEO,IAAM,MAAM;;;AFbZ,SAAS,WACd,SACA,iBACY;AACZ,QAAM,gBAAgB,mBAAmB,SAAS,QAAQ,SAAS;AACnE,MAAI,cAAc;AAClB,MAAI,oBAAoB,QAAW;AACjC,kBAAc;AAAA,EAChB,WAAW,mBAAmB,QAAQ;AACpC,kBAAc,QAAQ;AAAA,EACxB;AAEA,MACE,oBAAoB,UACpB,mBAAmB,UACnB,QAAQ,eAAe,iBACvB;AACA,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,QAAM,MAAM,IAAI,IAAI,eAAe,WAAW;AAC9C,SAAO;AAAA,IACL,MAAM,CAAC,KAAa,cAAgC;AAClD,UAAI,OAAO;AACX,UAAI,cAAc,QAAW;AAC3B,cAAM,MAAM,KAAK,IAAI,IAAI,QAAQ,cAAc,MAAM;AACrD,eAAO,KAAK,MAAM,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI;AAAA,MAClD,OAAO;AACL,eAAO;AAAA,MACT;AACA,aAAO,IAAI,MAAM,KAAK,IAAI;AAAA,IAC5B;AAAA,IACA,MAAM,CAAC,KAAa,cAAwC;AAC1D,UAAI,OAAO;AACX,UAAI,cAAc,QAAW;AAC3B,cAAM,MAAM,KAAK,IAAI,IAAI,QAAQ,cAAc,MAAM;AACrD,eAAO,KAAK,MAAM,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI;AAAA,MAClD,OAAO;AACL,eAAO;AAAA,MACT;AACA,aAAO,IAAI,UAAU,KAAK,IAAI;AAAA,IAChC;AAAA,EACF;AACF;","names":["require"]}