{"_id":"scslre","_rev":"9-66b326fcc233377cbe192f953aa3fbd3","name":"scslre","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"scslre","version":"0.1.0","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.0-beta.31","typescript":"^3.8.3"},"dependencies":{"refa":"^0.6.0","regexp":"^1.0.0"},"gitHead":"1a44aa89a6b02e60c4800fabb8d027fa0d281c9e","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.0","_nodeVersion":"15.3.0","_npmVersion":"6.14.10","dist":{"integrity":"sha512-NQicpJdC1Vle9ySaEHWdjRRI4KOnxKangtMStdQ7dVcWYCmHo3NziTtnfYJHzCcFCm/qd731/AQ1wUzmZT9HFg==","shasum":"09bbdaa393c145349a77cb84534a748c0caf1575","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.0.tgz","fileCount":5,"unpackedSize":36472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6NvoCRA9TVsSAnZWagAA0KIP/idre7DitI4zvxtTdkwM\nNomGpZmCA1Th3Wb2n4UCC7DsBotFFcbih28fn55XZGbjzZn1AS3gVeCyljP6\nVIrA/W/ERGxHYSHD3nB+TJdSv1ky7q1ETqEfdumBl7d1DVCTuy7bJ/vhluis\nCAfX7sC2ygXBwun+yUlEBMRF52dQpsh42U3oL8hBsNKq1plvBDJ4uH25Uf8Y\nArNEjtE+UCvxT0kGL0U3Je1xvKDFamEWIdC/i3mGsbze4s9WMDuIJBOaalFi\nFveBG4rv1rkvzxhRNxjz9/lTieniDCQoqzKT92LxXHOpXhiBXWgieaGCTjhn\nEDsZyHFhebTvl0eIt5T1EYm1W0BT+5vRu0tmlxGGYQWhTk6FDzvTEOwgL8mq\nTl2Wwx7dEJzj/0AyboRdmMtYgA/zvFs5G3LsmCzYamKlLkusFzv+RxRKy1G5\njlbPu8+TNCiuGP9FPxVu4wM8qdOSOg31q5Kniy2EEXvKV4guHYDVHMu6m1wS\npGHppLthg/Z562YMrehH9JeZwlSaZ8tQpsDBbcs45aDW4FsPj/JAVQC1K1Vz\nOdZaKjYeXLL/QcUDuAb732C+nix676fMqApGXXsP5HvgSzrQm2X4a9O5bUZZ\nCShxYa49iluIaqwTtQRLkQRsyjo68cdaGeFP9B4YlrGKfN3lvDAfBOAeP2Ks\nmTOq\r\n=el2l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGIXhSzVfwDP5Dj4a9Tp2dUKf9Y2jcCoqT4bVhC37SWAAiBB4LXFHgq84N40zFwGoRdkvYKRAxIFS1UImiwRRKCqWg=="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.0_1609096168080_0.5021740362262346"},"_hasShrinkwrap":false},"0.1.1":{"name":"scslre","version":"0.1.1","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.0-beta.31","typescript":"^3.8.3"},"dependencies":{"refa":"^0.6.0","regexpp":"^3.1.0"},"gitHead":"752988f87ab4ac73a1adff189cf5beb8abee7d57","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.1","_nodeVersion":"15.3.0","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wsv9uvkNtTMIgNCRDY/Ys4ho//ltm/Fm+KgNMdn0de2TyBtU3O3OOw7E10Kxv4Acd2Gs6cQfODl0jvYvvK0dDA==","shasum":"02fcdbe7d3c4381b43f9118bb36e3e9178ce10c6","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.1.tgz","fileCount":6,"unpackedSize":36644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6N9zCRA9TVsSAnZWagAAkrIP/3+ptZhsUxRWUftT7xa/\nekmF0YDBznyV3L5KmJCbDqjBVkypPx/UCjYXL5Z5tPCf2s/Lai6lC+nDu4Ic\nKSpbvg3cag6NFx8pujxYwKDwTTghq59Ud7c9bN0Mjy0KZN7jbQsJFyjjMNig\n+swixwthYe1L3bE3q8PLjEyAIU82vgwnMAaWGEEYTKT3CgtHSCZP3ak0Bx77\nWHF79K84iS29bMi0OZp4foKzvjZVhYVNOtf7QbnvH+9LxT9vi7jpLPgY9xg0\nr9LGVG8ngIwE6Vl16aoDMYnN86krNUyKSrti6ihqPRhiNthu05dN8VngZ4kc\nRxOeeg1cd7Gsaf2BaJMIPO/IMwLaG0VhkxsCJap2MeRGn65YLSc1pjB8ETR0\nc2EVadUmlnVMQfZDe7smrWg4c3SRKwrYt7y/Y2RvIl4ux95u0sRmCcGR2FdE\nUmBZWMlotq9S1pLFeRFvwi33juhFuegWeAcV76zR24Ai0cQIgOzRIXd7e2C6\nT4GMNxhnxYCT2x5AbP4Rir44n1WCI5StrbDXnuqttqkXtJjrAUKP/P7ESqqT\nVDfS4Ok9aCOzuAOtfawhmh61+KhbOgpM+a27TyxqkJk+RoD4i37QAlqAbOKl\nuewCKdZKvvycNWtp47QJaGcvOMuN1wSrNAQAl3F806vrx+WEXMJN8slTtZt/\nizga\r\n=vQi5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbkNJKaiZ/XhxIkhSdnMeAmDeQKnvCYX8dnrxQYZsIwAiEAhTH8H9q8tDuyiCgkDz00kqbldqLIQXvInykLO6YE2LY="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.1_1609097074915_0.7234249347466097"},"_hasShrinkwrap":false},"0.1.2":{"name":"scslre","version":"0.1.2","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.35","typescript":"^3.8.3"},"dependencies":{"refa":"^0.7.1","regexp-ast-analysis":"^0.1.1","regexpp":"^3.1.0"},"gitHead":"ca6d7692c5f38d06c286d95b41d601fddbbaf581","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.2","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-UdvWZoNrcpJbhTXGaZ857snaG6k2ZGhIAMkUp70AzTFsiCJEbxjnaKnhUDWOtTXmIb5mLuYIb9k+s+NXDGknoQ==","shasum":"9a0dc3130ca2cbef9a73518af056628d2e3c3f3e","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.2.tgz","fileCount":6,"unpackedSize":28958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcJwdCRA9TVsSAnZWagAAQtoP+wb3veuusjrNeaVDAvsV\nM4l6486r0VPlO3sNaTlr9Yo29vH1lj0AgfyChynI7WnyQ7b8w7PBxLTK3Dod\nYpjWtMHAjdfxTu6afbJO5AMYCw9uL47sSegghf6vbHkWxpwjGk3ign/EadmR\nedp1gMptbkzFaN+PepKuRkvD32T0GFoRhUvpGig3tjIFPhvvRfEaSCI3HNbY\n30MwtJG4/IAHswvHvTlTC0z6D6conxhvz+FVXUak7OR89+M4PLfdEPyQ5Bvk\n6sWuLX7wWCcihwDs9SyRm0RSC0+mGVNdTKlK+AC+j6PDYgqn/UPqPE5k6qF1\nfnGshPWSP7lKWVIkQbU9U0gkmNuHTN2/5WvJ0ntJr2KHf0/WwwXFkJ8yOGw2\nmGSKpdK9hTAWxsMG5rRJlz/5wUoIk5DeJ5G2QKZre513r29hkILvUwmV4qBh\nBG91RIcG5CGA9eoxOqkhJfhMeXPIpWu2C5PJJTtroxcjh4czzEHhtMcDIUOh\nA2ygQlmg/usDuNZ1GUQE0dKqUS3SbxACG2S03EoxtxWdkvAYjsk3LSrcXG5Z\nsug/mNXGBV1D9oL0PYyW0lg8zr1MjwnzSqCnYuhB6Uhq1Rdnh2htwybFU4cS\npDDl3XUmcNzBGOzpmOxorbSEQhdM8B6fr5abHPkcVlUElOOV2iT4KSvQAW2n\nKLYU\r\n=WdBV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZOW6tdXdZqynzRUIMNsNlAacegiYuaTc1FtTSaSXc+AIhAKsnVEwryivisjam0nJ3qT3YVJl3oPyvf8+nDg/IObbH"}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.2_1617992732950_0.0770333106745067"},"_hasShrinkwrap":false},"0.1.3":{"name":"scslre","version":"0.1.3","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.35","typescript":"^3.8.3"},"dependencies":{"refa":"^0.8.0","regexp-ast-analysis":"^0.2.0","regexpp":"^3.1.0"},"gitHead":"fe19c9dee00a14a29c65e6c1d795121ab0de626a","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.3","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-bJLnVqL3J3j+IwQGcOD81Ze2qdNH8IrjKz07MsxGV0EUE/OmlrFqfKHFUSUUkwefMwzZrGbuNlfQEDN9U9+a3A==","shasum":"85fc0d227ed9afc741faa81435ca820d1bd29363","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.3.tgz","fileCount":6,"unpackedSize":29068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtT2dCRA9TVsSAnZWagAAGEIP/1od0KBYuZ8JLIr992QH\nYnS/FDyH9voQT0A6x/9NO5hsxCsr+GJnhHWOCHT4D3y4U7l8ywi4GVskEPHw\nZXBd8Emd0M/oode/6I9Pe5ZKsEqto5M+WrQ1qNsxCZsZAy3ta5wjjbuvne3U\ng/OWzQtL1TuZiJL/z/q+TvtYUXwksA6ziGgt1Tsc8rDggV2ZVnwKKsSZkJo8\nw21tu05QCMP1pelgYTsTibKSt257akfYtBbBp4oisI0y03lOWxwUq1q68LSp\nYRVGixi6JSYAx2OYhK+OZHnDpvPAIjrDYzaCiGaGNRJjj/hHU5wEQfpL7/fF\nW07ouseykjvZpDsPLCxC6TrREPWKlcSMrxED22S2kJ3QAhBojNffiZA+tTCG\n5zwanlAPkqH/TQ+KBjZS8xmXbneVP8nM/HTc8YmObYNLnk7qv4P+mKtOTMGP\n6q9kc612jWKTpebFD2F0nleiViZryLcelKskB6Qan18TWaWnQcsx8bT39gsF\n7b3FtRrP/gXFz8g9ax43nusJqDX0Oh/Ku88Fdy/6DYNYpti9ouWlizs/PsvP\nDO79YBjA4y3UbVeMLsiOTAF0KgFXAe1FGOA144PvlpZkSiQZP/768MLnO/80\niIPMNXoEnAZZIqdtTcqAukg13j5QvOgCEox5NeP0XC5T/4dEfIvIhTD/HrjD\nt7b3\r\n=3JxO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDLGNvdbyskd+SMaOzTdXg8MA+WrGMgYH465iEApzJVGAiAfb1dsrzGHAEFF8wZqWAGZw3PmNk1uYo6+ZeNhrYeHow=="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.3_1622490525254_0.39188760483127183"},"_hasShrinkwrap":false},"0.1.4":{"name":"scslre","version":"0.1.4","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.35","typescript":"^3.8.3"},"dependencies":{"refa":"^0.8.0","regexp-ast-analysis":"^0.2.2","regexpp":"^3.1.0"},"gitHead":"3bbef08ed12df345f742fd0cedfde10a25780700","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.4","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-PTXtoPzLMhXZ8iWtsNwOE+Y/jfm+JZKevhSkKYjlUHqe+/tJULKrqzv23Hs7ZvYSid/7fjgilB4MiQrJP+iV1w==","shasum":"9b0e7d4ab61a8ce8546054dc186145a84e6af321","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.4.tgz","fileCount":6,"unpackedSize":29180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguODuCRA9TVsSAnZWagAAfjcQAKRlSjVYNY77gQerHETc\nFTr/NnTqXDA6INTllGHzTVO61zXqhbnNyehMoMePkHVKg4oCyFMDBtpSnowD\nLc9Bws4mc84vg9CV7Lac3RynxLpvBi/Fd3oL1i7MRlMhcaEiS7mbuKVDG3wx\naEhrtzmw/r3QswkZHpJPCb1mJbgNghy4QCWDILUKOSsw9gICEKbKqQx9M4p6\nRmkCny0w1GexvcEGOsu6WUA3EQoeO2ZkHXnDUe/CXemRvQDZcyHehfKaporH\nX1o/ps2UCiudynlXjmv68+6zqZMJBvadpIWE8buBAUA19IG0pwI7qjxPX7gG\nyXUP0vGdZzVoeIiq3DP+83uhaAiu9AMDKOoJRsKemdum7bQEzCFh7jcYx9jS\nysz+uam5JStTTwS1fD8UnmggYhhmZ4kYqBSvvmNqMvm3jhWGcrbnCb2+ljmx\nqzRED7wfLRHhghyBPU6666cov4v6gw4Qbc3bh51TI+3UrQa5QU8qJOmabSLe\nxhwsKygUCZ+lfd1M9XBgyBQr92zbgZSJ8gRX0FhuQeXp89QE3pyU3K3BB3/1\nfxJ2nL9/iNbnF6lY8hLtv9gErvZPmJkcOSAv4UV1tKmapm45ekVsrinnjyS3\n4PLYJlYkAOy0n+8gs5nlzBwyRjIpMiNJPSHVr3c/GFeUKDOW810Klm1x8QqM\nXNYZ\r\n=usWl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICc0kBF1/7+P+4XdC+y0OQJYLs8VPJMVDYpwToxzq4k8AiEApOVmIdGXswODxXhUAZC95iuaCohmE7fpvn/7LvT8ZsU="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.4_1622728942629_0.04875605433157215"},"_hasShrinkwrap":false},"0.1.5":{"name":"scslre","version":"0.1.5","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts && prettier ./index.d.ts --write","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.35","typescript":"^3.8.3"},"dependencies":{"refa":"^0.8.0","regexp-ast-analysis":"^0.2.2","regexpp":"^3.1.0"},"gitHead":"4df1271f2beefef742b43e35bb388f9ae562dba3","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.5","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-PUWMog0DhV8dYB9zWV/YDDS9AT8pBbR12cWbqqzwRrhFpOGwu0OOFafFpUFD0Iw0+ZY5D4EpU4VWJai0SGwOCQ==","shasum":"00b3adb2e94bfb8be83c04adc3bb0176a21532a9","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.5.tgz","fileCount":6,"unpackedSize":28541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgw6xeCRA9TVsSAnZWagAAd90P/1wfwBadIRAKIG6dCqyQ\n2nw3OO7+GlCJ+d2Ioxjb4StGBVkFvFkegC8yvHB/K5K+mJBNo+crcO37YiRy\nE+VRa5ftGBjcGgqSuSKzBHD0AvZaTFrbPlOUk7H7SPy6Z2LEC5hiHtFQj4Ks\nzUflvwlK3zOgwtFq9Ub5pyXF3SnUc34glTfoREI1fESDt9mEERUPRYmG85nf\nCH0gHGvImXmW50rJykDJceAgBBxOz/9Jp3bROEVgcQNhv79DvuDfdkyPJ3G+\ntB6BcFDTg8/EGHXn/AHxWRwDPUfLYoi8ocJqRA43SNMtFODLmuL7dnlGsl4p\n152qGV7YSNr/Lx7k4TOz0vj6qPxr6WQ+R1vUbo0qQBlrSbB2VsQapH7/IpUa\nSf5bkeiQgiyPKXw3gudduP6IR40YMBH8KWEEV5Gg4E0VUeDlkbCo+BQKEroh\n8Y8S4fdit/UvHorAWdnGXJzKDcfM5Da/SnsGH7qFuNrmcTEMHazj53RrUZZ4\nMbYOayI1SSHne/OhGR9l/7crR963qa3AFjmhe+xhqZb6e3Rd+V1u+aJc9ncn\ntBOTxfkHU6mxnyW+JN3WVu/AYeul+X49XQ8O4COZKD6crtnOHaS5EqT4Wnrn\nSuiOxszuTayuxbYojNMQg4RwQjPfc0x21bCqg5/tJ5MxGUGNX8fySxHNbEst\n5OXb\r\n=DDjV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxRdE+oEa/6uyEnzJq6shTf8y59bgvAL+GcPtSShPriwIhANZStD2L7MiUj4O8Ff0AsbikY0YlwsvMQsXWaFdwyfoI"}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.5_1623436382357_0.2767578694620383"},"_hasShrinkwrap":false},"0.1.6":{"name":"scslre","version":"0.1.6","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts && prettier ./index.d.ts --write","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^2.25.0","@typescript-eslint/parser":"^2.25.0","chai":"^4.2.0","dts-bundle":"^0.7.3","eslint":"^6.8.0","eslint-config-prettier":"^6.14.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.1.1","nyc":"^15.1.0","prettier":"^2.1.2","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.20.35","typescript":"^3.8.3"},"dependencies":{"refa":"^0.9.0","regexp-ast-analysis":"^0.2.3","regexpp":"^3.2.0"},"gitHead":"f35cd4b085a27e7653afe82543b48ee709c0fe3b","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.1.6","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==","shasum":"71a2832e4bf3a9254973a04fbed90aec94f75757","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.1.6.tgz","fileCount":6,"unpackedSize":28629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8DaaCRA9TVsSAnZWagAAfHsQAJPFPour7s9HjT7vM/7a\nn8Hi1GzSGTRNiEnq+vai4DWhIyDgnEnj4TunS6oI+n6NV5K4vucyVrWgTs2g\nt1Z0oYftcudogmhnNQiWmsBeRpbEtvYZxgB4CqypjpegiZ5/drjilmcnjYYu\nRx7vyJQdgMhaWPvtoU/jtM8cxOrMMDknCivLUmvtfI3MeKmjLrv3pTPvAhh6\nY+ipAB8oAX/Mt1A6I/7ewv+cb98ZkA4pFsLH4JCkhjozDUFFbQTKi20HXllS\n3QcQVBMQV7svBPwDXunUg04IDDLgSi3X6R/xvj0P94zTbcUimiXrNj5CfMYu\nN69cVXcj8t+9KlTIVv5w1L1h/+EX0YmHKQEQt9TU7Dwu/NciqzpIvlFzen+b\nyK0mTEkUofLgZXvgqft4AQdfE26rIhulnh2rHrcm4eHltLFRJASLCAAnOMx4\n+Pod8IOgfTa7DcszbpsIu6ZRFi2L4CAE2ABsnXuIuXus+deH4b5kcZHGeiam\nJjRZF3jKgQh5hikNbNxn7Pvwujq9T5qZ7qFKTG/CN/dh7zDDXmwQWCfQ0LNq\ntgaOiuS37I+h7uZoLKXI+39WGYfvK/+P3NGsjTG2SzgS35+0d4eexQyer6p3\n7c7j84Rf1li7ze6edrBT/sie3pOH4sy99w6ky6UIPUD8B2dbN9wB/hvivEUw\nSvV1\r\n=6xps\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIRuIpepAwNtp4VuttemFtvY3Yrguq2WfAoJrxepPENwIgYOg69GL7TSNhnOjuF3NsIjh5vHRSKSMBUhzNfT/DE6U="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.1.6_1626355354578_0.07363886596216651"},"_hasShrinkwrap":false},"0.2.0":{"name":"scslre","version":"0.2.0","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts && prettier ./index.d.ts --write","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.3.4","@types/mocha":"^10.0.1","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^5.57.0","@typescript-eslint/parser":"^5.57.0","chai":"^4.3.7","dts-bundle":"^0.7.3","eslint":"^8.37.0","eslint-config-prettier":"^8.8.0","eslint-plugin-prettier":"^4.2.1","mocha":"^10.2.0","nyc":"^15.1.0","prettier":"^2.8.7","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.22.18","typescript":"4.7"},"dependencies":{"@eslint-community/regexpp":"^4.5.0","refa":"^0.11.0","regexp-ast-analysis":"^0.6.0"},"types":"./index.d.ts","gitHead":"75cfc3bac2076f4e897461e9ff78ddfab10ca2bd","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.2.0","_nodeVersion":"16.11.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==","shasum":"b604eedbab76f87003738d00de44d7601a78609e","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.2.0.tgz","fileCount":5,"unpackedSize":28042,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYQzfmBMjLeJO56oXprfc3Fmj4d4Fg3ceiomj5F7Zd7AiBkl4zdysbOCCrsrmanaC1HPjmhYMc3D0ywMIv8Ur2CbA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJa2xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqaFA/+MnvgHoRFCmMJsAqbYk/k57ys8+ZdjRp4jfX1TUwMSbGAABer\r\ntKiKCalqKwU215I8NAwR6uMB1Tc2tzNEx+H/IfuUlik8cIYwVeBGj+9ZUvlO\r\n0s0HYfL7aQylniKt8ZUqxk00g2/ydTkTtTOHH5zRLriXPkH4qca0iF/bqhJ4\r\nk9LRx76KnqFelATIqt31pFCYqwgUowZxCHHznU6DH2oPgW3Hm4/n63adBCOj\r\nqvCAYwHmch4i44W7oZNjH/PhC+jW2smrElCK9rZFGlzF2HOr1u/dsycrIRTO\r\n+4jVRuau20C9VJsXlDb3tanllEJRKjr2HPyH9e/C4QJlJJbJ4/65dqVtXfzY\r\nu3GO/8BK6QLvd4Xs6CSyCM4DQ6ylwjTDhFYgFIArDrXUytJ2g1TQQ0JIGp2C\r\nDhUs5Mh6FF1Wuo3PeAgIZJ2P7ZoN6UdV0mySYeHBnQGb5F8266eZURq6zKE8\r\n7mKr5Ifw1sK2VPOJjGuiIX3PX6syKbZ3WNWK4Jd1y3xXBLM88mHYcAEyiWRz\r\n14zgl0vQftnrNtxUnA4ZGQAHdB2XJz3kEcvwWcSs8K4zNeKeQcA/JxjSwobg\r\ntBmlL8npwknUN06NS2XWtfmLTOcikTeFf5C58yFWxzcYjMDfw6nvYCOQCfQO\r\nGWpHWsfiA8QyV23NdZ9XNUHQ99QIsdJjvVk=\r\n=NTAV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.2.0_1680190896841_0.3260710893512899"},"_hasShrinkwrap":false},"0.3.0":{"name":"scslre","version":"0.3.0","description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","main":"index","scripts":{"check":"npm run lint && npx tsc --noEmit && cd tests && npx tsc --noEmit","lint":"npx eslint --ignore-path .gitignore **/*.ts","test":"cd tests && mocha -r ts-node/register '**/*.ts'","build":"npx rimraf ./index.* .out/** && npx tsc && rollup -c && npm run build:dts && npm run build:docs","build:dts":"dts-bundle --main ./.out/index.d.ts --name scslre --out ../index.d.ts && prettier ./index.d.ts --write","build:docs":"typedoc","coverage":"npx nyc --reporter=html --reporter=text npm run test","update-docs-branch":"git checkout docs && git merge master && npm run build:docs && git add * && git commit -m \"Task: Updated docs\" && git push && git checkout master","prepublishOnly":"npm run build"},"keywords":["regex","regexp","backtracking","polynomial","exponential"],"author":{"name":"Michael Schmidt"},"homepage":"https://github.com/RunDevelopment/scslre#readme","repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"license":"MIT","devDependencies":{"@rollup/plugin-node-resolve":"^9.0.0","@types/chai":"^4.3.4","@types/mocha":"^10.0.1","@types/node":"^12.12.31","@typescript-eslint/eslint-plugin":"^5.57.0","@typescript-eslint/parser":"^5.57.0","chai":"^4.3.7","dts-bundle":"^0.7.3","eslint":"^8.37.0","eslint-config-prettier":"^8.8.0","eslint-plugin-prettier":"^4.2.1","mocha":"^10.2.0","nyc":"^15.1.0","prettier":"^2.8.7","rimraf":"^3.0.2","rollup":"^2.31.0","rollup-plugin-terser":"^7.0.2","ts-node":"^8.8.1","typedoc":"^0.24.8","typescript":"5.0"},"dependencies":{"@eslint-community/regexpp":"^4.8.0","refa":"^0.12.0","regexp-ast-analysis":"^0.7.0"},"engines":{"node":"^14.0.0 || >=16.0.0"},"gitHead":"d772d2cb5df4d8d5c435ae39375413ace4d16eab","types":"./index.d.ts","bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"_id":"scslre@0.3.0","_nodeVersion":"16.13.0","_npmVersion":"9.7.2","dist":{"integrity":"sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==","shasum":"c3211e9bfc5547fc86b1eabaa34ed1a657060155","tarball":"https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz","fileCount":5,"unpackedSize":29009,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHr1z6KjQ7o1y3OYJ+PyPmau+gca7u5/htxuma+8tr+JAiB4uqAcCqHzJUEb9LvLyW36WdV/+Fl+eaNGYRnigHK+mA=="}]},"_npmUser":{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"},"directories":{},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scslre_0.3.0_1693927160357_0.3345764543197798"},"_hasShrinkwrap":false}},"time":{"created":"2020-12-27T19:09:28.080Z","0.1.0":"2020-12-27T19:09:28.200Z","modified":"2023-09-05T15:19:20.755Z","0.1.1":"2020-12-27T19:24:35.144Z","0.1.2":"2021-04-09T18:25:33.090Z","0.1.3":"2021-05-31T19:48:45.367Z","0.1.4":"2021-06-03T14:02:22.726Z","0.1.5":"2021-06-11T18:33:02.474Z","0.1.6":"2021-07-15T13:22:34.724Z","0.2.0":"2023-03-30T15:41:37.028Z","0.3.0":"2023-09-05T15:19:20.574Z"},"maintainers":[{"name":"rundevelopment","email":"mitchi5000.ms@googlemail.com"}],"description":"A library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.","homepage":"https://github.com/RunDevelopment/scslre#readme","keywords":["regex","regexp","backtracking","polynomial","exponential"],"repository":{"type":"git","url":"git+https://github.com/RunDevelopment/scslre.git"},"author":{"name":"Michael Schmidt"},"bugs":{"url":"https://github.com/RunDevelopment/scslre/issues"},"license":"MIT","readme":"# Single-character super-linear RegExps\n\n<sup><sub>what a name...</sub></sup>\n\n[![Actions Status](https://github.com/RunDevelopment/scslre/workflows/CI/badge.svg)](https://github.com/RunDevelopment/scslre/actions)\n[![npm](https://img.shields.io/npm/v/scslre)](https://www.npmjs.com/package/scslre)\n\nA library to find JS RegExp with super-linear worst-case time complexity for attack strings that repeat a single character.\n\nThe static analysis method implemented by this library focuses on finding attack string tuples where a single character is repeated. This major limitation allows the library to be fast while also offering decent support for backreferences and [assertions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Assertions).\n\nThis library is not intended as a full static analysis to guard against super-linear worst-case time complexity. It is meant to be as a supplementary analysis on top of existing general analysis methods that don't (or don't fully) support advanced regex features, or as a lightweight analysis on top of existing full (but heavyweight) analysis methods. Libraries that provide such general or near-full analysis are known as [recheck](https://github.com/MakeNowJust-Labo/recheck) and [vuln-regex-detector](https://github.com/davisjam/vuln-regex-detector). You may consider using these libraries as well.\n\n\n## Usage\n\nThis library exports only a single function, `analyse`, which takes a RegExp literal and returns a list of reports that show the quantifiers causing super-linear worst-case time complexity.\n\n### Documentation\n\nFor more information on the exact inputs and outputs of each function, see the full API documentation.\n\n- [Latest release](https://rundevelopment.github.io/scslre/docs/latest/)\n- [Development](https://rundevelopment.github.io/scslre/docs/dev/)\n\n\n## Limitations\n\n### Analysis\n\nThis library is implemented using a very limited static analysis method that can only find attack strings where a single character is repeated. Attack strings are generated from a tuple _(x,y,z)_ such that every string _s = xy<sup>n</sup>z_ (or `x + y.repeat(n) + z` for JS folks) takes _O(n<sup>p</sup>)_ or _O(2<sup>n</sup>)_ many steps to reject, p>1. This analysis method can only find tuples where _y_ is a single character. E.g. the polynomial backtracking in `/^(ab)*(ab)*$/` for _(x,y,z) = (\"\", \"ab\", \"c\")_ cannot be detected by this library because _y_ is not a single character.\n\nHowever, this limitation allows the static analysis method to be quick and to provide good (but not perfect) support for backreferences and assertions (e.g. `\\b`, `(?<!ba+)`).\n\n### False negatives\n\nThe analysis method primarily searches for polynomial backtracking. Finds of exponential backtracking are only a byproduct. Because of this, not all causes of super-linear worst-case time complexity are found.\n\n### False positives\n\nThis library doesn't actually search for the whole tuple _(x,y,z)_; it only searches for _y_ and assumes that adequate values for _x_ and _z_ can be found. A single-character approximation of the suffix _z_ will be computed and accounted for but false positives are still possible.\n\n\n## Reports\n\nThere are 3 different types of reports that each indicate a different type of cause for the super-linear worst-case time complexity. All are explained in the documentation of their types.\n\n### Exponential backtracking\n\nWhile most reports show polynomial backtracking, some report exponential backtracking. Exponential backtracking is a lot more dangerous and can easily be exploited for [ReDoS attacks](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS).\n\nWhile other reports may be dismissed, __all reports of exponential backtracking must be fixed__.\n\nAll reports with `exponential: true` report exponential backtracking.\n","readmeFilename":"README.md"}