{"version":3,"file":"matchers.js","sources":["../../../src/import-protection-plugin/matchers.ts"],"sourcesContent":["import picomatch from 'picomatch'\n\nimport type { Pattern } from './utils'\n\nexport interface CompiledMatcher {\n  pattern: Pattern\n  test: (value: string) => boolean\n}\n\n/**\n * Compile a Pattern (string glob or RegExp) into a fast test function.\n * String patterns use picomatch for full glob support (**, *, ?, braces, etc.).\n * RegExp patterns are used as-is.\n */\nexport function compileMatcher(pattern: Pattern): CompiledMatcher {\n  if (pattern instanceof RegExp) {\n    // RegExp with `g` or `y` flags are stateful because `.test()` mutates\n    // `lastIndex`. Reset it to keep matcher evaluation deterministic.\n    return {\n      pattern,\n      test: (value: string) => {\n        pattern.lastIndex = 0\n        return pattern.test(value)\n      },\n    }\n  }\n\n  const isMatch = picomatch(pattern, { dot: true })\n  return { pattern, test: isMatch }\n}\n\nexport function compileMatchers(\n  patterns: Array<Pattern>,\n): Array<CompiledMatcher> {\n  return patterns.map(compileMatcher)\n}\n\nexport function matchesAny(\n  value: string,\n  matchers: Array<CompiledMatcher>,\n): CompiledMatcher | undefined {\n  for (const matcher of matchers) {\n    if (matcher.test(value)) {\n      return matcher\n    }\n  }\n  return undefined\n}\n"],"names":[],"mappings":";AAcO,SAAS,eAAe,SAAmC;AAChE,MAAI,mBAAmB,QAAQ;AAG7B,WAAO;AAAA,MACL;AAAA,MACA,MAAM,CAAC,UAAkB;AACvB,gBAAQ,YAAY;AACpB,eAAO,QAAQ,KAAK,KAAK;AAAA,MAC3B;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,UAAU,UAAU,SAAS,EAAE,KAAK,MAAM;AAChD,SAAO,EAAE,SAAS,MAAM,QAAA;AAC1B;AAEO,SAAS,gBACd,UACwB;AACxB,SAAO,SAAS,IAAI,cAAc;AACpC;AAEO,SAAS,WACd,OACA,UAC6B;AAC7B,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;"}