From c8456569ea7ee450fdbdc8e34617d4cd9a7d5c9a Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Tue, 26 Aug 2025 16:55:37 +0200 Subject: [PATCH 01/22] refactor: migrate rnef to rock --- .github/workflows/remote-build-android.yml | 6 +- .github/workflows/remote-build-ios.yml | 4 +- .gitignore | 4 +- android/app/build.gradle | 2 +- android/settings.gradle | 2 +- ios/Podfile | 2 +- package-lock.json | 1120 ++++++++++++-------- package.json | 12 +- rnef.config.mjs | 20 - rock.config.mjs | 16 + scripts/run-build.sh | 8 +- 11 files changed, 690 insertions(+), 506 deletions(-) delete mode 100644 rnef.config.mjs create mode 100644 rock.config.mjs diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 12fa1b388dba..263affc0bcce 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -36,12 +36,12 @@ jobs: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} - name: RNEF Remote Build - Android - # rnef v2 - uses: callstackincubator/android@d9a81f860e436ff2971323990244e32830dcabd1 + # rock v3 + uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} with: variant: ${{ matrix.variant }} - rnef-build-extra-params: '--extra-params -PreactNativeArchitectures=arm64-v8a,x86_64' + rock-build-extra-params: '--extra-params -PreactNativeArchitectures=arm64-v8a,x86_64' comment-bot: false diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 272726abc480..993540b97b27 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -40,8 +40,8 @@ jobs: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} - name: RNEF Remote Build - iOS - # rnef v2 - uses: callstackincubator/ios@7847e0676242cefa801cba8ede6736140b7bae91 + # rock v3 + uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} diff --git a/.gitignore b/.gitignore index addca041e903..9d1d14e2e5fa 100644 --- a/.gitignore +++ b/.gitignore @@ -148,8 +148,8 @@ docs/.bundle # Output of react compiler healthcheck dev script react-compiler-output.txt -# React Native Enterprise Framework -.rnef/ +# Rock Framework +.rock/ # Generated by bob (for Nitro modules) modules/*/lib/ diff --git a/android/app/build.gradle b/android/app/build.gradle index a1291c2f8496..f06a72d4d799 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -66,7 +66,7 @@ react { autolinkLibrariesWithApp() // Added by install-expo-modules entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", rootDir.getAbsoluteFile().getParentFile().getAbsolutePath(), "android", "absolute"].execute(null, rootDir).text.trim()) - cliFile = file("../../node_modules/@rnef/cli/dist/src/bin.js") + cliFile = file("../../node_modules/rock/dist/src/bin.js") bundleCommand = "bundle" } diff --git a/android/settings.gradle b/android/settings.gradle index dc44374527c7..666927d395aa 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -2,7 +2,7 @@ pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } plugins { id("com.facebook.react.settings") } apply from: "${rootDir}/../gradleUtils/PatchedArtifactsSettings.gradle" -extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand(['npx', 'rnef', 'config', '-p', 'android']) } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand(['npx', 'rock', 'config', '-p', 'android']) } rootProject.name = 'NewExpensify' include ':react-native-webview' project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android') diff --git a/ios/Podfile b/ios/Podfile index edd378602c78..4467edca3add 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -82,7 +82,7 @@ target 'NewExpensify' do 'ReleaseProduction' => :release, 'Debug' => :debug - config = use_native_modules!(['npx', 'rnef', 'config', '-p', 'ios']) + config = use_native_modules!(['npx', 'rock', 'config', '-p', 'ios']) # Flags change depending on the env values. flags = get_default_flags() diff --git a/package-lock.json b/package-lock.json index f750c2281feb..2d91fa74fd81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -174,11 +174,10 @@ "@react-native/babel-preset": "0.79.2", "@react-native/metro-config": "0.79.2", "@react-navigation/devtools": "^6.0.10", - "@rnef/cli": "0.8.7", - "@rnef/platform-android": "0.8.7", - "@rnef/platform-ios": "0.8.7", - "@rnef/plugin-metro": "0.8.7", - "@rnef/provider-github": "0.8.7", + "@rock-js/platform-android": "0.9.2", + "@rock-js/platform-ios": "0.9.2", + "@rock-js/plugin-metro": "0.9.2", + "@rock-js/provider-github": "0.9.2", "@storybook/addon-a11y": "^8.6.9", "@storybook/addon-essentials": "^8.6.9", "@storybook/addon-webpack5-compiler-babel": "^3.0.5", @@ -275,6 +274,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.0.0", "reassure": "^1.0.0-rc.4", + "rock": "0.9.2", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", @@ -3086,7 +3086,9 @@ } }, "node_modules/@clack/core": { - "version": "0.4.2", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", + "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", "dev": true, "license": "MIT", "dependencies": { @@ -3095,11 +3097,13 @@ } }, "node_modules/@clack/prompts": { - "version": "0.10.1", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", + "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", "dev": true, "license": "MIT", "dependencies": { - "@clack/core": "0.4.2", + "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } @@ -4481,6 +4485,8 @@ }, "node_modules/@expo/fingerprint": { "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.11.tgz", + "integrity": "sha512-gNyn1KnAOpEa8gSNsYqXMTcq0fSwqU/vit6fP5863vLSKxHm/dNt/gm/uZJxrRZxKq71KUJWF6I7d3z8qIfq5g==", "dev": true, "license": "MIT", "dependencies": { @@ -4501,6 +4507,8 @@ }, "node_modules/@expo/fingerprint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -4515,11 +4523,15 @@ }, "node_modules/@expo/fingerprint/node_modules/arg": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true, "license": "MIT" }, "node_modules/@expo/fingerprint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -4535,6 +4547,8 @@ }, "node_modules/@expo/fingerprint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4546,11 +4560,15 @@ }, "node_modules/@expo/fingerprint/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/@expo/fingerprint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -4559,6 +4577,8 @@ }, "node_modules/@expo/fingerprint/node_modules/semver": { "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -4570,6 +4590,8 @@ }, "node_modules/@expo/fingerprint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10273,245 +10295,66 @@ "@rgba-image/create-image": "^0.1.1" } }, - "node_modules/@rnef/cli": { - "version": "0.8.7", - "dev": true, - "dependencies": { - "@react-native-community/cli-config": "^19.1.0", - "@rnef/config": "^0.8.7", - "@rnef/tools": "^0.8.7", - "adm-zip": "^0.5.16", - "commander": "^12.1.0", - "tar": "^7.4.3", - "tslib": "^2.3.0" - }, - "bin": { - "rnef": "dist/src/bin.js" - } - }, - "node_modules/@rnef/cli/node_modules/@react-native-community/cli-config": { - "version": "19.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@react-native-community/cli-tools": "19.1.1", - "chalk": "^4.1.2", - "cosmiconfig": "^9.0.0", - "deepmerge": "^4.3.0", - "fast-glob": "^3.3.2", - "joi": "^17.2.1" - } - }, - "node_modules/@rnef/cli/node_modules/@react-native-community/cli-tools": { - "version": "19.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@vscode/sudo-prompt": "^9.0.0", - "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "find-up": "^5.0.0", - "launch-editor": "^2.9.1", - "mime": "^2.4.1", - "ora": "^5.4.1", - "prompts": "^2.4.2", - "semver": "^7.5.2" - } - }, - "node_modules/@rnef/cli/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@rnef/cli/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@rnef/cli/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@rnef/cli/node_modules/chownr": { - "version": "3.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@rnef/cli/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@rnef/cli/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@rnef/cli/node_modules/cosmiconfig": { - "version": "9.0.0", - "dev": true, + "node_modules/@rnmapbox/maps": { + "version": "10.1.33", "license": "MIT", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" }, "peerDependencies": { - "typescript": ">=4.9.5" + "expo": ">=47.0.0", + "mapbox-gl": "^2.9.0", + "react": ">=16.6.1", + "react-dom": ">= 17.0.0", + "react-native": ">=0.59.9" }, "peerDependenciesMeta": { - "typescript": { + "expo": { + "optional": true + }, + "mapbox-gl": { + "optional": true + }, + "react-dom": { "optional": true } } }, - "node_modules/@rnef/cli/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@rnef/cli/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@rnef/cli/node_modules/minipass": { - "version": "7.1.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@rnef/cli/node_modules/minizlib": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@rnef/cli/node_modules/mkdirp": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rnef/cli/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@rnef/cli/node_modules/tar": { - "version": "7.4.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rnef/cli/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@rnef/config": { - "version": "0.8.7", + "node_modules/@rock-js/config": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/config/-/config-0.9.2.tgz", + "integrity": "sha512-JG9HBEQVemk4pjEiTm/GypnIKeYtIoK66d4se9uWMGQGaqkT84WLPfZtX7TqZRRA2Ex0Lt7lSHhBKIN121plKQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.26.2", - "@rnef/provider-github": "^0.8.7", - "@rnef/tools": "^0.8.7", + "@rock-js/provider-github": "^0.9.2", + "@rock-js/tools": "^0.9.2", "joi": "^17.13.3", "tslib": "^2.3.0" } }, - "node_modules/@rnef/platform-android": { - "version": "0.8.7", + "node_modules/@rock-js/platform-android": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.9.2.tgz", + "integrity": "sha512-fTJfJlRYgxdRd3JpjY112sInaFBz2fe/V09r5XVHvWJ1hBAEFaxcu0e840NF//uezDIcNkZrpj1rwuplaEUrKA==", "dev": true, "dependencies": { "@react-native-community/cli-config-android": "^19.1.0", - "@rnef/tools": "^0.8.7", + "@rock-js/tools": "^0.9.2", "adm-zip": "^0.5.16", "tslib": "^2.3.0" } }, - "node_modules/@rnef/platform-android/node_modules/@react-native-community/cli-config-android": { + "node_modules/@rock-js/platform-android/node_modules/@react-native-community/cli-config-android": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-19.1.1.tgz", + "integrity": "sha512-uAUXU/BPuasBy7For5lvVEpxiwA29X5BWKjM4fgxWmsQhaZHW//6PNRep94w3WVnAp+CUbW6+o3SzFqMX0PdIw==", "dev": true, "license": "MIT", "dependencies": { @@ -10521,8 +10364,10 @@ "fast-xml-parser": "^4.4.1" } }, - "node_modules/@rnef/platform-android/node_modules/@react-native-community/cli-tools": { + "node_modules/@rock-js/platform-android/node_modules/@react-native-community/cli-tools": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-19.1.1.tgz", + "integrity": "sha512-0yWOdrfgO7jVtYzhNcm9hTA1hqrD6haqDaesFq4d3YCmh8lkkTb61Q/kNIKQCUfaCTR/Qcc4mdwy6ObdXRoTIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10538,8 +10383,10 @@ "semver": "^7.5.2" } }, - "node_modules/@rnef/platform-android/node_modules/ansi-styles": { + "node_modules/@rock-js/platform-android/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -10552,8 +10399,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@rnef/platform-android/node_modules/chalk": { + "node_modules/@rock-js/platform-android/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -10567,8 +10416,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rnef/platform-android/node_modules/color-convert": { + "node_modules/@rock-js/platform-android/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10578,21 +10429,27 @@ "node": ">=7.0.0" } }, - "node_modules/@rnef/platform-android/node_modules/color-name": { + "node_modules/@rock-js/platform-android/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/platform-android/node_modules/has-flag": { + "node_modules/@rock-js/platform-android/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@rnef/platform-android/node_modules/supports-color": { + "node_modules/@rock-js/platform-android/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10602,13 +10459,15 @@ "node": ">=8" } }, - "node_modules/@rnef/platform-apple-helpers": { - "version": "0.8.7", + "node_modules/@rock-js/platform-apple-helpers": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/platform-apple-helpers/-/platform-apple-helpers-0.9.2.tgz", + "integrity": "sha512-MlCfP1K6KkJ796vuTCN9gqgfh04pwvJ0nlHfYIjRVDGcttRN11DWwkghiKZna1PkzZYLnSzv6FLdlhl1S1fpqA==", "dev": true, "dependencies": { "@react-native-community/cli-config": "^19.1.0", "@react-native-community/cli-config-apple": "^19.1.0", - "@rnef/tools": "^0.8.7", + "@rock-js/tools": "^0.9.2", "@types/adm-zip": "^0.5.7", "adm-zip": "^0.5.16", "fast-glob": "^3.3.2", @@ -10616,8 +10475,10 @@ "tslib": "^2.3.0" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/@react-native-community/cli-config": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/@react-native-community/cli-config": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-19.1.1.tgz", + "integrity": "sha512-qGLYCFf3whCa/we3iKd5BY4RlcAUhSykwGpnJpjseXLaI5iJzIn/IMd70EBG8QvhV/KQxM7VFMQj6KgGcoNKYg==", "dev": true, "license": "MIT", "dependencies": { @@ -10629,8 +10490,10 @@ "joi": "^17.2.1" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/@react-native-community/cli-config-apple": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/@react-native-community/cli-config-apple": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-19.1.1.tgz", + "integrity": "sha512-dKS7pg5eAEgRB8sOWYpr6XCR/3xUcttHNsuYYbuMXfY9d0M3d0oGquuMOW/p3Ri9sJI16bRAs/YIXDF2m4gYIA==", "dev": true, "license": "MIT", "dependencies": { @@ -10640,8 +10503,10 @@ "fast-glob": "^3.3.2" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/@react-native-community/cli-tools": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/@react-native-community/cli-tools": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-19.1.1.tgz", + "integrity": "sha512-0yWOdrfgO7jVtYzhNcm9hTA1hqrD6haqDaesFq4d3YCmh8lkkTb61Q/kNIKQCUfaCTR/Qcc4mdwy6ObdXRoTIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10657,8 +10522,10 @@ "semver": "^7.5.2" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/ansi-styles": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -10671,13 +10538,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/argparse": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, - "node_modules/@rnef/platform-apple-helpers/node_modules/chalk": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -10691,8 +10562,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/color-convert": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10702,13 +10575,17 @@ "node": ">=7.0.0" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/color-name": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/platform-apple-helpers/node_modules/cosmiconfig": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/cosmiconfig": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", "dependencies": { @@ -10732,16 +10609,20 @@ } } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/has-flag": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/js-yaml": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { @@ -10751,8 +10632,10 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@rnef/platform-apple-helpers/node_modules/supports-color": { + "node_modules/@rock-js/platform-apple-helpers/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10762,19 +10645,23 @@ "node": ">=8" } }, - "node_modules/@rnef/platform-ios": { - "version": "0.8.7", + "node_modules/@rock-js/platform-ios": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.9.2.tgz", + "integrity": "sha512-9B716h5gpnQjar+7pg3BAutfCqEou4Cf9K+hnCYM/GFSvInps3siN5M9aQ2pQXDAhRp13Fqs5J12Bksy2O5dQA==", "dev": true, "dependencies": { "@react-native-community/cli-config-apple": "^19.1.0", "@react-native-community/cli-types": "^19.1.0", - "@rnef/platform-apple-helpers": "^0.8.7", - "@rnef/tools": "^0.8.7", + "@rock-js/platform-apple-helpers": "^0.9.2", + "@rock-js/tools": "^0.9.2", "tslib": "^2.3.0" } }, - "node_modules/@rnef/platform-ios/node_modules/@react-native-community/cli-config-apple": { + "node_modules/@rock-js/platform-ios/node_modules/@react-native-community/cli-config-apple": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-19.1.1.tgz", + "integrity": "sha512-dKS7pg5eAEgRB8sOWYpr6XCR/3xUcttHNsuYYbuMXfY9d0M3d0oGquuMOW/p3Ri9sJI16bRAs/YIXDF2m4gYIA==", "dev": true, "license": "MIT", "dependencies": { @@ -10784,8 +10671,10 @@ "fast-glob": "^3.3.2" } }, - "node_modules/@rnef/platform-ios/node_modules/@react-native-community/cli-tools": { + "node_modules/@rock-js/platform-ios/node_modules/@react-native-community/cli-tools": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-19.1.1.tgz", + "integrity": "sha512-0yWOdrfgO7jVtYzhNcm9hTA1hqrD6haqDaesFq4d3YCmh8lkkTb61Q/kNIKQCUfaCTR/Qcc4mdwy6ObdXRoTIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10801,16 +10690,20 @@ "semver": "^7.5.2" } }, - "node_modules/@rnef/platform-ios/node_modules/@react-native-community/cli-types": { + "node_modules/@rock-js/platform-ios/node_modules/@react-native-community/cli-types": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-19.1.1.tgz", + "integrity": "sha512-rOGiYjeDM9tkYBEuK6TJrnxpMhmaId1Un8pjQJswz7W9w2Vb6+nnLfWja7X7VmDIvqIK5GhVobRHsmKCKIdDEA==", "dev": true, "license": "MIT", "dependencies": { "joi": "^17.2.1" } }, - "node_modules/@rnef/platform-ios/node_modules/ansi-styles": { + "node_modules/@rock-js/platform-ios/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -10823,8 +10716,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@rnef/platform-ios/node_modules/chalk": { + "node_modules/@rock-js/platform-ios/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -10838,8 +10733,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rnef/platform-ios/node_modules/color-convert": { + "node_modules/@rock-js/platform-ios/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10849,21 +10746,27 @@ "node": ">=7.0.0" } }, - "node_modules/@rnef/platform-ios/node_modules/color-name": { + "node_modules/@rock-js/platform-ios/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/platform-ios/node_modules/has-flag": { + "node_modules/@rock-js/platform-ios/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@rnef/platform-ios/node_modules/supports-color": { + "node_modules/@rock-js/platform-ios/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10873,13 +10776,14 @@ "node": ">=8" } }, - "node_modules/@rnef/plugin-metro": { - "version": "0.8.7", + "node_modules/@rock-js/plugin-metro": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.9.2.tgz", + "integrity": "sha512-XY0GuNxfqSTXcKn0Tst4PN59A28EY8IHlzkFwodIegs1gEY7+cGgj84ezZ7F9eF/qrAReCQHJ+qg2sNAwZFHWQ==", "dev": true, "dependencies": { "@react-native-community/cli-server-api": "^19.1.0", - "@react-native/dev-middleware": "^0.80.1", - "@rnef/tools": "^0.8.7", + "@rock-js/tools": "^0.9.2", "metro": "^0.82.2", "metro-config": "^0.82.2", "metro-core": "^0.82.2", @@ -10890,25 +10794,29 @@ "@react-native/community-cli-plugin": "*" } }, - "node_modules/@rnef/plugin-metro/node_modules/@babel/traverse": { - "version": "7.27.1", + "node_modules/@rock-js/plugin-metro/node_modules/@babel/traverse": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@rnef/plugin-metro/node_modules/@jest/types": { + "node_modules/@rock-js/plugin-metro/node_modules/@jest/types": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10922,8 +10830,10 @@ "node": ">= 10.14.2" } }, - "node_modules/@rnef/plugin-metro/node_modules/@react-native-community/cli-server-api": { + "node_modules/@rock-js/plugin-metro/node_modules/@react-native-community/cli-server-api": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-19.1.1.tgz", + "integrity": "sha512-p0FFm82uPrtLZBWTD3bZ43mMBIV5mXwvGFYMcsfGiuMoS9SNbw4ImEFTG2IutVpr7Qb6NMjx6SbgYYMnTdZXmw==", "dev": true, "license": "MIT", "dependencies": { @@ -10939,19 +10849,10 @@ "ws": "^6.2.3" } }, - "node_modules/@rnef/plugin-metro/node_modules/@react-native-community/cli-server-api/node_modules/open": { - "version": "6.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@rnef/plugin-metro/node_modules/@react-native-community/cli-tools": { + "node_modules/@rock-js/plugin-metro/node_modules/@react-native-community/cli-tools": { "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-19.1.1.tgz", + "integrity": "sha512-0yWOdrfgO7jVtYzhNcm9hTA1hqrD6haqDaesFq4d3YCmh8lkkTb61Q/kNIKQCUfaCTR/Qcc4mdwy6ObdXRoTIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10967,61 +10868,40 @@ "semver": "^7.5.2" } }, - "node_modules/@rnef/plugin-metro/node_modules/@react-native/debugger-frontend": { - "version": "0.80.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=18" - } - }, - "node_modules/@rnef/plugin-metro/node_modules/@react-native/dev-middleware": { - "version": "0.80.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.80.2", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rnef/plugin-metro/node_modules/@types/yargs": { + "node_modules/@rock-js/plugin-metro/node_modules/@types/yargs": { "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/@rnef/plugin-metro/node_modules/agent-base": { - "version": "7.1.3", + "node_modules/@rock-js/plugin-metro/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/@rnef/plugin-metro/node_modules/ansi-regex": { + "node_modules/@rock-js/plugin-metro/node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@rnef/plugin-metro/node_modules/ansi-styles": { + "node_modules/@rock-js/plugin-metro/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -11034,8 +10914,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@rnef/plugin-metro/node_modules/chalk": { + "node_modules/@rock-js/plugin-metro/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -11049,13 +10931,17 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rnef/plugin-metro/node_modules/ci-info": { + "node_modules/@rock-js/plugin-metro/node_modules/ci-info": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/plugin-metro/node_modules/color-convert": { + "node_modules/@rock-js/plugin-metro/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11065,13 +10951,17 @@ "node": ">=7.0.0" } }, - "node_modules/@rnef/plugin-metro/node_modules/color-name": { + "node_modules/@rock-js/plugin-metro/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/plugin-metro/node_modules/cosmiconfig": { + "node_modules/@rock-js/plugin-metro/node_modules/cosmiconfig": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "license": "MIT", "dependencies": { @@ -11084,37 +10974,37 @@ "node": ">=4" } }, - "node_modules/@rnef/plugin-metro/node_modules/encodeurl": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@rnef/plugin-metro/node_modules/has-flag": { + "node_modules/@rock-js/plugin-metro/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@rnef/plugin-metro/node_modules/hermes-estree": { - "version": "0.28.1", + "node_modules/@rock-js/plugin-metro/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/plugin-metro/node_modules/hermes-parser": { - "version": "0.28.1", + "node_modules/@rock-js/plugin-metro/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "dev": true, "license": "MIT", "dependencies": { - "hermes-estree": "0.28.1" + "hermes-estree": "0.29.1" } }, - "node_modules/@rnef/plugin-metro/node_modules/https-proxy-agent": { + "node_modules/@rock-js/plugin-metro/node_modules/https-proxy-agent": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { @@ -11125,8 +11015,10 @@ "node": ">= 14" } }, - "node_modules/@rnef/plugin-metro/node_modules/import-fresh": { + "node_modules/@rock-js/plugin-metro/node_modules/import-fresh": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, "license": "MIT", "dependencies": { @@ -11137,16 +11029,20 @@ "node": ">=4" } }, - "node_modules/@rnef/plugin-metro/node_modules/is-wsl": { + "node_modules/@rock-js/plugin-metro/node_modules/is-wsl": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/@rnef/plugin-metro/node_modules/jest-worker": { + "node_modules/@rock-js/plugin-metro/node_modules/jest-worker": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { @@ -11159,8 +11055,10 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@rnef/plugin-metro/node_modules/jest-worker/node_modules/supports-color": { + "node_modules/@rock-js/plugin-metro/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11173,8 +11071,10 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.82.5.tgz", + "integrity": "sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==", "dev": true, "license": "MIT", "dependencies": { @@ -11193,24 +11093,24 @@ "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.28.1", + "hermes-parser": "0.29.1", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.82.2", - "metro-cache": "0.82.2", - "metro-cache-key": "0.82.2", - "metro-config": "0.82.2", - "metro-core": "0.82.2", - "metro-file-map": "0.82.2", - "metro-resolver": "0.82.2", - "metro-runtime": "0.82.2", - "metro-source-map": "0.82.2", - "metro-symbolicate": "0.82.2", - "metro-transform-plugins": "0.82.2", - "metro-transform-worker": "0.82.2", + "metro-babel-transformer": "0.82.5", + "metro-cache": "0.82.5", + "metro-cache-key": "0.82.5", + "metro-config": "0.82.5", + "metro-core": "0.82.5", + "metro-file-map": "0.82.5", + "metro-resolver": "0.82.5", + "metro-runtime": "0.82.5", + "metro-source-map": "0.82.5", + "metro-symbolicate": "0.82.5", + "metro-transform-plugins": "0.82.5", + "metro-transform-worker": "0.82.5", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", @@ -11226,36 +11126,42 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-babel-transformer": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-babel-transformer": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.82.5.tgz", + "integrity": "sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.28.1", + "hermes-parser": "0.29.1", "nullthrows": "^1.1.1" }, "engines": { "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-cache": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-cache": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.82.5.tgz", + "integrity": "sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==", "dev": true, "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.82.2" + "metro-core": "0.82.5" }, "engines": { "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-cache-key": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-cache-key": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.82.5.tgz", + "integrity": "sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==", "dev": true, "license": "MIT", "dependencies": { @@ -11265,8 +11171,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-config": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-config": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.82.5.tgz", + "integrity": "sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==", "dev": true, "license": "MIT", "dependencies": { @@ -11274,30 +11182,34 @@ "cosmiconfig": "^5.0.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.82.2", - "metro-cache": "0.82.2", - "metro-core": "0.82.2", - "metro-runtime": "0.82.2" + "metro": "0.82.5", + "metro-cache": "0.82.5", + "metro-core": "0.82.5", + "metro-runtime": "0.82.5" }, "engines": { "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-core": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-core": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.82.5.tgz", + "integrity": "sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==", "dev": true, "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.82.2" + "metro-resolver": "0.82.5" }, "engines": { "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-file-map": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-file-map": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.82.5.tgz", + "integrity": "sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11315,8 +11227,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-minify-terser": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-minify-terser": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.82.5.tgz", + "integrity": "sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==", "dev": true, "license": "MIT", "dependencies": { @@ -11327,8 +11241,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-resolver": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-resolver": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.82.5.tgz", + "integrity": "sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==", "dev": true, "license": "MIT", "dependencies": { @@ -11338,8 +11254,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-runtime": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-runtime": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.82.5.tgz", + "integrity": "sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==", "dev": true, "license": "MIT", "dependencies": { @@ -11350,8 +11268,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-source-map": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-source-map": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.82.5.tgz", + "integrity": "sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==", "dev": true, "license": "MIT", "dependencies": { @@ -11360,9 +11280,9 @@ "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.82.2", + "metro-symbolicate": "0.82.5", "nullthrows": "^1.1.1", - "ob1": "0.82.2", + "ob1": "0.82.5", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -11370,14 +11290,16 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-symbolicate": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-symbolicate": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.82.5.tgz", + "integrity": "sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==", "dev": true, "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.82.2", + "metro-source-map": "0.82.5", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -11389,8 +11311,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-transform-plugins": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-plugins": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.82.5.tgz", + "integrity": "sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==", "dev": true, "license": "MIT", "dependencies": { @@ -11405,8 +11329,10 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/metro-transform-worker": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-worker": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.82.5.tgz", + "integrity": "sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==", "dev": true, "license": "MIT", "dependencies": { @@ -11415,21 +11341,23 @@ "@babel/parser": "^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "metro": "0.82.2", - "metro-babel-transformer": "0.82.2", - "metro-cache": "0.82.2", - "metro-cache-key": "0.82.2", - "metro-minify-terser": "0.82.2", - "metro-source-map": "0.82.2", - "metro-transform-plugins": "0.82.2", + "metro": "0.82.5", + "metro-babel-transformer": "0.82.5", + "metro-cache": "0.82.5", + "metro-cache-key": "0.82.5", + "metro-minify-terser": "0.82.5", + "metro-source-map": "0.82.5", + "metro-transform-plugins": "0.82.5", "nullthrows": "^1.1.1" }, "engines": { "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/ob1": { - "version": "0.82.2", + "node_modules/@rock-js/plugin-metro/node_modules/ob1": { + "version": "0.82.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.82.5.tgz", + "integrity": "sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11439,8 +11367,23 @@ "node": ">=18.18" } }, - "node_modules/@rnef/plugin-metro/node_modules/parse-json": { + "node_modules/@rock-js/plugin-metro/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@rock-js/plugin-metro/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "license": "MIT", "dependencies": { @@ -11451,8 +11394,10 @@ "node": ">=4" } }, - "node_modules/@rnef/plugin-metro/node_modules/pretty-format": { + "node_modules/@rock-js/plugin-metro/node_modules/pretty-format": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, "license": "MIT", "dependencies": { @@ -11465,51 +11410,47 @@ "node": ">= 10" } }, - "node_modules/@rnef/plugin-metro/node_modules/react-is": { + "node_modules/@rock-js/plugin-metro/node_modules/react-is": { "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, "license": "MIT" }, - "node_modules/@rnef/plugin-metro/node_modules/resolve-from": { + "node_modules/@rock-js/plugin-metro/node_modules/resolve-from": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/@rnef/plugin-metro/node_modules/serialize-error": { + "node_modules/@rock-js/plugin-metro/node_modules/serialize-error": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/@rnef/plugin-metro/node_modules/serve-static": { - "version": "1.16.2", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@rnef/plugin-metro/node_modules/source-map": { + "node_modules/@rock-js/plugin-metro/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/@rnef/plugin-metro/node_modules/supports-color": { + "node_modules/@rock-js/plugin-metro/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -11519,20 +11460,24 @@ "node": ">=8" } }, - "node_modules/@rnef/provider-github": { - "version": "0.8.7", + "node_modules/@rock-js/provider-github": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.9.2.tgz", + "integrity": "sha512-HetDcxobRJpJwKK/VS8RpsY890Vo/G7s/DFO4LRJPUGUlHOUpyXUGVV3vc7iy9q4m/G/y8mF/6EKHY/Zc2ZOKg==", "dev": true, "dependencies": { - "@rnef/tools": "^0.8.7", + "@rock-js/tools": "^0.9.2", "ts-regex-builder": "^1.8.2", "tslib": "^2.3.0" } }, - "node_modules/@rnef/tools": { - "version": "0.8.7", + "node_modules/@rock-js/tools": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@rock-js/tools/-/tools-0.9.2.tgz", + "integrity": "sha512-HqXU3mpvjCMbNCj5yNRHzML9JTKcQIHQ5LBSq6NsOGZ7AMqD3lsenWF/3USmC83EFJaxj28rRP5/ufcU+Bc/Tw==", "dev": true, "dependencies": { - "@clack/prompts": "^0.10.0", + "@clack/prompts": "^0.11.0", "@expo/fingerprint": "^0.11.6", "@types/adm-zip": "^0.5.7", "adm-zip": "^0.5.16", @@ -11546,16 +11491,20 @@ "tslib": "^2.3.0" } }, - "node_modules/@rnef/tools/node_modules/chownr": { + "node_modules/@rock-js/tools/node_modules/chownr": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, - "node_modules/@rnef/tools/node_modules/is-unicode-supported": { + "node_modules/@rock-js/tools/node_modules/is-unicode-supported": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { @@ -11565,16 +11514,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@rnef/tools/node_modules/minipass": { + "node_modules/@rock-js/tools/node_modules/minipass": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/@rnef/tools/node_modules/minizlib": { + "node_modules/@rock-js/tools/node_modules/minizlib": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", "dev": true, "license": "MIT", "dependencies": { @@ -11584,8 +11537,10 @@ "node": ">= 18" } }, - "node_modules/@rnef/tools/node_modules/mkdirp": { + "node_modules/@rock-js/tools/node_modules/mkdirp": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, "license": "MIT", "bin": { @@ -11598,8 +11553,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@rnef/tools/node_modules/tar": { + "node_modules/@rock-js/tools/node_modules/tar": { "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", "dev": true, "license": "ISC", "dependencies": { @@ -11614,45 +11571,16 @@ "node": ">=18" } }, - "node_modules/@rnef/tools/node_modules/yallist": { + "node_modules/@rock-js/tools/node_modules/yallist": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, - "node_modules/@rnmapbox/maps": { - "version": "10.1.33", - "license": "MIT", - "dependencies": { - "@turf/along": "6.5.0", - "@turf/distance": "6.5.0", - "@turf/helpers": "6.5.0", - "@turf/length": "6.5.0", - "@turf/nearest-point-on-line": "6.5.0", - "@types/geojson": "^7946.0.7", - "debounce": "^1.2.0" - }, - "peerDependencies": { - "expo": ">=47.0.0", - "mapbox-gl": "^2.9.0", - "react": ">=16.6.1", - "react-dom": ">= 17.0.0", - "react-native": ">=0.59.9" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "mapbox-gl": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@shopify/flash-list": { "version": "1.8.2", "license": "MIT", @@ -13413,6 +13341,8 @@ }, "node_modules/@types/adm-zip": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.7.tgz", + "integrity": "sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==", "dev": true, "license": "MIT", "dependencies": { @@ -14952,6 +14882,8 @@ }, "node_modules/adm-zip": { "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, "license": "MIT", "engines": { @@ -28920,6 +28852,8 @@ }, "node_modules/nano-spawn": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-0.2.1.tgz", + "integrity": "sha512-/pULofvsF8mOVcl/nUeVXL/GYOEvc7eJWSIxa+K4OYUolvXa5zwSgevsn4eoHs1xvh/BO3vx/PZiD9+Ow2ZVuw==", "dev": true, "license": "MIT", "engines": { @@ -32860,6 +32794,258 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/rock": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/rock/-/rock-0.9.2.tgz", + "integrity": "sha512-0slNEPIBeAoth+W+Lfgibs4xfF/4BwMcWrGXO7K0Vax3+iQUvF6YHbLzwS+QJe5jHiDlmfT2jwT1X9M8vzzT8A==", + "dev": true, + "dependencies": { + "@react-native-community/cli-config": "^19.1.0", + "@rock-js/config": "^0.9.2", + "@rock-js/tools": "^0.9.2", + "adm-zip": "^0.5.16", + "commander": "^12.1.0", + "tar": "^7.4.3", + "tslib": "^2.3.0" + }, + "bin": { + "rock": "dist/src/bin.js" + } + }, + "node_modules/rock/node_modules/@react-native-community/cli-config": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-19.1.1.tgz", + "integrity": "sha512-qGLYCFf3whCa/we3iKd5BY4RlcAUhSykwGpnJpjseXLaI5iJzIn/IMd70EBG8QvhV/KQxM7VFMQj6KgGcoNKYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "19.1.1", + "chalk": "^4.1.2", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" + } + }, + "node_modules/rock/node_modules/@react-native-community/cli-tools": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-19.1.1.tgz", + "integrity": "sha512-0yWOdrfgO7jVtYzhNcm9hTA1hqrD6haqDaesFq4d3YCmh8lkkTb61Q/kNIKQCUfaCTR/Qcc4mdwy6ObdXRoTIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/rock/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/rock/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/rock/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/rock/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/rock/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/rock/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rock/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/rock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rock/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/rock/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/rock/node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rock/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rock/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/rock/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/run-applescript": { "version": "7.0.0", "dev": true, @@ -33960,6 +34146,8 @@ }, "node_modules/string-argv": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index eb5618178505..ab44dfceff7c 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "ipad-standalone": "concurrently \"STANDALONE_NEW_DOT=true ./scripts/run-build.sh --ipad\"", "ipad-sm": "concurrently \"./scripts/run-build.sh --ipad-sm\"", "ipad-sm-standalone": "concurrently \"STANDALONE_NEW_DOT=true ./scripts/run-build.sh --ipad-sm\"", - "start": "npx rnef start", + "start": "npx rock start", "web": "./scripts/set-pusher-suffix.sh && concurrently npm:web-proxy npm:web-server", "web-proxy": "ts-node web/proxy.ts", "web-server": "./scripts/start-dev-with-auto-restart.sh", @@ -244,11 +244,10 @@ "@react-native/babel-preset": "0.79.2", "@react-native/metro-config": "0.79.2", "@react-navigation/devtools": "^6.0.10", - "@rnef/cli": "0.8.7", - "@rnef/platform-android": "0.8.7", - "@rnef/platform-ios": "0.8.7", - "@rnef/plugin-metro": "0.8.7", - "@rnef/provider-github": "0.8.7", + "@rock-js/platform-android": "0.9.2", + "@rock-js/platform-ios": "0.9.2", + "@rock-js/plugin-metro": "0.9.2", + "@rock-js/provider-github": "0.9.2", "@storybook/addon-a11y": "^8.6.9", "@storybook/addon-essentials": "^8.6.9", "@storybook/addon-webpack5-compiler-babel": "^3.0.5", @@ -345,6 +344,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.0.0", "reassure": "^1.0.0-rc.4", + "rock": "0.9.2", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", diff --git a/rnef.config.mjs b/rnef.config.mjs deleted file mode 100644 index df6267b5d6fe..000000000000 --- a/rnef.config.mjs +++ /dev/null @@ -1,20 +0,0 @@ -import {platformAndroid} from '@rnef/platform-android'; -import {platformIOS} from '@rnef/platform-ios'; -import {pluginMetro} from '@rnef/plugin-metro'; -import {providerGitHub} from '@rnef/provider-github'; - -const isHybrid = process.env.IS_HYBRID_APP === 'true'; - -/** @type {import('@rnef/config').Config} */ -export default { - remoteCacheProvider: providerGitHub({ - owner: 'Expensify', - repository: 'App', - token: process.env.GITHUB_TOKEN, - }), - bundler: pluginMetro(), - platforms: { - ios: platformIOS({sourceDir: isHybrid ? './Mobile-Expensify/iOS' : './ios'}), - android: platformAndroid({sourceDir: isHybrid ? './Mobile-Expensify/Android' : './android'}), - }, -}; diff --git a/rock.config.mjs b/rock.config.mjs new file mode 100644 index 000000000000..4ab40d4b721d --- /dev/null +++ b/rock.config.mjs @@ -0,0 +1,16 @@ +import {platformAndroid} from '@rock-js/platform-android'; +import {platformIOS} from '@rock-js/platform-ios'; +import {pluginMetro} from '@rock-js/plugin-metro'; +import {providerGitHub} from '@rock-js/provider-github'; + +const isHybrid = process.env.IS_HYBRID_APP === 'true'; + +/** @type {import('@rock-js/config').Config} */ +export default { + remoteCacheProvider: 'github-actions', + bundler: pluginMetro(), + platforms: { + ios: platformIOS({sourceDir: isHybrid ? './Mobile-Expensify/iOS' : './ios'}), + android: platformAndroid({sourceDir: isHybrid ? './Mobile-Expensify/Android' : './android'}), + }, +}; diff --git a/scripts/run-build.sh b/scripts/run-build.sh index 5aeb611770ab..204aa515a7c1 100755 --- a/scripts/run-build.sh +++ b/scripts/run-build.sh @@ -57,16 +57,16 @@ fi # Check if the argument is one of the desired values case "$BUILD" in --ios) - npx rnef run:ios --configuration $IOS_MODE --scheme "$SCHEME" + npx rock run:ios --configuration $IOS_MODE --scheme "$SCHEME" ;; --ipad) - npx rnef run:ios --simulator "iPad Pro (12.9-inch) (6th generation)" --configuration $IOS_MODE --scheme "$SCHEME" + npx rock run:ios --simulator "iPad Pro (12.9-inch) (6th generation)" --configuration $IOS_MODE --scheme "$SCHEME" ;; --ipad-sm) - npx rnef run:ios --simulator "iPad Pro (11-inch) (4th generation)" --configuration $IOS_MODE --scheme "$SCHEME" + npx rock run:ios --simulator "iPad Pro (11-inch) (4th generation)" --configuration $IOS_MODE --scheme "$SCHEME" ;; --android) - npx rnef run:android --variant $ANDROID_MODE --app-id $APP_ID --active-arch-only + npx rock run:android --variant $ANDROID_MODE --app-id $APP_ID --active-arch-only ;; *) print_error_and_exit From c2a1bb7581b4963171a6852df274506c631bbecf Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Tue, 26 Aug 2025 17:04:59 +0200 Subject: [PATCH 02/22] adjust to rock 0.9.0 --- package-lock.json | 143 +++++++++++++++++++++++++++++++++++++++------- package.json | 8 +-- 2 files changed, 126 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2d91fa74fd81..f12545f49d53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -174,10 +174,10 @@ "@react-native/babel-preset": "0.79.2", "@react-native/metro-config": "0.79.2", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.9.2", - "@rock-js/platform-ios": "0.9.2", - "@rock-js/plugin-metro": "0.9.2", - "@rock-js/provider-github": "0.9.2", + "@rock-js/platform-android": "0.9.0", + "@rock-js/platform-ios": "0.9.0", + "@rock-js/plugin-metro": "0.9.0", + "@rock-js/provider-github": "0.9.0", "@storybook/addon-a11y": "^8.6.9", "@storybook/addon-essentials": "^8.6.9", "@storybook/addon-webpack5-compiler-babel": "^3.0.5", @@ -10339,14 +10339,25 @@ "tslib": "^2.3.0" } }, - "node_modules/@rock-js/platform-android": { + "node_modules/@rock-js/config/node_modules/@rock-js/provider-github": { "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.9.2.tgz", - "integrity": "sha512-fTJfJlRYgxdRd3JpjY112sInaFBz2fe/V09r5XVHvWJ1hBAEFaxcu0e840NF//uezDIcNkZrpj1rwuplaEUrKA==", + "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.9.2.tgz", + "integrity": "sha512-HetDcxobRJpJwKK/VS8RpsY890Vo/G7s/DFO4LRJPUGUlHOUpyXUGVV3vc7iy9q4m/G/y8mF/6EKHY/Zc2ZOKg==", "dev": true, "dependencies": { - "@react-native-community/cli-config-android": "^19.1.0", "@rock-js/tools": "^0.9.2", + "ts-regex-builder": "^1.8.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@rock-js/platform-android": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.9.0.tgz", + "integrity": "sha512-A8zz7glKm4bweezOa4EKYs2EXNmBVbpjEstt6hh59ZSDgW0VZwmZLhhjOcw4fD8ns2yzDNxmhMVL9c3eUTJEJA==", + "dev": true, + "dependencies": { + "@react-native-community/cli-config-android": "^19.1.0", + "@rock-js/tools": "^0.9.0", "adm-zip": "^0.5.16", "tslib": "^2.3.0" } @@ -10646,15 +10657,15 @@ } }, "node_modules/@rock-js/platform-ios": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.9.2.tgz", - "integrity": "sha512-9B716h5gpnQjar+7pg3BAutfCqEou4Cf9K+hnCYM/GFSvInps3siN5M9aQ2pQXDAhRp13Fqs5J12Bksy2O5dQA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.9.0.tgz", + "integrity": "sha512-llorwJKCLpzNvqxb7XhQ/6X4urFA5+lB/msb7lTruf6HZNVhABMxq1A6fjAMOpnycWIf4skCea3kvvNWosV7Xg==", "dev": true, "dependencies": { "@react-native-community/cli-config-apple": "^19.1.0", "@react-native-community/cli-types": "^19.1.0", - "@rock-js/platform-apple-helpers": "^0.9.2", - "@rock-js/tools": "^0.9.2", + "@rock-js/platform-apple-helpers": "^0.9.0", + "@rock-js/tools": "^0.9.0", "tslib": "^2.3.0" } }, @@ -10777,13 +10788,14 @@ } }, "node_modules/@rock-js/plugin-metro": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.9.2.tgz", - "integrity": "sha512-XY0GuNxfqSTXcKn0Tst4PN59A28EY8IHlzkFwodIegs1gEY7+cGgj84ezZ7F9eF/qrAReCQHJ+qg2sNAwZFHWQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.9.0.tgz", + "integrity": "sha512-TQ5UzdtgY5iaNiOJOLG60QCDZIxt244SXosK1Li6agXP8SIcvYp91EzcVy4566ViGOvsmviTw1AK+irC+2cIww==", "dev": true, "dependencies": { "@react-native-community/cli-server-api": "^19.1.0", - "@rock-js/tools": "^0.9.2", + "@react-native/dev-middleware": "^0.80.1", + "@rock-js/tools": "^0.9.0", "metro": "^0.82.2", "metro-config": "^0.82.2", "metro-core": "^0.82.2", @@ -10868,6 +10880,69 @@ "semver": "^7.5.2" } }, + "node_modules/@rock-js/plugin-metro/node_modules/@react-native/debugger-frontend": { + "version": "0.80.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.80.2.tgz", + "integrity": "sha512-n3D88bqNk0bY+YjNxbM6giqva06xj+rgEfu91Pg+nJ0szSL2eLl7ULERJqI3hxFt0XGuTpTOxZgw/Po5maXa4g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=18" + } + }, + "node_modules/@rock-js/plugin-metro/node_modules/@react-native/dev-middleware": { + "version": "0.80.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.80.2.tgz", + "integrity": "sha512-8OeBEZNiApdbZaqTrrzeyFwXn/JwgJox7jdtjVAH56DggTVJXdbnyUjQ4ts6XAacEQgpFOAskoO730eyafOkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.80.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rock-js/plugin-metro/node_modules/@react-native/dev-middleware/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@rock-js/plugin-metro/node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@rock-js/plugin-metro/node_modules/@types/yargs": { "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", @@ -10974,6 +11049,16 @@ "node": ">=4" } }, + "node_modules/@rock-js/plugin-metro/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@rock-js/plugin-metro/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11437,6 +11522,22 @@ "node": ">=0.10.0" } }, + "node_modules/@rock-js/plugin-metro/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/@rock-js/plugin-metro/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -11461,12 +11562,12 @@ } }, "node_modules/@rock-js/provider-github": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.9.2.tgz", - "integrity": "sha512-HetDcxobRJpJwKK/VS8RpsY890Vo/G7s/DFO4LRJPUGUlHOUpyXUGVV3vc7iy9q4m/G/y8mF/6EKHY/Zc2ZOKg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.9.0.tgz", + "integrity": "sha512-1MCHGLLoCuydYv6SyL1xeLf0mcS9R4puspKJASD98BOgzy7qLEKKvTnoAn3cEcKdhNZBSmN31NAMYc47OAd6DA==", "dev": true, "dependencies": { - "@rock-js/tools": "^0.9.2", + "@rock-js/tools": "^0.9.0", "ts-regex-builder": "^1.8.2", "tslib": "^2.3.0" } diff --git a/package.json b/package.json index ab44dfceff7c..d9540da47e84 100644 --- a/package.json +++ b/package.json @@ -244,10 +244,10 @@ "@react-native/babel-preset": "0.79.2", "@react-native/metro-config": "0.79.2", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.9.2", - "@rock-js/platform-ios": "0.9.2", - "@rock-js/plugin-metro": "0.9.2", - "@rock-js/provider-github": "0.9.2", + "@rock-js/platform-android": "0.9.0", + "@rock-js/platform-ios": "0.9.0", + "@rock-js/plugin-metro": "0.9.0", + "@rock-js/provider-github": "0.9.0", "@storybook/addon-a11y": "^8.6.9", "@storybook/addon-essentials": "^8.6.9", "@storybook/addon-webpack5-compiler-babel": "^3.0.5", From 911885afc1b89bd66d58ec8a37af88c8762413e3 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 12:33:23 +0200 Subject: [PATCH 03/22] adjust rock naming --- .github/scripts/verifyPodfile.sh | 2 +- .github/workflows/remote-build-android.yml | 2 +- .github/workflows/remote-build-ios.yml | 2 +- ios/bundle-react-native-code-and-images.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/scripts/verifyPodfile.sh b/.github/scripts/verifyPodfile.sh index 944ace14cfeb..3b061761ef30 100755 --- a/.github/scripts/verifyPodfile.sh +++ b/.github/scripts/verifyPodfile.sh @@ -64,7 +64,7 @@ if ! SPEC_DIRS=$(yq '.["EXTERNAL SOURCES"].[].":path" | select( . == "*node_modu fi # Retrieve a list of podspec paths from react-native config -if ! read_lines_into_array PODSPEC_PATHS < <(npx rnef config -p ios | jq --raw-output '.dependencies[].platforms.ios.podspecPath | select ( . != null)'); then +if ! read_lines_into_array PODSPEC_PATHS < <(npx rock config -p ios | jq --raw-output '.dependencies[].platforms.ios.podspecPath | select ( . != null)'); then error "Error: could not parse podspec paths from react-native config command" cleanupAndExit 1 fi diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 263affc0bcce..b4b07370415c 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -35,7 +35,7 @@ jobs: with: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} - - name: RNEF Remote Build - Android + - name: Rock Remote Build - Android # rock v3 uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d env: diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 993540b97b27..ff9cda7b67bb 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -39,7 +39,7 @@ jobs: with: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} - - name: RNEF Remote Build - iOS + - name: Rock Remote Build - iOS # rock v3 uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 env: diff --git a/ios/bundle-react-native-code-and-images.sh b/ios/bundle-react-native-code-and-images.sh index 54d501e4776d..ab8ab7daec7b 100755 --- a/ios/bundle-react-native-code-and-images.sh +++ b/ios/bundle-react-native-code-and-images.sh @@ -21,7 +21,7 @@ fi if [[ -z "$CLI_PATH" ]]; then export CONFIG_CMD="dummy-workaround-value" - CLI_PATH="$("$NODE_BINARY" --print "require('path').dirname(require.resolve('@rnef/cli/package.json')) + '/dist/src/bin.js'")" + CLI_PATH="$("$NODE_BINARY" --print "require('path').dirname(require.resolve('@rock-js/cli/package.json')) + '/dist/src/bin.js'")" export CLI_PATH fi if [[ -z "$BUNDLE_COMMAND" ]]; then From 4050e8673a62377811a076096204eb97fba0c09f Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 12:38:00 +0200 Subject: [PATCH 04/22] adjust to version 0.9.0 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index f12545f49d53..3687640ebae0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -274,7 +274,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.0.0", "reassure": "^1.0.0-rc.4", - "rock": "0.9.2", + "rock": "0.9.0", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", @@ -32896,14 +32896,14 @@ "license": "BSD-3-Clause" }, "node_modules/rock": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/rock/-/rock-0.9.2.tgz", - "integrity": "sha512-0slNEPIBeAoth+W+Lfgibs4xfF/4BwMcWrGXO7K0Vax3+iQUvF6YHbLzwS+QJe5jHiDlmfT2jwT1X9M8vzzT8A==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rock/-/rock-0.9.0.tgz", + "integrity": "sha512-1ytKleveiEV+lKDYvAARgw6+Cb19rl3ExtcY0jwHnlWYXttjYzGuhMnpS/WtUv9ZK1YJw39onOjXaSYi0cOQjg==", "dev": true, "dependencies": { "@react-native-community/cli-config": "^19.1.0", - "@rock-js/config": "^0.9.2", - "@rock-js/tools": "^0.9.2", + "@rock-js/config": "^0.9.0", + "@rock-js/tools": "^0.9.0", "adm-zip": "^0.5.16", "commander": "^12.1.0", "tar": "^7.4.3", diff --git a/package.json b/package.json index d9540da47e84..86279831b8c5 100644 --- a/package.json +++ b/package.json @@ -344,7 +344,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.0.0", "reassure": "^1.0.0-rc.4", - "rock": "0.9.2", + "rock": "0.9.0", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", From e1a7e84c1d439598eceadfeaaa6d8383051aedaf Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 12:43:21 +0200 Subject: [PATCH 05/22] fix ios build script --- ios/bundle-react-native-code-and-images.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/bundle-react-native-code-and-images.sh b/ios/bundle-react-native-code-and-images.sh index ab8ab7daec7b..e1822c07b7d6 100755 --- a/ios/bundle-react-native-code-and-images.sh +++ b/ios/bundle-react-native-code-and-images.sh @@ -21,7 +21,7 @@ fi if [[ -z "$CLI_PATH" ]]; then export CONFIG_CMD="dummy-workaround-value" - CLI_PATH="$("$NODE_BINARY" --print "require('path').dirname(require.resolve('@rock-js/cli/package.json')) + '/dist/src/bin.js'")" + CLI_PATH="$("$NODE_BINARY" --print "require('path').dirname(require.resolve('rock/package.json')) + '/dist/src/bin.js'")" export CLI_PATH fi if [[ -z "$BUNDLE_COMMAND" ]]; then From 0d1a1f04817db8caf96249037b12454a1246c730 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 12:46:50 +0200 Subject: [PATCH 06/22] adjust rock config for testing --- rock.config.mjs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rock.config.mjs b/rock.config.mjs index 4ab40d4b721d..48fa85c3dc3b 100644 --- a/rock.config.mjs +++ b/rock.config.mjs @@ -7,7 +7,16 @@ const isHybrid = process.env.IS_HYBRID_APP === 'true'; /** @type {import('@rock-js/config').Config} */ export default { - remoteCacheProvider: 'github-actions', + remoteCacheProvider: providerGitHub({ + owner: 'callstack-internal', + repository: 'Expensify-App', + token: process.env.GITHUB_TOKEN, + }), + // remoteCacheProvider: providerGitHub({ + // owner: 'Expensify', + // repository: 'App', + // token: process.env.GITHUB_TOKEN, + // }), bundler: pluginMetro(), platforms: { ios: platformIOS({sourceDir: isHybrid ? './Mobile-Expensify/iOS' : './ios'}), From 987e1eeeb294df70d57f400524effa1fbdd8b7cc Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 12:57:40 +0200 Subject: [PATCH 07/22] use different commit --- .github/workflows/remote-build-android.yml | 5 +++-- .github/workflows/remote-build-ios.yml | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index b4b07370415c..4504c49bef97 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 with: submodules: ${{ matrix.is_hybrid_build || false }} - token: ${{ secrets.OS_BOTIFY_TOKEN }} + # token: ${{ secrets.OS_BOTIFY_TOKEN }} - name: Setup Node uses: ./.github/actions/composite/setupNode @@ -37,7 +37,8 @@ jobs: - name: Rock Remote Build - Android # rock v3 - uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d + # uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d + uses: callstackincubator/android@3cb20ec17e0a8b984eb2781845ca799fb287a53d env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index ff9cda7b67bb..1dc607d587d4 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -32,7 +32,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 with: submodules: ${{ matrix.is_hybrid_build || false }} - token: ${{ secrets.OS_BOTIFY_TOKEN }} + # token: ${{ secrets.OS_BOTIFY_TOKEN }} - name: Setup Node uses: ./.github/actions/composite/setupNode @@ -41,7 +41,9 @@ jobs: - name: Rock Remote Build - iOS # rock v3 - uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 + # uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 + uses: callstackincubator/ios@9700aca4913785045457e4bb355480a9592acb26 + env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} From 4fa2211e0fc5c85bcba55ef31d7615291e6cab8d Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 13:02:01 +0200 Subject: [PATCH 08/22] use most recent commit --- .github/workflows/remote-build-android.yml | 3 ++- .github/workflows/remote-build-ios.yml | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 4504c49bef97..22448d009d0a 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -38,7 +38,8 @@ jobs: - name: Rock Remote Build - Android # rock v3 # uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d - uses: callstackincubator/android@3cb20ec17e0a8b984eb2781845ca799fb287a53d + # uses: callstackincubator/android@3cb20ec17e0a8b984eb2781845ca799fb287a53d + uses: callstackincubator/android@1a7d52dfe3ca195ccbe5ad2f06c15f2fc3835115 env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 1dc607d587d4..21152ac76eca 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -42,7 +42,9 @@ jobs: - name: Rock Remote Build - iOS # rock v3 # uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 - uses: callstackincubator/ios@9700aca4913785045457e4bb355480a9592acb26 + # uses: callstackincubator/ios@9700aca4913785045457e4bb355480a9592acb26 + uses: callstackincubator/ios@08a533dbeda6adec39f94d08d820091514d1f7af + env: GITHUB_TOKEN: ${{ github.token }} From 942f082e8ccb7d2e79db9cf62ecf79cf1e9c46c4 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 13:14:10 +0200 Subject: [PATCH 09/22] prettier and cspell migration --- .prettierignore | 2 +- cspell.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index f7504302a506..3dc40566d5f4 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,7 +3,7 @@ .well-known desktop/dist/**/*.js dist/**/*.js -.rnef +.rock assets/animations android ios diff --git a/cspell.json b/cspell.json index cb9892ec87df..a12fc9583886 100644 --- a/cspell.json +++ b/cspell.json @@ -547,7 +547,7 @@ "retryable", "Reupholstery", "rideshare", - "rnef", + "rock", "RNFS", "rnmapbox", "RNTL", From 7de771d0c724fea42b0f1904cea3c563551d88ed Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 13:25:50 +0200 Subject: [PATCH 10/22] update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3e7be6b854f6..65415905a954 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ variables referenced here get updated since your local `.env` file is ignored. - `E2E_TESTING` (optional) - This needs to be set to `true` when running the e2e tests for performance regression testing. This happens usually automatically, read [this](tests/e2e/README.md) for more information -> If your changes to .env aren't having an effect, try `rm -rf .rnef`, then re-run `npm run ios` or `npm run android` +> If your changes to .env aren't having an effect, try `rm -rf .rock`, then re-run `npm run ios` or `npm run android` ---- From f9535d375d5af51d021abfe1e198227337ef1417 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 27 Aug 2025 13:30:12 +0200 Subject: [PATCH 11/22] remove testing data --- .github/workflows/remote-build-android.yml | 4 +--- .github/workflows/remote-build-ios.yml | 4 +--- rock.config.mjs | 9 ++------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 22448d009d0a..eaa60829aba3 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 with: submodules: ${{ matrix.is_hybrid_build || false }} - # token: ${{ secrets.OS_BOTIFY_TOKEN }} + token: ${{ secrets.OS_BOTIFY_TOKEN }} - name: Setup Node uses: ./.github/actions/composite/setupNode @@ -37,8 +37,6 @@ jobs: - name: Rock Remote Build - Android # rock v3 - # uses: callstackincubator/android@8fe27a5a3efcf32b54e4741be0ba58bafc73bb0d - # uses: callstackincubator/android@3cb20ec17e0a8b984eb2781845ca799fb287a53d uses: callstackincubator/android@1a7d52dfe3ca195ccbe5ad2f06c15f2fc3835115 env: GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 21152ac76eca..bbdc3a6dbada 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -32,7 +32,7 @@ jobs: uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 with: submodules: ${{ matrix.is_hybrid_build || false }} - # token: ${{ secrets.OS_BOTIFY_TOKEN }} + token: ${{ secrets.OS_BOTIFY_TOKEN }} - name: Setup Node uses: ./.github/actions/composite/setupNode @@ -41,8 +41,6 @@ jobs: - name: Rock Remote Build - iOS # rock v3 - # uses: callstackincubator/ios@dd886b4ad3b35351d799d4c2633a678c94549038 - # uses: callstackincubator/ios@9700aca4913785045457e4bb355480a9592acb26 uses: callstackincubator/ios@08a533dbeda6adec39f94d08d820091514d1f7af diff --git a/rock.config.mjs b/rock.config.mjs index 48fa85c3dc3b..a5e8fbaf3964 100644 --- a/rock.config.mjs +++ b/rock.config.mjs @@ -8,15 +8,10 @@ const isHybrid = process.env.IS_HYBRID_APP === 'true'; /** @type {import('@rock-js/config').Config} */ export default { remoteCacheProvider: providerGitHub({ - owner: 'callstack-internal', - repository: 'Expensify-App', + owner: 'Expensify', + repository: 'App', token: process.env.GITHUB_TOKEN, }), - // remoteCacheProvider: providerGitHub({ - // owner: 'Expensify', - // repository: 'App', - // token: process.env.GITHUB_TOKEN, - // }), bundler: pluginMetro(), platforms: { ios: platformIOS({sourceDir: isHybrid ? './Mobile-Expensify/iOS' : './ios'}), From 3962c4166f041d678585a43b16ef0addb90a10a8 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Thu, 28 Aug 2025 13:47:13 +0200 Subject: [PATCH 12/22] install pods --- ios/Podfile.lock | 60 +++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2f3bb62478cb..df6ab1e24f06 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -502,6 +502,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -520,6 +521,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -537,6 +539,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -556,6 +559,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -574,6 +578,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -592,6 +597,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -610,6 +616,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -628,6 +635,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -646,6 +654,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -664,6 +673,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -682,6 +692,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -700,6 +711,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -718,6 +730,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -736,6 +749,7 @@ PODS: - React-jsinspector - React-jsitooling - React-perflogger + - React-rendererconsistency - React-runtimescheduler - React-utils - SocketRocket (= 0.7.1) @@ -2875,7 +2889,7 @@ PODS: - RNGoogleSignin (10.0.1): - GoogleSignIn (~> 7.0) - React-Core - - RNLiveMarkdown (0.1.294): + - RNLiveMarkdown (0.1.299): - DoubleConversion - glog - hermes-engine @@ -3005,7 +3019,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNReanimated (3.17.1): + - RNReanimated (3.19.1): - DoubleConversion - glog - hermes-engine @@ -3028,10 +3042,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated (= 3.17.1) - - RNReanimated/worklets (= 3.17.1) + - RNReanimated/reanimated (= 3.19.1) + - RNReanimated/worklets (= 3.19.1) - Yoga - - RNReanimated/reanimated (3.17.1): + - RNReanimated/reanimated (3.19.1): - DoubleConversion - glog - hermes-engine @@ -3054,9 +3068,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated/apple (= 3.17.1) + - RNReanimated/reanimated/apple (= 3.19.1) - Yoga - - RNReanimated/reanimated/apple (3.17.1): + - RNReanimated/reanimated/apple (3.19.1): - DoubleConversion - glog - hermes-engine @@ -3080,7 +3094,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNReanimated/worklets (3.17.1): + - RNReanimated/worklets (3.19.1): - DoubleConversion - glog - hermes-engine @@ -3103,9 +3117,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/worklets/apple (= 3.17.1) + - RNReanimated/worklets/apple (= 3.19.1) - Yoga - - RNReanimated/worklets/apple (3.17.1): + - RNReanimated/worklets/apple (3.19.1): - DoubleConversion - glog - hermes-engine @@ -3129,7 +3143,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNScreens (4.11.1): + - RNScreens (4.12.0): - DoubleConversion - glog - hermes-engine @@ -3153,9 +3167,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNScreens/common (= 4.11.1) + - RNScreens/common (= 4.12.0) - Yoga - - RNScreens/common (4.11.1): + - RNScreens/common (4.12.0): - DoubleConversion - glog - hermes-engine @@ -3754,7 +3768,7 @@ SPEC CHECKSUMS: AirshipServiceExtension: 9c73369f426396d9fb9ff222d86d842fac76ba46 AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 - boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 + boost: 659a89341ea4ab3df8259733813b52f26d8be9a5 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb EXAV: 13d43af15268a3f448a6b994e91574c939f065e6 EXConstants: 26f334022fc0b454b7ecdc7c12d36ffa68c7c397 @@ -3820,7 +3834,7 @@ SPEC CHECKSUMS: RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93 React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d - React-Core: 7150cf9b6a5af063b37003062689f1691e79c020 + React-Core: 7e3642ef83e1032df3d25ebc840868c0c54381ca React-CoreModules: 15a85e6665d61678942da6ae485b351f4c699049 React-cxxreact: 74f9de59259ac951923f5726aa14f0398f167af9 React-debug: a9861ea2196e886642887e29fd1d86c6eee93454 @@ -3847,7 +3861,7 @@ SPEC CHECKSUMS: React-microtasksnativemodule: 8fc1bfccd27980ed6cfec1f52ffcd6af336f48f7 react-native-advanced-input-mask: 34f8a63cda1e7225ff0093b300181508a910ef41 react-native-airship: ff2599900d29e0e64ff2b2dd9f897c0c220a9163 - react-native-app-logs: 45d7515e7a92e61be56dffb10f315b578dedee01 + react-native-app-logs: 6540c5f6f66f33cb52d0bb62f0a10131ff3a9589 react-native-blob-util: a013bd1bb12de304a726c2308cc0e219f34ab66c react-native-cameraroll: d98f8a64b53620754864c33a034e054ca4a3b360 react-native-config: ab9f9cc16883aed5355ca43478fe39e6aec5ebb9 @@ -3855,7 +3869,7 @@ SPEC CHECKSUMS: react-native-geolocation: d5114c4ea019574f76344eca8503555ba1208b46 react-native-image-picker: 05b58a33b780623da2f891c55dcc57c6aa867d83 react-native-key-command: b04997038f8fe4a03b711abe36cd84ced93c50b3 - react-native-keyboard-controller: 2602bca1715435e3742c5a69d45ff42c1d97e1b9 + react-native-keyboard-controller: bf564ee7ea1a9b4681aa83989a06f3990b4291a1 react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d react-native-netinfo: b8577cba87fbe7b7740c279ee23d25d7c5d87666 react-native-pager-view: 12c1b7b6f50efb3e5d57d62ea5c601cba0585bfd @@ -3869,7 +3883,7 @@ SPEC CHECKSUMS: react-native-webview: 9cf95bd9b16cde5d9bbae452a9cf55631b62028d React-NativeModulesApple: 1b5e6bf9164371771e553f744da801f5d9f5c7e5 React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c - React-perflogger: 6fd2f6811533e9c19a61e855c3033eecbf4ad2a0 + React-perflogger: 005c6dfd4aa335fd527c94cc4591ed9b509f0486 React-performancetimeline: df331d0764cc54204a73960408371111efbd34b7 React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3 React-RCTAnimation: 2595dcb10a82216a511b54742f8c28d793852ac6 @@ -3884,7 +3898,7 @@ SPEC CHECKSUMS: React-RCTSettings: a060c7e381a3896104761b8eed7e284d95e37df3 React-RCTText: 4f272b72dbb61f390d8c8274528f9fdbff983806 React-RCTVibration: 0e5326220719aca12473d703aa46693e3b4ce67a - React-rendererconsistency: 68db5a64f0c42b0337e25ba7b0e9513caae1389d + React-rendererconsistency: 4e8e3fd5e90ec9594a4bd5950496eb8006c72f7e React-renderercss: eeb482d2790028a9b47ce9c214397ae2f4e2a7c5 React-rendererdebug: c6e3b7583c2f0802cb3b4cf19f714853fa9ac670 React-rncore: 0f64cacb1becc6f89c99018ca920d012f9044ebd @@ -3911,14 +3925,14 @@ SPEC CHECKSUMS: RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: b249b5be5a3659025aed8898aaaafd567dc2d660 RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0 - RNLiveMarkdown: a2f598d3a4a025543185c2b5aa6ab86e9dfaaf8c + RNLiveMarkdown: e61d72500c1cba0c7e6ff45e97a69f6276eacafb RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 rnmapbox-maps: a5569b64e3ca5fcd1be1f9d5bb478bf601d2a033 RNNitroSQLite: a1b0f1a665c54fc0f2510a292c1bf8ac4d44231b RNPermissions: fd6b2676e74ecb6d2dec0a6168502ab7af733e34 RNReactNativeHapticFeedback: 85c0a6ff490d52f5e8073040296fefe5945ebbfa - RNReanimated: 71c3cc66ee4866e550ddc202e01cd670de3b9ed5 - RNScreens: d9d5d8a2a484bb4446968bfa00db991f1117db44 + RNReanimated: 0692f0b36f15b83a7936c3611cab923e1396eeb9 + RNScreens: 9cb0d4b69067d62d51c278730bb0322f5cbd8d8e RNShare: 1e3e15a3d2608acde2808bc35448e2344e38e15b RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852 RNSVG: 2aeb75970331da3a64cb89309f7fd7bd3769260a @@ -3932,6 +3946,6 @@ SPEC CHECKSUMS: VisionCamera: b3c0cf261b9ad1ac7d60ec292d252cf3368b801e Yoga: 50518ade05048235d91a78b803336dbb5b159d5d -PODFILE CHECKSUM: f7a8d931f2dd2be0fed9bb22df37140219a07ff3 +PODFILE CHECKSUM: 145b53efc0407146c2decf14202d64f78e7dbd96 COCOAPODS: 1.15.2 From 91633a6a5cc0f3f4e3a9d001680fa89254d003f5 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Thu, 28 Aug 2025 13:51:26 +0200 Subject: [PATCH 13/22] syntax fixes --- .github/workflows/remote-build-ios.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index bbdc3a6dbada..21b064acc248 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -42,8 +42,6 @@ jobs: - name: Rock Remote Build - iOS # rock v3 uses: callstackincubator/ios@08a533dbeda6adec39f94d08d820091514d1f7af - - env: GITHUB_TOKEN: ${{ github.token }} IS_HYBRID_APP: ${{ matrix.is_hybrid_build }} From 5b6dbdafc8d891a50457eb73f90c4cd4312ebf53 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Fri, 29 Aug 2025 12:31:43 +0200 Subject: [PATCH 14/22] adjust .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9d1d14e2e5fa..7f620222cc86 100644 --- a/.gitignore +++ b/.gitignore @@ -150,6 +150,7 @@ react-compiler-output.txt # Rock Framework .rock/ +.rnef/ # Generated by bob (for Nitro modules) modules/*/lib/ From 78491dcac0f0c162ac03c7e114f5cb4c1bda4ed1 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Fri, 29 Aug 2025 13:40:23 +0200 Subject: [PATCH 15/22] install pods --- ios/Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0331a979f783..df6ab1e24f06 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2889,7 +2889,7 @@ PODS: - RNGoogleSignin (10.0.1): - GoogleSignIn (~> 7.0) - React-Core - - RNLiveMarkdown (0.1.302): + - RNLiveMarkdown (0.1.299): - DoubleConversion - glog - hermes-engine @@ -3925,7 +3925,7 @@ SPEC CHECKSUMS: RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: b249b5be5a3659025aed8898aaaafd567dc2d660 RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0 - RNLiveMarkdown: 33974079f2be0b5c5e6032582c265494f00a8ce4 + RNLiveMarkdown: e61d72500c1cba0c7e6ff45e97a69f6276eacafb RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 rnmapbox-maps: a5569b64e3ca5fcd1be1f9d5bb478bf601d2a033 RNNitroSQLite: a1b0f1a665c54fc0f2510a292c1bf8ac4d44231b From d72c40204912be52acdc3174b98bca2920442695 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Fri, 29 Aug 2025 16:43:34 +0200 Subject: [PATCH 16/22] add ability to build with specific Mobile-Expensify version --- .github/workflows/remote-build-android.yml | 12 ++++++++++++ .github/workflows/remote-build-ios.yml | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 3471eb3d5c5c..90435d1a71ee 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -2,6 +2,11 @@ name: Remote Build Android on: workflow_dispatch: + inputs: + mobile_expensify_pr: + description: 'Mobile-Expensify PR number to use for hybrid build' + required: false + type: string push: branches-ignore: [staging, production, cherry-pick-*] paths-ignore: ['docs/**', 'contributingGuides/**', 'help/**', '.github/**', 'scripts/**', 'tests/**'] @@ -35,6 +40,13 @@ jobs: with: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} + - name: Checkout specific Mobile-Expensify PR + if: ${{ matrix.is_hybrid_build && github.event.inputs.mobile_expensify_pr }} + run: | + cd Mobile-Expensify + git fetch origin pull/${{ github.event.inputs.mobile_expensify_pr }}/head:pr-${{ github.event.inputs.mobile_expensify_pr }} + git checkout pr-${{ github.event.inputs.mobile_expensify_pr }} + echo "Checked out Mobile-Expensify PR #${{ github.event.inputs.mobile_expensify_pr }}" - name: Rock Remote Build - Android # rock v3 uses: callstackincubator/android@1a7d52dfe3ca195ccbe5ad2f06c15f2fc3835115 diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 2a71b42cce7e..38332437fc9c 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -2,6 +2,11 @@ name: Remote Build iOS on: workflow_dispatch: + inputs: + mobile_expensify_pr: + description: 'Mobile-Expensify PR number to use for hybrid build' + required: false + type: string push: branches-ignore: [staging, production, cherry-pick-*] paths-ignore: ['docs/**', 'contributingGuides/**', 'help/**', '.github/**', 'scripts/**', 'tests/**'] @@ -39,6 +44,13 @@ jobs: with: IS_HYBRID_BUILD: ${{ matrix.is_hybrid_build && 'true' || 'false' }} + - name: Checkout specific Mobile-Expensify PR + if: ${{ matrix.is_hybrid_build && github.event.inputs.mobile_expensify_pr }} + run: | + cd Mobile-Expensify + git fetch origin pull/${{ github.event.inputs.mobile_expensify_pr }}/head:pr-${{ github.event.inputs.mobile_expensify_pr }} + git checkout pr-${{ github.event.inputs.mobile_expensify_pr }} + echo "Checked out Mobile-Expensify PR #${{ github.event.inputs.mobile_expensify_pr }}" - name: Rock Remote Build - iOS # rock v3 uses: callstackincubator/ios@08a533dbeda6adec39f94d08d820091514d1f7af From e0529bb897466ee374011c29e378fad15d0ae370 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 1 Sep 2025 12:26:08 +0200 Subject: [PATCH 17/22] fix formatting --- .github/workflows/remote-build-android.yml | 1 + .github/workflows/remote-build-ios.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/remote-build-android.yml b/.github/workflows/remote-build-android.yml index 90435d1a71ee..cc3a1b56dc9f 100644 --- a/.github/workflows/remote-build-android.yml +++ b/.github/workflows/remote-build-android.yml @@ -47,6 +47,7 @@ jobs: git fetch origin pull/${{ github.event.inputs.mobile_expensify_pr }}/head:pr-${{ github.event.inputs.mobile_expensify_pr }} git checkout pr-${{ github.event.inputs.mobile_expensify_pr }} echo "Checked out Mobile-Expensify PR #${{ github.event.inputs.mobile_expensify_pr }}" + - name: Rock Remote Build - Android # rock v3 uses: callstackincubator/android@1a7d52dfe3ca195ccbe5ad2f06c15f2fc3835115 diff --git a/.github/workflows/remote-build-ios.yml b/.github/workflows/remote-build-ios.yml index 38332437fc9c..4c973bab8809 100644 --- a/.github/workflows/remote-build-ios.yml +++ b/.github/workflows/remote-build-ios.yml @@ -51,6 +51,7 @@ jobs: git fetch origin pull/${{ github.event.inputs.mobile_expensify_pr }}/head:pr-${{ github.event.inputs.mobile_expensify_pr }} git checkout pr-${{ github.event.inputs.mobile_expensify_pr }} echo "Checked out Mobile-Expensify PR #${{ github.event.inputs.mobile_expensify_pr }}" + - name: Rock Remote Build - iOS # rock v3 uses: callstackincubator/ios@08a533dbeda6adec39f94d08d820091514d1f7af From 4144cbf9a50f530eedd26f0b01fca3b86655f7fe Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Fri, 5 Sep 2025 12:14:09 +0200 Subject: [PATCH 18/22] pod install --- ios/Podfile.lock | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 494993e19f58..c4c084166083 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -153,6 +153,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga + - ExpoSecureStore (14.2.4): + - ExpoModulesCore - fast_float (6.1.4) - FBLazyVector (0.79.2) - Firebase/Analytics (11.13.0): @@ -1991,6 +1993,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga + - react-native-get-random-values (1.11.0): + - React-Core - react-native-image-picker (7.1.2): - DoubleConversion - glog @@ -2163,7 +2167,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pdf (6.7.3): + - react-native-pdf (6.7.7): - DoubleConversion - glog - hermes-engine @@ -2873,7 +2877,7 @@ PODS: - RNGoogleSignin (10.0.1): - GoogleSignIn (~> 7.0) - React-Core - - RNLiveMarkdown (0.1.299): + - RNLiveMarkdown (0.1.302): - DoubleConversion - glog - hermes-engine @@ -3294,6 +3298,7 @@ DEPENDENCIES: - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoImageManipulator (from `../node_modules/expo-image-manipulator/ios`) - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoSecureStore (from `../node_modules/expo-secure-store/ios`) - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) @@ -3348,6 +3353,7 @@ DEPENDENCIES: - react-native-config (from `../node_modules/react-native-config`) - "react-native-document-picker (from `../node_modules/@react-native-documents/picker`)" - "react-native-geolocation (from `../node_modules/@react-native-community/geolocation`)" + - react-native-get-random-values (from `../node_modules/react-native-get-random-values`) - react-native-image-picker (from `../node_modules/react-native-image-picker`) - react-native-key-command (from `../node_modules/react-native-key-command`) - react-native-keyboard-controller (from `../node_modules/react-native-keyboard-controller`) @@ -3499,6 +3505,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-image-manipulator/ios" ExpoModulesCore: :path: "../node_modules/expo-modules-core" + ExpoSecureStore: + :path: "../node_modules/expo-secure-store/ios" fast_float: :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: @@ -3602,6 +3610,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-documents/picker" react-native-geolocation: :path: "../node_modules/@react-native-community/geolocation" + react-native-get-random-values: + :path: "../node_modules/react-native-get-random-values" react-native-image-picker: :path: "../node_modules/react-native-image-picker" react-native-key-command: @@ -3766,6 +3776,7 @@ SPEC CHECKSUMS: ExpoImage: a5b427e52ee7a04921081e59aac5eef7a8134ba0 ExpoImageManipulator: 7096d6bf874c0a0a649f60733fef8a99c4ad0fe2 ExpoModulesCore: 5411340438617e068df45f70127ff34640f3f337 + ExpoSecureStore: 833b24a0d7feffef4505184910c058221066011e fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975 Firebase: 3435bc66b4d494c2f22c79fd3aae4c1db6662327 @@ -3820,6 +3831,7 @@ SPEC CHECKSUMS: RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93 React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d + React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a React-Core: 7e3642ef83e1032df3d25ebc840868c0c54381ca React-CoreModules: 15a85e6665d61678942da6ae485b351f4c699049 React-cxxreact: 74f9de59259ac951923f5726aa14f0398f167af9 @@ -3853,13 +3865,14 @@ SPEC CHECKSUMS: react-native-config: ab9f9cc16883aed5355ca43478fe39e6aec5ebb9 react-native-document-picker: 06ad77eb1650e628def114ff74f9f767f1888edd react-native-geolocation: d5114c4ea019574f76344eca8503555ba1208b46 + react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06 react-native-image-picker: 05b58a33b780623da2f891c55dcc57c6aa867d83 react-native-key-command: b04997038f8fe4a03b711abe36cd84ced93c50b3 react-native-keyboard-controller: be15b0f8fdfd9ee0370f5bc7dab5ed2cfc3ef5e5 react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d react-native-netinfo: b8577cba87fbe7b7740c279ee23d25d7c5d87666 react-native-pager-view: 12c1b7b6f50efb3e5d57d62ea5c601cba0585bfd - react-native-pdf: 1fee221a1bdb66bb5dc14718e0687dd34f33a823 + react-native-pdf: 627c954988c313c3b72a642611ae9160669e2f32 react-native-performance: ed312c0ee791c50077b7ad22b01685fe5a0e3db6 react-native-plaid-link-sdk: e83dc18fa6752fcfb1a9bbe995f78a8a7c659fe1 react-native-release-profiler: 3c899b04a88a63735e74beb1d1010ec8c8616347 @@ -3910,7 +3923,7 @@ SPEC CHECKSUMS: RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: b249b5be5a3659025aed8898aaaafd567dc2d660 RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0 - RNLiveMarkdown: e61d72500c1cba0c7e6ff45e97a69f6276eacafb + RNLiveMarkdown: 33974079f2be0b5c5e6032582c265494f00a8ce4 RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 rnmapbox-maps: 315b95f92be3bf9c86cac2925e39c9ab2ad2c793 RNNitroSQLite: a1b0f1a665c54fc0f2510a292c1bf8ac4d44231b From fc7842694f848f09d181ae9ecbc25dd9db243ddf Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 8 Sep 2025 10:45:14 +0200 Subject: [PATCH 19/22] merge main and install pods --- ios/Podfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 5174c1acbee1..c4c084166083 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3211,7 +3211,7 @@ PODS: - RNSound/Core (= 0.11.2) - RNSound/Core (0.11.2): - React-Core - - RNSVG (15.12.1): + - RNSVG (15.9.0): - DoubleConversion - glog - hermes-engine @@ -3234,9 +3234,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.12.1) + - RNSVG/common (= 15.9.0) - Yoga - - RNSVG/common (15.12.1): + - RNSVG/common (15.9.0): - DoubleConversion - glog - hermes-engine @@ -3933,7 +3933,7 @@ SPEC CHECKSUMS: RNScreens: 0dcbe4c37daf0ec9b98bc5a655b1303e58e676ff RNShare: 1e3e15a3d2608acde2808bc35448e2344e38e15b RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852 - RNSVG: 9346c68a0d5c5e4e74d82d664b745f28e6cfc1cb + RNSVG: 2aeb75970331da3a64cb89309f7fd7bd3769260a SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c From 8665b67250257675aa2f3b39aa8c8b0a6e4d6adc Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 8 Sep 2025 11:03:49 +0200 Subject: [PATCH 20/22] revert podfile --- ios/Podfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c4c084166083..6563aa8b677d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2167,7 +2167,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pdf (6.7.7): + - react-native-pdf (6.7.3): - DoubleConversion - glog - hermes-engine @@ -3211,7 +3211,7 @@ PODS: - RNSound/Core (= 0.11.2) - RNSound/Core (0.11.2): - React-Core - - RNSVG (15.9.0): + - RNSVG (15.12.1): - DoubleConversion - glog - hermes-engine @@ -3234,9 +3234,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.9.0) + - RNSVG/common (= 15.12.1) - Yoga - - RNSVG/common (15.9.0): + - RNSVG/common (15.12.1): - DoubleConversion - glog - hermes-engine @@ -3872,7 +3872,7 @@ SPEC CHECKSUMS: react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d react-native-netinfo: b8577cba87fbe7b7740c279ee23d25d7c5d87666 react-native-pager-view: 12c1b7b6f50efb3e5d57d62ea5c601cba0585bfd - react-native-pdf: 627c954988c313c3b72a642611ae9160669e2f32 + react-native-pdf: 1fee221a1bdb66bb5dc14718e0687dd34f33a823 react-native-performance: ed312c0ee791c50077b7ad22b01685fe5a0e3db6 react-native-plaid-link-sdk: e83dc18fa6752fcfb1a9bbe995f78a8a7c659fe1 react-native-release-profiler: 3c899b04a88a63735e74beb1d1010ec8c8616347 @@ -3933,7 +3933,7 @@ SPEC CHECKSUMS: RNScreens: 0dcbe4c37daf0ec9b98bc5a655b1303e58e676ff RNShare: 1e3e15a3d2608acde2808bc35448e2344e38e15b RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852 - RNSVG: 2aeb75970331da3a64cb89309f7fd7bd3769260a + RNSVG: 9346c68a0d5c5e4e74d82d664b745f28e6cfc1cb SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -3944,6 +3944,6 @@ SPEC CHECKSUMS: VisionCamera: b3c0cf261b9ad1ac7d60ec292d252cf3368b801e Yoga: 50518ade05048235d91a78b803336dbb5b159d5d -PODFILE CHECKSUM: 145b53efc0407146c2decf14202d64f78e7dbd96 +PODFILE CHECKSUM: f7a8d931f2dd2be0fed9bb22df37140219a07ff3 COCOAPODS: 1.15.2 From 724d3b5dc88404166517e13d9eb3634960f6104d Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 8 Sep 2025 11:07:05 +0200 Subject: [PATCH 21/22] run pod install command --- ios/Podfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 6563aa8b677d..c4c084166083 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2167,7 +2167,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pdf (6.7.3): + - react-native-pdf (6.7.7): - DoubleConversion - glog - hermes-engine @@ -3211,7 +3211,7 @@ PODS: - RNSound/Core (= 0.11.2) - RNSound/Core (0.11.2): - React-Core - - RNSVG (15.12.1): + - RNSVG (15.9.0): - DoubleConversion - glog - hermes-engine @@ -3234,9 +3234,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.12.1) + - RNSVG/common (= 15.9.0) - Yoga - - RNSVG/common (15.12.1): + - RNSVG/common (15.9.0): - DoubleConversion - glog - hermes-engine @@ -3872,7 +3872,7 @@ SPEC CHECKSUMS: react-native-launch-arguments: 5f41e0abf88a15e3c5309b8875d6fd5ac43df49d react-native-netinfo: b8577cba87fbe7b7740c279ee23d25d7c5d87666 react-native-pager-view: 12c1b7b6f50efb3e5d57d62ea5c601cba0585bfd - react-native-pdf: 1fee221a1bdb66bb5dc14718e0687dd34f33a823 + react-native-pdf: 627c954988c313c3b72a642611ae9160669e2f32 react-native-performance: ed312c0ee791c50077b7ad22b01685fe5a0e3db6 react-native-plaid-link-sdk: e83dc18fa6752fcfb1a9bbe995f78a8a7c659fe1 react-native-release-profiler: 3c899b04a88a63735e74beb1d1010ec8c8616347 @@ -3933,7 +3933,7 @@ SPEC CHECKSUMS: RNScreens: 0dcbe4c37daf0ec9b98bc5a655b1303e58e676ff RNShare: 1e3e15a3d2608acde2808bc35448e2344e38e15b RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852 - RNSVG: 9346c68a0d5c5e4e74d82d664b745f28e6cfc1cb + RNSVG: 2aeb75970331da3a64cb89309f7fd7bd3769260a SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -3944,6 +3944,6 @@ SPEC CHECKSUMS: VisionCamera: b3c0cf261b9ad1ac7d60ec292d252cf3368b801e Yoga: 50518ade05048235d91a78b803336dbb5b159d5d -PODFILE CHECKSUM: f7a8d931f2dd2be0fed9bb22df37140219a07ff3 +PODFILE CHECKSUM: 145b53efc0407146c2decf14202d64f78e7dbd96 COCOAPODS: 1.15.2 From 2b1dfbb663c11edfe48480692bc0d3cc353fd40c Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 8 Sep 2025 16:22:40 +0200 Subject: [PATCH 22/22] adjust gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7f620222cc86..9d1d14e2e5fa 100644 --- a/.gitignore +++ b/.gitignore @@ -150,7 +150,6 @@ react-compiler-output.txt # Rock Framework .rock/ -.rnef/ # Generated by bob (for Nitro modules) modules/*/lib/