{ "name": "dev.to", "version": "1.0.0", "description": "Where programmers share ideas and help each other grow", "engines": { "yarn": ">=1.21.x" }, "main": "index.js", "directories": { "doc": "docs", "lib": "lib", "test": "test" }, "scripts": { "api-docs:lint": "spectral lint -F hint -v docs/api_v0.yml && lint-openapi -e docs/api_v0.yml", "api-docs:serve": "redoc-cli serve docs/api_v0.yml --options.pathInMiddlePanel --options.jsonSampleExpandLevel=all --options.menuToggle -t docs/api_template.hbs --watch", "generate-themes-storybook": "node-sass app/assets/stylesheets/themes -o storybook-static/themes", "build-storybook": "build-storybook -c app/javascript/.storybook -s app/assets --quiet", "postbuild-storybook": "npm run generate-themes-storybook", "prestorybook": "npm run generate-themes-storybook", "storybook": "start-storybook -p 6006 -c app/javascript/.storybook -s app/assets,storybook-static", "test": "jest app/javascript/ --coverage", "test:watch": "jest app/javascript/ --watch" }, "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "app/assets/config/manifest.js": [ "prettier --write", "eslint --fix -c app/assets/javascripts/.eslintrc.js" ], "docs/api_v0.yml": [ "spectral lint -F hint", "lint-openapi -e" ], "*.{js,jsx}": [ "prettier --write", "eslint --fix" ], "{app,spec,config,lib}/**/*.rb": [ "bundle exec rubocop --require rubocop-rspec --safe-auto-correct" ], "Gemfile": [ "bundle exec rubocop --require rubocop-rspec --safe-auto-correct" ], "app/**/*.html.erb": [ "bundle exec erblint" ], "*.json": [ "prettier --write" ], "*.scss": [ "prettier --write" ], "*.md": [ "prettier --write --prose-wrap always" ] }, "prettier": { "singleQuote": true, "trailingComma": "all", "printWidth": 80 }, "repository": { "type": "git", "url": "git+https://github.com/thepracticaldev/dev.to.git" }, "author": "", "license": "AGPL-3.0-or-later", "bugs": { "url": "https://github.com/thepracticaldev/dev.to/issues" }, "homepage": "https://github.com/thepracticaldev/dev.to#readme", "devDependencies": { "@stoplight/spectral": "5.3.0", "@storybook/addon-actions": "^5.3.18", "@storybook/addon-knobs": "^5.3.18", "@storybook/addon-links": "^5.3.18", "@storybook/addons": "^5.3.18", "@storybook/preact": "^5.3.18", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.1.0", "babel-jest": "^24.9.0", "babel-loader": "^8.1.0", "css-loader": "^3.5.2", "eslint": "^6.8.0", "eslint-config-airbnb": "^17.1.1", "eslint-config-airbnb-base": "^14.1.0", "eslint-config-prettier": "^6.10.1", "eslint-plugin-babel": "^5.3.0", "eslint-plugin-ignore-erb": "^0.1.1", "eslint-plugin-import": "^2.20.2", "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-react": "^7.19.0", "faker": "^4.1.0", "husky": "^4.2.5", "ibm-openapi-validator": "0.26.1", "jest": "25.3.0", "jest-axe": "^3.4.0", "jest-fetch-mock": "^3.0.3", "jsdom": "^16.2.2", "lint-staged": "^10.1.3", "node-sass": "^4.13.1", "preact-render-spy": "1.3.0", "preact-render-to-json": "^3.6.6", "prettier": "^2.0.4", "redoc-cli": "0.9.7", "sass-loader": "^8.0.2", "style-loader": "^1.1.4", "webpack-dev-server": "^3.10.3" }, "dependencies": { "@babel/core": "^7.9.0", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-react-jsx": "^7.9.4", "@babel/preset-env": "^7.9.5", "@github/clipboard-copy-element": "^1.1.2", "@rails/webpacker": "5.0.1", "babel-preset-preact": "^2.0.0", "chart.js": "^2.9.3", "clipboard-polyfill": "^2.8.6", "core-js": "3", "file-loader": "^6.0.0", "focus-visible": "^5.1.0", "honeybadger-js": "2.2.1", "intersection-observer": "^0.8.0", "linkstate": "^1.1.1", "lodash.debounce": "4.0.8", "marked": "^0.8.2", "postscribe": "^2.0.8", "preact": "^8.5.3", "preact-compat": "^3.19.0", "preact-textarea-autosize": "^4.0.7", "prop-types": "^15.7.2", "pusher-js": "^5.1.1", "rails-erb-loader": "^5.5.2", "stimulus": "^1.1.1", "twilio-video": "^2.3.0", "web-share-wrapper": "^0.2.1" }, "jest": { "setupFiles": [ "jest-localstorage-mock" ] } }