{ "name": "yt2ai-bookmarklet", "version": "1.0.0", "description": "YouTube Subtitle Extraction & AI Summarization Bookmarklet for Android Chrome", "main": "src/bookmarklet.js", "scripts": { "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", "build": "NODE_ENV=production webpack --config build/webpack.config.js", "build:dev": "NODE_ENV=development webpack --config build/webpack.config.js", "build:watch": "NODE_ENV=development webpack --config build/webpack.config.js --watch", "lint": "eslint src/ tests/ build/", "lint:fix": "eslint src/ tests/ build/ --fix", "format": "prettier --write src/ tests/ build/", "format:check": "prettier --check src/ tests/ build/", "dev": "npm run build:dev && echo 'Development build ready in dist/bookmarklet-debug.js'", "clean": "rm -rf dist/ coverage/", "verify": "npm run lint && npm run format:check && npm run test && npm run build", "commit": "cz", "release": "semantic-release", "release:dry": "semantic-release --dry-run", "version": "echo $npm_package_version", "prepare": "husky install" }, "keywords": [ "bookmarklet", "youtube", "subtitles", "ai", "mobile", "android", "chrome" ], "author": "YT2AI Team", "license": "MIT", "devDependencies": { "@babel/core": "^7.22.0", "@babel/preset-env": "^7.22.0", "@commitlint/cli": "^17.6.6", "@commitlint/config-conventional": "^17.6.6", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.1", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^9.0.3", "@semantic-release/npm": "^10.0.4", "@semantic-release/release-notes-generator": "^11.0.4", "babel-jest": "^29.5.0", "babel-loader": "^9.1.0", "commitizen": "^4.3.0", "core-js": "^3.31.0", "cz-conventional-changelog": "^3.3.0", "eslint": "^8.42.0", "husky": "^8.0.3", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "prettier": "^2.8.8", "semantic-release": "^21.0.7", "terser-webpack-plugin": "^5.3.9", "webpack": "^5.88.0", "webpack-cli": "^5.1.4" }, "jest": { "testEnvironment": "jsdom", "setupFilesAfterEnv": ["/tests/setup.js"], "collectCoverageFrom": [ "src/**/*.js", "!src/**/*.test.js", "!src/**/node_modules/**" ], "coverageThreshold": { "global": { "branches": 70, "functions": 70, "lines": 70, "statements": 70 } }, "testMatch": [ "**/tests/**/*.test.js" ] }, "babel": { "presets": ["@babel/preset-env"] }, "eslintConfig": { "env": { "browser": true, "es2021": true, "jest": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }, "rules": { "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], "no-console": "off", "prefer-const": "error" } }, "prettier": { "semi": true, "trailingComma": "es5", "singleQuote": true, "printWidth": 100, "tabWidth": 2 }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } }, "commitlint": { "extends": ["@commitlint/config-conventional"] } }