{"_id":"super-regex","_rev":"200704","name":"super-regex","description":"Make a regular expression time out if it takes too long to execute","dist-tags":{"latest":"0.2.0"},"maintainers":[{"name":"sindresorhus","email":""}],"time":{"modified":"2023-03-20T10:09:59.000Z","created":"2022-06-03T10:07:15.252Z","0.2.0":"2022-07-07T11:08:08.211Z","0.1.0":"2022-06-03T10:07:15.252Z"},"users":{},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"repository":{"type":"git","url":"git+https://github.com/sindresorhus/super-regex.git"},"versions":{"0.2.0":{"name":"super-regex","version":"0.2.0","description":"Make a regular expression time out if it takes too long to execute","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/super-regex.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","engines":{"node":">=14.16"},"scripts":{"test":"xo && ava && tsd"},"keywords":["regex","regexp","regular","expression","timeout","time","out","cancel","expire","abort","redos","security","script","execute"],"dependencies":{"clone-regexp":"^3.0.0","function-timeout":"^0.1.0","time-span":"^5.1.0"},"devDependencies":{"ava":"^4.3.0","tsd":"^0.20.0","xo":"^0.49.0"},"gitHead":"2ec23494aa3628d434cdcb6492afdcb0ba1a4062","bugs":{"url":"https://github.com/sindresorhus/super-regex/issues"},"homepage":"https://github.com/sindresorhus/super-regex#readme","_id":"super-regex@0.2.0","_nodeVersion":"14.19.3","_npmVersion":"8.3.2","dist":{"shasum":"dc1e071e55cdcf56930eb6271f73653a655b2642","size":3039,"noattachment":false,"key":"/super-regex/-/super-regex-0.2.0.tgz","tarball":"http://name.csiicloud.com:7001/super-regex/download/super-regex-0.2.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/super-regex_0.2.0_1657192087959_0.8323758941429744"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-07-07T11:43:16.559Z","publish_time":1657192088211,"_cnpm_publish_time":1657192088211},"0.1.0":{"name":"super-regex","version":"0.1.0","description":"Make a regular expression time out if it takes too long to execute","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/super-regex.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","engines":{"node":">=14.16"},"scripts":{"test":"xo && ava && tsd"},"keywords":["regex","regexp","regular","expression","timeout","time","out","cancel","expire","abort","redos","security","script","execute"],"dependencies":{"clone-regexp":"^3.0.0","function-timeout":"^0.1.0"},"devDependencies":{"ava":"^4.3.0","tsd":"^0.20.0","xo":"^0.49.0"},"gitHead":"690235582ec311c062c429f282d83705b5f0de6c","bugs":{"url":"https://github.com/sindresorhus/super-regex/issues"},"homepage":"https://github.com/sindresorhus/super-regex#readme","_id":"super-regex@0.1.0","_nodeVersion":"14.19.2","_npmVersion":"8.3.2","dist":{"shasum":"7c15012feb1e26e6c64a333becffbd00fb6c6222","size":2603,"noattachment":false,"key":"/super-regex/-/super-regex-0.1.0.tgz","tarball":"http://name.csiicloud.com:7001/super-regex/download/super-regex-0.1.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/super-regex_0.1.0_1654250835033_0.318311709612211"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-06-05T12:50:11.462Z","publish_time":1654250835252,"_cnpm_publish_time":1654250835252}},"readme":"# super-regex\n\n> Make a regular expression time out if it takes too long to execute\n\nThis can be used to prevent [ReDoS vulnerabilities](https://en.wikipedia.org/wiki/ReDoS) when running a regular expression against untrusted user input.\n\nThis package also has a better API than the built-in regular expression methods. For example, none of the methods mutate the regex.\n\nThe timeout only works in Node.js. In the browser, it will simply not time out.\n\n## Install\n\n```sh\nnpm install super-regex\n```\n\n## Usage\n\n```js\nimport {isMatch} from 'super-regex';\n\nconsole.log(isMatch(/\\d+/, getUserInput(), {timeout: 1000}));\n```\n\n## API\n\n### isMatch(regex, string, options?)\n\nReturns a boolean for whether the given `regex` matches the given `string`.\n\nIf the regex takes longer to match than the given timeout, it returns `false`.\n\n*This method is similar to [`RegExp#test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test), but differs in that the given `regex` is [never mutated, even when it has the `/g` flag](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test#using_test_on_a_regex_with_the_global_flag).*\n\n### firstMatch(regex, string, options?)\n\nReturns the first `Match` or `undefined` if there was no match.\n\nIf the regex takes longer to match than the given timeout, it returns `undefined`.\n\n### matches(regex, string, options?)\n\nReturns an iterable of `Match`es.\n\nIf the regex takes longer to match than the given timeout, it returns an empty array.\n\n**The `regex` must have the `/g` flag.**\n\n#### options\n\nType: `object`\n\n##### timeout?\n\nType: `number` *(integer)*\n\nThe time in milliseconds to wait before timing out.\n\n##### matchTimeout?\n\nType: `number` *(integer)*\n\nOnly works in `matches()`.\n\nThe time in milliseconds to wait before timing out when searching for each match.\n\n### Match\n\n```ts\n{\n\tmatch: string;\n\tindex: number;\n\tgroups: string[];\n\tnamedGroups: {string: string}; // object with string values\n\tinput: string;\n}\n```\n\n## Related\n\n- [function-timeout](https://github.com/sindresorhus/function-timeout) - Make a synchronous function have a timeout\n","_attachments":{},"homepage":"https://github.com/sindresorhus/super-regex#readme","bugs":{"url":"https://github.com/sindresorhus/super-regex/issues"},"license":"MIT"}