mirror of
https://github.com/selfxyz/self.git
synced 2026-01-10 15:18:18 -05:00
[SELF-676] feat: upgrade React Native from 0.75.4 to 0.76.9 (#943)
* chore: upgrade build tooling to Node 22 and AGP 8.6 * chore: upgrade react-native to 0.76.9 * update lock files and formatting * fix path * fix: handle hermes-engine cache mismatch in CI after React Native upgrade - Add fallback logic to run 'pod update hermes-engine' when pod install fails - This resolves CocoaPods cache issues that occur after React Native version upgrades - Fixes CI pipeline failures on codex/update-core-tooling-for-react-native-upgrade branch * fix: improve hermes-engine cache handling in CI - Preemptively clear CocoaPods cache before pod install - This prevents dependency analysis failures that occur when cached podspecs conflict - Addresses the root cause: cache conflicts during 'Analyzing dependencies' phase - Keeps fallback logic for additional safety * fix: handle hermes-engine cache in mobile-bundle-analysis workflow - Add pod-install-with-cache-fix.sh script to handle hermes-engine cache conflicts - Update install-app:setup script to use the new cache fix approach - This fixes the mobile-bundle-analysis.yml workflow failures after React Native upgrade - Proactively clears CocoaPods cache and has fallback for hermes-engine updates * formatting * fix: robust hermes-engine cache handling in CI workflows - Apply comprehensive cache clearing to mobile-ci.yml and mobile-e2e.yml - Pre-emptively run 'pod update hermes-engine' before pod install - Clear multiple cache locations to handle CI environment differences - This prevents 'hermes-engine differs from Pods/Local Podspecs' errors - Fixes all workflows affected by React Native 0.76.9 upgrade cache issues * fixes * clean up * update lock files * fix tests * sort * fixes * fix ci * fix deployment target * android fixes * upgrade fix * fixes * fix: streamline mobile CI build and caching (#946) * fix: streamline mobile CI build and caching * Enable mobile E2E tests on codex/fix-mobile-ci-workflow-errors branch * test * simplify and fix path * workflow fixes * fix loading on 0.76.9 * clean up unnecessary comments * fix readme * finalize upgrade to 0.76.9 * fix android build and upgrade * fix bundler caching * download cli to fix "yarn start" issues * fix cli build erorr * fix script path * better path * abstract build step to prevent race condition * fixes * better cache * fix corepack build error * update lock * update lock * add yarn cache to workflows * fix test building * ci caching improvements * fix common type check * fix common ci * better mobile sdk alpha building logic * chore: speed up mobile e2e workflow (#962) * chore: speed up mobile e2e workflow * chore: disable android e2e job * chore: speed up ios build * fix: bundle js for ios debug build * fix e2e
This commit is contained in:
4
.github/workflows/circuits-build.yml
vendored
4
.github/workflows/circuits-build.yml
vendored
@@ -14,6 +14,10 @@ on:
|
||||
- ".github/workflows/artifacts.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: circuits-build-${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ["self-hosted", "selfxyz-org", "ubuntu-22-04", "128ram"]
|
||||
|
||||
9
.github/workflows/circuits.yml
vendored
9
.github/workflows/circuits.yml
vendored
@@ -115,6 +115,15 @@ jobs:
|
||||
- name: Print Circom version
|
||||
run: circom --version
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
circuits/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Yarn dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
with:
|
||||
|
||||
66
.github/workflows/common-ci.yml
vendored
66
.github/workflows/common-ci.yml
vendored
@@ -9,15 +9,25 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
common/node_modules
|
||||
cache-version: v1
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Build @selfxyz/common
|
||||
run: yarn workspace @selfxyz/common build
|
||||
- name: Build dependencies
|
||||
run: yarn workspace @selfxyz/mobile-app run build:deps
|
||||
- name: Cache build artifacts
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: common/dist
|
||||
key: common-build-${{ runner.os }}-${{ github.sha }}
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: build-deps-${{ runner.os }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -25,6 +35,14 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
common/node_modules
|
||||
cache-version: v1
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Run linter
|
||||
@@ -37,18 +55,30 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
common/node_modules
|
||||
cache-version: v1
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Restore build artifacts
|
||||
id: restore-common-dist
|
||||
id: restore-build-deps
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: common/dist
|
||||
key: common-build-${{ runner.os }}-${{ github.sha }}
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: build-deps-${{ runner.os }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build @selfxyz/common (fallback on cache miss)
|
||||
if: steps.restore-common-dist.outputs.cache-hit != 'true'
|
||||
if: steps.restore-build-deps.outputs.cache-hit != 'true'
|
||||
run: yarn workspace @selfxyz/common build
|
||||
- name: Build @selfxyz/mobile-sdk-alpha
|
||||
run: yarn workspace @selfxyz/mobile-sdk-alpha build
|
||||
- name: Yarn types
|
||||
run: yarn types
|
||||
|
||||
@@ -59,17 +89,29 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
common/node_modules
|
||||
cache-version: v1
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Restore build artifacts
|
||||
id: restore-common-dist
|
||||
id: restore-build-deps
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: common/dist
|
||||
key: common-build-${{ runner.os }}-${{ github.sha }}
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: build-deps-${{ runner.os }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build @selfxyz/common (fallback on cache miss)
|
||||
if: steps.restore-common-dist.outputs.cache-hit != 'true'
|
||||
if: steps.restore-build-deps.outputs.cache-hit != 'true'
|
||||
run: yarn workspace @selfxyz/common build
|
||||
- name: Build @selfxyz/mobile-sdk-alpha
|
||||
run: yarn workspace @selfxyz/mobile-sdk-alpha build
|
||||
- name: Run @selfxyz/common tests
|
||||
run: yarn workspace @selfxyz/common test
|
||||
|
||||
5
.github/workflows/contracts.yml
vendored
5
.github/workflows/contracts.yml
vendored
@@ -14,6 +14,11 @@ on:
|
||||
paths:
|
||||
- "contracts/**"
|
||||
- "common/**"
|
||||
|
||||
concurrency:
|
||||
group: contracts-ci-${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test_contracts:
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
1
.github/workflows/mobile-bundle-analysis.yml
vendored
1
.github/workflows/mobile-bundle-analysis.yml
vendored
@@ -10,6 +10,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "app/**"
|
||||
- "packages/mobile-sdk-alpha/**"
|
||||
- ".github/workflows/mobile-bundle-analysis.yml"
|
||||
- ".github/actions/**"
|
||||
workflow_dispatch:
|
||||
|
||||
165
.github/workflows/mobile-ci.yml
vendored
165
.github/workflows/mobile-ci.yml
vendored
@@ -20,6 +20,7 @@ on:
|
||||
paths:
|
||||
- "common/**"
|
||||
- "app/**"
|
||||
- "packages/mobile-sdk-alpha/**"
|
||||
- ".github/workflows/mobile-ci.yml"
|
||||
- ".github/actions/**"
|
||||
workflow_dispatch: {}
|
||||
@@ -29,7 +30,7 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
build-deps:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -50,6 +51,10 @@ jobs:
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Activate Yarn 4.6.0
|
||||
run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Cache Yarn
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
@@ -58,11 +63,30 @@ jobs:
|
||||
node_modules
|
||||
app/node_modules
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}
|
||||
- name: Restore Built Dependencies
|
||||
id: built-deps-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build dependencies (cache miss)
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
echo "Cache miss for built dependencies. Building now..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps
|
||||
- name: Save Built Dependencies
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Build Dependencies
|
||||
run: yarn build:deps
|
||||
working-directory: ./app
|
||||
- name: Run linter
|
||||
run: yarn lint
|
||||
working-directory: ./app
|
||||
@@ -75,6 +99,7 @@ jobs:
|
||||
|
||||
test:
|
||||
runs-on: macos-latest
|
||||
needs: build-deps
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Read and sanitize Node.js version
|
||||
@@ -94,6 +119,10 @@ jobs:
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Activate Yarn 4.6.0
|
||||
run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Cache Yarn
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
@@ -102,17 +131,36 @@ jobs:
|
||||
node_modules
|
||||
app/node_modules
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}
|
||||
- name: Restore Built Dependencies
|
||||
id: built-deps-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build dependencies (cache miss)
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
echo "Cache miss for built dependencies. Building now..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps
|
||||
- name: Save Built Dependencies
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build
|
||||
run: yarn build:deps
|
||||
working-directory: ./app
|
||||
- name: Test
|
||||
run: yarn test
|
||||
working-directory: ./app
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
needs: build-deps
|
||||
env:
|
||||
# iOS project configuration - hardcoded for CI stability
|
||||
IOS_PROJECT_NAME: "Self"
|
||||
@@ -136,6 +184,10 @@ jobs:
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Activate Yarn 4.6.0
|
||||
run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Set up Xcode
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
@@ -159,7 +211,6 @@ jobs:
|
||||
with:
|
||||
ruby-version: ${{ env.RUBY_VERSION }}
|
||||
bundler-cache: false
|
||||
working-directory: ./app
|
||||
- name: Cache Yarn
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
@@ -171,7 +222,7 @@ jobs:
|
||||
- name: Cache Ruby gems
|
||||
uses: ./.github/actions/cache-bundler
|
||||
with:
|
||||
path: app/vendor/bundle
|
||||
path: app/ios/vendor/bundle
|
||||
lock-file: app/Gemfile.lock
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-ruby${{ env.RUBY_VERSION }}
|
||||
- name: Cache Pods
|
||||
@@ -189,25 +240,41 @@ jobs:
|
||||
app/ios/build
|
||||
~/Library/Developer/Xcode/DerivedData
|
||||
~/Library/Caches/com.apple.dt.Xcode
|
||||
key: ${{ runner.os }}-xcode-${{ hashFiles('app/ios/Podfile.lock') }}-${{ hashFiles('app/ios/${{ env.IOS_PROJECT_NAME }}.xcworkspace/contents.xcworkspacedata') }}
|
||||
key: ${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-${{ hashFiles('app/ios/Podfile.lock', 'app/ios/OpenPassport.xcworkspace/contents.xcworkspacedata', 'app/ios/Self.xcworkspace/contents.xcworkspacedata') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-xcode-${{ hashFiles('app/ios/Podfile.lock') }}-
|
||||
${{ runner.os }}-xcode-
|
||||
${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-${{ hashFiles('app/ios/Podfile.lock') }}-
|
||||
${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-
|
||||
- name: Cache Xcode Index
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: app/ios/build/Index.noindex
|
||||
key: ${{ runner.os }}-xcode-index-${{ hashFiles('app/ios/Podfile.lock') }}
|
||||
key: ${{ runner.os }}-xcode-index-${{ env.XCODE_VERSION }}-${{ hashFiles('app/ios/Podfile.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-xcode-index-
|
||||
${{ runner.os }}-xcode-index-${{ env.XCODE_VERSION }}-
|
||||
- name: Restore Built Dependencies
|
||||
id: built-deps-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build dependencies (cache miss)
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
echo "Cache miss for built dependencies. Building now..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps
|
||||
- name: Save Built Dependencies
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
- name: Install Mobile Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Build Dependencies
|
||||
run: |
|
||||
echo "Building dependencies..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps --silent || { echo "❌ Dependency build failed"; exit 1; }
|
||||
echo "✅ Dependencies built successfully"
|
||||
working-directory: ./app
|
||||
- name: Install Ruby Dependencies
|
||||
run: |
|
||||
echo "Installing Ruby dependencies..."
|
||||
@@ -221,11 +288,29 @@ jobs:
|
||||
# Reuse the same guarded flow as local to ensure reproducibility
|
||||
bundle exec bash scripts/pod-install-with-cache-fix.sh
|
||||
working-directory: ./app
|
||||
- name: Resolve iOS workspace
|
||||
run: |
|
||||
WORKSPACE_OPEN="ios/OpenPassport.xcworkspace"
|
||||
WORKSPACE_SELF="ios/Self.xcworkspace"
|
||||
|
||||
if xcodebuild -list -workspace "$WORKSPACE_OPEN" 2>/dev/null | grep -q "OpenPassport"; then
|
||||
WORKSPACE_PATH="$WORKSPACE_OPEN"
|
||||
else
|
||||
WORKSPACE_PATH="$WORKSPACE_SELF"
|
||||
fi
|
||||
|
||||
echo "WORKSPACE_PATH=$WORKSPACE_PATH" >> "$GITHUB_ENV"
|
||||
echo "Resolved workspace: $WORKSPACE_PATH"
|
||||
working-directory: ./app
|
||||
- name: Verify iOS Workspace
|
||||
run: |
|
||||
echo "Verifying iOS workspace setup..."
|
||||
|
||||
WORKSPACE_PATH="ios/${{ env.IOS_PROJECT_NAME }}.xcworkspace"
|
||||
if [ -z "$WORKSPACE_PATH" ]; then
|
||||
echo "❌ WORKSPACE_PATH is not set"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$WORKSPACE_PATH" ]; then
|
||||
echo "❌ Workspace not found at: $WORKSPACE_PATH"
|
||||
echo "Available workspaces:"
|
||||
@@ -258,9 +343,6 @@ jobs:
|
||||
run: |
|
||||
echo "Building iOS app for simulator (no signing required)..."
|
||||
echo "Project: ${{ env.IOS_PROJECT_NAME }}, Scheme: ${{ env.IOS_PROJECT_SCHEME }}"
|
||||
|
||||
WORKSPACE_PATH="ios/${{ env.IOS_PROJECT_NAME }}.xcworkspace"
|
||||
|
||||
# Build for iOS Simulator to avoid code signing issues in CI
|
||||
xcodebuild -workspace "$WORKSPACE_PATH" \
|
||||
-scheme ${{ env.IOS_PROJECT_SCHEME }} \
|
||||
@@ -276,6 +358,7 @@ jobs:
|
||||
|
||||
build-android:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-deps
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Read and sanitize Node.js version
|
||||
@@ -295,6 +378,10 @@ jobs:
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
- name: Enable Corepack
|
||||
run: corepack enable
|
||||
- name: Activate Yarn 4.6.0
|
||||
run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Cache Yarn
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
@@ -323,14 +410,30 @@ jobs:
|
||||
key: ${{ runner.os }}-ndk-${{ env.ANDROID_NDK_VERSION }}
|
||||
- name: Install NDK
|
||||
run: sdkmanager "ndk;${{ env.ANDROID_NDK_VERSION }}"
|
||||
- name: Restore Built Dependencies
|
||||
id: built-deps-restore
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
fail-on-cache-miss: false
|
||||
- name: Build dependencies (cache miss)
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
echo "Cache miss for built dependencies. Building now..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps
|
||||
- name: Save Built Dependencies
|
||||
if: steps.built-deps-restore.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
common/dist
|
||||
packages/mobile-sdk-alpha/dist
|
||||
key: built-deps-${{ env.GH_CACHE_VERSION }}-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('common/**/*', 'packages/mobile-sdk-alpha/**/*', '!common/dist/**', '!packages/mobile-sdk-alpha/dist/**') }}
|
||||
- name: Install Mobile Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
- name: Build Dependencies
|
||||
run: |
|
||||
echo "Building dependencies..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps --silent || { echo "❌ Dependency build failed"; exit 1; }
|
||||
echo "✅ Dependencies built successfully"
|
||||
working-directory: ./app
|
||||
- name: Build Android
|
||||
run: |
|
||||
cd android
|
||||
|
||||
7
.github/workflows/mobile-deploy-auto.yml
vendored
7
.github/workflows/mobile-deploy-auto.yml
vendored
@@ -8,6 +8,11 @@ on:
|
||||
- "app/**"
|
||||
- "!app/**/*.md"
|
||||
- "!app/docs/**"
|
||||
- "packages/mobile-sdk-alpha/**"
|
||||
|
||||
concurrency:
|
||||
group: mobile-deploy-${{ github.ref }}
|
||||
cancel-in-progress: false
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
@@ -30,7 +35,7 @@ jobs:
|
||||
echo "🔍 Checking deployment conditions..."
|
||||
|
||||
# Skip if PR has skip-deploy in title or body
|
||||
if [[ "${{ github.event.pull_request.title }}" =~ \[skip-deploy\] ]] ||
|
||||
if [[ "${{ github.event.pull_request.title }}" =~ \[skip-deploy\] ]] ||
|
||||
[[ "${{ github.event.pull_request.body }}" =~ \[skip-deploy\] ]]; then
|
||||
echo "should_deploy=false" >> $GITHUB_OUTPUT
|
||||
echo "⏭️ Skipping deployment due to [skip-deploy] flag"
|
||||
|
||||
16
.github/workflows/mobile-deploy.yml
vendored
16
.github/workflows/mobile-deploy.yml
vendored
@@ -89,6 +89,10 @@ on:
|
||||
required: false
|
||||
default: false
|
||||
|
||||
concurrency:
|
||||
group: mobile-deploy-${{ inputs.deployment_track || github.ref_name }}
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
@@ -153,7 +157,7 @@ jobs:
|
||||
id: gems-cache
|
||||
uses: ./.github/actions/cache-bundler
|
||||
with:
|
||||
path: ${{ env.APP_PATH }}/vendor/bundle
|
||||
path: ${{ env.APP_PATH }}/ios/vendor/bundle
|
||||
key: ${{ runner.os }}-ruby${{ env.RUBY_VERSION }}-gems-${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-${{ hashFiles('app/Gemfile.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-ruby${{ env.RUBY_VERSION }}-gems-${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-
|
||||
@@ -538,8 +542,8 @@ jobs:
|
||||
echo "Node modules: $NODE_SIZE"
|
||||
fi
|
||||
|
||||
if [ -d "${{ env.APP_PATH }}/vendor/bundle" ]; then
|
||||
GEMS_SIZE=$(du -sh "${{ env.APP_PATH }}/vendor/bundle" | cut -f1)
|
||||
if [ -d "${{ env.APP_PATH }}/ios/vendor/bundle" ]; then
|
||||
GEMS_SIZE=$(du -sh "${{ env.APP_PATH }}/ios/vendor/bundle" | cut -f1)
|
||||
echo "Ruby gems: $GEMS_SIZE"
|
||||
fi
|
||||
|
||||
@@ -595,7 +599,7 @@ jobs:
|
||||
id: gems-cache
|
||||
uses: ./.github/actions/cache-bundler
|
||||
with:
|
||||
path: ${{ env.APP_PATH }}/vendor/bundle
|
||||
path: ${{ env.APP_PATH }}/ios/vendor/bundle
|
||||
key: ${{ runner.os }}-ruby${{ env.RUBY_VERSION }}-gems-${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-${{ hashFiles('app/Gemfile.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-ruby${{ env.RUBY_VERSION }}-gems-${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-
|
||||
@@ -803,8 +807,8 @@ jobs:
|
||||
echo "Node modules: $NODE_SIZE"
|
||||
fi
|
||||
|
||||
if [ -d "${{ env.APP_PATH }}/vendor/bundle" ]; then
|
||||
GEMS_SIZE=$(du -sh "${{ env.APP_PATH }}/vendor/bundle" | cut -f1)
|
||||
if [ -d "${{ env.APP_PATH }}/ios/vendor/bundle" ]; then
|
||||
GEMS_SIZE=$(du -sh "${{ env.APP_PATH }}/ios/vendor/bundle" | cut -f1)
|
||||
echo "Ruby gems: $GEMS_SIZE"
|
||||
fi
|
||||
|
||||
|
||||
143
.github/workflows/mobile-e2e.yml
vendored
143
.github/workflows/mobile-e2e.yml
vendored
@@ -10,7 +10,7 @@ env:
|
||||
GH_CACHE_VERSION: v1 # Global cache version
|
||||
GH_GEMS_CACHE_VERSION: v1 # Ruby gems cache version
|
||||
# Performance optimizations
|
||||
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.workers.max=4 -Dorg.gradle.parallel=true -Dorg.gradle.configureondemand=true -Dorg.gradle.caching=true
|
||||
GRADLE_OPTS: -Dorg.gradle.workers.max=4 -Dorg.gradle.parallel=true -Dorg.gradle.caching=true
|
||||
CI: true
|
||||
# Disable Maestro analytics in CI
|
||||
MAESTRO_CLI_NO_ANALYTICS: true
|
||||
@@ -29,12 +29,7 @@ on:
|
||||
|
||||
jobs:
|
||||
e2e-android:
|
||||
# TODO: The Android E2E test job is temporarily disabled due to a recurring
|
||||
# Maestro driver timeout issue in the CI environment. The emulator becomes
|
||||
# unresponsive, preventing Maestro from connecting. This needs further
|
||||
# investigation, but has been disabled to unblock the pipeline.
|
||||
# To test locally, run `./scripts/test-e2e-local.sh android --workflow-match`
|
||||
if: false
|
||||
if: false # Temporarily disable Android E2E until emulator disk issue resolved
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-android-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
@@ -61,13 +56,13 @@ jobs:
|
||||
- run: corepack enable
|
||||
- run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Cache Yarn dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: .yarn/cache
|
||||
key: ${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-yarn-
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-node-${{ env.NODE_VERSION_SANITIZED }}
|
||||
- run: yarn install --immutable --silent
|
||||
- name: Validate Maestro test file
|
||||
run: |
|
||||
[ -f app/tests/e2e/launch.android.flow.yaml ] || { echo "❌ Android E2E test file missing"; exit 1; }
|
||||
- name: Cache Maestro
|
||||
id: cache-maestro
|
||||
uses: actions/cache@v4
|
||||
@@ -90,12 +85,6 @@ jobs:
|
||||
uses: android-actions/setup-android@v3
|
||||
with:
|
||||
accept-android-sdk-licenses: true
|
||||
|
||||
- name: Cache NDK
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.ANDROID_HOME }}/ndk/${{ env.ANDROID_NDK_VERSION }}
|
||||
key: ${{ runner.os }}-ndk-${{ env.ANDROID_NDK_VERSION }}
|
||||
- name: Install NDK
|
||||
run: sdkmanager "ndk;${{ env.ANDROID_NDK_VERSION }}"
|
||||
- name: Build dependencies (outside emulator)
|
||||
@@ -103,29 +92,12 @@ jobs:
|
||||
echo "Building dependencies..."
|
||||
yarn workspace @selfxyz/mobile-app run build:deps --silent || { echo "❌ Dependency build failed"; exit 1; }
|
||||
echo "✅ Dependencies built successfully"
|
||||
- name: Cache Android build
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
app/android/app/build
|
||||
app/android/.gradle
|
||||
key: ${{ runner.os }}-android-build-${{ hashFiles('app/android/**/*.gradle*', 'app/android/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-android-build-
|
||||
- name: Build Android APK
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ env.ANDROID_API_LEVEL }}
|
||||
arch: x86_64
|
||||
target: google_apis
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -camera-front none -memory 8192 -cores 4 -accel on
|
||||
disable-animations: true
|
||||
script: |
|
||||
echo "Building Android APK..."
|
||||
chmod +x app/android/gradlew
|
||||
(cd app/android && ./gradlew assembleRelease --quiet --parallel --build-cache --no-configuration-cache) || { echo "❌ Android build failed"; exit 1; }
|
||||
echo "✅ Android build succeeded"
|
||||
run: |
|
||||
echo "Building Android APK..."
|
||||
chmod +x app/android/gradlew
|
||||
(cd app/android && ./gradlew assembleDebug --quiet --parallel --build-cache --no-configuration-cache) || { echo "❌ Android build failed"; exit 1; }
|
||||
echo "✅ Android build succeeded"
|
||||
- name: Install and Test on Android
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
@@ -137,7 +109,7 @@ jobs:
|
||||
disable-animations: true
|
||||
script: |
|
||||
echo "Installing app on emulator..."
|
||||
APK_PATH="app/android/app/build/outputs/apk/release/app-release.apk"
|
||||
APK_PATH="app/android/app/build/outputs/apk/debug/app-debug.apk"
|
||||
[ -f "$APK_PATH" ] || { echo "❌ APK not found at $APK_PATH"; exit 1; }
|
||||
adb install -r "$APK_PATH" || { echo "❌ App installation failed"; exit 1; }
|
||||
echo "✅ App installed successfully"
|
||||
@@ -147,9 +119,7 @@ jobs:
|
||||
|
||||
echo "🎭 Running Maestro tests..."
|
||||
export MAESTRO_DRIVER_STARTUP_TIMEOUT=180000
|
||||
maestro test tests/e2e/launch.android.flow.yaml --format junit --output app/maestro-results.xml
|
||||
env:
|
||||
E2E_BUILD: "true"
|
||||
maestro test app/tests/e2e/launch.android.flow.yaml --format junit --output app/maestro-results.xml
|
||||
- name: Upload test results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
@@ -191,13 +161,13 @@ jobs:
|
||||
- run: corepack enable
|
||||
- run: corepack prepare yarn@4.6.0 --activate
|
||||
- name: Cache Yarn dependencies
|
||||
uses: actions/cache@v4
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: .yarn/cache
|
||||
key: ${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-yarn-
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-node-${{ env.NODE_VERSION_SANITIZED }}
|
||||
- run: yarn install --immutable --silent
|
||||
- name: Validate Maestro test file
|
||||
run: |
|
||||
[ -f app/tests/e2e/launch.ios.flow.yaml ] || { echo "❌ iOS E2E test file missing"; exit 1; }
|
||||
- name: Cache Maestro
|
||||
id: cache-maestro
|
||||
uses: actions/cache@v4
|
||||
@@ -226,19 +196,12 @@ jobs:
|
||||
xcodebuild -version
|
||||
echo "Xcode path:"
|
||||
xcode-select -p
|
||||
- name: Cache Node modules
|
||||
uses: actions/cache@v4
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
path: app/node_modules
|
||||
key: ${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-${{ hashFiles('app/yarn.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-${{ env.NODE_VERSION_SANITIZED }}-
|
||||
- name: Cache Ruby gems
|
||||
uses: ./.github/actions/cache-bundler
|
||||
with:
|
||||
path: app/vendor/bundle
|
||||
lock-file: app/Gemfile.lock
|
||||
cache-version: ${{ env.GH_CACHE_VERSION }}-${{ env.GH_GEMS_CACHE_VERSION }}-ruby${{ env.RUBY_VERSION }}
|
||||
ruby-version: "3.3"
|
||||
bundler-cache: true
|
||||
working-directory: app
|
||||
- name: Cache Pods
|
||||
uses: ./.github/actions/cache-pods
|
||||
with:
|
||||
@@ -246,33 +209,14 @@ jobs:
|
||||
app/ios/Pods
|
||||
~/Library/Caches/CocoaPods
|
||||
lock-file: app/ios/Podfile.lock
|
||||
- name: Cache Xcode build
|
||||
- name: Cache DerivedData
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
app/ios/build
|
||||
~/Library/Developer/Xcode/DerivedData
|
||||
~/Library/Caches/com.apple.dt.Xcode
|
||||
key: ${{ runner.os }}-xcode-${{ hashFiles('app/ios/Podfile.lock') }}-${{ hashFiles('app/ios/${{ env.IOS_PROJECT_NAME }}.xcworkspace/contents.xcworkspacedata') }}
|
||||
path: app/ios/build
|
||||
key: ${{ runner.os }}-derived-data-${{ env.XCODE_VERSION }}-${{ hashFiles('app/ios/Podfile.lock', 'app/ios/OpenPassport.xcworkspace/contents.xcworkspacedata', 'app/ios/Self.xcworkspace/contents.xcworkspacedata') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-xcode-${{ hashFiles('app/ios/Podfile.lock') }}-
|
||||
${{ runner.os }}-xcode-
|
||||
- name: Cache Xcode Index
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: app/ios/build/Index.noindex
|
||||
key: ${{ runner.os }}-xcode-index-${{ hashFiles('app/ios/Podfile.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-xcode-index-
|
||||
- name: Cache iOS Simulator
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/Library/Developer/CoreSimulator/Devices
|
||||
~/Library/Developer/Xcode/iOS DeviceSupport
|
||||
key: ${{ runner.os }}-simulator-v1
|
||||
restore-keys: |
|
||||
${{ runner.os }}-simulator-
|
||||
${{ runner.os }}-derived-data-${{ env.XCODE_VERSION }}-${{ hashFiles('app/ios/Podfile.lock') }}-
|
||||
${{ runner.os }}-derived-data-${{ env.XCODE_VERSION }}-
|
||||
- name: Verify iOS Runtime
|
||||
run: |
|
||||
echo "📱 Verifying iOS Runtime availability..."
|
||||
@@ -286,8 +230,9 @@ jobs:
|
||||
- name: Install iOS dependencies
|
||||
run: |
|
||||
echo "Installing iOS dependencies..."
|
||||
(cd app/ios && pod install --silent) || { echo "❌ Pod install failed"; exit 1; }
|
||||
echo "✅ Pods installed successfully"
|
||||
cd app/ios
|
||||
echo "📦 Installing pods via centralized script…"
|
||||
BUNDLE_GEMFILE=../Gemfile bundle exec bash scripts/pod-install-with-cache-fix.sh || { echo "❌ Pod install failed"; exit 1; }
|
||||
- name: Setup iOS Simulator
|
||||
run: |
|
||||
echo "Setting up iOS Simulator..."
|
||||
@@ -358,13 +303,29 @@ jobs:
|
||||
# Store simulator ID for later use
|
||||
echo "IOS_SIMULATOR_ID=$AVAILABLE_SIMULATOR" >> $GITHUB_ENV
|
||||
echo "IOS_SIMULATOR_NAME=$SIMULATOR_NAME" >> $GITHUB_ENV
|
||||
- name: Resolve iOS workspace
|
||||
run: |
|
||||
WORKSPACE_OPEN="app/ios/OpenPassport.xcworkspace"
|
||||
WORKSPACE_SELF="app/ios/Self.xcworkspace"
|
||||
|
||||
if xcodebuild -list -workspace "$WORKSPACE_OPEN" 2>/dev/null | grep -q "OpenPassport"; then
|
||||
WORKSPACE_PATH="$WORKSPACE_OPEN"
|
||||
else
|
||||
WORKSPACE_PATH="$WORKSPACE_SELF"
|
||||
fi
|
||||
|
||||
echo "WORKSPACE_PATH=$WORKSPACE_PATH" >> "$GITHUB_ENV"
|
||||
echo "Resolved workspace: $WORKSPACE_PATH"
|
||||
- name: Build iOS App
|
||||
run: |
|
||||
echo "Building iOS app..."
|
||||
echo "Project: ${{ env.IOS_PROJECT_NAME }}, Scheme: ${{ env.IOS_PROJECT_SCHEME }}"
|
||||
|
||||
# Verify workspace exists before building
|
||||
WORKSPACE_PATH="app/ios/${{ env.IOS_PROJECT_NAME }}.xcworkspace"
|
||||
if [ -z "$WORKSPACE_PATH" ]; then
|
||||
echo "❌ WORKSPACE_PATH is not set"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d "$WORKSPACE_PATH" ]; then
|
||||
echo "❌ Workspace not found at: $WORKSPACE_PATH"
|
||||
echo "Available workspaces:"
|
||||
@@ -388,13 +349,15 @@ jobs:
|
||||
echo "✅ Using scheme: ${{ env.IOS_PROJECT_SCHEME }}"
|
||||
|
||||
# Use cached derived data and enable parallel builds for faster compilation
|
||||
# Additional flags disable indexing, restrict architecture, and use whole-module Swift compilation
|
||||
# Use the simulator that was set up earlier in the workflow
|
||||
xcodebuild -workspace "$WORKSPACE_PATH" -scheme ${{ env.IOS_PROJECT_SCHEME }} -configuration Release -destination "id=${{ env.IOS_SIMULATOR_ID }}" -derivedDataPath app/ios/build -jobs "$(sysctl -n hw.ncpu)" -parallelizeTargets -quiet || { echo "❌ iOS build failed"; exit 1; }
|
||||
FORCE_BUNDLING=1 RCT_NO_LAUNCH_PACKAGER=1 \
|
||||
xcodebuild -workspace "$WORKSPACE_PATH" -scheme ${{ env.IOS_PROJECT_SCHEME }} -configuration Debug -destination "id=${{ env.IOS_SIMULATOR_ID }}" -derivedDataPath app/ios/build -jobs "$(sysctl -n hw.ncpu)" -parallelizeTargets -quiet COMPILER_INDEX_STORE_ENABLE=NO ONLY_ACTIVE_ARCH=YES SWIFT_COMPILATION_MODE=wholemodule || { echo "❌ iOS build failed"; exit 1; }
|
||||
echo "✅ iOS build succeeded"
|
||||
- name: Install and Test on iOS
|
||||
run: |
|
||||
echo "Installing app on simulator..."
|
||||
APP_PATH=$(find app/ios/build/Build/Products/Release-iphonesimulator -name "*.app" | head -1)
|
||||
APP_PATH=$(find app/ios/build/Build/Products/Debug-iphonesimulator -name "*.app" | head -1)
|
||||
[ -z "$APP_PATH" ] && { echo "❌ Could not find built iOS app"; exit 1; }
|
||||
echo "Found app at: $APP_PATH"
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ GEM
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.4.0)
|
||||
aws-partitions (1.1150.0)
|
||||
aws-partitions (1.1151.0)
|
||||
aws-sdk-core (3.230.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
@@ -99,7 +99,7 @@ GEM
|
||||
drb (2.2.3)
|
||||
emoji_regex (3.2.3)
|
||||
escape (0.0.4)
|
||||
ethon (0.17.0)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.112.0)
|
||||
faraday (1.10.4)
|
||||
@@ -256,17 +256,17 @@ GEM
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.4.1)
|
||||
rexml (3.4.2)
|
||||
rouge (3.28.0)
|
||||
ruby-macho (2.5.1)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.4.1)
|
||||
securerandom (0.4.1)
|
||||
security (0.1.5)
|
||||
signet (0.20.0)
|
||||
signet (0.21.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
jwt (>= 1.5, < 4.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
@@ -280,8 +280,8 @@ GEM
|
||||
tty-screen (0.8.2)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.1)
|
||||
ethon (>= 0.9.0)
|
||||
typhoeus (1.5.0)
|
||||
ethon (>= 0.9.0, < 0.16.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
| Requirement | Version | Installation Guide |
|
||||
| ----------- | -------- | ------------------------------------------------------------------------ |
|
||||
| nodejs | > v18 | [Install nodejs](https://nodejs.org/) |
|
||||
| nodejs | >= 22 | [Install nodejs](https://nodejs.org/) |
|
||||
| ruby | >= 3.1.0 | [Install ruby](https://www.ruby-lang.org/en/documentation/installation/) |
|
||||
| circom | Latest | [Install circom](https://docs.circom.io/) |
|
||||
| snarkjs | Latest | [Install snarkjs](https://github.com/iden3/snarkjs) |
|
||||
|
||||
@@ -3,14 +3,14 @@ apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
compileSdkVersion 35
|
||||
defaultConfig {
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 33
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 35
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
multiDexEnabled true
|
||||
// multidex not needed for libraries (and native multidex is default on API 21+)
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
||||
@@ -198,7 +198,7 @@ class PassportDetailsFragment : androidx.fragment.app.Fragment() {
|
||||
|
||||
try {
|
||||
binding?.valueDocumentSigningCertificateThumbprint?.text = StringUtils.bytesToHex(MessageDigest.getInstance("SHA-1").digest(
|
||||
docSigningCertificate.encoded)).toUpperCase()
|
||||
docSigningCertificate.encoded)).uppercase()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
@@ -704,19 +704,6 @@ class TouchImageView : androidx.appcompat.widget.AppCompatImageView {
|
||||
performLongClick()
|
||||
}
|
||||
|
||||
override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
|
||||
if (fling != null) {
|
||||
//
|
||||
// If a previous fling is still active, it should be cancelled so that two flings
|
||||
// are not run simultaenously.
|
||||
//
|
||||
fling!!.cancelFling()
|
||||
}
|
||||
fling = Fling(velocityX.toInt(), velocityY.toInt())
|
||||
compatPostOnAnimation(fling as TouchImageView.Fling)
|
||||
return super.onFling(e1, e2, velocityX, velocityY)
|
||||
}
|
||||
|
||||
override fun onDoubleTap(e: MotionEvent): Boolean {
|
||||
var consumed = false
|
||||
if (doubleTapListener != null) {
|
||||
@@ -763,8 +750,6 @@ class TouchImageView : androidx.appcompat.widget.AppCompatImageView {
|
||||
when (event.action) {
|
||||
MotionEvent.ACTION_DOWN -> {
|
||||
last.set(curr)
|
||||
if (fling != null)
|
||||
fling!!.cancelFling()
|
||||
setState(State.DRAG)
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ class KeyStoreUtils {
|
||||
if (endIndex < 0) {
|
||||
endIndex = issuerName.length
|
||||
}
|
||||
val countryCode = issuerName.substring(startIndex + 2, endIndex).trim { it <= ' ' }.toUpperCase()
|
||||
val countryCode = issuerName.substring(startIndex + 2, endIndex).trim { it <= ' ' }.uppercase()
|
||||
return try {
|
||||
Country.getInstance(countryCode)
|
||||
} catch (e: Exception) {
|
||||
@@ -129,7 +129,7 @@ class KeyStoreUtils {
|
||||
val serial = x509Certificate.getSerialNumber()
|
||||
val country = getCountry(issuer)
|
||||
val isSelfSigned = (issuer == null && subject == null) || subject.equals(issuer)
|
||||
val outName = country!!.toAlpha2Code().toLowerCase().toString() + "_" + (if (isSelfSigned) "root_" else "link_") + (++i) + ".cer"
|
||||
val outName = country!!.toAlpha2Code().lowercase().toString() + "_" + (if (isSelfSigned) "root_" else "link_") + (++i) + ".cer"
|
||||
treeMap.put(outName, x509Certificate)
|
||||
|
||||
}
|
||||
@@ -167,4 +167,4 @@ class KeyStoreUtils {
|
||||
Security.insertProviderAt(org.spongycastle.jce.provider.BouncyCastleProvider(), 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ object OcrUtils {
|
||||
temp = temp.replace("\r".toRegex(), "").replace("\n".toRegex(), "").replace("\t".toRegex(), "").replace(" ", "")
|
||||
fullRead += "$temp-"
|
||||
}
|
||||
fullRead = fullRead.toUpperCase()
|
||||
fullRead = fullRead.uppercase()
|
||||
Log.d(TAG, "Read: $fullRead")
|
||||
|
||||
// We try with TD1 format first (ID Card)
|
||||
|
||||
@@ -20,7 +20,7 @@ buildscript {
|
||||
mavenLocal()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.1.0'
|
||||
classpath 'com.android.tools.build:gradle:8.6.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
|
||||
|
||||
|
||||
@@ -3,4 +3,5 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
|
||||
distributionSha256Sum=682b4df7fe5accdca84a4d1ef6a3a6ab096b3efd5edf7de2bd8c758d95b73990
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.facebook.react.ReactPackage
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
|
||||
import com.facebook.react.defaults.DefaultReactNativeHost
|
||||
import com.facebook.soloader.SoLoader
|
||||
import com.facebook.react.soloader.OpenSourceMergedSoMapping
|
||||
|
||||
class MainApplication : Application(), ReactApplication {
|
||||
|
||||
@@ -21,8 +22,6 @@ class MainApplication : Application(), ReactApplication {
|
||||
object : DefaultReactNativeHost(this) {
|
||||
override fun getPackages(): MutableList<ReactPackage> =
|
||||
PackageList(this).packages.apply {
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// add(MyReactNativePackage())
|
||||
add(CameraActivityPackage())
|
||||
add(QRCodeScannerPackage())
|
||||
add(BackupPackage())
|
||||
@@ -38,12 +37,11 @@ class MainApplication : Application(), ReactApplication {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
SoLoader.init(this, false)
|
||||
// CRITICAL CHANGE: Use OpenSourceMergedSoMapping for RN 0.76+ Hermes support
|
||||
SoLoader.init(this, OpenSourceMergedSoMapping)
|
||||
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
// If you opted-in for the New Architecture, we load the native entry point for this app.
|
||||
DefaultNewArchitectureEntryPoint.load()
|
||||
}
|
||||
// ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
val channel = NotificationChannel(
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "35.0.0"
|
||||
minSdkVersion = 23
|
||||
minSdkVersion = 24
|
||||
compileSdkVersion = 35
|
||||
targetSdkVersion = 35
|
||||
// Updated NDK to support 16k page size devices
|
||||
@@ -20,16 +20,12 @@ buildscript {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath("com.android.tools.build:gradle:7.3.1")
|
||||
classpath("com.android.tools.build:gradle:8.6.0")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
// classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
classpath 'com.android.tools.build:gradle:8.1.0'
|
||||
classpath 'com.google.gms:google-services:4.3.14'
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
|
||||
classpath 'org.mozilla.rust-android-gradle:plugin:0.9.3'
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0")
|
||||
classpath("com.google.gms:google-services:4.4.0")
|
||||
classpath 'com.google.gms:google-services:4.4.0'
|
||||
// Removed firebase-crashlytics (no usages)—add back 3.x if still applied in modules.
|
||||
// Removed rust-android-gradle plugin; keep only if you re-enable Rust integration.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#Mon Feb 03 16:12:34 CET 2025
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
|
||||
networkTimeout=600000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -36,30 +36,10 @@ dependencies {
|
||||
implementation 'androidx.core:core-ktx:1.9.0'
|
||||
implementation 'com.wdullaer:materialdatetimepicker:3.5.2'
|
||||
implementation 'org.jmrtd:jmrtd:0.8.1'
|
||||
// implementation 'org.jmrtd:jmrtd:0.7.42' // getting different errors whether it's 18 or 40 // 23 <== this works
|
||||
// implementation files('../../../../../jmrtd-0.7.18-sources/target/jmrtd-0.7.18.jar')
|
||||
// implementation files('../../app/libs/jmrtd-0.7.18.jar')
|
||||
implementation 'net.sf.scuba:scuba-sc-android:0.0.18'
|
||||
// implementation 'com.madgag.spongycastle:prov:1.54.0.0'
|
||||
implementation 'com.gemalto.jp2:jp2-android:1.0.3'
|
||||
implementation 'com.github.mhshams:jnbis:1.1.0'
|
||||
// implementation 'org.bouncycastle:bcpkix-jdk15on:1.65' // do not update
|
||||
implementation 'commons-io:commons-io:2.8.0'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
||||
// implementation 'edu.ucar:jj2000:5.2'
|
||||
implementation 'com.facebook.react:react-native:+'
|
||||
}
|
||||
|
||||
|
||||
apply plugin: 'org.mozilla.rust-android-gradle.rust-android'
|
||||
|
||||
cargo {
|
||||
module = "../../../ark-circom-passport" // this works
|
||||
// module = "/Users/turboblitz/code/my-code/passport-sbt/app/halo2-passport"
|
||||
libname = "ark_circom_passport" // Or whatever matches Cargo.toml's [package] name.
|
||||
// targets = ["arm", "x86"] // failing
|
||||
// targets = ["arm64", "darwin-aarch64"] // add this one for apple later
|
||||
targets = ["arm64"] // Those work
|
||||
apiLevel = 29
|
||||
profile = 'release'
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
pluginManagement { includeBuild("../../node_modules/@react-native/gradle-plugin") }
|
||||
plugins { id("com.facebook.react.settings") }
|
||||
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
|
||||
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex ->
|
||||
ex.autolinkLibrariesFromCommand(['yarn','exec','react-native','config'])
|
||||
}
|
||||
rootProject.name = 'OpenPassport'
|
||||
include ':app'
|
||||
includeBuild('../../node_modules/@react-native/gradle-plugin')
|
||||
|
||||
@@ -141,7 +141,7 @@ After deployment, you can check the status:
|
||||
|
||||
Before working with this setup, ensure you have the following installed:
|
||||
|
||||
* **Node.js** - Version 18 or higher (for JavaScript dependencies and deployment scripts)
|
||||
* **Node.js** - Version 22 or higher (for JavaScript dependencies and deployment scripts)
|
||||
* **Yarn** - Package manager for JavaScript dependencies
|
||||
* **Git** - Required for branch detection and status checking during deployments
|
||||
* **GitHub CLI (`gh`)** - **Required** for GitHub runner deployments (default method)
|
||||
@@ -150,7 +150,7 @@ Before working with this setup, ensure you have the following installed:
|
||||
- Used to trigger GitHub Actions workflows for deployments
|
||||
* **Ruby** - Fastlane requires Ruby (version 2.6.0 or higher recommended)
|
||||
* **Bundler** - For managing Ruby dependencies
|
||||
* **Xcode** - For iOS development (Note: Local development currently requires Xcode 16.2 due to compatibility issues with 16.3)
|
||||
* **Xcode** - For iOS development (15+; local development currently uses Xcode 16.2 due to compatibility issues with 16.3)
|
||||
* **Android Studio** - For Android development
|
||||
* **Docker** - Optional, required for local testing with `act`
|
||||
|
||||
@@ -624,7 +624,7 @@ If you encounter issues with version syncing between `package.json` and native p
|
||||
* Ensure binary is properly signed with distribution certificate
|
||||
|
||||
3. **Xcode Version Issues**
|
||||
* Ensure you're using Xcode 16.2 for local development
|
||||
* Ensure you're using Xcode 15+ for local development (currently tested with 16.2)
|
||||
* Check that the correct Xcode version is selected with `xcode-select`
|
||||
|
||||
### Android Build Issues
|
||||
|
||||
@@ -3,12 +3,24 @@ fastlane documentation
|
||||
|
||||
# Installation
|
||||
|
||||
Make sure you have the latest version of the Xcode command line tools installed:
|
||||
Make sure you have the Xcode command line tools installed:
|
||||
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
**Note:** The above command installs only the Command Line Tools, not the full Xcode app. Some Fastlane lanes and CocoaPods require the full Xcode app and the correct DEVELOPER_DIR. To verify your setup and switch to the proper Xcode app if needed:
|
||||
|
||||
```bash
|
||||
# Verify Xcode and CLT
|
||||
xcodebuild -version
|
||||
xcode-select -p
|
||||
|
||||
# If needed, point to the correct Xcode app:
|
||||
sudo xcode-select -s /Applications/Xcode.app
|
||||
sudo xcodebuild -runFirstLaunch
|
||||
```
|
||||
|
||||
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
|
||||
|
||||
# Available Actions
|
||||
|
||||
@@ -221,7 +221,7 @@ class HelpersTest < Minitest::Test
|
||||
def test_android_verify_version_code_missing_version_code_line
|
||||
# Test the error handling when versionCode is missing
|
||||
gradle_file = Tempfile.new(["build", ".gradle"])
|
||||
gradle_file.write("applicationId 'com.example.app'\nminSdkVersion 21\n")
|
||||
gradle_file.write("applicationId 'com.example.app'\nminSdkVersion 24\n")
|
||||
gradle_file.close
|
||||
|
||||
# Test the logic that we improved
|
||||
|
||||
3
app/ios/.bundle/config
Normal file
3
app/ios/.bundle/config
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
BUNDLE_CLEAN: "true"
|
||||
@@ -11,7 +11,10 @@ require Pod::Executable.execute_command("node", ["-p",
|
||||
|
||||
project "Self.xcodeproj"
|
||||
|
||||
platform :ios, "15.0" if !ENV["ACT"]
|
||||
# Define consistent iOS deployment target
|
||||
IOS_DEPLOYMENT_TARGET = "15.1"
|
||||
|
||||
platform :ios, IOS_DEPLOYMENT_TARGET if !ENV["ACT"]
|
||||
prepare_react_native_project!
|
||||
|
||||
flipper_enabled = ENV["NO_FLIPPER"] != "1"
|
||||
@@ -68,7 +71,7 @@ target "Self" do
|
||||
end
|
||||
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "15.0"
|
||||
config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = IOS_DEPLOYMENT_TARGET
|
||||
config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"] ||= ["$(inherited)", "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"]
|
||||
end
|
||||
end
|
||||
|
||||
1149
app/ios/Podfile.lock
1149
app/ios/Podfile.lock
File diff suppressed because it is too large
Load Diff
@@ -526,7 +526,7 @@
|
||||
INFOPLIST_FILE = OpenPassport/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Needed only if you want to upload QRcodes";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -667,7 +667,7 @@
|
||||
INFOPLIST_KEY_CFBundleDisplayName = OpenPassport;
|
||||
INFOPLIST_KEY_NSDocumentsFolderUsageDescription = "";
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Needed only if you want to upload QRcodes";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@@ -764,7 +764,7 @@
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
|
||||
);
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "Needed to scan your passport MRZ, you can however enter it manually.";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
||||
LD = "";
|
||||
LDPLUSPLUS = "";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -858,7 +858,7 @@
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
|
||||
);
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "Needed to scan your passport MRZ, you can however enter it manually.";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
||||
LD = "";
|
||||
LDPLUSPLUS = "";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
|
||||
0
app/ios/scripts/pod-install-with-cache-fix.sh
Normal file → Executable file
0
app/ios/scripts/pod-install-with-cache-fix.sh
Normal file → Executable file
@@ -6,7 +6,12 @@
|
||||
/** @jest-environment jsdom */
|
||||
require('react-native-gesture-handler/jestSetup');
|
||||
|
||||
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
|
||||
// Mock NativeAnimatedHelper - using virtual mock during RN 0.76.9 prep phase
|
||||
jest.mock(
|
||||
'react-native/src/private/animated/NativeAnimatedHelper',
|
||||
() => ({}),
|
||||
{ virtual: true },
|
||||
);
|
||||
|
||||
global.FileReader = class {
|
||||
constructor() {
|
||||
|
||||
@@ -22,16 +22,16 @@
|
||||
"clean:watchman": "watchman watch-del-all",
|
||||
"clean:xcode": "rm -rf ~/Library/Developer/Xcode/DerivedData",
|
||||
"clean:xcode-env-local": "rm -f ios/.xcode.env.local",
|
||||
"find:type-imports": "node scripts/find-type-import-issues.mjs",
|
||||
"fmt": "prettier --check .",
|
||||
"fmt:fix": "prettier --write .",
|
||||
"format": "yarn nice",
|
||||
"find:type-imports": "node scripts/find-type-import-issues.mjs",
|
||||
"ia": "yarn install-app",
|
||||
"imports:fix": "node ./scripts/alias-imports.cjs",
|
||||
"install-app": "yarn install-app:setup && cd ios && bundle install && bundle exec pod install && cd .. && yarn clean:xcode-env-local",
|
||||
"install-app": "yarn install-app:setup && yarn clean:xcode-env-local",
|
||||
"install-app:mobile-deploy": "yarn install && yarn build:deps && yarn clean:xcode-env-local",
|
||||
"install-app:mobile-deploy:ios": "yarn install-app:setup && yarn clean:xcode-env-local",
|
||||
"install-app:setup": "yarn install && yarn build:deps && cd ios && bundle install && bundle exec pod install && cd ..",
|
||||
"install-app:setup": "yarn install && yarn build:deps && cd ios && bundle install && scripts/pod-install-with-cache-fix.sh && cd ..",
|
||||
"ios": "yarn build:deps && react-native run-ios --scheme OpenPassport",
|
||||
"ios:fastlane-debug": "yarn reinstall && bundle exec fastlane --verbose ios internal_test",
|
||||
"lint": "eslint .",
|
||||
@@ -53,7 +53,7 @@
|
||||
"sync-versions": "bundle exec fastlane ios sync_version && bundle exec fastlane android sync_version",
|
||||
"tag:release": "node scripts/tag.cjs release",
|
||||
"tag:remove": "node scripts/tag.cjs remove",
|
||||
"test": "jest --passWithNoTests && node --test scripts/tests/*.cjs",
|
||||
"test": "yarn build:deps && jest --passWithNoTests && node --test scripts/tests/*.cjs",
|
||||
"test:build": "yarn build:deps && yarn types && node ./scripts/bundle-analyze-ci.cjs ios && yarn test",
|
||||
"test:coverage": "jest --coverage --passWithNoTests",
|
||||
"test:coverage:ci": "jest --coverage --passWithNoTests --ci --coverageReporters=lcov --coverageReporters=text --coverageReporters=json",
|
||||
@@ -110,7 +110,7 @@
|
||||
"poseidon-lite": "^0.2.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-native": "0.75.4",
|
||||
"react-native": "0.76.9",
|
||||
"react-native-app-auth": "^8.0.3",
|
||||
"react-native-biometrics": "^3.0.1",
|
||||
"react-native-check-version": "^1.3.0",
|
||||
@@ -144,12 +144,12 @@
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
"@babel/plugin-transform-private-methods": "^7.23.3",
|
||||
"@react-native-community/cli": "^19.1.1",
|
||||
"@react-native/babel-preset": "0.75.4",
|
||||
"@react-native/eslint-config": "0.75.4",
|
||||
"@react-native/gradle-plugin": "^0.79.2",
|
||||
"@react-native/metro-config": "0.75.4",
|
||||
"@react-native/typescript-config": "0.75.4",
|
||||
"@react-native-community/cli": "^16.0.3",
|
||||
"@react-native/babel-preset": "0.76.9",
|
||||
"@react-native/eslint-config": "0.76.9",
|
||||
"@react-native/gradle-plugin": "0.76.9",
|
||||
"@react-native/metro-config": "0.76.9",
|
||||
"@react-native/typescript-config": "0.76.9",
|
||||
"@tamagui/types": "1.126.14",
|
||||
"@testing-library/react-hooks": "^8.0.1",
|
||||
"@testing-library/react-native": "^13.2.0",
|
||||
@@ -160,7 +160,6 @@
|
||||
"@types/node-forge": "^1.3.3",
|
||||
"@types/react": "^18.3.4",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@types/react-native": "^0.73.0",
|
||||
"@types/react-native-dotenv": "^0.2.0",
|
||||
"@types/react-native-sqlite-storage": "^6.0.5",
|
||||
"@types/react-native-web": "^0",
|
||||
|
||||
@@ -30,7 +30,7 @@ describe('Android build.gradle Configuration', () => {
|
||||
});
|
||||
|
||||
it('sets the expected SDK version numbers', () => {
|
||||
expect(rootGradleContent).toMatch(/minSdkVersion\s*=\s*23/);
|
||||
expect(rootGradleContent).toMatch(/minSdkVersion\s*=\s*24/);
|
||||
expect(rootGradleContent).toMatch(/targetSdkVersion\s*=\s*35/);
|
||||
});
|
||||
|
||||
|
||||
@@ -338,10 +338,10 @@
|
||||
"nice:check": "yarn lint && yarn lint:imports:check",
|
||||
"prepublishOnly": "yarn build",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest",
|
||||
"test:ui": "vitest --ui",
|
||||
"test:exports": "node scripts/validateExports.js && node scripts/testExports.js",
|
||||
"test:scope": "vitest run tests/scope.test.ts",
|
||||
"test:ui": "vitest --ui",
|
||||
"test:watch": "vitest",
|
||||
"types": "tsc -p tsconfig.json"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -50,3 +50,12 @@ export { getSKIPEM } from './csca.js';
|
||||
export { initElliptic } from './certificate_parsing/elliptic.js';
|
||||
export { parseCertificateSimple } from './certificate_parsing/parseCertificateSimple.js';
|
||||
export { parseDscCertificateData } from './passports/passport_parsing/parseDscCertificateData.js';
|
||||
export {
|
||||
clientKey,
|
||||
clientPublicKeyHex,
|
||||
ec,
|
||||
encryptAES256GCM,
|
||||
getPayload,
|
||||
getWSDbRelayerUrl,
|
||||
} from './proving.js';
|
||||
export type { TEEPayload, TEEPayloadBase, TEEPayloadDisclose } from './proving.js';
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
"test:license-headers": "cd scripts/tests && node check-license-headers.test.mjs",
|
||||
"types": "yarn workspaces foreach --topological-dev --parallel --exclude @selfxyz/contracts -i --all run types "
|
||||
},
|
||||
"resolutions": {
|
||||
"@typescript-eslint/eslint-plugin": "^8.39.0",
|
||||
"@typescript-eslint/parser": "^8.39.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.0.0",
|
||||
"gitleaks": "1.0.0",
|
||||
@@ -36,10 +40,6 @@
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"typescript": "^5.9.2"
|
||||
},
|
||||
"resolutions": {
|
||||
"@typescript-eslint/eslint-plugin": "^8.39.0",
|
||||
"@typescript-eslint/parser": "^8.39.0"
|
||||
},
|
||||
"packageManager": "yarn@4.6.0",
|
||||
"engines": {
|
||||
"node": ">=22 <23"
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
"test": "vitest run",
|
||||
"test:build": "yarn build && yarn test && yarn types && yarn lint",
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit",
|
||||
"types": "yarn build",
|
||||
"types": "tsc -p tsconfig.json --noEmit",
|
||||
"validate:exports": "node ./scripts/validate-exports.mjs",
|
||||
"validate:pkg": "node ./scripts/verify-conditions.mjs"
|
||||
},
|
||||
@@ -58,11 +58,6 @@
|
||||
"@selfxyz/common": "workspace:*",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18.3.1",
|
||||
"react-native": "^0.75.4",
|
||||
"tamagui": "^1.126.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/react": "^14.1.2",
|
||||
"@types/react": "^18.3.4",
|
||||
@@ -77,11 +72,16 @@
|
||||
"jsdom": "^24.0.0",
|
||||
"prettier": "^3.5.3",
|
||||
"react": "^18.3.1",
|
||||
"react-native": "0.75.4",
|
||||
"react-native": "0.76.9",
|
||||
"tsup": "^8.0.1",
|
||||
"typescript": "^5.9.2",
|
||||
"vitest": "^1.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18.3.1",
|
||||
"react-native": "^0.76.9",
|
||||
"tamagui": "^1.126.0"
|
||||
},
|
||||
"packageManager": "yarn@4.6.0",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -32,7 +32,7 @@ describe('check-package-versions', () => {
|
||||
'poseidon-lite': '^0.3.0',
|
||||
snarkjs: '^0.7.5',
|
||||
react: '^18.3.1',
|
||||
'react-native': '0.75.4',
|
||||
'react-native': '0.76.9',
|
||||
'@tamagui/config': '1.126.14',
|
||||
'@tamagui/lucide-icons': '1.126.14',
|
||||
typescript: '^5.9.2',
|
||||
@@ -198,7 +198,7 @@ jobs:
|
||||
const pkg1 = {
|
||||
dependencies: {
|
||||
react: '^18.3.1',
|
||||
'react-native': '0.75.4',
|
||||
'react-native': '0.76.9',
|
||||
},
|
||||
};
|
||||
const pkg2 = {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "scripts-tests",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Tests for project scripts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "node check-license-headers.test.mjs",
|
||||
"test:license-headers": "node check-license-headers.test.mjs"
|
||||
|
||||
Reference in New Issue
Block a user