{
  "name": "boardgame.io",
  "version": "0.39.16",
  "description": "library for turn-based games",
  "repository": "https://github.com/boardgameio/boardgame.io",
  "scripts": {
    "prestart": "run-p examples:install build",
    "start": "run-p dev:server dev:client",
    "predev": "npm run examples:install",
    "dev": "run-p build:watch dev:server dev:client",
    "dev:client": "node scripts/dev-client.js",
    "dev:server": "cross-env NODE_ENV=development nodemon -w src -w examples -e js,ts --exec babel-node --extensions \".ts,.js\" --ignore \"src/**/*.test.ts\" --presets @babel/preset-env examples/react-web/server.js",
    "build": "cross-env BABEL_ENV=rollup rollup --config rollup.config.js",
    "build:watch": "cross-env BABEL_ENV=rollup rollup -w --config rollup.config.js",
    "benchmark": "babel-node --extensions .ts,.js --presets @babel/preset-env,@babel/preset-typescript benchmark/index.js",
    "docs": "docsify serve docs",
    "examples": "npm run start",
    "examples:install": "node scripts/install-examples.js",
    "pretest": "npm run lint",
    "test": "cross-env NODE_ENV=test jest --no-cache",
    "test:watch": "cross-env NODE_ENV=test jest --watch",
    "test:coverage": "npm test -- --coverage --collectCoverageFrom=\"src/**\" --forceExit",
    "test:coveralls": "coveralls < coverage/lcov.info",
    "test:integration": "node ./scripts/integration.js",
    "ts": "tsc --noEmit",
    "ts:watch": "tsc --noEmit --watch",
    "lint": "eslint .",
    "lint:fix": "eslint --fix .",
    "prepublishOnly": "npm run clean",
    "proxydirs": "node scripts/proxy-dirs.js",
    "prepack": "run-s build proxydirs",
    "postpack": "npm run clean",
    "prettier": "prettier --write \"{examples,src,benchmark}/**/*.{ts,tsx,js,jsx,css,md}\"",
    "changelog": "node ./scripts/changelog.js",
    "clean": "node ./scripts/clean.js"
  },
  "sideEffects": false,
  "main": "dist/boardgameio.js",
  "unpkg": "dist/boardgameio.min.js",
  "module": "dist/boardgameio.es.js",
  "types": "dist/types/src/types.d.ts",
  "files": [
    "src",
    "dist/boardgameio.js",
    "dist/boardgameio.min.js",
    "dist/boardgameio.es.js",
    "dist/esm",
    "dist/cjs",
    "dist/types",
    "client",
    "core",
    "debug",
    "react",
    "react-native",
    "server",
    "ai",
    "plugins",
    "master",
    "multiplayer",
    "internal"
  ],
  "keywords": [
    "board games",
    "card games",
    "tabletop games",
    "game engine"
  ],
  "engines": {
    "node": ">=10.0",
    "npm": ">=6.0"
  },
  "author": "nicolodavis@gmail.com",
  "license": "MIT",
  "devDependencies": {
    "@babel/cli": "^7.10.3",
    "@babel/core": "^7.10.3",
    "@babel/node": "^7.10.3",
    "@babel/plugin-proposal-class-properties": "^7.10.1",
    "@babel/plugin-transform-modules-commonjs": "^7.10.1",
    "@babel/preset-env": "^7.10.3",
    "@babel/preset-react": "^7.10.1",
    "@babel/preset-typescript": "^7.10.1",
    "@testing-library/jest-dom": "^4.1.2",
    "@testing-library/svelte": "^1.9.0",
    "@types/enzyme": "^3.10.5",
    "@types/jest": "^24.0.0",
    "@types/koa-router": "^7.4.0",
    "@types/koa__cors": "^3.0.1",
    "@types/react": "^16.9.36",
    "@types/react-dom": "^16.9.8",
    "@types/shortid": "0.0.29",
    "@types/socket.io": "^2.1.4",
    "ajv": "^6.6.2",
    "babel-core": "^7.0.0-bridge.0",
    "babel-eslint": "^8.0.0",
    "babel-loader": "^8.0.5",
    "babel-plugin-module-resolver": "^3.0.0",
    "benchmark": "^2.1.4",
    "bundlewatch": "^0.2.5",
    "coveralls": "^3.0.0",
    "cross-env": "^5.1.1",
    "css-loader": "^3.1.0",
    "docsify-cli": "^4.4.0",
    "enzyme": "^3.10.0",
    "enzyme-adapter-react-16": "^1.14.0",
    "eslint": "^5.6.0",
    "eslint-config-prettier": "^3.1.0",
    "eslint-plugin-jest": "^21.22.1",
    "eslint-plugin-prettier": "^2.6.2",
    "eslint-plugin-react": "^7.11.1",
    "eslint-plugin-unicorn": "^6.0.1",
    "husky": "^1.3.1",
    "identity-obj-proxy": "^3.0.0",
    "jest": "^24.0.0",
    "jest-transform-svelte": "^2.1.0",
    "lint-staged": "^8.1.0",
    "node-persist": "^3.0.4",
    "nodemon": "^1.18.9",
    "npm-run-all": "^4.1.5",
    "prettier": "^1.19.1",
    "raf": "^3.4.0",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-router-dom": "^5.1.2",
    "react-svg-loader": "^3.0.3",
    "react-test-renderer": "^16.0.0",
    "rollup": "^1.0.2",
    "rollup-plugin-babel": "^4.2.0",
    "rollup-plugin-commonjs": "^9.2.0",
    "rollup-plugin-filesize": "^6.0.0",
    "rollup-plugin-node-builtins": "^2.1.2",
    "rollup-plugin-node-resolve": "^4.0.0",
    "rollup-plugin-replace": "^2.1.0",
    "rollup-plugin-svelte": "^5.1.0",
    "rollup-plugin-terser": "^5.3.0",
    "rollup-plugin-typescript2": "^0.22.0",
    "shelljs": "^0.7.8",
    "style-loader": "^0.18.2",
    "superagent": "^3.8.3",
    "supertest": "^3.1.0",
    "svelte-icons": "^1.1.0",
    "tempy": "^0.5.0",
    "ts-jest": "^24.0.2",
    "ts-transformer-imports": "^0.4.3",
    "ttypescript": "^1.5.7",
    "typescript": "^3.8.2"
  },
  "dependencies": {
    "@koa/cors": "^2.2.1",
    "@types/koa": "^2.11.3",
    "flatted": "^0.2.3",
    "immer": "^1.8.0",
    "koa": "^2.7.0",
    "koa-body": "^4.1.0",
    "koa-router": "^7.2.1",
    "koa-socket-2": "^1.0.17",
    "lru-cache": "^4.1.1",
    "prop-types": "^15.5.10",
    "react-cookies": "^0.1.0",
    "redux": "^4.0.0",
    "shortid": "^2.2.14",
    "socket.io": "^2.1.1",
    "svelte": "^3.24.0",
    "ts-toolbelt": "^6.3.6",
    "uuid": "3.2.1"
  },
  "jest": {
    "preset": "ts-jest/presets/js-with-babel",
    "moduleNameMapper": {
      "\\.(css)$": "identity-obj-proxy",
      "\\.(svg)$": "<rootDir>/.empty_module.js"
    },
    "coveragePathIgnorePatterns": [
      "/node_modules/",
      "src/.*/random.alea.js",
      "src/client/debug/.*",
      "src/types.ts"
    ],
    "setupFiles": [
      "raf/polyfill"
    ],
    "setupFilesAfterEnv": [
      "@testing-library/jest-dom/extend-expect"
    ],
    "transform": {
      "^.+\\.svelte$": "jest-transform-svelte"
    },
    "transformIgnorePatterns": [
      "node_modules/(?!(boardgame.io|flatted|svelte-icons)/)"
    ],
    "testPathIgnorePatterns": [
      "examples/",
      "integration/",
      "node_modules/",
      ".npm/"
    ]
  },
  "bundlewatch": {
    "files": [
      {
        "path": "dist/*.js",
        "maxSize": "100kB"
      },
      {
        "path": "dist/esm/*.js",
        "maxSize": "200kB",
        "compression": "none"
      }
    ]
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "pre-push": "npm run test:coverage"
    }
  }
}
