package.json
{
"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"
}