{ "name": "fxa-settings", "version": "0.0.0", "homepage": "https://accounts.firefox.com/settings", "private": true, "scripts": { "prebuild": "nx l10n-prime && nx legal-prime", "build": "nx build-l10n && nx build-ts && nx build-css && nx build-react", "build-ts": "tsc --build", "build-css": "NODE_ENV=production tailwindcss -i ./src/styles/tailwind.css -o ./src/styles/tailwind.out.css --postcss", "build-storybook": "NODE_ENV=production STORYBOOK_BUILD=1 yarn build-css && NODE_OPTIONS=--openssl-legacy-provider sb build && cp -r public/locales ./storybook-static/locales", "build-l10n": "nx l10n-merge && nx l10n-bundle && nx l10n-merge-test", "build-react": "nx build-react-dev && nx build-react-stage && nx build-react-prod", "build-react-dev": "SKIP_PREFLIGHT_CHECK=true INLINE_RUNTIME_CHUNK=false NODE_OPTIONS=--openssl-legacy-provider BUILD_PATH=build/dev node scripts/build.js", "build-react-stage": "SKIP_PREFLIGHT_CHECK=true INLINE_RUNTIME_CHUNK=false NODE_OPTIONS=--openssl-legacy-provider BUILD_PATH=build/stage node scripts/build.js", "build-react-prod": "SKIP_PREFLIGHT_CHECK=true INLINE_RUNTIME_CHUNK=false NODE_OPTIONS=--openssl-legacy-provider BUILD_PATH=build/prod node scripts/build.js", "clean": "rimraf dist", "compile": "tsc --noEmit", "gql-extract": "persistgraphql src ../../configs/gql/allowlist/fxa-settings.json --js --extension=ts ", "l10n-bundle": "yarn l10n:bundle packages/fxa-settings branding,react,settings", "l10n-prime": "yarn l10n:prime packages/fxa-settings", "l10n-merge": "yarn grunt merge-ftl", "l10n-merge-test": "yarn grunt merge-ftl:test", "legal-prime": "yarn legal:clone fxa-settings", "lint": "eslint . .storybook", "start": "BUILD_PATH=build/dev pm2 start pm2.config.js && yarn check:url localhost:3000/settings/static/js/bundle.js", "stop": "pm2 stop pm2.config.js", "restart": "pm2 restart pm2.config.js", "delete": "pm2 delete pm2.config.js", "storybook": "STORYBOOK_BUILD=1 yarn build-css && NODE_OPTIONS=--openssl-legacy-provider storybook dev -p 6008 --no-version-updates", "test": "SKIP_PREFLIGHT_CHECK=true node scripts/test.js", "test-watch": "SKIP_PREFLIGHT_CHECK=true node scripts/test.js", "test-coverage": "yarn test --coverage --watchAll=false", "test-unit": "echo No unit tests present for $npm_package_name", "test-integration": "JEST_JUNIT_OUTPUT_FILE=../../artifacts/tests/$npm_package_name/jest-integration.xml SKIP_PREFLIGHT_CHECK=true node scripts/test.js --watchAll=false --ci --runInBand --reporters=default --reporters=jest-junit", "watch-ftl": "grunt watch-ftl", "format": "prettier --write --config ../../_dev/.prettierrc '**'" }, "jest": { "roots": [ "/src" ], "collectCoverageFrom": [ "src/**/*.{ts,tsx,js}", "!src/**/*.stories.*", "!src/**/mocks.*", "!src/components/Settings/*(ScrollToTop|UnitRowRecoveryKey|PageAvatar|App)/*" ], "setupFiles": [ "react-app-polyfill/jsdom" ], "setupFilesAfterEnv": [ "/src/setupTests.tsx" ], "testMatch": [ "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" ], "testEnvironment": "jsdom", "transform": { "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "/config/jest/babelTransform.js", "^.+\\.css$": "/config/jest/cssTransform.js", "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "/config/jest/fileTransform.js", "^.+\\.tsx?$": [ "ts-jest", { "isolatedModules": true } ] }, "transformIgnorePatterns": [ "[/\\\\]node_modules[/\\\\](?!@mozilla/glean).+\\.(js|jsx|mjs|cjs|ts|tsx)$", "^.+\\.module\\.(css|sass|scss)$" ], "modulePaths": [], "moduleNameMapper": { "^react-native$": "react-native-web", "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy", "@fxa/shared/l10n": "/../../libs/shared/l10n/src/index.ts", "^@fxa/shared/assets(.*)$": "/../../libs/shared/assets/src$1" }, "moduleFileExtensions": [ "web.js", "js", "web.ts", "ts", "web.tsx", "tsx", "json", "web.jsx", "jsx", "node" ], "watchPlugins": [ "jest-watch-typeahead/filename", "jest-watch-typeahead/testname" ], "resetMocks": false, "coverageThreshold": { "global": { "branches": 50, "lines": 45 }, "src/components/Settings/**/*": { "branches": 50, "lines": 65 } } }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "dependencies": { "@babel/core": "^7.24.4", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@material-ui/core": "v5.0.0-alpha.24", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", "@reach/router": "^1.3.4", "@react-pdf/renderer": "^3.1.12", "@svgr/webpack": "^8.1.0", "@types/material-ui": "^0.21.8", "@types/react-webcam": "^3.0.0", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", "babel-preset-react-app": "^10.0.1", "base32-decode": "^1.0.0", "base32-encode": "^1.2.0", "bfj": "^8.0.0", "browserify-zlib": "^0.2.0", "browserslist": "^4.23.0", "camelcase": "^6.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", "classnames": "^2.5.1", "crypto-browserify": "^3.12.0", "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^6.0.0", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", "eslint": "^8.3.0", "eslint-config-react-app": "^7.0.1", "eslint-webpack-plugin": "^4.1.0", "file-loader": "^6.2.0", "file-saver": "^2.0.5", "fs-extra": "^11.2.0", "fxa-auth-client": "workspace:*", "fxa-common-password-list": "^0.0.4", "fxa-react": "workspace:*", "html-webpack-plugin": "^5.6.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-watch-typeahead": "^1.0.0", "lodash.groupby": "^4.6.0", "mini-css-extract-plugin": "^2.9.0", "postcss": "^8.4.46", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^8.1.1", "postcss-normalize": "^10.0.1", "postcss-preset-env": "^9.5.0", "react-app-polyfill": "^3.0.0", "react-async-hook": "^4.0.0", "react-dev-utils": "^12.0.1", "react-easy-crop": "^5.0.0", "react-hook-form": "^6.15.8", "react-markdown": "^8.0.5", "react-refresh": "^0.14.2", "react-webcam": "^7.2.0", "rehype-raw": "^6.1.1", "resolve": "^1.22.8", "resolve-url-loader": "^5.0.0", "sass-loader": "^14.2.1", "semver": "^7.6.3", "source-map-loader": "^5.0.0", "stream-browserify": "^3.0.0", "style-loader": "^4.0.0", "subscriptions-transport-ws": "^0.11.0", "tailwindcss": "^3.4.1", "terser-webpack-plugin": "^5.2.5", "ua-parser-js": "1.0.35", "uuid": "^10.0.0", "webpack": "^5.94.0", "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^5.0.0", "workbox-webpack-plugin": "^7.1.0" }, "devDependencies": { "@babel/core": "^7.24.4", "@babel/plugin-transform-typescript": "^7.24.4", "@babel/preset-typescript": "^7.24.1", "@babel/types": "^7.24.0", "@storybook/addon-actions": "^8.0.0", "@storybook/addon-essentials": "^7.6.15", "@storybook/addon-interactions": "^7.6.16", "@storybook/addon-links": "^7.6.4", "@storybook/addon-styling": "^1.3.0", "@storybook/addons": "^7.5.2", "@storybook/blocks": "^7.0.24", "@storybook/preset-create-react-app": "^7.6.4", "@storybook/react": "^7.1.1", "@storybook/react-webpack5": "^7.0.23", "@storybook/testing-library": "^0.2.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react-hooks": "^8.0.0", "@testing-library/user-event": "^14.5.1", "@types/babel__core": "7.20.5", "@types/classnames": "^2.3.1", "@types/file-saver": "^2.0.5", "@types/jest": "^26.0.23", "@types/lodash.groupby": "^4", "@types/node": "^20.11.1", "@types/prop-types": "^15", "@types/reach__router": "^1.3.11", "@types/react-router": "^5.1.19", "@types/testing-library__react-hooks": "^4", "@types/ua-parser-js": "^0.7.36", "@types/uuid": "^10", "@types/webpack": "5.28.0", "babel-loader": "^9.1.3", "babel-plugin-named-exports-order": "^0.0.2", "babel-plugin-transform-typescript-metadata": "^0.3.2", "eslint": "^7.32.0", "eslint-config-react-app": "^6.0.0", "eslint-plugin-jest": "^27.6.0", "eslint-plugin-react": "^7.32.2", "fxa-shared": "workspace:*", "grunt": "^1.6.1", "grunt-cli": "^1.4.3", "grunt-contrib-concat": "^2.1.0", "grunt-contrib-watch": "^1.1.0", "jest-watch-typeahead": "0.6.5", "mutationobserver-shim": "^0.3.7", "nx": "18.3.1", "persistgraphql": "^0.3.11", "pm2": "^5.4.2", "postcss-assets": "^6.0.0", "postcss-import": "^16.1.0", "prop-types": "^15.8.1", "sinon": "^15.0.1", "storybook": "^7.0.23", "storybook-addon-rtl": "^0.5.0", "style-loader": "^4.0.0", "ts-jest": "^29.2.3", "type-fest": "^4.25.0", "typescript": "^5.5.3", "webpack": "^5.94.0" }, "nx": { "implicitDependencies": [ "crypto-relier" ], "tags": [ "scope:frontend", "type:core" ] }, "babel": { "presets": [ "react-app" ] }, "eslintConfig": { "extends": "react-app" } }