package.json

Summary

Maintainability
Test Coverage
{
  "name": "simorgh",
  "version": "1.0.0",
  "description": "Simorgh",
  "main": "./src/client.js",
  "sideEffects": [
    "./src/app/legacy/psammead/moment-timezone-include/**/*.*",
    "./src/app/legacy/psammead/psammead-locales/**/*.*",
    "./cypress/**/*.*"
  ],
  "resolutions": {
    "@babel/runtime": "7.25.6",
    "@optimizely/js-sdk-utils": "0.4.0",
    "uuid": "3.4.0",
    "winston@3.8.2": "patch:winston@npm:3.8.2#.yarn/patches/winston-npm-3.8.2-2035e9cac4.patch"
  },
  "workspaces": {
    "packages": [
      "ws-nextjs-app",
      "src/app/routes/article/getInitialData",
      "src/app/routes/utils/fetchDataFromBFF",
      "src/app/routes/utils/fetchPageData",
      "scripts/bundleSize"
    ]
  },
  "scripts": {
    "type-check": "tsc",
    "amp:validate": "wait-on -t 20000 http://localhost:7080/status && node ./scripts/ampHtmlValidator/cli.js",
    "build:local": "rm -rf build && cp envConfig/local.env .env && NODE_ENV=production webpack",
    "build": "yarn build:local && yarn type-check && node --experimental-modules ./scripts/bundleSize/runBundleSize.js",
    "build:profile": "rm -rf build && cp envConfig/local.env .env && IS_PROD_PROFILE=true NODE_ENV=production webpack",
    "build:live": "cp envConfig/live.env .env && NODE_ENV=production webpack",
    "build:live:debug": "rm -rf build && awk '{sub(/LOG_DIR=.+/,\"LOG_DIR='log'\")}1' envConfig/live.env > .env && NODE_ENV=production webpack",
    "build:preview": "cp envConfig/preview.env .env && NODE_ENV=production webpack",
    "build:storybook": "yarn build && node .storybook/buildFontPreloads && storybook build -c .storybook -o storybook_dist",
    "build:test": "cp envConfig/test.env .env && NODE_ENV=production webpack",
    "build:test:debug": "rm -rf build && awk '{sub(/LOG_DIR=.+/,\"LOG_DIR='log'\")}1' envConfig/test.env > .env && NODE_ENV=production webpack",
    "cypress": "cypress run",
    "cypress:onefile": "CYPRESS_APP_ENV=live CYPRESS_SMOKE=false cypress run --spec './cypress/e2e/pages/storyPage/*'",
    "cypress:oneservice": "CYPRESS_APP_ENV=live CYPRESS_SMOKE=false CYPRESS_ONLY_SERVICE=mundo cypress run",
    "cypress:oneserviceandonefile": "CYPRESS_APP_ENV=live CYPRESS_SMOKE=false CYPRESS_ONLY_SERVICE=mundo cypress run  --spec './cypress/e2e/pages/storyPage/*'",
    "cypress:interactive": "cypress open",
    "cypress:3rdParty": "yarn cypress -- --project ./3rdPartyCypress/.",
    "cypress:adhoc": "yarn cypress:interactive -- --project ./AdHocCypress/.",
    "setupDevEnv": "cp envConfig/local.env .env && rm -rf envConfig/secret.env && ./scripts/checkSecretEnvVariables.sh",
    "dependencyFreshness": "node ./scripts/dependencyFreshness",
    "esmDependencyCheck": "node ./scripts/esmDependencyCheck.js",
    "dev": "yarn setupDevEnv && rm -rf build && NODE_OPTIONS=--no-experimental-fetch run-p webpack:dev:client webpack:dev:server",
    "lighthouse": "./scripts/lighthouseRun.sh",
    "mostReadAndWatchedCollectionData": "node ./scripts/mostReadAndWatchedCollectionData",
    "postshrinkwrap": "test -z $CI && ./scripts/packagelockHttps.sh; git update-index --assume-unchanged .env",
    "prepare": "husky install",
    "preinstall": "node scripts/check-package-manager.js",
    "start": "NODE_ENV=production node --no-experimental-fetch --max-old-space-size=3500 build/server.js",
    "stop": "./scripts/killApp.sh",
    "storybook": "node .storybook/buildFontPreloads && storybook dev -p 9001 -c .storybook",
    "test": "yarn build && yarn test:local",
    "test:local": "yarn test:lint && yarn test:dependencies && yarn test:unit && run-p --race start amp:validate && run-p --race start test:integration:ci",
    "test:dependencies": "node ./scripts/dependencyCheck",
    "test:e2e": "yarn stop && yarn build && run-p --race start cypress",
    "test:e2e:interactive": "yarn stop && yarn build && run-p --race start cypress:interactive",
    "test:lint": "eslint --ext .js,jsx,json,ts,tsx ./src ./data ./cypress ./.storybook ./webpack**",
    "test:lint:fix": "eslint --fix --ext .js,jsx,json,ts,tsx ./src ./data ./ws-nextjs-app/pages ./cypress ./.storybook ./webpack**",
    "test:puppeteer": "jest --ci --env=jsdom --colors ./puppeteer",
    "test:unit": "test -z $CI && NODE_OPTIONS=--experimental-vm-modules jest --env=jsdom --coverage --colors --testPathIgnorePatterns=\"src/integration\" \"scripts/bundleSize\" \"puppeteer\" \"ws-nextjs-app\"  || NODE_OPTIONS=--experimental-vm-modules jest --ci --runInBand --env=jsdom --coverage --colors --testPathIgnorePatterns=\"src/integration\" \"scripts/bundleSize\" \"puppeteer\" \"ws-nextjs-app\"",
    "test:unit:scripts": "jest --env=jsdom --coverage --colors --testPathPattern=\"scripts/bundleSize/\"",
    "test:unit:onetest": "test -z $CI && NODE_OPTIONS=--experimental-vm-modules jest --env=jsdom --coverage --colors --testPathPattern=\"src/app/components/\" || NODE_OPTIONS=--experimental-vm-modules jest --ci --runInBand --env=jsdom --coverage --colors --testPathPattern=\"src/app/components/\"",
    "test:unit:watch": "yarn test:unit -- --watch",
    "test:unit:updatesnapshots": "NODE_OPTIONS=--experimental-vm-modules jest --updateSnapshot --env=jsdom --coverage --silent=false --colors --testPathIgnorePatterns=\"src/integration\" \"scripts/bundleSize\" \"puppeteer\" \"ws-nextjs-app\"",
    "test:integration": "node src/integration/utils/runTests/index.js",
    "test:integration:updatesnapshots": "node src/integration/utils/runTests/index.js  --updateSnapshot",
    "test:integration:ci": "JEST_SILENT_REPORTER_DOTS=true yarn test:integration -- --ci --onlyRunTests --reporters=jest-silent-reporter",
    "test:linkey": "node scripts/linkeySetup.js && jest src/app/lib/config/services/*.test.js --verbose true; yarn test:linkey:cleanup",
    "test:linkey:cleanup": "find src/app/lib/config/services -type f -name '*.test.js' -delete",
    "updateMinorPatch": "rm -rf node_modules/ && yarn install && npm update && yarn install",
    "webpack:dev:client": "NODE_ENV=development webpack serve --config-name='modern' --hot --env config='client'",
    "webpack:dev:server": "wait-on ./build/public/modern-loadable-stats-local.json && NODE_ENV=development webpack --watch --progress --env config='server'"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/bbc/simorgh.git"
  },
  "keywords": [
    "BBC",
    "Article"
  ],
  "author": "BBC",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/bbc/simorgh/issues"
  },
  "homepage": "https://github.com/bbc/simorgh#readme",
  "dependencies": {
    "@bbc/web-vitals": "1.2.0",
    "@emotion/cache": "11.11.0",
    "@emotion/react": "11.11.4",
    "@emotion/server": "11.11.0",
    "@emotion/styled": "11.11.5",
    "@loadable/component": "5.16.4",
    "@loadable/server": "5.16.5",
    "@optimizely/react-sdk": "3.2.2",
    "aws-embedded-metrics": "4.1.1",
    "compression": "1.7.4",
    "core-js": "3.37.1",
    "dotenv": "16.4.5",
    "express": "4.20.0",
    "express-static-gzip": "2.1.7",
    "helmet": "7.1.0",
    "helmet-csp": "4.0.0",
    "intersection-observer": "0.12.2",
    "isomorphic-fetch": "3.0.0",
    "jalaali-js": "1.2.7",
    "js-cookie": "3.0.5",
    "lru-cache": "7.7.1",
    "moment": "2.30.1",
    "moment-timezone": "0.5.45",
    "morgan": "1.10.0",
    "path-to-regexp": "6.3.0",
    "polyfill-crypto.getrandomvalues": "1.0.0",
    "ramda": "0.30.1",
    "react": "18.3.1",
    "react-dom": "18.3.1",
    "react-helmet": "6.1.0",
    "react-lazyload": "3.2.1",
    "react-router-config": "5.1.1",
    "react-router-dom": "5.3.4",
    "url-parse": "1.5.10",
    "uuid": "8.3.2",
    "winston": "patch:winston@3.8.2#./patches/winston-file-descriptor.patch"
  },
  "devDependencies": {
    "@babel/core": "7.25.2",
    "@babel/eslint-parser": "7.25.1",
    "@babel/plugin-proposal-export-default-from": "7.24.7",
    "@babel/plugin-proposal-object-rest-spread": "7.20.7",
    "@babel/plugin-proposal-throw-expressions": "7.24.7",
    "@babel/plugin-syntax-dynamic-import": "7.8.3",
    "@babel/plugin-transform-runtime": "7.25.4",
    "@babel/polyfill": "7.12.1",
    "@babel/preset-env": "7.25.4",
    "@babel/preset-react": "7.24.7",
    "@babel/preset-typescript": "7.24.7",
    "@babel/runtime": "7.25.6",
    "@cypress/webpack-preprocessor": "6.0.2",
    "@emotion/babel-plugin": "11.11.0",
    "@emotion/babel-preset-css-prop": "11.11.0",
    "@emotion/jest": "11.11.0",
    "@esbuild/darwin-arm64": "0.24.0",
    "@esbuild/darwin-x64": "0.24.0",
    "@esbuild/linux-arm64": "0.24.0",
    "@esbuild/linux-x64": "0.24.0",
    "@esbuild/win32-arm64": "0.24.0",
    "@esbuild/win32-x64": "0.24.0",
    "@loadable/babel-plugin": "5.16.1",
    "@loadable/webpack-plugin": "5.15.2",
    "@next/swc-darwin-arm64": "14.2.14",
    "@next/swc-darwin-x64": "14.2.14",
    "@next/swc-linux-arm64-gnu": "14.2.14",
    "@next/swc-linux-x64-gnu": "14.2.14",
    "@next/swc-win32-arm64-msvc": "14.2.14",
    "@next/swc-win32-x64-msvc": "14.2.14",
    "@storybook/addon-a11y": "8.2.9",
    "@storybook/addon-backgrounds": "8.2.9",
    "@storybook/addon-controls": "8.2.9",
    "@storybook/addon-docs": "8.2.9",
    "@storybook/addon-toolbars": "8.2.9",
    "@storybook/addon-viewport": "8.2.9",
    "@storybook/blocks": "8.2.9",
    "@storybook/builder-webpack5": "8.2.9",
    "@storybook/cli": "8.2.9",
    "@storybook/core-common": "8.2.9",
    "@storybook/react": "8.2.9",
    "@storybook/react-webpack5": "8.2.9",
    "@storybook/theming": "8.2.9",
    "@testing-library/dom": "10.4.0",
    "@testing-library/jest-dom": "6.5.0",
    "@testing-library/react": "15.0.7",
    "@testing-library/react-hooks": "8.0.1",
    "@testing-library/user-event": "14.5.2",
    "@types/jest": "29.5.12",
    "@types/js-cookie": "^3.0.3",
    "@types/jsdom": "^21.0.0",
    "@types/loadable__component": "5.13.9",
    "@types/node-fetch": "^2.6.11",
    "@types/ramda": "0.30.0",
    "@types/react": "18.3.3",
    "@types/react-dom": "18.3.0",
    "@types/react-helmet": "6.1.11",
    "@types/react-lazyload": "^3.2.0",
    "@types/react-router-dom": "5.3.3",
    "@types/testing-library__react": "10.2.0",
    "@types/url-parse": "^1.4.8",
    "@types/uuid": "^9.0.8",
    "@typescript-eslint/eslint-plugin": "5.62.0",
    "@typescript-eslint/parser": "5.62.0",
    "amphtml-validator": "1.0.38",
    "babel-jest": "29.7.0",
    "babel-loader": "9.2.1",
    "babel-plugin-dynamic-import-node": "2.3.3",
    "chalk": "5.3.0",
    "chromatic": "11.7.1",
    "cli-table": "0.3.11",
    "colors": "^1.4.0",
    "compression-webpack-plugin": "11.1.0",
    "copy-webpack-plugin": "12.0.2",
    "crypto": "1.0.1",
    "cypress": "13.10.0",
    "cypress-axe": "1.5.0",
    "cypress-multi-reporters": "1.6.4",
    "cypress-terminal-report": "6.1.2",
    "depcheck": "1.4.7",
    "eslint": "7.32.0",
    "eslint-config-airbnb": "18.2.1",
    "eslint-config-prettier": "9.1.0",
    "eslint-import-resolver-alias": "1.1.2",
    "eslint-plugin-cypress": "3.5.0",
    "eslint-plugin-import": "2.29.1",
    "eslint-plugin-json": "4.0.0",
    "eslint-plugin-jsx-a11y": "6.10.0",
    "eslint-plugin-no-only-tests": "^3.3.0",
    "eslint-plugin-prettier": "5.2.1",
    "eslint-plugin-react": "7.35.0",
    "eslint-plugin-react-hooks": "4.6.2",
    "glob": "11.0.0",
    "husky": "9.1.4",
    "inspectpack": "4.7.1",
    "jest": "29.7.0",
    "jest-environment-jsdom": "29.7.0",
    "jest-fetch-mock": "3.0.3",
    "jest-junit": "16.0.0",
    "jest-serializer-html": "7.1.0",
    "jest-silent-reporter": "0.6.0",
    "jsdom": "24.1.1",
    "minimist": "1.2.8",
    "mkdirp": "3.0.1",
    "mocha-junit-reporter": "2.2.1",
    "node-fetch": "2.6.12",
    "npm-run-all2": "6.2.2",
    "prettier": "3.2.5",
    "retry": "0.13.1",
    "start-server-nestjs-webpack-plugin": "2.2.5",
    "storybook": "8.2.9",
    "stream-browserify": "3.0.0",
    "strip-ansi": "7.1.0",
    "supertest": "7.0.0",
    "terser-webpack-plugin": "5.3.10",
    "timemachine": "0.3.2",
    "ts-jest": "29.2.4",
    "ts-loader": "9.5.1",
    "typescript": "5.4.5",
    "wait-on": "8.0.0",
    "webpack": "5.94.0",
    "webpack-bundle-analyzer": "4.10.2",
    "webpack-cli": "5.1.4",
    "webpack-dev-server": "5.1.0",
    "webpack-merge": "6.0.1",
    "webpack-node-externals": "3.0.0",
    "yaml-js": "0.3.1"
  },
  "spec": {
    "executable": [
      "./bake-scripts/*"
    ],
    "post": [
      "mkdir -p /etc/bake-scripts/",
      "cp -R -af /usr/lib/simorgh/bake-scripts/* /etc/bake-scripts"
    ],
    "prune": false,
    "requires": [
      "cloud-init"
    ]
  },
  "packageManager": "yarn@4.1.1"
}