{
  "name": "shescape",
  "version": "3.0.0",
  "description": "simple shell escape library",
  "homepage": "https://github.com/ericcornelissen/shescape#readme",
  "license": "MPL-2.0",
  "type": "module",
  "exports": {
    ".": {
      "types": "./src/index.d.ts",
      "default": "./src/index.js"
    },
    "./stateless": {
      "types": "./src/stateless.d.ts",
      "default": "./src/stateless.js"
    },
    "./testing": {
      "types": "./src/testing.d.ts",
      "default": "./src/testing.js"
    }
  },
  "typings": "./src/index.d.ts",
  "engines": {
    "node": "^22.22.2 || ^24.15.0 || ^26"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ericcornelissen/shescape.git"
  },
  "bugs": {
    "url": "https://github.com/ericcornelissen/shescape/issues"
  },
  "author": {
    "name": "Eric Cornelissen",
    "email": "ericornelissen@gmail.com",
    "url": "https://ericcornelissen.dev/"
  },
  "keywords": [
    "shell",
    "escape",
    "injection"
  ],
  "dependencies": {
    "which": "^7.0.0"
  },
  "peerDependencies": {
    "@ericcornelissen/lregexp": "^1.0.9"
  },
  "peerDependenciesMeta": {
    "@ericcornelissen/lregexp": {
      "optional": true
    }
  },
  "devDependencies": {
    "@arethetypeswrong/cli": "0.18.3",
    "@ericcornelissen/eslint-plugin-top": "3.6.0",
    "@eslint/json": "2.0.0",
    "@eslint/markdown": "8.0.0",
    "@fast-check/ava": "3.0.1",
    "@stryker-mutator/core": "9.6.1",
    "@stryker-mutator/tap-runner": "9.6.1",
    "ava": "8.0.1",
    "better-npm-audit": "3.11.0",
    "c8": "11.0.0",
    "ci-info": "4.3.1",
    "depreman": "0.3.12",
    "dotenv": "17.3.1",
    "eslint": "9.39.0",
    "eslint-plugin-ava": "15.0.1",
    "eslint-plugin-depend": "1.5.0",
    "eslint-plugin-import": "2.32.0",
    "eslint-plugin-jsdoc": "63.0.1",
    "eslint-plugin-regexp": "3.0.0",
    "eslint-plugin-unicorn": "65.0.1",
    "eslint-plugin-yml": "3.4.0",
    "fast-check": "4.8.0",
    "licensee": "12.0.1",
    "lockfile-lint": "5.0.0",
    "ls-engines": "0.10.0",
    "npm-package-json-lint": "10.4.0",
    "npm-run-all2": "9.0.0",
    "nve": "18.0.3",
    "pp-test-kit": "0.5.2",
    "prettier": "3.8.2",
    "publint": "0.3.21",
    "shescape-previous": "npm:shescape@2.1.10",
    "sinon": "22.0.0",
    "strip-directives": "1.0.4"
  },
  "scripts": {
    "_eslint": "eslint --config config/eslint.js",
    "_prettier": "prettier . --ignore-path .gitignore",
    "audit": "npm-run-all audit:*",
    "audit:deprecations": "depreman --errors-only --report-unused",
    "audit:deprecations:runtime": "depreman --errors-only --omit=dev",
    "audit:vulnerabilities": "better-npm-audit audit",
    "audit:vulnerabilities:runtime": "better-npm-audit audit --production",
    "check": "npm-run-all check:*",
    "check:ci": "node script/maybe-run.js actionlint -config-file config/actionlint.yml",
    "check:dependencies": "node script/check-runtime-deps.js",
    "check:formatting": "npm run _prettier -- --check",
    "check:js": "npm run _eslint -- '**/*.{cjs,js}'",
    "check:json": "npm run _eslint -- '**/*.json'",
    "check:licenses": "licensee --errors-only",
    "check:lockfile": "lockfile-lint",
    "check:manifest": "npmPkgJsonLint --quiet --configFile ./config/npmpackagejsonlintrc.json . && publint --strict && attw --pack --profile esm-only . && ls-engines",
    "check:md": "npm-run-all check:md:*",
    "check:md:code": "npm run _eslint -- '**/*.md**'",
    "check:md:text": "npm run _eslint -- '**/*.md'",
    "check:yml": "npm run _eslint -- '**/*.yml'",
    "clean": "node script/clean.js",
    "coverage": "npm-run-all coverage:*",
    "coverage:unit": "c8 --config config/c8/unit.json npm run test:unit",
    "coverage:integration": "node script/run-platform-coverage.js integration",
    "coverage:integration:unix": "c8 --config config/c8/integration-unix.json npm run test:integration",
    "coverage:integration:win": "c8 --config config/c8/integration-win.json npm run test:integration",
    "coverage:e2e": "node script/run-platform-coverage.js e2e",
    "coverage:e2e:unix": "c8 --config config/c8/e2e-unix.json npm run test:e2e",
    "coverage:e2e:win": "c8 --config config/c8/e2e-win.json npm run test:e2e",
    "coverage:compat": "npm-run-all coverage:compat:*",
    "coverage:compat:runtime": "c8 --config config/c8/compat.json npm run test:compat:runtime",
    "coverage:compat:regexp": "c8 --config config/c8/regexp.json npm run test:compat:regexp",
    "coverage:breakage": "c8 --config config/c8/breakage.json npm run test:breakage",
    "format": "npm run _prettier -- --write",
    "fuzz": "node script/fuzz.js",
    "mutation": "npm-run-all mutation:*",
    "mutation:unit": "stryker run config/stryker/unit.js",
    "mutation:integration": "stryker run config/stryker/integration.js",
    "package": "strip-directives src/**/*.js",
    "test": "npm-run-all test:*",
    "test:unit": "ava test/unit/**/*.test.js",
    "test:integration": "ava test/integration/**/*.test.js --timeout 2m",
    "test:e2e": "node script/busybox-sh.js && node script/double-link-sh.js && ava test/e2e/**/*.test.js --timeout 1m",
    "test:compat": "npm-run-all test:compat:*",
    "test:compat:assumptions": "node test/compat/assumptions/runner.js",
    "test:compat:assumptions:all": "nve 22.22.2,24.15.0,26.0.0 npm run test:compat:assumptions",
    "test:compat:runtime": "node test/compat/runtime/runner.js",
    "test:compat:runtime:all": "nve 22.22.2,24.15.0,26.0.0 npm run test:compat:runtime",
    "test:compat:regexp": "node --enable-experimental-regexp-engine test/compat/regexp-engine/runner.js",
    "test:compat:regexp:all": "nve 22.22.2,24.15.0,26.0.0 npm run test:compat:regexp",
    "test:breakage": "ava test/breakage/**/*.test.js",
    "verify": "npm run check && npm run coverage"
  }
}
