{
  "name": "anti-trojan-source",
  "version": "1.12.1",
  "description": "Detect trojan source attacks that employ unicode bidi attacks to inject malicious code",
  "main": "main.js",
  "bin": {
    "anti-trojan-source": "bin/anti-trojan-source.js"
  },
  "exports": {
    ".": {
      "require": "./cjs/main.cjs",
      "import": "./src/main.js"
    }
  },
  "publishConfig": {
    "provenance": true,
    "access": "public"
  },
  "engines": {
    "npm": ">=11.10.0",
    "node": ">=24.0.0"
  },
  "type": "module",
  "files": [
    "cjs",
    "src",
    "bin"
  ],
  "scripts": {
    "build": "rollup -c",
    "lint": "eslint . && npm run lint:lockfile",
    "lint:fix": "eslint . --fix",
    "lint:lockfile": "lockfile-lint --path package-lock.json --validate-https --allowed-hosts npm yarn",
    "format": "prettier --config .prettierrc.json --write '**/*.js'",
    "test": "NODE_OPTIONS=--experimental-vm-modules npx jest",
    "test:watch": "NODE_OPTIONS=--experimental-vm-modules npx jest --watch",
    "coverage:view": "open-cli coverage/lcov-report/index.html",
    "semantic-release": "npx semantic-release",
    "install-git-hooks": "husky install && chmod 755 .husky/*"
  },
  "author": {
    "name": "Liran Tal",
    "email": "liran.tal@gmail.com",
    "url": "https://github.com/lirantal"
  },
  "license": "Apache-2.0",
  "keywords": [
    "trojan",
    "trojan source",
    "source",
    "unicode",
    "bidi",
    "bidirectional attacks",
    "bidi attacks",
    "bidi security",
    "unicode security",
    "attacks",
    "security"
  ],
  "homepage": "https://github.com/lirantal/anti-trojan-source",
  "bugs": {
    "url": "https://github.com/lirantal/anti-trojan-source/issues"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/lirantal/anti-trojan-source.git"
  },
  "dependencies": {
    "globby": "^12.0.2",
    "meow": "^10.1.1"
  },
  "devDependencies": {
    "@babel/core": "^7.15.8",
    "@babel/eslint-parser": "^7.15.8",
    "@babel/plugin-syntax-top-level-await": "^7.14.5",
    "@commitlint/cli": "^13.2.1",
    "@commitlint/config-conventional": "^13.2.0",
    "@semantic-release/changelog": "^6.0.3",
    "@semantic-release/commit-analyzer": "^13.0.1",
    "@semantic-release/git": "^10.0.1",
    "@semantic-release/github": "^12.0.6",
    "@semantic-release/npm": "^13.1.5",
    "@semantic-release/release-notes-generator": "^14.1.0",
    "eslint": "^8.0.1",
    "eslint-plugin-jest": "^25.2.2",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-security": "^1.4.0",
    "eslint-plugin-standard": "^4.1.0",
    "husky": "^7.0.4",
    "jest": "^27.3.1",
    "lint-staged": "^11.2.3",
    "lockfile-lint": "^4.6.2",
    "open-cli": "^7.0.1",
    "prettier": "^2.4.1",
    "rollup": "^2.59.0",
    "semantic-release": "^25.0.3"
  },
  "jest": {
    "testEnvironment": "node",
    "verbose": true,
    "collectCoverage": true,
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    },
    "testPathIgnorePatterns": [
      "/__tests__/.*/__fixtures__/.*"
    ],
    "collectCoverageFrom": [
      "index.js",
      "src/**/*.{js,ts}"
    ],
    "testMatch": [
      "**/*.test.js"
    ]
  },
  "lint-staged": {
    "**/*.js": [
      "npm run format"
    ]
  },
  "commitlint": {
    "extends": [
      "@commitlint/config-conventional"
    ]
  },
  "standard": {
    "env": [
      "jest"
    ],
    "parser": "babel-eslint",
    "ignore": [
      "**/out/"
    ]
  },
  "eslintIgnore": [
    "coverage/**",
    "cjs/**",
    "rollup.config.mjs"
  ],
  "babel": {
    "plugins": [
      "@babel/plugin-syntax-top-level-await"
    ]
  },
  "eslintConfig": {
    "plugins": [
      "node",
      "security",
      "jest"
    ],
    "extends": [
      "plugin:node/recommended"
    ],
    "rules": {
      "node/no-unsupported-features/es-syntax": [
        "error",
        {
          "ignores": [
            "dynamicImport",
            "modules"
          ]
        }
      ],
      "no-process-exit": "warn",
      "jest/no-disabled-tests": "error",
      "jest/no-focused-tests": "error",
      "jest/no-identical-title": "error",
      "node/no-unsupported-features": "off",
      "node/no-unpublished-require": "off",
      "security/detect-non-literal-fs-filename": "error",
      "security/detect-unsafe-regex": "error",
      "security/detect-buffer-noassert": "error",
      "security/detect-child-process": "error",
      "security/detect-disable-mustache-escape": "error",
      "security/detect-eval-with-expression": "error",
      "security/detect-no-csrf-before-method-override": "error",
      "security/detect-non-literal-regexp": "error",
      "security/detect-object-injection": "warn",
      "security/detect-possible-timing-attacks": "error",
      "security/detect-pseudoRandomBytes": "error",
      "space-before-function-paren": "off",
      "object-curly-spacing": "off"
    },
    "parser": "@babel/eslint-parser",
    "parserOptions": {
      "sourceType": "module",
      "ecmaFeatures": {
        "impliedStrict": true
      }
    }
  },
  "release": {
    "branches": [
      "main",
      "master"
    ],
    "analyzeCommits": {
      "preset": "angular",
      "releaseRules": [
        {
          "type": "docs",
          "release": "patch"
        },
        {
          "type": "refactor",
          "release": "patch"
        },
        {
          "type": "style",
          "release": "patch"
        }
      ]
    }
  },
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    [
      "@semantic-release/changelog",
      {
        "changelogFile": "CHANGELOG.md"
      }
    ],
    "@semantic-release/npm",
    [
      "@semantic-release/git",
      {
        "assets": [
          "CHANGELOG.md"
        ]
      }
    ],
    "@semantic-release/github"
  ]
}
