{"mappings":";AAEA,IAAIA,EAAoB,KAAM,CAC7B,SACA,QACA,QACA,YAAYC,EAAUC,EAAU,CAAC,EAAG,CACnC,KAAK,SAAWD,EAChB,KAAK,QAAUC,EACf,GAAM,CAAE,UAAAC,EAAY,GAAO,MAAAC,EAAO,iBAAAC,CAAiB,EAAIH,EACvD,GAAI,CAACG,EAAkB,MAAM,IAAI,MAAM,2CAA2C,EAClF,KAAK,QAAUJ,EAAS,IAAKK,GAAM,CAClC,GAAI,OAAOA,GAAM,SAAU,OAAOA,EAClC,IAAMC,EAASH,GAAO,IAAIE,CAAC,EAC3B,GAAIC,EAAQ,CACX,GAAIA,aAAkB,OAAQ,OAAOA,EACrC,GAAIJ,EAAW,OAAO,KACtB,MAAMI,CACP,CACA,GAAI,CACH,IAAMC,EAAQH,EAAiBC,CAAC,EAChC,OAAAF,GAAO,IAAIE,EAAGE,CAAK,EACZA,CACR,OAASC,EAAG,CAEX,GADAL,GAAO,IAAIE,EAAGG,CAAC,EACXN,EAAW,OAAO,KACtB,MAAMM,CACP,CACD,CAAC,CACF,CACA,kBAAkBC,EAAQC,EAAeC,EAAU,CAClD,IAAMC,EAAM,OAAOH,GAAW,SAAWA,EAASA,EAAO,QACnDI,EAAU,CAAC,EACjB,SAASC,EAASC,EAAOC,EAAOC,EAAS,EAAG,CAC3C,MAAO,CACN,MAAAF,EACA,eAAgBC,EAAM,QAAQ,IAAKE,GAC9BA,GAAU,KAAa,CAC1B,MAAO,WACP,IAAK,WACL,OAAQ,CACT,EACO,CACN,MAAOA,EAAO,CAAC,EAAID,EACnB,IAAKC,EAAO,CAAC,EAAID,EACjB,OAAQC,EAAO,CAAC,EAAIA,EAAO,CAAC,CAC7B,CACA,CACF,CACD,CACA,QAASC,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC7C,IAAMC,EAAS,KAAK,QAAQD,CAAC,EAC7B,GAAKC,EACL,GAAI,CACHA,EAAO,UAAYV,EACnB,IAAMM,EAAQI,EAAO,KAAKR,CAAG,EAC7B,GAAI,CAACI,EAAO,SACZ,GAAIA,EAAM,QAAUN,EAAe,OAAOI,EAASK,EAAGH,EAAO,CAAC,EAC9DH,EAAQ,KAAK,CACZM,EACAH,EACA,CACD,CAAC,CACF,OAAS,EAAG,CACX,GAAI,KAAK,QAAQ,UAAW,SAC5B,MAAM,CACP,CACD,CACA,GAAIH,EAAQ,OAAQ,CACnB,IAAMQ,EAAW,KAAK,IAAI,GAAGR,EAAQ,IAAKS,GAAMA,EAAE,CAAC,EAAE,KAAK,CAAC,EAC3D,OAAW,CAACH,EAAGH,EAAOC,CAAM,IAAKJ,EAAS,GAAIG,EAAM,QAAUK,EAAU,OAAOP,EAASK,EAAGH,EAAOC,CAAM,CACzG,CACA,OAAO,IACR,CACD","names":["JavaScriptScanner","patterns","options","forgiving","cache","regexConstructor","p","cached","regex","e","string","startPosition","_options","str","pending","toResult","index","match","offset","indice","i","regexp","minIndex","m"],"sources":["../esm/npm/@shikijs/engine-javascript@4.4.3/node_modules/@shikijs/engine-javascript/dist/scanner-DX8LRFGE.mjs"],"sourcesContent":["//#region src/scanner.ts\nconst MAX = 4294967295;\nvar JavaScriptScanner = class {\n\tpatterns;\n\toptions;\n\tregexps;\n\tconstructor(patterns, options = {}) {\n\t\tthis.patterns = patterns;\n\t\tthis.options = options;\n\t\tconst { forgiving = false, cache, regexConstructor } = options;\n\t\tif (!regexConstructor) throw new Error(\"Option `regexConstructor` is not provided\");\n\t\tthis.regexps = patterns.map((p) =\u003e {\n\t\t\tif (typeof p !== \"string\") return p;\n\t\t\tconst cached = cache?.get(p);\n\t\t\tif (cached) {\n\t\t\t\tif (cached instanceof RegExp) return cached;\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow cached;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst regex = regexConstructor(p);\n\t\t\t\tcache?.set(p, regex);\n\t\t\t\treturn regex;\n\t\t\t} catch (e) {\n\t\t\t\tcache?.set(p, e);\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tfindNextMatchSync(string, startPosition, _options) {\n\t\tconst str = typeof string === \"string\" ? string : string.content;\n\t\tconst pending = [];\n\t\tfunction toResult(index, match, offset = 0) {\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tcaptureIndices: match.indices.map((indice) =\u003e {\n\t\t\t\t\tif (indice == null) return {\n\t\t\t\t\t\tstart: MAX,\n\t\t\t\t\t\tend: MAX,\n\t\t\t\t\t\tlength: 0\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: indice[0] + offset,\n\t\t\t\t\t\tend: indice[1] + offset,\n\t\t\t\t\t\tlength: indice[1] - indice[0]\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t\tfor (let i = 0; i \u003c this.regexps.length; i++) {\n\t\t\tconst regexp = this.regexps[i];\n\t\t\tif (!regexp) continue;\n\t\t\ttry {\n\t\t\t\tregexp.lastIndex = startPosition;\n\t\t\t\tconst match = regexp.exec(str);\n\t\t\t\tif (!match) continue;\n\t\t\t\tif (match.index === startPosition) return toResult(i, match, 0);\n\t\t\t\tpending.push([\n\t\t\t\t\ti,\n\t\t\t\t\tmatch,\n\t\t\t\t\t0\n\t\t\t\t]);\n\t\t\t} catch (e) {\n\t\t\t\tif (this.options.forgiving) continue;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tif (pending.length) {\n\t\t\tconst minIndex = Math.min(...pending.map((m) =\u003e m[1].index));\n\t\t\tfor (const [i, match, offset] of pending) if (match.index === minIndex) return toResult(i, match, offset);\n\t\t}\n\t\treturn null;\n\t}\n};\n//#endregion\nexport { JavaScriptScanner as t };\n"],"version":3}
