diff --git a/.changeset/add-metro-plugin-rock.md b/.changeset/add-metro-plugin-rock.md new file mode 100644 index 00000000000..0c442997fe5 --- /dev/null +++ b/.changeset/add-metro-plugin-rock.md @@ -0,0 +1,5 @@ +--- +'@module-federation/metro-plugin-rock': minor +--- + +feat(metro): add metro-plugin-rock for Rock integration diff --git a/.changeset/config.json b/.changeset/config.json index 6f53007affa..c2b31315e19 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -33,6 +33,7 @@ "@module-federation/treeshake-frontend", "@module-federation/metro", "@module-federation/metro-plugin-rnef", + "@module-federation/metro-plugin-rock", "@module-federation/metro-plugin-rnc-cli" ] ], diff --git a/.changeset/deprecate-metro-plugin-rnef.md b/.changeset/deprecate-metro-plugin-rnef.md new file mode 100644 index 00000000000..295921c0526 --- /dev/null +++ b/.changeset/deprecate-metro-plugin-rnef.md @@ -0,0 +1,5 @@ +--- +'@module-federation/metro-plugin-rnef': patch +--- + +chore(metro): deprecate metro-plugin-rnef in favor of metro-plugin-rock diff --git a/.github/workflows/e2e-metro.yml b/.github/workflows/e2e-metro.yml index 3a5fd0d1673..f2a6b90b5b3 100644 --- a/.github/workflows/e2e-metro.yml +++ b/.github/workflows/e2e-metro.yml @@ -63,6 +63,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 env: + NO_COLOR: 1 ANDROID_EMULATOR_API_LEVEL: 28 ANDROID_EMULATOR_TARGET: default ANDROID_EMULATOR_ARCH: x86_64 @@ -121,19 +122,26 @@ jobs: echo "${HOME}/.maestro/bin" >> "$GITHUB_PATH" shell: bash - - name: Configure RNEF cache auth + - name: Set up Java 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: adopt + + - name: Configure Rock cache auth shell: bash run: | - RNEF_PATH="apps/metro-${{ env.METRO_APP_NAME }}/.rnef/cache" - mkdir -p "$RNEF_PATH" - echo "{\"githubToken\": \"${{ secrets.GITHUB_TOKEN }}\"}" > "$RNEF_PATH/project.json" + ROCK_PATH="apps/metro-${{ env.METRO_APP_NAME }}/.rock/cache" + mkdir -p "$ROCK_PATH" + echo "{\"githubToken\": \"${{ secrets.GITHUB_TOKEN }}\"}" > "$ROCK_PATH/project.json" - - name: Build Metro Android app (RNEF action) - uses: callstackincubator/android@v1 + - name: Build Metro Android app (Rock action) + uses: callstackincubator/android@599c4a7f0f78cbb1b3fdcd3aea220ee9fbb7e973 # v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} comment-bot: false variant: 'Release' + setup-java: false working-directory: './apps/metro-${{ env.METRO_APP_NAME }}' - name: Run Metro Android E2E tests @@ -152,7 +160,7 @@ jobs: disable-animations: true emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none script: | - node tools/scripts/run-metro-e2e.mjs --platform=android --appName=${{ env.METRO_APP_NAME }} --skip-rnef-cache-auth + node tools/scripts/run-metro-e2e.mjs --platform=android --appName=${{ env.METRO_APP_NAME }} --skip-rock-cache-auth - name: Upload Android Maestro logs on failure if: failure() @@ -167,6 +175,7 @@ jobs: runs-on: macos-latest timeout-minutes: 60 env: + NO_COLOR: 1 RUBY_VERSION: 3.4.9 MAESTRO_VERSION: 1.39.13 MAESTRO_DRIVER_STARTUP_TIMEOUT: 600000 @@ -221,15 +230,15 @@ jobs: echo "${HOME}/.maestro/bin" >> "$GITHUB_PATH" shell: bash - - name: Configure RNEF cache auth + - name: Configure Rock cache auth shell: bash run: | - RNEF_PATH="apps/metro-${{ env.METRO_APP_NAME }}/.rnef/cache" - mkdir -p "$RNEF_PATH" - echo "{\"githubToken\": \"${{ secrets.GITHUB_TOKEN }}\"}" > "$RNEF_PATH/project.json" + ROCK_PATH="apps/metro-${{ env.METRO_APP_NAME }}/.rock/cache" + mkdir -p "$ROCK_PATH" + echo "{\"githubToken\": \"${{ secrets.GITHUB_TOKEN }}\"}" > "$ROCK_PATH/project.json" - - name: Build Metro iOS app (RNEF action) - uses: callstackincubator/ios@v1 + - name: Build Metro iOS app (Rock action) + uses: callstackincubator/ios@a5f0126bfe03817e2951b29111d75fbd352de0a7 # v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} comment-bot: false @@ -241,7 +250,7 @@ jobs: - name: Run Metro iOS E2E tests env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: node tools/scripts/run-metro-e2e.mjs --platform=ios --appName=${{ env.METRO_APP_NAME }} --skip-rnef-cache-auth + run: node tools/scripts/run-metro-e2e.mjs --platform=ios --appName=${{ env.METRO_APP_NAME }} --skip-rock-cache-auth shell: bash - name: Upload iOS Maestro logs on failure diff --git a/AGENTS.md b/AGENTS.md index c708b95bb1c..6308311818c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -152,13 +152,13 @@ pnpm run build:packages - Metro tests: ```bash -pnpm exec turbo run test --filter=@module-federation/metro --filter=@module-federation/metro-plugin-rnef --filter=@module-federation/metro-plugin-rnc-cli +pnpm exec turbo run test --filter=@module-federation/metro --filter=@module-federation/metro-plugin-rnef --filter=@module-federation/metro-plugin-rock --filter=@module-federation/metro-plugin-rnc-cli ``` - Metro lint: ```bash -pnpm exec turbo run lint --filter=@module-federation/metro --filter=@module-federation/metro-plugin-rnef --filter=@module-federation/metro-plugin-rnc-cli +pnpm exec turbo run lint --filter=@module-federation/metro --filter=@module-federation/metro-plugin-rnef --filter=@module-federation/metro-plugin-rock --filter=@module-federation/metro-plugin-rnc-cli ``` ### E2E Parity via Local CI Runner diff --git a/apps/metro-example-host/.gitignore b/apps/metro-example-host/.gitignore index 4ea16da8b4a..0d6dd737b32 100644 --- a/apps/metro-example-host/.gitignore +++ b/apps/metro-example-host/.gitignore @@ -77,5 +77,6 @@ yarn-error.log # build artifacts dist/ -# RNEF +# Rock +.rock .rnef diff --git a/apps/metro-example-host/Gemfile.lock b/apps/metro-example-host/Gemfile.lock index d2bd0236d64..bc6c33ca423 100644 --- a/apps/metro-example-host/Gemfile.lock +++ b/apps/metro-example-host/Gemfile.lock @@ -22,7 +22,7 @@ GEM atomos (0.1.3) base64 (0.3.0) benchmark (0.5.0) - bigdecimal (4.1.1) + bigdecimal (4.1.2) claide (1.1.0) cocoapods (1.15.2) addressable (~> 2.8) @@ -77,7 +77,7 @@ GEM mutex_m i18n (1.14.8) concurrent-ruby (~> 1.0) - json (2.19.3) + json (2.19.4) logger (1.7.0) minitest (5.27.0) molinillo (0.8.0) diff --git a/apps/metro-example-host/android/app/build.gradle b/apps/metro-example-host/android/app/build.gradle index f8eac47f2dc..62a6fbb9555 100644 --- a/apps/metro-example-host/android/app/build.gradle +++ b/apps/metro-example-host/android/app/build.gradle @@ -15,7 +15,7 @@ react { // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen codegenDir = file("../../../../node_modules/@react-native/codegen") // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js - cliFile = file("../../node_modules/@rnef/cli/dist/src/bin.js") + cliFile = file("../../node_modules/rock/dist/src/bin.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to diff --git a/apps/metro-example-host/android/settings.gradle b/apps/metro-example-host/android/settings.gradle index 8d38b5abb6e..961118a98b2 100644 --- a/apps/metro-example-host/android/settings.gradle +++ b/apps/metro-example-host/android/settings.gradle @@ -1,6 +1,6 @@ pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } plugins { id("com.facebook.react.settings") } -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 = "MFExampleHost" include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/apps/metro-example-host/ios/MFExampleHost.xcodeproj/project.pbxproj b/apps/metro-example-host/ios/MFExampleHost.xcodeproj/project.pbxproj index 5402edaaa7d..9f351e1330e 100644 --- a/apps/metro-example-host/ios/MFExampleHost.xcodeproj/project.pbxproj +++ b/apps/metro-example-host/ios/MFExampleHost.xcodeproj/project.pbxproj @@ -181,7 +181,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@rnef/cli/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('rock/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; diff --git a/apps/metro-example-host/ios/Podfile b/apps/metro-example-host/ios/Podfile index 16b4df67d93..ed9ba5d996a 100644 --- a/apps/metro-example-host/ios/Podfile +++ b/apps/metro-example-host/ios/Podfile @@ -15,7 +15,7 @@ if linkage != nil end target 'MFExampleHost' do - config = use_native_modules!(['npx', 'rnef', 'config', '-p', 'ios']) + config = use_native_modules!(['npx', 'rock', 'config', '-p', 'ios']) use_react_native!( :path => config[:reactNativePath], diff --git a/apps/metro-example-host/ios/Podfile.lock b/apps/metro-example-host/ios/Podfile.lock index 2ab0e0cce06..d96dc5646e5 100644 --- a/apps/metro-example-host/ios/Podfile.lock +++ b/apps/metro-example-host/ios/Podfile.lock @@ -2427,6 +2427,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 0c4b7d2aacc910a1f702694fa86be830386f4ceb -PODFILE CHECKSUM: d7ddd7fd39d49e0dd5d1205cb5dc83483092e5fb +PODFILE CHECKSUM: f7c15fdb9b5b2df0ae134c62754cc4c92ec20ff0 COCOAPODS: 1.15.2 diff --git a/apps/metro-example-host/package.json b/apps/metro-example-host/package.json index 571c33127f9..6a1484fb6e1 100644 --- a/apps/metro-example-host/package.json +++ b/apps/metro-example-host/package.json @@ -3,13 +3,13 @@ "version": "0.0.1", "private": true, "scripts": { - "android": "rnef run:android", - "ios": "rnef run:ios", - "android:release": "rnef run:android --variant 'Release'", - "ios:release": "rnef run:ios --configuration 'Release' --destination=\"simulator\"", + "android": "rock run:android", + "ios": "rock run:ios", + "android:release": "rock run:android --variant 'Release'", + "ios:release": "rock run:ios --configuration 'Release' --destination=\"simulator\"", "lint": "ESLINT_USE_FLAT_CONFIG=false eslint .", "dev": "nodemon --config ../../nodemon.json --exec NODE_OPTIONS='--conditions=dev' pnpm start", - "start": "rnef start --reset-cache --client-logs", + "start": "rock start --reset-cache --client-logs", "pods": "(cd ios && bundle install && (bundle exec pod install || bundle exec pod update))", "test": "jest", "adbreverse": "pnpm --filter example-mini --filter example-nested-mini run adbreverse", @@ -30,17 +30,18 @@ "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", "@module-federation/metro": "workspace:*", - "@module-federation/metro-plugin-rnef": "workspace:*", + "@module-federation/metro-plugin-rock": "workspace:*", "@module-federation/runtime": "workspace:*", "@react-native/babel-preset": "0.80.0", "@react-native/eslint-config": "0.80.0", "@react-native/gradle-plugin": "0.80.0", "@react-native/metro-config": "0.80.0", "@react-native/typescript-config": "0.80.0", - "@rnef/cli": "^0.7.25", - "@rnef/platform-android": "^0.7.25", - "@rnef/platform-ios": "^0.7.25", - "@rnef/plugin-metro": "^0.7.25", + "rock": "^0.13.0", + "@rock-js/platform-android": "^0.13.0", + "@rock-js/platform-ios": "^0.13.0", + "@rock-js/plugin-metro": "^0.13.0", + "@rock-js/provider-github": "^0.13.0", "@types/jest": "^29.5.13", "@types/lodash": "^4", "@types/react": "^19.1.0", diff --git a/apps/metro-example-host/rnef.config.mjs b/apps/metro-example-host/rnef.config.mjs deleted file mode 100644 index d0d538260e3..00000000000 --- a/apps/metro-example-host/rnef.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rnef'; -import {platformAndroid} from '@rnef/platform-android'; -// @ts-check -import {platformIOS} from '@rnef/platform-ios'; -import {pluginMetro} from '@rnef/plugin-metro'; - -/** @type {import('@rnef/config').Config} */ -export default { - bundler: pluginMetro(), - platforms: { - ios: platformIOS(), - android: platformAndroid(), - }, - remoteCacheProvider: 'github-actions', - plugins: [pluginMetroModuleFederation()], -}; diff --git a/apps/metro-example-host/rock.config.mjs b/apps/metro-example-host/rock.config.mjs new file mode 100644 index 00000000000..e02f21becd6 --- /dev/null +++ b/apps/metro-example-host/rock.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rock'; +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'; + +/** @type {import('rock').Config} */ +export default { + bundler: pluginMetro(), + platforms: { + ios: platformIOS(), + android: platformAndroid(), + }, + remoteCacheProvider: providerGitHub(), + plugins: [pluginMetroModuleFederation()], +}; diff --git a/apps/metro-example-mini/.gitignore b/apps/metro-example-mini/.gitignore index 0a551b47138..3195290ee75 100644 --- a/apps/metro-example-mini/.gitignore +++ b/apps/metro-example-mini/.gitignore @@ -77,5 +77,6 @@ yarn-error.log # build artifacts dist/ -# RNEF +# Rock +.rock .rnef \ No newline at end of file diff --git a/apps/metro-example-mini/Gemfile.lock b/apps/metro-example-mini/Gemfile.lock index d2bd0236d64..bc6c33ca423 100644 --- a/apps/metro-example-mini/Gemfile.lock +++ b/apps/metro-example-mini/Gemfile.lock @@ -22,7 +22,7 @@ GEM atomos (0.1.3) base64 (0.3.0) benchmark (0.5.0) - bigdecimal (4.1.1) + bigdecimal (4.1.2) claide (1.1.0) cocoapods (1.15.2) addressable (~> 2.8) @@ -77,7 +77,7 @@ GEM mutex_m i18n (1.14.8) concurrent-ruby (~> 1.0) - json (2.19.3) + json (2.19.4) logger (1.7.0) minitest (5.27.0) molinillo (0.8.0) diff --git a/apps/metro-example-mini/android/app/build.gradle b/apps/metro-example-mini/android/app/build.gradle index 59a3f53278d..8cc518335be 100644 --- a/apps/metro-example-mini/android/app/build.gradle +++ b/apps/metro-example-mini/android/app/build.gradle @@ -15,7 +15,7 @@ react { // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen codegenDir = file("../../../../node_modules/@react-native/codegen") // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js - cliFile = file("../../node_modules/@rnef/cli/dist/src/bin.js") + cliFile = file("../../node_modules/rock/dist/src/bin.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to diff --git a/apps/metro-example-mini/android/settings.gradle b/apps/metro-example-mini/android/settings.gradle index 076181847a5..f4def3c495c 100644 --- a/apps/metro-example-mini/android/settings.gradle +++ b/apps/metro-example-mini/android/settings.gradle @@ -1,6 +1,6 @@ pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } plugins { id("com.facebook.react.settings") } -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 = 'mini' include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/apps/metro-example-mini/ios/Podfile b/apps/metro-example-mini/ios/Podfile index 3d1b5c16c36..7a5704eeacc 100644 --- a/apps/metro-example-mini/ios/Podfile +++ b/apps/metro-example-mini/ios/Podfile @@ -15,7 +15,7 @@ if linkage != nil end target 'mini' do - config = use_native_modules!(['npx', 'rnef', 'config', '-p', 'ios']) + config = use_native_modules!(['npx', 'rock', 'config', '-p', 'ios']) use_react_native!( :path => config[:reactNativePath], diff --git a/apps/metro-example-mini/ios/Podfile.lock b/apps/metro-example-mini/ios/Podfile.lock index 2aae1197dd3..55a7b43d6fa 100644 --- a/apps/metro-example-mini/ios/Podfile.lock +++ b/apps/metro-example-mini/ios/Podfile.lock @@ -2427,6 +2427,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 0c4b7d2aacc910a1f702694fa86be830386f4ceb -PODFILE CHECKSUM: a8134080201cda3c42e54a89f48d0930861e3c58 +PODFILE CHECKSUM: 0bef6bcbae4cfd995527daffb014d1e226ab15f8 COCOAPODS: 1.15.2 diff --git a/apps/metro-example-mini/ios/mini.xcodeproj/project.pbxproj b/apps/metro-example-mini/ios/mini.xcodeproj/project.pbxproj index c45a5d01507..69e62a4b646 100644 --- a/apps/metro-example-mini/ios/mini.xcodeproj/project.pbxproj +++ b/apps/metro-example-mini/ios/mini.xcodeproj/project.pbxproj @@ -181,7 +181,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@rnef/cli/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('rock/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; diff --git a/apps/metro-example-mini/package.json b/apps/metro-example-mini/package.json index cc2f197ec59..84152f736d6 100644 --- a/apps/metro-example-mini/package.json +++ b/apps/metro-example-mini/package.json @@ -3,15 +3,15 @@ "version": "0.0.1", "private": true, "scripts": { - "android": "rnef run:android", - "ios": "rnef run:ios", + "android": "rock run:android", + "ios": "rock run:ios", "lint": "ESLINT_USE_FLAT_CONFIG=false eslint .", "dev": "nodemon --config ../../nodemon.json --exec NODE_OPTIONS='--conditions=dev' pnpm start", - "start": "rnef start --port 8082", + "start": "rock start --port 8082", "test": "jest", "pods": "(cd ios && bundle install && (bundle exec pod install || bundle exec pod update))", - "build:ios": "rnef bundle-mf-remote --platform ios --dev false", - "build:android": "rnef bundle-mf-remote --platform android --dev false", + "build:ios": "rock bundle-mf-remote --platform ios --dev false", + "build:android": "rock bundle-mf-remote --platform android --dev false", "build:rnc:ios": "react-native bundle-mf-remote --platform ios --dev false", "build:rnc:android": "react-native bundle-mf-remote --platform android --dev false", "serve:ios": "serve dist/ios -p 8082", @@ -28,17 +28,18 @@ "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", "@module-federation/metro": "workspace:*", - "@module-federation/metro-plugin-rnef": "workspace:*", + "@module-federation/metro-plugin-rock": "workspace:*", "@module-federation/runtime": "workspace:*", "@react-native-community/cli": "^19.1.0", "@react-native/babel-preset": "0.80.0", "@react-native/eslint-config": "0.80.0", "@react-native/metro-config": "0.80.0", "@react-native/typescript-config": "0.80.0", - "@rnef/cli": "^0.7.25", - "@rnef/platform-android": "^0.7.25", - "@rnef/platform-ios": "^0.7.25", - "@rnef/plugin-metro": "^0.7.25", + "rock": "^0.13.0", + "@rock-js/platform-android": "^0.13.0", + "@rock-js/platform-ios": "^0.13.0", + "@rock-js/plugin-metro": "^0.13.0", + "@rock-js/provider-github": "^0.13.0", "@types/jest": "^29.5.13", "@types/lodash": "^4", "@types/react": "^19.1.0", diff --git a/apps/metro-example-mini/rnef.config.mjs b/apps/metro-example-mini/rnef.config.mjs deleted file mode 100644 index d0d538260e3..00000000000 --- a/apps/metro-example-mini/rnef.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rnef'; -import {platformAndroid} from '@rnef/platform-android'; -// @ts-check -import {platformIOS} from '@rnef/platform-ios'; -import {pluginMetro} from '@rnef/plugin-metro'; - -/** @type {import('@rnef/config').Config} */ -export default { - bundler: pluginMetro(), - platforms: { - ios: platformIOS(), - android: platformAndroid(), - }, - remoteCacheProvider: 'github-actions', - plugins: [pluginMetroModuleFederation()], -}; diff --git a/apps/metro-example-mini/rock.config.mjs b/apps/metro-example-mini/rock.config.mjs new file mode 100644 index 00000000000..e02f21becd6 --- /dev/null +++ b/apps/metro-example-mini/rock.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rock'; +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'; + +/** @type {import('rock').Config} */ +export default { + bundler: pluginMetro(), + platforms: { + ios: platformIOS(), + android: platformAndroid(), + }, + remoteCacheProvider: providerGitHub(), + plugins: [pluginMetroModuleFederation()], +}; diff --git a/apps/metro-example-nested-mini/.gitignore b/apps/metro-example-nested-mini/.gitignore index 4ea16da8b4a..0d6dd737b32 100644 --- a/apps/metro-example-nested-mini/.gitignore +++ b/apps/metro-example-nested-mini/.gitignore @@ -77,5 +77,6 @@ yarn-error.log # build artifacts dist/ -# RNEF +# Rock +.rock .rnef diff --git a/apps/metro-example-nested-mini/Gemfile.lock b/apps/metro-example-nested-mini/Gemfile.lock index d2bd0236d64..bc6c33ca423 100644 --- a/apps/metro-example-nested-mini/Gemfile.lock +++ b/apps/metro-example-nested-mini/Gemfile.lock @@ -22,7 +22,7 @@ GEM atomos (0.1.3) base64 (0.3.0) benchmark (0.5.0) - bigdecimal (4.1.1) + bigdecimal (4.1.2) claide (1.1.0) cocoapods (1.15.2) addressable (~> 2.8) @@ -77,7 +77,7 @@ GEM mutex_m i18n (1.14.8) concurrent-ruby (~> 1.0) - json (2.19.3) + json (2.19.4) logger (1.7.0) minitest (5.27.0) molinillo (0.8.0) diff --git a/apps/metro-example-nested-mini/android/app/build.gradle b/apps/metro-example-nested-mini/android/app/build.gradle index 59a3f53278d..8cc518335be 100644 --- a/apps/metro-example-nested-mini/android/app/build.gradle +++ b/apps/metro-example-nested-mini/android/app/build.gradle @@ -15,7 +15,7 @@ react { // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen codegenDir = file("../../../../node_modules/@react-native/codegen") // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js - cliFile = file("../../node_modules/@rnef/cli/dist/src/bin.js") + cliFile = file("../../node_modules/rock/dist/src/bin.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to diff --git a/apps/metro-example-nested-mini/android/settings.gradle b/apps/metro-example-nested-mini/android/settings.gradle index 076181847a5..f4def3c495c 100644 --- a/apps/metro-example-nested-mini/android/settings.gradle +++ b/apps/metro-example-nested-mini/android/settings.gradle @@ -1,6 +1,6 @@ pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } plugins { id("com.facebook.react.settings") } -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 = 'mini' include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/apps/metro-example-nested-mini/ios/Podfile b/apps/metro-example-nested-mini/ios/Podfile index 3d1b5c16c36..7a5704eeacc 100644 --- a/apps/metro-example-nested-mini/ios/Podfile +++ b/apps/metro-example-nested-mini/ios/Podfile @@ -15,7 +15,7 @@ if linkage != nil end target 'mini' do - config = use_native_modules!(['npx', 'rnef', 'config', '-p', 'ios']) + config = use_native_modules!(['npx', 'rock', 'config', '-p', 'ios']) use_react_native!( :path => config[:reactNativePath], diff --git a/apps/metro-example-nested-mini/ios/Podfile.lock b/apps/metro-example-nested-mini/ios/Podfile.lock index 2aae1197dd3..55a7b43d6fa 100644 --- a/apps/metro-example-nested-mini/ios/Podfile.lock +++ b/apps/metro-example-nested-mini/ios/Podfile.lock @@ -2427,6 +2427,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 0c4b7d2aacc910a1f702694fa86be830386f4ceb -PODFILE CHECKSUM: a8134080201cda3c42e54a89f48d0930861e3c58 +PODFILE CHECKSUM: 0bef6bcbae4cfd995527daffb014d1e226ab15f8 COCOAPODS: 1.15.2 diff --git a/apps/metro-example-nested-mini/ios/mini.xcodeproj/project.pbxproj b/apps/metro-example-nested-mini/ios/mini.xcodeproj/project.pbxproj index c45a5d01507..69e62a4b646 100644 --- a/apps/metro-example-nested-mini/ios/mini.xcodeproj/project.pbxproj +++ b/apps/metro-example-nested-mini/ios/mini.xcodeproj/project.pbxproj @@ -181,7 +181,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@rnef/cli/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + shellScript = "set -e\nif [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\nsource \"$PODS_ROOT/../.xcode.env.local\"\nfi\nexport BUNDLE_COMMAND=\"bundle-mf-host\"\nexport CONFIG_CMD=\"dummy-workaround-value\"\nexport CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('rock/package.json')) + '/dist/src/bin.js'\")\"\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; diff --git a/apps/metro-example-nested-mini/package.json b/apps/metro-example-nested-mini/package.json index decad36d320..d39c7f1b36c 100644 --- a/apps/metro-example-nested-mini/package.json +++ b/apps/metro-example-nested-mini/package.json @@ -3,15 +3,15 @@ "version": "0.0.1", "private": true, "scripts": { - "android": "rnef run:android", - "ios": "rnef run:ios", + "android": "rock run:android", + "ios": "rock run:ios", "lint": "ESLINT_USE_FLAT_CONFIG=false eslint .", "dev": "nodemon --config ../../nodemon.json --exec NODE_OPTIONS='--conditions=dev' pnpm start", - "start": "rnef start --port 8083", + "start": "rock start --port 8083", "test": "jest", "pods": "(cd ios && bundle install && (bundle exec pod install || bundle exec pod update))", - "build:ios": "rnef bundle-mf-remote --platform ios --dev false", - "build:android": "rnef bundle-mf-remote --platform android --dev false", + "build:ios": "rock bundle-mf-remote --platform ios --dev false", + "build:android": "rock bundle-mf-remote --platform android --dev false", "build:rnc:ios": "react-native bundle-mf-remote --platform ios --dev false", "build:rnc:android": "react-native bundle-mf-remote --platform android --dev false", "serve:ios": "serve dist/ios -p 8083", @@ -28,16 +28,17 @@ "@babel/preset-env": "^7.25.3", "@babel/runtime": "^7.25.0", "@module-federation/metro": "workspace:*", - "@module-federation/metro-plugin-rnef": "workspace:*", + "@module-federation/metro-plugin-rock": "workspace:*", "@module-federation/runtime": "workspace:*", "@react-native/babel-preset": "0.80.0", "@react-native/eslint-config": "0.80.0", "@react-native/metro-config": "0.80.0", "@react-native/typescript-config": "0.80.0", - "@rnef/cli": "^0.7.25", - "@rnef/platform-android": "^0.7.25", - "@rnef/platform-ios": "^0.7.25", - "@rnef/plugin-metro": "^0.7.25", + "rock": "^0.13.0", + "@rock-js/platform-android": "^0.13.0", + "@rock-js/platform-ios": "^0.13.0", + "@rock-js/plugin-metro": "^0.13.0", + "@rock-js/provider-github": "^0.13.0", "@types/jest": "^29.5.13", "@types/lodash": "^4", "@types/react": "^19.1.0", diff --git a/apps/metro-example-nested-mini/rnef.config.mjs b/apps/metro-example-nested-mini/rnef.config.mjs deleted file mode 100644 index d0d538260e3..00000000000 --- a/apps/metro-example-nested-mini/rnef.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rnef'; -import {platformAndroid} from '@rnef/platform-android'; -// @ts-check -import {platformIOS} from '@rnef/platform-ios'; -import {pluginMetro} from '@rnef/plugin-metro'; - -/** @type {import('@rnef/config').Config} */ -export default { - bundler: pluginMetro(), - platforms: { - ios: platformIOS(), - android: platformAndroid(), - }, - remoteCacheProvider: 'github-actions', - plugins: [pluginMetroModuleFederation()], -}; diff --git a/apps/metro-example-nested-mini/rock.config.mjs b/apps/metro-example-nested-mini/rock.config.mjs new file mode 100644 index 00000000000..e02f21becd6 --- /dev/null +++ b/apps/metro-example-nested-mini/rock.config.mjs @@ -0,0 +1,17 @@ +// @ts-check +import {pluginMetroModuleFederation} from '@module-federation/metro-plugin-rock'; +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'; + +/** @type {import('rock').Config} */ +export default { + bundler: pluginMetro(), + platforms: { + ios: platformIOS(), + android: platformAndroid(), + }, + remoteCacheProvider: providerGitHub(), + plugins: [pluginMetroModuleFederation()], +}; diff --git a/apps/website-new/docs/en/guide/build-plugins/plugins-metro.mdx b/apps/website-new/docs/en/guide/build-plugins/plugins-metro.mdx index 66384774d7d..283602aa09c 100644 --- a/apps/website-new/docs/en/guide/build-plugins/plugins-metro.mdx +++ b/apps/website-new/docs/en/guide/build-plugins/plugins-metro.mdx @@ -19,7 +19,8 @@ The React Native Module Federation ecosystem consists of several packages: - `@module-federation/metro` - Core integration with Metro to enable Module Federation - `@module-federation/metro-plugin-rnc-cli` - React Native CLI integration -- `@module-federation/metro-plugin-rnef` - React Native Enterprise Framework integration +- `@module-federation/metro-plugin-rock` - [Rock](https://www.rockjs.dev/) integration +- `@module-federation/metro-plugin-rnef` - RNEF integration (deprecated, use `metro-plugin-rock` instead) ## Installation @@ -32,8 +33,8 @@ pnpm add @module-federation/metro # If your project is using React Native CLI pnpm add @module-federation/metro-plugin-rnc-cli -# If your project is using React Native Enterprise Framework (RNEF) -pnpm add @module-federation/metro-plugin-rnef +# If your project is using Rock (formerly RNEF) +pnpm add @module-federation/metro-plugin-rock ``` ## Configuration @@ -199,17 +200,17 @@ Both commands support all the same options as the standard `react-native bundle` > **Note**: These commands are provided by the `@module-federation/metro-plugin-rnc-cli` package. -## React Native Enterprise Framework (RNEF) Integration +## Rock Integration -For projects using [React Native Enterprise Framework (RNEF)](https://github.com/callstack/react-native-enterprise-framework), add the Module Federation plugin to your `rnef.config.mjs`: +For projects using [Rock](https://www.rockjs.dev/) (formerly RNEF), add the Module Federation plugin to your `rock.config.mjs`: ```javascript -import { pluginMetroModuleFederation } from '@module-federation/metro-plugin-rnef'; -import { platformAndroid } from '@rnef/platform-android'; -import { platformIOS } from '@rnef/platform-ios'; -import { pluginMetro } from '@rnef/plugin-metro'; +import { pluginMetroModuleFederation } from '@module-federation/metro-plugin-rock'; +import { platformAndroid } from '@rock-js/platform-android'; +import { platformIOS } from '@rock-js/platform-ios'; +import { pluginMetro } from '@rock-js/plugin-metro'; -/** @type {import('@rnef/config').Config} */ +/** @type {import('rock').Config} */ export default { bundler: pluginMetro(), platforms: { @@ -220,6 +221,8 @@ export default { }; ``` +> **Note**: If you are migrating from RNEF, replace `@module-federation/metro-plugin-rnef` with `@module-federation/metro-plugin-rock` and rename `rnef.config.mjs` to `rock.config.mjs`. See the [metro-plugin-rock README](https://www.npmjs.com/package/@module-federation/metro-plugin-rock) for full migration details. + ## API Reference ### `withModuleFederation(metroConfig, federationConfig, options?)` diff --git a/apps/website-new/docs/zh/guide/build-plugins/plugins-metro.mdx b/apps/website-new/docs/zh/guide/build-plugins/plugins-metro.mdx index d1402f60529..f4a8f84c1b6 100644 --- a/apps/website-new/docs/zh/guide/build-plugins/plugins-metro.mdx +++ b/apps/website-new/docs/zh/guide/build-plugins/plugins-metro.mdx @@ -19,7 +19,8 @@ React Native 模块联邦生态系统由以下几个包组成: - `@module-federation/metro` - 与 Metro 的核心集成,用于启用模块联邦 - `@module-federation/metro-plugin-rnc-cli` - React Native CLI 集成 -- `@module-federation/metro-plugin-rnef` - React Native Enterprise Framework 集成 +- `@module-federation/metro-plugin-rock` - [Rock](https://www.rockjs.dev/) 集成 +- `@module-federation/metro-plugin-rnef` - RNEF 集成(已弃用,请使用 `metro-plugin-rock`) ## 安装 @@ -32,8 +33,8 @@ pnpm add @module-federation/metro # 如果项目使用 React Native CLI pnpm add @module-federation/metro-plugin-rnc-cli -# 如果项目使用 React Native Enterprise Framework (RNEF) -pnpm add @module-federation/metro-plugin-rnef +# 如果项目使用 Rock(原 RNEF) +pnpm add @module-federation/metro-plugin-rock ``` ## 配置 @@ -201,17 +202,17 @@ react-native bundle-mf-remote --platform android > **注意**:这些命令由 `@module-federation/metro-plugin-rnc-cli` 包提供。 -## React Native Enterprise Framework (RNEF) 集成 +## Rock 集成 -如果项目使用 [React Native Enterprise Framework (RNEF)](https://github.com/callstack/react-native-enterprise-framework),请在 `rnef.config.mjs` 中添加模块联邦插件: +如果项目使用 [Rock](https://www.rockjs.dev/)(原 RNEF),请在 `rock.config.mjs` 中添加模块联邦插件: ```javascript -import { pluginMetroModuleFederation } from '@module-federation/metro-plugin-rnef'; -import { platformAndroid } from '@rnef/platform-android'; -import { platformIOS } from '@rnef/platform-ios'; -import { pluginMetro } from '@rnef/plugin-metro'; +import { pluginMetroModuleFederation } from '@module-federation/metro-plugin-rock'; +import { platformAndroid } from '@rock-js/platform-android'; +import { platformIOS } from '@rock-js/platform-ios'; +import { pluginMetro } from '@rock-js/plugin-metro'; -/** @type {import('@rnef/config').Config} */ +/** @type {import('rock').Config} */ export default { bundler: pluginMetro(), platforms: { @@ -222,6 +223,8 @@ export default { }; ``` +> **注意**:如果你正在从 RNEF 迁移,请将 `@module-federation/metro-plugin-rnef` 替换为 `@module-federation/metro-plugin-rock`,并将 `rnef.config.mjs` 重命名为 `rock.config.mjs`。详细迁移指南请参阅 [metro-plugin-rock README](https://www.npmjs.com/package/@module-federation/metro-plugin-rock)。 + ## API 参考 ### `withModuleFederation(metroConfig, federationConfig, options?)` diff --git a/packages/metro-plugin-rnef/README.md b/packages/metro-plugin-rnef/README.md index 35b74379c13..ec68c8391f3 100644 --- a/packages/metro-plugin-rnef/README.md +++ b/packages/metro-plugin-rnef/README.md @@ -1,5 +1,7 @@ # @module-federation/metro-plugin-rnef +> **Deprecated:** RNEF has been renamed to [Rock](https://rockjs.dev). Please use [`@module-federation/metro-plugin-rock`](https://www.npmjs.com/package/@module-federation/metro-plugin-rock) instead. This package will continue to be published for backward compatibility but will not receive new features. + Module Federation for React Native Enterprise Framework (RNEF) using Metro bundler. This plugin integrates the `@module-federation/metro` package with RNEF, providing commands to bundle Module Federation host and remotes. ## Installation diff --git a/packages/metro-plugin-rnef/package.json b/packages/metro-plugin-rnef/package.json index 9c00bd60988..1ac0a7e3276 100644 --- a/packages/metro-plugin-rnef/package.json +++ b/packages/metro-plugin-rnef/package.json @@ -1,7 +1,7 @@ { "name": "@module-federation/metro-plugin-rnef", "version": "2.4.0", - "description": "Metro Module Federation plugin for React Native Enterprise Framework (RNEF)", + "description": "Metro Module Federation plugin for React Native Enterprise Framework (RNEF). Deprecated: use @module-federation/metro-plugin-rock instead.", "keywords": [ "rnef", "module-federation", diff --git a/packages/metro-plugin-rnef/tsconfig.json b/packages/metro-plugin-rnef/tsconfig.json index 798324680dc..eff912bc399 100644 --- a/packages/metro-plugin-rnef/tsconfig.json +++ b/packages/metro-plugin-rnef/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.base.json", "include": ["src"], "compilerOptions": { - "rootDir": "src" + "rootDir": "src", + "moduleResolution": "bundler" } } diff --git a/packages/metro-plugin-rock/LICENSE b/packages/metro-plugin-rock/LICENSE new file mode 100644 index 00000000000..3c35d705035 --- /dev/null +++ b/packages/metro-plugin-rock/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Jakub Romanczyk and Zephyr Cloud + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/metro-plugin-rock/README.md b/packages/metro-plugin-rock/README.md new file mode 100644 index 00000000000..c5e4768570d --- /dev/null +++ b/packages/metro-plugin-rock/README.md @@ -0,0 +1,96 @@ +# @module-federation/metro-plugin-rock + +Module Federation for [Rock](https://rockjs.dev) (formerly RNEF) using Metro bundler. This plugin integrates the `@module-federation/metro` package with Rock, providing commands to bundle Module Federation host and remotes. + +## Installation + +1. First, ensure you have [Rock](https://rockjs.dev) set up in your project. + +2. Install the plugin: + +```bash +npm install --save-dev @module-federation/metro-plugin-rock +``` + +3. Add the plugin to your Rock configuration (typically in `rock.config.mjs`): + +```typescript +import { pluginMetro } from '@rock-js/plugin-metro'; +import moduleFederation from '@module-federation/metro-plugin-rock'; + +/** @type {import('@rock-js/config').Config} */ +export default { + bundler: pluginMetro(), + plugins: [moduleFederation()], +}; +``` + +## Usage + +### Bundle a Module Federation Host + +```bash +# Bundle for iOS +rock bundle-mf-host --entry-file index.js --platform ios + +# Bundle for Android +rock bundle-mf-host --entry-file index.js --platform android +``` + +### Bundle a Module Federation Remote + +```bash +# Bundle for iOS +rock bundle-mf-remote --platform ios + +# Bundle for Android +rock bundle-mf-remote --platform android +``` + +### Available Options + +#### `bundle-mf-host` + +- `--entry-file `: Path to the root JavaScript entry file +- `--platform `: Target platform (default: "ios") - Either "ios" or "android" +- `--transformer `: Specify a custom transformer +- `--dev [boolean]`: If false, warnings are disabled and the bundle is minified (default: true) +- `--minify [boolean]`: Allows overriding whether bundle is minified. This defaults to false if dev is true, and true if dev is false. Disabling minification can be useful for speeding up production builds for testing purposes. +- `--bundle-output `: File path where to store the resulting bundle +- `--bundle-encoding `: Encoding the bundle should be written in (default: "utf8") +- `--resolver-option `: Custom resolver options (key=value format, URL-encoded, can be specified multiple times) +- `--sourcemap-output `: File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map +- `--sourcemap-sources-root `: Path to make sourcemap's sources entries relative to, ex. /root/dir +- `--sourcemap-use-absolute-path`: Report SourceMapURL using its full path (default: false) +- `--max-workers `: Specifies the maximum number of workers the worker-pool will spawn for transforming files. This defaults to the number of the cores available on your machine. +- `--assets-dest `: Directory name where to store assets referenced in the bundle +- `--reset-cache`: Removes cached files (default: false) +- `--read-global-cache`: Try to fetch transformed JS code from the global cache, if configured (default: false) +- `--config `: Path to the CLI configuration file + +#### `bundle-mf-remote` + +- `--platform `: Target platform (default: "ios") - Either "ios" or "android" +- `--dev [boolean]`: If false, warnings are disabled and the bundle is minified (default: true) +- `--minify [boolean]`: Allows overriding whether bundle is minified. This defaults to false if dev is true, and true if dev is false. Disabling minification can be useful for speeding up production builds for testing purposes. +- `--bundle-encoding `: Encoding the bundle should be written in (default: "utf8") +- `--max-workers `: Specifies the maximum number of workers the worker-pool will spawn for transforming files. This defaults to the number of the cores available on your machine. +- `--bundle-output `: File path where to store the resulting bundle +- `--sourcemap-output `: File name where to store the sourcemap file for resulting bundle, ex. /tmp/groups.map +- `--sourcemap-sources-root `: Path to make sourcemap's sources entries relative to, ex. /root/dir +- `--sourcemap-use-absolute-path`: Report SourceMapURL using its full path (default: false) +- `--assets-dest `: Directory name where to store assets referenced in the bundle +- `--asset-catalog-dest [string]`: Path where to create an iOS Asset Catalog for images +- `--reset-cache`: Removes cached files (default: false) +- `--config `: Path to the CLI configuration file + +## Migrating from RNEF + +If you're migrating from `@module-federation/metro-plugin-rnef`, update your imports: + +```diff +-import moduleFederation from '@module-federation/metro-plugin-rnef'; ++import moduleFederation from '@module-federation/metro-plugin-rock'; +``` + +And update your config file from `rnef.config.mjs` to `rock.config.mjs` as per the [Rock migration guide](https://rockjs.dev). diff --git a/packages/metro-plugin-rock/package.json b/packages/metro-plugin-rock/package.json new file mode 100644 index 00000000000..b3fc6ca7d39 --- /dev/null +++ b/packages/metro-plugin-rock/package.json @@ -0,0 +1,53 @@ +{ + "name": "@module-federation/metro-plugin-rock", + "version": "2.3.1", + "description": "Metro Module Federation plugin for Rock", + "keywords": [ + "rock", + "rockjs", + "module-federation", + "metro", + "react-native" + ], + "type": "module", + "license": "MIT", + "author": "Jakub Romańczyk (https://github.com/jbroma)", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/module-federation/core.git", + "directory": "packages/metro-plugin-rock" + }, + "files": [ + "dist/" + ], + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + }, + "scripts": { + "build": "rslib build", + "typecheck": "tsc --noEmit", + "lint": "ESLINT_USE_FLAT_CONFIG=false pnpm exec eslint --ignore-pattern node_modules \"**/*.{js,ts}\"" + }, + "peerDependencies": { + "@module-federation/metro": "workspace:*", + "@rock-js/tools": "^0.13.0" + }, + "devDependencies": { + "@module-federation/metro": "workspace:*", + "@rock-js/config": "^0.13.0", + "@rock-js/tools": "^0.13.0", + "@rslib/core": "^0.10.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", + "@types/node": "^20.0.0", + "typescript": "^5.8.3" + } +} diff --git a/packages/metro-plugin-rock/rslib.config.ts b/packages/metro-plugin-rock/rslib.config.ts new file mode 100644 index 00000000000..42a04669edc --- /dev/null +++ b/packages/metro-plugin-rock/rslib.config.ts @@ -0,0 +1,13 @@ +import { pluginPublint } from 'rsbuild-plugin-publint'; +import { defineConfig } from '@rslib/core'; + +export default defineConfig({ + plugins: [pluginPublint()], + lib: [ + { format: 'esm', syntax: 'es2021', bundle: false, dts: { bundle: false } }, + { format: 'cjs', syntax: 'es2021', bundle: false }, + ], + source: { + tsconfigPath: './tsconfig.build.json', + }, +}); diff --git a/packages/metro-plugin-rock/src/index.ts b/packages/metro-plugin-rock/src/index.ts new file mode 100644 index 00000000000..3bde1f1a0ec --- /dev/null +++ b/packages/metro-plugin-rock/src/index.ts @@ -0,0 +1,4 @@ +import { pluginMetroModuleFederation } from './plugin.js'; + +export { pluginMetroModuleFederation }; +export default pluginMetroModuleFederation; diff --git a/packages/metro-plugin-rock/src/plugin.ts b/packages/metro-plugin-rock/src/plugin.ts new file mode 100644 index 00000000000..c3722240778 --- /dev/null +++ b/packages/metro-plugin-rock/src/plugin.ts @@ -0,0 +1,78 @@ +import commands from '@module-federation/metro/commands'; +import type { + BundleFederatedHostArgs, + BundleFederatedRemoteArgs, +} from '@module-federation/metro/commands'; +import type { PluginApi, PluginOutput } from '@rock-js/config'; +import { color, logger, outro } from '@rock-js/tools'; + +interface PluginConfig { + platforms?: Record; +} + +export const pluginMetroModuleFederation = + (pluginConfig: PluginConfig = {}) => + (api: PluginApi): PluginOutput => { + // Register the bundle-mf-host command + api.registerCommand({ + name: 'bundle-mf-host', + description: 'Bundles a Module Federation host', + action: async (args: BundleFederatedHostArgs) => { + const commandConfig = { + root: api.getProjectRoot(), + platforms: api.getPlatforms(), + reactNativePath: api.getReactNativePath(), + ...pluginConfig, + }; + + logger.info( + `Bundling Module Federation host for platform ${color.cyan( + args.platform, + )}`, + ); + + await commands.bundleFederatedHost([], commandConfig, args); + logger.info('Bundle artifacts available at ...'); + outro('Success 🎉.'); + }, + options: [ + ...commands.bundleFederatedHostOptions, + { + name: '--config-cmd [string]', + description: + '[Internal] A hack for Xcode build script pointing to wrong bundle command that recognizes this flag. Do not use.', + }, + ], + }); + + // Register the bundle-mf-remote command + api.registerCommand({ + name: 'bundle-mf-remote', + description: + 'Bundles a Module Federation remote, including its container entry and all exposed modules for consumption by host applications', + action: async (args: BundleFederatedRemoteArgs) => { + const commandConfig = { + root: api.getProjectRoot(), + platforms: api.getPlatforms(), + reactNativePath: api.getReactNativePath(), + ...pluginConfig, + }; + + logger.info( + `Bundling Module Federation remote for platform ${color.cyan( + args.platform, + )}`, + ); + + await commands.bundleFederatedRemote([], commandConfig, args); + logger.info('Bundle artifacts available at ...'); + outro('Success 🎉.'); + }, + options: commands.bundleFederatedRemoteOptions, + }); + + return { + name: '@module-federation/metro-plugin-rock', + description: 'Rock plugin for Module Federation with Metro', + }; + }; diff --git a/packages/metro-plugin-rock/tsconfig.build.json b/packages/metro-plugin-rock/tsconfig.build.json new file mode 100644 index 00000000000..67c581e8070 --- /dev/null +++ b/packages/metro-plugin-rock/tsconfig.build.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "sourceMap": false, + "declarationMap": false, + "moduleResolution": "bundler" + } +} diff --git a/packages/metro-plugin-rock/tsconfig.json b/packages/metro-plugin-rock/tsconfig.json new file mode 100644 index 00000000000..eff912bc399 --- /dev/null +++ b/packages/metro-plugin-rock/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "rootDir": "src", + "moduleResolution": "bundler" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00cafb115cf..6e13c22a0d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -848,9 +848,9 @@ importers: '@module-federation/metro': specifier: workspace:* version: link:../../packages/metro-core - '@module-federation/metro-plugin-rnef': + '@module-federation/metro-plugin-rock': specifier: workspace:* - version: link:../../packages/metro-plugin-rnef + version: link:../../packages/metro-plugin-rock '@module-federation/runtime': specifier: workspace:* version: link:../../packages/runtime @@ -869,18 +869,18 @@ importers: '@react-native/typescript-config': specifier: 0.80.0 version: 0.80.0 - '@rnef/cli': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/platform-android': - specifier: ^0.7.25 - version: 0.7.28 - '@rnef/platform-ios': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/plugin-metro': - specifier: ^0.7.25 - version: 0.7.28(@react-native/community-cli-plugin@0.80.0(@react-native-community/cli@19.1.2(typescript@5.0.4))) + '@rock-js/platform-android': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/platform-ios': + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) + '@rock-js/plugin-metro': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/provider-github': + specifier: ^0.13.0 + version: 0.13.0 '@types/jest': specifier: ^29.5.13 version: 29.5.13 @@ -908,6 +908,9 @@ importers: react-test-renderer: specifier: 19.1.0 version: 19.1.0(react@19.1.0) + rock: + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) typescript: specifier: 5.0.4 version: 5.0.4 @@ -936,9 +939,9 @@ importers: '@module-federation/metro': specifier: workspace:* version: link:../../packages/metro-core - '@module-federation/metro-plugin-rnef': + '@module-federation/metro-plugin-rock': specifier: workspace:* - version: link:../../packages/metro-plugin-rnef + version: link:../../packages/metro-plugin-rock '@module-federation/runtime': specifier: workspace:* version: link:../../packages/runtime @@ -957,18 +960,18 @@ importers: '@react-native/typescript-config': specifier: 0.80.0 version: 0.80.0 - '@rnef/cli': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/platform-android': - specifier: ^0.7.25 - version: 0.7.28 - '@rnef/platform-ios': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/plugin-metro': - specifier: ^0.7.25 - version: 0.7.28(@react-native/community-cli-plugin@0.80.0(@react-native-community/cli@19.1.2(typescript@5.0.4))) + '@rock-js/platform-android': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/platform-ios': + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) + '@rock-js/plugin-metro': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/provider-github': + specifier: ^0.13.0 + version: 0.13.0 '@types/jest': specifier: ^29.5.13 version: 29.5.13 @@ -996,6 +999,9 @@ importers: react-test-renderer: specifier: 19.1.0 version: 19.1.0(react@19.1.0) + rock: + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) serve: specifier: ^14.2.4 version: 14.2.5 @@ -1027,9 +1033,9 @@ importers: '@module-federation/metro': specifier: workspace:* version: link:../../packages/metro-core - '@module-federation/metro-plugin-rnef': + '@module-federation/metro-plugin-rock': specifier: workspace:* - version: link:../../packages/metro-plugin-rnef + version: link:../../packages/metro-plugin-rock '@module-federation/runtime': specifier: workspace:* version: link:../../packages/runtime @@ -1045,18 +1051,18 @@ importers: '@react-native/typescript-config': specifier: 0.80.0 version: 0.80.0 - '@rnef/cli': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/platform-android': - specifier: ^0.7.25 - version: 0.7.28 - '@rnef/platform-ios': - specifier: ^0.7.25 - version: 0.7.28(typescript@5.0.4) - '@rnef/plugin-metro': - specifier: ^0.7.25 - version: 0.7.28(@react-native/community-cli-plugin@0.80.0(@react-native-community/cli@19.1.2(typescript@5.0.4))) + '@rock-js/platform-android': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/platform-ios': + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) + '@rock-js/plugin-metro': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/provider-github': + specifier: ^0.13.0 + version: 0.13.0 '@types/jest': specifier: ^29.5.13 version: 29.5.13 @@ -1084,6 +1090,9 @@ importers: react-test-renderer: specifier: 19.1.0 version: 19.1.0(react@19.1.0) + rock: + specifier: ^0.13.0 + version: 0.13.0(typescript@5.0.4) serve: specifier: ^14.2.4 version: 14.2.5 @@ -3470,7 +3479,7 @@ importers: version: 0.80.0(@babel/core@7.29.0)(@react-native-community/cli@19.1.2(typescript@5.9.3))(@types/react@19.2.14)(react@19.1.0) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@20.19.5)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.9.3) typescript: specifier: ^5.8.3 version: 5.9.3 @@ -3514,6 +3523,33 @@ importers: specifier: ^5.8.3 version: 5.9.3 + packages/metro-plugin-rock: + devDependencies: + '@module-federation/metro': + specifier: workspace:* + version: link:../metro-core + '@rock-js/config': + specifier: ^0.13.0 + version: 0.13.0 + '@rock-js/tools': + specifier: ^0.13.0 + version: 0.13.0 + '@rslib/core': + specifier: ^0.10.0 + version: 0.10.6(@microsoft/api-extractor@7.57.7(@types/node@20.19.5))(typescript@5.9.3) + '@types/node': + specifier: ^20.0.0 + version: 20.19.5 + '@typescript-eslint/eslint-plugin': + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: 8.54.0 + version: 8.54.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3) + typescript: + specifier: ^5.8.3 + version: 5.9.3 + packages/modernjs: dependencies: '@modern-js/utils': @@ -5575,9 +5611,15 @@ packages: '@clack/core@0.4.2': resolution: {integrity: sha512-NYQfcEy8MWIxrT5Fj8nIVchfRFA26yYKJcvBS7WlUIlw2OmQOY9DhGGXMovyI5J5PpxrCPGkgUi207EBrjpBvg==} + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + '@clack/prompts@0.10.1': resolution: {integrity: sha512-Q0T02vx8ZM9XSv9/Yde0jTmmBQufZhPJfYAg2XrrrxWWaZgq1rr8nU8Hv710BQ1dhoP8rtY7YUdpGej2Qza/cw==} + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@clack/prompts@0.8.2': resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} @@ -10407,24 +10449,24 @@ packages: '@react-native-community/cli-clean@19.1.2': resolution: {integrity: sha512-LI/bTLtosbDyHtIs+HxlmHp+5Nbjz+IIEEqrBO2tUeA+ENX01YEnIgGIv4z7giNWkHSiqywjdOyYNqg27ydy2g==} - '@react-native-community/cli-config-android@18.0.1': - resolution: {integrity: sha512-1wzmGLfS7qgzm0ZfwX/f6Lat/af8/UYdjwtb3ap6RfKNclvIoap0wN6uBeiANmLfk0/BhoG8K1vKtIPwlU/V1A==} - '@react-native-community/cli-config-android@19.1.2': resolution: {integrity: sha512-IIhzhDUmT53RT45Qrxc/OfvkTD4U7IrfkfoIdKmBT6O0X0QaoegK4OE6aAuc86D2GXlD5rbVcPMSuN4TY8Hmlw==} - '@react-native-community/cli-config-apple@18.0.1': - resolution: {integrity: sha512-ybr1ZrOSd/Z+oCJ1qVSKVQauvneObTu3VjvYPhhrme7tUUSaYmd3iikaWonbKk5rVp+2WqOFR6Cy7XqVfwwG8A==} + '@react-native-community/cli-config-android@20.1.3': + resolution: {integrity: sha512-DNHDP+OWLyhKShGciBqPcxhxfp1Z/7GQcb4F+TGyCeKQAr+JdnUjRXN3X+YCU/v+g2kbYYyRJKlGabzkVvdrAw==} '@react-native-community/cli-config-apple@19.1.2': resolution: {integrity: sha512-91upuYMLgEtJE6foWQFgGDpT3ZDTc5bX6rMY5cJMqiAE5svgh1q0kbbpRuv/ptBYzcxLplL7wZWpA77TlJdm9A==} - '@react-native-community/cli-config@18.0.1': - resolution: {integrity: sha512-O4DDJVMx+DYfwEgF/6lB4hoI9sVjrYW6AlLqeJY/D2XH2e4yqK/Pr3SAi4sOMgvjvYZKzLHqIQVxx54v+LyMQA==} + '@react-native-community/cli-config-apple@20.1.3': + resolution: {integrity: sha512-QX9B83nAfCPs0KiaYz61kAEHWr9sttooxzRzNdQwvZTwnsIpvWOT9GvMMj/19OeXiQzMJBzZX0Pgt6+spiUsDQ==} '@react-native-community/cli-config@19.1.2': resolution: {integrity: sha512-o0cc6R6r9nY9MiLFeLIN797fBLWwKW9cee/NCm6nBBzPk/paro6HEbcXE02xnVzMb+nhQPrbPOzp3qE7WhtwRA==} + '@react-native-community/cli-config@20.1.3': + resolution: {integrity: sha512-n73nW0cG92oNF0r994pPqm0DjAShOm3F8LSffDYhJqNAno+h/csmv/37iL4NtSpmKIO8xqsG3uVTXz9X/hzNaQ==} + '@react-native-community/cli-doctor@19.1.2': resolution: {integrity: sha512-uUV/1QrWA1Cx7dqkTCcarqfya/7gBmKXd9BzVCEl6bzAn1jd1Q5UaZ+DmZgAoLVKlbAjpPTJTfqjD44aqUdjyA==} @@ -10437,24 +10479,24 @@ packages: '@react-native-community/cli-platform-ios@19.1.2': resolution: {integrity: sha512-rmLZjwpI+mV3bbd6FgR6yM/ekFNr4QM/Dgzmatkh8k94B5uGtw5Me4EKlY+MrqR3lIyjzqWtLoefcJxA1c9d2w==} - '@react-native-community/cli-server-api@18.0.1': - resolution: {integrity: sha512-ZRy2IjEM4ljP05bZcnXho0sCxVGI/9SkWkLuzXl+cRu/4I8vLRleihn2GJCopg82QHLLrajUCHhpDKE8NJWcRw==} - '@react-native-community/cli-server-api@19.1.2': resolution: {integrity: sha512-K6UIvtw6VtcKxCX+rJ5mKQYiqcSSRKODPQ2nbIeIxjjO5nDjDriGkFC/ypHHk38oZuJYOLbOySqnnCNkdEI4uQ==} - '@react-native-community/cli-tools@18.0.1': - resolution: {integrity: sha512-WxWFXwfYhHR2eYiB4lkHZVC/PmIkRWeVHBQKmn0h1mecr3GrHYO4BzW1jpD5Xt6XZ9jojQ9wE5xrCqXjiMSAIQ==} + '@react-native-community/cli-server-api@20.1.3': + resolution: {integrity: sha512-hsNsdUKZDd2T99OuNuiXz4VuvLa1UN0zcxefmPjXQgI0byrBLzzDr+o7p03sKuODSzKi2h+BMnUxiS07HACQLA==} '@react-native-community/cli-tools@19.1.2': resolution: {integrity: sha512-AsDuZu/7R/QX+vGpJIRK97v24X+zqkmwA9/uLRguLTHM175nUxb/byXmAKWuZylG2FAikVvf7EqV8MFGbwM7Wg==} - '@react-native-community/cli-types@18.0.1': - resolution: {integrity: sha512-pGxr/TSP9Xiw2+9TUn3OWLdcuI4+PJozPsCYZVTGWJ96X6Pv7YX/rNy4emIDkaWaFZ7IWgWXUA725KhEINSf3Q==} + '@react-native-community/cli-tools@20.1.3': + resolution: {integrity: sha512-EAn0vPCMxtHhfWk2UwLmSUfPfLUnFgC7NjiVJVTKJyVk5qGnkPfoT8te/1IUXFTysUB0F0RIi+NgDB4usFOLeA==} '@react-native-community/cli-types@19.1.2': resolution: {integrity: sha512-Ze6fi6jE+JPvMlISWbZ/eCPOkRuuEs1SX4rJGWOXPcDzEVF6gs1ePsAjdzQ3RJYRMqQ49vo6iGiOZs//z5kuVw==} + '@react-native-community/cli-types@20.1.3': + resolution: {integrity: sha512-IdAcegf0pH1hVraxWTG1ACLkYC0LDQfqtaEf42ESyLIF3Xap70JzL/9tAlxw7lSCPZPFWhrcgU0TBc4SkC/ecw==} + '@react-native-community/cli@19.1.2': resolution: {integrity: sha512-b28TLqODMgQRx6f4gbHoHYpnKyFbWzJkIk3+Ggpad/at493KfGQ+WvKg1sts/st8mxzmbk0T6lCc/9A3QoFKkQ==} engines: {node: '>=18'} @@ -10489,18 +10531,10 @@ packages: '@react-native-community/cli': optional: true - '@react-native/debugger-frontend@0.79.7': - resolution: {integrity: sha512-91JVlhR6hDuJXcWTpCwcdEPlUQf+TckNG8BYfR4UkUOaZ87XahJv4EyWBeyfd8lwB/mh6nDJqbR6UiXwt5kbog==} - engines: {node: '>=18'} - '@react-native/debugger-frontend@0.80.0': resolution: {integrity: sha512-lpu9Z3xtKUaKFvEcm5HSgo1KGfkDa/W3oZHn22Zy0WQ9MiOu2/ar1txgd1wjkoNiK/NethKcRdCN7mqnc6y2mA==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.79.7': - resolution: {integrity: sha512-KHGPa7xwnKKWrzMnV1cHc8J56co4tFevmRvbjEbUCqkGS0s/l8ZxAGMR222/6YxZV3Eg1J3ywKQ8nHzTsTz5jw==} - engines: {node: '>=18'} - '@react-native/dev-middleware@0.80.0': resolution: {integrity: sha512-lLyTnJ687A5jF3fn8yR/undlCis3FG+N/apQ+Q0Lcl+GV6FsZs0U5H28YmL6lZtjOj4TLek6uGPMPmZasHx7cQ==} engines: {node: '>=18'} @@ -10604,33 +10638,36 @@ packages: resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} engines: {node: '>=14.0.0'} - '@rnef/cli@0.7.28': - resolution: {integrity: sha512-9qc2L1m+RZB3+hsbfFxtqOP3En4klAB5k9flPv9F4rlPNUvg+54Z9DyEZsVL+n29BFFZz8tkVDoX6vifE6Gbig==} - hasBin: true - '@rnef/config@0.7.28': resolution: {integrity: sha512-7AdbAYbP4qgWxR4WmxXo+s+QrWj2DK8fejnGStRx0kN7oJNB7Qn3bvciUtNiBB5YuObxwt3ruMAlspbSA3spZQ==} - '@rnef/platform-android@0.7.28': - resolution: {integrity: sha512-QP8pocAPSvVrewnU+VN3MdYMPaonrFY3wyh9dFGe4QFOGNd/OYRHnIt5reHkthv+zmCY7MjsNoOz33C3O/qsjw==} - - '@rnef/platform-apple-helpers@0.7.28': - resolution: {integrity: sha512-isbYgnmkI0FOuDQ9mREQiUegNSJAd/wAdgk/f0T9EsK62WqQn/Z3nTB3tpn/P47dDHtDItUbngxsbahyl8k2Rg==} - - '@rnef/platform-ios@0.7.28': - resolution: {integrity: sha512-3NgIvMSvq/MD3wUFmz6IvKyhiVLVfBS0+YfjbGvamp0XsxGrvBlVRYnXzbiilOea0X+innm+l1G3Nwu+HeweqQ==} - - '@rnef/plugin-metro@0.7.28': - resolution: {integrity: sha512-GoWIBf0sW+0ExmBnvKOxenRyhC/542a5GXp0FlUA+D5fVu6K96MEy5BeeE1vsC8Quh4Fhhn2gBJMhNJ7j4STIQ==} - peerDependencies: - '@react-native/community-cli-plugin': '*' - '@rnef/provider-github@0.7.28': resolution: {integrity: sha512-VuFOMBmbUdeSKbtRS1y7gqfX5u54aYuArxaL0Pz8lKHRwulK1AdDt3k+J7yoTjkQwGcNPwzJlTFZLXVSXZMpWw==} '@rnef/tools@0.7.28': resolution: {integrity: sha512-a4MumqUhmCRTdBZZHMHWR6dvy2JwNCHYYmBY2Jif9aj9F7pBrYfqMDCkwbVSZkYqu5vgBHAKzdRH8vCzKWLflw==} + '@rock-js/config@0.13.0': + resolution: {integrity: sha512-yzmk0R+agdVVWkVXKR1lfATpNQyI1snIUIVYgjcsm4LvTIsxunruhFxpWW+fxhlP4hqnJ91IzhE1/HExgF187w==} + + '@rock-js/platform-android@0.13.0': + resolution: {integrity: sha512-+HEy78Yxpx+iBQaCq5NE+cvNehko5FjKARnIfCDKmFekGXAgX9HEtkOhQPmtSxEhAE0a32T4n33quI8pitck2g==} + + '@rock-js/platform-apple-helpers@0.13.0': + resolution: {integrity: sha512-QDYNdmyVE4QsKpDP9KauQO+GIwo9vstb/tF9ZkTjSpg1jl8tebVHrTO8eFc8OKlZK4JQHEyuHL7NAPdbDrqnGg==} + + '@rock-js/platform-ios@0.13.0': + resolution: {integrity: sha512-56pZ0RM0vEbhAJ+ugcbF/4CQYZg6er+CQI4DPtVgbYxdySO2Dcq2SbNUnEG6cqFS+5hOlkYJXT6BGVUEcHhhuQ==} + + '@rock-js/plugin-metro@0.13.0': + resolution: {integrity: sha512-LH3BCIAU4ZugUFHyAujKjuWeULxmtQ2KraO+knQTmLrLmd2yzgmbPG0a2jwb21CxgFUR1MjzG8AB65dOjI7dJQ==} + + '@rock-js/provider-github@0.13.0': + resolution: {integrity: sha512-D38pEsgnr2GOlbOT/9Fey9zYyUej5aF7keRWBOSCvPpGMA4xLmdjUdXuvikv+fWFkN3i0xo1mglncxIOOBrbWA==} + + '@rock-js/tools@0.13.0': + resolution: {integrity: sha512-HtBP+sD2iyiXbZwlAC7aXKUfLHM5Gj5PBa+v3bpDtvvqXkE8MbIq2XjLvsRo0wY/RR0kJjBAH198qr0owbY8Fw==} + '@rolldown/binding-android-arm64@1.0.0-rc.3': resolution: {integrity: sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -17637,10 +17674,17 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-xml-builder@1.1.4: + resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} + fast-xml-parser@4.5.4: resolution: {integrity: sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==} hasBin: true + fast-xml-parser@5.5.12: + resolution: {integrity: sha512-nUR0q8PPfoA/svPM43Gup7vLOZWppaNrYgGmrVqrAVJa7cOH4hMG6FX9M4mQ8dZA1/ObGZHzES7Ed88hxEBSJg==} + hasBin: true + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -17977,6 +18021,10 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} + fs-fingerprint@0.11.0: + resolution: {integrity: sha512-EpEtmn1T9bLxxf+506gVdpehs6pAIFAM6UCDtT9/J7tfLXg8FPn+3jmuVnMjjRFshJohR2lb2TZGwuZAhIOcKg==} + engines: {node: '>=20.0.0'} + fs-minipass@1.2.7: resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} @@ -18424,6 +18472,9 @@ packages: hermes-estree@0.29.1: resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} + hermes-estree@0.33.3: + resolution: {integrity: sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==} + hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} @@ -18433,6 +18484,9 @@ packages: hermes-parser@0.29.1: resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} + hermes-parser@0.33.3: + resolution: {integrity: sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -20161,60 +20215,118 @@ packages: resolution: {integrity: sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==} engines: {node: '>=18.18'} + metro-babel-transformer@0.83.5: + resolution: {integrity: sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==} + engines: {node: '>=20.19.4'} + metro-cache-key@0.82.5: resolution: {integrity: sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==} engines: {node: '>=18.18'} + metro-cache-key@0.83.5: + resolution: {integrity: sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==} + engines: {node: '>=20.19.4'} + metro-cache@0.82.5: resolution: {integrity: sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==} engines: {node: '>=18.18'} + metro-cache@0.83.5: + resolution: {integrity: sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==} + engines: {node: '>=20.19.4'} + metro-config@0.82.5: resolution: {integrity: sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==} engines: {node: '>=18.18'} + metro-config@0.83.5: + resolution: {integrity: sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==} + engines: {node: '>=20.19.4'} + metro-core@0.82.5: resolution: {integrity: sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==} engines: {node: '>=18.18'} + metro-core@0.83.5: + resolution: {integrity: sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==} + engines: {node: '>=20.19.4'} + metro-file-map@0.82.5: resolution: {integrity: sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==} engines: {node: '>=18.18'} + metro-file-map@0.83.5: + resolution: {integrity: sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==} + engines: {node: '>=20.19.4'} + metro-minify-terser@0.82.5: resolution: {integrity: sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==} engines: {node: '>=18.18'} + metro-minify-terser@0.83.5: + resolution: {integrity: sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==} + engines: {node: '>=20.19.4'} + metro-resolver@0.82.5: resolution: {integrity: sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==} engines: {node: '>=18.18'} + metro-resolver@0.83.5: + resolution: {integrity: sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==} + engines: {node: '>=20.19.4'} + metro-runtime@0.82.5: resolution: {integrity: sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==} engines: {node: '>=18.18'} + metro-runtime@0.83.5: + resolution: {integrity: sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==} + engines: {node: '>=20.19.4'} + metro-source-map@0.82.5: resolution: {integrity: sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==} engines: {node: '>=18.18'} + metro-source-map@0.83.5: + resolution: {integrity: sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==} + engines: {node: '>=20.19.4'} + metro-symbolicate@0.82.5: resolution: {integrity: sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==} engines: {node: '>=18.18'} hasBin: true + metro-symbolicate@0.83.5: + resolution: {integrity: sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==} + engines: {node: '>=20.19.4'} + hasBin: true + metro-transform-plugins@0.82.5: resolution: {integrity: sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==} engines: {node: '>=18.18'} + metro-transform-plugins@0.83.5: + resolution: {integrity: sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==} + engines: {node: '>=20.19.4'} + metro-transform-worker@0.82.5: resolution: {integrity: sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==} engines: {node: '>=18.18'} + metro-transform-worker@0.83.5: + resolution: {integrity: sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==} + engines: {node: '>=20.19.4'} + metro@0.82.5: resolution: {integrity: sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==} engines: {node: '>=18.18'} hasBin: true + metro@0.83.5: + resolution: {integrity: sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==} + engines: {node: '>=20.19.4'} + hasBin: true + micro@9.3.5-canary.3: resolution: {integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==} engines: {node: '>= 8.0.0'} @@ -20882,6 +20994,10 @@ packages: resolution: {integrity: sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==} engines: {node: '>=18.18'} + ob1@0.83.5: + resolution: {integrity: sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==} + engines: {node: '>=20.19.4'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -21219,6 +21335,10 @@ packages: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -23450,6 +23570,10 @@ packages: resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} engines: {node: '>= 0.8'} + rock@0.13.0: + resolution: {integrity: sha512-UbUIfENbQtkQfGZyviZzXB9tPcTCWwAqJ8ZhwOXH9PJKp2ivGC7fTcumZS/Ls58pICBmwTO/kWgZLkzD+7jKtQ==} + hasBin: true + rolldown-plugin-dts@0.22.5: resolution: {integrity: sha512-M/HXfM4cboo+jONx9Z0X+CUf3B5tCi7ni+kR5fUW50Fp9AlZk0oVLesibGWgCXDKFp5lpgQ9yhKoImUFjl3VZw==} engines: {node: '>=20.19.0'} @@ -24373,6 +24497,9 @@ packages: strict-event-emitter@0.4.6: resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} + strict-url-sanitise@0.0.1: + resolution: {integrity: sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -24502,6 +24629,9 @@ packages: strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + strnum@2.2.3: + resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} + strtok3@10.3.4: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} @@ -26302,18 +26432,6 @@ packages: utf-8-validate: optional: true - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.20.0: resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} @@ -28061,12 +28179,23 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@clack/prompts@0.10.1': dependencies: '@clack/core': 0.4.2 picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@clack/prompts@0.8.2': dependencies: '@clack/core': 0.3.5 @@ -31447,7 +31576,7 @@ snapshots: http-compression: 1.0.6 minimatch: 3.1.5 path-to-regexp: 6.3.0 - ws: 8.19.0 + ws: 8.20.0 optionalDependencies: ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.6.0)(typescript@5.9.3) tsconfig-paths: 4.2.0 @@ -31473,7 +31602,7 @@ snapshots: http-compression: 1.0.6 minimatch: 3.1.5 path-to-regexp: 6.3.0 - ws: 8.19.0 + ws: 8.20.0 optionalDependencies: ts-node: 10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4) tsconfig-paths: 3.14.2 @@ -31499,7 +31628,7 @@ snapshots: http-compression: 1.0.6 minimatch: 3.1.5 path-to-regexp: 6.3.0 - ws: 8.19.0 + ws: 8.20.0 optionalDependencies: ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4) tsconfig-paths: 4.2.0 @@ -35096,13 +35225,6 @@ snapshots: execa: 5.1.1 fast-glob: 3.3.3 - '@react-native-community/cli-config-android@18.0.1': - dependencies: - '@react-native-community/cli-tools': 18.0.1 - chalk: 4.1.2 - fast-glob: 3.3.3 - fast-xml-parser: 4.5.4 - '@react-native-community/cli-config-android@19.1.2': dependencies: '@react-native-community/cli-tools': 19.1.2 @@ -35110,12 +35232,12 @@ snapshots: fast-glob: 3.3.3 fast-xml-parser: 4.5.4 - '@react-native-community/cli-config-apple@18.0.1': + '@react-native-community/cli-config-android@20.1.3': dependencies: - '@react-native-community/cli-tools': 18.0.1 - chalk: 4.1.2 - execa: 5.1.1 + '@react-native-community/cli-tools': 20.1.3 fast-glob: 3.3.3 + fast-xml-parser: 5.5.12 + picocolors: 1.1.1 '@react-native-community/cli-config-apple@19.1.2': dependencies: @@ -35124,16 +35246,12 @@ snapshots: execa: 5.1.1 fast-glob: 3.3.3 - '@react-native-community/cli-config@18.0.1(typescript@5.0.4)': + '@react-native-community/cli-config-apple@20.1.3': dependencies: - '@react-native-community/cli-tools': 18.0.1 - chalk: 4.1.2 - cosmiconfig: 9.0.1(typescript@5.0.4) - deepmerge: 4.3.1 + '@react-native-community/cli-tools': 20.1.3 + execa: 5.1.1 fast-glob: 3.3.3 - joi: 17.13.3 - transitivePeerDependencies: - - typescript + picocolors: 1.1.1 '@react-native-community/cli-config@19.1.2(typescript@5.0.4)': dependencies: @@ -35158,6 +35276,17 @@ snapshots: - typescript optional: true + '@react-native-community/cli-config@20.1.3(typescript@5.0.4)': + dependencies: + '@react-native-community/cli-tools': 20.1.3 + cosmiconfig: 9.0.1(typescript@5.0.4) + deepmerge: 4.3.1 + fast-glob: 3.3.3 + joi: 17.13.3 + picocolors: 1.1.1 + transitivePeerDependencies: + - typescript + '@react-native-community/cli-doctor@19.1.2(typescript@5.0.4)': dependencies: '@react-native-community/cli-config': 19.1.2(typescript@5.0.4) @@ -35219,9 +35348,9 @@ snapshots: dependencies: '@react-native-community/cli-platform-apple': 19.1.2 - '@react-native-community/cli-server-api@18.0.1': + '@react-native-community/cli-server-api@19.1.2': dependencies: - '@react-native-community/cli-tools': 18.0.1 + '@react-native-community/cli-tools': 19.1.2 body-parser: 1.20.4 compression: 1.8.1 connect: 3.7.0 @@ -35236,24 +35365,25 @@ snapshots: - supports-color - utf-8-validate - '@react-native-community/cli-server-api@19.1.2': + '@react-native-community/cli-server-api@20.1.3': dependencies: - '@react-native-community/cli-tools': 19.1.2 - body-parser: 1.20.4 + '@react-native-community/cli-tools': 20.1.3 + body-parser: 2.2.2 compression: 1.8.1 connect: 3.7.0 errorhandler: 1.5.2 nocache: 3.0.4 open: 6.4.0 - pretty-format: 26.6.2 + pretty-format: 29.7.0 serve-static: 1.16.3 + strict-url-sanitise: 0.0.1 ws: 6.2.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@react-native-community/cli-tools@18.0.1': + '@react-native-community/cli-tools@19.1.2': dependencies: '@vscode/sudo-prompt': 9.3.2 appdirsjs: 1.2.7 @@ -35266,24 +35396,24 @@ snapshots: prompts: 2.4.2 semver: 7.6.3 - '@react-native-community/cli-tools@19.1.2': + '@react-native-community/cli-tools@20.1.3': dependencies: '@vscode/sudo-prompt': 9.3.2 appdirsjs: 1.2.7 - chalk: 4.1.2 execa: 5.1.1 find-up: 5.0.0 launch-editor: 2.13.1 mime: 2.6.0 ora: 5.4.1 + picocolors: 1.1.1 prompts: 2.4.2 semver: 7.6.3 - '@react-native-community/cli-types@18.0.1': + '@react-native-community/cli-types@19.1.2': dependencies: joi: 17.13.3 - '@react-native-community/cli-types@19.1.2': + '@react-native-community/cli-types@20.1.3': dependencies: joi: 17.13.3 @@ -35437,28 +35567,8 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.79.7': {} - '@react-native/debugger-frontend@0.80.0': {} - '@react-native/dev-middleware@0.79.7': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.79.7 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.2.0 - connect: 3.7.0 - debug: 2.6.9 - invariant: 2.2.4 - nullthrows: 1.1.1 - open: 7.4.2 - serve-static: 1.16.3 - ws: 6.2.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@react-native/dev-middleware@0.80.0': dependencies: '@isaacs/ttlcache': 1.4.1 @@ -35656,19 +35766,6 @@ snapshots: '@remix-run/router@1.23.2': {} - '@rnef/cli@0.7.28(typescript@5.0.4)': - dependencies: - '@react-native-community/cli-config': 18.0.1(typescript@5.0.4) - '@rnef/config': 0.7.28 - '@rnef/tools': 0.7.28 - adm-zip: 0.5.16 - commander: 12.1.0 - tar: 7.5.11 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - typescript - '@rnef/config@0.7.28': dependencies: '@babel/code-frame': 7.29.0 @@ -35679,80 +35776,98 @@ snapshots: transitivePeerDependencies: - supports-color - '@rnef/platform-android@0.7.28': + '@rnef/provider-github@0.7.28': dependencies: - '@react-native-community/cli-config-android': 18.0.1 '@rnef/tools': 0.7.28 - adm-zip: 0.5.16 + ts-regex-builder: 1.8.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@rnef/platform-apple-helpers@0.7.28(typescript@5.0.4)': + '@rnef/tools@0.7.28': dependencies: - '@react-native-community/cli-config': 18.0.1(typescript@5.0.4) - '@react-native-community/cli-config-apple': 18.0.1 - '@rnef/tools': 0.7.28 + '@clack/prompts': 0.10.1 + '@expo/fingerprint': 0.11.11 '@types/adm-zip': 0.5.8 adm-zip: 0.5.16 + appdirsjs: 1.2.7 fast-glob: 3.3.3 - fast-xml-parser: 4.5.4 + is-unicode-supported: 2.1.0 + nano-spawn: 0.2.1 + picocolors: 1.1.1 + string-argv: 0.3.2 + tar: 7.5.11 tslib: 2.8.1 transitivePeerDependencies: - supports-color + + '@rock-js/config@0.13.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@rock-js/provider-github': 0.13.0 + '@rock-js/tools': 0.13.0 + joi: 17.13.3 + tslib: 2.8.1 + + '@rock-js/platform-android@0.13.0': + dependencies: + '@react-native-community/cli-config-android': 20.1.3 + '@rock-js/tools': 0.13.0 + tslib: 2.8.1 + + '@rock-js/platform-apple-helpers@0.13.0(typescript@5.0.4)': + dependencies: + '@react-native-community/cli-config': 20.1.3(typescript@5.0.4) + '@react-native-community/cli-config-apple': 20.1.3 + '@rock-js/tools': 0.13.0 + adm-zip: 0.5.16 + fast-xml-parser: 4.5.4 + tslib: 2.8.1 + transitivePeerDependencies: - typescript - '@rnef/platform-ios@0.7.28(typescript@5.0.4)': + '@rock-js/platform-ios@0.13.0(typescript@5.0.4)': dependencies: - '@react-native-community/cli-config-apple': 18.0.1 - '@react-native-community/cli-types': 18.0.1 - '@rnef/platform-apple-helpers': 0.7.28(typescript@5.0.4) - '@rnef/tools': 0.7.28 + '@react-native-community/cli-config-apple': 20.1.3 + '@react-native-community/cli-types': 20.1.3 + '@rock-js/platform-apple-helpers': 0.13.0(typescript@5.0.4) + '@rock-js/tools': 0.13.0 tslib: 2.8.1 transitivePeerDependencies: - - supports-color - typescript - '@rnef/plugin-metro@0.7.28(@react-native/community-cli-plugin@0.80.0(@react-native-community/cli@19.1.2(typescript@5.0.4)))': + '@rock-js/plugin-metro@0.13.0': dependencies: - '@react-native-community/cli-server-api': 18.0.1 - '@react-native/community-cli-plugin': 0.80.0(@react-native-community/cli@19.1.2(typescript@5.0.4)) - '@react-native/dev-middleware': 0.79.7 - '@rnef/tools': 0.7.28 - metro: 0.82.5 - metro-config: 0.82.5 - metro-core: 0.82.5 - metro-resolver: 0.82.5 + '@react-native-community/cli-server-api': 20.1.3 + '@rock-js/tools': 0.13.0 + metro: 0.83.5 + metro-config: 0.83.5 + metro-core: 0.83.5 + metro-resolver: 0.83.5 tslib: 2.8.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@rnef/provider-github@0.7.28': + '@rock-js/provider-github@0.13.0': dependencies: - '@rnef/tools': 0.7.28 + '@rock-js/tools': 0.13.0 ts-regex-builder: 1.8.2 tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - '@rnef/tools@0.7.28': + '@rock-js/tools@0.13.0': dependencies: - '@clack/prompts': 0.10.1 - '@expo/fingerprint': 0.11.11 - '@types/adm-zip': 0.5.8 + '@clack/prompts': 0.11.0 adm-zip: 0.5.16 appdirsjs: 1.2.7 - fast-glob: 3.3.3 + fs-fingerprint: 0.11.0 is-unicode-supported: 2.1.0 nano-spawn: 0.2.1 picocolors: 1.1.1 string-argv: 0.3.2 tar: 7.5.11 tslib: 2.8.1 - transitivePeerDependencies: - - supports-color '@rolldown/binding-android-arm64@1.0.0-rc.3': optional: true @@ -39698,8 +39813,8 @@ snapshots: '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: @@ -39707,8 +39822,8 @@ snapshots: '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: @@ -45721,10 +45836,20 @@ snapshots: fast-uri@3.1.0: {} + fast-xml-builder@1.1.4: + dependencies: + path-expression-matcher: 1.5.0 + fast-xml-parser@4.5.4: dependencies: strnum: 1.1.2 + fast-xml-parser@5.5.12: + dependencies: + fast-xml-builder: 1.1.4 + path-expression-matcher: 1.5.0 + strnum: 2.2.3 + fastest-levenshtein@1.0.16: {} fastq@1.20.1: @@ -46111,6 +46236,11 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fs-fingerprint@0.11.0: + dependencies: + p-limit: 7.2.0 + tinyglobby: 0.2.15 + fs-minipass@1.2.7: dependencies: minipass: 2.9.0 @@ -46734,6 +46864,8 @@ snapshots: hermes-estree@0.29.1: {} + hermes-estree@0.33.3: {} + hermes-parser@0.25.1: dependencies: hermes-estree: 0.25.1 @@ -46746,6 +46878,10 @@ snapshots: dependencies: hermes-estree: 0.29.1 + hermes-parser@0.33.3: + dependencies: + hermes-estree: 0.33.3 + history@4.10.1: dependencies: '@babel/runtime': 7.28.2 @@ -49132,10 +49268,23 @@ snapshots: transitivePeerDependencies: - supports-color + metro-babel-transformer@0.83.5: + dependencies: + '@babel/core': 7.29.0 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.33.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + metro-cache-key@0.82.5: dependencies: flow-enums-runtime: 0.0.6 + metro-cache-key@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + metro-cache@0.82.5: dependencies: exponential-backoff: 3.1.3 @@ -49145,6 +49294,15 @@ snapshots: transitivePeerDependencies: - supports-color + metro-cache@0.83.5: + dependencies: + exponential-backoff: 3.1.3 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.83.5 + transitivePeerDependencies: + - supports-color + metro-config@0.82.5: dependencies: connect: 3.7.0 @@ -49160,12 +49318,33 @@ snapshots: - supports-color - utf-8-validate + metro-config@0.83.5: + dependencies: + connect: 3.7.0 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.83.5 + metro-cache: 0.83.5 + metro-core: 0.83.5 + metro-runtime: 0.83.5 + yaml: 2.8.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro-core@0.82.5: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.82.5 + metro-core@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.83.5 + metro-file-map@0.82.5: dependencies: debug: 4.4.3(supports-color@8.1.1) @@ -49180,20 +49359,48 @@ snapshots: transitivePeerDependencies: - supports-color + metro-file-map@0.83.5: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + metro-minify-terser@0.82.5: dependencies: flow-enums-runtime: 0.0.6 terser: 5.46.1 + metro-minify-terser@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.46.1 + metro-resolver@0.82.5: dependencies: flow-enums-runtime: 0.0.6 + metro-resolver@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + metro-runtime@0.82.5: dependencies: '@babel/runtime': 7.28.2 flow-enums-runtime: 0.0.6 + metro-runtime@0.83.5: + dependencies: + '@babel/runtime': 7.28.2 + flow-enums-runtime: 0.0.6 + metro-source-map@0.82.5: dependencies: '@babel/traverse': 7.29.0 @@ -49209,6 +49416,20 @@ snapshots: transitivePeerDependencies: - supports-color + metro-source-map@0.83.5: + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.83.5 + nullthrows: 1.1.1 + ob1: 0.83.5 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-symbolicate@0.82.5: dependencies: flow-enums-runtime: 0.0.6 @@ -49220,6 +49441,17 @@ snapshots: transitivePeerDependencies: - supports-color + metro-symbolicate@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.83.5 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-transform-plugins@0.82.5: dependencies: '@babel/core': 7.29.0 @@ -49231,6 +49463,17 @@ snapshots: transitivePeerDependencies: - supports-color + metro-transform-plugins@0.83.5: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + metro-transform-worker@0.82.5: dependencies: '@babel/core': 7.29.0 @@ -49251,6 +49494,26 @@ snapshots: - supports-color - utf-8-validate + metro-transform-worker@0.83.5: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + metro: 0.83.5 + metro-babel-transformer: 0.83.5 + metro-cache: 0.83.5 + metro-cache-key: 0.83.5 + metro-minify-terser: 0.83.5 + metro-source-map: 0.83.5 + metro-transform-plugins: 0.83.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro@0.82.5: dependencies: '@babel/code-frame': 7.29.0 @@ -49298,6 +49561,53 @@ snapshots: - supports-color - utf-8-validate + metro@0.83.5: + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + accepts: 2.0.0 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3(supports-color@8.1.1) + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.33.3 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.83.5 + metro-cache: 0.83.5 + metro-cache-key: 0.83.5 + metro-config: 0.83.5 + metro-core: 0.83.5 + metro-file-map: 0.83.5 + metro-resolver: 0.83.5 + metro-runtime: 0.83.5 + metro-source-map: 0.83.5 + metro-symbolicate: 0.83.5 + metro-transform-plugins: 0.83.5 + metro-transform-worker: 0.83.5 + mime-types: 3.0.2 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + micro@9.3.5-canary.3: dependencies: arg: 4.1.0 @@ -50283,6 +50593,10 @@ snapshots: dependencies: flow-enums-runtime: 0.0.6 + ob1@0.83.5: + dependencies: + flow-enums-runtime: 0.0.6 + object-assign@4.1.1: {} object-copy@0.1.0: @@ -50439,7 +50753,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -50652,6 +50966,8 @@ snapshots: path-exists@5.0.0: {} + path-expression-matcher@1.5.0: {} + path-is-absolute@1.0.1: {} path-is-inside@1.0.2: {} @@ -54302,6 +54618,18 @@ snapshots: hash-base: 3.1.2 inherits: 2.0.4 + rock@0.13.0(typescript@5.0.4): + dependencies: + '@react-native-community/cli-config': 20.1.3(typescript@5.0.4) + '@rock-js/config': 0.13.0 + '@rock-js/tools': 0.13.0 + adm-zip: 0.5.16 + commander: 12.1.0 + tar: 7.5.11 + tslib: 2.8.1 + transitivePeerDependencies: + - typescript + rolldown-plugin-dts@0.22.5(rolldown@1.0.0-rc.3)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)): dependencies: '@babel/generator': 8.0.0-rc.2 @@ -55428,6 +55756,8 @@ snapshots: strict-event-emitter@0.4.6: {} + strict-url-sanitise@0.0.1: {} + string-argv@0.3.2: {} string-convert@0.2.1: {} @@ -55575,6 +55905,8 @@ snapshots: strnum@1.1.2: {} + strnum@2.2.3: {} + strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 @@ -56565,26 +56897,6 @@ snapshots: optionalDependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.13) - ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@20.19.5)(typescript@5.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.19.5 - acorn: 8.16.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.10(@swc/helpers@0.5.17) - ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@22.19.15)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -58714,10 +59026,7 @@ snapshots: ws@8.18.0: {} - ws@8.19.0: {} - - ws@8.20.0: - optional: true + ws@8.20.0: {} wsl-utils@0.1.0: dependencies: diff --git a/tools/scripts/run-metro-e2e.mjs b/tools/scripts/run-metro-e2e.mjs index e52409145e3..b37c067df5b 100644 --- a/tools/scripts/run-metro-e2e.mjs +++ b/tools/scripts/run-metro-e2e.mjs @@ -48,7 +48,7 @@ async function main() { `[metro-e2e] Starting ${options.platform} e2e for "${options.appName}"`, ); - await configureRnefCacheAuth(options); + await configureRockCacheAuth(options); await runCommand('pnpm', [ '--filter', @@ -142,14 +142,14 @@ function parseArgs(argv) { const result = { platform: null, appName: null, - skipRnefCacheAuth: false, + skipRockCacheAuth: false, skipOnMissingPrereqs: false, }; for (let i = 0; i < argv.length; i += 1) { const arg = argv[i]; - if (arg === '--skip-rnef-cache-auth') { - result.skipRnefCacheAuth = true; + if (arg === '--skip-rock-cache-auth') { + result.skipRockCacheAuth = true; continue; } if (arg === '--skip-on-missing-prereqs') { @@ -247,24 +247,24 @@ async function hasWritableMaestroHome() { } } -async function configureRnefCacheAuth(options) { - if (options.skipRnefCacheAuth) { - console.log('[metro-e2e] Skipping RNEF cache auth configuration.'); +async function configureRockCacheAuth(options) { + if (options.skipRockCacheAuth) { + console.log('[metro-e2e] Skipping Rock cache auth configuration.'); return; } const githubToken = process.env.GITHUB_TOKEN?.trim(); if (!githubToken) { console.log( - '[metro-e2e] GITHUB_TOKEN not set; skipping RNEF cache auth configuration.', + '[metro-e2e] GITHUB_TOKEN not set; skipping Rock cache auth configuration.', ); return; } - const rnefPath = join('apps', `metro-${options.appName}`, '.rnef', 'cache'); - await mkdir(rnefPath, { recursive: true }); + const rockPath = join('apps', `metro-${options.appName}`, '.rock', 'cache'); + await mkdir(rockPath, { recursive: true }); await writeFile( - join(rnefPath, 'project.json'), + join(rockPath, 'project.json'), JSON.stringify({ githubToken }), 'utf8', );