website/package.json
{
"name": "nusmods",
"version": "3.0.0-alpha",
"description": "NUSMods v3",
"scripts": {
"start": "cross-env NODE_ENV=development webpack serve --config webpack/webpack.config.dev.js",
"start:export": "cross-env NODE_ENV=development OPEN_BROWSER=0 webpack serve --config webpack/webpack.config.timetable-only.js --port 8081",
"build": "cross-env NODE_ENV=production node scripts/build",
"rsync": "rsync -avu dist/",
"rsync:export": "rsync -avu --delete-after dist-timetable/",
"promote-staging": "bash scripts/promote-staging.sh",
"typecheck": "tsc --noEmit",
"lint": "run-p \"lint:**\"",
"lint:code": "eslint --ext .js,.ts,.tsx api scripts src webpack",
"lint:styles": "stylelint \"src/**/*.scss\" --syntax scss",
"test": "jest --coverage",
"test:integration": "jest --config jest.integration.config.js",
"test:watch": "jest --watch",
"e2e": "nightwatch -e default,safariMobile,safariDesktop,edge",
"ci": "cross-env NODE_ENV=production yarn lint && yarn typecheck && yarn test && yarn test:integration && yarn build"
},
"author": "NUSModifications",
"license": "MIT",
"devDependencies": {
"@babel/cli": "7.22.10",
"@babel/core": "7.22.10",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
"@babel/plugin-proposal-object-rest-spread": "7.20.7",
"@babel/plugin-proposal-optional-chaining": "7.21.0",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-transform-react-constant-elements": "7.22.5",
"@babel/plugin-transform-react-inline-elements": "7.22.5",
"@babel/preset-env": "7.22.10",
"@babel/preset-react": "7.22.5",
"@babel/preset-typescript": "7.22.5",
"@packtracker/webpack-plugin": "2.3.0",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
"@svgr/webpack": "6.5.1",
"@testing-library/jest-dom": "5.17.0",
"@testing-library/react": "11.2.7",
"@testing-library/user-event": "12.8.3",
"@types/body-scroll-lock": "2.6.2",
"@types/enzyme": "3.10.13",
"@types/jest": "29.5.3",
"@types/json2mq": "0.2.0",
"@types/leaflet": "1.9.3",
"@types/lodash": "4.14.197",
"@types/mousetrap": "1.6.11",
"@types/no-scroll": "2.1.0",
"@types/react": "17.0.64",
"@types/react-beautiful-dnd": "13.1.4",
"@types/react-dom": "17.0.20",
"@types/react-helmet": "6.1.6",
"@types/react-kawaii": "0.17.0",
"@types/react-loadable": "5.5.7",
"@types/react-modal": "3.16.0",
"@types/react-redux": "7.1.25",
"@types/react-router-dom": "5.3.3",
"@types/react-scrollspy": "3.3.5",
"@types/redux-mock-store": "1.0.3",
"@types/use-subscription": "1.0.0",
"@types/webpack-env": "1.18.1",
"@typescript-eslint/eslint-plugin": "4.33.0",
"@typescript-eslint/parser": "4.33.0",
"@vercel/node": "1.15.4",
"@wojtekmaj/enzyme-adapter-react-17": "0.8.0",
"babel-jest": "29.6.2",
"babel-loader": "9.1.3",
"babel-plugin-dynamic-import-node": "2.3.3",
"babel-plugin-lodash": "3.3.4",
"babel-plugin-transform-react-class-to-function": "1.2.2",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
"chalk": "4.1.2",
"codecov": "3.8.2",
"copy-webpack-plugin": "10.2.4",
"cross-env": "7.0.3",
"css-loader": "6.8.1",
"cssnano": "4.1.11",
"enzyme": "3.11.0",
"enzyme-to-json": "3.6.2",
"eslint": "7.32.0",
"eslint-config-airbnb": "18.2.1",
"eslint-config-prettier": "7.2.0",
"eslint-import-resolver-webpack": "0.13.7",
"eslint-plugin-import": "2.28.1",
"eslint-plugin-jsx-a11y": "6.7.1",
"eslint-plugin-prettier": "3.4.1",
"eslint-plugin-react": "7.33.2",
"eslint-plugin-react-hooks": "4.6.0",
"fast-json-stable-stringify": "2.1.0",
"fs-extra": "9.1.0",
"graceful-fs": "4.2.11",
"html-webpack-plugin": "5.5.3",
"http-status": "1.6.2",
"icalendar": "0.7.1",
"identity-obj-proxy": "3.0.0",
"jest": "29.6.2",
"jest-environment-jsdom": "^29.5.0",
"jest-junit": "16.0.0",
"mini-css-extract-plugin": "1.6.2",
"nightwatch": "0.9.21",
"npm-run-all": "4.1.5",
"postcss": "^8.4.24",
"postcss-loader": "7.3.3",
"prettier": "2.8.8",
"react-dev-utils": "11.0.4",
"react-refresh": "0.14.0",
"redux-logger": "3.0.6",
"redux-mock-store": "1.5.4",
"sass": "1.66.1",
"sass-loader": "10.4.1",
"style-loader": "2.0.0",
"stylelint": "13.13.1",
"stylelint-config-prettier": "8.0.2",
"stylelint-config-standard": "20.0.0",
"stylelint-order": "4.1.0",
"terser-webpack-plugin": "5.3.9",
"typescript": "5.1.6",
"url-loader": "4.1.1",
"webpack": "5.88.2",
"webpack-cli": "4.10.0",
"webpack-dev-server": "4.15.1",
"webpack-merge": "5.9.0"
},
"dependencies": {
"@authenio/samlify-node-xmllint": "2.0.0",
"@material/fab": "0.40.1",
"@material/snackbar": "0.40.1",
"@sentry/browser": "6.19.7",
"@sentry/node": "6.19.7",
"@sentry/tracing": "6.19.7",
"@tippy.js/react": "3.1.1",
"axios": "1.4.0",
"body-scroll-lock": "3.1.5",
"bootstrap": "4.6.2",
"bowser": "2.11.0",
"browserslist-config-nusmods": "file:../packages/browserslist-config-nusmods",
"classnames": "2.3.2",
"core-js": "3.32.1",
"date-fns": "2.30.0",
"downshift": "6.1.12",
"ical-generator": "https://github.com/nusmodifications/ical-generator.git#a2aa62ed",
"immer": "8.0.4",
"json2mq": "0.2.0",
"leaflet": "1.9.4",
"leaflet-gesture-handling": "1.2.2",
"lodash": "4.17.21",
"mousetrap": "1.6.5",
"nusmoderator": "3.0.0",
"p-queue": "6.6.2",
"query-string": "6.14.1",
"react": "17.0.2",
"react-beautiful-dnd": "13.1.1",
"react-dom": "17.0.2",
"react-feather": "2.0.10",
"react-helmet": "6.1.0",
"react-kawaii": "0.18.0",
"react-leaflet": "3.2.5",
"react-loadable": "5.5.0",
"react-modal": "3.16.1",
"react-qr-svg": "2.4.0",
"react-redux": "7.2.9",
"react-router-dom": "5.3.4",
"react-scrollspy": "3.4.3",
"redux": "4.2.1",
"redux-persist": "6.0.0",
"redux-thunk": "2.4.2",
"reselect": "4.1.8",
"samlify": "2.7.7",
"searchkit": "2.4.1-alpha.5",
"use-subscription": "1.8.0"
},
"browserslist": [
"extends browserslist-config-nusmods"
]
}