{"_id":"@ericcornelissen/lregexp","_rev":"16-d27f2f0ecee1b4a9b982924723ef1b41","name":"@ericcornelissen/lregexp","dist-tags":{"latest":"1.0.13"},"versions":{"1.0.1":{"name":"@ericcornelissen/lregexp","version":"1.0.1","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.1","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/depreman#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"99ad9bc07cfb1d179871aa4ace8a9764852143c2","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.1.tgz","fileCount":4,"integrity":"sha512-C0RkEMhewfyddOHx8CqTCgnWT2tSalQ8MslCfujQyUDWd0bnNcuvVkCWMdYRYKev6Npa9AO1z75qN/p4ekvAHA==","signatures":[{"sig":"MEUCIQCk6/CIC1XounF/RXo7jE34C9kEcWxNo8w0FaVXMez4LwIgF1w4VX2E/6v/5tdxhAKM9uz6NwBck8V2BzNcNZnEZTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2907},"type":"module","exports":"./index.js","gitHead":"1e3d5a3d73755425a9fc55e4fdcbdd4d8a97b0bc","_npmUser":{"name":"ericcornelissen","email":"ericornelissen@gmail.com"},"repository":{"url":"git+https://github.com/ericcornelissen/depreman.git","type":"git"},"_npmVersion":"10.9.2","description":"Transparently create linear-time regular expressions","directories":{},"_nodeVersion":"22.15.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.1_1755547479101_0.34884966191925293","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ericcornelissen/lregexp","version":"1.0.2","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.2","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"fae1ddbb9bfaaaf36d56318430f84b30518384fc","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.2.tgz","fileCount":4,"integrity":"sha512-ibFxhRP4wJ2zKlfXnZFQaoGOmbwQhjWTO/MjU/7GpdRS25P7kSeUacgGPZGyfg+GDrXaVXGsATlAz3ZkbrhChg==","signatures":[{"sig":"MEUCIHctbJ2cu3baKy/HrLzg8wTv0YvliUgnhDlcGwTYXJbAAiEAizQz4z0UJY+qtSq4S210IIiHm9dS1JoJ86eY8YSFNSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2906},"type":"module","exports":"./index.js","gitHead":"d0110c22410f61bfb73463889132a752cbf109c3","_npmUser":{"name":"ericcornelissen","email":"ericornelissen@gmail.com"},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"10.9.2","description":"Transparently create linear-time regular expressions","directories":{},"_nodeVersion":"22.15.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.2_1755812555448_0.08616043233272741","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ericcornelissen/lregexp","version":"1.0.3","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.3","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"d6e3c280492705ff07eeb2791ef59fdb57c60cf1","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.3.tgz","fileCount":6,"integrity":"sha512-LGb0CojMzzVNfBv3xWgmFSN208Q91mSl/Zhkf2bUfY0Ba8dgGff4LkzvQfMCvyBIIeA6FL+GCaqw0WJqkMrQBg==","signatures":[{"sig":"MEUCIQDGEl7x5u0hBux6YlPfibgvqH88d3SaXpEclhMupC2xNwIgXYGMLKerwzq6RS6nzIcRKA82B9liNcRZkXs2UqmyP+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4898},"type":"module","exports":{".":{"import":"./index.js","require":"./index.cjs"}},"gitHead":"9637521707deaa6d11ad85596717c607f478dc33","_npmUser":{"name":"ericcornelissen","email":"ericornelissen@gmail.com"},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.3.0","description":"Transparently create linear-time regular expressions","directories":{},"_nodeVersion":"24.0.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.3_1766680919432_0.48205492071046896","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@ericcornelissen/lregexp","version":"1.0.4","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.4","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"d0d156f7d37ae7ac479f99a0a1ebc475d0f5f4a8","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.4.tgz","fileCount":7,"integrity":"sha512-4JD7QmxI6ogjLktYiBub2YTIXuIdHr9+k9cXI5kdMA7kKnSbajDJ7NGR7ch3IWQpNocogxDmMo1CmQsxkWe7ag==","signatures":[{"sig":"MEUCIH8Qc3nRfpTYWrm8skQw4wPC1/qa11leIqpo9GHXEhsIAiEA6DCATlqdYUJTmDaJmZDbCqiHPgcllgZre2i6udstkkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4889},"type":"module","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"754e7ea67fcfdb6659f17830085c68bbb1df340e","_npmUser":{"name":"ericcornelissen","email":"ericornelissen@gmail.com"},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"6.14.15","description":"Transparently create linear-time regular expressions","directories":{},"_nodeVersion":"14.18.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.4_1766755044857_0.3721972323264995","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ericcornelissen/lregexp","version":"1.0.5","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.5","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"ab8dd7c0907ed53f47f17b3564478e68dfdf0348","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.5.tgz","fileCount":7,"integrity":"sha512-Ip/qJbDH9hzhmBq1a9U2cIRk02sGUuF/9gPiQ6TaZCWpFkW/htqe25l23fMNHifvWK5YfoEiIEuHpBqQtdzi+A==","signatures":[{"sig":"MEQCIEvAqN50iYzK/nZLsSsjnyKZmjm73LPQtHz7Iorx1VeQAiBaV8H3lumxjDI7HEb2+r7xw2NLDtBqkCSF2u0XXslAiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5021},"type":"module","types":"./index.d.ts","engines":{"node":"^12.20.0 || ^14.13.0 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"fdcf22b509ff0789fa03e719370d47cf5686bb3d","_npmUser":{"name":"ericcornelissen","email":"ericornelissen@gmail.com"},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.6.2","description":"Transparently create linear-time regular expressions","directories":{},"_nodeVersion":"24.12.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.5_1766767548268_0.4228920099005564","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ericcornelissen/lregexp","version":"1.0.6","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.6","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"b69fce81ded7275cdc48ed7559cd21723df8edbc","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.6.tgz","fileCount":8,"integrity":"sha512-7mxbs+nHP9xy8IBuxiJ0fy75bxa4O62HHVv57mutwqfA6JphbSdfKbHrDCNJwpEJnbB7Qa9rBDipYM4a0BWR8Q==","signatures":[{"sig":"MEYCIQCRs/yLMfWeE1ZnCX7Su8YJeBDQwIu/KUjki+xjYqVWDAIhALlAWbacsaG7Z4T5ZAW9QYj51UC1XdTl1k3EYDMVRjCz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7270},"type":"module","types":"./index.d.ts","engines":{"node":"^12.20.0 || ^14.13.0 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"151e23655cbc9bb51d08efc54c167847a3821b3f","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.6.2","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"24.12.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.6_1767689555640_0.33872116652042883","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@ericcornelissen/lregexp","version":"1.0.7","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.7","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"0105aaaa7dcc18e3ed905645da3674e8eb12a9c0","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.7.tgz","fileCount":8,"integrity":"sha512-1FFCOKq49eWRCinu3VuTfV1jv0kgeSET89OHDAUDaASzvIpwmh2/nFUayoEXB65mPT3atgECjlu3KVTIQU7jhw==","signatures":[{"sig":"MEQCIDtRW052VQczdYXJV4mv0IOKlPXnMxyLYcr5swx+ORGgAiA4/bpiPZUshcqQMzZcnQYDBuHJwH5waEXvF72HU3nc2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9022},"type":"module","types":"./index.d.ts","engines":{"node":"^12.20.0 || ^14.13.0 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"c2a3c5dc84e8d01de5328c893f4119fc4c6e61d8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.6.2","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"24.12.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.7_1768770094766_0.0977040378491354","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@ericcornelissen/lregexp","version":"1.0.8","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.8","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"fcdc7635138bd8d74f057b4aadd9c1cec070c4ab","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.8.tgz","fileCount":8,"integrity":"sha512-asaQOkMr8CzYVpmCnBvEe8zejcv8Q1+f3Q1qssOF85njH1VTJfSQUYwwClE41SRdvZmN26uL08GuQk04VN2myA==","signatures":[{"sig":"MEUCIH0mT9dzphDP1yUyc9AELSq8RLGe1It0OWLCPUiO25GcAiEA87vIin9RbnSLZkSq4k+qlyd+BOW44Ap8Ki0K3An4gfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9347},"type":"module","types":"./index.d.ts","engines":{"bun":"^1.2.0","deno":"^2.0.0","node":"^12.20.0 || ^14.13.0 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"411fc254868ed5e90ffa59281c9e437c8300b5e6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.6.2","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"24.12.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.8_1772639255666_0.8430554168859641","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@ericcornelissen/lregexp","version":"1.0.9","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.9","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"b6cee2df498c53e719a385ee53bfdd08ce2dc45a","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.9.tgz","fileCount":8,"integrity":"sha512-Dr5VFLiaimf7Vg3Ohd3+SNpxF0/8S45z04yShWyvoTO5DDu63DW1HGtoXsPspDP1/RMxxAdqcGjqme2fwT2k/A==","signatures":[{"sig":"MEQCIHhQd0Zn6GE6t0+G4JsNfX8CK3hNPwNRQqKhGZWFqyD5AiBCDW0WXRV4xL5N240Yp6fPIi7H8wkyS7LIhWcMm4GhCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9358},"type":"module","types":"./index.d.ts","engines":{"bun":"^1.2.0","deno":"^2.0.0","node":"^12.20.0 || ^14.13.0 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25 || ^26"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"932ca4221281bdbeb987094ccf56007b76fe2a3a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.12.1","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"26.0.0","dependencies":{"is-supported-regexp-flag":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.9_1778054004986_0.043553629283140216","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@ericcornelissen/lregexp","version":"1.0.10","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.10","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"de8a1fae19e6604e8161da99faf61321a6159de6","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.10.tgz","fileCount":8,"integrity":"sha512-FnzJ7h8pOIVRQ9wFEBNMRTC9sNA1bQ7Caa+9U8G9kgMzMAeRhE7ZMvf0gpny8vLPEPnnOBtUw0ClolZxvGVzuA==","signatures":[{"sig":"MEQCIGG5lEw0GULalaOSJtJRiVNRriVFaseB9uKOt1B0tRtgAiBClDKSWflurRbnOkUdaNeZajYKeFXbE6jdfZ5RkgudoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10591},"type":"module","types":"./index.d.ts","engines":{"bun":"^1.2.0","deno":"^2.0.0","node":"^9 || ^10 || ^11 || ^12 || ^13 || ^14 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25 || ^26"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"3f3343eabef007817913893a925baa120f2e838d","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.12.1","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0","is-supported-regexp-flag":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.10_1780525651692_0.9504909458448199","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@ericcornelissen/lregexp","version":"1.0.11","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.11","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"b00214f8d41814e463e768970c5e90ea1dccf0d0","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.11.tgz","fileCount":8,"integrity":"sha512-2C7O6IehECTp94UQSkGsOyJz2z0JGfjhpEJc+ofON9Z6HrHAcKl8jib2pjdhlvLrRlXZZcio/3m4VfgSzTWtqA==","signatures":[{"sig":"MEUCIQCTqLT5TAoxaDdhKFnWqv/4pVmAhsgs7B0OTRco/USglgIgMZZ67UI3nMCTwu7t8x/HiWBc7hDRnHS61lF3v25ZPVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10881},"type":"module","types":"./index.d.ts","engines":{"bun":"^1.2.0","deno":"^1.40.0 || ^2.0.0","node":"^8 || ^9 || ^10 || ^11 || ^12 || ^13 || ^14 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25 || ^26"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"d6055455245dad9e5ce8903c4f563a2629f3a7b2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.12.1","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0","mock-property":"1.1.0","is-supported-regexp-flag":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.11_1781448283178_0.5814618334854389","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@ericcornelissen/lregexp","version":"1.0.12","keywords":["regexp","regex","linear","flag"],"author":{"url":"https://ericcornelissen.dev/","name":"Eric Cornelissen","email":"ericornelissen@gmail.com"},"license":"MIT","_id":"@ericcornelissen/lregexp@1.0.12","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"homepage":"https://github.com/ericcornelissen/lregexp#readme","bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"dist":{"shasum":"ef8a8e16b76d4fa2cbbb2329995f78bea6328396","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.12.tgz","fileCount":8,"integrity":"sha512-7er9+oteTfeHAmlXliv1PHtd/pthRIR+i/oBxfftj0sXpRPlyJ/bHUjD8vBhlQqwRVtgCK8xcVX56OIAZ2rKIQ==","signatures":[{"sig":"MEYCIQCIlrIkU04uMLZYtXrPzLR9sQWXUOC9sBLCEsKfHmQHZQIhAJb1XTGcnmBEUOCxQT5jb2uxg2gH4cXSv/x8BsGzKA4h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13033},"type":"module","types":"./index.d.ts","engines":{"bun":"^1.2.0","deno":"^1.40.0 || ^2.0.0","node":"^4 || ^5 || ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || ^13 || ^14 || ^15 || ^16 || ^17 || ^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25 || ^26"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"gitHead":"8911b3225fb793a36bc09e6a02e8e661073cfe8b","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"repository":{"url":"git+https://github.com/ericcornelissen/lregexp.git","type":"git"},"_npmVersion":"11.12.1","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"tinybench":"6.0.0","fast-check":"4.8.0","mock-property":"1.1.0","is-supported-regexp-flag":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lregexp_1.0.12_1781768594540_0.16802237102159512","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@ericcornelissen/lregexp","description":"Transparent linear-time (non-backtracking) regular expressions for libraries","version":"1.0.13","license":"MIT","type":"module","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.cjs"}},"bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"repository":{"type":"git","url":"git+https://github.com/ericcornelissen/lregexp.git"},"engines":{"bun":">=1.0.0 <2","deno":">=1.40.0 <1.45 || >=2.0.0 <3","node":"^0.8.6 || >=0.9.1 <27"},"author":{"name":"Eric Cornelissen","email":"ericornelissen@gmail.com","url":"https://ericcornelissen.dev/"},"keywords":["regexp","regex","linear","flag"],"devDependencies":{"fast-check":"4.8.0","is-supported-regexp-flag":"2.0.0","mock-property":"1.1.0","tinybench":"6.0.0"},"gitHead":"2d416c8d0033f38a1bbf19837c9128ef55ff4168","types":"./index.d.ts","_id":"@ericcornelissen/lregexp@1.0.13","homepage":"https://github.com/ericcornelissen/lregexp#readme","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-drm2lOgdniaP4e5CQ98Ike25yfNeM0ZtNDXMamU6NmjYkrSHnPhH2XERDRtl4Xnvm71afLqXEjbmEupNmNdtdg==","shasum":"484b71dc8c0e17148756da4876606011f2a7a4df","tarball":"https://registry.npmjs.org/@ericcornelissen/lregexp/-/lregexp-1.0.13.tgz","fileCount":8,"unpackedSize":12918,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ericcornelissen%2flregexp@1.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCsFelexgCT9bxkph469/EGwevrZVKeZzNfy5AV6GlmjgIgUW0EmGCFma8cq4Yh6dlG+PZeJjSCqhRlF21DtEFi9lg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cc8cd8af-d8c9-4f45-ad44-c75d17324876"}},"directories":{},"maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lregexp_1.0.13_1781967119171_0.871925463030917"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-18T20:04:38.984Z","modified":"2026-06-20T14:51:59.670Z","1.0.0":"2025-08-18T20:00:35.993Z","1.0.1":"2025-08-18T20:04:39.291Z","1.0.2":"2025-08-21T21:42:35.635Z","1.0.3":"2025-12-25T16:41:59.590Z","1.0.4":"2025-12-26T13:17:25.021Z","1.0.5":"2025-12-26T16:45:48.464Z","1.0.6":"2026-01-06T08:52:35.795Z","1.0.7":"2026-01-18T21:01:34.907Z","1.0.8":"2026-03-04T15:47:35.820Z","1.0.9":"2026-05-06T07:53:25.122Z","1.0.10":"2026-06-03T22:27:31.845Z","1.0.11":"2026-06-14T14:44:43.308Z","1.0.12":"2026-06-18T07:43:14.684Z","1.0.13":"2026-06-20T14:51:59.300Z"},"bugs":{"url":"https://github.com/ericcornelissen/lregexp/issues"},"author":{"name":"Eric Cornelissen","email":"ericornelissen@gmail.com","url":"https://ericcornelissen.dev/"},"license":"MIT","homepage":"https://github.com/ericcornelissen/lregexp#readme","keywords":["regexp","regex","linear","flag"],"repository":{"type":"git","url":"git+https://github.com/ericcornelissen/lregexp.git"},"description":"Transparent linear-time (non-backtracking) regular expressions for libraries","maintainers":[{"name":"ericcornelissen","email":"ericornelissen@gmail.com"}],"readme":"<!-- SPDX-License-Identifier: CC0-1.0 -->\n\n# lRegExp\n\nTransparent linear-time ([non-backtracking]) regular expressions for libraries.\n\n[non-backtracking]: https://v8.dev/blog/non-backtracking-regexp\n\n## Usage\n\nThis package exports a drop-in replacement for the built-in RegExp ([caveats]\napply).\n\n1. Install\n\n   ```shell\n   npm install @ericcornelissen/lregexp\n   ```\n\n2. Import\n\n   ```javascript\n   import RegExp from \"@ericcornelissen/lregexp\";\n   ```\n\n3. Use\n\n   ```javascript\n   new RegExp(\"[linear]{6}\");\n   ```\n\n[caveats]: #caveats\n\n### Runtimes\n\nThis package is compatible with Node.js, Deno, Bun, and major browsers. It only\ntakes effect in V8-based runtimes (Node.js, Deno, Chromium-based browsers) when\nthe experimental linear-time engine is enabled. Otherwise it falls back to the\ndefault `RegExp` constructor.\n\nTo enable the linear-time regular expression engine:\n\n- **Node.js**: use `node --enable-experimental-regexp-engine entrypoint.js`\n- **Deno**: use `DENO_V8_FLAGS=\"--enable-experimental-regexp-engine\" deno entrypoint.ts`\n\n## Background\n\n### Why\n\nBacktracking regular expressions can take exponential time to evaluate, leading\nto the dreaded _ReDoS_ vulnerability. Linear-time regular expressions avoid this\nby not backtracking.\n\nIn V8-based runtimes, linear-time regular expressions can be created using the\n`l` flag provided the `--enable-experimental-regexp-engine` CLI option is used.\nThis makes it difficult for library authors to tap into. Using this package, a\nlibrary can use the RegExp constructor as usual and benefit from the linear time\nregular expression engine when its users enable it. If they don't, it gracefully\nfalls back to the default constructor.\n\n### Caveats\n\nNot all valid JavaScript regular expressions are supported when using the\n`--enable-experimental-regexp-engine` CLI option. This package won't tell you if\nyour regular expressions are incompatible, unless you run it with that CLI\noption. If a regular expression is incompatible, the constructor will throw a\n[SyntaxError].\n\nTo support users of this package in writing compatible regular expressions we're\ninterested in:\n\n- an ESLint plugin to lint regular expressions and raise warnings for the use of\n  regex features not supported by the non-backtracking engine; ([#4])\n- a tool (CLI/web) to check a given regular expression for compatibility with\n  the non-backtracking engine. ([#21])\n\n[#4]: https://github.com/ericcornelissen/lregexp/issues/4\n[#21]: https://github.com/ericcornelissen/lregexp/issues/21\n[syntaxerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError\n\n### Example\n\nA classic example of a ReDoS-vulnerable regular expression is `(a*)*b`. Using\nthis with vanilla Node.js on a pathological input string takes quite some time,\ntest it for yourself with (add an `a` and the runtime doubles):\n\n```shell\nnode -e '/(a*)*b/.test(\"aaaaaaaaaaaaaaaaaaaaaaaaac\")'\n```\n\nWhen the non-backtracking regular expression engine is enabled, the expression\nevaluates instantly:\n\n```shell\nnode -e '/(a*)*b/l.test(\"aaaaaaaaaaaaaaaaaaaaaaaaac\")' --enable-experimental-regexp-engine\n```\n\n## Rewriting\n\nThe following are some suggestions for rewriting regular expressions from\nJavaScript's standard engine to the linear-time engine. These suggestions are\nnot universally applicable and careful testing is still required.\n\n- Positive lookahead (`(?=...)`) when _replacing_\n\n  Capture the lookahead and restore it (using `$<n>`) when replacing. For\n  example: `replace(/(a(?=b)/, \"A\")` to `replace(/a(b)/, \"A$1\")`.\n\n- Negative lookahead (`(?!...)`) when _replacing_\n\n  Capture the lookahead, invert the match, add an end-of-string anchor (`$`),\n  and restore it (using `$<n>`) when replacing. For example:\n  `replace(/(a(?!b)/, \"A\")` to `replace(/a([^b]|$)/, \"A$1\")`.\n\n- `i` flag when _testing_\n\n  Write the regular expression to match lowercase strings and convert strings to\n  lowercase (using `.toLowerCase()`) before matching them.\n\n### Testing\n\nWe recommend using [differential testing] using [fast-check] when rewriting\nregular expressions. You can use the following test example as a template:\n\n```javascript\n// Run as: node --test --enable-experimental-regexp-engine rewrite_test.js\n\nimport { test } from \"node:test\";\n\nimport lRegExp from \"@ericcornelissen/lregexp\";\nimport * as fc from \"fast-check\";\n\ntest(\"rewritten regular expression\", () => {\n  const original = /old regular expression/;\n  const rewritten = new lRegExp(/new regular expression/);\n\n  fc.assert(\n    fc.property(\n      fc.oneof(\n        // any old string, unlikely to match\n        fc.string(), \n\n        // strings that should match (limited support)\n        fc.stringMatching(original), \n      ),\n      (s) => original.test(s) === rewritten.test(s)\n    ),\n  );\n});\n\ntest(\"--enable-experimental-regexp-engine\", () => {\n  /ensures that the linear engine is enabled/l;\n});\n```\n\n[differential testing]: https://en.wikipedia.org/wiki/Differential_testing\n[fast-check]: https://fast-check.dev/\n\n## License\n\nThe source code is licensed under the MIT license, see [LICENSE] for the full\nlicense text. The documentation text is licensed under CC0-1.0; code snippets\nunder the MIT-0 license.\n\n[LICENSE]: ./LICENSE\n","readmeFilename":"README.md"}