mattermost-mobile-upstream/package.json
Vishal e3b8acfa70
fix(ci): recycle Jest workers to prevent test-coverage OOM (#9977)
The ci/test-coverage step (test:ci --coverage) intermittently fails on
base GitHub-hosted runners: all suites pass, then the Jest process is
killed with exit 143 (SIGTERM) during coverage aggregation as memory
exceeds the runner's physical RAM. This surfaces as "The hosted runner
lost communication with the server" and an inflated ~59-min job.

Add --workerIdleMemoryLimit=1GB so Jest recycles workers once they
exceed 1GB heap, keeping peak memory under the runner ceiling. Worker
count is left at the default (base runners are 4 vCPU), so wall-clock
is unaffected.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 14:43:18 +03:00

231 lines
9.0 KiB
JSON

{
"name": "mattermost-mobile",
"version": "2.43.0",
"description": "Mattermost Mobile with React Native",
"main": "index.tsx",
"repository": "git@github.com:mattermost/mattermost-mobile.git",
"author": "Mattermost, Inc.",
"license": "Apache 2.0",
"private": true,
"engines": {
"node": "^22.11.0 || ^24.15.0",
"npm": "^10 || ^11"
},
"dependencies": {
"@formatjs/intl-datetimeformat": "7.4.2",
"@formatjs/intl-displaynames": "7.3.5",
"@formatjs/intl-getcanonicallocales": "3.2.6",
"@formatjs/intl-listformat": "8.3.5",
"@formatjs/intl-locale": "5.3.5",
"@formatjs/intl-numberformat": "9.3.5",
"@formatjs/intl-pluralrules": "6.3.5",
"@formatjs/intl-relativetimeformat": "12.3.5",
"@gorhom/bottom-sheet": "5.2.13",
"@gorhom/portal": "1.0.14",
"@mattermost/calls": "github:mattermost/calls-common#bf5c7a25d43478b7949a45d4cbbdacac17705b59",
"@mattermost/calls-native": "file:./libraries/@mattermost/calls-native",
"@mattermost/compass-icons": "0.1.53",
"@mattermost/hardware-keyboard": "file:./libraries/@mattermost/hardware-keyboard",
"@mattermost/react-native-emm": "1.7.0",
"@mattermost/react-native-network-client": "1.10.3",
"@mattermost/react-native-paste-input": "2.0.1",
"@mattermost/react-native-turbo-log": "0.6.0",
"@mattermost/rnshare": "file:./libraries/@mattermost/rnshare",
"@mattermost/rnutils": "file:./libraries/@mattermost/rnutils",
"@mattermost/secure-pdf-viewer": "file:./libraries/@mattermost/secure-pdf-viewer",
"@msgpack/msgpack": "3.1.3",
"@nozbe/watermelondb": "0.28.1-0",
"@preeternal/react-native-cookie-manager": "6.3.2",
"@react-native-camera-roll/camera-roll": "7.10.2",
"@react-native-clipboard/clipboard": "1.16.3",
"@react-native-community/cli": "20.1.3",
"@react-native-community/cli-platform-android": "20.1.3",
"@react-native-community/cli-platform-ios": "20.1.3",
"@react-native-community/datetimepicker": "9.1.0",
"@react-native-community/netinfo": "12.0.1",
"@react-native-documents/picker": "12.0.1",
"@react-native-documents/viewer": "4.0.0",
"@react-native-vector-icons/common": "13.0.0",
"@react-navigation/bottom-tabs": "7.15.13",
"@react-navigation/native": "7.2.4",
"@react-navigation/native-stack": "7.14.14",
"@react-navigation/stack": "7.8.13",
"@rneui/base": "5.0.0",
"@sentry/react-native": "8.11.0",
"@shopify/flash-list": "2.3.1",
"base-64": "1.0.0",
"commonmark": "npm:@mattermost/commonmark@0.31.2-0",
"commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#81b5d27509652bae50b4b510ede777dd3bd923cf",
"deep-equal": "2.2.3",
"emoji-regex": "10.6.0",
"expo": "55.0.23",
"expo-application": "55.0.14",
"expo-crypto": "55.0.14",
"expo-device": "55.0.16",
"expo-image": "55.0.10",
"expo-linear-gradient": "55.0.13",
"expo-router": "55.0.14",
"expo-splash-screen": "55.0.20",
"expo-store-review": "55.0.13",
"expo-video-thumbnails": "55.0.14",
"expo-web-browser": "55.0.15",
"fflate": "0.8.2",
"fuse.js": "7.3.0",
"grapheme-splitter": "1.0.4",
"html-entities": "2.6.0",
"js-sha256": "0.11.1",
"mime-db": "1.54.0",
"moment-timezone": "0.6.2",
"node-html-parser": "7.1.0",
"path-to-regexp": "8.4.2",
"prismjs": "1.30.0",
"ratex-react-native": "0.1.4",
"react": "19.2.6",
"react-freeze": "1.0.4",
"react-intl": "10.1.5",
"react-native": "0.83.9",
"react-native-dotenv": "3.4.11",
"react-native-gesture-handler": "2.31.2",
"react-native-haptic-feedback": "3.0.0",
"react-native-image-picker": "8.2.1",
"react-native-incall-manager": "4.2.1",
"react-native-keyboard-controller": "1.21.10",
"react-native-keychain": "10.0.0",
"react-native-localize": "3.7.0",
"react-native-nitro-bg-timer-plus": "0.3.2",
"react-native-nitro-modules": "0.35.6",
"react-native-notifications": "5.2.2",
"react-native-performance": "6.0.0",
"react-native-permissions": "5.5.1",
"react-native-reanimated": "4.3.1",
"react-native-safe-area-context": "5.7.0",
"react-native-screens": "4.24.0",
"react-native-share": "12.3.1",
"react-native-svg": "15.15.4",
"react-native-url-polyfill": "3.0.0",
"react-native-video": "6.19.2",
"react-native-walkthrough-tooltip": "1.6.0",
"react-native-webrtc": "124.0.7",
"react-native-worklets": "0.8.3",
"react-syntax-highlighter": "16.1.1",
"semver": "7.8.0",
"tinycolor2": "1.6.0",
"url-parse": "1.5.10"
},
"devDependencies": {
"@babel/eslint-parser": "7.28.6",
"@babel/plugin-proposal-decorators": "7.29.0",
"@babel/plugin-transform-class-properties": "7.28.6",
"@babel/plugin-transform-flow-strip-types": "7.27.1",
"@babel/plugin-transform-runtime": "7.29.0",
"@babel/preset-env": "7.29.5",
"@babel/preset-typescript": "7.28.5",
"@babel/runtime": "7.29.2",
"@react-native/babel-preset": "0.83.9",
"@react-native/eslint-config": "0.83.9",
"@react-native/metro-config": "0.83.9",
"@react-native/typescript-config": "0.83.9",
"@stylistic/eslint-plugin": "5.10.0",
"@testing-library/react-native": "13.3.3",
"@types/base-64": "1.0.2",
"@types/commonmark": "0.27.10",
"@types/commonmark-react-renderer": "4.3.4",
"@types/deep-equal": "1.0.4",
"@types/jest": "30.0.0",
"@types/lodash": "4.17.24",
"@types/mime-db": "1.43.6",
"@types/pako": "2.0.4",
"@types/querystringify": "2.0.2",
"@types/react": "19.2.14",
"@types/react-native-dotenv": "0.2.2",
"@types/react-syntax-highlighter": "15.5.13",
"@types/semver": "7.7.1",
"@types/tinycolor2": "1.4.6",
"@types/tough-cookie": "4.0.5",
"@types/url-parse": "1.4.11",
"@types/uuid": "10.0.0",
"@typescript-eslint/eslint-plugin": "8.59.2",
"@typescript-eslint/parser": "8.59.2",
"babel-plugin-formatjs": "11.3.6",
"babel-plugin-module-resolver": "5.0.3",
"eslint": "9.39.4",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-jest": "29.15.2",
"eslint-plugin-react": "7.37.5",
"eslint-plugin-react-hooks": "7.1.1",
"husky": "9.1.7",
"jest": "29.7.0",
"jest-cli": "29.7.0",
"jest-expo": "55.0.17",
"jetifier": "2.0.0",
"mmjstool": "github:mattermost/mattermost-utilities#83b1b311972b8f5e750aae4019457a40abb5aa44",
"nock": "14.0.15",
"patch-package": "8.0.1",
"react-test-renderer": "19.2.6",
"timezones.json": "1.7.2",
"tough-cookie": "6.0.1",
"ts-jest": "29.4.9",
"typescript": "6.0.3",
"uuid": "14.0.0"
},
"overrides": {
"@babel/runtime": "7.29.2",
"postcss": "8.5.13",
"xcode": {
"uuid": "14.0.0"
}
},
"scripts": {
"android": "react-native run-android",
"build:android": "./scripts/build.sh apk",
"build:android-unsigned": "./scripts/build.sh apk unsigned",
"build:ios": "./scripts/build.sh ipa",
"build:ios-sim": "./scripts/build.sh ipa simulator",
"build:ios-unsigned": "./scripts/build.sh ipa unsigned",
"check": "npm run lint && npm run tsc",
"check-test": "npm run lint && npm run tsc && npm run test",
"clean": "./scripts/clean.sh",
"e2e:android": "cd detox && npm run e2e:android-build && npm run e2e:android-test && cd ..",
"e2e:ios": "cd detox && npm run e2e:ios-test && cd ..",
"fix": "npm run lint -- --fix",
"i18n-clean-empty": "npm run mmjstool -- i18n clean-empty --mobile-dir .",
"i18n-extract": "npm run mmjstool -- i18n extract-mobile",
"ios": "react-native run-ios",
"ios-gems": "bundle install",
"intune:disable": "./scripts/intune-disable.sh",
"intune:enable": "INTUNE_ENABLED=1 npm run intune:link && INTUNE_ENABLED=1 npm run pod-install",
"intune:init": "./scripts/intune-init.sh",
"intune:link": "npm install --install-links --no-save ./libraries/@mattermost/intune",
"intune:status": "./scripts/intune-status.sh",
"lint": "eslint --ignore-pattern .gitignore --ignore-pattern node_modules --quiet .",
"mmjstool": "mmjstool",
"pod-install": "cd ios && RCT_NEW_ARCH_ENABLED=1 pod install",
"postinstall": "patch-package && ./scripts/postinstall.sh",
"prepare": "husky",
"preinstall": "./scripts/preinstall.sh && npx solidarity",
"start": "react-native start --host 127.0.0.1",
"test": "NODE_OPTIONS=--max_old_space_size=12000 jest --maxWorkers=4",
"test:ci": "NODE_OPTIONS=--max_old_space_size=12000 jest --verbose=false --forceExit --workerIdleMemoryLimit=1GB",
"test:ci:coverage": "npm run test:ci -- --coverage",
"test:coverage": "npm test -- --coverage",
"test:watch": "npm test -- --watch",
"tsc": "NODE_OPTIONS=--max_old_space_size=12000 tsc --noEmit",
"updatesnapshot": "NODE_OPTIONS=--max_old_space_size=12000 jest --updateSnapshot"
},
"expo": {
"autolinking": {
"exclude": [
"expo-keep-awake",
"expo-font"
],
"android": {
"buildFromSource": [
"expo-image",
"expo-video-thumbnails"
]
}
}
}
}