{ "name": "shlink-web-client", "description": "A React-based progressive web application for shlink", "private": false, "homepage": "", "repository": "https://github.com/shlinkio/shlink-web-client", "license": "MIT", "scripts": { "lint": "npm run lint:css && npm run lint:js", "lint:css": "stylelint src/*.scss src/**/*.scss shlink-web-component/*.scss shlink-web-component/**/*.scss shlink-frontend-kit/*.scss shlink-frontend-kit/**/*.scss", "lint:js": "eslint --ext .js,.ts,.tsx src shlink-web-component shlink-frontend-kit test", "lint:fix": "npm run lint:css:fix && npm run lint:js:fix", "lint:css:fix": "npm run lint:css -- --fix", "lint:js:fix": "npm run lint:js -- --fix", "types": "tsc", "start": "vite serve --host=0.0.0.0", "preview": "vite preview --host=0.0.0.0", "build": "npm run types && vite build && node scripts/replace-version.mjs", "build:dist": "npm run build && node scripts/create-dist-file.mjs", "test": "vitest run --run", "test:watch": "vitest --watch", "test:ci": "npm run test -- --coverage", "test:verbose": "npm run test -- --verbose" }, "dependencies": { "@fortawesome/fontawesome-free": "^6.4.2", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-brands-svg-icons": "^6.4.2", "@fortawesome/free-regular-svg-icons": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", "@json2csv/plainjs": "^7.0.1", "@reduxjs/toolkit": "^1.9.5", "bootstrap": "^5.3.1", "bottlejs": "^2.0.1", "bowser": "^2.11.0", "chart.js": "^4.3.3", "classnames": "^2.3.2", "compare-versions": "^6.1.0", "csvtojson": "^2.0.10", "date-fns": "^2.30.0", "event-source-polyfill": "^1.0.31", "history": "^5.3.0", "leaflet": "^1.9.4", "qs": "^6.11.2", "ramda": "^0.27.2", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-colorful": "^5.6.1", "react-copy-to-clipboard": "^5.1.0", "react-datepicker": "^4.16.0", "react-dom": "^18.2.0", "react-external-link": "^2.2.0", "react-leaflet": "^4.2.1", "react-redux": "^8.1.2", "react-router-dom": "^6.14.2", "react-swipeable": "^7.0.1", "react-tag-autocomplete": "^6.3.0", "reactstrap": "^9.2.0", "redux-localstorage-simple": "^2.5.1", "uuid": "^9.0.0", "workbox-core": "^6.5.4", "workbox-expiration": "^6.5.4", "workbox-precaching": "^6.5.4", "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.4" }, "devDependencies": { "@shlinkio/eslint-config-js-coding-standard": "~2.2.0", "@shlinkio/stylelint-config-css-coding-standard": "~1.1.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", "@total-typescript/shoehorn": "^0.1.1", "@types/leaflet": "^1.9.3", "@types/qs": "^6.9.7", "@types/ramda": "^0.27.66", "@types/react": "^18.2.19", "@types/react-color": "^3.0.6", "@types/react-copy-to-clipboard": "^5.0.4", "@types/react-datepicker": "^4.15.0", "@types/react-dom": "^18.2.7", "@types/react-tag-autocomplete": "^6.3.0", "@types/uuid": "^9.0.2", "@vitejs/plugin-react": "^4.0.4", "@vitest/coverage-v8": "^0.34.1", "adm-zip": "^0.5.10", "chalk": "^5.3.0", "eslint": "^8.46.0", "jsdom": "^22.1.0", "resize-observer-polyfill": "^1.5.1", "sass": "^1.64.2", "stylelint": "^15.10.2", "typescript": "^5.1.6", "vite": "^4.4.9", "vite-plugin-pwa": "^0.16.4", "vitest": "^0.34.1", "vitest-canvas-mock": "^0.3.2" }, "browserslist": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all" ] }