diff --git a/.dockerignore b/.dockerignore index f5aeaa531..1fe4db401 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,45 +1,46 @@ .dockerignore .DS_Store .git .eslintcache .vscode !.vscode/extensions.json node_modules landing/node_modules landing/dist lib/node_modules native !native/package.json !native/.flowconfig !native/ios/Podfile !native/ios/pod-patch !native/cpp/CommonCpp/grpc !native/expo-modules/android-lifecycle/package.json +!native/expo-modules/aes-crypto/package.json web/node_modules web/dist keyserver/dist keyserver/node_modules keyserver/facts keyserver/secrets keyserver/*.env keyserver/*.env.* services/tunnelbroker/Dockerfile services/identity/target services/identity/Dockerfile services/backup/Dockerfile services/blob/target services/blob/Dockerfile services/electron-update-server/node_modules native/cpp/**/build services/*/build services/build services/lib/src/build shared/protos/build diff --git a/keyserver/Dockerfile b/keyserver/Dockerfile index c4b977c8b..aa5bf690d 100644 --- a/keyserver/Dockerfile +++ b/keyserver/Dockerfile @@ -1,187 +1,189 @@ FROM node:16.18.0-bullseye #------------------------------------------------------------------------------- # STEP 0: SET UP USER # Set up Linux user and group for the container #------------------------------------------------------------------------------- # We use bind mounts for our backups folder, which means Docker on Linux will # blindly match the UID/GID for the backups folder on the container with the # host. In order to make sure the container is able to create backups with the # right UID/GID, we need to do two things: # 1. Make sure that the user that runs the Docker container on the host has # permissions to write to the backups folder on the host. We rely on the host # to configure this properly # 2. Make sure we're running this container with the same UID/GID that the host # is using, so the UID/GID show up correctly on both sides of the bind mount # To handle 2 correctly, we have the host pass the UID/GID with which they're # running the container. Our approach is based on this one: # https://github.com/mhart/alpine-node/issues/48#issuecomment-430902787 ARG HOST_UID ARG HOST_GID ARG COMM_ALCHEMY_KEY ARG COMM_WALLETCONNECT_KEY ARG COMM_JSONCONFIG_secrets_geoip_license USER root RUN \ if [ -z "`getent group $HOST_GID`" ]; then \ addgroup --system --gid $HOST_GID comm; \ else \ groupmod --new-name comm `getent group $HOST_GID | cut -d: -f1`; \ fi && \ if [ -z "`getent passwd $HOST_UID`" ]; then \ adduser --system --uid $HOST_UID --ingroup comm --shell /bin/bash comm; \ else \ usermod --login comm --gid $HOST_GID --home /home/comm --move-home \ `getent passwd $HOST_UID | cut -d: -f1`; \ fi #------------------------------------------------------------------------------- # STEP 1: INSTALL PREREQS # Install prereqs first so we don't have to reinstall them if anything changes #------------------------------------------------------------------------------- # We need to add the MariaDB repo to apt in order to install mariadb-client RUN wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup \ && chmod +x mariadb_repo_setup \ && ./mariadb_repo_setup \ && rm mariadb_repo_setup # We need rsync in the prod-build yarn script # We need mariadb-client so we can use mysqldump for backups # We need cmake to install protobuf (prereq for rust-node-addon) RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ rsync \ mariadb-client \ cmake \ && rm -rf /var/lib/apt/lists/* # Install protobuf manually to ensure that we have the correct version COPY scripts/install_protobuf.sh scripts/ RUN cd scripts && ./install_protobuf.sh #------------------------------------------------------------------------------- # STEP 2: DEVOLVE PRIVILEGES # Create another user to run the rest of the commands #------------------------------------------------------------------------------- USER comm WORKDIR /home/comm/app #------------------------------------------------------------------------------- # STEP 3: SET UP MYSQL BACKUPS # Prepare the system to properly handle mysqldump backups #------------------------------------------------------------------------------- # Prepare the directory that will hold the backups RUN mkdir /home/comm/backups #------------------------------------------------------------------------------- # STEP 4: SET UP CARGO (RUST PACKAGE MANAGER) # We use Cargo to build pre-compiled Node.js addons in Rust #------------------------------------------------------------------------------- # Install Rust and add Cargo's bin directory to the $PATH environment variable RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ENV PATH /home/comm/.cargo/bin:$PATH #------------------------------------------------------------------------------- # STEP 5: SET UP NVM # We use nvm to make sure we're running the right Node version #------------------------------------------------------------------------------- # First we install nvm ENV NVM_DIR /home/comm/.nvm RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh \ | bash # Then we use nvm to install the right version of Node. We call this early so # Docker build caching saves us from re-downloading Node when any file changes COPY --chown=comm keyserver/.nvmrc keyserver/ COPY --chown=comm keyserver/bash/source-nvm.sh keyserver/bash/ RUN cd keyserver && . bash/source-nvm.sh #------------------------------------------------------------------------------- # STEP 6: YARN CLEANINSTALL # We run yarn cleaninstall before copying most of the files in for build caching #------------------------------------------------------------------------------- # Copy in package.json files, yarn.lock files, and relevant installation scripts COPY --chown=comm package.json yarn.lock postinstall.sh ./ COPY --chown=comm keyserver/package.json keyserver/.flowconfig keyserver/ COPY --chown=comm lib/package.json lib/.flowconfig lib/ COPY --chown=comm web/package.json web/.flowconfig web/ COPY --chown=comm native/package.json native/.flowconfig native/ COPY --chown=comm landing/package.json landing/.flowconfig landing/ COPY --chown=comm desktop/package.json desktop/ COPY --chown=comm keyserver/addons/rust-node-addon/package.json \ keyserver/addons/rust-node-addon/install_ci_deps.sh \ keyserver/addons/rust-node-addon/postinstall.sh \ keyserver/addons/rust-node-addon/ COPY --chown=comm native/expo-modules/android-lifecycle/package.json \ native/expo-modules/android-lifecycle/ +COPY --chown=comm native/expo-modules/aes-crypto/package.json \ + native/expo-modules/aes-crypto/ COPY --chown=comm services/electron-update-server/package.json \ services/electron-update-server/ # Create empty Rust library and copy in Cargo.toml file RUN cargo init keyserver/addons/rust-node-addon --lib COPY --chown=comm keyserver/addons/rust-node-addon/Cargo.toml \ keyserver/addons/rust-node-addon/ # Copy in local dependencies of rust-node-addon COPY --chown=comm shared/comm-opaque shared/comm-opaque/ COPY --chown=comm shared/tunnelbroker-client shared/tunnelbroker-client/ # Copy protobuf files as a dependency for the shared client libraries COPY --chown=comm shared/protos shared/protos/ # Copy in files needed for patch-package COPY --chown=comm patches patches/ # Actually run yarn RUN yarn cleaninstall #------------------------------------------------------------------------------- # STEP 7: WEBPACK BUILD # We do this first so Docker doesn't rebuild when only keyserver files change #------------------------------------------------------------------------------- COPY --chown=comm lib lib/ COPY --chown=comm landing landing/ RUN yarn workspace landing prod COPY --chown=comm web web/ RUN yarn workspace web prod #------------------------------------------------------------------------------- # STEP 8: COPY IN SOURCE FILES # We run this later so the above layers are cached if only source files change #------------------------------------------------------------------------------- COPY --chown=comm . . #------------------------------------------------------------------------------- # STEP 9: BUILD NODE ADDON # Now that source files have been copied in, build rust-node-addon #------------------------------------------------------------------------------- RUN yarn workspace rust-node-addon build #------------------------------------------------------------------------------- # STEP 10: RUN BUILD SCRIPTS # We need to populate keyserver/dist, among other things #------------------------------------------------------------------------------- # Babel transpilation of keyserver src RUN yarn workspace keyserver prod-build #------------------------------------------------------------------------------- # STEP 11: RUN THE SERVER # Actually run the Node.js keyserver using nvm #------------------------------------------------------------------------------- EXPOSE 3000 WORKDIR /home/comm/app/keyserver CMD bash/run-prod.sh diff --git a/native/expo-modules/aes-crypto/android/build.gradle b/native/expo-modules/aes-crypto/android/build.gradle new file mode 100644 index 000000000..d44b660a5 --- /dev/null +++ b/native/expo-modules/aes-crypto/android/build.gradle @@ -0,0 +1,91 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'maven-publish' + +group = 'app.comm.android.aescrypto' +version = '0.1.0' + +buildscript { + def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle") + if (expoModulesCorePlugin.exists()) { + apply from: expoModulesCorePlugin + applyKotlinExpoModulesCorePlugin() + } + + // Simple helper that allows the root project to override versions declared by this library. + ext.safeExtGet = { prop, fallback -> + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback + } + + // Ensures backward compatibility + ext.getKotlinVersion = { + if (ext.has("kotlinVersion")) { + ext.kotlinVersion() + } else { + ext.safeExtGet("kotlinVersion", "1.6.10") + } + } + + repositories { + mavenCentral() + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}") + } +} + +// Creating sources with comments +task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.srcDirs +} + +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + from components.release + // Add additional sourcesJar to artifacts + artifact(androidSourcesJar) + } + } + repositories { + maven { + url = mavenLocal().url + } + } + } +} + +android { + compileSdkVersion safeExtGet("compileSdkVersion", 31) + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.majorVersion + } + + defaultConfig { + minSdkVersion safeExtGet("minSdkVersion", 21) + targetSdkVersion safeExtGet("targetSdkVersion", 31) + versionCode 1 + versionName "0.1.0" + } + lintOptions { + abortOnError false + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation project(':expo-modules-core') + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}" +} diff --git a/native/expo-modules/aes-crypto/android/src/main/AndroidManifest.xml b/native/expo-modules/aes-crypto/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..3671b003e --- /dev/null +++ b/native/expo-modules/aes-crypto/android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/native/expo-modules/aes-crypto/android/src/main/java/app/comm/android/aescrypto/AESCryptoModule.kt b/native/expo-modules/aes-crypto/android/src/main/java/app/comm/android/aescrypto/AESCryptoModule.kt new file mode 100644 index 000000000..16f23a507 --- /dev/null +++ b/native/expo-modules/aes-crypto/android/src/main/java/app/comm/android/aescrypto/AESCryptoModule.kt @@ -0,0 +1,14 @@ +package app.comm.android.aescrypto + +import expo.modules.kotlin.modules.Module +import expo.modules.kotlin.modules.ModuleDefinition + +class AESCryptoModule : Module() { + override fun definition() = ModuleDefinition { + Name("AESCrypto") + + Function("hello") { + return@Function "Hello world! 👋" + } + } +} diff --git a/native/expo-modules/aes-crypto/expo-module.config.json b/native/expo-modules/aes-crypto/expo-module.config.json new file mode 100644 index 000000000..9144ad2f9 --- /dev/null +++ b/native/expo-modules/aes-crypto/expo-module.config.json @@ -0,0 +1,9 @@ +{ + "platforms": ["ios", "android"], + "ios": { + "modules": ["AESCryptoModule"] + }, + "android": { + "modules": ["app.comm.android.aescrypto.AESCryptoModule"] + } +} diff --git a/native/expo-modules/aes-crypto/ios/AESCrypto.podspec b/native/expo-modules/aes-crypto/ios/AESCrypto.podspec new file mode 100644 index 000000000..9a54a0add --- /dev/null +++ b/native/expo-modules/aes-crypto/ios/AESCrypto.podspec @@ -0,0 +1,27 @@ +require 'json' + +package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json'))) + +Pod::Spec.new do |s| + s.name = 'AESCrypto' + s.version = package['version'] + s.summary = package['description'] + s.description = package['description'] + s.license = package['license'] + s.author = 'Comm' + s.homepage = 'https://comm.app' + s.platform = :ios, '13.0' + s.swift_version = '5.4' + s.source = { git: 'https://github.com/CommE2E/comm' } + s.static_framework = true + + s.dependency 'ExpoModulesCore' + + # Swift/Objective-C compatibility + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'SWIFT_COMPILATION_MODE' => 'wholemodule' + } + + s.source_files = "**/*.{h,m,swift}" +end diff --git a/native/expo-modules/aes-crypto/ios/AESCryptoModule.swift b/native/expo-modules/aes-crypto/ios/AESCryptoModule.swift new file mode 100644 index 000000000..5ad7b2516 --- /dev/null +++ b/native/expo-modules/aes-crypto/ios/AESCryptoModule.swift @@ -0,0 +1,11 @@ +import ExpoModulesCore + +public class AESCryptoModule: Module { + public func definition() -> ModuleDefinition { + Name("AESCrypto") + + Function("hello") { () -> String in + return "Hello world! 👋" + } + } +} diff --git a/native/expo-modules/aes-crypto/package.json b/native/expo-modules/aes-crypto/package.json new file mode 100644 index 000000000..89199d01d --- /dev/null +++ b/native/expo-modules/aes-crypto/package.json @@ -0,0 +1,17 @@ +{ + "name": "@commapp/aes-crypto", + "version": "0.0.1", + "private": true, + "license": "BSD-3-Clause", + "description": "AES GCM encryption and decryption", + "dependencies": {}, + "devDependencies": { + "expo-module-scripts": "^3.0.3", + "expo-modules-core": "^1.0.3" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } +} diff --git a/native/ios/Podfile.lock b/native/ios/Podfile.lock index ab6194f3c..ee534a2b2 100644 --- a/native/ios/Podfile.lock +++ b/native/ios/Podfile.lock @@ -1,909 +1,915 @@ PODS: + - AESCrypto (0.0.1): + - ExpoModulesCore - boost (1.76.0) - DoubleConversion (1.1.6) - DVAssetLoaderDelegate (0.3.3) - EXApplication (5.0.1): - ExpoModulesCore - EXConstants (14.0.2): - ExpoModulesCore - EXFileSystem (15.1.1): - ExpoModulesCore - EXFont (11.0.1): - ExpoModulesCore - EXImageLoader (4.0.0): - ExpoModulesCore - React-Core - EXJSONUtils (0.4.0) - EXManifests (0.4.0): - EXJSONUtils - EXMediaLibrary (15.0.0): - ExpoModulesCore - React-Core - Expo (47.0.8): - ExpoModulesCore - expo-dev-client (2.0.1): - EXManifests - expo-dev-launcher - expo-dev-menu - expo-dev-menu-interface - EXUpdatesInterface - expo-dev-launcher (2.0.2): - EXManifests - expo-dev-launcher/Main (= 2.0.2) - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore - EXUpdatesInterface - React-Core - expo-dev-launcher/Main (2.0.2): - EXManifests - expo-dev-launcher/Unsafe - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore - EXUpdatesInterface - React-Core - expo-dev-launcher/Unsafe (2.0.2): - EXManifests - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore - EXUpdatesInterface - React-Core - expo-dev-menu (2.0.2): - expo-dev-menu/Main (= 2.0.2) - expo-dev-menu-interface (1.0.0) - expo-dev-menu/GestureHandler (2.0.2) - expo-dev-menu/Main (2.0.2): - EXManifests - expo-dev-menu-interface - expo-dev-menu/Vendored - ExpoModulesCore - React-Core - expo-dev-menu/Reanimated (2.0.2): - DoubleConversion - FBLazyVector - FBReactNativeSpec - glog - RCT-Folly - RCTRequired - RCTTypeSafety - React-callinvoker - React-Core - React-Core/DevSupport - React-Core/RCTWebSocket - React-CoreModules - React-cxxreact - React-jsi - React-jsiexecutor - React-jsinspector - React-RCTActionSheet - React-RCTAnimation - React-RCTBlob - React-RCTImage - React-RCTLinking - React-RCTNetwork - React-RCTSettings - React-RCTText - React-RCTVibration - ReactCommon/turbomodule/core - Yoga - expo-dev-menu/SafeAreaView (2.0.2) - expo-dev-menu/Vendored (2.0.2): - expo-dev-menu/GestureHandler - expo-dev-menu/Reanimated - expo-dev-menu/SafeAreaView - ExpoHaptics (12.0.1): - ExpoModulesCore - ExpoImageManipulator (11.0.0): - EXImageLoader - ExpoModulesCore - ExpoImagePicker (14.0.2): - ExpoModulesCore - ExpoKeepAwake (11.0.1): - ExpoModulesCore - ExpoModulesCore (1.0.3): - React-Core - ReactCommon/turbomodule/core - EXSecureStore (12.0.0): - ExpoModulesCore - EXSplashScreen (0.17.5): - ExpoModulesCore - React-Core - EXUpdatesInterface (0.8.1) - FBLazyVector (0.70.6) - FBReactNativeSpec (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTRequired (= 0.70.6) - RCTTypeSafety (= 0.70.6) - React-Core (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - fmt (6.2.1) - glog (0.3.5) - hermes-engine (0.70.6) - libevent (2.1.12) - libwebp (1.2.3): - libwebp/demux (= 1.2.3) - libwebp/mux (= 1.2.3) - libwebp/webp (= 1.2.3) - libwebp/demux (1.2.3): - libwebp/webp - libwebp/mux (1.2.3): - libwebp/demux - libwebp/webp (1.2.3) - lottie-ios (3.4.4) - lottie-react-native (5.1.4): - lottie-ios (~> 3.4.0) - React-Core - mobile-ffmpeg-min (4.3.1.LTS) - OLMKit (3.2.14): - OLMKit/olmc (= 3.2.14) - OLMKit/olmcpp (= 3.2.14) - OLMKit/olmc (3.2.14) - OLMKit/olmcpp (3.2.14) - OpenSSL-Universal (1.1.1900) - RCT-Folly (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - RCT-Folly/Default (= 2021.07.22.00) - RCT-Folly/Default (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - RCT-Folly/Futures (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - libevent - RCTRequired (0.70.6) - RCTTypeSafety (0.70.6): - FBLazyVector (= 0.70.6) - RCTRequired (= 0.70.6) - React-Core (= 0.70.6) - React (0.70.6): - React-Core (= 0.70.6) - React-Core/DevSupport (= 0.70.6) - React-Core/RCTWebSocket (= 0.70.6) - React-RCTActionSheet (= 0.70.6) - React-RCTAnimation (= 0.70.6) - React-RCTBlob (= 0.70.6) - React-RCTImage (= 0.70.6) - React-RCTLinking (= 0.70.6) - React-RCTNetwork (= 0.70.6) - React-RCTSettings (= 0.70.6) - React-RCTText (= 0.70.6) - React-RCTVibration (= 0.70.6) - React-bridging (0.70.6): - RCT-Folly (= 2021.07.22.00) - React-jsi (= 0.70.6) - React-callinvoker (0.70.6) - React-Codegen (0.70.6): - FBReactNativeSpec (= 0.70.6) - RCT-Folly (= 2021.07.22.00) - RCTRequired (= 0.70.6) - RCTTypeSafety (= 0.70.6) - React-Core (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-Core (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default (= 0.70.6) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/CoreModulesHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/Default (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/DevSupport (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default (= 0.70.6) - React-Core/RCTWebSocket (= 0.70.6) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-jsinspector (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTActionSheetHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTAnimationHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTBlobHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTImageHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTLinkingHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTNetworkHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTSettingsHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTTextHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTVibrationHeaders (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-Core/RCTWebSocket (0.70.6): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default (= 0.70.6) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-perflogger (= 0.70.6) - Yoga - React-CoreModules (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTTypeSafety (= 0.70.6) - React-Codegen (= 0.70.6) - React-Core/CoreModulesHeaders (= 0.70.6) - React-jsi (= 0.70.6) - React-RCTImage (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-cxxreact (0.70.6): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - React-callinvoker (= 0.70.6) - React-jsi (= 0.70.6) - React-jsinspector (= 0.70.6) - React-logger (= 0.70.6) - React-perflogger (= 0.70.6) - React-runtimeexecutor (= 0.70.6) - React-hermes (0.70.6): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-jsiexecutor (= 0.70.6) - React-jsinspector (= 0.70.6) - React-perflogger (= 0.70.6) - React-jsi (0.70.6): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - React-jsi/Default (= 0.70.6) - React-jsi/Default (0.70.6): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - React-jsiexecutor (0.70.6): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-perflogger (= 0.70.6) - React-jsinspector (0.70.6) - React-logger (0.70.6): - glog - react-native-background-upload (6.6.0): - React - react-native-camera (3.31.0): - React - react-native-camera/RCT (= 3.31.0) - react-native-camera/RN (= 3.31.0) - react-native-camera/RCT (3.31.0): - React - react-native-camera/RN (3.31.0): - React - react-native-ffmpeg/min-lts (0.4.4): - mobile-ffmpeg-min (= 4.3.1.LTS) - React - react-native-in-app-message (1.0.2): - React - react-native-netinfo (9.3.7): - React-Core - react-native-orientation-locker (1.5.0): - React-Core - react-native-pager-view (6.0.1): - React-Core - react-native-safe-area-context (4.4.1): - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core - react-native-video/Video (5.2.1): - React-Core - react-native-video/VideoCaching (5.2.1): - DVAssetLoaderDelegate (~> 0.3.1) - React-Core - react-native-video/Video - SPTPersistentCache (~> 1.1.0) - react-native-webview (11.23.0): - React-Core - React-perflogger (0.70.6) - React-RCTActionSheet (0.70.6): - React-Core/RCTActionSheetHeaders (= 0.70.6) - React-RCTAnimation (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTTypeSafety (= 0.70.6) - React-Codegen (= 0.70.6) - React-Core/RCTAnimationHeaders (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTBlob (0.70.6): - RCT-Folly (= 2021.07.22.00) - React-Codegen (= 0.70.6) - React-Core/RCTBlobHeaders (= 0.70.6) - React-Core/RCTWebSocket (= 0.70.6) - React-jsi (= 0.70.6) - React-RCTNetwork (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTImage (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTTypeSafety (= 0.70.6) - React-Codegen (= 0.70.6) - React-Core/RCTImageHeaders (= 0.70.6) - React-jsi (= 0.70.6) - React-RCTNetwork (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTLinking (0.70.6): - React-Codegen (= 0.70.6) - React-Core/RCTLinkingHeaders (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTNetwork (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTTypeSafety (= 0.70.6) - React-Codegen (= 0.70.6) - React-Core/RCTNetworkHeaders (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTSettings (0.70.6): - RCT-Folly (= 2021.07.22.00) - RCTTypeSafety (= 0.70.6) - React-Codegen (= 0.70.6) - React-Core/RCTSettingsHeaders (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-RCTText (0.70.6): - React-Core/RCTTextHeaders (= 0.70.6) - React-RCTVibration (0.70.6): - RCT-Folly (= 2021.07.22.00) - React-Codegen (= 0.70.6) - React-Core/RCTVibrationHeaders (= 0.70.6) - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (= 0.70.6) - React-runtimeexecutor (0.70.6): - React-jsi (= 0.70.6) - ReactCommon/turbomodule/core (0.70.6): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - React-bridging (= 0.70.6) - React-callinvoker (= 0.70.6) - React-Core (= 0.70.6) - React-cxxreact (= 0.70.6) - React-jsi (= 0.70.6) - React-logger (= 0.70.6) - React-perflogger (= 0.70.6) - ReactNativeART (1.2.0): - React - ReactNativeKeyboardInput (6.0.1): - React - ReactNativeKeyboardTrackingView (5.7.0): - React - RNCAsyncStorage (1.17.10): - React-Core - RNCClipboard (1.11.1): - React-Core - SDWebImage (~> 5.8) - RNCMaskedView (0.2.8): - React-Core - RNDeviceInfo (10.3.0): - React-Core - RNFastImage (8.3.0): - React - SDWebImage (~> 5.8) - SDWebImageWebPCoder (~> 0.6.1) - RNFS (2.20.0): - React-Core - RNGestureHandler (2.8.0): - React-Core - RNKeychain (8.0.0): - React-Core - RNReanimated (2.12.0): - DoubleConversion - FBLazyVector - FBReactNativeSpec - glog - RCT-Folly - RCTRequired - RCTTypeSafety - React-callinvoker - React-Core - React-Core/DevSupport - React-Core/RCTWebSocket - React-CoreModules - React-cxxreact - React-jsi - React-jsiexecutor - React-jsinspector - React-RCTActionSheet - React-RCTAnimation - React-RCTBlob - React-RCTImage - React-RCTLinking - React-RCTNetwork - React-RCTSettings - React-RCTText - ReactCommon/turbomodule/core - Yoga - RNScreens (3.18.2): - React-Core - React-RCTImage - RNSVG (12.3.0): - React-Core - SDWebImage (5.13.5): - SDWebImage/Core (= 5.13.5) - SDWebImage/Core (5.13.5) - SDWebImageWebPCoder (0.6.1): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.7) - SPTPersistentCache (1.1.0) - SQLCipher-Amalgamation (4.4.3): - OpenSSL-Universal - SQLCipher-Amalgamation/standard (= 4.4.3) - SQLCipher-Amalgamation/common (4.4.3): - OpenSSL-Universal - SQLCipher-Amalgamation/standard (4.4.3): - OpenSSL-Universal - SQLCipher-Amalgamation/common - Yoga (1.14.0) DEPENDENCIES: + - AESCrypto (from `../expo-modules/aes-crypto/ios`) - boost (from `../../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXApplication (from `../../node_modules/expo-application/ios`) - EXConstants (from `../../node_modules/expo-constants/ios`) - EXFileSystem (from `../../node_modules/expo-file-system/ios`) - EXFont (from `../../node_modules/expo-font/ios`) - EXImageLoader (from `../../node_modules/expo-image-loader/ios`) - EXJSONUtils (from `../../node_modules/expo-json-utils/ios`) - EXManifests (from `../../node_modules/expo-manifests/ios`) - EXMediaLibrary (from `../../node_modules/expo-media-library/ios`) - Expo (from `../../node_modules/expo`) - expo-dev-client (from `../../node_modules/expo-dev-client/ios`) - expo-dev-launcher (from `../../node_modules/expo-dev-launcher`) - expo-dev-menu (from `../../node_modules/expo-dev-menu`) - expo-dev-menu-interface (from `../../node_modules/expo-dev-menu-interface/ios`) - ExpoHaptics (from `../../node_modules/expo-haptics/ios`) - ExpoImageManipulator (from `../../node_modules/expo-image-manipulator/ios`) - ExpoImagePicker (from `../../node_modules/expo-image-picker/ios`) - ExpoKeepAwake (from `../../node_modules/expo-keep-awake/ios`) - ExpoModulesCore (from `../../node_modules/expo-modules-core`) - EXSecureStore (from `../../node_modules/expo-secure-store/ios`) - EXSplashScreen (from `../../node_modules/expo-splash-screen/ios`) - EXUpdatesInterface (from `../../node_modules/expo-updates-interface/ios`) - FBLazyVector (from `../../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../../node_modules/react-native/sdks/hermes/hermes-engine.podspec`) - libevent (~> 2.1.12) - lottie-react-native (from `../node_modules/lottie-react-native`) - OLMKit (from `../node_modules/olm`) - RCT-Folly (from `../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../../node_modules/react-native/Libraries/TypeSafety`) - React (from `../../node_modules/react-native/`) - React-bridging (from `../../node_modules/react-native/ReactCommon`) - React-callinvoker (from `../../node_modules/react-native/ReactCommon/callinvoker`) - React-Codegen (from `build/generated/ios`) - 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-hermes (from `../../node_modules/react-native/ReactCommon/hermes`) - 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`) - React-logger (from `../../node_modules/react-native/ReactCommon/logger`) - react-native-background-upload (from `../node_modules/react-native-background-upload`) - react-native-camera (from `../node_modules/react-native-camera`) - react-native-ffmpeg/min-lts (from `../node_modules/react-native-ffmpeg`) - react-native-in-app-message (from `../node_modules/react-native-in-app-message`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`) - react-native-pager-view (from `../node_modules/react-native-pager-view`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-video/VideoCaching (from `../node_modules/react-native-video`) - react-native-webview (from `../node_modules/react-native-webview`) - React-perflogger (from `../../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTBlob (from `../../node_modules/react-native/Libraries/Blob`) - 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-runtimeexecutor (from `../../node_modules/react-native/ReactCommon/runtimeexecutor`) - ReactCommon/turbomodule/core (from `../../node_modules/react-native/ReactCommon`) - "ReactNativeART (from `../node_modules/@react-native-community/art`)" - ReactNativeKeyboardInput (from `../node_modules/react-native-keyboard-input`) - ReactNativeKeyboardTrackingView (from `../../node_modules/react-native-keyboard-tracking-view`) - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)" - RNDeviceInfo (from `../node_modules/react-native-device-info`) - RNFastImage (from `../node_modules/react-native-fast-image`) - RNFS (from `../node_modules/react-native-fs`) - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNKeychain (from `../node_modules/react-native-keychain`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNScreens (from `../node_modules/react-native-screens`) - RNSVG (from `../node_modules/react-native-svg`) - "SQLCipher-Amalgamation (from `../../node_modules/@commapp/sqlcipher-amalgamation`)" - Yoga (from `../../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - DVAssetLoaderDelegate - fmt - libevent - libwebp - lottie-ios - mobile-ffmpeg-min - OpenSSL-Universal - SDWebImage - SDWebImageWebPCoder - SPTPersistentCache EXTERNAL SOURCES: + AESCrypto: + :path: "../expo-modules/aes-crypto/ios" boost: :podspec: "../../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXApplication: :path: "../../node_modules/expo-application/ios" EXConstants: :path: "../../node_modules/expo-constants/ios" EXFileSystem: :path: "../../node_modules/expo-file-system/ios" EXFont: :path: "../../node_modules/expo-font/ios" EXImageLoader: :path: "../../node_modules/expo-image-loader/ios" EXJSONUtils: :path: "../../node_modules/expo-json-utils/ios" EXManifests: :path: "../../node_modules/expo-manifests/ios" EXMediaLibrary: :path: "../../node_modules/expo-media-library/ios" Expo: :path: "../../node_modules/expo" expo-dev-client: :path: "../../node_modules/expo-dev-client/ios" expo-dev-launcher: :path: "../../node_modules/expo-dev-launcher" expo-dev-menu: :path: "../../node_modules/expo-dev-menu" expo-dev-menu-interface: :path: "../../node_modules/expo-dev-menu-interface/ios" ExpoHaptics: :path: "../../node_modules/expo-haptics/ios" ExpoImageManipulator: :path: "../../node_modules/expo-image-manipulator/ios" ExpoImagePicker: :path: "../../node_modules/expo-image-picker/ios" ExpoKeepAwake: :path: "../../node_modules/expo-keep-awake/ios" ExpoModulesCore: :path: "../../node_modules/expo-modules-core" EXSecureStore: :path: "../../node_modules/expo-secure-store/ios" EXSplashScreen: :path: "../../node_modules/expo-splash-screen/ios" EXUpdatesInterface: :path: "../../node_modules/expo-updates-interface/ios" FBLazyVector: :path: "../../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: :path: "../../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../../node_modules/react-native/sdks/hermes/hermes-engine.podspec" lottie-react-native: :path: "../node_modules/lottie-react-native" OLMKit: :path: "../node_modules/olm" RCT-Folly: :podspec: "../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: :path: "../../node_modules/react-native/Libraries/RCTRequired" RCTTypeSafety: :path: "../../node_modules/react-native/Libraries/TypeSafety" React: :path: "../../node_modules/react-native/" React-bridging: :path: "../../node_modules/react-native/ReactCommon" React-callinvoker: :path: "../../node_modules/react-native/ReactCommon/callinvoker" React-Codegen: :path: build/generated/ios React-Core: :path: "../../node_modules/react-native/" React-CoreModules: :path: "../../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../../node_modules/react-native/ReactCommon/cxxreact" React-hermes: :path: "../../node_modules/react-native/ReactCommon/hermes" React-jsi: :path: "../../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../../node_modules/react-native/ReactCommon/jsinspector" React-logger: :path: "../../node_modules/react-native/ReactCommon/logger" react-native-background-upload: :path: "../node_modules/react-native-background-upload" react-native-camera: :path: "../node_modules/react-native-camera" react-native-ffmpeg: :podspec: "../node_modules/react-native-ffmpeg" react-native-in-app-message: :path: "../node_modules/react-native-in-app-message" react-native-netinfo: :path: "../node_modules/@react-native-community/netinfo" react-native-orientation-locker: :path: "../node_modules/react-native-orientation-locker" react-native-pager-view: :path: "../node_modules/react-native-pager-view" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" react-native-video: :podspec: "../node_modules/react-native-video" react-native-webview: :path: "../node_modules/react-native-webview" React-perflogger: :path: "../../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: :path: "../../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: :path: "../../node_modules/react-native/Libraries/NativeAnimation" React-RCTBlob: :path: "../../node_modules/react-native/Libraries/Blob" React-RCTImage: :path: "../../node_modules/react-native/Libraries/Image" React-RCTLinking: :path: "../../node_modules/react-native/Libraries/LinkingIOS" React-RCTNetwork: :path: "../../node_modules/react-native/Libraries/Network" React-RCTSettings: :path: "../../node_modules/react-native/Libraries/Settings" React-RCTText: :path: "../../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../../node_modules/react-native/Libraries/Vibration" React-runtimeexecutor: :path: "../../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: :path: "../../node_modules/react-native/ReactCommon" ReactNativeART: :path: "../node_modules/@react-native-community/art" ReactNativeKeyboardInput: :path: "../node_modules/react-native-keyboard-input" ReactNativeKeyboardTrackingView: :path: "../../node_modules/react-native-keyboard-tracking-view" RNCAsyncStorage: :path: "../node_modules/@react-native-async-storage/async-storage" RNCClipboard: :path: "../node_modules/@react-native-clipboard/clipboard" RNCMaskedView: :path: "../node_modules/@react-native-masked-view/masked-view" RNDeviceInfo: :path: "../node_modules/react-native-device-info" RNFastImage: :path: "../node_modules/react-native-fast-image" RNFS: :path: "../node_modules/react-native-fs" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" RNKeychain: :path: "../node_modules/react-native-keychain" RNReanimated: :path: "../node_modules/react-native-reanimated" RNScreens: :path: "../node_modules/react-native-screens" RNSVG: :path: "../node_modules/react-native-svg" SQLCipher-Amalgamation: :path: "../../node_modules/@commapp/sqlcipher-amalgamation" Yoga: :path: "../../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: + AESCrypto: 3f397599b6b8e66c3b8a16e09bed17e6ad03482d boost: a7c83b31436843459a1961bfd74b96033dc77234 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 DVAssetLoaderDelegate: 0caec20e4e08b8560b691131539e9180024d4bce EXApplication: 034b1c40a8e9fe1bff76a1e511ee90dff64ad834 EXConstants: 3c86653c422dd77e40d10cbbabb3025003977415 EXFileSystem: 60602b6eefa6873f97172c684b7537c9760b50d6 EXFont: 319606bfe48c33b5b5063fb0994afdc496befe80 EXImageLoader: 84b65e6bd9d3345d6fbb3ab936a546c54496a64d EXJSONUtils: 09aef2c1fba1a116ca8c73a2c8299aac00d96b43 EXManifests: 347f49430b63444579aa013f0ad057d16b8d1cc8 EXMediaLibrary: b1c4f78878e45f6a359aff3a059e1660c41b73ab Expo: 36b5f625d36728adbdd1934d4d57182f319ab832 expo-dev-client: d723d52ccfbe2eb47ee24d1ac0cf5b39001589c2 expo-dev-launcher: 953f564f7d006f1af50b119cacb48cafcad40c73 expo-dev-menu: 3d25298c15e2179c9f71b92f2273c83bdd71c435 expo-dev-menu-interface: 45581093393dacd51ce5e7f641cf9ed5064a2e3f ExpoHaptics: 5a56d30a87ea213dd00b09566dc4b441a4dff97f ExpoImageManipulator: 5f3c1ab8dd81de11491b5051bb925abc91fe57e4 ExpoImagePicker: d2a1cea4023008ae2fb0d95f33422b80772cc76e ExpoKeepAwake: 69b59d0a8d2b24de9f82759c39b3821fec030318 ExpoModulesCore: b5d21c8880afda6fb6ee95469f9ac2ec9b98e995 EXSecureStore: daec0117c922a67c658cb229152a9e252e5c1750 EXSplashScreen: 3e989924f61a8dd07ee4ea584c6ba14be9b51949 EXUpdatesInterface: bffd1ead18f0bab04fa784ca159c115607b8a23c FBLazyVector: 48289402952f4f7a4e235de70a9a590aa0b79ef4 FBReactNativeSpec: c8856286d1e15e74b57b892c68d7d1d05b79c7de fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b hermes-engine: 2af7b7a59128f250adfd86f15aa1d5a2ecd39995 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libwebp: 60305b2e989864154bd9be3d772730f08fc6a59c lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8 lottie-react-native: b702fab740cdb952a8e2354713d3beda63ff97b0 mobile-ffmpeg-min: d5d22dcef5c8ec56f771258f1f5be245d914f193 OLMKit: a13e1a20579e88d03971c5821360be24949a1a09 OpenSSL-Universal: 84efb8a29841f2764ac5403e0c4119a28b713346 RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda RCTRequired: e1866f61af7049eb3d8e08e8b133abd38bc1ca7a RCTTypeSafety: 27c2ac1b00609a432ced1ae701247593f07f901e React: bb3e06418d2cc48a84f9666a576c7b38e89cd7db React-bridging: 572502ec59c9de30309afdc4932e278214288913 React-callinvoker: 6b708b79c69f3359d42f1abb4663f620dbd4dadf React-Codegen: 74e1cd7cee692a8b983c18df3274b5e749de07c8 React-Core: b587d0a624f9611b0e032505f3d6f25e8daa2bee React-CoreModules: c6ff48b985e7aa622e82ca51c2c353c7803eb04e React-cxxreact: ade3d9e63c599afdead3c35f8a8bd12b3da6730b React-hermes: ed09ae33512bbb8d31b2411778f3af1a2eb681a1 React-jsi: 5a3952e0c6d57460ad9ee2c905025b4c28f71087 React-jsiexecutor: b4a65947391c658450151275aa406f2b8263178f React-jsinspector: 60769e5a0a6d4b32294a2456077f59d0266f9a8b React-logger: 1623c216abaa88974afce404dc8f479406bbc3a0 react-native-background-upload: 7c608537f87106c93530a3a19a853afd55466823 react-native-camera: b5c8c7a71feecfdd5b39f0dbbf6b64b957ed55f2 react-native-ffmpeg: f9a60452aaa5d478aac205b248224994f3bde416 react-native-in-app-message: f91de5009620af01456531118264c93e249b83ec react-native-netinfo: 2517ad504b3d303e90d7a431b0fcaef76d207983 react-native-orientation-locker: 851f6510d8046ea2f14aa169b1e01fcd309a94ba react-native-pager-view: 3051346698a0ba0c4e13e40097cc11b00ee03cca react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a react-native-video: 10f689069cb894d75030190a9bc62d9393e1f997 react-native-webview: e771bc375f789ebfa02a26939a57dbc6fa897336 React-perflogger: 8c79399b0500a30ee8152d0f9f11beae7fc36595 React-RCTActionSheet: 7316773acabb374642b926c19aef1c115df5c466 React-RCTAnimation: 5341e288375451297057391227f691d9b2326c3d React-RCTBlob: b0615fc2daf2b5684ade8fadcab659f16f6f0efa React-RCTImage: 6487b9600f268ecedcaa86114d97954d31ad4750 React-RCTLinking: c8018ae9ebfefcec3839d690d4725f8d15e4e4b3 React-RCTNetwork: 8aa63578741e0fe1205c28d7d4b40dbfdabce8a8 React-RCTSettings: d00c15ad369cd62242a4dfcc6f277912b4a84ed3 React-RCTText: f532e5ca52681ecaecea452b3ad7a5b630f50d75 React-RCTVibration: c75ceef7aa60a33b2d5731ebe5800ddde40cefc4 React-runtimeexecutor: 15437b576139df27635400de0599d9844f1ab817 ReactCommon: 349be31adeecffc7986a0de875d7fb0dcf4e251c ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab ReactNativeKeyboardInput: 266ba27a2e9921f5bdc0b4cc30289b2a2f46b157 ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306 RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca RNCClipboard: f66930407a30948ffdecf43a2459bcf05aa59804 RNCMaskedView: bc0170f389056201c82a55e242e5d90070e18e5a RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7 RNFastImage: 2ed80661d5ef384fb1b539f1f3c81a1733f92bc9 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3 RNKeychain: 4f63aada75ebafd26f4bc2c670199461eab85d94 RNReanimated: f586bc5fd8ce1b6efadffb875319705939843c3b RNScreens: 34cc502acf1b916c582c60003dc3089fa01dc66d RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8 SDWebImage: 23d714cd599354ee7906dbae26dff89b421c4370 SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21 SPTPersistentCache: df36ea46762d7cf026502bbb86a8b79d0080dff4 SQLCipher-Amalgamation: cbd36045fe7b458b8a442958a01aefdbc44c20f8 Yoga: 99caf8d5ab45e9d637ee6e0174ec16fbbb01bcfc PODFILE CHECKSUM: 60ed9de6b14a66c6022cd82cafcb04594edd7eaf COCOAPODS: 1.11.3 diff --git a/native/package.json b/native/package.json index fc4dd262e..7b82d1ef5 100644 --- a/native/package.json +++ b/native/package.json @@ -1,129 +1,130 @@ { "name": "native", "version": "0.0.1", "private": true, "license": "BSD-3-Clause", "scripts": { "clean": "yarn clean-commoncpp && yarn clean-android && yarn clean-ios && rm -rf node_modules/ && rm -f ios/.xcode.env.local && (yarn clean-rust || true)", "clean-commoncpp": "rm -rf cpp/CommonCpp/build && rm -rf cpp/CommonCpp/CryptoTools/build && rm -rf cpp/CommonCpp/DatabaseManagers/build && rm -rf cpp/CommonCpp/NativeModules/build && rm -rf cpp/CommonCpp/Tools/build", "clean-rust": "cargo clean --manifest-path native_rust_library/Cargo.toml", "clean-android": "rm -rf android/build android/app/build android/app/.cxx", "clean-ios": "rm -rf ios/Pods/", "clean-all": "yarn clean && rm -rf ~/Library/Developer/Xcode/DerivedData/Comm-*; cd android && (./gradlew clean || true)", "start": "COMM_DEV=1 yarn expo start --dev-client", "dev": "yarn start", "test": "yarn jest", "run-ios": "COMM_DEV=1 yarn expo run:ios", "run-android": "COMM_DEV=1 yarn expo run:android", "logfirebase": "adb shell logcat | grep -E -i 'FIRMessagingModule|firebase'", "redux-devtools": "redux-devtools --port=8043 --open", "codegen-jsi": "flow && babel codegen/src/ -d codegen/dist/ && node codegen/dist", "react-native": "PATH=/usr/bin:/bin:\"$PATH\" react-native", "expo": "PATH=/usr/bin:/bin:\"$PATH\" expo", "xcodebuild": "cd ios && PATH=/usr/bin:/bin:\"$PATH\" xcodebuild" }, "devDependencies": { "@babel/cli": "^7.8.4", "@babel/core": "^7.13.14", "@babel/node": "^7.8.7", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/preset-flow": "^7.9.0", "@redux-devtools/cli": "^1.0.7", "babel-jest": "^26.6.3", "babel-plugin-transform-remove-console": "^6.9.4", "babel-plugin-transform-remove-strict-mode": "0.0.2", "flow-bin": "^0.182.0", "flow-typed": "^3.2.1", "fs-extra": "^8.1.0", "googleapis": "^89.0.0", "internal-ip": "4.3.0", "jest": "^26.6.3", "jetifier": "^1.6.4", "jsonwebtoken": "^9.0.0", "metro-react-native-babel-preset": "^0.72.3", "react-devtools": "^4.27.0", "react-native-codegen": "^0.70.6", "react-test-renderer": "18.1.0", "remote-redux-devtools": "git+https://git@github.com/zalmoxisus/remote-redux-devtools.git", "remotedev": "git+https://git@github.com/zalmoxisus/remotedev.git" }, "dependencies": { "@commapp/android-lifecycle": "0.0.1", + "@commapp/aes-crypto": "0.0.1", "@commapp/sqlcipher-amalgamation": "^4.4.3-a", "@ethersproject/shims": "^5.7.0", "@expo/react-native-action-sheet": "^3.14.0", "@expo/vector-icons": "^13.0.0", "@gorhom/bottom-sheet": "^4.4.5", "@react-native-async-storage/async-storage": "^1.17.10", "@react-native-clipboard/clipboard": "^1.11.1", "@react-native-community/art": "^1.2.0", "@react-native-community/netinfo": "^9.3.7", "@react-native-masked-view/masked-view": "^0.2.8", "@react-navigation/bottom-tabs": "^6.4.0", "@react-navigation/devtools": "^6.0.10", "@react-navigation/drawer": "^6.5.0", "@react-navigation/elements": "^1.3.6", "@react-navigation/material-top-tabs": "^6.3.0", "@react-navigation/native": "^6.0.13", "@react-navigation/stack": "^6.3.2", "base-64": "^0.1.0", "ethers": "^5.7.2", "expo": "47.0.8", "expo-dev-client": "~2.0.1", "expo-font": "~11.0.1", "expo-haptics": "~12.0.1", "expo-image-manipulator": "~11.0.0", "expo-image-picker": "~14.0.2", "expo-media-library": "~15.0.0", "expo-secure-store": "~12.0.0", "expo-splash-screen": "~0.17.4", "find-root": "^1.1.0", "invariant": "^2.2.4", "lib": "0.0.1", "lodash": "^4.17.21", "lottie-react-native": "^5.1.4", "md5": "^2.2.1", "olm": "git+https://gitlab.matrix.org/matrix-org/olm.git#v3.2.14", "react": "18.1.0", "react-native": "^0.70.6", "react-native-background-upload": "^6.6.0", "react-native-camera": "^3.31.0", "react-native-device-info": "^10.3.0", "react-native-fast-image": "^8.3.0", "react-native-ffmpeg": "^0.4.4", "react-native-figma-squircle": "^0.1.2", "react-native-floating-action": "^1.22.0", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "^2.8.0", "react-native-in-app-message": "^1.0.2", "react-native-keyboard-input": "6.0.1", "react-native-keychain": "^8.0.0", "react-native-orientation-locker": "^1.5.0", "react-native-pager-view": "^6.0.1", "react-native-progress": "^4.1.2", "react-native-reanimated": "^2.12.0", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^3.18.2", "react-native-svg": "^12.3.0", "react-native-tab-view": "^3.3.0", "react-native-video": "^5.2.1", "react-native-webview": "^11.23.0", "react-redux": "^7.1.1", "reactotron-react-native": "^5.0.3", "reactotron-redux": "^3.1.3", "redux": "^4.0.4", "redux-persist": "^6.0.0", "redux-thunk": "^2.2.0", "reselect": "^4.0.0", "rn-emoji-keyboard": "^1.2.0", "shallowequal": "^1.0.2", "simple-markdown": "^0.7.2", "tinycolor2": "^1.4.1", "url": "^0.11.0", "url-parse-lax": "^3.0.0" }, "jest": { "preset": "react-native" } } diff --git a/native/utils/aes-crypto-module.js b/native/utils/aes-crypto-module.js new file mode 100644 index 000000000..5894c1ea9 --- /dev/null +++ b/native/utils/aes-crypto-module.js @@ -0,0 +1,11 @@ +// @flow + +import { requireNativeModule } from 'expo-modules-core'; + +const AESCryptoModule: { + +hello: () => string, +} = requireNativeModule('AESCrypto'); + +export function hello(): string { + return AESCryptoModule.hello(); +} diff --git a/package.json b/package.json index dfdd93348..0cd52839c 100644 --- a/package.json +++ b/package.json @@ -1,56 +1,57 @@ { "private": true, "license": "BSD-3-Clause", "workspaces": [ "lib", "web", "native", "keyserver", "landing", "desktop", "keyserver/addons/rust-node-addon", "native/expo-modules/android-lifecycle", + "native/expo-modules/aes-crypto", "services/electron-update-server" ], "scripts": { "clean": "yarn workspace lib clean && yarn workspace web clean && yarn workspace native clean && yarn workspace keyserver clean && yarn workspace landing clean && yarn workspace desktop clean && yarn workspace rust-node-addon clean && yarn workspace electron-update-server clean && rm -rf node_modules/", "cleaninstall": "(killall flow || pkill flow || true) && yarn clean && yarn", "ci-cleaninstall": "yarn cleaninstall --frozen-lockfile --skip-optional --network-timeout 180000", "eslint": "eslint .", "eslint:fix": "eslint --fix .", "clang-format-all": "eval `node scripts/get_clang_paths_cli.js` | xargs clang-format -i", "rust-pre-commit": "./scripts/rust_pre_commit.sh", "terraform-pre-commit": "./scripts/terraform_pre_commit.sh", "prepare": "husky install", "arcpatch": "git pull --all --tags && arc patch", "postinstall": "bash ./postinstall.sh", "flow-all": "yarn workspace lib flow && yarn workspace web flow && yarn workspace landing flow && yarn workspace native flow && yarn workspace keyserver flow && yarn workspace desktop flow && yarn workspace electron-update-server flow", "jest-all": "yarn workspace lib test && yarn workspace keyserver test && yarn workspace web test" }, "devDependencies": { "babel-eslint": "^10.1.0", "clang-format": "^1.8.0", "core-js": "^3.6.5", "eslint": "^7.32.0", "eslint-config-prettier": "^8.1.0", "eslint-plugin-flowtype": "^5.4.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^24.2.2", "eslint-plugin-monorepo": "^0.3.2", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-react-native": "^3.10.0", "find-up": "^5.0.0", "flow-mono-cli": "^1.5.0", "gaxios": "^4.3.2", "husky": "^7.0.0", "lint-staged": "^12.1.4", "patch-package": "^6.4.7", "postinstall-postinstall": "^2.0.0", "prettier": "^2.8.4" }, "resolutions": { "react-native-flipper": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.1.tgz" } }