SEL-56: Setup Yarn Workspaces (#584)

This commit is contained in:
Aaron DeRuvo
2025-06-04 11:37:32 +02:00
committed by GitHub
parent 0c8c87362b
commit 0e9c59c0fb
203 changed files with 16353 additions and 23226 deletions

View File

@@ -22,9 +22,8 @@ runs:
with:
node-version: 20
cache: 'yarn'
cache-dependency-path: ${{ inputs.working_directory }}/yarn.lock
cache-dependency-path: yarn.lock
- name: Install dependencies
shell: bash
run: yarn install --immutable
working-directory: ${{ inputs.working_directory }}

View File

@@ -3,6 +3,7 @@ name: App CI
on:
push:
paths:
- "common/**"
- "app/**"
- ".github/workflows/app.yml"
- ".github/actions/**"
@@ -14,8 +15,6 @@ jobs:
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
with:
working_directory: ./app
- name: Run linter
run: yarn lint
working-directory: ./app
@@ -29,10 +28,9 @@ jobs:
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
with:
working_directory: ./app
- name: Install app dependencies
run: yarn install-app
- name: Build
run: yarn build:deps
working-directory: ./app
- name: Test
run: yarn test

View File

@@ -1,4 +1,4 @@
name: OpenPassport CI/CD
name: Self Circuits CI/CD
on:
push:
branches:
@@ -50,21 +50,19 @@ jobs:
- name: Print Circom version
run: circom --version
- name: "enable yarn"
run: corepack enable yarn
- name: Install Yarn dependencies
working-directory: ./circuits
run: yarn install-circuits --immutable
run: yarn workspaces focus @selfxyz/circuits
- name: Run lint
working-directory: ./circuits
run: yarn lint
- name: Build (Circuits + Self dependencies)
run: yarn build:deps
working-directory: ./circuits
- name: Run Tests (Circuits)
working-directory: ./circuits
env:
FULL_TEST_SUITE: false
run: yarn test
- name: Run Tests (Common)
working-directory: ./common
run: yarn test

41
.github/workflows/contracts.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Self Contracts CI/CD
on:
push:
branches:
- dev
- main
paths:
- 'contracts/**'
- 'common/**'
pull_request:
branches:
- dev
- main
paths:
- 'contracts/**'
- 'common/**'
jobs:
test_contracts:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
environment: development
steps:
- uses: actions/checkout@v4
- name: Set Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build Common Dependencies
run: yarn workspace @selfxyz/common build
- name: Build Contracts)
run: yarn build
working-directory: ./contracts
- name: Run Tests (Contracts)
working-directory: ./contracts
# skip until they get fixed
if: false
run: yarn test

34
.github/workflows/general-checks.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: General Self CI
on:
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Run linter
run: yarn lint
type-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build dependencies
shell: bash
run: yarn types
test-common:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build dependencies
shell: bash
run: yarn workspace @selfxyz/common build
- name: Run @selfxyz/common tests
run: yarn workspace @selfxyz/common test

View File

@@ -7,6 +7,7 @@ on:
paths:
- 'sdk/core/package.json'
- 'sdk/qrcode/package.json'
- 'common/package.json'
jobs:
detect-changes:
@@ -14,54 +15,55 @@ jobs:
outputs:
core_changed: ${{ steps.check-version.outputs.core_changed }}
qrcode_changed: ${{ steps.check-version.outputs.qrcode_changed }}
common_changed: ${{ steps.check-version.outputs.common_changed }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Check for version changes
id: check-version
run: |
git diff HEAD^ HEAD --name-only | grep -q "sdk/core/package.json" && echo "core_changed=true" >> $GITHUB_OUTPUT || echo "core_changed=false" >> $GITHUB_OUTPUT
git diff HEAD^ HEAD --name-only | grep -q "sdk/qrcode/package.json" && echo "qrcode_changed=true" >> $GITHUB_OUTPUT || echo "qrcode_changed=false" >> $GITHUB_OUTPUT
git diff HEAD^ HEAD --name-only | grep -q "common/package.json" && echo "common_changed=true" >> $GITHUB_OUTPUT || echo "common_changed=false" >> $GITHUB_OUTPUT
if git diff HEAD^ HEAD -- sdk/core/package.json | grep -q '"version":'; then
echo "core_changed=true" >> $GITHUB_OUTPUT
fi
if git diff HEAD^ HEAD -- sdk/qrcode/package.json | grep -q '"version":'; then
echo "qrcode_changed=true" >> $GITHUB_OUTPUT
fi
if git diff HEAD^ HEAD -- common/package.json | grep -q '"version":'; then
echo "common_changed=true" >> $GITHUB_OUTPUT
fi
publish-core:
needs: detect-changes
if: needs.detect-changes.outputs.core_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies (common first)
run: |
cd common
yarn install
cd ../sdk/core
yarn install
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build package
run: |
cd sdk/core
yarn build
yarn workspace @selfxyz/core build:deps
- name: Publish to npm
working-directory: sdk/core
run: |
cd sdk/core
npm publish --access public
yarn npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -71,28 +73,49 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies (common first)
run: |
cd common
yarn install
cd ../sdk/qrcode
yarn install
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build package
run: |
cd sdk/qrcode
yarn build
yarn workspace @sdk/qrcode build:deps
- name: Publish to npm
working-directory: sdk/qrcode
run: |
cd sdk/qrcode
npm publish --access public
yarn npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-common:
needs: detect-changes
if: needs.detect-changes.outputs.common_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
registry-url: 'https://registry.npmjs.org'
- uses: actions/checkout@v4
- name: Install Dependencies
uses: ./.github/actions/yarn-install
- name: Build package
run: |
yarn workspace @selfxyz/common build
- name: Publish to npm
working-directory: common
run: |
yarn npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

3
.gitignore vendored
View File

@@ -7,4 +7,5 @@ dist
showcase
.codegpt
**/.yarn/
output/*
output/*
*.tsbuildinfo

3
.watchmanconfig Normal file
View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -1,7 +1,11 @@
module.exports = {
root: true,
extends: ['@react-native', 'plugin:prettier/recommended'],
plugins: ['simple-import-sort', 'prettier'],
extends: [
'@react-native',
'plugin:prettier/recommended',
'plugin:jest/recommended',
],
plugins: ['simple-import-sort', 'prettier', 'jest'],
ignorePatterns: ['ios/', 'android/', 'deployments/', 'node_modules/'],
rules: {
// Import sorting rules

1
app/.tool-versions Normal file
View File

@@ -0,0 +1 @@
ruby 3.2.6

View File

@@ -1,3 +1,2 @@
nodeLinker: node-modules
enableScripts: true
checksumBehavior: 'update'

View File

@@ -32,10 +32,11 @@
> All of the commands in this guide are run from the `self/app` directory
Install dependencies
Install dependencies + build
```bash
yarn install
yarn install-app
```
### Android

View File

@@ -12,13 +12,13 @@ apply plugin: 'com.google.gms.google-services'
react {
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '../..'
// root = file("../../")
root = file("../..")
// The folder where the react-native NPM package is. Default is ../../node_modules/react-native
// reactNativeDir = file("../../node_modules/react-native")
reactNativeDir = file("../../../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
// codegenDir = file("../../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/react-native/cli.js")
cliFile = file("../../../node_modules/react-native/cli.js")
/* Variants */
// The list of variants to that are debuggable. For those we're going to

View File

@@ -37,10 +37,10 @@ allprojects {
google()
mavenCentral()
maven {
url("$rootDir/../node_modules/react-native/android")
url("$rootDir/../../node_modules/react-native/android")
}
maven {
url("$rootDir/../node_modules/jsc-android/dist")
url("$rootDir/../../node_modules/jsc-android/dist")
}
maven { url 'https://jitpack.io' }
jcenter()

View File

@@ -8,90 +8,6 @@
{
"path": "src/assets/fonts/DINOT-Medium.otf",
"sha1": "e993d15a13bc4e2c66dac255d7fa569486345f88"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Black.otf",
"sha1": "5df89a5ca8b710fac50ccde5539bc2aececb184c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-BlackItalic.otf",
"sha1": "a2988d597f61e19ee05a4b7404086b8ca43d0731"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Bold.otf",
"sha1": "892e9a770a5340e46c9c7d9f25fa2699d9275923"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-BoldItalic.otf",
"sha1": "8774206d7703bfe27f6d5302e5385983c26e13a1"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraBold.otf",
"sha1": "d458dab978fd1894de0eed6adacacb4853596473"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraBoldItalic.otf",
"sha1": "e63778737330052f9015dbd76ba904fcf05b87d7"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraLight.otf",
"sha1": "2c396705e77547af57076584bdd5895c2c81141a"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraLightItalic.otf",
"sha1": "d367b8910d04480c7cf0be5bb87126170e676c2b"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Italic.otf",
"sha1": "1d8db12a427db7418be418b77bafb9a916ac0534"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Light.otf",
"sha1": "c89f3036b53490be4b25d15e9a3cd4caf3e67d0c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-LightItalic.otf",
"sha1": "6716c0590ef33f9ca0155cd5c5d99f8ca90b5834"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Medium.otf",
"sha1": "279fa3c60d682531d549d0ec9ed91f1b83402d40"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-MediumItalic.otf",
"sha1": "89d0a6cca45c1ac1cb30c1957b9520b703c42933"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Regular.otf",
"sha1": "4786a0feb4c853189782709a5ac5b5dfb696942b"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-SemiBold.otf",
"sha1": "ce2ccd0b91ffb1f8c894b6d60f21443e0769217c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-SemiBoldItalic.otf",
"sha1": "8cf127ce6e16f95dccdae0eb553493d625bd0756"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Thin.otf",
"sha1": "b9a1ad08b8f1724544ae075d66c98b7fb507b80d"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ThinItalic.otf",
"sha1": "cf2dcfd6aa812f641e3d2c81af69a6c553539083"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscr.ttf",
"sha1": "417bc8219cf9d819c538c052397f3352dda426a7"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscr.woff",
"sha1": "30d9b6f1b318c955d613dcf18d572f9aee9a35c8"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscrb.ttf",
"sha1": "a960fd4e201077cda027756743c344ffcb8285fb"
}
]
}

View File

@@ -1,10 +1,10 @@
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
pluginManagement { includeBuild("../../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
rootProject.name = 'OpenPassport'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')
includeBuild('../../node_modules/@react-native/gradle-plugin')
include ':react-native-passport-reader'
project(':react-native-passport-reader').projectDir = new File(rootProject.projectDir, './react-native-passport-reader/android')
include ':passportreader'
project(':passportreader').projectDir = new File(rootProject.projectDir, './android-passport-reader/app')
project(':passportreader').projectDir = new File(rootProject.projectDir, './android-passport-reader/app')

View File

@@ -1,4 +1,4 @@
{
"name": "OpenPassport",
"displayName": "OpenPassport"
"displayName": "Self App"
}

View File

@@ -18,14 +18,14 @@ class MRZScannerModule: NSObject, RCTBridgeModule {
static func requiresMainQueueSetup() -> Bool {
return true
}
@objc func startScanning(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
DispatchQueue.main.async {
guard let rootViewController = UIApplication.shared.keyWindow?.rootViewController else {
reject("error", "Unable to find root view controller", nil)
return
}
var hostingController: UIHostingController<ScannerWithInstructions>? = nil
var scannerView = QKMRZScannerViewRepresentable()
let lottieView = LottieView(animationFileName: "passport", loopMode: .loop)
@@ -34,21 +34,21 @@ class MRZScannerModule: NSObject, RCTBridgeModule {
// Format dates to YYMMDD format
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyMMdd"
let birthDate = scanResult.birthdate.map { dateFormatter.string(from: $0) } ?? ""
let expiryDate = scanResult.expiryDate.map { dateFormatter.string(from: $0) } ?? ""
let resultDict: [String: Any] = [
"documentNumber": scanResult.documentNumber,
"expiryDate": expiryDate,
"birthDate": birthDate
]
resolve(resultDict)
// Dismiss the hosting controller after scanning
hostingController?.dismiss(animated: true, completion: nil)
hostingController?.dismiss(animated: true, completion: nil)
}
// Wrap the scanner view and instruction text in a new SwiftUI view
let scannerWithInstructions = ScannerWithInstructions(scannerView: scannerView, lottieView: lottieView)
hostingController = UIHostingController(rootView: scannerWithInstructions)
@@ -65,11 +65,11 @@ class MRZScannerModule: NSObject, RCTBridgeModule {
struct ScannerWithInstructions: View {
var scannerView: QKMRZScannerViewRepresentable
var lottieView: LottieView
var body: some View {
ZStack {
Color.white.ignoresSafeArea() // This creates a white background for the entire view
VStack {
ZStack {
scannerView
@@ -81,7 +81,6 @@ struct ScannerWithInstructions: View {
}
.frame(height: 320)
Text("Hold your passport on a flat surface while scanning")
.font(.custom("Inter-Regular", size: 20))
.foregroundColor(.black)
.multilineTextAlignment(.center)
.frame(width: 300)
@@ -89,4 +88,4 @@ struct ScannerWithInstructions: View {
}
}
}
}
}

View File

@@ -9,7 +9,7 @@
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleGetInfoString</key>
<string />
<string></string>
<key>CFBundleIconName</key>
<string>AppIcon</string>
<key>CFBundleIdentifier</key>
@@ -24,53 +24,6 @@
<string>2.5.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSApplicationCategoryType</key>
<string />
<key>LSRequiresIPhoneOS</key>
<true />
<key>NFCReaderUsageDescription</key>
<string>Need NFC to read Passport</string>
<key>NSAppTransportSecurity</key>
<string />
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
<key>NSAllowsArbitraryLoads</key>
<false />
<key>NSAllowsLocalNetworking</key>
<true />
<key>ITSAppUsesNonExemptEncryption</key>
<false />
<key>NSCameraUsageDescription</key>
<string>Needed to scan the passport MRZ.</string>
<key>NSFaceIDUsageDescription</key>
<string>Needed to secure the secret</string>
<key>NSHumanReadableCopyright</key>
<string />
<key>NSLocationWhenInUseUsageDescription</key>
<string />
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library to allow you to choose passport photos or save generated QR codes.</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false />
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
<string>A0000002472001</string>
<string>00000000000000</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -80,30 +33,37 @@
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NFCReaderUsageDescription</key>
<string>Need NFC to read Passport</string>
<!-- Do not change NSAllowsArbitraryLoads to true, or you will risk app rejection! -->
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSAppTransportSecurity</key>
<string></string>
<key>NSCameraUsageDescription</key>
<string>Needed to scan the passport MRZ.</string>
<key>NSFaceIDUsageDescription</key>
<string>Needed to secure the secret</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library to allow you to choose passport photos or save generated QR codes.</string>
<key>UIAppFonts</key>
<array>
<string>Advercase-Regular.otf</string>
<string>DINOT-Medium.otf</string>
<string>Inter-Black.otf</string>
<string>Inter-BlackItalic.otf</string>
<string>Inter-Bold.otf</string>
<string>Inter-BoldItalic.otf</string>
<string>Inter-ExtraBold.otf</string>
<string>Inter-ExtraBoldItalic.otf</string>
<string>Inter-ExtraLight.otf</string>
<string>Inter-ExtraLightItalic.otf</string>
<string>Inter-Italic.otf</string>
<string>Inter-Light.otf</string>
<string>Inter-LightItalic.otf</string>
<string>Inter-Medium.otf</string>
<string>Inter-MediumItalic.otf</string>
<string>Inter-Regular.otf</string>
<string>Inter-SemiBold.otf</string>
<string>Inter-SemiBoldItalic.otf</string>
<string>Inter-Thin.otf</string>
<string>Inter-ThinItalic.otf</string>
<string>slkscr.ttf</string>
<string>slkscrb.ttf</string>
</array>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
@@ -112,5 +72,27 @@
<string>fetch</string>
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
<key>UIStatusBarHidden</key>
<false/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>A0000002471001</string>
<string>A0000002472001</string>
<string>00000000000000</string>
</array>
</dict>
</plist>

View File

@@ -1,3 +1,4 @@
source 'https://cdn.cocoapods.org/'
use_frameworks!
require "tmpdir"
@@ -30,7 +31,7 @@ target "Self" do
pod "QKMRZScanner"
pod "lottie-ios"
pod "SwiftQRScanner", :git => "https://github.com/vinodiOS/SwiftQRScanner"
pod "RNReactNativeHapticFeedback", :path => "../node_modules/react-native-haptic-feedback", :modular_headers => true
pod "RNReactNativeHapticFeedback", :path => "../../node_modules/react-native-haptic-feedback", :modular_headers => true
use_react_native!(
:path => config[:reactNativePath],

View File

@@ -1406,7 +1406,7 @@ PODS:
- React-Core
- react-native-nfc-manager (3.16.1):
- React-Core
- react-native-quick-crypto (0.7.12):
- react-native-quick-crypto (0.7.13):
- DoubleConversion
- glog
- OpenSSL-Universal
@@ -1429,7 +1429,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context (5.2.0):
- react-native-safe-area-context (5.4.1):
- React-Core
- react-native-sqlite-storage (6.0.1):
- React-Core
@@ -1676,7 +1676,7 @@ PODS:
- React-logger (= 0.75.4)
- React-perflogger (= 0.75.4)
- React-utils (= 0.75.4)
- RNCAsyncStorage (2.1.1):
- RNCAsyncStorage (2.1.2):
- React-Core
- RNCClipboard (1.13.2):
- React-Core
@@ -1690,7 +1690,7 @@ PODS:
- FirebaseCoreExtension
- React-Core
- RNFBApp
- RNGestureHandler (2.24.0):
- RNGestureHandler (2.25.0):
- DoubleConversion
- glog
- RCT-Folly (= 2024.01.01.00)
@@ -1711,7 +1711,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- RNGoogleSignin (13.2.0):
- RNGoogleSignin (13.3.1):
- GoogleSignIn (~> 7.1)
- React-Core
- RNKeychain (10.0.0):
@@ -1802,7 +1802,7 @@ PODS:
- ReactCommon/turbomodule/core
- Sentry/HybridSDK (= 8.48.0)
- Yoga
- RNSVG (15.11.1):
- RNSVG (15.12.0):
- React-Core
- segment-analytics-react-native (2.21.0):
- React-Core
@@ -1820,103 +1820,103 @@ PODS:
- Yoga (0.0.0)
DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- boost (from `../../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../../node_modules/react-native/Libraries/FBLazyVector`)
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseMessaging
- fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- fmt (from `../../node_modules/react-native/third-party-podspecs/fmt.podspec`)
- glog (from `../../node_modules/react-native/third-party-podspecs/glog.podspec`)
- GoogleUtilities
- lottie-ios
- lottie-react-native (from `../node_modules/lottie-react-native`)
- lottie-react-native (from `../../node_modules/lottie-react-native`)
- NFCPassportReader (from `https://github.com/zk-passport/NFCPassportReader`, commit `e3e869b14fb7fb2417928079db3967f203523580`)
- QKMRZScanner
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
- RCTRequired (from `../node_modules/react-native/Libraries/Required`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Core (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
- React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
- React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
- React-Fabric (from `../node_modules/react-native/ReactCommon`)
- React-FabricComponents (from `../node_modules/react-native/ReactCommon`)
- React-FabricImage (from `../node_modules/react-native/ReactCommon`)
- React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
- React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
- React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
- React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
- React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
- React-jsc (from `../node_modules/react-native/ReactCommon/jsc`)
- React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
- React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
- React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
- React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
- react-native-biometrics (from `../node_modules/react-native-biometrics`)
- react-native-cloud-storage (from `../node_modules/react-native-cloud-storage`)
- react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-nfc-manager (from `../node_modules/react-native-nfc-manager`)
- react-native-quick-crypto (from `../node_modules/react-native-quick-crypto`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-sqlite-storage (from `../node_modules/react-native-sqlite-storage`)
- React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
- React-RCTFabric (from `../node_modules/react-native/React`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)
- React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
- React-rncore (from `../node_modules/react-native/ReactCommon`)
- React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
- React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
- RCT-Folly (from `../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTDeprecation (from `../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
- RCTRequired (from `../../node_modules/react-native/Libraries/Required`)
- RCTTypeSafety (from `../../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../../node_modules/react-native/`)
- React-callinvoker (from `../../node_modules/react-native/ReactCommon/callinvoker`)
- React-Core (from `../../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../../node_modules/react-native/`)
- React-CoreModules (from `../../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../../node_modules/react-native/ReactCommon/cxxreact`)
- React-debug (from `../../node_modules/react-native/ReactCommon/react/debug`)
- React-defaultsnativemodule (from `../../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
- React-domnativemodule (from `../../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
- React-Fabric (from `../../node_modules/react-native/ReactCommon`)
- React-FabricComponents (from `../../node_modules/react-native/ReactCommon`)
- React-FabricImage (from `../../node_modules/react-native/ReactCommon`)
- React-featureflags (from `../../node_modules/react-native/ReactCommon/react/featureflags`)
- React-featureflagsnativemodule (from `../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
- React-graphics (from `../../node_modules/react-native/ReactCommon/react/renderer/graphics`)
- React-idlecallbacksnativemodule (from `../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
- React-ImageManager (from `../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
- React-jsc (from `../../node_modules/react-native/ReactCommon/jsc`)
- React-jserrorhandler (from `../../node_modules/react-native/ReactCommon/jserrorhandler`)
- React-jsi (from `../../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../../node_modules/react-native/ReactCommon/jsinspector-modern`)
- React-jsitracing (from `../../node_modules/react-native/ReactCommon/hermes/executor/`)
- React-logger (from `../../node_modules/react-native/ReactCommon/logger`)
- React-Mapbuffer (from `../../node_modules/react-native/ReactCommon`)
- React-microtasksnativemodule (from `../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
- react-native-biometrics (from `../../node_modules/react-native-biometrics`)
- react-native-cloud-storage (from `../../node_modules/react-native-cloud-storage`)
- react-native-get-random-values (from `../../node_modules/react-native-get-random-values`)
- "react-native-netinfo (from `../../node_modules/@react-native-community/netinfo`)"
- react-native-nfc-manager (from `../../node_modules/react-native-nfc-manager`)
- react-native-quick-crypto (from `../../node_modules/react-native-quick-crypto`)
- react-native-safe-area-context (from `../../node_modules/react-native-safe-area-context`)
- react-native-sqlite-storage (from `../../node_modules/react-native-sqlite-storage`)
- React-nativeconfig (from `../../node_modules/react-native/ReactCommon`)
- React-NativeModulesApple (from `../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-perflogger (from `../../node_modules/react-native/ReactCommon/reactperflogger`)
- React-performancetimeline (from `../../node_modules/react-native/ReactCommon/react/performance/timeline`)
- React-RCTActionSheet (from `../../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTAppDelegate (from `../../node_modules/react-native/Libraries/AppDelegate`)
- React-RCTBlob (from `../../node_modules/react-native/Libraries/Blob`)
- React-RCTFabric (from `../../node_modules/react-native/React`)
- React-RCTImage (from `../../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../../node_modules/react-native/Libraries/Vibration`)
- React-rendererconsistency (from `../../node_modules/react-native/ReactCommon/react/renderer/consistency`)
- React-rendererdebug (from `../../node_modules/react-native/ReactCommon/react/renderer/debug`)
- React-rncore (from `../../node_modules/react-native/ReactCommon`)
- React-RuntimeApple (from `../../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
- React-RuntimeCore (from `../../node_modules/react-native/ReactCommon/react/runtime`)
- React-runtimeexecutor (from `../../node_modules/react-native/ReactCommon/runtimeexecutor`)
- React-runtimescheduler (from `../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-utils (from `../../node_modules/react-native/ReactCommon/react/utils`)
- ReactCodegen (from `build/generated/ios`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- "RNFBApp (from `../node_modules/@react-native-firebase/app`)"
- "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)"
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- "RNGoogleSignin (from `../node_modules/@react-native-google-signin/google-signin`)"
- RNKeychain (from `../node_modules/react-native-keychain`)
- RNLocalize (from `../node_modules/react-native-localize`)
- RNReactNativeHapticFeedback (from `../node_modules/react-native-haptic-feedback`)
- RNScreens (from `../node_modules/react-native-screens`)
- "RNSentry (from `../node_modules/@sentry/react-native`)"
- RNSVG (from `../node_modules/react-native-svg`)
- "segment-analytics-react-native (from `../node_modules/@segment/analytics-react-native`)"
- ReactCommon/turbomodule/core (from `../../node_modules/react-native/ReactCommon`)
- "RNCAsyncStorage (from `../../node_modules/@react-native-async-storage/async-storage`)"
- "RNCClipboard (from `../../node_modules/@react-native-clipboard/clipboard`)"
- RNDeviceInfo (from `../../node_modules/react-native-device-info`)
- "RNFBApp (from `../../node_modules/@react-native-firebase/app`)"
- "RNFBMessaging (from `../../node_modules/@react-native-firebase/messaging`)"
- RNGestureHandler (from `../../node_modules/react-native-gesture-handler`)
- "RNGoogleSignin (from `../../node_modules/@react-native-google-signin/google-signin`)"
- RNKeychain (from `../../node_modules/react-native-keychain`)
- RNLocalize (from `../../node_modules/react-native-localize`)
- RNReactNativeHapticFeedback (from `../../node_modules/react-native-haptic-feedback`)
- RNScreens (from `../../node_modules/react-native-screens`)
- "RNSentry (from `../../node_modules/@sentry/react-native`)"
- RNSVG (from `../../node_modules/react-native-svg`)
- "segment-analytics-react-native (from `../../node_modules/@segment/analytics-react-native`)"
- Sentry
- SentryPrivate
- "sovran-react-native (from `../node_modules/@segment/sovran-react-native`)"
- "sovran-react-native (from `../../node_modules/@segment/sovran-react-native`)"
- SwiftQRScanner (from `https://github.com/vinodiOS/SwiftQRScanner`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
- Yoga (from `../../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
trunk:
@@ -1947,178 +1947,178 @@ SPEC REPOS:
EXTERNAL SOURCES:
boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
:podspec: "../../node_modules/react-native/third-party-podspecs/boost.podspec"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
:podspec: "../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
:path: "../node_modules/react-native/Libraries/FBLazyVector"
:path: "../../node_modules/react-native/Libraries/FBLazyVector"
fmt:
:podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
:podspec: "../../node_modules/react-native/third-party-podspecs/fmt.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
:podspec: "../../node_modules/react-native/third-party-podspecs/glog.podspec"
lottie-react-native:
:path: "../node_modules/lottie-react-native"
:path: "../../node_modules/lottie-react-native"
NFCPassportReader:
:commit: e3e869b14fb7fb2417928079db3967f203523580
:git: https://github.com/zk-passport/NFCPassportReader
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
:podspec: "../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTDeprecation:
:path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
:path: "../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
RCTRequired:
:path: "../node_modules/react-native/Libraries/Required"
:path: "../../node_modules/react-native/Libraries/Required"
RCTTypeSafety:
:path: "../node_modules/react-native/Libraries/TypeSafety"
:path: "../../node_modules/react-native/Libraries/TypeSafety"
React:
:path: "../node_modules/react-native/"
:path: "../../node_modules/react-native/"
React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker"
:path: "../../node_modules/react-native/ReactCommon/callinvoker"
React-Core:
:path: "../node_modules/react-native/"
:path: "../../node_modules/react-native/"
React-CoreModules:
:path: "../node_modules/react-native/React/CoreModules"
:path: "../../node_modules/react-native/React/CoreModules"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
:path: "../../node_modules/react-native/ReactCommon/cxxreact"
React-debug:
:path: "../node_modules/react-native/ReactCommon/react/debug"
:path: "../../node_modules/react-native/ReactCommon/react/debug"
React-defaultsnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
React-domnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/dom"
React-Fabric:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-FabricComponents:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-FabricImage:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-featureflags:
:path: "../node_modules/react-native/ReactCommon/react/featureflags"
:path: "../../node_modules/react-native/ReactCommon/react/featureflags"
React-featureflagsnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
React-graphics:
:path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
:path: "../../node_modules/react-native/ReactCommon/react/renderer/graphics"
React-idlecallbacksnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
React-ImageManager:
:path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
:path: "../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
React-jsc:
:path: "../node_modules/react-native/ReactCommon/jsc"
:path: "../../node_modules/react-native/ReactCommon/jsc"
React-jserrorhandler:
:path: "../node_modules/react-native/ReactCommon/jserrorhandler"
:path: "../../node_modules/react-native/ReactCommon/jserrorhandler"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
:path: "../../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
:path: "../../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
:path: "../../node_modules/react-native/ReactCommon/jsinspector-modern"
React-jsitracing:
:path: "../node_modules/react-native/ReactCommon/hermes/executor/"
:path: "../../node_modules/react-native/ReactCommon/hermes/executor/"
React-logger:
:path: "../node_modules/react-native/ReactCommon/logger"
:path: "../../node_modules/react-native/ReactCommon/logger"
React-Mapbuffer:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-microtasksnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
react-native-biometrics:
:path: "../node_modules/react-native-biometrics"
:path: "../../node_modules/react-native-biometrics"
react-native-cloud-storage:
:path: "../node_modules/react-native-cloud-storage"
:path: "../../node_modules/react-native-cloud-storage"
react-native-get-random-values:
:path: "../node_modules/react-native-get-random-values"
:path: "../../node_modules/react-native-get-random-values"
react-native-netinfo:
:path: "../node_modules/@react-native-community/netinfo"
:path: "../../node_modules/@react-native-community/netinfo"
react-native-nfc-manager:
:path: "../node_modules/react-native-nfc-manager"
:path: "../../node_modules/react-native-nfc-manager"
react-native-quick-crypto:
:path: "../node_modules/react-native-quick-crypto"
:path: "../../node_modules/react-native-quick-crypto"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
:path: "../../node_modules/react-native-safe-area-context"
react-native-sqlite-storage:
:path: "../node_modules/react-native-sqlite-storage"
:path: "../../node_modules/react-native-sqlite-storage"
React-nativeconfig:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-NativeModulesApple:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
:path: "../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-perflogger:
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
:path: "../../node_modules/react-native/ReactCommon/reactperflogger"
React-performancetimeline:
:path: "../node_modules/react-native/ReactCommon/react/performance/timeline"
:path: "../../node_modules/react-native/ReactCommon/react/performance/timeline"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
:path: "../../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
:path: "../../node_modules/react-native/Libraries/NativeAnimation"
React-RCTAppDelegate:
:path: "../node_modules/react-native/Libraries/AppDelegate"
:path: "../../node_modules/react-native/Libraries/AppDelegate"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
:path: "../../node_modules/react-native/Libraries/Blob"
React-RCTFabric:
:path: "../node_modules/react-native/React"
:path: "../../node_modules/react-native/React"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
:path: "../../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
:path: "../../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
:path: "../../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
:path: "../../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
:path: "../../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
:path: "../../node_modules/react-native/Libraries/Vibration"
React-rendererconsistency:
:path: "../node_modules/react-native/ReactCommon/react/renderer/consistency"
:path: "../../node_modules/react-native/ReactCommon/react/renderer/consistency"
React-rendererdebug:
:path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
:path: "../../node_modules/react-native/ReactCommon/react/renderer/debug"
React-rncore:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
React-RuntimeApple:
:path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
:path: "../../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
React-RuntimeCore:
:path: "../node_modules/react-native/ReactCommon/react/runtime"
:path: "../../node_modules/react-native/ReactCommon/react/runtime"
React-runtimeexecutor:
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
:path: "../../node_modules/react-native/ReactCommon/runtimeexecutor"
React-runtimescheduler:
:path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
:path: "../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
React-utils:
:path: "../node_modules/react-native/ReactCommon/react/utils"
:path: "../../node_modules/react-native/ReactCommon/react/utils"
ReactCodegen:
:path: build/generated/ios
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
:path: "../../node_modules/react-native/ReactCommon"
RNCAsyncStorage:
:path: "../node_modules/@react-native-async-storage/async-storage"
:path: "../../node_modules/@react-native-async-storage/async-storage"
RNCClipboard:
:path: "../node_modules/@react-native-clipboard/clipboard"
:path: "../../node_modules/@react-native-clipboard/clipboard"
RNDeviceInfo:
:path: "../node_modules/react-native-device-info"
:path: "../../node_modules/react-native-device-info"
RNFBApp:
:path: "../node_modules/@react-native-firebase/app"
:path: "../../node_modules/@react-native-firebase/app"
RNFBMessaging:
:path: "../node_modules/@react-native-firebase/messaging"
:path: "../../node_modules/@react-native-firebase/messaging"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
:path: "../../node_modules/react-native-gesture-handler"
RNGoogleSignin:
:path: "../node_modules/@react-native-google-signin/google-signin"
:path: "../../node_modules/@react-native-google-signin/google-signin"
RNKeychain:
:path: "../node_modules/react-native-keychain"
:path: "../../node_modules/react-native-keychain"
RNLocalize:
:path: "../node_modules/react-native-localize"
:path: "../../node_modules/react-native-localize"
RNReactNativeHapticFeedback:
:path: "../node_modules/react-native-haptic-feedback"
:path: "../../node_modules/react-native-haptic-feedback"
RNScreens:
:path: "../node_modules/react-native-screens"
:path: "../../node_modules/react-native-screens"
RNSentry:
:path: "../node_modules/@sentry/react-native"
:path: "../../node_modules/@sentry/react-native"
RNSVG:
:path: "../node_modules/react-native-svg"
:path: "../../node_modules/react-native-svg"
segment-analytics-react-native:
:path: "../node_modules/@segment/analytics-react-native"
:path: "../../node_modules/@segment/analytics-react-native"
sovran-react-native:
:path: "../node_modules/@segment/sovran-react-native"
:path: "../../node_modules/@segment/sovran-react-native"
SwiftQRScanner:
:git: https://github.com/vinodiOS/SwiftQRScanner
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
:path: "../../node_modules/react-native/ReactCommon/yoga"
CHECKOUT OPTIONS:
NFCPassportReader:
@@ -2190,8 +2190,8 @@ SPEC CHECKSUMS:
react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba
react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187
react-native-nfc-manager: a280ef94cd4871a471b052f0dc70381cf1223049
react-native-quick-crypto: a7cc5f870f270488fee9047b56e481de85c32e33
react-native-safe-area-context: 3e33e7c43c8b74dba436a5a32651cb8d7064c740
react-native-quick-crypto: 2d8136faf9e82a8f396a9b5ad85203ac20212739
react-native-safe-area-context: dde2052b903c11d677c320b599c3244021c34ce8
react-native-sqlite-storage: 0c84826214baaa498796c7e46a5ccc9a82e114ed
React-nativeconfig: 31072ab0146e643594f6959c7f970a04b6c9ddd0
React-NativeModulesApple: 4ffcab4cdf34002540799bffbedd6466e8023c3a
@@ -2216,21 +2216,21 @@ SPEC CHECKSUMS:
React-runtimeexecutor: ea90d8e3a9e0f4326939858dafc6ab17c031a5d3
React-runtimescheduler: 6b33edee8c830c7926670df4232d51f4f6a82795
React-utils: 7198bd077f07ce8f9263c05bf610da6e251058ad
ReactCodegen: a2d336e0bec3d2f45475df55e7a02cc4e4c19623
ReactCodegen: fbd3d6af21ba08f12ccd0f542393393d21134ea5
ReactCommon: b02a50498cb1071cd793044ddbd5d2b5f4db0a34
RNCAsyncStorage: af7b591318005069c3795076addc83a4dd5c0a2e
RNCAsyncStorage: b9f5f78da5d16a853fe3dc22e8268d932fc45a83
RNCClipboard: 4abb037e8fe3b98a952564c9e0474f91c492df6d
RNDeviceInfo: d863506092aef7e7af3a1c350c913d867d795047
RNFBApp: 4097f75673f8b42a7cd1ba17e6ea85a94b45e4d1
RNFBMessaging: 92325b0d5619ac90ef023a23cfd16fd3b91d0a88
RNGestureHandler: 9c3877d98d4584891b69d16ebca855ac46507f4d
RNGoogleSignin: b8760528f2a7cbe157ecfdcc13bdb7d2745c9389
RNGestureHandler: ffb1f106c7a78377a2ae7568d51ccf87dc5c83c6
RNGoogleSignin: 576a84dd0407b912e7a0adf07492de9feb79e5d9
RNKeychain: 4990d9be2916c60f9ed4f8c484fcd7ced4828b86
RNLocalize: 15463c4d79c7da45230064b4adcf5e9bb984667e
RNReactNativeHapticFeedback: e19b9b2e2ecf5593de8c4ef1496e1e31ae227514
RNScreens: b7e8d29c6be98f478bc3fb4a97cc770aa9ba7509
RNSentry: c462461c0a5aaba206265f1f3db01b237cd33239
RNSVG: 46769c92d1609e617dbf9326ad8a0cff912d0982
RNSVG: e3ad69848b6357587545e0a49628b1148acf082c
segment-analytics-react-native: dab2ae61d917629b8d040b572f9f7a11b2cc5940
Sentry: 1ca8405451040482877dcd344dfa3ef80b646631
SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe
@@ -2240,6 +2240,6 @@ SPEC CHECKSUMS:
SwiftyTesseract: 1f3d96668ae92dc2208d9842c8a59bea9fad2cbb
Yoga: b05994d1933f507b0a28ceaa4fdb968dc18da178
PODFILE CHECKSUM: 4c1f9edcbeb4d0ce27f59c7f64ba1f803e06511d
PODFILE CHECKSUM: 2b4d221f59ee4daed11d52338f4dd84d2081bcc6
COCOAPODS: 1.16.2

View File

@@ -8,7 +8,6 @@
/* Begin PBXBuildFile section */
05D985FB2BB3344600F58EEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 05D985FA2BB3344600F58EEA /* Assets.xcassets */; };
12FDE04D2B784D978F7804C0 /* Inter-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = 4B261C28061D47B7B3BB3E37 /* Inter-Black.otf */; };
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
@@ -24,39 +23,19 @@
1686F0E02C500FBD00841CDE /* QRScannerBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 1686F0DF2C500FBD00841CDE /* QRScannerBridge.m */; };
16E6646E2B8D292500FDD6A0 /* QKMRZScannerViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E6646D2B8D292500FDD6A0 /* QKMRZScannerViewRepresentable.swift */; };
16E884A52C5BD764003B7125 /* passport.json in Resources */ = {isa = PBXBuildFile; fileRef = 16E884A42C5BD764003B7125 /* passport.json */; };
4A1791A6108347E5A635DB1C /* Inter-ThinItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = EEA2A4D24A8F4B10A5ECA607 /* Inter-ThinItalic.otf */; };
5008C8140A304ED79DB817C5 /* slkscrb.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B4E7218406B64A95BCE0DFE4 /* slkscrb.ttf */; };
5C66B65890614C638590DC8A /* Inter-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8CE3CC4CFFC24314A22F1391 /* Inter-ExtraBold.otf */; };
61037530CB0A4C159B892CDC /* Inter-ExtraLight.otf in Resources */ = {isa = PBXBuildFile; fileRef = 64F386964AAE4C1E8F2DF789 /* Inter-ExtraLight.otf */; };
628102DA686542B2A5D06A54 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8448FE310A674E8DAA7F1CB5 /* Inter-SemiBoldItalic.otf */; };
799E4D28B9494C6BAA389F52 /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 0C36821E5B014740853946D5 /* Inter-Italic.otf */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
827AB97C3F4C4DA88293E5FF /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 276287D0D37B4E8EBD7A1ABD /* Inter-SemiBold.otf */; };
905B70052A72767900AFA232 /* PassportReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905B70042A72767900AFA232 /* PassportReader.swift */; };
905B70072A72774000AFA232 /* PassportReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 905B70062A72774000AFA232 /* PassportReader.m */; };
9C694E1EF05C49DF85423A6A /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3BF771EA645241D9A28A3AE9 /* Inter-Bold.otf */; };
A109328F471241A5A931D524 /* Inter-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 070CF9E82E3E45DAB6BBA375 /* Inter-Light.otf */; };
AE6147EC2DC95A8D00445C0F /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = AE6147EB2DC95A8D00445C0F /* GoogleService-Info.plist */; };
B0885FC3EE2A41A1AA97EEC0 /* Inter-LightItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = F4AE10DA498844DF8BF01948 /* Inter-LightItalic.otf */; };
BF1044812DD53540009B3688 /* LiveMRZScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1044802DD53540009B3688 /* LiveMRZScannerView.swift */; };
BF1044832DD5354F009B3688 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1044822DD5354F009B3688 /* CameraView.swift */; };
BF1044852DD53570009B3688 /* MRZScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1044842DD53570009B3688 /* MRZScanner.swift */; };
C9F1B4F4F38F49EF8723594E /* Inter-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 06064B357139453EB2788C18 /* Inter-MediumItalic.otf */; };
CB116B311D63491FA54CCEE1 /* Inter-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = DD642F4F3A114B43A22296D7 /* Inter-Thin.otf */; };
CC02892C62AE4BB5B7F769EA /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 15C30A8C4A6C42558DC9D78B /* Inter-Medium.otf */; };
CC783A35ECCD4CC4FD708516 /* Pods_Self.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBF96649C103ADB7297A6A7F /* Pods_Self.framework */; };
D427791AA5714251A5EAF8AD /* DINOT-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9BF744D9A73A4BAC96EC569A /* DINOT-Medium.otf */; };
D7C083B0F0554047BA5E6BC0 /* slkscr.woff in Resources */ = {isa = PBXBuildFile; fileRef = C56F122245594D6DA9B7570A /* slkscr.woff */; };
DAC618BCA5874DD8AD74FFFC /* Advercase-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 7E5C3CEF7EDA4871B3D0EBE1 /* Advercase-Regular.otf */; };
DB83F88A19DB4E6583FFAE06 /* Inter-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6CF8D6DF98634423ACD5D630 /* Inter-Regular.otf */; };
DC707B77BEF343F0A7B3DFDD /* slkscr.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7CCB5F83F57540E88D54B34A /* slkscr.ttf */; };
E0825E4C214B4892954725F0 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 00B1702DFCD448D5897AAF17 /* Inter-BoldItalic.otf */; };
E27FC7C055DE4CBDADEFAC29 /* Inter-BlackItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = D58C0CED91AE4265A5A406A0 /* Inter-BlackItalic.otf */; };
E9F9A99C2D57FE2900E1362E /* PassportOCRViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F9A99A2D57FE2900E1362E /* PassportOCRViewManager.m */; };
E9F9A99D2D57FE2900E1362E /* PassportOCRViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F9A99B2D57FE2900E1362E /* PassportOCRViewManager.swift */; };
EBECCA4983EC6929A7722578 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = E56E082698598B41447667BB /* PrivacyInfo.xcprivacy */; };
EEF3331B93C24D6482021BA2 /* Inter-ExtraLightItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 090474A3F07B4FFA82C9A751 /* Inter-ExtraLightItalic.otf */; };
F1961109CC004035884F79D9 /* Inter-ExtraBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 37A4DECF3A824D5BAA8863FD /* Inter-ExtraBoldItalic.otf */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -73,20 +52,14 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
00B1702DFCD448D5897AAF17 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-BoldItalic.otf"; sourceTree = "<group>"; };
05B4DDF62C7850A80067519E /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "OpenPassport App Clip/Images.xcassets"; sourceTree = "<group>"; };
05D985FA2BB3344600F58EEA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = OpenPassport/Assets.xcassets; sourceTree = "<group>"; };
06064B357139453EB2788C18 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
070CF9E82E3E45DAB6BBA375 /* Inter-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Light.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Light.otf"; sourceTree = "<group>"; };
090474A3F07B4FFA82C9A751 /* Inter-ExtraLightItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraLightItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraLightItalic.otf"; sourceTree = "<group>"; };
0C36821E5B014740853946D5 /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Italic.otf"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* Self.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Self.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = OpenPassport/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = OpenPassport/AppDelegate.mm; sourceTree = "<group>"; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = OpenPassport/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OpenPassport/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = OpenPassport/main.m; sourceTree = "<group>"; };
15C30A8C4A6C42558DC9D78B /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Medium.otf"; sourceTree = "<group>"; };
1608339E2D5CF89D00056417 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
1648EB772CC9564D003BEA7D /* LottieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LottieView.swift; sourceTree = "<group>"; };
164FD9662D569A640067E63B /* QRCodeScannerViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRCodeScannerViewManager.swift; sourceTree = "<group>"; };
@@ -100,40 +73,25 @@
169349842CC694DA00166F21 /* OpenPassportDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = OpenPassportDebug.entitlements; path = OpenPassport/OpenPassportDebug.entitlements; sourceTree = "<group>"; };
16E6646D2B8D292500FDD6A0 /* QKMRZScannerViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QKMRZScannerViewRepresentable.swift; sourceTree = "<group>"; };
16E884A42C5BD764003B7125 /* passport.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = passport.json; sourceTree = "<group>"; };
276287D0D37B4E8EBD7A1ABD /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-SemiBold.otf"; sourceTree = "<group>"; };
37A4DECF3A824D5BAA8863FD /* Inter-ExtraBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBoldItalic.otf"; sourceTree = "<group>"; };
3BF771EA645241D9A28A3AE9 /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Bold.otf"; sourceTree = "<group>"; };
4B261C28061D47B7B3BB3E37 /* Inter-Black.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Black.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Black.otf"; sourceTree = "<group>"; };
64F386964AAE4C1E8F2DF789 /* Inter-ExtraLight.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraLight.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraLight.otf"; sourceTree = "<group>"; };
6CF8D6DF98634423ACD5D630 /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Regular.otf"; sourceTree = "<group>"; };
73A8B182B1187BFE180CBB44 /* Pods-OpenPassport.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport.release.xcconfig"; path = "Target Support Files/Pods-OpenPassport/Pods-OpenPassport.release.xcconfig"; sourceTree = "<group>"; };
7CCB5F83F57540E88D54B34A /* slkscr.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = slkscr.ttf; path = "../node_modules/@tamagui/font-silkscreen/files/slkscr.ttf"; sourceTree = "<group>"; };
7E5C3CEF7EDA4871B3D0EBE1 /* Advercase-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Advercase-Regular.otf"; path = "../src/assets/fonts/Advercase-Regular.otf"; sourceTree = "<group>"; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = OpenPassport/LaunchScreen.storyboard; sourceTree = "<group>"; };
8448FE310A674E8DAA7F1CB5 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
8CE3CC4CFFC24314A22F1391 /* Inter-ExtraBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ExtraBold.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ExtraBold.otf"; sourceTree = "<group>"; };
905B70042A72767900AFA232 /* PassportReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassportReader.swift; sourceTree = "<group>"; };
905B70062A72774000AFA232 /* PassportReader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PassportReader.m; sourceTree = "<group>"; };
905B70082A729CD400AFA232 /* OpenPassport.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = OpenPassport.entitlements; path = OpenPassport/OpenPassport.entitlements; sourceTree = "<group>"; };
9BF744D9A73A4BAC96EC569A /* DINOT-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "DINOT-Medium.otf"; path = "../src/assets/fonts/DINOT-Medium.otf"; sourceTree = "<group>"; };
AE6147EB2DC95A8D00445C0F /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
B4E7218406B64A95BCE0DFE4 /* slkscrb.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = slkscrb.ttf; path = "../node_modules/@tamagui/font-silkscreen/files/slkscrb.ttf"; sourceTree = "<group>"; };
BF1044802DD53540009B3688 /* LiveMRZScannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveMRZScannerView.swift; sourceTree = "<group>"; };
BF1044822DD5354F009B3688 /* CameraView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraView.swift; sourceTree = "<group>"; };
BF1044842DD53570009B3688 /* MRZScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MRZScanner.swift; sourceTree = "<group>"; };
C56F122245594D6DA9B7570A /* slkscr.woff */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = slkscr.woff; path = "../node_modules/@tamagui/font-silkscreen/files/slkscr.woff"; sourceTree = "<group>"; };
CA67A75B161A05334E3E9402 /* Pods-OpenPassport.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenPassport.debug.xcconfig"; path = "Target Support Files/Pods-OpenPassport/Pods-OpenPassport.debug.xcconfig"; sourceTree = "<group>"; };
CBF96649C103ADB7297A6A7F /* Pods_Self.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Self.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D1CE52662C8B90B7EC435251 /* Pods-Self.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Self.debug.xcconfig"; path = "Target Support Files/Pods-Self/Pods-Self.debug.xcconfig"; sourceTree = "<group>"; };
D58C0CED91AE4265A5A406A0 /* Inter-BlackItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BlackItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-BlackItalic.otf"; sourceTree = "<group>"; };
DD642F4F3A114B43A22296D7 /* Inter-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Thin.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-Thin.otf"; sourceTree = "<group>"; };
E56E082698598B41447667BB /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = OpenPassport/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
E9F9A99A2D57FE2900E1362E /* PassportOCRViewManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PassportOCRViewManager.m; sourceTree = "<group>"; };
E9F9A99B2D57FE2900E1362E /* PassportOCRViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassportOCRViewManager.swift; sourceTree = "<group>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED3C4098AF3349976AE7513C /* Pods-Self.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Self.release.xcconfig"; path = "Target Support Files/Pods-Self/Pods-Self.release.xcconfig"; sourceTree = "<group>"; };
EEA2A4D24A8F4B10A5ECA607 /* Inter-ThinItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-ThinItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-ThinItalic.otf"; sourceTree = "<group>"; };
F4AE10DA498844DF8BF01948 /* Inter-LightItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-LightItalic.otf"; path = "../node_modules/@tamagui/font-inter/otf/Inter-LightItalic.otf"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -200,27 +158,6 @@
children = (
7E5C3CEF7EDA4871B3D0EBE1 /* Advercase-Regular.otf */,
9BF744D9A73A4BAC96EC569A /* DINOT-Medium.otf */,
4B261C28061D47B7B3BB3E37 /* Inter-Black.otf */,
D58C0CED91AE4265A5A406A0 /* Inter-BlackItalic.otf */,
3BF771EA645241D9A28A3AE9 /* Inter-Bold.otf */,
00B1702DFCD448D5897AAF17 /* Inter-BoldItalic.otf */,
8CE3CC4CFFC24314A22F1391 /* Inter-ExtraBold.otf */,
37A4DECF3A824D5BAA8863FD /* Inter-ExtraBoldItalic.otf */,
64F386964AAE4C1E8F2DF789 /* Inter-ExtraLight.otf */,
090474A3F07B4FFA82C9A751 /* Inter-ExtraLightItalic.otf */,
0C36821E5B014740853946D5 /* Inter-Italic.otf */,
070CF9E82E3E45DAB6BBA375 /* Inter-Light.otf */,
F4AE10DA498844DF8BF01948 /* Inter-LightItalic.otf */,
15C30A8C4A6C42558DC9D78B /* Inter-Medium.otf */,
06064B357139453EB2788C18 /* Inter-MediumItalic.otf */,
6CF8D6DF98634423ACD5D630 /* Inter-Regular.otf */,
276287D0D37B4E8EBD7A1ABD /* Inter-SemiBold.otf */,
8448FE310A674E8DAA7F1CB5 /* Inter-SemiBoldItalic.otf */,
DD642F4F3A114B43A22296D7 /* Inter-Thin.otf */,
EEA2A4D24A8F4B10A5ECA607 /* Inter-ThinItalic.otf */,
7CCB5F83F57540E88D54B34A /* slkscr.ttf */,
B4E7218406B64A95BCE0DFE4 /* slkscrb.ttf */,
C56F122245594D6DA9B7570A /* slkscr.woff */,
);
name = Resources;
sourceTree = "<group>";
@@ -338,27 +275,6 @@
EBECCA4983EC6929A7722578 /* PrivacyInfo.xcprivacy in Resources */,
DAC618BCA5874DD8AD74FFFC /* Advercase-Regular.otf in Resources */,
D427791AA5714251A5EAF8AD /* DINOT-Medium.otf in Resources */,
12FDE04D2B784D978F7804C0 /* Inter-Black.otf in Resources */,
E27FC7C055DE4CBDADEFAC29 /* Inter-BlackItalic.otf in Resources */,
9C694E1EF05C49DF85423A6A /* Inter-Bold.otf in Resources */,
E0825E4C214B4892954725F0 /* Inter-BoldItalic.otf in Resources */,
5C66B65890614C638590DC8A /* Inter-ExtraBold.otf in Resources */,
F1961109CC004035884F79D9 /* Inter-ExtraBoldItalic.otf in Resources */,
61037530CB0A4C159B892CDC /* Inter-ExtraLight.otf in Resources */,
EEF3331B93C24D6482021BA2 /* Inter-ExtraLightItalic.otf in Resources */,
799E4D28B9494C6BAA389F52 /* Inter-Italic.otf in Resources */,
A109328F471241A5A931D524 /* Inter-Light.otf in Resources */,
B0885FC3EE2A41A1AA97EEC0 /* Inter-LightItalic.otf in Resources */,
CC02892C62AE4BB5B7F769EA /* Inter-Medium.otf in Resources */,
C9F1B4F4F38F49EF8723594E /* Inter-MediumItalic.otf in Resources */,
DB83F88A19DB4E6583FFAE06 /* Inter-Regular.otf in Resources */,
827AB97C3F4C4DA88293E5FF /* Inter-SemiBold.otf in Resources */,
628102DA686542B2A5D06A54 /* Inter-SemiBoldItalic.otf in Resources */,
CB116B311D63491FA54CCEE1 /* Inter-Thin.otf in Resources */,
4A1791A6108347E5A635DB1C /* Inter-ThinItalic.otf in Resources */,
DC707B77BEF343F0A7B3DFDD /* slkscr.ttf in Resources */,
5008C8140A304ED79DB817C5 /* slkscrb.ttf in Resources */,
D7C083B0F0554047BA5E6BC0 /* slkscr.woff in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -379,7 +295,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
};
0C6411FE06C61E7F495D9204 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
@@ -870,7 +786,7 @@
"$(inherited)",
" ",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
USE_HERMES = false;
@@ -963,7 +879,7 @@
"$(inherited)",
" ",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
SDKROOT = iphoneos;
USE_HERMES = false;
VALIDATE_PRODUCT = YES;

View File

@@ -8,90 +8,6 @@
{
"path": "src/assets/fonts/DINOT-Medium.otf",
"sha1": "e993d15a13bc4e2c66dac255d7fa569486345f88"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Black.otf",
"sha1": "5df89a5ca8b710fac50ccde5539bc2aececb184c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-BlackItalic.otf",
"sha1": "a2988d597f61e19ee05a4b7404086b8ca43d0731"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Bold.otf",
"sha1": "892e9a770a5340e46c9c7d9f25fa2699d9275923"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-BoldItalic.otf",
"sha1": "8774206d7703bfe27f6d5302e5385983c26e13a1"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraBold.otf",
"sha1": "d458dab978fd1894de0eed6adacacb4853596473"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraBoldItalic.otf",
"sha1": "e63778737330052f9015dbd76ba904fcf05b87d7"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraLight.otf",
"sha1": "2c396705e77547af57076584bdd5895c2c81141a"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ExtraLightItalic.otf",
"sha1": "d367b8910d04480c7cf0be5bb87126170e676c2b"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Italic.otf",
"sha1": "1d8db12a427db7418be418b77bafb9a916ac0534"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Light.otf",
"sha1": "c89f3036b53490be4b25d15e9a3cd4caf3e67d0c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-LightItalic.otf",
"sha1": "6716c0590ef33f9ca0155cd5c5d99f8ca90b5834"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Medium.otf",
"sha1": "279fa3c60d682531d549d0ec9ed91f1b83402d40"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-MediumItalic.otf",
"sha1": "89d0a6cca45c1ac1cb30c1957b9520b703c42933"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Regular.otf",
"sha1": "4786a0feb4c853189782709a5ac5b5dfb696942b"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-SemiBold.otf",
"sha1": "ce2ccd0b91ffb1f8c894b6d60f21443e0769217c"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-SemiBoldItalic.otf",
"sha1": "8cf127ce6e16f95dccdae0eb553493d625bd0756"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-Thin.otf",
"sha1": "b9a1ad08b8f1724544ae075d66c98b7fb507b80d"
},
{
"path": "node_modules/@tamagui/font-inter/otf/Inter-ThinItalic.otf",
"sha1": "cf2dcfd6aa812f641e3d2c81af69a6c553539083"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscr.ttf",
"sha1": "417bc8219cf9d819c538c052397f3352dda426a7"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscr.woff",
"sha1": "30d9b6f1b318c955d613dcf18d572f9aee9a35c8"
},
{
"path": "node_modules/@tamagui/font-silkscreen/files/slkscrb.ttf",
"sha1": "a960fd4e201077cda027756743c344ffcb8285fb"
}
]
}

View File

@@ -8,6 +8,5 @@ module.exports = {
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$',
moduleNameMapper: {
'^@env$': '<rootDir>/tests/__setup__/@env.js',
'^@openpassport/(.*)$': '<rootDir>/../common/node_modules/@openpassport/$1',
},
};

View File

@@ -1,17 +1,23 @@
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const path = require('path');
const path = require('node:path');
const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;
const monorepoRoot = path.resolve(__dirname, '../');
const commonPath = path.join(__dirname, '/../common');
const trueMonorepoNodeModules = path.resolve(__dirname, '../node_modules');
const extraNodeModules = {
common: path.resolve(commonPath),
stream: require.resolve('stream-browserify'),
buffer: require.resolve('buffer'),
util: require.resolve('util'),
assert: require.resolve('assert'),
'@babel/runtime': path.join(trueMonorepoNodeModules, '@babel/runtime'),
};
const watchFolders = [path.resolve(commonPath)];
const watchFolders = [
path.resolve(commonPath),
trueMonorepoNodeModules,
path.join(__dirname, 'src'),
];
/**
* Metro configuration
@@ -27,6 +33,12 @@ const config = {
},
resolver: {
extraNodeModules,
nodeModulesPaths: [
path.resolve(__dirname, 'node_modules'), // App's own node_modules
path.resolve(monorepoRoot, 'node_modules'), // Monorepo root node_modules
trueMonorepoNodeModules,
// Add paths to other package workspaces if needed
],
assetExts: assetExts.filter(ext => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},

View File

@@ -1,7 +1,8 @@
{
"name": "openpassport",
"name": "@selfxyz/mobile-app",
"version": "2.5.2",
"private": true,
"type": "module",
"scripts": {
"analyze:android": "yarn reinstall && react-native-bundle-visualizer --platform android --dev",
"analyze:ios": "yarn reinstall && react-native-bundle-visualizer --platform ios --dev",
@@ -14,7 +15,8 @@
"bump-version:major": "npm version major && yarn sync-versions",
"bump-version:minor": "npm version minor && yarn sync-versions",
"bump-version:patch": "npm version patch && yarn sync-versions",
"clean": "watchman watch-del-all && rm -rf node_modules ios/Pods ios/build android/app/build android/build .yarn/cache ios/.xcode.env.local",
"types": "tsc --noEmit",
"clean": "watchman watch-del-all && rm -rf ../node_modules ios/Pods ios/build android/app/build android/build ../.yarn/cache ios/.xcode.env.local",
"clean:android": "rm -rf android/app/build android/build",
"clean:ios": "rm -rf ios/Pods ios/build",
"clean:xcode-env-local": "rm -f ios/.xcode.env.local",
@@ -29,8 +31,9 @@
"ia": "yarn install-app",
"install-app": "yarn install-app:setup && cd ios && bundle exec pod install && cd .. && yarn clean:xcode-env-local",
"install-app:deploy": "yarn install-app:setup && yarn clean:xcode-env-local",
"install-app:setup": "cd ../common && yarn && cd ../app && yarn && cd ios && bundle install && cd ..",
"install-app:setup": "yarn install && yarn build:deps && cd ios && bundle install && cd ..",
"ios": "react-native run-ios",
"build:deps": "yarn workspaces foreach --from @selfxyz/mobile-app --topological --recursive run build",
"ios:fastlane-debug": "yarn reinstall && bundle exec fastlane --verbose ios internal_test",
"lint": "eslint .",
"lint:fix": "eslint --fix .",
@@ -43,6 +46,7 @@
"test": "jest --passWithNoTests"
},
"dependencies": {
"@babel/runtime": "^7.27.4",
"@ethersproject/shims": "^5.7.0",
"@openpassport/zk-kit-lean-imt": "^0.0.6",
"@openpassport/zk-kit-smt": "^0.0.1",
@@ -57,7 +61,8 @@
"@react-navigation/native-stack": "^7.2.0",
"@segment/analytics-react-native": "^2.21.0",
"@segment/sovran-react-native": "^1.1.3",
"@sentry/react-native": "^6.10.0",
"@selfxyz/common": "workspace:^",
"@sentry/react-native": "6.10.0",
"@stablelib/cbor": "^2.0.1",
"@tamagui/config": "1.110.0",
"@tamagui/lucide-icons": "1.110.0",
@@ -72,7 +77,7 @@
"ethers": "^6.11.0",
"expo-modules-core": "^2.2.1",
"js-sha512": "^0.9.0",
"lottie-react-native": "^7.2.2",
"lottie-react-native": "7.2.2",
"msgpack-lite": "^0.1.26",
"node-forge": "^1.3.1",
"pako": "^2.1.0",
@@ -94,7 +99,7 @@
"react-native-passport-reader": "^1.0.3",
"react-native-quick-crypto": "^0.7.12",
"react-native-safe-area-context": "^5.2.0",
"react-native-screens": "^4.6.0",
"react-native-screens": "4.9.0",
"react-native-sqlite-storage": "^6.0.1",
"react-native-svg": "^15.11.1",
"socket.io-client": "^4.7.5",
@@ -109,6 +114,7 @@
"@react-native-community/cli": "^14.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",
"@tamagui/types": "1.110.0",
@@ -128,6 +134,7 @@
"@types/react-test-renderer": "^18",
"eslint": "^8.19.0",
"eslint-config-prettier": "^10.1.2",
"eslint-plugin-jest": "^28.11.1",
"eslint-plugin-prettier": "^5.2.6",
"eslint-plugin-simple-import-sort": "^12.1.1",
"jest": "^29.6.3",
@@ -136,9 +143,8 @@
"react-native-svg-transformer": "^1.5.0",
"react-test-renderer": "^18.3.1",
"stream-browserify": "^3.0.0",
"typescript": "5.0.4"
"typescript": "^5.8.3"
},
"packageManager": "yarn@4.5.0",
"engines": {
"node": ">=18"
}

View File

@@ -0,0 +1,7 @@
module.exports = {
project: {
ios: {},
android: {},
},
assets: ['./src/assets/fonts'],
};

View File

@@ -1,11 +0,0 @@
module.exports = {
project: {
ios: {},
android: {},
},
assets: [
'./src/assets/fonts',
'./node_modules/@tamagui/font-inter/otf',
'./node_modules/@tamagui/font-silkscreen/files',
],
};

View File

@@ -1,11 +1,8 @@
import type { SelfAppDisclosureConfig } from '@selfxyz/common';
import { Country3LetterCode, countryCodes } from '@selfxyz/common';
import React from 'react';
import { XStack, YStack } from 'tamagui';
import {
Country3LetterCode,
countryCodes,
} from '../../../common/src/constants/constants';
import { SelfAppDisclosureConfig } from '../../../common/src/utils/appType';
import { BodyText } from '../components/typography/BodyText';
import CheckMark from '../images/icons/checkmark.svg';
import { slate200, slate500 } from '../utils/colors';

View File

@@ -7,9 +7,9 @@ import {
} from 'react-native';
import { extractMRZInfo } from '../../utils/utils';
import { RCTFragment, RCTFragmentViewManagerProps } from './RCTFragment';
import { RCTFragment } from './RCTFragment';
interface RCTPassportOCRViewManagerProps extends RCTFragmentViewManagerProps {
interface NativePassportOCRViewProps {
onPassportRead: (
event: NativeSyntheticEvent<{
data:
@@ -23,11 +23,21 @@ interface RCTPassportOCRViewManagerProps extends RCTFragmentViewManagerProps {
};
}>,
) => void;
onError: (
event: NativeSyntheticEvent<{
error: string;
errorMessage: string;
stackTrace: string;
}>,
) => void;
style?: any; // Or a more specific style type if available
}
const RCTPassportOCRViewNativeComponent = Platform.select({
ios: requireNativeComponent('PassportOCRView'),
android: requireNativeComponent('PassportOCRViewManager'),
ios: requireNativeComponent<NativePassportOCRViewProps>('PassportOCRView'),
android: requireNativeComponent<NativePassportOCRViewProps>(
'PassportOCRViewManager',
),
});
if (!RCTPassportOCRViewNativeComponent) {
@@ -111,10 +121,16 @@ export const PassportCamera: React.FC<PassportCameraProps> = ({
);
} else {
// For Android, wrap the native component inside your RCTFragment to preserve existing functionality.
const Fragment = RCTFragment as React.FC<RCTPassportOCRViewManagerProps>;
const Fragment = RCTFragment as React.FC<
React.ComponentProps<typeof RCTFragment> & NativePassportOCRViewProps
>;
return (
<Fragment
RCTFragmentViewManager={RCTPassportOCRViewNativeComponent}
RCTFragmentViewManager={
RCTPassportOCRViewNativeComponent as ReturnType<
typeof requireNativeComponent
>
}
fragmentComponentName="PassportOCRViewManager"
isMounted={isMounted}
style={{

View File

@@ -6,15 +6,27 @@ import {
requireNativeComponent,
} from 'react-native';
import { RCTFragment, RCTFragmentViewManagerProps } from './RCTFragment';
import { RCTFragment } from './RCTFragment';
interface RCTQRCodeScannerViewProps extends RCTFragmentViewManagerProps {
interface NativeQRCodeScannerViewProps {
onQRData: (event: NativeSyntheticEvent<{ data: string }>) => void;
onError: (
event: NativeSyntheticEvent<{
error: string;
errorMessage: string;
stackTrace: string;
}>,
) => void;
style?: any; // Or a more specific style type
}
const QRCodeNativeComponent = Platform.select({
ios: requireNativeComponent('QRCodeScannerView'),
android: requireNativeComponent('QRCodeScannerViewManager'),
ios: requireNativeComponent<NativeQRCodeScannerViewProps>(
'QRCodeScannerView',
),
android: requireNativeComponent<NativeQRCodeScannerViewProps>(
'QRCodeScannerViewManager',
),
});
if (!QRCodeNativeComponent) {
@@ -74,10 +86,14 @@ export const QRCodeScannerView: React.FC<QRCodeScannerViewProps> = ({
);
} else {
// For Android, wrap the native component inside your RCTFragment to preserve existing functionality.
const Fragment = RCTFragment as React.FC<RCTQRCodeScannerViewProps>;
const Fragment = RCTFragment as React.FC<
React.ComponentProps<typeof RCTFragment> & NativeQRCodeScannerViewProps
>;
return (
<Fragment
RCTFragmentViewManager={QRCodeNativeComponent}
RCTFragmentViewManager={
QRCodeNativeComponent as ReturnType<typeof requireNativeComponent>
}
fragmentComponentName="QRCodeScannerViewManager"
isMounted={isMounted}
style={{

View File

@@ -2,7 +2,7 @@ import { useNavigation } from '@react-navigation/native';
import { NativeStackScreenProps } from '@react-navigation/native-stack';
import { useCallback } from 'react';
import type { RootStackParamList } from '../Navigation';
import type { RootStackParamList } from '../navigation/index';
import { impactLight, impactMedium, selectionChange } from '../utils/haptic';
type NavigationAction = 'default' | 'cancel' | 'confirm';
@@ -18,11 +18,18 @@ const useHapticNavigation = <S extends keyof RootStackParamList>(
useNavigation() as NativeStackScreenProps<RootStackParamList>['navigation'];
return useCallback(() => {
const navParams = options.params;
switch (options.action) {
case 'cancel':
selectionChange();
// it is safe to cast options.params as any because it is correct when entering the function
navigation.popTo(screen, options.params as any);
if (navParams !== undefined) {
(navigation.popTo as (screen: S, params: typeof navParams) => void)(
screen,
navParams,
);
} else {
(navigation.popTo as (screen: S) => void)(screen);
}
return;
case 'confirm':
@@ -34,8 +41,15 @@ const useHapticNavigation = <S extends keyof RootStackParamList>(
impactLight();
}
// it is safe to cast options.params as any because it is correct when entering the function
navigation.navigate(screen, options.params as any);
}, [navigation, screen, options.action]);
if (navParams !== undefined) {
(navigation.navigate as (screen: S, params: typeof navParams) => void)(
screen,
navParams,
);
} else {
(navigation.navigate as (screen: S) => void)(screen);
}
}, [navigation, screen, options]);
};
export default useHapticNavigation;

View File

@@ -1,3 +1,4 @@
/* eslint-disable simple-import-sort/imports */
import { useNavigation } from '@react-navigation/native';
import {
Check,
@@ -19,8 +20,8 @@ import {
YStack,
} from 'tamagui';
import { genAndInitMockPassportData } from '../../../../common/src/utils/passports/genMockPassportData';
import { RootStackParamList } from '../../Navigation';
import { genAndInitMockPassportData } from '@selfxyz/common';
import { RootStackParamList } from '../../navigation';
import {
unsafe_clearSecrets,
unsafe_getPrivateKey,
@@ -145,7 +146,9 @@ const ScreenSelector = ({}) => {
const DevSettingsScreen: React.FC<DevSettingsScreenProps> = ({}) => {
const { clearPassportData } = usePassport();
const [privateKey, setPrivateKey] = useState('Loading private key…');
const [privateKey, setPrivateKey] = useState<string | null>(
'Loading private key…',
);
const nav = useNavigation();

View File

@@ -1,4 +1,8 @@
import { useNavigation } from '@react-navigation/native';
import { countryCodes } from '@selfxyz/common';
import { getSKIPEM } from '@selfxyz/common';
import { genMockIdDoc, IdDocInput } from '@selfxyz/common';
import { initPassportDataParsing } from '@selfxyz/common';
import { ChevronDown, Minus, Plus, X } from '@tamagui/lucide-icons';
import { flag } from 'country-emoji';
import getCountryISO2 from 'country-iso-3-to-2';
@@ -19,13 +23,6 @@ import {
YStack,
} from 'tamagui';
import { getSKIPEM } from '../../../.././common/src/utils/csca';
import { countryCodes } from '../../../../common/src/constants/constants';
import {
genMockIdDoc,
IdDocInput,
} from '../../../../common/src/utils/passports/genMockIdDoc';
import { initPassportDataParsing } from '../../../../common/src/utils/passports/passport';
import { PrimaryButton } from '../../components/buttons/PrimaryButton';
import { SecondaryButton } from '../../components/buttons/SecondaryButton';
import ButtonsContainer from '../../components/ButtonsContainer';
@@ -217,7 +214,7 @@ const MockDataScreen: React.FC<MockDataScreenProps> = ({}) => {
][2];
const idDocInput: Partial<IdDocInput> = {
nationality: selectedCountry,
nationality: selectedCountry as IdDocInput['nationality'],
idType: 'mock_passport',
signatureType:
signatureTypeForGeneration as IdDocInput['signatureType'],

View File

@@ -1,4 +1,6 @@
import { useNavigation } from '@react-navigation/native';
import { countryCodes } from '@selfxyz/common';
import { genMockIdDoc, IdDocInput } from '@selfxyz/common';
import { flag } from 'country-emoji';
import getCountryISO2 from 'country-iso-3-to-2';
import React, { useCallback, useEffect, useState } from 'react';
@@ -6,11 +8,6 @@ import { ActivityIndicator, View } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { ScrollView, Text, XStack, YStack } from 'tamagui';
import { countryCodes } from '../../../../common/src/constants/constants';
import {
genMockIdDoc,
IdDocInput,
} from '../../../../common/src/utils/passports/genMockIdDoc';
import { PrimaryButton } from '../../components/buttons/PrimaryButton';
import ButtonsContainer from '../../components/ButtonsContainer';
import { BodyText } from '../../components/typography/BodyText';

View File

@@ -1,11 +1,11 @@
import { StaticScreenProps, useIsFocused } from '@react-navigation/native';
import { PassportData } from '@selfxyz/common';
import LottieView from 'lottie-react-native';
import React, { useEffect, useState } from 'react';
import { StyleSheet, View } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { Text, YStack } from 'tamagui';
import { PassportData } from '../../../../common/src/utils/types';
import failAnimation from '../../assets/animations/loading/fail.json';
import proveLoadingAnimation from '../../assets/animations/loading/prove.json';
import successAnimation from '../../assets/animations/loading/success.json';

View File

@@ -1,9 +1,9 @@
import { useNavigation } from '@react-navigation/native';
import { PassportData } from '@selfxyz/common';
import LottieView from 'lottie-react-native';
import React, { useCallback, useEffect, useRef } from 'react';
import { StyleSheet } from 'react-native';
import { PassportData } from '../../../../common/src/utils/types';
import splashAnimation from '../../assets/animations/splash.json';
import { useAuth } from '../../stores/authProvider';
import { loadPassportDataAndSecret } from '../../stores/passportDataProvider';

View File

@@ -1,4 +1,7 @@
import { useFocusEffect, useNavigation } from '@react-navigation/native';
import { getSKIPEM } from '@selfxyz/common';
import { initPassportDataParsing } from '@selfxyz/common';
import { PassportData } from '@selfxyz/common';
import LottieView from 'lottie-react-native';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import {
@@ -11,9 +14,6 @@ import {
import NfcManager from 'react-native-nfc-manager';
import { Image } from 'tamagui';
import { getSKIPEM } from '../../../../common/src/utils/csca';
import { initPassportDataParsing } from '../../../../common/src/utils/passports/passport';
import { PassportData } from '../../../../common/src/utils/types';
import passportVerifyAnimation from '../../assets/animations/passport_verify.json';
import { PrimaryButton } from '../../components/buttons/PrimaryButton';
import { SecondaryButton } from '../../components/buttons/SecondaryButton';

View File

@@ -1,4 +1,6 @@
import { useIsFocused, useNavigation } from '@react-navigation/native';
import { SelfAppDisclosureConfig } from '@selfxyz/common';
import { formatEndpoint } from '@selfxyz/common';
import LottieView from 'lottie-react-native';
import React, {
useCallback,
@@ -16,8 +18,6 @@ import {
} from 'react-native';
import { Image, Text, View, YStack } from 'tamagui';
import { SelfAppDisclosureConfig } from '../../../../common/src/utils/appType';
import { formatEndpoint } from '../../../../common/src/utils/scope';
import miscAnimation from '../../assets/animations/loading/misc.json';
import { HeldPrimaryButtonProveScreen } from '../../components/buttons/HeldPrimaryButtonProveScreen';
import Disclosures from '../../components/Disclosures';

View File

@@ -12,7 +12,7 @@ import { BackupEvents } from '../../consts/analytics';
import { useModal } from '../../hooks/useModal';
import Cloud from '../../images/icons/logo_cloud_backup.svg';
import { ExpandableBottomLayout } from '../../layouts/ExpandableBottomLayout';
import { RootStackParamList } from '../../Navigation';
import { RootStackParamList } from '../../navigation';
import { useAuth } from '../../stores/authProvider';
import { useSettingStore } from '../../stores/settingStore';
import analytics from '../../utils/analytics';

View File

@@ -1,9 +1,9 @@
import { useFocusEffect } from '@react-navigation/native';
import { PassportMetadata } from '@selfxyz/common';
import React, { useCallback, useState } from 'react';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { ScrollView, Separator, XStack, YStack } from 'tamagui';
import { PassportMetadata } from '../../../../common/src/utils/passports/passport_parsing/parsePassportData';
import { Caption } from '../../components/typography/Caption';
import { usePassport } from '../../stores/passportDataProvider';
import { black, slate200, white } from '../../utils/colors';

View File

@@ -27,7 +27,7 @@ import ShareIcon from '../../images/icons/share.svg';
import Star from '../../images/icons/star.svg';
import Telegram from '../../images/icons/telegram.svg';
import Web from '../../images/icons/webpage.svg';
import { RootStackParamList } from '../../Navigation';
import { RootStackParamList } from '../../navigation';
import { useSettingStore } from '../../stores/settingStore';
import {
amber500,

View File

@@ -1,3 +1,7 @@
import { PublicKeyDetailsECDSA, PublicKeyDetailsRSA } from '@selfxyz/common';
import { parseCertificateSimple } from '@selfxyz/common';
import { brutforceSignatureAlgorithmDsc } from '@selfxyz/common';
import { PassportData } from '@selfxyz/common';
import React, {
createContext,
PropsWithChildren,
@@ -7,13 +11,6 @@ import React, {
} from 'react';
import Keychain from 'react-native-keychain';
import {
PublicKeyDetailsECDSA,
PublicKeyDetailsRSA,
} from '../../../common/src/utils/certificate_parsing/dataStructure';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { brutforceSignatureAlgorithmDsc } from '../../../common/src/utils/passports/passport_parsing/brutForceDscSignature';
import { PassportData } from '../../../common/src/utils/types';
import { unsafe_getPrivateKey } from '../stores/authProvider';
import { useAuth } from './authProvider';

View File

@@ -1,12 +1,11 @@
import type { EndpointType } from '@selfxyz/common';
import { WS_DB_RELAYER } from '@selfxyz/common';
import { UserIdType } from '@selfxyz/common';
import { Platform } from 'react-native';
import SQLite from 'react-native-sqlite-storage';
import { io } from 'socket.io-client';
import { create } from 'zustand';
import { WS_DB_RELAYER } from '../../../common/src/constants/constants';
import { EndpointType } from '../../../common/src/utils/appType';
import { UserIdType } from '../../../common/src/utils/circuits/uuid';
SQLite.enablePromise(true);
export interface ProofHistory {

View File

@@ -1,5 +1,3 @@
import { create } from 'zustand';
import {
API_URL,
API_URL_STAGING,
@@ -9,7 +7,8 @@ import {
DSC_TREE_URL_STAGING,
IDENTITY_TREE_URL,
IDENTITY_TREE_URL_STAGING,
} from '../../../common/src/constants/constants';
} from '@selfxyz/common';
import { create } from 'zustand';
interface ProtocolState {
passport: {

View File

@@ -1,9 +1,8 @@
import type { SelfApp } from '@selfxyz/common';
import { WS_DB_RELAYER } from '@selfxyz/common';
import io, { Socket } from 'socket.io-client';
import { create } from 'zustand';
import { WS_DB_RELAYER } from '../../../common/src/constants/constants';
import { SelfApp } from '../../../common/src/utils/appType';
interface SelfAppState {
selfApp: SelfApp | null;
sessionId: string | null;

View File

@@ -1,10 +1,9 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { PassportData } from '@selfxyz/common';
import { Buffer } from 'buffer';
import { NativeModules, Platform } from 'react-native';
import PassportReader from 'react-native-passport-reader';
import { PassportData } from '../../../common/src/utils/types';
interface Inputs {
passportNumber: string;
dateOfBirth: string;

View File

@@ -1,4 +1,5 @@
import { X509Certificate } from '@peculiar/x509';
import { PCR0_MANAGER_ADDRESS, RPC_URL } from '@selfxyz/common';
import { decode } from '@stablelib/cbor';
import { fromBER } from 'asn1js';
import { Buffer } from 'buffer';
@@ -7,10 +8,6 @@ import { ethers } from 'ethers';
import { sha384 } from 'js-sha512';
import { Certificate } from 'pkijs';
import {
PCR0_MANAGER_ADDRESS,
RPC_URL,
} from '../../../../common/src/constants/constants';
import { AWS_ROOT_PEM } from './awsRootPem';
import cose from './cose';

View File

@@ -1,24 +1,24 @@
import { LeanIMT } from '@openpassport/zk-kit-lean-imt';
import { SMT } from '@openpassport/zk-kit-smt';
import { poseidon2 } from 'poseidon-lite';
import nameAndDobSMTData from '../../../../common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobSMTData from '../../../../common/ofacdata/outputs/nameAndYobSMT.json';
import passportNoAndNationalitySMTData from '../../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import {
attributeToPosition,
DEFAULT_MAJORITY,
PASSPORT_ATTESTATION_ID,
} from '../../../../common/src/constants/constants';
import { SelfApp } from '../../../../common/src/utils/appType';
import { getCircuitNameFromPassportData } from '../../../../common/src/utils/circuits/circuitsName';
} from '@selfxyz/common';
import { SelfApp } from '@selfxyz/common';
import { getCircuitNameFromPassportData } from '@selfxyz/common';
import {
generateCircuitInputsDSC,
generateCircuitInputsRegister,
generateCircuitInputsVCandDisclose,
} from '../../../../common/src/utils/circuits/generateInputs';
import { hashEndpointWithScope } from '../../../../common/src/utils/scope';
import { PassportData } from '../../../../common/src/utils/types';
} from '@selfxyz/common';
import { hashEndpointWithScope } from '@selfxyz/common';
import { PassportData } from '@selfxyz/common';
import nameAndDobSMTData from '@selfxyz/common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobSMTData from '@selfxyz/common/ofacdata/outputs/nameAndYobSMT.json';
import passportNoAndNationalitySMTData from '@selfxyz/common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import { poseidon2 } from 'poseidon-lite';
import { useProtocolStore } from '../../stores/protocolStore';
export function generateTEEInputsRegister(

View File

@@ -1,13 +1,13 @@
import { WS_RPC_URL_VC_AND_DISCLOSE } from '@selfxyz/common';
import { EndpointType, SelfApp } from '@selfxyz/common';
import { getCircuitNameFromPassportData } from '@selfxyz/common';
import { PassportData } from '@selfxyz/common';
import forge from 'node-forge';
import io, { Socket } from 'socket.io-client';
import { v4 } from 'uuid';
import { AnyActorRef, createActor, createMachine } from 'xstate';
import { create } from 'zustand';
import { WS_RPC_URL_VC_AND_DISCLOSE } from '../../../../common/src/constants/constants';
import { EndpointType, SelfApp } from '../../../../common/src/utils/appType';
import { getCircuitNameFromPassportData } from '../../../../common/src/utils/circuits/circuitsName';
import { PassportData } from '../../../../common/src/utils/types';
import { navigationRef } from '../../navigation';
import {
clearPassportData,

View File

@@ -1,10 +1,11 @@
import type { EndpointType } from '@selfxyz/common';
import {
initElliptic,
WS_DB_RELAYER,
WS_DB_RELAYER_STAGING,
} from '@selfxyz/common';
import forge from 'node-forge';
import { WS_DB_RELAYER_STAGING } from '../../../../common/src/constants/constants';
import { WS_DB_RELAYER } from '../../../../common/src/constants/constants';
import { EndpointType } from '../../../../common/src/utils/appType';
import { initElliptic } from '../../../../common/src/utils/certificate_parsing/elliptic';
const elliptic = initElliptic();
const { ec: EC } = elliptic;
export const ec = new EC('p256');

View File

@@ -1,20 +1,18 @@
import { LeanIMT } from '@openpassport/zk-kit-lean-imt';
import { poseidon2, poseidon5 } from 'poseidon-lite';
import {
API_URL,
PASSPORT_ATTESTATION_ID,
} from '../../../../common/src/constants/constants';
import { parseCertificateSimple } from '../../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '../../../../common/src/utils/circuits/circuitsName';
import { hash, packBytesAndPoseidon } from '../../../../common/src/utils/hash';
import { formatMrz } from '../../../../common/src/utils/passports/format';
import {
formatMrz,
generateCommitment,
generateNullifier,
} from '../../../../common/src/utils/passports/passport';
import { getLeafDscTree } from '../../../../common/src/utils/trees';
import { PassportData } from '../../../../common/src/utils/types';
getCircuitNameFromPassportData,
getLeafDscTree,
Hash,
parseCertificateSimple,
PASSPORT_ATTESTATION_ID,
type PassportData,
} from '@selfxyz/common';
import { poseidon2, poseidon5 } from 'poseidon-lite';
import { useProtocolStore } from '../../stores/protocolStore';
export type PassportSupportStatus =
@@ -163,15 +161,19 @@ export function generateCommitmentInApp(
passportData: PassportData,
alternativeCSCA: Record<string, string>,
) {
const dg1_packed_hash = packBytesAndPoseidon(formatMrz(passportData.mrz));
const eContent_packed_hash = packBytesAndPoseidon(
const dg1_packed_hash = Hash.packBytesAndPoseidon(
formatMrz(passportData.mrz),
);
const eContent_packed_hash = Hash.packBytesAndPoseidon(
(
hash(
Hash.hash(
passportData.passportMetadata!.eContentHashFunction,
Array.from(passportData.eContent),
'bytes',
) as number[]
).map(byte => byte & 0xff),
)
// eslint-disable-next-line no-bitwise
.map(byte => byte & 0xff),
);
const csca_list: string[] = [];

View File

@@ -2,7 +2,7 @@
"extends": "@react-native/typescript-config/tsconfig.json",
"compilerOptions": {
"lib": ["dom", "esnext"],
"typeRoots": ["./src/types", "./node_modules/@types"],
"types": ["react-native", "jest"]
"resolveJsonModule": true,
"esModuleInterop": true
}
}

17
circuits/.prettierignore Normal file
View File

@@ -0,0 +1,17 @@
# directories
broadcast
cache
coverage
node_modules
dist
# files
*.env
*.log
.DS_Store
.pnp.*
bun.lockb
lcov.info
package-lock.json
pnpm-lock.yaml
yarn.lock

View File

@@ -53,16 +53,23 @@ OpenPassport currently supports the following sig/hash algorithms:
## Installation
Go to the `/circuits` directory and run `yarn install`
you can do a focused install with
```bash
cd circuits && yarn install && cd ..
yarn workspace @selfxyz/circuits focus
```
Go to the `/common` directory and run `yarn install`
or you can run `yarn install` (it has the same affect whether ran in workspace root or circuits folder)
## Build TS Dependencies
from circuits directory run
```bash
cd common && yarn install && cd ..
yarn build:deps
```
## Build circuits (dev only)
@@ -71,7 +78,7 @@ cd common && yarn install && cd ..
./scripts/build_circuits.sh
```
## Run tests
## Run tests ()
```bash
yarn test

View File

@@ -1,9 +1,13 @@
{
"name": "circom-passport",
"name": "@selfxyz/circuits",
"version": "0.0.1",
"license": "MIT",
"author": "",
"private": true,
"author": "self team",
"type": "module",
"scripts": {
"build": "tsc",
"build:deps": "yarn workspaces foreach --from @selfxyz/circuits --topological-dev --recursive run build",
"build-all": "bash scripts/build/build_register_circuits.sh && bash scripts/build/build_register_circuits_id.sh && bash scripts/build/build_dsc_circuits.sh && bash scripts/build/build_disclose_circuits.sh",
"build-disclose": "bash scripts/build/build_disclose_circuits.sh",
"build-dsc": "bash scripts/build/build_dsc_circuits.sh",
@@ -12,22 +16,24 @@
"download": "bash scripts/server/download_circuits_from_AWS.sh",
"format": "prettier --write .",
"nice": "prettier --write .",
"install-circuits": "cd ../common && yarn && cd ../circuits && yarn",
"install-circuits": "yarn workspaces focus @selfxyz/circuits",
"lint": "prettier --check .",
"test": "yarn ts-mocha --max-old-space-size=8192 'tests/**/*.test.ts' 'tests/*.test.ts' --exit",
"test-custom-hasher": "yarn ts-mocha --max-old-space-size=8192 'tests/other_circuits/custom_hasher.test.ts' --exit",
"test-disclose": "yarn ts-mocha --max-old-space-size=8192 'tests/disclose/vc_and_disclose.test.ts' --exit",
"test-disclose-id": "yarn ts-mocha --max-old-space-size=8192 'tests/disclose/vc_and_disclose_id.test.ts' --exit",
"test-dsc": "yarn ts-mocha --max-old-space-size=51200 'tests/dsc/dsc.test.ts' --exit",
"test-ecdsa": "yarn ts-mocha --max-old-space-size=8192 'tests/utils/ecdsa.test.ts' --exit",
"test-is-older-than": "yarn ts-mocha --max-old-space-size=8192 'tests/other_circuits/is_older_than.test.ts' --exit",
"test-is-valid": "yarn ts-mocha --max-old-space-size=8192 'tests/other_circuits/is_valid.test.ts' --exit",
"test-not-in-list": "yarn ts-mocha --max-old-space-size=8192 'tests/other_circuits/prove_country_is_not_in_list.test.ts' --exit",
"test-ofac": "yarn ts-mocha --max-old-space-size=8192 'tests/ofac/ofac.test.ts' --exit",
"test-register": "yarn ts-mocha --max-old-space-size=40960 'tests/register/register.test.ts' --exit",
"test-register-id": "yarn ts-mocha --max-old-space-size=40960 'tests/register_id/register_id.test.ts' --exit",
"test-rsa": "yarn ts-mocha --max-old-space-size=8192 'tests/utils/rsaPkcs1v1_5.test.ts' --exit",
"test-rsa-pss": "yarn ts-mocha --max-old-space-size=8192 'tests/utils/rsapss.test.ts' --exit"
"test": "yarn test-base 'tests/**/*.test.ts' --exit",
"test-base": "NODE_OPTIONS='--loader ts-node/esm' yarn ts-mocha --max-old-space-size=8192",
"test-custom-hasher": "yarn test-base 'tests/other_circuits/custom_hasher.test.ts' --exit",
"test-disclose": "yarn test-base 'tests/disclose/vc_and_disclose.test.ts' --exit",
"test-disclose-id": "yarn test-base 'tests/disclose/vc_and_disclose_id.test.ts' --exit",
"test-dsc": "yarn test-base --max-old-space-size=51200 'tests/dsc/dsc.test.ts' --exit",
"test-ecdsa": "yarn test-base 'tests/utils/ecdsa.test.ts' --exit",
"test-is-older-than": "yarn test-base 'tests/other_circuits/is_older_than.test.ts' --exit",
"test-is-valid": "yarn test-base 'tests/other_circuits/is_valid.test.ts' --exit",
"test-not-in-list": "yarn test-base 'tests/other_circuits/prove_country_is_not_in_list.test.ts' --exit",
"test-ofac": "yarn test-base 'tests/ofac/ofac.test.ts' --exit",
"test-register": "yarn test-base --max-old-space-size=40960 'tests/register/register.test.ts' --exit",
"test-register-id": "yarn test-base --max-old-space-size=40960 'tests/register_id/register_id.test.ts' --exit",
"test-rsa": "yarn test-base 'tests/utils/rsaPkcs1v1_5.test.ts' --exit",
"test-rsa-pss": "yarn test-base 'tests/utils/rsapss.test.ts' --exit",
"types": "yarn build --noEmit"
},
"dependencies": {
"@noble/curves": "^1.4.2",
@@ -35,6 +41,7 @@
"@openpassport/zk-kit-imt": "^0.0.4",
"@openpassport/zk-kit-lean-imt": "^0.0.4",
"@openpassport/zk-kit-smt": "^0.0.1",
"@selfxyz/common": "workspace:^",
"@types/chai-as-promised": "^7.1.6",
"@types/node": "^20.11.19",
"@types/node-forge": "^1.3.5",

View File

@@ -6,22 +6,19 @@ import crypto from 'crypto';
import { describe } from 'mocha';
import path from 'path';
import { poseidon1, poseidon2 } from 'poseidon-lite';
import nameAndDobjson from '../../../common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobjson from '../../../common/ofacdata/outputs/nameAndYobSMT.json';
import passportNojson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import {
attributeToPosition,
PASSPORT_ATTESTATION_ID,
} from '../../../common/src/constants/constants';
import nameAndDobjson from '@selfxyz/common/ofacdata/outputs/nameAndDobSMT.json' with { type: 'json' };
import nameAndYobjson from '@selfxyz/common/ofacdata/outputs/nameAndYobSMT.json' with { type: 'json' };
import passportNojson from '@selfxyz/common/ofacdata/outputs/passportNoAndNationalitySMT.json' with { type: 'json' };
import { attributeToPosition, PASSPORT_ATTESTATION_ID } from '@selfxyz/common/constants/constants';
import {
formatAndUnpackForbiddenCountriesList,
formatAndUnpackReveal,
getAttributeFromUnpackedReveal,
} from '../../../common/src/utils/circuits/formatOutputs';
import { generateCircuitInputsVCandDisclose } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { generateCommitment } from '../../../common/src/utils/passports/passport';
import { hashEndpointWithScope } from '../../../common/src/utils/scope';
} from '@selfxyz/common/utils/circuits/formatOutputs';
import { generateCircuitInputsVCandDisclose } from '@selfxyz/common/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '@selfxyz/common/utils/passports/genMockPassportData';
import { generateCommitment } from '@selfxyz/common/utils/passports/passport';
import { hashEndpointWithScope } from '@selfxyz/common/utils/scope';
describe('Disclose', function () {
this.timeout(0);

View File

@@ -5,23 +5,23 @@ import { wasm as wasm_tester } from 'circom_tester';
import {
attributeToPosition_ID,
ID_CARD_ATTESTATION_ID,
} from '../../../common/src/constants/constants';
} from '@selfxyz/common/constants/constants';
import { poseidon1, poseidon2 } from 'poseidon-lite';
import { LeanIMT } from '@openpassport/zk-kit-lean-imt';
import { generateCircuitInputsVCandDisclose } from '../../../common/src/utils/circuits/generateInputs';
import { generateCircuitInputsVCandDisclose } from '@selfxyz/common/utils/circuits/generateInputs';
import crypto from 'crypto';
import { SMT } from '@openpassport/zk-kit-smt';
import nameAndDobjson from '../../../common/ofacdata/outputs/nameAndDobSMT_ID.json';
import nameAndYobjson from '../../../common/ofacdata/outputs/nameAndYobSMT_ID.json';
import passportNojson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import nameAndDobjson from '@selfxyz/common/ofacdata/outputs/nameAndDobSMT_ID.json' with { type: 'json' };
import nameAndYobjson from '@selfxyz/common/ofacdata/outputs/nameAndYobSMT_ID.json' with { type: 'json' };
import passportNojson from '@selfxyz/common/ofacdata/outputs/passportNoAndNationalitySMT.json' with { type: 'json' };
import {
formatAndUnpackForbiddenCountriesList,
formatAndUnpackReveal,
getAttributeFromUnpackedReveal,
} from '../../../common/src/utils/circuits/formatOutputs';
import { generateCommitment } from '../../../common/src/utils/passports/passport';
import { hashEndpointWithScope } from '../../../common/src/utils/scope';
import { genMockIdDoc } from '../../../common/src/utils/passports/genMockIdDoc';
} from '@selfxyz/common/utils/circuits/formatOutputs';
import { generateCommitment } from '@selfxyz/common/utils/passports/passport';
import { hashEndpointWithScope } from '@selfxyz/common/utils/scope';
import { genMockIdDoc } from '@selfxyz/common/utils/passports/genMockIdDoc';
describe('Disclose', function () {
this.timeout(0);

View File

@@ -2,15 +2,15 @@ import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import dotenv from 'dotenv';
import path from 'path';
import serialized_csca_tree from '../../../common/pubkeys/serialized_csca_tree.json';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { generateCircuitInputsDSC } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { parseDscCertificateData } from '../../../common/src/utils/passports/passport_parsing/parseDscCertificateData';
import { getLeafDscTreeFromParsedDsc } from '../../../common/src/utils/trees';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases';
import serialized_csca_tree from '../../../common/pubkeys/serialized_csca_tree.json' with { type: 'json' };
import { parseCertificateSimple } from '@selfxyz/common/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '@selfxyz/common/utils/circuits/circuitsName';
import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '@selfxyz/common/utils/passports/genMockPassportData';
import { parseDscCertificateData } from '@selfxyz/common/utils/passports/passport_parsing/parseDscCertificateData';
import { getLeafDscTreeFromParsedDsc } from '@selfxyz/common/utils/trees';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases.js';
dotenv.config();
const testSuite = process.env.FULL_TEST_SUITE === 'true' ? fullSigAlgs : sigAlgs;
@@ -26,7 +26,7 @@ testSuite.forEach(({ sigAlg, hashFunction, domainParameter, keyLength }) => {
);
const passportMetadata = passportData.passportMetadata;
describe(`DSC chain certificate - ${passportMetadata.cscaHashFunction.toUpperCase()} ${passportMetadata.cscaSignatureAlgorithm.toUpperCase()} ${passportMetadata.cscaCurveOrExponent.toUpperCase()} ${
describe(`DSC chain certificate - ${passportMetadata.cscaHashFunction?.toUpperCase()} ${passportMetadata.cscaSignatureAlgorithm?.toUpperCase()} ${passportMetadata.cscaCurveOrExponent?.toUpperCase()} ${
passportData.csca_parsed.publicKeyDetails.bits
}`, function () {
this.timeout(0); // Disable timeout

View File

@@ -3,14 +3,14 @@ import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import path from 'path';
import { poseidon2 } from 'poseidon-lite';
import nameAndDobjson from '../../../common/ofacdata/outputs/nameAndDobSMT.json';
import nameAndYobjson from '../../../common/ofacdata/outputs/nameAndYobSMT.json';
import nameAndDobIdCardJson from '../../../common/ofacdata/outputs/nameAndDobSMT_ID.json';
import nameAndYobIdCardJson from '../../../common/ofacdata/outputs/nameAndYobSMT_ID.json';
import { genMockIdDoc } from '../../../common/src/utils/passports/genMockIdDoc';
import passportNoAndNationalityjson from '../../../common/ofacdata/outputs/passportNoAndNationalitySMT.json';
import { generateCircuitInputsOfac } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import nameAndDobjson from '@selfxyz/common/ofacdata/outputs/nameAndDobSMT.json' with { type: 'json' };
import nameAndYobjson from '@selfxyz/common/ofacdata/outputs/nameAndYobSMT.json' with { type: 'json' };
import nameAndDobIdCardJson from '@selfxyz/common/ofacdata/outputs/nameAndDobSMT_ID.json' with { type: 'json' };
import nameAndYobIdCardJson from '@selfxyz/common/ofacdata/outputs/nameAndYobSMT_ID.json' with { type: 'json' };
import { genMockIdDoc } from '@selfxyz/common/utils/passports/genMockIdDoc';
import passportNoAndNationalityjson from '@selfxyz/common/ofacdata/outputs/passportNoAndNationalitySMT.json' with { type: 'json' };
import { generateCircuitInputsOfac } from '@selfxyz/common/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '@selfxyz/common/utils/passports/genMockPassportData';
let circuit: any;

View File

@@ -1,8 +1,8 @@
import { expect } from 'chai';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import { formatInput } from '../../../common/src/utils/circuits/generateInputs';
import { customHasher, packBytesAndPoseidon } from '../../../common/src/utils/hash';
import { formatInput } from '@selfxyz/common/utils/circuits/generateInputs';
import { customHasher, packBytesAndPoseidon } from '@selfxyz/common/utils/hash';
describe('CustomHasher', function () {
this.timeout(0);

View File

@@ -1,11 +1,11 @@
import { expect } from 'chai';
import { wasm as wasm_tester } from 'circom_tester';
import path from 'path';
import { formatCountriesList } from '../../../common/src/utils/circuits/formatInputs';
import { formatAndUnpackForbiddenCountriesList } from '../../../common/src/utils/circuits/formatOutputs';
import { formatInput } from '../../../common/src/utils/circuits/generateInputs';
import { formatMrz } from '../../../common/src/utils/passports/format';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { formatCountriesList } from '@selfxyz/common/utils/circuits/formatInputs';
import { formatAndUnpackForbiddenCountriesList } from '@selfxyz/common/utils/circuits/formatOutputs';
import { formatInput } from '@selfxyz/common/utils/circuits/generateInputs';
import { formatMrz } from '@selfxyz/common/utils/passports/format';
import { genAndInitMockPassportData } from '@selfxyz/common/utils/passports/genMockPassportData';
describe('ProveCountryIsNotInList', function () {
this.timeout(0);

View File

@@ -4,18 +4,15 @@ import dotenv from 'dotenv';
import { describe } from 'mocha';
import path from 'path';
import { poseidon6 } from 'poseidon-lite';
import serialized_dsc_tree from '../../../common/pubkeys/serialized_dsc_tree.json';
import { PASSPORT_ATTESTATION_ID } from '../../../common/src/constants/constants';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { generateCircuitInputsRegister } from '../../../common/src/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import {
generateCommitment,
generateNullifier,
} from '../../../common/src/utils/passports/passport';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases';
import serialized_dsc_tree from '@selfxyz/common/pubkeys/serialized_dsc_tree.json' with { type: 'json' };
import { PASSPORT_ATTESTATION_ID } from '@selfxyz/common/constants/constants';
import { parseCertificateSimple } from '@selfxyz/common/utils/certificate_parsing/parseCertificateSimple';
import { getCircuitNameFromPassportData } from '@selfxyz/common/utils/circuits/circuitsName';
import { generateCircuitInputsRegister } from '@selfxyz/common/utils/circuits/generateInputs';
import { genAndInitMockPassportData } from '@selfxyz/common/utils/passports/genMockPassportData';
import { generateCommitment, generateNullifier } from '@selfxyz/common/utils/passports/passport';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { fullSigAlgs, sigAlgs } from './test_cases.js';
dotenv.config();
const testSuite = process.env.FULL_TEST_SUITE === 'true' ? fullSigAlgs : sigAlgs;

View File

@@ -3,20 +3,16 @@ import { describe } from 'mocha';
import { expect } from 'chai';
import path from 'path';
import { wasm as wasm_tester } from 'circom_tester';
import { generateCircuitInputsRegister } from '../../../common/src/utils/circuits/generateInputs';
import { genMockPassportData } from '../../../common/src/utils/passports/genMockPassportData';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { getCircuitNameFromPassportData } from '../../../common/src/utils/circuits/circuitsName';
import { sigAlgs, fullSigAlgs } from './test_cases';
import {
generateCommitment,
generateNullifier,
} from '../../../common/src/utils/passports/passport';
import { generateCircuitInputsRegister } from '@selfxyz/common/utils/circuits/generateInputs';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { getCircuitNameFromPassportData } from '@selfxyz/common/utils/circuits/circuitsName';
import { sigAlgs, fullSigAlgs } from './test_cases.js';
import { generateCommitment, generateNullifier } from '@selfxyz/common/utils/passports/passport';
import { poseidon6 } from 'poseidon-lite';
import { hashAlgosTypes, ID_CARD_ATTESTATION_ID } from '../../../common/src/constants/constants';
import { parseCertificateSimple } from '../../../common/src/utils/certificate_parsing/parseCertificateSimple';
import serialized_dsc_tree from '../../../common/pubkeys/serialized_dsc_tree.json';
import { genMockIdDoc } from '../../../common/src/utils/passports/genMockIdDoc';
import { hashAlgosTypes, ID_CARD_ATTESTATION_ID } from '@selfxyz/common/constants/constants';
import { parseCertificateSimple } from '@selfxyz/common/utils/certificate_parsing/parseCertificateSimple';
import serialized_dsc_tree from '../../../common/pubkeys/serialized_dsc_tree.json' with { type: 'json' };
import { genMockIdDoc } from '@selfxyz/common/utils/passports/genMockIdDoc';
dotenv.config();
const testSuite = process.env.FULL_TEST_SUITE === 'true' ? fullSigAlgs : sigAlgs;

View File

@@ -1,8 +1,8 @@
import { wasm as wasmTester } from 'circom_tester';
import * as crypto from 'crypto';
import { initElliptic } from '../../../common/src/utils/certificate_parsing/elliptic';
import { initElliptic } from '@selfxyz/common/utils/certificate_parsing/elliptic';
import * as path from 'path';
import { splitToWords } from '../../../common/src/utils/bytes';
import { splitToWords } from '@selfxyz/common/utils/bytes';
const elliptic = initElliptic();
const testSuite = [
@@ -267,8 +267,8 @@ function sign(message: Uint8Array, curve: string, hash: string, n: number, k: nu
return {
signature: [
...splitToWords(BigInt(signature.r), k, n),
...splitToWords(BigInt(signature.s), k, n),
...splitToWords(BigInt(signature.r.toString()), k, n),
...splitToWords(BigInt(signature.s.toString()), k, n),
],
pubKey: [
splitToWords(BigInt(pubkey.getX().toString()), k, n),
@@ -299,13 +299,13 @@ function signOverflow(
hashParsed.push(...x.toString(2).padStart(8, '0').split(''))
);
let r = BigInt(signature.r);
let s = BigInt(signature.s);
let r = BigInt(signature.r.toString(10));
let s = BigInt(signature.s.toString(10));
if (overflowS) {
s = s + BigInt(ec.n);
s = s + BigInt(ec.n.toString());
} else {
r = r + BigInt(ec.n);
r = r + BigInt(ec.n.toString());
}
return {

View File

@@ -1,9 +1,9 @@
import crypto from 'crypto';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { hexToDecimal, splitToWords } from '../../../common/src/utils/bytes';
import { bytesToBigDecimal } from '../../../common/src/utils/bytes';
import { getNAndK } from '../../../common/src/utils/passports/passport';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { hexToDecimal, splitToWords } from '@selfxyz/common/utils/bytes';
import { bytesToBigDecimal } from '@selfxyz/common/utils/bytes';
import { getNAndK } from '@selfxyz/common/utils/passports/passport';
export const generateMockRsaPkcs1v1_5Inputs = (signatureAlgorithm: SignatureAlgorithm) => {
let privateKey: string;

View File

@@ -1,10 +1,10 @@
import * as forge from 'node-forge';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { hexToDecimal } from '../../../common/src/utils/bytes';
import { bytesToBigDecimal } from '../../../common/src/utils/bytes';
import { getNAndK } from '../../../common/src/utils/passports/passport';
import { splitToWords } from '../../../common/src/utils/bytes';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { hexToDecimal } from '@selfxyz/common/utils/bytes';
import { bytesToBigDecimal } from '@selfxyz/common/utils/bytes';
import { getNAndK } from '@selfxyz/common/utils/passports/passport';
import { splitToWords } from '@selfxyz/common/utils/bytes';
export const generateMockRsaPssInputs = (
signatureAlgorithm: SignatureAlgorithm,

View File

@@ -1,8 +1,8 @@
import { wasm as wasmTester } from 'circom_tester';
import { describe, it } from 'mocha';
import path from 'path';
import { generateMockRsaPkcs1v1_5Inputs } from './generateMockInputsInCircuits';
import { SignatureAlgorithm } from '../../../common/src/utils/types';
import { generateMockRsaPkcs1v1_5Inputs } from './generateMockInputsInCircuits.js';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
import { expect } from 'chai';
describe('VerifyRsaPkcs1v1_5 Circuit Test', function () {
this.timeout(0);

View File

@@ -4,9 +4,9 @@ import path from 'path';
import {
generateMalleableRsaPssInputs,
generateMockRsaPssInputs,
} from './generateMockInputsRsaPss';
} from './generateMockInputsRsaPss.js';
import { expect } from 'chai';
import { fullAlgorithms, sigAlgs, AdditionalCases } from './testcase/rsapss';
import { fullAlgorithms, sigAlgs, AdditionalCases } from './testcase/rsapss.js';
describe('VerifyRsapss Circuit Test', function () {
this.timeout(0);

View File

@@ -1,4 +1,4 @@
import { SignatureAlgorithm } from '../../../../common/src/utils/types';
import { SignatureAlgorithm } from '@selfxyz/common/utils/types';
export const fullAlgorithms: { algo: SignatureAlgorithm; saltLength: number }[] = [
{ algo: 'rsapss_sha256_65537_4096', saltLength: 32 },

View File

@@ -2,9 +2,10 @@
"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ES2020",
"moduleResolution": "node",
"module": "CommonJS",
"moduleResolution": "node16",
"module": "node18",
"allowJs": true,
"checkJs": false,
"outDir": "./dist"

File diff suppressed because it is too large Load Diff

3
common/.prettierignore Normal file
View File

@@ -0,0 +1,3 @@
dist
*.json
src/constants/skiPem.ts

View File

@@ -1,16 +1,54 @@
{
"name": "openpassport-common",
"name": "@selfxyz/common",
"version": "0.0.1",
"description": "Constants and utils for self sdks",
"license": "MIT",
"author": "",
"author": "@Selfxyz Team",
"type": "module",
"main": "./dist/cjs/index.js",
"module": "./dist/esm/index.js",
"types": "./dist/esm/index.d.ts",
"exports": {
".": {
"import": "./dist/esm/index.js",
"require": "./dist/cjs/index.js",
"types": "./dist/esm/index.d.ts"
},
"./constants/*": {
"import": "./dist/esm/constants/*.js",
"require": "./dist/cjs/constants/*.js",
"types": "./dist/esm/constants/*.d.ts"
},
"./utils/*": {
"import": "./dist/esm/utils/*.js",
"require": "./dist/cjs/utils/*.js",
"types": "./dist/esm/utils/*.d.ts"
},
"./ofacdata/outputs/nameAndDobSMT.json": "./ofacdata/outputs/nameAndDobSMT.json",
"./ofacdata/outputs/nameAndYobSMT.json": "./ofacdata/outputs/nameAndYobSMT.json",
"./ofacdata/outputs/nameAndDobSMT_ID.json": "./ofacdata/outputs/nameAndDobSMT_ID.json",
"./ofacdata/outputs/nameAndYobSMT_ID.json": "./ofacdata/outputs/nameAndYobSMT_ID.json",
"./ofacdata/outputs/passportNoAndNationalitySMT.json": "./ofacdata/outputs/passportNoAndNationalitySMT.json",
"./pubkeys/serialized_dsc_tree.json": "./pubkeys/serialized_dsc_tree.json",
"./mock_certificates/*": "./src/mock_certificates/*",
"./mock_certificates/**/*": "./src/mock_certificates/**/*"
},
"files": [
"dist/cjs",
"dist/esm",
"src/mock_certificates"
],
"scripts": {
"build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && yarn postbuild",
"types": "tsc -p tsconfig.json",
"format": "prettier --write .",
"lint": "prettier --check .",
"test": "yarn ts-mocha tests/**/*.test.ts --exit",
"test:scope": "yarn ts-mocha tests/scope.test.ts --exit"
"test": "NODE_OPTIONS='--loader ts-node/esm' ts-mocha tests/**/*.test.ts --exit",
"test:scope": "NODE_OPTIONS='--loader ts-node/esm' ts-mocha tests/scope.test.ts --exit",
"postbuild": "node ./scripts/post-build.mjs",
"prepublishOnly": "yarn build"
},
"dependencies": {
"@babel/runtime": "^7.23.4",
"@openpassport/zk-kit-imt": "^0.0.5",
"@openpassport/zk-kit-lean-imt": "^0.0.6",
"@openpassport/zk-kit-smt": "^0.0.1",
@@ -29,18 +67,19 @@
"js-sha512": "^0.9.0",
"json-to-ts": "^2.1.0",
"jsrsasign": "^11.1.0",
"mocha": "^10.7.3",
"node-forge": "https://github.com/remicolin/forge",
"node-forge": "github:remicolin/forge#17a11a632dd0e50343b3b8393245a2696f78afbb",
"path": "^0.12.7",
"pkijs": "^3.2.4",
"poseidon-lite": "^0.2.0",
"snarkjs": "^0.7.5",
"ts-mocha": "^10.0.0",
"typescript-parser": "^2.6.1",
"uuid": "^11.0.5"
},
"devDependencies": {
"@types/node-forge": "^1.3.10",
"prettier": "^3.3.3"
"mocha": "^10.7.3",
"prettier": "^3.3.3",
"ts-mocha": "^10.0.0",
"typescript": "^5.8.3"
}
}

View File

@@ -0,0 +1,10 @@
import { writeFileSync } from 'node:fs';
import path from 'node:path';
const __dirname = process.cwd();
const DIST = path.resolve(__dirname, 'dist');
writeFileSync(path.join(DIST, 'esm', 'package.json'), JSON.stringify({ type: 'module' }, null, 4));
writeFileSync(
path.join(DIST, 'cjs', 'package.json'),
JSON.stringify({ type: 'commonjs' }, null, 4)
);

View File

@@ -5,7 +5,7 @@ export const COMMITMENT_TREE_DEPTH = 33;
export const DEFAULT_USER_ID_TYPE = 'uuid';
export const REDIRECT_URL = 'https://redirect.self.xyz';
export const WS_RPC_URL_VC_AND_DISCLOSE = "ws://disclose.proving.self.xyz:8888/";
export const WS_RPC_URL_VC_AND_DISCLOSE = 'ws://disclose.proving.self.xyz:8888/';
export const WS_DB_RELAYER = 'wss://websocket.self.xyz';
export const WS_DB_RELAYER_STAGING = 'wss://websocket.staging.self.xyz';
export const API_URL = 'https://api.self.xyz';
@@ -20,12 +20,11 @@ export const IDENTITY_TREE_URL = 'https://tree.self.xyz/identity';
export const IDENTITY_TREE_URL_STAGING = 'https://tree.staging.self.xyz/identity';
export const PASSPORT_ATTESTATION_ID = '1'; //"8518753152044246090169372947057357973469996808638122125210848696986717482788"
export const ID_CARD_ATTESTATION_ID = '2'
export const ID_CARD_ATTESTATION_ID = '2';
export const CHAIN_NAME = 'celo';
export const RPC_URL = 'https://forno.celo.org';
export const PCR0_MANAGER_ADDRESS = '0xE36d4EE5Fd3916e703A46C21Bb3837dB7680C8B8';
// we make it global here because passing it to generateCircuitInputsRegister caused trouble
export const DEVELOPMENT_MODE = true;
export const DEFAULT_MAJORITY = '18';
@@ -79,7 +78,7 @@ export const MAX_CERT_BYTES: Partial<Record<keyof typeof SignatureAlgorithmIndex
export const ECDSA_K_LENGTH_FACTOR = 2;
// possible values because of sha1 constaints: 192,320,384, 448, 576, 640
export const CIRCUIT_TYPES = ['dsc', 'register', 'vc_and_disclose']
export const CIRCUIT_TYPES = ['dsc', 'register', 'vc_and_disclose'];
export const circuitNameFromMode = {
prove: 'prove',
prove_onchain: 'prove',
@@ -115,7 +114,7 @@ export enum RegisterVerifierId {
register_sha256_sha256_sha256_rsapss_65537_64_2048 = 22,
register_sha512_sha512_sha256_rsa_65537_4096 = 23,
register_sha512_sha512_sha512_ecdsa_secp521r1 = 24,
};
}
export enum DscVerifierId {
dsc_sha1_ecdsa_brainpoolP256r1 = 0,
@@ -138,7 +137,7 @@ export enum DscVerifierId {
dsc_sha512_rsapss_65537_64_4096 = 17,
dsc_sha256_rsapss_3_32_4096 = 18,
dsc_sha1_ecdsa_secp256r1 = 19,
};
}
export enum SignatureAlgorithmIndex {
rsa_sha256_65537_2048 = 1,
@@ -205,18 +204,18 @@ export const circuitToSelectorMode = {
};
export const revealedDataTypes = {
'issuing_state': 0,
'name': 1,
'passport_number': 2,
'nationality': 3,
'date_of_birth': 4,
'gender': 5,
'expiry_date': 6,
'older_than': 7,
'passport_no_ofac': 8,
'name_and_dob_ofac': 9,
'name_and_yob_ofac': 10,
}
issuing_state: 0,
name: 1,
passport_number: 2,
nationality: 3,
date_of_birth: 4,
gender: 5,
expiry_date: 6,
older_than: 7,
passport_no_ofac: 8,
name_and_dob_ofac: 9,
name_and_yob_ofac: 10,
};
export const CIRCUIT_CONSTANTS = {
REGISTER_NULLIFIER_INDEX: 0,
@@ -237,7 +236,7 @@ export const CIRCUIT_CONSTANTS = {
VC_AND_DISCLOSE_NAME_YOB_SMT_ROOT_INDEX: 18,
VC_AND_DISCLOSE_SCOPE_INDEX: 19,
VC_AND_DISCLOSE_USER_IDENTIFIER_INDEX: 20,
}
};
export const MAX_BYTES_IN_FIELD = 31;
export const MAX_PUBKEY_DSC_BYTES = 525;
@@ -341,7 +340,7 @@ export const countryCodes = {
GMB: 'Gambia',
GEO: 'Georgia',
DEU: 'Germany',
"D<<": 'Germany', // Bundesrepublik Deutschland uses this in passports instead of DEU
'D<<': 'Germany', // Bundesrepublik Deutschland uses this in passports instead of DEU
GHA: 'Ghana',
GIB: 'Gibraltar',
GRC: 'Greece',
@@ -533,4 +532,4 @@ qzOBhID0Nxk4k9sW1uT6ocW1xp1SB2WotORssOKIAOLJM8IbPl6n/DkYNcfvyXI7
export const DEFAULT_RPC_URL = 'https://mainnet.optimism.io';
export const REGISTER_CONTRACT_ADDRESS = '0x3F346FFdC5d583e4126AF01A02Ac5b9CdB3f1909';
export const SBT_CONTRACT_ADDRESS = '0x601Fd54FD11C5E77DE84d877e55B829aff20f0A6';
export const SBT_CONTRACT_ADDRESS = '0x601Fd54FD11C5E77DE84d877e55B829aff20f0A6';

Some files were not shown because too many files have changed in this diff Show More