UNPKG

react-tetris2

Version:

Classic Tetris game as a reusable React 18+ component, fully typed with TypeScript and controllable via ref.

143 lines (142 loc) 4.12 kB
{ "name": "react-tetris2", "version": "0.1.3", "type": "module", "description": "Classic Tetris game as a reusable React 18+ component, fully typed with TypeScript and controllable via ref.", "engines": { "node": ">=20.0.0" }, "repository": { "type": "git", "url": "https://github.com/Ingenarte/react-tetris2.git" }, "homepage": "https://ingenarte.github.io/react-tetris2/", "license": "MIT", "author": { "name": "Ingenarte", "url": "https://github.com/Ingenarte" }, "_originalWork": { "author": "Matthew Brandly", "repo": "https://github.com/brandly/react-tetris", "version": "0.4.0" }, "main": "./dist/index.cjs.js", "module": "./dist/index.esm.js", "types": "./dist/index.d.ts", "lint-staged": { "*.{ts,tsx,js,jsx}": [ "eslint --fix", "prettier --write" ], "*.{css,md,json}": [ "prettier --write" ] }, "keywords": [ "react", "tetris", "game", "react-component", "typescript", "hooks", "tetris-game", "playable", "keyboard-controls", "react-game", "ui-component", "block-game" ], "sideEffects": false, "bugs": { "url": "https://github.com/Ingenarte/react-tetris2/issues" }, "publishConfig": { "access": "public" }, "files": [ "dist" ], "scripts": { "build": "npm run clean && vite build", "buildvite": "vite build", "clean": "rimraf dist", "test:unit": "vitest run", "dev": "vite", "lint": "eslint src --ext .ts,.tsx", "typecheck": "tsc --noEmit", "test": "vitest run --coverage", "fulltest": "npm run typecheck && npm run lint && npm run test", "storybook": "storybook dev -p 6006", "build-storybook": "build-storybook -c .storybook", "test:e2e": "VITE_E2E=1 playwright test", "test:e2e:install": "playwright install --with-deps" }, "devDependencies": { "@axe-core/playwright": "^4.10.1", "@chromatic-com/storybook": "^3.2.6", "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.27.0", "@playwright/test": "^1.52.0", "@storybook/addon-a11y": "^8.6.14", "@storybook/addon-essentials": "^8.6.14", "@storybook/addon-onboarding": "^8.6.14", "@storybook/blocks": "^8.6.14", "@storybook/experimental-addon-test": "^8.6.14", "@storybook/react": "^8.6.14", "@storybook/react-vite": "^8.6.14", "@storybook/test": "^8.6.14", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/assert": "1.5.10", "@types/events": "3.0.0", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.18", "@types/react": "18.3.8", "@types/react-dom": "18.3.0", "@types/styled-components": "^5.1.34", "@types/testing-library__jest-dom": "^5.14.9", "@typescript-eslint/eslint-plugin": "^8.32.1", "@typescript-eslint/parser": "^8.32.1", "@vitejs/plugin-react": "^4.4.1", "@vitest/browser": "^3.1.3", "@vitest/coverage-istanbul": "^3.1.3", "@vitest/ui": "^3.1.3", "axe-playwright": "^2.1.0", "esbuild": "0.25.4", "eslint": "^9.27.0", "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^4.3.5", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-prettier": "^5.4.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-security": "^3.0.1", "eslint-plugin-storybook": "^0.12.0", "gh-pages": "^6.1.1", "husky": "^9.1.7", "jsdom": "^26.1.0", "lint-staged": "^15.5.2", "playwright": "^1.52.0", "prettier": "^3.1.0", "rimraf": "^5.0.0", "storybook": "^8.6.14", "typescript": "^5.8.3", "uglify-js": "3.17.4", "vite": "^6.3.5", "vite-plugin-dts": "^4.5.4", "vitest": "^3.1.3" }, "peerDependencies": { "react": "^18.0.0 || ^19.1.0", "react-dom": "^18.0.0 || ^19.1.0" }, "dependencies": { "keymaster": "1.6.2", "react-icons": "^5.5.0", "styled-components": "^5.3.11" } }