{
  "name": "vitest-auto-spy",
  "version": "5.22.0",
  "description": "Auto-generate fully-typed test spies from a class — across Vitest, Bun, node:test and Rstest, with Angular/NestJS/React/Vue/Svelte recipes. Drop-in replacement for jest-auto-spies and jasmine-auto-spies.",
  "keywords": [
    "auto-mock",
    "automock",
    "class-mock",
    "typed-mock",
    "type-mock",
    "interface-mock",
    "deep-mock",
    "createautomock",
    "mockdeep",
    "auto-spy",
    "auto-spies",
    "spy-from-class",
    "vitest-mock",
    "sinon-alternative",
    "jest-auto-spies",
    "jasmine-auto-spies",
    "jasmine",
    "karma",
    "jest-to-vitest",
    "jasmine-to-vitest",
    "karma-to-vitest",
    "codemod",
    "createspyobj",
    "observer-spy",
    "fakeasync",
    "eslint-plugin",
    "vitest",
    "bun",
    "bun-test",
    "bun-angular",
    "angular-testbed",
    "node-test",
    "rstest",
    "nestjs",
    "react",
    "vue",
    "pinia",
    "svelte",
    "angular",
    "testing",
    "unit-testing",
    "spy",
    "spies",
    "mock",
    "mocking",
    "test-doubles",
    "rxjs",
    "observable",
    "zoneless",
    "typescript"
  ],
  "license": "MIT",
  "author": "Alexey Popov <asdalexey@yandex.ru>",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ASDAlexey/vitest-auto-spy.git"
  },
  "homepage": "https://github.com/ASDAlexey/vitest-auto-spy#readme",
  "bugs": {
    "url": "https://github.com/ASDAlexey/vitest-auto-spy/issues"
  },
  "type": "module",
  "bin": {
    "vitest-auto-spy": "./dist/cli.js"
  },
  "main": "./dist/index.js",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "default": "./dist/index.js"
    },
    "./bun": {
      "types": "./dist/bun.d.ts",
      "import": "./dist/bun.js",
      "default": "./dist/bun.js"
    },
    "./bun-angular": {
      "types": "./dist/bun-angular.d.ts",
      "import": "./dist/bun-angular.js",
      "default": "./dist/bun-angular.js"
    },
    "./node": {
      "import": {
        "types": "./dist/node.d.ts",
        "default": "./dist/node.js"
      },
      "require": {
        "types": "./dist/node.d.cts",
        "default": "./dist/node.cjs"
      }
    },
    "./rstest": {
      "types": "./dist/rstest.d.ts",
      "import": "./dist/rstest.js",
      "default": "./dist/rstest.js"
    },
    "./rxjs": {
      "types": "./dist/rxjs.d.ts",
      "import": "./dist/rxjs.js",
      "default": "./dist/rxjs.js"
    },
    "./console": {
      "types": "./dist/console.d.ts",
      "import": "./dist/console.js",
      "default": "./dist/console.js"
    },
    "./dom-stubs": {
      "types": "./dist/dom-stubs.d.ts",
      "import": "./dist/dom-stubs.js",
      "default": "./dist/dom-stubs.js"
    },
    "./diagnostics": {
      "types": "./dist/diagnostics.d.ts",
      "import": "./dist/diagnostics.js",
      "default": "./dist/diagnostics.js"
    },
    "./jasmine": {
      "types": "./dist/jasmine.d.ts",
      "import": "./dist/jasmine.js",
      "default": "./dist/jasmine.js"
    },
    "./jasmine-compat": {
      "types": "./dist/jasmine-compat.d.ts",
      "import": "./dist/jasmine-compat.js",
      "default": "./dist/jasmine-compat.js"
    },
    "./observer-spy": {
      "types": "./dist/observer-spy.d.ts",
      "import": "./dist/observer-spy.js",
      "default": "./dist/observer-spy.js"
    },
    "./angular": {
      "types": "./dist/angular.d.ts",
      "import": "./dist/angular.js",
      "default": "./dist/angular.js"
    },
    "./angular/diagnostics": {
      "types": "./dist/angular-diagnostics.d.ts",
      "import": "./dist/angular-diagnostics.js",
      "default": "./dist/angular-diagnostics.js"
    },
    "./angular/doubles": {
      "types": "./dist/angular-doubles.d.ts",
      "import": "./dist/angular-doubles.js",
      "default": "./dist/angular-doubles.js"
    },
    "./angular/matchers": {
      "types": "./dist/angular-matchers.d.ts",
      "import": "./dist/angular-matchers.js",
      "default": "./dist/angular-matchers.js"
    },
    "./angular-http": {
      "types": "./dist/angular-http.d.ts",
      "import": "./dist/angular-http.js",
      "default": "./dist/angular-http.js"
    },
    "./angular-router": {
      "types": "./dist/angular-router.d.ts",
      "import": "./dist/angular-router.js",
      "default": "./dist/angular-router.js"
    },
    "./signal-forms": {
      "types": "./dist/signal-forms.d.ts",
      "import": "./dist/signal-forms.js",
      "default": "./dist/signal-forms.js"
    },
    "./nestjs": {
      "types": "./dist/nestjs.d.ts",
      "import": "./dist/nestjs.js",
      "default": "./dist/nestjs.js"
    },
    "./react": {
      "types": "./dist/react.d.ts",
      "import": "./dist/react.js",
      "default": "./dist/react.js"
    },
    "./vue": {
      "types": "./dist/vue.d.ts",
      "import": "./dist/vue.js",
      "default": "./dist/vue.js"
    },
    "./svelte": {
      "types": "./dist/svelte.d.ts",
      "import": "./dist/svelte.js",
      "default": "./dist/svelte.js"
    },
    "./setup": {
      "types": "./dist/setup.d.ts",
      "import": "./dist/setup.js",
      "default": "./dist/setup.js"
    },
    "./zone": {
      "types": "./dist/zone.d.ts",
      "import": "./dist/zone.js",
      "default": "./dist/zone.js"
    },
    "./eslint-plugin": {
      "import": {
        "types": "./dist/eslint-plugin.d.ts",
        "default": "./dist/eslint-plugin.js"
      },
      "require": {
        "types": "./dist/eslint-plugin.d.cts",
        "default": "./dist/eslint-plugin.cjs"
      }
    },
    "./package.json": "./package.json"
  },
  "files": [
    "dist",
    "assets",
    "skills",
    "AGENTS.md",
    "README.md",
    "LICENSE"
  ],
  "sideEffects": [
    "**/chunk-*.js",
    "**/index.js",
    "**/bun.js",
    "**/bun-angular.js",
    "**/node.js",
    "**/node.cjs",
    "**/rstest.js",
    "src/rstest.ts",
    "**/angular.js",
    "**/angular-doubles.js",
    "**/angular-matchers.js",
    "**/angular-http.js",
    "**/nestjs.js",
    "**/react.js",
    "**/vue.js",
    "**/svelte.js",
    "**/rxjs.js",
    "**/console.js",
    "**/dom-stubs.js",
    "**/jasmine.js",
    "**/jasmine-compat.js",
    "**/observer-spy.js",
    "**/setup.js",
    "**/zone.js"
  ],
  "engines": {
    "node": ">=22"
  },
  "publishConfig": {
    "access": "public"
  },
  "scripts": {
    "build": "tsup && node scripts/thin-node-cts.mjs && node scripts/eslint-plugin-cts.mjs && node scripts/check-dist.mjs",
    "size:badge": "node scripts/size-badge.mjs",
    "size:badge:check": "node scripts/size-badge.mjs --check",
    "size:entries": "node scripts/size-entries.mjs",
    "size:entries:check": "node scripts/size-entries.mjs --check",
    "size:entries:update": "node scripts/size-entries.mjs --update",
    "smoke:dist": "node scripts/smoke-dist.mjs",
    "cold-import": "node scripts/cold-import.mjs",
    "cold-import:check": "node scripts/cold-import.mjs --check",
    "cold-import:update": "node scripts/cold-import.mjs --update",
    "export-map": "node scripts/generate-export-map.mjs",
    "export-map:check": "node scripts/generate-export-map.mjs --check",
    "llms": "node scripts/generate-llms-txt.mjs",
    "llms:check": "node scripts/generate-llms-txt.mjs --check",
    "docs:check": "node scripts/check-docs-frontmatter.mjs",
    "ru:sync": "node scripts/sync-ru-pages.mjs",
    "ru:check": "node scripts/sync-ru-pages.mjs --check",
    "plugin:sync": "node scripts/sync-plugin-version.mjs",
    "plugin:sync:check": "node scripts/sync-plugin-version.mjs --check",
    "skill:check": "node scripts/check-skill.mjs",
    "alias:sync": "node scripts/sync-alias.mjs",
    "alias:sync:check": "node scripts/sync-alias.mjs --check",
    "release:notes": "node scripts/release-notes.mjs",
    "typecheck": "tsc --noEmit",
    "typecheck:bench": "tsc --noEmit -p tsconfig.bench.json",
    "typecheck:bench-angular": "tsc --noEmit -p tsconfig.bench-angular.json",
    "test": "vitest run",
    "test:watch": "vitest",
    "test:coverage": "node scripts/run-coverage.mjs run --coverage",
    "test:shared-env": "vitest run --config vitest.shared-env.config.mts",
    "test:zone": "vitest run --config vitest.zone.config.mts",
    "test:happy-dom": "vitest run --config vitest.happy-dom.config.mts",
    "test:invariants": "vitest run --config vitest.invariants.config.mts",
    "test:types": "vitest run --config vitest.types.config.mts",
    "types:budget": "node scripts/check-type-budget.mjs",
    "test:node": "node --import ./scripts/node-ts-resolve.mjs --test \"src/node-tests/*.node.test.ts\"",
    "test:bun": "bun test ./src/bun-tests/core.bun.test.ts ./src/bun-tests/rxjs.bun.test.ts ./src/bun-tests/jasmine.bun.test.ts",
    "test:bun:angular": "bun test --preload ./src/bun-angular.ts ./src/bun-tests",
    "test:bun:isolate": "bun test --isolate --preload ./src/bun-angular.ts ./src/bun-tests",
    "test:bun:preload": "bun test --preload ./dist/bun-angular.js ./src/bun-tests",
    "test:rstest": "rstest run",
    "bench": "node scripts/bench-self.mjs",
    "bench:vs": "node scripts/bench-run.mjs",
    "bench:vs:fast": "node scripts/bench-run.mjs --fast",
    "bench:vs:precise": "node scripts/bench-run.mjs --precise",
    "bench:angular": "node bench-angular/run.mjs",
    "bench:memory": "vitest run --config vitest.bench.memory.config.mts",
    "bench:suite": "node scripts/bench-suite.mjs",
    "bench:check": "node scripts/bench-check.mjs",
    "bench:smoke": "node scripts/bench-smoke.mjs",
    "lint": "eslint .",
    "lint:fix": "eslint . --fix",
    "format": "prettier -w \"src/**/*.ts\" \"**/*.md\"",
    "format:check": "prettier -c \"src/**/*.ts\" \"**/*.md\"",
    "deps:check": "node scripts/check-dep-drift.mjs",
    "jscpd": "jscpd",
    "check": "npm run deps:check && npm run typecheck && npm run lint && npm run format:check && npm run jscpd && npm run export-map:check && npm run llms:check && npm run docs:check && npm run ru:check && npm run plugin:sync:check && npm run skill:check && npm run alias:sync:check && npm run test:coverage && npm run test:types && npm run types:budget && npm run test:shared-env && npm run test:zone && npm run test:happy-dom && npm run test:invariants && npm run test:node && npm run test:bun && npm run test:bun:angular && npm run test:bun:isolate && npm run test:rstest && npm run build && npm run smoke:dist && npm run size:entries:check && npm run size:badge:check && npm run test:bun:preload && npm run cold-import:check",
    "prepublishOnly": "npm run build",
    "version": "node scripts/sync-plugin-version.mjs && node scripts/sync-alias.mjs && node scripts/generate-export-map.mjs && git add .claude-plugin alias src/cli/checks/export-map.generated.ts"
  },
  "peerDependencies": {
    "@angular/common": ">=20.0.0",
    "@angular/core": ">=20.0.0",
    "@angular/forms": ">=20.0.0",
    "@angular/platform-browser": ">=20.0.0",
    "@angular/router": ">=20.0.0",
    "rxjs": ">=7.2.0",
    "vitest": ">=2.1.0"
  },
  "peerDependenciesMeta": {
    "@angular/common": {
      "optional": true
    },
    "@angular/core": {
      "optional": true
    },
    "@angular/forms": {
      "optional": true
    },
    "@angular/platform-browser": {
      "optional": true
    },
    "@angular/router": {
      "optional": true
    },
    "rxjs": {
      "optional": true
    },
    "vitest": {
      "optional": true
    }
  },
  "overrides": {
    "@analogjs/vitest-angular": {
      "vitest": "$vitest"
    },
    "@angular/build": {
      "vitest": "$vitest"
    }
  },
  "devDependencies": {
    "@analogjs/vite-plugin-angular": "^2.2.0",
    "@analogjs/vitest-angular": "^2.2.0",
    "@angular/build": "^22.1.7",
    "@angular/common": "^22.1.5",
    "@angular/compiler": "^22.1.5",
    "@angular/compiler-cli": "^22.1.5",
    "@angular/core": "^22.1.5",
    "@angular/forms": "22.1.5",
    "@angular/platform-browser": "^22.1.5",
    "@angular/router": "^22.1.5",
    "@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
    "@eslint/js": "^10.0.1",
    "@happy-dom/global-registrator": "^20.14.0",
    "@rstest/core": "^0.11.12",
    "@trivago/prettier-plugin-sort-imports": "^6.0.2",
    "@types/jsdom": "^30.0.0",
    "@types/node": "^24.13.3",
    "@typescript-eslint/eslint-plugin": "^8.69.0",
    "@typescript-eslint/parser": "^8.69.0",
    "@vitest/coverage-istanbul": "^5.0.0",
    "@vitest/coverage-v8": "^5.0.0",
    "eslint": "^10.10.0",
    "eslint-plugin-import-x": "^4.17.1",
    "eslint-plugin-optimize-regex": "^1.2.1",
    "eslint-plugin-rxjs-x": "^1.0.6",
    "globals": "^17.12.0",
    "happy-dom": "^20.14.0",
    "js-yaml": "^5.4.1",
    "jscpd": "^5.1.2",
    "jsdom": "^30.0.1",
    "prettier": "^3.8.4",
    "prettier-plugin-sort-json": "^4.2.0",
    "reflect-metadata": "^0.2.2",
    "rxjs": "^7.8.0",
    "tsup": "^8.3.0",
    "typescript": "^6.0.3",
    "vitest": "^5.0.0",
    "zone.js": "^0.16.2"
  }
}
