├── .eslintrc.js ├── .github ├── release.yml └── workflows │ ├── automerge.yml │ ├── build.yml │ ├── codeql-analysis.yml │ └── publish.yml ├── .gitignore ├── .husky └── pre-commit ├── .node-version ├── .prettierignore ├── .prettierrc.json ├── .vscode └── settings.json ├── CODEOWNERS ├── LICENSE ├── README.md ├── bin.js ├── docs └── differences-in-engines.md ├── jest.config.js ├── lint-staged.config.js ├── package.json ├── renovate.json ├── rollup.config.mjs ├── src ├── __mocks__ │ └── package-json:version.ts ├── __snapshots__ │ ├── redos-detector.test.ts.snap │ └── to-friendly.test.ts.snap ├── arrays.test.ts ├── arrays.ts ├── character-groups.ts ├── character-reader │ ├── character-reader-level-0.ts │ ├── character-reader-level-1.ts │ ├── character-reader-level-2.ts │ ├── join.ts │ └── map.ts ├── checker-reader.ts ├── cli.ts ├── code-point.test.ts ├── code-point.ts ├── collect-results.ts ├── downgrade-pattern.test.ts ├── downgrade-pattern.ts ├── infinite-loop-tracker.ts ├── is-unbounded-reader.ts ├── jest-setup.js ├── map.test.ts ├── map.ts ├── node-extra.ts ├── nodes │ ├── anchor.ts │ ├── character-class-escape.ts │ ├── character-class.ts │ ├── disjunction.ts │ ├── dot.ts │ ├── end.ts │ ├── group.ts │ ├── null.ts │ ├── quantifier.ts │ ├── reference.ts │ ├── sequence.ts │ ├── unicode-property-escape.ts │ └── value.ts ├── once.test.ts ├── once.ts ├── our-range.test.ts ├── our-range.ts ├── package-json.d.ts ├── parse.ts ├── reader.test.ts ├── reader.ts ├── redos-detector.test.ts ├── redos-detector.ts ├── result-cache.ts ├── sets.test.ts ├── sets.ts ├── to-friendly.test.ts ├── to-friendly.ts ├── tree.test.ts └── tree.ts ├── tsconfig.json └── tsconfig.test.json /.eslintrc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.eslintrc.js -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.github/release.yml -------------------------------------------------------------------------------- /.github/workflows/automerge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.github/workflows/automerge.yml -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.github/workflows/build.yml -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.github/workflows/codeql-analysis.yml -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.github/workflows/publish.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /dist 3 | .DS_STORE 4 | /src/coverage 5 | .eslintcache 6 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | set -e 5 | npm run lint-staged 6 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /dist 2 | coverage 3 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.prettierrc.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @tjenkinson 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/README.md -------------------------------------------------------------------------------- /bin.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('./dist/cli.js'); 4 | -------------------------------------------------------------------------------- /docs/differences-in-engines.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/docs/differences-in-engines.md -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/jest.config.js -------------------------------------------------------------------------------- /lint-staged.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/lint-staged.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/package.json -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/renovate.json -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/rollup.config.mjs -------------------------------------------------------------------------------- /src/__mocks__/package-json:version.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/__mocks__/package-json:version.ts -------------------------------------------------------------------------------- /src/__snapshots__/redos-detector.test.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/__snapshots__/redos-detector.test.ts.snap -------------------------------------------------------------------------------- /src/__snapshots__/to-friendly.test.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/__snapshots__/to-friendly.test.ts.snap -------------------------------------------------------------------------------- /src/arrays.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/arrays.test.ts -------------------------------------------------------------------------------- /src/arrays.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/arrays.ts -------------------------------------------------------------------------------- /src/character-groups.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-groups.ts -------------------------------------------------------------------------------- /src/character-reader/character-reader-level-0.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-reader/character-reader-level-0.ts -------------------------------------------------------------------------------- /src/character-reader/character-reader-level-1.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-reader/character-reader-level-1.ts -------------------------------------------------------------------------------- /src/character-reader/character-reader-level-2.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-reader/character-reader-level-2.ts -------------------------------------------------------------------------------- /src/character-reader/join.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-reader/join.ts -------------------------------------------------------------------------------- /src/character-reader/map.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/character-reader/map.ts -------------------------------------------------------------------------------- /src/checker-reader.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/checker-reader.ts -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/cli.ts -------------------------------------------------------------------------------- /src/code-point.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/code-point.test.ts -------------------------------------------------------------------------------- /src/code-point.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/code-point.ts -------------------------------------------------------------------------------- /src/collect-results.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/collect-results.ts -------------------------------------------------------------------------------- /src/downgrade-pattern.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/downgrade-pattern.test.ts -------------------------------------------------------------------------------- /src/downgrade-pattern.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/downgrade-pattern.ts -------------------------------------------------------------------------------- /src/infinite-loop-tracker.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/infinite-loop-tracker.ts -------------------------------------------------------------------------------- /src/is-unbounded-reader.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/is-unbounded-reader.ts -------------------------------------------------------------------------------- /src/jest-setup.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/jest-setup.js -------------------------------------------------------------------------------- /src/map.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/map.test.ts -------------------------------------------------------------------------------- /src/map.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/map.ts -------------------------------------------------------------------------------- /src/node-extra.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/node-extra.ts -------------------------------------------------------------------------------- /src/nodes/anchor.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/anchor.ts -------------------------------------------------------------------------------- /src/nodes/character-class-escape.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/character-class-escape.ts -------------------------------------------------------------------------------- /src/nodes/character-class.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/character-class.ts -------------------------------------------------------------------------------- /src/nodes/disjunction.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/disjunction.ts -------------------------------------------------------------------------------- /src/nodes/dot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/dot.ts -------------------------------------------------------------------------------- /src/nodes/end.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/end.ts -------------------------------------------------------------------------------- /src/nodes/group.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/group.ts -------------------------------------------------------------------------------- /src/nodes/null.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/null.ts -------------------------------------------------------------------------------- /src/nodes/quantifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/quantifier.ts -------------------------------------------------------------------------------- /src/nodes/reference.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/reference.ts -------------------------------------------------------------------------------- /src/nodes/sequence.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/sequence.ts -------------------------------------------------------------------------------- /src/nodes/unicode-property-escape.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/unicode-property-escape.ts -------------------------------------------------------------------------------- /src/nodes/value.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/nodes/value.ts -------------------------------------------------------------------------------- /src/once.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/once.test.ts -------------------------------------------------------------------------------- /src/once.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/once.ts -------------------------------------------------------------------------------- /src/our-range.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/our-range.test.ts -------------------------------------------------------------------------------- /src/our-range.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/our-range.ts -------------------------------------------------------------------------------- /src/package-json.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/package-json.d.ts -------------------------------------------------------------------------------- /src/parse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/parse.ts -------------------------------------------------------------------------------- /src/reader.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/reader.test.ts -------------------------------------------------------------------------------- /src/reader.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/reader.ts -------------------------------------------------------------------------------- /src/redos-detector.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/redos-detector.test.ts -------------------------------------------------------------------------------- /src/redos-detector.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/redos-detector.ts -------------------------------------------------------------------------------- /src/result-cache.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/result-cache.ts -------------------------------------------------------------------------------- /src/sets.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/sets.test.ts -------------------------------------------------------------------------------- /src/sets.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/sets.ts -------------------------------------------------------------------------------- /src/to-friendly.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/to-friendly.test.ts -------------------------------------------------------------------------------- /src/to-friendly.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/to-friendly.ts -------------------------------------------------------------------------------- /src/tree.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/tree.test.ts -------------------------------------------------------------------------------- /src/tree.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/src/tree.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tjenkinson/redos-detector/HEAD/tsconfig.test.json --------------------------------------------------------------------------------