├── .watchmanconfig
├── example
├── .watchmanconfig
├── jest.config.js
├── .bundle
│ └── config
├── app.json
├── ios
│ ├── File.swift
│ ├── ShakeExample
│ │ ├── Images.xcassets
│ │ │ ├── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.h
│ │ ├── main.m
│ │ ├── AppDelegate.mm
│ │ ├── PrivacyInfo.xcprivacy
│ │ ├── Info.plist
│ │ └── LaunchScreen.storyboard
│ ├── ShakeExample-Bridging-Header.h
│ ├── ShakeExample.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── .xcode.env
│ ├── ShakeExampleTests
│ │ ├── Info.plist
│ │ └── ShakeExampleTests.m
│ ├── Podfile
│ ├── ShakeExample.xcodeproj
│ │ ├── xcshareddata
│ │ │ └── xcschemes
│ │ │ │ └── ShakeExample.xcscheme
│ │ └── project.pbxproj
│ └── Podfile.lock
├── android
│ ├── app
│ │ ├── debug.keystore
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ │ └── ic_launcher_round.png
│ │ │ │ │ └── drawable
│ │ │ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ ├── java
│ │ │ │ │ └── shake
│ │ │ │ │ │ └── example
│ │ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ │ └── MainApplication.kt
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── debug
│ │ │ │ └── AndroidManifest.xml
│ │ ├── proguard-rules.pro
│ │ └── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── settings.gradle
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradlew.bat
│ └── gradlew
├── index.js
├── Gemfile
├── babel.config.js
├── react-native.config.js
├── metro.config.js
├── src
│ └── App.tsx
├── package.json
├── Gemfile.lock
└── README.md
├── src
├── __tests__
│ └── index.test.tsx
├── NativeShake.ts
└── index.tsx
├── .npmignore
├── .gitattributes
├── rnshake.png
├── tsconfig.build.json
├── babel.config.js
├── .yarnrc.yml
├── android
├── src
│ ├── main
│ │ ├── AndroidManifestNew.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ │ └── com
│ │ │ └── shake
│ │ │ ├── ShakePackage.kt
│ │ │ ├── ShakeModule.kt
│ │ │ └── CustomShakeDetector.kt
│ ├── newarch
│ │ └── ShakeSpec.kt
│ └── oldarch
│ │ └── ShakeSpec.kt
├── gradle.properties
└── build.gradle
├── react-native.config.js
├── lefthook.yml
├── .editorconfig
├── ios
├── RNShakeImpl.h
├── RNShake.h
├── RNShake.mm
└── RNShakeImpl.mm
├── .github
├── workflows
│ ├── auto-publish.yml
│ └── ci.yml
└── actions
│ └── setup
│ └── action.yml
├── tsconfig.json
├── turbo.json
├── LICENSE
├── eslint.config.mjs
├── .gitignore
├── react-native-shake.podspec
├── README.md
├── package.json
├── CODE_OF_CONDUCT.md
└── CONTRIBUTING.md
/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/example/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/src/__tests__/index.test.tsx:
--------------------------------------------------------------------------------
1 | it.todo('write a test');
2 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | example/
2 | .yarn/
3 | .github/
4 | yarn.lock
5 |
--------------------------------------------------------------------------------
/example/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'react-native',
3 | };
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 | # specific for windows script files
3 | *.bat text eol=crlf
--------------------------------------------------------------------------------
/example/.bundle/config:
--------------------------------------------------------------------------------
1 | BUNDLE_PATH: "vendor/bundle"
2 | BUNDLE_FORCE_RUBY_PLATFORM: 1
3 |
--------------------------------------------------------------------------------
/rnshake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/rnshake.png
--------------------------------------------------------------------------------
/example/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ShakeExample",
3 | "displayName": "ShakeExample"
4 | }
5 |
--------------------------------------------------------------------------------
/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig",
3 | "exclude": ["example", "lib"]
4 | }
5 |
--------------------------------------------------------------------------------
/example/ios/File.swift:
--------------------------------------------------------------------------------
1 | //
2 | // File.swift
3 | // ShakeExample
4 | //
5 |
6 | import Foundation
7 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:react-native-builder-bob/babel-preset'],
3 | };
4 |
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | nmHoistingLimits: workspaces
2 |
3 | nodeLinker: node-modules
4 |
5 | yarnPath: .yarn/releases/yarn-4.9.2.cjs
6 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifestNew.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/example/android/app/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/debug.keystore
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | ShakeExample
3 |
4 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : RCTAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | Shake_kotlinVersion=1.7.0
2 | Shake_minSdkVersion=21
3 | Shake_targetSdkVersion=31
4 | Shake_compileSdkVersion=31
5 | Shake_ndkversion=21.4.7075529
6 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Doko-Demo-Doa/react-native-shake/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/example/index.js:
--------------------------------------------------------------------------------
1 | import { AppRegistry } from 'react-native';
2 | import App from './src/App';
3 | import { name as appName } from './app.json';
4 |
5 | AppRegistry.registerComponent(appName, () => App);
6 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/android/src/newarch/ShakeSpec.kt:
--------------------------------------------------------------------------------
1 | package com.shake
2 |
3 | import com.facebook.react.bridge.ReactApplicationContext
4 |
5 | abstract class ShakeSpec internal constructor(context: ReactApplicationContext) :
6 | NativeShakeSpec(context) {
7 | }
8 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/main.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char *argv[])
6 | {
7 | @autoreleasepool {
8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/react-native.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import('@react-native-community/cli-types').UserDependencyConfig}
3 | */
4 | module.exports = {
5 | dependency: {
6 | platforms: {
7 | android: {
8 | cmakeListsPath: 'generated/jni/CMakeLists.txt',
9 | },
10 | },
11 | },
12 | };
13 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lefthook.yml:
--------------------------------------------------------------------------------
1 | pre-commit:
2 | parallel: true
3 | commands:
4 | lint:
5 | glob: "*.{js,ts,jsx,tsx}"
6 | run: npx eslint {staged_files}
7 | types:
8 | glob: "*.{js,ts, jsx, tsx}"
9 | run: npx tsc
10 | commit-msg:
11 | parallel: true
12 | commands:
13 | commitlint:
14 | run: npx commitlint --edit
15 |
--------------------------------------------------------------------------------
/example/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
4 | ruby ">= 2.6.10"
5 |
6 | # Exclude problematic versions of cocoapods and activesupport that causes build failures.
7 | gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
8 | gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
9 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 | [*]
8 |
9 | indent_style = space
10 | indent_size = 2
11 |
12 | end_of_line = lf
13 | charset = utf-8
14 | trim_trailing_whitespace = true
15 | insert_final_newline = true
16 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example/babel.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const { getConfig } = require('react-native-builder-bob/babel-config');
3 | const pkg = require('../package.json');
4 |
5 | const root = path.resolve(__dirname, '..');
6 |
7 | module.exports = getConfig(
8 | {
9 | presets: ['module:@react-native/babel-preset'],
10 | },
11 | { root, pkg }
12 | );
13 |
--------------------------------------------------------------------------------
/ios/RNShakeImpl.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @protocol RNShakeImplDelegate
4 |
5 | - (void)handleEventWithName:(NSString *_Nonnull)name;
6 |
7 | @end
8 |
9 | @interface RNShakeImpl : NSObject
10 |
11 | + (NSArray *_Nonnull)supportedEvents;
12 |
13 | @property(nonatomic, weak) id _Nullable delegate;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
2 | plugins { id("com.facebook.react.settings") }
3 | extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
4 | rootProject.name = 'shake.example'
5 | include ':app'
6 | includeBuild('../node_modules/@react-native/gradle-plugin')
7 |
--------------------------------------------------------------------------------
/src/NativeShake.ts:
--------------------------------------------------------------------------------
1 | import type { TurboModule } from 'react-native';
2 | import { TurboModuleRegistry } from 'react-native';
3 |
4 | /* Required Methods for NativeEventEmitter */
5 | export interface Spec extends TurboModule {
6 | addListener(eventName: string): void;
7 | removeListeners(count: number): void;
8 | }
9 |
10 | export default TurboModuleRegistry.get('RNShake');
11 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/android/src/oldarch/ShakeSpec.kt:
--------------------------------------------------------------------------------
1 | package com.shake
2 |
3 | import com.facebook.react.bridge.ReactApplicationContext
4 | import com.facebook.react.bridge.ReactContextBaseJavaModule
5 | import com.facebook.react.bridge.Promise
6 |
7 | abstract class ShakeSpec internal constructor(context: ReactApplicationContext) :
8 | ReactContextBaseJavaModule(context) {
9 |
10 | abstract fun addListener(eventName: String?)
11 |
12 | abstract fun removeListeners(count: Double)
13 | }
14 |
--------------------------------------------------------------------------------
/example/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
--------------------------------------------------------------------------------
/example/ios/.xcode.env:
--------------------------------------------------------------------------------
1 | # This `.xcode.env` file is versioned and is used to source the environment
2 | # used when running script phases inside Xcode.
3 | # To customize your local environment, you can create an `.xcode.env.local`
4 | # file that is not versioned.
5 |
6 | # NODE_BINARY variable contains the PATH to the node executable.
7 | #
8 | # Customize the NODE_BINARY variable here.
9 | # For example, to use nvm with brew, add the following line
10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use
11 | export NODE_BINARY=$(command -v node)
12 |
--------------------------------------------------------------------------------
/example/react-native.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const pkg = require('../package.json');
3 |
4 | module.exports = {
5 | project: {
6 | ios: {
7 | automaticPodsInstallation: true,
8 | },
9 | },
10 | dependencies: {
11 | [pkg.name]: {
12 | root: path.join(__dirname, '..'),
13 | platforms: {
14 | // Codegen script incorrectly fails without this
15 | // So we explicitly specify the platforms with empty object
16 | ios: {},
17 | android: {},
18 | },
19 | },
20 | },
21 | };
22 |
--------------------------------------------------------------------------------
/example/metro.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const { getDefaultConfig } = require('@react-native/metro-config');
3 | const { getConfig } = require('react-native-builder-bob/metro-config');
4 | const pkg = require('../package.json');
5 |
6 | const root = path.resolve(__dirname, '..');
7 |
8 | /**
9 | * Metro configuration
10 | * https://facebook.github.io/metro/docs/configuration
11 | *
12 | * @type {import('metro-config').MetroConfig}
13 | */
14 | module.exports = getConfig(getDefaultConfig(__dirname), {
15 | root,
16 | pkg,
17 | project: __dirname,
18 | });
19 |
--------------------------------------------------------------------------------
/ios/RNShake.h:
--------------------------------------------------------------------------------
1 | //@interface RNShake : RCTEventEmitter
2 | //
3 | // https://github.com/react-native-community/RNNewArchitectureLibraries/blob/feat/swift-event-emitter/calculator/ios/RNCalculator.mm
4 | //+ (instancetype)shared;
5 | //
6 | //@end
7 |
8 | #import
9 | #import
10 |
11 | #ifdef RCT_NEW_ARCH_ENABLED
12 | #import "RNShakeSpec.h"
13 |
14 | @interface RNShake : RCTEventEmitter
15 |
16 | #else
17 |
18 | #import
19 |
20 | @interface RNShake : RCTEventEmitter
21 |
22 | #endif
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/.github/workflows/auto-publish.yml:
--------------------------------------------------------------------------------
1 | # Workflow label
2 | name: Build and publish to NPM
3 |
4 | on:
5 | push:
6 | branches:
7 | - main
8 |
9 | jobs:
10 | publish:
11 | name: Publish to NPM
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 | - uses: actions/setup-node@v3
16 | with:
17 | node-version: 22
18 | - run: npm i -g typescript
19 | - run: yarn install --immutable
20 | - run: yarn prepare
21 | - uses: JS-DevTools/npm-publish@v3 # https://github.com/JS-DevTools/npm-publish
22 | with:
23 | token: ${{ secrets.NPM_TOKEN }}
24 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext {
3 | buildToolsVersion = "35.0.1"
4 | minSdkVersion = 24
5 | compileSdkVersion = 35
6 | targetSdkVersion = 35
7 | ndkVersion = "27.2.12479018"
8 | kotlinVersion = "2.0.21"
9 | }
10 | repositories {
11 | google()
12 | mavenCentral()
13 | }
14 | dependencies {
15 | classpath("com.android.tools.build:gradle")
16 | classpath("com.facebook.react:react-native-gradle-plugin")
17 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
18 | }
19 | }
20 |
21 | apply plugin: "com.facebook.react.rootproject"
22 |
--------------------------------------------------------------------------------
/example/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 | import { StyleSheet, View, Text } from 'react-native';
3 | import RNShake from 'react-native-shake';
4 |
5 | export default function App() {
6 | useEffect(() => {
7 | const sub = RNShake.addListener(() => {
8 | console.log('Shake event detected!');
9 | });
10 |
11 | return () => {
12 | sub.remove();
13 | };
14 | }, []);
15 |
16 | return (
17 |
18 | Shake it to test
19 |
20 | );
21 | }
22 |
23 | const styles = StyleSheet.create({
24 | container: {
25 | flex: 1,
26 | alignItems: 'center',
27 | justifyContent: 'center',
28 | },
29 | box: {
30 | width: 60,
31 | height: 60,
32 | marginVertical: 20,
33 | },
34 | });
35 |
--------------------------------------------------------------------------------
/example/ios/ShakeExampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/.github/actions/setup/action.yml:
--------------------------------------------------------------------------------
1 | name: Setup
2 | description: Setup Node.js and install dependencies
3 |
4 | runs:
5 | using: composite
6 | steps:
7 | - name: Setup Node.js
8 | uses: actions/setup-node@v3
9 | with:
10 | node-version: 20
11 |
12 | - name: Cache dependencies
13 | id: yarn-cache
14 | uses: actions/cache@v3
15 | with:
16 | path: |
17 | **/node_modules
18 | .yarn/install-state.gz
19 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }}
20 | restore-keys: |
21 | ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
22 | ${{ runner.os }}-yarn-
23 |
24 | - name: Install dependencies
25 | if: steps.yarn-cache.outputs.cache-hit != 'true'
26 | run: yarn install --immutable
27 | shell: bash
28 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "rootDir": ".",
4 | "paths": {
5 | "react-native-shake": ["./src/index"]
6 | },
7 | "allowUnreachableCode": false,
8 | "allowUnusedLabels": false,
9 | "esModuleInterop": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "jsx": "react-jsx",
12 | "lib": ["ESNext"],
13 | "module": "ESNext",
14 | "moduleResolution": "Bundler",
15 | "noEmit": true,
16 | "noFallthroughCasesInSwitch": true,
17 | "noImplicitReturns": true,
18 | "noImplicitUseStrict": false,
19 | "noStrictGenericChecks": false,
20 | "noUncheckedIndexedAccess": true,
21 | "noUnusedLocals": true,
22 | "noUnusedParameters": true,
23 | "resolveJsonModule": true,
24 | "skipLibCheck": true,
25 | "strict": true,
26 | "target": "ESNext",
27 | "verbatimModuleSyntax": true
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/AppDelegate.mm:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 |
3 | #import
4 |
5 | @implementation AppDelegate
6 |
7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
8 | {
9 | self.moduleName = @"ShakeExample";
10 | // You can add your custom initial props in the dictionary below.
11 | // They will be passed down to the ViewController used by React Native.
12 | self.initialProps = @{};
13 |
14 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
15 | }
16 |
17 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
18 | {
19 | return [self bundleURL];
20 | }
21 |
22 | - (NSURL *)bundleURL
23 | {
24 | #if DEBUG
25 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
26 | #else
27 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
28 | #endif
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "envMode": "loose",
4 | "tasks": {
5 | "build:android": {
6 | "env": ["ORG_GRADLE_PROJECT_newArchEnabled"],
7 | "inputs": [
8 | "package.json",
9 | "android",
10 | "!android/build",
11 | "src/*.ts",
12 | "src/*.tsx",
13 | "example/package.json",
14 | "example/android",
15 | "!example/android/.gradle",
16 | "!example/android/build",
17 | "!example/android/app/build"
18 | ],
19 | "outputs": []
20 | },
21 | "build:ios": {
22 | "env": ["RCT_NEW_ARCH_ENABLED"],
23 | "inputs": [
24 | "package.json",
25 | "*.podspec",
26 | "ios",
27 | "src/*.ts",
28 | "src/*.tsx",
29 | "example/package.json",
30 | "example/ios",
31 | "!example/ios/build",
32 | "!example/ios/Pods"
33 | ],
34 | "outputs": []
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/example/android/app/src/main/java/shake/example/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package shake.example
2 |
3 | import com.facebook.react.ReactActivity
4 | import com.facebook.react.ReactActivityDelegate
5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
6 | import com.facebook.react.defaults.DefaultReactActivityDelegate
7 |
8 | class MainActivity : ReactActivity() {
9 |
10 | /**
11 | * Returns the name of the main component registered from JavaScript. This is used to schedule
12 | * rendering of the component.
13 | */
14 | override fun getMainComponentName(): String = "ShakeExample"
15 |
16 | /**
17 | * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
18 | * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
19 | */
20 | override fun createReactActivityDelegate(): ReactActivityDelegate =
21 | DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
22 | }
23 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
2 |
3 | const LINKING_ERROR =
4 | "The package 'react-native-shake' doesn't seem to be linked. Make sure: \n\n" +
5 | Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
6 | '- You rebuilt the app after installing the package\n' +
7 | '- You are not using Expo Go\n';
8 |
9 | // @ts-expect-error
10 | const isTurboModuleEnabled = global.__turboModuleProxy != null;
11 |
12 | const ShakeModule = isTurboModuleEnabled
13 | ? require('./NativeShake').default
14 | : NativeModules.RNShake;
15 |
16 | const Shake = ShakeModule
17 | ? ShakeModule
18 | : new Proxy(
19 | {},
20 | {
21 | get() {
22 | throw new Error(LINKING_ERROR);
23 | },
24 | }
25 | );
26 |
27 | const eventEmitter = new NativeEventEmitter(Shake);
28 |
29 | export default {
30 | addListener: (callback: () => void | undefined) => {
31 | return eventEmitter.addListener('ShakeEvent', callback);
32 | },
33 | removeAllListeners: () => eventEmitter.removeAllListeners('ShakeEvent'),
34 | };
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Quan Pham
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 | SOFTWARE.
21 |
--------------------------------------------------------------------------------
/example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "scale" : "1x",
46 | "size" : "1024x1024"
47 | }
48 | ],
49 | "info" : {
50 | "author" : "xcode",
51 | "version" : 1
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { fixupConfigRules } from '@eslint/compat';
2 | import { FlatCompat } from '@eslint/eslintrc';
3 | import js from '@eslint/js';
4 | import prettier from 'eslint-plugin-prettier';
5 | import { defineConfig } from 'eslint/config';
6 | import path from 'node:path';
7 | import { fileURLToPath } from 'node:url';
8 |
9 | const __filename = fileURLToPath(import.meta.url);
10 | const __dirname = path.dirname(__filename);
11 | const compat = new FlatCompat({
12 | baseDirectory: __dirname,
13 | recommendedConfig: js.configs.recommended,
14 | allConfig: js.configs.all,
15 | });
16 |
17 | export default defineConfig([
18 | {
19 | extends: fixupConfigRules(compat.extends('@react-native', 'prettier')),
20 | plugins: { prettier },
21 | rules: {
22 | 'react/react-in-jsx-scope': 'off',
23 | 'prettier/prettier': [
24 | 'error',
25 | {
26 | quoteProps: 'consistent',
27 | singleQuote: true,
28 | tabWidth: 2,
29 | trailingComma: 'es5',
30 | useTabs: false,
31 | },
32 | ],
33 | },
34 | },
35 | {
36 | ignores: ['node_modules/', 'lib/'],
37 | },
38 | ]);
39 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyAccessedAPITypes
6 |
7 |
8 | NSPrivacyAccessedAPIType
9 | NSPrivacyAccessedAPICategoryFileTimestamp
10 | NSPrivacyAccessedAPITypeReasons
11 |
12 | C617.1
13 |
14 |
15 |
16 | NSPrivacyAccessedAPIType
17 | NSPrivacyAccessedAPICategoryUserDefaults
18 | NSPrivacyAccessedAPITypeReasons
19 |
20 | CA92.1
21 |
22 |
23 |
24 | NSPrivacyAccessedAPIType
25 | NSPrivacyAccessedAPICategorySystemBootTime
26 | NSPrivacyAccessedAPITypeReasons
27 |
28 | 35F9.1
29 |
30 |
31 |
32 | NSPrivacyCollectedDataTypes
33 |
34 | NSPrivacyTracking
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # XDE
6 | .expo/
7 |
8 | # VSCode
9 | .vscode/
10 | jsconfig.json
11 |
12 | # Xcode
13 | #
14 | build/
15 | *.pbxuser
16 | !default.pbxuser
17 | *.mode1v3
18 | !default.mode1v3
19 | *.mode2v3
20 | !default.mode2v3
21 | *.perspectivev3
22 | !default.perspectivev3
23 | xcuserdata
24 | *.xccheckout
25 | *.moved-aside
26 | DerivedData
27 | *.hmap
28 | *.ipa
29 | *.xcuserstate
30 | project.xcworkspace
31 |
32 | # Android/IJ
33 | #
34 | .classpath
35 | .cxx
36 | .gradle
37 | .idea
38 | .project
39 | .settings
40 | local.properties
41 | android.iml
42 |
43 | # Cocoapods
44 | #
45 | example/ios/Pods
46 |
47 | # Ruby
48 | example/vendor/
49 |
50 | # node.js
51 | #
52 | node_modules/
53 | npm-debug.log
54 | yarn-debug.log
55 | yarn-error.log
56 |
57 | # BUCK
58 | buck-out/
59 | \.buckd/
60 | android/app/libs
61 | android/keystores/debug.keystore
62 |
63 | # Yarn
64 | .yarn/*
65 | !.yarn/patches
66 | !.yarn/plugins
67 | !.yarn/releases
68 | !.yarn/sdks
69 | !.yarn/versions
70 |
71 | # Expo
72 | .expo/
73 | .xcode.env.local
74 |
75 | # Turborepo
76 | .turbo/
77 |
78 | # generated by bob
79 | lib/
80 |
81 | # React Native Codegen
82 | ios/generated
83 | android/generated
84 |
--------------------------------------------------------------------------------
/android/src/main/java/com/shake/ShakePackage.kt:
--------------------------------------------------------------------------------
1 | package com.shake
2 |
3 | import com.facebook.react.TurboReactPackage
4 | import com.facebook.react.bridge.ReactApplicationContext
5 | import com.facebook.react.bridge.NativeModule
6 | import com.facebook.react.module.model.ReactModuleInfoProvider
7 | import com.facebook.react.module.model.ReactModuleInfo
8 | import java.util.HashMap
9 |
10 | class ShakePackage : TurboReactPackage() {
11 | override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12 | return if (name == ShakeModule.NAME) {
13 | ShakeModule(reactContext)
14 | } else {
15 | null
16 | }
17 | }
18 |
19 | override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
20 | return ReactModuleInfoProvider {
21 | val moduleInfos: MutableMap = HashMap()
22 | val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
23 | moduleInfos[ShakeModule.NAME] = ReactModuleInfo(
24 | ShakeModule.NAME,
25 | ShakeModule.NAME,
26 | false, // canOverrideExistingModule
27 | false, // needsEagerInit
28 | true, // hasConstants
29 | false, // isCxxModule
30 | isTurboModule // isTurboModule
31 | )
32 | moduleInfos
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/example/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Resolve react_native_pods.rb with node to allow for hoisting
2 | require Pod::Executable.execute_command('node', ['-p',
3 | 'require.resolve(
4 | "react-native/scripts/react_native_pods.rb",
5 | {paths: [process.argv[1]]},
6 | )', __dir__]).strip
7 |
8 | platform :ios, min_ios_version_supported
9 | prepare_react_native_project!
10 |
11 | linkage = ENV['USE_FRAMEWORKS']
12 | if linkage != nil
13 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
14 | use_frameworks! :linkage => linkage.to_sym
15 | end
16 |
17 | target 'ShakeExample' do
18 | config = use_native_modules!
19 |
20 | use_react_native!(
21 | :path => config[:reactNativePath],
22 | # An absolute path to your application root.
23 | :app_path => "#{Pod::Config.instance.installation_root}/.."
24 | )
25 |
26 | target 'ShakeExampleTests' do
27 | inherit! :complete
28 | # Pods for testing
29 | end
30 |
31 |
32 | pre_install do |installer|
33 | system("cd ../../ && npx bob build --target codegen")
34 | end
35 |
36 | post_install do |installer|
37 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
38 | react_native_post_install(
39 | installer,
40 | config[:reactNativePath],
41 | :mac_catalyst_enabled => false,
42 | # :ccache_enabled => true
43 | )
44 | end
45 | end
46 |
--------------------------------------------------------------------------------
/ios/RNShake.mm:
--------------------------------------------------------------------------------
1 | #import "RNShake.h"
2 | #import "RNShakeImpl.h"
3 |
4 | #if RCT_NEW_ARCH_ENABLED
5 |
6 | #import "RNShakeSpec.h"
7 |
8 | #endif
9 |
10 | @interface RNShake ()
11 | @end
12 |
13 | @implementation RNShake {
14 | RNShakeImpl *moduleImpl;
15 | BOOL hasListeners;
16 | }
17 |
18 | @synthesize bridge = _bridge;
19 |
20 | RCT_EXPORT_MODULE()
21 |
22 | - (instancetype)init {
23 | self = [super init];
24 | if (self) {
25 | moduleImpl = [RNShakeImpl new];
26 | moduleImpl.delegate = self;
27 | }
28 | return self;
29 | }
30 |
31 | - (void)handleEventWithName:(NSString * _Nonnull)name {
32 | if (hasListeners) {
33 | [self sendEventWithName:name body:nil];
34 | }
35 | }
36 |
37 | - (NSArray *)supportedEvents {
38 | return [RNShakeImpl supportedEvents];
39 | }
40 |
41 | - (void)startObserving
42 | {
43 | hasListeners = YES;
44 | }
45 |
46 | -(void)stopObserving
47 | {
48 | hasListeners = NO;
49 | }
50 |
51 | + (BOOL)requiresMainQueueSetup
52 | {
53 | return NO;
54 | }
55 |
56 | // Don't compile this code when we build for the old architecture.
57 | #ifdef RCT_NEW_ARCH_ENABLED
58 | - (std::shared_ptr)getTurboModule:
59 | (const facebook::react::ObjCTurboModule::InitParams &)params
60 | {
61 | return std::make_shared(params);
62 | }
63 | #endif
64 |
65 | @end
66 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-shake-example",
3 | "version": "0.0.2",
4 | "private": true,
5 | "scripts": {
6 | "android": "react-native run-android",
7 | "ios": "react-native run-ios",
8 | "start": "react-native start -- --reset-cache",
9 | "build:android": "react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"",
10 | "build:ios": "react-native build-ios --scheme ShakeExample --mode Debug --extra-params \"-sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO\""
11 | },
12 | "dependencies": {
13 | "react": "19.0.0",
14 | "react-native": "0.79.2"
15 | },
16 | "devDependencies": {
17 | "@babel/core": "^7.27.4",
18 | "@babel/preset-env": "^7.27.2",
19 | "@babel/runtime": "^7.27.6",
20 | "@react-native-community/cli": "18.0.0",
21 | "@react-native-community/cli-platform-android": "18.0.0",
22 | "@react-native-community/cli-platform-ios": "18.0.0",
23 | "@react-native/babel-preset": "0.79.2",
24 | "@react-native/metro-config": "0.79.2",
25 | "@react-native/typescript-config": "0.79.2",
26 | "react-native-builder-bob": "^0.40.11",
27 | "react-native-monorepo-config": "^0.1.9"
28 | },
29 | "engines": {
30 | "node": ">=18"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/ios/RNShakeImpl.mm:
--------------------------------------------------------------------------------
1 | #import "RNShakeImpl.h"
2 | #import
3 |
4 | static NSString *const RCTShowDevMenuNotification = @"RCTShowDevMenuNotification";
5 | static NSString *const RNShakeEventName = @"ShakeEvent";
6 |
7 | #if !RCT_DEV
8 |
9 | @implementation UIWindow (RNShake)
10 |
11 | - (void)handleShakeEvent:(__unused UIEventSubtype)motion withEvent:(UIEvent *)event
12 | {
13 | if (event.subtype == UIEventSubtypeMotionShake) {
14 | [[NSNotificationCenter defaultCenter] postNotificationName:RCTShowDevMenuNotification object:nil];
15 | }
16 | }
17 |
18 | @end
19 |
20 | #endif
21 |
22 | @implementation RNShakeImpl
23 |
24 | #if !RCT_DEV
25 |
26 | + (void)initialize
27 | {
28 | RCTSwapInstanceMethods([UIWindow class], @selector(motionEnded:withEvent:), @selector(handleShakeEvent:withEvent:));
29 | }
30 |
31 | #endif
32 |
33 | + (NSArray *)supportedEvents
34 | {
35 | return @[RNShakeEventName];
36 | }
37 |
38 | - (instancetype)init
39 | {
40 | self = [super init];
41 | if(self){
42 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(motionEnabled:) name:RCTShowDevMenuNotification object:nil];
43 | }
44 | return self;
45 | }
46 |
47 | - (void)dealloc
48 | {
49 | [[NSNotificationCenter defaultCenter] removeObserver:self];
50 | }
51 |
52 | - (void)motionEnabled:(NSNotification *)notification
53 | {
54 | [self.delegate handleEventWithName:RNShakeEventName];
55 | }
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/android/src/main/java/com/shake/ShakeModule.kt:
--------------------------------------------------------------------------------
1 | package com.shake
2 |
3 | import android.content.Context
4 | import android.hardware.SensorManager
5 | import com.facebook.react.bridge.Promise
6 | import com.facebook.react.bridge.ReactApplicationContext
7 | import com.facebook.react.bridge.ReactMethod
8 | import com.facebook.react.modules.core.DeviceEventManagerModule
9 |
10 |
11 | class ShakeModule internal constructor(private val context: ReactApplicationContext) :
12 | ShakeSpec(context) {
13 |
14 | private lateinit var shakeDetector: CustomShakeDetector
15 |
16 | override fun getName(): String {
17 | return NAME
18 | }
19 |
20 | override fun initialize() {
21 | super.initialize()
22 | shakeDetector = CustomShakeDetector({
23 | sendEvent()
24 | })
25 |
26 | shakeDetector.start(
27 | context.getSystemService(Context.SENSOR_SERVICE) as SensorManager
28 | )
29 | }
30 |
31 | override fun invalidate() {
32 | super.invalidate()
33 | shakeDetector.stop()
34 | }
35 |
36 | private fun sendEvent() {
37 | context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
38 | .emit(EVENT_NAME, null)
39 | }
40 |
41 | // https://stackoverflow.com/questions/69538962/new-nativeeventemitter-was-called-with-a-non-null-argument-without-the-requir
42 | @ReactMethod
43 | override fun addListener(eventName: String?) {
44 | }
45 |
46 | @ReactMethod
47 | override fun removeListeners(count: Double) {
48 | }
49 |
50 | companion object {
51 | const val NAME = "RNShake"
52 | const val EVENT_NAME: String = "ShakeEvent"
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ShakeExample
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(CURRENT_PROJECT_VERSION)
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 |
30 | NSAllowsArbitraryLoads
31 |
32 | NSAllowsLocalNetworking
33 |
34 |
35 | NSLocationWhenInUseUsageDescription
36 |
37 | UILaunchStoryboardName
38 | LaunchScreen
39 | UIRequiredDeviceCapabilities
40 |
41 | arm64
42 |
43 | UISupportedInterfaceOrientations
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 |
49 | UIViewControllerBasedStatusBarAppearance
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/example/android/app/src/main/java/shake/example/MainApplication.kt:
--------------------------------------------------------------------------------
1 | package shake.example
2 |
3 | import android.app.Application
4 | import com.facebook.react.PackageList
5 | import com.facebook.react.ReactApplication
6 | import com.facebook.react.ReactHost
7 | import com.facebook.react.ReactNativeHost
8 | import com.facebook.react.ReactPackage
9 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
10 | import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
11 | import com.facebook.react.defaults.DefaultReactNativeHost
12 | import com.facebook.react.soloader.OpenSourceMergedSoMapping
13 | import com.facebook.soloader.SoLoader
14 |
15 | class MainApplication : Application(), ReactApplication {
16 |
17 | override val reactNativeHost: ReactNativeHost =
18 | object : DefaultReactNativeHost(this) {
19 | override fun getPackages(): List =
20 | PackageList(this).packages.apply {
21 | // Packages that cannot be autolinked yet can be added manually here, for example:
22 | // add(MyReactNativePackage())
23 | }
24 |
25 | override fun getJSMainModuleName(): String = "index"
26 |
27 | override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
28 |
29 | override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
30 | override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
31 | }
32 |
33 | override val reactHost: ReactHost
34 | get() = getDefaultReactHost(applicationContext, reactNativeHost)
35 |
36 | override fun onCreate() {
37 | super.onCreate()
38 | SoLoader.init(this, OpenSourceMergedSoMapping)
39 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
40 | // If you opted-in for the New Architecture, we load the native entry point for this app.
41 | load()
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | # AndroidX package structure to make it clearer which packages are bundled with the
21 | # Android operating system, and which are packaged with your app's APK
22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
23 | android.useAndroidX=true
24 |
25 | # Use this property to specify which architecture you want to build.
26 | # You can also override it from the CLI using
27 | # ./gradlew -PreactNativeArchitectures=x86_64
28 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
29 |
30 | # Use this property to enable support to the new architecture.
31 | # This will allow you to use TurboModules and the Fabric render in
32 | # your application. You should enable this flag either if you want
33 | # to write custom TurboModules/Fabric components OR use libraries that
34 | # are providing them.
35 | newArchEnabled=true
36 |
37 | # Use this property to enable or disable the Hermes JS engine.
38 | # If set to false, you will be using JSC instead.
39 | hermesEnabled=true
40 |
--------------------------------------------------------------------------------
/react-native-shake.podspec:
--------------------------------------------------------------------------------
1 | require "json"
2 |
3 | package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4 | folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
5 |
6 | Pod::Spec.new do |s|
7 | s.name = "react-native-shake"
8 | s.version = package["version"]
9 | s.summary = package["description"]
10 | s.homepage = package["homepage"]
11 | s.license = package["license"]
12 | s.authors = package["author"]
13 |
14 | s.platforms = { :ios => min_ios_version_supported }
15 | s.source = { :git => "https://github.com/Doko-Demo-Doa/react-native-shake.git", :tag => "#{s.version}" }
16 |
17 | s.source_files = "ios/**/*.{h,m,mm,cpp}"
18 | s.exclude_files = "ios/generated/**/*"
19 |
20 | # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
21 | # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
22 | if respond_to?(:install_modules_dependencies, true)
23 | install_modules_dependencies(s)
24 | else
25 | s.dependency "React-Core"
26 |
27 | # Don't install the dependencies when we run `pod install` in the old architecture.
28 | if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
29 | s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
30 | s.pod_target_xcconfig = {
31 | "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
32 | "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
33 | "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
34 | }
35 | s.dependency "React-Codegen"
36 | s.dependency "RCT-Folly"
37 | s.dependency "RCTRequired"
38 | s.dependency "RCTTypeSafety"
39 | s.dependency "ReactCommon/turbomodule/core"
40 | end
41 | end
42 | end
43 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/rn_edit_text_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
22 |
23 |
24 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example/ios/ShakeExampleTests/ShakeExampleTests.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | #import
5 | #import
6 |
7 | #define TIMEOUT_SECONDS 600
8 | #define TEXT_TO_LOOK_FOR @"Welcome to React"
9 |
10 | @interface ShakeExampleTests : XCTestCase
11 |
12 | @end
13 |
14 | @implementation ShakeExampleTests
15 |
16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
17 | {
18 | if (test(view)) {
19 | return YES;
20 | }
21 | for (UIView *subview in [view subviews]) {
22 | if ([self findSubviewInView:subview matching:test]) {
23 | return YES;
24 | }
25 | }
26 | return NO;
27 | }
28 |
29 | - (void)testRendersWelcomeScreen
30 | {
31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
33 | BOOL foundElement = NO;
34 |
35 | __block NSString *redboxError = nil;
36 | #ifdef DEBUG
37 | RCTSetLogFunction(
38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
39 | if (level >= RCTLogLevelError) {
40 | redboxError = message;
41 | }
42 | });
43 | #endif
44 |
45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
48 |
49 | foundElement = [self findSubviewInView:vc.view
50 | matching:^BOOL(UIView *view) {
51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
52 | return YES;
53 | }
54 | return NO;
55 | }];
56 | }
57 |
58 | #ifdef DEBUG
59 | RCTSetLogFunction(RCTDefaultLogFunction);
60 | #endif
61 |
62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React Native Shake Event Detector
2 |
3 | If you like this, please consider...
4 |
5 |
6 |
7 | Thank you!
8 |
9 | [](https://badge.fury.io/js/react-native-shake)
10 |
11 | 
12 |
13 | With this library, you can add shake event detector on your React Native app. Because `react-native-shake-event` is not in active development anymore, I decided to created this.
14 |
15 | It should work best on _real devices_
16 |
17 | ## Installation
18 |
19 | ```sh
20 | npm install react-native-shake
21 | ```
22 |
23 | or
24 |
25 | ```sh
26 | yarn add react-native-shake
27 | ```
28 |
29 | ## Linking the native modules
30 |
31 | ### Automatic:
32 |
33 | From React Native 0.60, you don't have to manually link libraries anymore. Just
34 |
35 | ```bash
36 | cd ios
37 | pod update
38 | ```
39 |
40 | and you're good to go.
41 |
42 | ### Manual (iOS):
43 |
44 | Follow this [guide](https://reactnative.dev/docs/linking-libraries-ios)
45 |
46 | ## Usage
47 |
48 | For 5.x.x and higher:
49 |
50 | ```tsx
51 | import React from 'react';
52 |
53 | export const MyComponent = () => {
54 | React.useEffect(() => {
55 | const subscription = RNShake.addListener(() => {
56 | // Your code here...
57 | });
58 |
59 | return () => {
60 | // Your code here...
61 | subscription.remove();
62 | };
63 | }, []);
64 | };
65 | ```
66 |
67 | and for older versions:
68 |
69 | ```tsx
70 | import RNShake from 'react-native-shake';
71 |
72 | // For v3.x.x and below:
73 | class MyComponent extends React.Component {
74 | componentDidMount() {
75 | RNShake.addEventListener('ShakeEvent', () => {
76 | // Your code...
77 | });
78 | }
79 |
80 | componentWillUnmount() {
81 | RNShake.removeEventListener('ShakeEvent');
82 | }
83 | }
84 |
85 | // For v4.x.x onwards:
86 | class MyComponent extends React.Component {
87 | componentDidMount() {
88 | RNShake.addListener(() => {
89 | // Your code...
90 | });
91 | }
92 |
93 | componentWillUnmount() {
94 | RNShake.removeListener();
95 | }
96 | }
97 | ```
98 |
--------------------------------------------------------------------------------
/example/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%"=="" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%"=="" set DIRNAME=.
29 | @rem This is normally unused
30 | set APP_BASE_NAME=%~n0
31 | set APP_HOME=%DIRNAME%
32 |
33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
35 |
36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
38 |
39 | @rem Find java.exe
40 | if defined JAVA_HOME goto findJavaFromJavaHome
41 |
42 | set JAVA_EXE=java.exe
43 | %JAVA_EXE% -version >NUL 2>&1
44 | if %ERRORLEVEL% equ 0 goto execute
45 |
46 | echo. 1>&2
47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
48 | echo. 1>&2
49 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2
50 | echo location of your Java installation. 1>&2
51 |
52 | goto fail
53 |
54 | :findJavaFromJavaHome
55 | set JAVA_HOME=%JAVA_HOME:"=%
56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
57 |
58 | if exist "%JAVA_EXE%" goto execute
59 |
60 | echo. 1>&2
61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
62 | echo. 1>&2
63 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2
64 | echo location of your Java installation. 1>&2
65 |
66 | goto fail
67 |
68 | :execute
69 | @rem Setup the command line
70 |
71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
72 |
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if %ERRORLEVEL% equ 0 goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | set EXIT_CODE=%ERRORLEVEL%
85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
87 | exit /b %EXIT_CODE%
88 |
89 | :mainEnd
90 | if "%OS%"=="Windows_NT" endlocal
91 |
92 | :omega
93 |
--------------------------------------------------------------------------------
/example/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (3.0.7)
5 | base64
6 | nkf
7 | rexml
8 | activesupport (7.2.0)
9 | base64
10 | bigdecimal
11 | concurrent-ruby (~> 1.0, >= 1.3.1)
12 | connection_pool (>= 2.2.5)
13 | drb
14 | i18n (>= 1.6, < 2)
15 | logger (>= 1.4.2)
16 | minitest (>= 5.1)
17 | securerandom (>= 0.3)
18 | tzinfo (~> 2.0, >= 2.0.5)
19 | addressable (2.8.7)
20 | public_suffix (>= 2.0.2, < 7.0)
21 | algoliasearch (1.27.5)
22 | httpclient (~> 2.8, >= 2.8.3)
23 | json (>= 1.5.1)
24 | atomos (0.1.3)
25 | base64 (0.2.0)
26 | bigdecimal (3.1.8)
27 | claide (1.1.0)
28 | cocoapods (1.15.2)
29 | addressable (~> 2.8)
30 | claide (>= 1.0.2, < 2.0)
31 | cocoapods-core (= 1.15.2)
32 | cocoapods-deintegrate (>= 1.0.3, < 2.0)
33 | cocoapods-downloader (>= 2.1, < 3.0)
34 | cocoapods-plugins (>= 1.0.0, < 2.0)
35 | cocoapods-search (>= 1.0.0, < 2.0)
36 | cocoapods-trunk (>= 1.6.0, < 2.0)
37 | cocoapods-try (>= 1.1.0, < 2.0)
38 | colored2 (~> 3.1)
39 | escape (~> 0.0.4)
40 | fourflusher (>= 2.3.0, < 3.0)
41 | gh_inspector (~> 1.0)
42 | molinillo (~> 0.8.0)
43 | nap (~> 1.0)
44 | ruby-macho (>= 2.3.0, < 3.0)
45 | xcodeproj (>= 1.23.0, < 2.0)
46 | cocoapods-core (1.15.2)
47 | activesupport (>= 5.0, < 8)
48 | addressable (~> 2.8)
49 | algoliasearch (~> 1.0)
50 | concurrent-ruby (~> 1.1)
51 | fuzzy_match (~> 2.0.4)
52 | nap (~> 1.0)
53 | netrc (~> 0.11)
54 | public_suffix (~> 4.0)
55 | typhoeus (~> 1.0)
56 | cocoapods-deintegrate (1.0.5)
57 | cocoapods-downloader (2.1)
58 | cocoapods-plugins (1.0.0)
59 | nap
60 | cocoapods-search (1.0.1)
61 | cocoapods-trunk (1.6.0)
62 | nap (>= 0.8, < 2.0)
63 | netrc (~> 0.11)
64 | cocoapods-try (1.2.0)
65 | colored2 (3.1.2)
66 | concurrent-ruby (1.3.4)
67 | connection_pool (2.4.1)
68 | drb (2.2.1)
69 | escape (0.0.4)
70 | ethon (0.16.0)
71 | ffi (>= 1.15.0)
72 | ffi (1.17.0)
73 | fourflusher (2.3.1)
74 | fuzzy_match (2.0.4)
75 | gh_inspector (1.1.3)
76 | httpclient (2.8.3)
77 | i18n (1.14.5)
78 | concurrent-ruby (~> 1.0)
79 | json (2.7.2)
80 | logger (1.6.0)
81 | minitest (5.25.1)
82 | molinillo (0.8.0)
83 | nanaimo (0.3.0)
84 | nap (1.1.0)
85 | netrc (0.11.0)
86 | nkf (0.2.0)
87 | public_suffix (4.0.7)
88 | rexml (3.4.2)
89 | ruby-macho (2.5.1)
90 | securerandom (0.3.1)
91 | typhoeus (1.4.1)
92 | ethon (>= 0.9.0)
93 | tzinfo (2.0.6)
94 | concurrent-ruby (~> 1.0)
95 | xcodeproj (1.25.0)
96 | CFPropertyList (>= 2.3.3, < 4.0)
97 | atomos (~> 0.1.3)
98 | claide (>= 1.0.2, < 2.0)
99 | colored2 (~> 3.1)
100 | nanaimo (~> 0.3.0)
101 | rexml (>= 3.3.2, < 4.0)
102 |
103 | PLATFORMS
104 | ruby
105 |
106 | DEPENDENCIES
107 | activesupport (>= 6.1.7.5, != 7.1.0)
108 | cocoapods (>= 1.13, != 1.15.1, != 1.15.0)
109 |
110 | RUBY VERSION
111 | ruby 3.3.4p94
112 |
113 | BUNDLED WITH
114 | 2.5.17
115 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
2 |
3 | # Getting Started
4 |
5 | >**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
6 |
7 | ## Step 1: Start the Metro Server
8 |
9 | First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
10 |
11 | To start Metro, run the following command from the _root_ of your React Native project:
12 |
13 | ```bash
14 | # using npm
15 | npm start
16 |
17 | # OR using Yarn
18 | yarn start
19 | ```
20 |
21 | ## Step 2: Start your Application
22 |
23 | Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
24 |
25 | ### For Android
26 |
27 | ```bash
28 | # using npm
29 | npm run android
30 |
31 | # OR using Yarn
32 | yarn android
33 | ```
34 |
35 | ### For iOS
36 |
37 | ```bash
38 | # using npm
39 | npm run ios
40 |
41 | # OR using Yarn
42 | yarn ios
43 | ```
44 |
45 | If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
46 |
47 | This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
48 |
49 | ## Step 3: Modifying your App
50 |
51 | Now that you have successfully run the app, let's modify it.
52 |
53 | 1. Open `App.tsx` in your text editor of choice and edit some lines.
54 | 2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes!
55 |
56 | For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes!
57 |
58 | ## Congratulations! :tada:
59 |
60 | You've successfully run and modified your React Native App. :partying_face:
61 |
62 | ### Now what?
63 |
64 | - If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
65 | - If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
66 |
67 | # Troubleshooting
68 |
69 | If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
70 |
71 | # Learn More
72 |
73 | To learn more about React Native, take a look at the following resources:
74 |
75 | - [React Native Website](https://reactnative.dev) - learn more about React Native.
76 | - [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
77 | - [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
78 | - [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
79 | - [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
80 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3 | def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Shake_kotlinVersion"]
4 |
5 | repositories {
6 | google()
7 | mavenCentral()
8 | }
9 |
10 | dependencies {
11 | classpath "com.android.tools.build:gradle:8.7.2"
12 | // noinspection DifferentKotlinGradleVersion
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 | }
15 | }
16 |
17 | def reactNativeArchitectures() {
18 | def value = rootProject.getProperties().get("reactNativeArchitectures")
19 | return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
20 | }
21 |
22 | def isNewArchitectureEnabled() {
23 | return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
24 | }
25 |
26 | apply plugin: "com.android.library"
27 | apply plugin: "kotlin-android"
28 |
29 | if (isNewArchitectureEnabled()) {
30 | apply plugin: "com.facebook.react"
31 | }
32 |
33 | def getExtOrDefault(name) {
34 | return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["Shake_" + name]
35 | }
36 |
37 | def getExtOrIntegerDefault(name) {
38 | return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Shake_" + name]).toInteger()
39 | }
40 |
41 | def supportsNamespace() {
42 | def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
43 | def major = parsed[0].toInteger()
44 | def minor = parsed[1].toInteger()
45 |
46 | // Namespace support was added in 7.3.0
47 | return (major == 7 && minor >= 3) || major >= 8
48 | }
49 |
50 | android {
51 | if (supportsNamespace()) {
52 | namespace "com.shake"
53 |
54 | sourceSets {
55 | main {
56 | manifest.srcFile "src/main/AndroidManifestNew.xml"
57 | }
58 | }
59 | }
60 |
61 | compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
62 |
63 | defaultConfig {
64 | minSdkVersion getExtOrIntegerDefault("minSdkVersion")
65 | targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
66 | buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
67 |
68 | }
69 |
70 | buildFeatures {
71 | buildConfig true
72 | }
73 |
74 | buildTypes {
75 | release {
76 | minifyEnabled false
77 | }
78 | }
79 |
80 | lintOptions {
81 | disable "GradleCompatible"
82 | }
83 |
84 | compileOptions {
85 | sourceCompatibility JavaVersion.VERSION_1_8
86 | targetCompatibility JavaVersion.VERSION_1_8
87 | }
88 |
89 | sourceSets {
90 | main {
91 | if (isNewArchitectureEnabled()) {
92 | java.srcDirs += [
93 | "src/newarch",
94 | // Codegen specs
95 | "generated/java",
96 | "generated/jni"
97 | ]
98 | } else {
99 | java.srcDirs += ["src/oldarch"]
100 | }
101 | }
102 | }
103 | }
104 |
105 | repositories {
106 | mavenCentral()
107 | google()
108 | }
109 |
110 | def kotlin_version = getExtOrDefault("kotlinVersion")
111 |
112 | dependencies {
113 | // For < 0.71, this will be from the local maven repo
114 | // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
115 | //noinspection GradleDynamicVersion
116 | implementation "com.facebook.react:react-native:+"
117 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
118 | }
119 |
120 | if (isNewArchitectureEnabled()) {
121 | react {
122 | jsRootDir = file("../src/")
123 | libraryName = "RNShake"
124 | codegenJavaPackageName = "com.shake"
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample.xcodeproj/xcshareddata/xcschemes/ShakeExample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
10 |
12 |
15 |
16 |
17 |
18 |
19 |
25 |
31 |
32 |
33 |
34 |
35 |
40 |
41 |
43 |
49 |
50 |
51 |
52 |
53 |
63 |
65 |
71 |
72 |
73 |
74 |
80 |
82 |
88 |
89 |
90 |
91 |
93 |
94 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/android/src/main/java/com/shake/CustomShakeDetector.kt:
--------------------------------------------------------------------------------
1 | package com.shake
2 |
3 | import android.hardware.Sensor
4 | import android.hardware.SensorEvent
5 | import android.hardware.SensorEventListener
6 | import android.hardware.SensorManager
7 | import java.util.concurrent.TimeUnit
8 |
9 | /** Listens for the user shaking their phone. Allocation-less once it starts listening. */
10 | public class CustomShakeDetector
11 | @JvmOverloads
12 | constructor(private val shakeListener: ShakeListener, private val minNumShakes: Int = 1) :
13 | SensorEventListener {
14 |
15 | private var accelerationX = 0f
16 | private var accelerationY = 0f
17 | private var accelerationZ = 0f
18 |
19 | public fun interface ShakeListener {
20 | public fun onShake()
21 | }
22 |
23 | private var sensorManager: SensorManager? = null
24 | private var lastTimestamp: Long = 0
25 | private var numShakes = 0
26 | private var lastShakeTimestamp: Long = 0
27 |
28 | /** Start listening for shakes. */
29 | public fun start(manager: SensorManager): Unit {
30 | val accelerometer = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) ?: return
31 | sensorManager = manager
32 | lastTimestamp = -1
33 | manager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI)
34 | lastShakeTimestamp = 0
35 | reset()
36 | }
37 |
38 | /** Stop listening for shakes. */
39 | public fun stop(): Unit {
40 | sensorManager?.unregisterListener(this)
41 | sensorManager = null
42 | }
43 |
44 | /** Reset all variables used to keep track of number of shakes recorded. */
45 | private fun reset() {
46 | numShakes = 0
47 | accelerationX = 0f
48 | accelerationY = 0f
49 | accelerationZ = 0f
50 | }
51 |
52 | /**
53 | * Determine if acceleration applied to sensor is large enough to count as a rage shake.
54 | *
55 | * @param a acceleration in x, y, or z applied to the sensor
56 | * @return true if the magnitude of the force exceeds the minimum required amount of force. false
57 | * otherwise.
58 | */
59 | private fun atLeastRequiredForce(a: Float): Boolean = Math.abs(a) > REQUIRED_FORCE
60 |
61 | /**
62 | * Save data about last shake
63 | *
64 | * @param timestamp (ns) of last sensor event
65 | */
66 | private fun recordShake(timestamp: Long) {
67 | lastShakeTimestamp = timestamp
68 | numShakes++
69 | }
70 |
71 | override fun onSensorChanged(sensorEvent: SensorEvent) {
72 | if (sensorEvent.timestamp - lastTimestamp < MIN_TIME_BETWEEN_SAMPLES_NS) {
73 | return
74 | }
75 | val ax = sensorEvent.values[0]
76 | val ay = sensorEvent.values[1]
77 | val az = sensorEvent.values[2] - SensorManager.GRAVITY_EARTH
78 | lastTimestamp = sensorEvent.timestamp
79 | when {
80 | atLeastRequiredForce(ax) && ax * accelerationX <= 0 -> {
81 | recordShake(sensorEvent.timestamp)
82 | accelerationX = ax
83 | }
84 | atLeastRequiredForce(ay) && ay * accelerationY <= 0 -> {
85 | recordShake(sensorEvent.timestamp)
86 | accelerationY = ay
87 | }
88 | atLeastRequiredForce(az) && az * accelerationZ <= 0 -> {
89 | recordShake(sensorEvent.timestamp)
90 | accelerationZ = az
91 | }
92 | }
93 | maybeDispatchShake(sensorEvent.timestamp)
94 | }
95 |
96 | override fun onAccuracyChanged(sensor: Sensor, i: Int): Unit = Unit
97 |
98 | private fun maybeDispatchShake(currentTimestamp: Long) {
99 | if (numShakes >= 8 * minNumShakes) {
100 | reset()
101 | shakeListener.onShake()
102 | }
103 | if (currentTimestamp - lastShakeTimestamp > SHAKING_WINDOW_NS) {
104 | reset()
105 | }
106 | }
107 | }
108 |
109 | // Collect sensor data in this interval (nanoseconds)
110 | private val MIN_TIME_BETWEEN_SAMPLES_NS = TimeUnit.NANOSECONDS.convert(20, TimeUnit.MILLISECONDS)
111 |
112 | // Number of nanoseconds to listen for and count shakes (nanoseconds)
113 | private val SHAKING_WINDOW_NS = TimeUnit.NANOSECONDS.convert(3, TimeUnit.SECONDS).toFloat()
114 |
115 | // Required force to constitute a rage shake. Need to multiply gravity by 1.33 because a rage
116 | // shake in one direction should have more force than just the magnitude of free fall.
117 | private const val REQUIRED_FORCE = SensorManager.GRAVITY_EARTH * 1.33f
118 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | branches:
8 | - main
9 | merge_group:
10 | types:
11 | - checks_requested
12 |
13 | jobs:
14 | lint:
15 | runs-on: ubuntu-latest
16 | steps:
17 | - name: Checkout
18 | uses: actions/checkout@v4
19 |
20 | - name: Setup
21 | uses: ./.github/actions/setup
22 |
23 | - name: Lint files
24 | run: yarn lint
25 |
26 | - name: Typecheck files
27 | run: yarn typecheck
28 |
29 | test:
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v4
34 |
35 | - name: Setup
36 | uses: ./.github/actions/setup
37 |
38 | - name: Run unit tests
39 | run: yarn test --maxWorkers=2 --coverage
40 |
41 | build-library:
42 | runs-on: ubuntu-latest
43 | steps:
44 | - name: Checkout
45 | uses: actions/checkout@v4
46 |
47 | - name: Setup
48 | uses: ./.github/actions/setup
49 |
50 | - name: Build package
51 | run: yarn prepare
52 |
53 | build-android:
54 | runs-on: ubuntu-latest
55 | env:
56 | TURBO_CACHE_DIR: .turbo/android
57 | steps:
58 | - name: Checkout
59 | uses: actions/checkout@v4
60 |
61 | - name: Setup
62 | uses: ./.github/actions/setup
63 |
64 | - name: Cache turborepo for Android
65 | uses: actions/cache@v4
66 | with:
67 | path: ${{ env.TURBO_CACHE_DIR }}
68 | key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }}
69 | restore-keys: |
70 | ${{ runner.os }}-turborepo-android-
71 |
72 | - name: Check turborepo cache for Android
73 | run: |
74 | TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:android').cache.status")
75 |
76 | if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
77 | echo "turbo_cache_hit=1" >> $GITHUB_ENV
78 | fi
79 |
80 | - name: Install JDK
81 | if: env.turbo_cache_hit != 1
82 | uses: actions/setup-java@v4
83 | with:
84 | distribution: 'zulu'
85 | java-version: '17'
86 |
87 | - name: Finalize Android SDK
88 | if: env.turbo_cache_hit != 1
89 | run: |
90 | /bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null"
91 |
92 | - name: Cache Gradle
93 | if: env.turbo_cache_hit != 1
94 | uses: actions/cache@v4
95 | with:
96 | path: |
97 | ~/.gradle/wrapper
98 | ~/.gradle/caches
99 | key: ${{ runner.os }}-gradle-${{ hashFiles('example/android/gradle/wrapper/gradle-wrapper.properties') }}
100 | restore-keys: |
101 | ${{ runner.os }}-gradle-
102 |
103 | # - name: Build example for Android
104 | # env:
105 | # JAVA_OPTS: '-XX:MaxHeapSize=6g'
106 | # run: |
107 | # yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}"
108 |
109 | build-ios:
110 | runs-on: macos-latest
111 | env:
112 | XCODE_VERSION: 16.2
113 | TURBO_CACHE_DIR: .turbo/ios
114 | steps:
115 | - name: Checkout
116 | uses: actions/checkout@v4
117 |
118 | - name: Setup
119 | uses: ./.github/actions/setup
120 |
121 | - name: Cache turborepo for iOS
122 | uses: actions/cache@v4
123 | with:
124 | path: ${{ env.TURBO_CACHE_DIR }}
125 | key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }}
126 | restore-keys: |
127 | ${{ runner.os }}-turborepo-ios-
128 |
129 | - name: Check turborepo cache for iOS
130 | run: |
131 | TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:ios').cache.status")
132 |
133 | if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
134 | echo "turbo_cache_hit=1" >> $GITHUB_ENV
135 | fi
136 |
137 | - name: Use appropriate Xcode version
138 | if: env.turbo_cache_hit != 1
139 | uses: maxim-lobanov/setup-xcode@v1
140 | with:
141 | xcode-version: ${{ env.XCODE_VERSION }}
142 |
143 | - name: Restore cocoapods
144 | if: env.turbo_cache_hit != 1
145 | id: cocoapods-cache
146 | uses: actions/cache/restore@v4
147 | with:
148 | path: |
149 | **/ios/Pods
150 | key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
151 | restore-keys: |
152 | ${{ runner.os }}-cocoapods-
153 |
154 | - name: Install cocoapods
155 | if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true'
156 | run: |
157 | cd example
158 | bundle install
159 | bundle exec pod update --project-directory=ios
160 |
161 | - name: Cache cocoapods
162 | if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true'
163 | uses: actions/cache/save@v4
164 | with:
165 | path: |
166 | **/ios/Pods
167 | key: ${{ steps.cocoapods-cache.outputs.cache-key }}
168 |
169 | # - name: Build example for iOS
170 | # run: |
171 | # yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"
172 |
--------------------------------------------------------------------------------
/example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: "com.android.application"
2 | apply plugin: "org.jetbrains.kotlin.android"
3 | apply plugin: "com.facebook.react"
4 |
5 | /**
6 | * This is the configuration block to customize your React Native Android app.
7 | * By default you don't need to apply any configuration, just uncomment the lines you need.
8 | */
9 | react {
10 | /* Folders */
11 | // The root of your project, i.e. where "package.json" lives. Default is '../..'
12 | // root = file("../../")
13 | // The folder where the react-native NPM package is. Default is ../../node_modules/react-native
14 | // reactNativeDir = file("../../node_modules/react-native")
15 | // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
16 | // codegenDir = file("../../node_modules/@react-native/codegen")
17 | // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
18 | // cliFile = file("../../node_modules/react-native/cli.js")
19 |
20 | /* Variants */
21 | // The list of variants to that are debuggable. For those we're going to
22 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
23 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
24 | // debuggableVariants = ["liteDebug", "prodDebug"]
25 |
26 | /* Bundling */
27 | // A list containing the node command and its flags. Default is just 'node'.
28 | // nodeExecutableAndArgs = ["node"]
29 | //
30 | // The command to run when bundling. By default is 'bundle'
31 | // bundleCommand = "ram-bundle"
32 | //
33 | // The path to the CLI configuration file. Default is empty.
34 | // bundleConfig = file(../rn-cli.config.js)
35 | //
36 | // The name of the generated asset file containing your JS bundle
37 | // bundleAssetName = "MyApplication.android.bundle"
38 | //
39 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
40 | // entryFile = file("../js/MyApplication.android.js")
41 | //
42 | // A list of extra flags to pass to the 'bundle' commands.
43 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
44 | // extraPackagerArgs = []
45 |
46 | /* Hermes Commands */
47 | // The hermes compiler command to run. By default it is 'hermesc'
48 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
49 | //
50 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
51 | // hermesFlags = ["-O", "-output-source-map"]
52 |
53 | /* Autolinking */
54 | autolinkLibrariesWithApp()
55 | }
56 |
57 | /**
58 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
59 | */
60 | def enableProguardInReleaseBuilds = false
61 |
62 | /**
63 | * The preferred build flavor of JavaScriptCore (JSC)
64 | *
65 | * For example, to use the international variant, you can use:
66 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
67 | *
68 | * The international variant includes ICU i18n library and necessary data
69 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
70 | * give correct results when using with locales other than en-US. Note that
71 | * this variant is about 6MiB larger per architecture than default.
72 | */
73 | def jscFlavor = 'org.webkit:android-jsc:+'
74 |
75 | android {
76 | ndkVersion rootProject.ext.ndkVersion
77 | buildToolsVersion rootProject.ext.buildToolsVersion
78 | compileSdk rootProject.ext.compileSdkVersion
79 |
80 | namespace "shake.example"
81 | defaultConfig {
82 | applicationId "shake.example"
83 | minSdkVersion rootProject.ext.minSdkVersion
84 | targetSdkVersion rootProject.ext.targetSdkVersion
85 | versionCode 1
86 | versionName "1.0"
87 | }
88 | signingConfigs {
89 | debug {
90 | storeFile file('debug.keystore')
91 | storePassword 'android'
92 | keyAlias 'androiddebugkey'
93 | keyPassword 'android'
94 | }
95 | }
96 | buildTypes {
97 | debug {
98 | signingConfig signingConfigs.debug
99 | }
100 | release {
101 | // Caution! In production, you need to generate your own keystore file.
102 | // see https://reactnative.dev/docs/signed-apk-android.
103 | signingConfig signingConfigs.debug
104 | minifyEnabled enableProguardInReleaseBuilds
105 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
106 | }
107 | }
108 | }
109 |
110 | dependencies {
111 | // The version of react-native is set by the React Native Gradle Plugin
112 | implementation("com.facebook.react:react-android")
113 |
114 | if (hermesEnabled.toBoolean()) {
115 | implementation("com.facebook.react:hermes-android")
116 | } else {
117 | implementation jscFlavor
118 | }
119 | }
120 |
121 | def isNewArchitectureEnabled() {
122 | return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
123 | }
124 |
125 | if (isNewArchitectureEnabled()) {
126 | // Since our library doesn't invoke codegen automatically we need to do it here.
127 | tasks.register('invokeLibraryCodegen', Exec) {
128 | workingDir "$rootDir/../../"
129 | commandLine "npx", "bob", "build", "--target", "codegen"
130 | }
131 | preBuild.dependsOn invokeLibraryCodegen
132 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-shake",
3 | "version": "6.8.0",
4 | "description": "React Native shake event detector",
5 | "source": "./src/index.tsx",
6 | "main": "./lib/commonjs/index.js",
7 | "module": "./lib/module/index.js",
8 | "types": "./lib/typescript/module/src/index.d.ts",
9 | "exports": {
10 | ".": {
11 | "import": {
12 | "types": "./lib/typescript/module/src/index.d.ts",
13 | "default": "./lib/module/index.js"
14 | },
15 | "require": {
16 | "types": "./lib/typescript/commonjs/src/index.d.ts",
17 | "default": "./lib/commonjs/index.js"
18 | }
19 | },
20 | "./types": "./lib/typescript/module/src/index.d.ts"
21 | },
22 | "files": [
23 | "src",
24 | "lib",
25 | "android",
26 | "ios",
27 | "cpp",
28 | "*.podspec",
29 | "!ios/build",
30 | "!android/build",
31 | "!android/gradle",
32 | "!android/gradlew",
33 | "!android/gradlew.bat",
34 | "!android/local.properties",
35 | "!**/__tests__",
36 | "!**/__fixtures__",
37 | "!**/__mocks__",
38 | "!**/.*"
39 | ],
40 | "scripts": {
41 | "example": "yarn workspace react-native-shake-example",
42 | "test": "jest",
43 | "typecheck": "tsc",
44 | "lint": "eslint \"**/*.{js,ts,tsx}\"",
45 | "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
46 | "prepare": "bob build",
47 | "release": "release-it"
48 | },
49 | "keywords": [
50 | "react-native",
51 | "ios",
52 | "android"
53 | ],
54 | "repository": {
55 | "type": "git",
56 | "url": "git+https://github.com/Doko-Demo-Doa/react-native-shake.git"
57 | },
58 | "author": "Quan Pham (https://github.com/Doko-Demo-Doa)",
59 | "license": "MIT",
60 | "bugs": {
61 | "url": "https://github.com/Doko-Demo-Doa/react-native-shake/issues"
62 | },
63 | "homepage": "https://github.com/Doko-Demo-Doa/react-native-shake#readme",
64 | "publishConfig": {
65 | "registry": "https://registry.npmjs.org/"
66 | },
67 | "devDependencies": {
68 | "@commitlint/config-conventional": "^19.8.1",
69 | "@eslint/compat": "^1.2.7",
70 | "@eslint/eslintrc": "^3.3.0",
71 | "@eslint/js": "^9.22.0",
72 | "@evilmartians/lefthook": "^1.11.13",
73 | "@react-native-community/cli": "18.0.0",
74 | "@react-native/eslint-config": "^0.79.3",
75 | "@release-it/conventional-changelog": "^10.0.1",
76 | "@types/jest": "^29.5.14",
77 | "@types/react": "^19.0.0",
78 | "commitlint": "^19.8.1",
79 | "del-cli": "^6.0.0",
80 | "eslint": "^9.28.0",
81 | "eslint-config-prettier": "^10.1.5",
82 | "eslint-plugin-prettier": "^5.4.1",
83 | "jest": "^29.7.0",
84 | "prettier": "^3.5.3",
85 | "react": "19.0.0",
86 | "react-native": "0.79.2",
87 | "react-native-builder-bob": "^0.40.11",
88 | "release-it": "^19.0.3",
89 | "turbo": "^2.5.4",
90 | "typescript": "^5.8.3"
91 | },
92 | "resolutions": {
93 | "@types/react": "^18.2.44"
94 | },
95 | "peerDependencies": {
96 | "react": "*",
97 | "react-native": "*"
98 | },
99 | "workspaces": [
100 | "example"
101 | ],
102 | "packageManager": "yarn@4.9.2",
103 | "jest": {
104 | "preset": "react-native",
105 | "modulePathIgnorePatterns": [
106 | "/example/node_modules",
107 | "/lib/"
108 | ]
109 | },
110 | "commitlint": {
111 | "extends": [
112 | "@commitlint/config-conventional"
113 | ]
114 | },
115 | "release-it": {
116 | "git": {
117 | "commitMessage": "chore: release ${version}",
118 | "tagName": "v${version}"
119 | },
120 | "npm": {
121 | "publish": true
122 | },
123 | "github": {
124 | "release": true
125 | },
126 | "plugins": {
127 | "@release-it/conventional-changelog": {
128 | "preset": "angular"
129 | }
130 | }
131 | },
132 | "eslintConfig": {
133 | "root": true,
134 | "extends": [
135 | "@react-native",
136 | "prettier/prettier"
137 | ],
138 | "plugins": [
139 | "prettier"
140 | ],
141 | "rules": {
142 | "react/react-in-jsx-scope": "off",
143 | "prettier/prettier": [
144 | "error",
145 | {
146 | "quoteProps": "consistent",
147 | "singleQuote": true,
148 | "tabWidth": 2,
149 | "trailingComma": "es5",
150 | "useTabs": false
151 | }
152 | ]
153 | }
154 | },
155 | "eslintIgnore": [
156 | "node_modules/",
157 | "lib/"
158 | ],
159 | "prettier": {
160 | "quoteProps": "consistent",
161 | "singleQuote": true,
162 | "tabWidth": 2,
163 | "trailingComma": "es5",
164 | "useTabs": false
165 | },
166 | "react-native-builder-bob": {
167 | "source": "src",
168 | "output": "lib",
169 | "targets": [
170 | "codegen",
171 | [
172 | "commonjs",
173 | {
174 | "esm": true
175 | }
176 | ],
177 | [
178 | "module",
179 | {
180 | "esm": true
181 | }
182 | ],
183 | [
184 | "typescript",
185 | {
186 | "project": "tsconfig.build.json"
187 | }
188 | ]
189 | ]
190 | },
191 | "codegenConfig": {
192 | "name": "RNShakeSpec",
193 | "type": "modules",
194 | "jsSrcsDir": "src",
195 | "outputDir": {
196 | "ios": "ios/generated",
197 | "android": "android/generated"
198 | },
199 | "android": {
200 | "javaPackageName": "com.shake"
201 | },
202 | "includesGeneratedCode": false
203 | },
204 | "create-react-native-library": {
205 | "type": "module-mixed",
206 | "languages": "kotlin-objc",
207 | "version": "0.48.3"
208 | }
209 | }
210 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
2 | # Contributor Covenant Code of Conduct
3 |
4 | ## Our Pledge
5 |
6 | We as members, contributors, and leaders pledge to make participation in our
7 | community a harassment-free experience for everyone, regardless of age, body
8 | size, visible or invisible disability, ethnicity, sex characteristics, gender
9 | identity and expression, level of experience, education, socio-economic status,
10 | nationality, personal appearance, race, caste, color, religion, or sexual
11 | identity and orientation.
12 |
13 | We pledge to act and interact in ways that contribute to an open, welcoming,
14 | diverse, inclusive, and healthy community.
15 |
16 | ## Our Standards
17 |
18 | Examples of behavior that contributes to a positive environment for our
19 | community include:
20 |
21 | * Demonstrating empathy and kindness toward other people
22 | * Being respectful of differing opinions, viewpoints, and experiences
23 | * Giving and gracefully accepting constructive feedback
24 | * Accepting responsibility and apologizing to those affected by our mistakes,
25 | and learning from the experience
26 | * Focusing on what is best not just for us as individuals, but for the overall
27 | community
28 |
29 | Examples of unacceptable behavior include:
30 |
31 | * The use of sexualized language or imagery, and sexual attention or advances of
32 | any kind
33 | * Trolling, insulting or derogatory comments, and personal or political attacks
34 | * Public or private harassment
35 | * Publishing others' private information, such as a physical or email address,
36 | without their explicit permission
37 | * Other conduct which could reasonably be considered inappropriate in a
38 | professional setting
39 |
40 | ## Enforcement Responsibilities
41 |
42 | Community leaders are responsible for clarifying and enforcing our standards of
43 | acceptable behavior and will take appropriate and fair corrective action in
44 | response to any behavior that they deem inappropriate, threatening, offensive,
45 | or harmful.
46 |
47 | Community leaders have the right and responsibility to remove, edit, or reject
48 | comments, commits, code, wiki edits, issues, and other contributions that are
49 | not aligned to this Code of Conduct, and will communicate reasons for moderation
50 | decisions when appropriate.
51 |
52 | ## Scope
53 |
54 | This Code of Conduct applies within all community spaces, and also applies when
55 | an individual is officially representing the community in public spaces.
56 | Examples of representing our community include using an official e-mail address,
57 | posting via an official social media account, or acting as an appointed
58 | representative at an online or offline event.
59 |
60 | ## Enforcement
61 |
62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
63 | reported to the community leaders responsible for enforcement at
64 | [INSERT CONTACT METHOD].
65 | All complaints will be reviewed and investigated promptly and fairly.
66 |
67 | All community leaders are obligated to respect the privacy and security of the
68 | reporter of any incident.
69 |
70 | ## Enforcement Guidelines
71 |
72 | Community leaders will follow these Community Impact Guidelines in determining
73 | the consequences for any action they deem in violation of this Code of Conduct:
74 |
75 | ### 1. Correction
76 |
77 | **Community Impact**: Use of inappropriate language or other behavior deemed
78 | unprofessional or unwelcome in the community.
79 |
80 | **Consequence**: A private, written warning from community leaders, providing
81 | clarity around the nature of the violation and an explanation of why the
82 | behavior was inappropriate. A public apology may be requested.
83 |
84 | ### 2. Warning
85 |
86 | **Community Impact**: A violation through a single incident or series of
87 | actions.
88 |
89 | **Consequence**: A warning with consequences for continued behavior. No
90 | interaction with the people involved, including unsolicited interaction with
91 | those enforcing the Code of Conduct, for a specified period of time. This
92 | includes avoiding interactions in community spaces as well as external channels
93 | like social media. Violating these terms may lead to a temporary or permanent
94 | ban.
95 |
96 | ### 3. Temporary Ban
97 |
98 | **Community Impact**: A serious violation of community standards, including
99 | sustained inappropriate behavior.
100 |
101 | **Consequence**: A temporary ban from any sort of interaction or public
102 | communication with the community for a specified period of time. No public or
103 | private interaction with the people involved, including unsolicited interaction
104 | with those enforcing the Code of Conduct, is allowed during this period.
105 | Violating these terms may lead to a permanent ban.
106 |
107 | ### 4. Permanent Ban
108 |
109 | **Community Impact**: Demonstrating a pattern of violation of community
110 | standards, including sustained inappropriate behavior, harassment of an
111 | individual, or aggression toward or disparagement of classes of individuals.
112 |
113 | **Consequence**: A permanent ban from any sort of public interaction within the
114 | community.
115 |
116 | ## Attribution
117 |
118 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119 | version 2.1, available at
120 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121 |
122 | Community Impact Guidelines were inspired by
123 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124 |
125 | For answers to common questions about this code of conduct, see the FAQ at
126 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
127 | [https://www.contributor-covenant.org/translations][translations].
128 |
129 | [homepage]: https://www.contributor-covenant.org
130 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
131 | [Mozilla CoC]: https://github.com/mozilla/diversity
132 | [FAQ]: https://www.contributor-covenant.org/faq
133 | [translations]: https://www.contributor-covenant.org/translations
134 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Contributions are always welcome, no matter how large or small!
4 |
5 | We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project. Before contributing, please read the [code of conduct](./CODE_OF_CONDUCT.md).
6 |
7 | ## Development workflow
8 |
9 | This project is a monorepo managed using [Yarn workspaces](https://yarnpkg.com/features/workspaces). It contains the following packages:
10 |
11 | - The library package in the root directory.
12 | - An example app in the `example/` directory.
13 |
14 | To get started with the project, run `yarn` in the root directory to install the required dependencies for each package:
15 |
16 | ```sh
17 | yarn
18 | ```
19 |
20 | > Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development.
21 |
22 | The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make.
23 |
24 | It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app.
25 |
26 | If you want to use Android Studio or XCode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/ShakeExample.xcworkspace` in XCode and find the source files at `Pods > Development Pods > react-native-shake`.
27 |
28 | To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-shake` under `Android`.
29 |
30 | You can use various commands from the root directory to work with the project.
31 |
32 | To start the packager:
33 |
34 | ```sh
35 | yarn example start
36 | ```
37 |
38 | To run the example app on Android:
39 |
40 | ```sh
41 | yarn example android
42 | ```
43 |
44 | To run the example app on iOS:
45 |
46 | ```sh
47 | yarn example ios
48 | ```
49 |
50 | By default, the example is configured to build with the old architecture. To run the example with the new architecture, you can do the following:
51 |
52 | 1. For Android, run:
53 |
54 | ```sh
55 | ORG_GRADLE_PROJECT_newArchEnabled=true yarn example android
56 | ```
57 |
58 | 2. For iOS, run:
59 |
60 | ```sh
61 | cd example/ios
62 | RCT_NEW_ARCH_ENABLED=1 pod install
63 | cd -
64 | yarn example ios
65 | ```
66 |
67 | If you are building for a different architecture than your previous build, make sure to remove the build folders first. You can run the following command to cleanup all build folders:
68 |
69 | ```sh
70 | yarn clean
71 | ```
72 |
73 | To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this:
74 |
75 | ```sh
76 | Running "ShakeExample" with {"fabric":true,"initialProps":{"concurrentRoot":true},"rootTag":1}
77 | ```
78 |
79 | Note the `"fabric":true` and `"concurrentRoot":true` properties.
80 |
81 | Make sure your code passes TypeScript and ESLint. Run the following to verify:
82 |
83 | ```sh
84 | yarn typecheck
85 | yarn lint
86 | ```
87 |
88 | To fix formatting errors, run the following:
89 |
90 | ```sh
91 | yarn lint --fix
92 | ```
93 |
94 | Remember to add tests for your change if possible. Run the unit tests by:
95 |
96 | ```sh
97 | yarn test
98 | ```
99 |
100 | ### Commit message convention
101 |
102 | We follow the [conventional commits specification](https://www.conventionalcommits.org/en) for our commit messages:
103 |
104 | - `fix`: bug fixes, e.g. fix crash due to deprecated method.
105 | - `feat`: new features, e.g. add new method to the module.
106 | - `refactor`: code refactor, e.g. migrate from class components to hooks.
107 | - `docs`: changes into documentation, e.g. add usage example for the module..
108 | - `test`: adding or updating tests, e.g. add integration tests using detox.
109 | - `chore`: tooling changes, e.g. change CI config.
110 |
111 | Our pre-commit hooks verify that your commit message matches this format when committing.
112 |
113 | ### Linting and tests
114 |
115 | [ESLint](https://eslint.org/), [Prettier](https://prettier.io/), [TypeScript](https://www.typescriptlang.org/)
116 |
117 | We use [TypeScript](https://www.typescriptlang.org/) for type checking, [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and formatting the code, and [Jest](https://jestjs.io/) for testing.
118 |
119 | Our pre-commit hooks verify that the linter and tests pass when committing.
120 |
121 | ### Publishing to npm
122 |
123 | We use [release-it](https://github.com/release-it/release-it) to make it easier to publish new versions. It handles common tasks like bumping version based on semver, creating tags and releases etc.
124 |
125 | To publish new versions, run the following:
126 |
127 | ```sh
128 | yarn release
129 | ```
130 |
131 | ### Scripts
132 |
133 | The `package.json` file contains various scripts for common tasks:
134 |
135 | - `yarn`: setup project by installing dependencies.
136 | - `yarn typecheck`: type-check files with TypeScript.
137 | - `yarn lint`: lint files with ESLint.
138 | - `yarn test`: run unit tests with Jest.
139 | - `yarn example start`: start the Metro server for the example app.
140 | - `yarn example android`: run the example app on Android.
141 | - `yarn example ios`: run the example app on iOS.
142 |
143 | ### Sending a pull request
144 |
145 | > **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github).
146 |
147 | When you're sending a pull request:
148 |
149 | - Prefer small pull requests focused on one change.
150 | - Verify that linters and tests are passing.
151 | - Review the documentation to make sure it looks good.
152 | - Follow the pull request template when opening a pull request.
153 | - For pull requests that change the API or implementation, discuss with maintainers first by opening an issue.
154 |
--------------------------------------------------------------------------------
/example/android/gradlew:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Copyright © 2015-2021 the original authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | #
21 | # Gradle start up script for POSIX generated by Gradle.
22 | #
23 | # Important for running:
24 | #
25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26 | # noncompliant, but you have some other compliant shell such as ksh or
27 | # bash, then to run this script, type that shell name before the whole
28 | # command line, like:
29 | #
30 | # ksh Gradle
31 | #
32 | # Busybox and similar reduced shells will NOT work, because this script
33 | # requires all of these POSIX shell features:
34 | # * functions;
35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37 | # * compound commands having a testable exit status, especially «case»;
38 | # * various built-in commands including «command», «set», and «ulimit».
39 | #
40 | # Important for patching:
41 | #
42 | # (2) This script targets any POSIX shell, so it avoids extensions provided
43 | # by Bash, Ksh, etc; in particular arrays are avoided.
44 | #
45 | # The "traditional" practice of packing multiple parameters into a
46 | # space-separated string is a well documented source of bugs and security
47 | # problems, so this is (mostly) avoided, by progressively accumulating
48 | # options in "$@", and eventually passing that to Java.
49 | #
50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52 | # see the in-line comments for details.
53 | #
54 | # There are tweaks for specific operating systems such as AIX, CygWin,
55 | # Darwin, MinGW, and NonStop.
56 | #
57 | # (3) This script is generated from the Groovy template
58 | # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59 | # within the Gradle project.
60 | #
61 | # You can find Gradle at https://github.com/gradle/gradle/.
62 | #
63 | ##############################################################################
64 |
65 | # Attempt to set APP_HOME
66 |
67 | # Resolve links: $0 may be a link
68 | app_path=$0
69 |
70 | # Need this for daisy-chained symlinks.
71 | while
72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73 | [ -h "$app_path" ]
74 | do
75 | ls=$( ls -ld "$app_path" )
76 | link=${ls#*' -> '}
77 | case $link in #(
78 | /*) app_path=$link ;; #(
79 | *) app_path=$APP_HOME$link ;;
80 | esac
81 | done
82 |
83 | # This is normally unused
84 | # shellcheck disable=SC2034
85 | APP_BASE_NAME=${0##*/}
86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
88 |
89 | # Use the maximum available, or set MAX_FD != -1 to use that value.
90 | MAX_FD=maximum
91 |
92 | warn () {
93 | echo "$*"
94 | } >&2
95 |
96 | die () {
97 | echo
98 | echo "$*"
99 | echo
100 | exit 1
101 | } >&2
102 |
103 | # OS specific support (must be 'true' or 'false').
104 | cygwin=false
105 | msys=false
106 | darwin=false
107 | nonstop=false
108 | case "$( uname )" in #(
109 | CYGWIN* ) cygwin=true ;; #(
110 | Darwin* ) darwin=true ;; #(
111 | MSYS* | MINGW* ) msys=true ;; #(
112 | NONSTOP* ) nonstop=true ;;
113 | esac
114 |
115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
116 |
117 |
118 | # Determine the Java command to use to start the JVM.
119 | if [ -n "$JAVA_HOME" ] ; then
120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
121 | # IBM's JDK on AIX uses strange locations for the executables
122 | JAVACMD=$JAVA_HOME/jre/sh/java
123 | else
124 | JAVACMD=$JAVA_HOME/bin/java
125 | fi
126 | if [ ! -x "$JAVACMD" ] ; then
127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
128 |
129 | Please set the JAVA_HOME variable in your environment to match the
130 | location of your Java installation."
131 | fi
132 | else
133 | JAVACMD=java
134 | if ! command -v java >/dev/null 2>&1
135 | then
136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137 |
138 | Please set the JAVA_HOME variable in your environment to match the
139 | location of your Java installation."
140 | fi
141 | fi
142 |
143 | # Increase the maximum file descriptors if we can.
144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
145 | case $MAX_FD in #(
146 | max*)
147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
148 | # shellcheck disable=SC2039,SC3045
149 | MAX_FD=$( ulimit -H -n ) ||
150 | warn "Could not query maximum file descriptor limit"
151 | esac
152 | case $MAX_FD in #(
153 | '' | soft) :;; #(
154 | *)
155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
156 | # shellcheck disable=SC2039,SC3045
157 | ulimit -n "$MAX_FD" ||
158 | warn "Could not set maximum file descriptor limit to $MAX_FD"
159 | esac
160 | fi
161 |
162 | # Collect all arguments for the java command, stacking in reverse order:
163 | # * args from the command line
164 | # * the main class name
165 | # * -classpath
166 | # * -D...appname settings
167 | # * --module-path (only if needed)
168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
169 |
170 | # For Cygwin or MSYS, switch paths to Windows format before running java
171 | if "$cygwin" || "$msys" ; then
172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
174 |
175 | JAVACMD=$( cygpath --unix "$JAVACMD" )
176 |
177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
178 | for arg do
179 | if
180 | case $arg in #(
181 | -*) false ;; # don't mess with options #(
182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
183 | [ -e "$t" ] ;; #(
184 | *) false ;;
185 | esac
186 | then
187 | arg=$( cygpath --path --ignore --mixed "$arg" )
188 | fi
189 | # Roll the args list around exactly as many times as the number of
190 | # args, so each arg winds up back in the position where it started, but
191 | # possibly modified.
192 | #
193 | # NB: a `for` loop captures its iteration list before it begins, so
194 | # changing the positional parameters here affects neither the number of
195 | # iterations, nor the values presented in `arg`.
196 | shift # remove old arg
197 | set -- "$@" "$arg" # push replacement arg
198 | done
199 | fi
200 |
201 |
202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
204 |
205 | # Collect all arguments for the java command:
206 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
207 | # and any embedded shellness will be escaped.
208 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
209 | # treated as '${Hostname}' itself on the command line.
210 |
211 | set -- \
212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
213 | -classpath "$CLASSPATH" \
214 | org.gradle.wrapper.GradleWrapperMain \
215 | "$@"
216 |
217 | # Stop when "xargs" is not available.
218 | if ! command -v xargs >/dev/null 2>&1
219 | then
220 | die "xargs is not available"
221 | fi
222 |
223 | # Use "xargs" to parse quoted args.
224 | #
225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
226 | #
227 | # In Bash we could simply go:
228 | #
229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
230 | # set -- "${ARGS[@]}" "$@"
231 | #
232 | # but POSIX shell has neither arrays nor command substitution, so instead we
233 | # post-process each arg (as a line of input to sed) to backslash-escape any
234 | # character that might be a shell metacharacter, then use eval to reverse
235 | # that process (while maintaining the separation between arguments), and wrap
236 | # the whole thing up as a single "set" statement.
237 | #
238 | # This will of course break if any of these variables contains a newline or
239 | # an unmatched quote.
240 | #
241 |
242 | eval "set -- $(
243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
244 | xargs -n1 |
245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
246 | tr '\n' ' '
247 | )" '"$@"'
248 |
249 | exec "$JAVACMD" "$@"
250 |
--------------------------------------------------------------------------------
/example/ios/ShakeExample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 54;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00E356F31AD99517003FC87E /* ShakeExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ShakeExampleTests.m */; };
11 | 0C80B921A6F3F58F76C31292 /* libPods-ShakeExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-ShakeExample.a */; };
12 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
15 | 7699B88040F8A987B510C191 /* libPods-ShakeExample-ShakeExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ShakeExample-ShakeExampleTests.a */; };
16 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
17 | E756178DFFF69D45B587AA67 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 9BC650B6C0FD1D493440A337 /* PrivacyInfo.xcprivacy */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
26 | remoteInfo = ShakeExample;
27 | };
28 | /* End PBXContainerItemProxy section */
29 |
30 | /* Begin PBXFileReference section */
31 | 00E356EE1AD99517003FC87E /* ShakeExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ShakeExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
32 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
33 | 00E356F21AD99517003FC87E /* ShakeExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShakeExampleTests.m; sourceTree = ""; };
34 | 13B07F961A680F5B00A75B9A /* ShakeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ShakeExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
35 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ShakeExample/AppDelegate.h; sourceTree = ""; };
36 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = ShakeExample/AppDelegate.mm; sourceTree = ""; };
37 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ShakeExample/Images.xcassets; sourceTree = ""; };
38 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ShakeExample/Info.plist; sourceTree = ""; };
39 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ShakeExample/main.m; sourceTree = ""; };
40 | 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = ShakeExample/PrivacyInfo.xcprivacy; sourceTree = ""; };
41 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ShakeExample-ShakeExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ShakeExample-ShakeExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
42 | 3B4392A12AC88292D35C810B /* Pods-ShakeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShakeExample.debug.xcconfig"; path = "Target Support Files/Pods-ShakeExample/Pods-ShakeExample.debug.xcconfig"; sourceTree = ""; };
43 | 5709B34CF0A7D63546082F79 /* Pods-ShakeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShakeExample.release.xcconfig"; path = "Target Support Files/Pods-ShakeExample/Pods-ShakeExample.release.xcconfig"; sourceTree = ""; };
44 | 5B7EB9410499542E8C5724F5 /* Pods-ShakeExample-ShakeExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShakeExample-ShakeExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests.debug.xcconfig"; sourceTree = ""; };
45 | 5DCACB8F33CDC322A6C60F78 /* libPods-ShakeExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ShakeExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
46 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ShakeExample/LaunchScreen.storyboard; sourceTree = ""; };
47 | 89C6BE57DB24E9ADA2F236DE /* Pods-ShakeExample-ShakeExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShakeExample-ShakeExampleTests.release.xcconfig"; path = "Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests.release.xcconfig"; sourceTree = ""; };
48 | 9BC650B6C0FD1D493440A337 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ShakeExample/PrivacyInfo.xcprivacy; sourceTree = ""; };
49 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
50 | /* End PBXFileReference section */
51 |
52 | /* Begin PBXFrameworksBuildPhase section */
53 | 00E356EB1AD99517003FC87E /* Frameworks */ = {
54 | isa = PBXFrameworksBuildPhase;
55 | buildActionMask = 2147483647;
56 | files = (
57 | 7699B88040F8A987B510C191 /* libPods-ShakeExample-ShakeExampleTests.a in Frameworks */,
58 | );
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | 0C80B921A6F3F58F76C31292 /* libPods-ShakeExample.a in Frameworks */,
66 | );
67 | runOnlyForDeploymentPostprocessing = 0;
68 | };
69 | /* End PBXFrameworksBuildPhase section */
70 |
71 | /* Begin PBXGroup section */
72 | 00E356EF1AD99517003FC87E /* ShakeExampleTests */ = {
73 | isa = PBXGroup;
74 | children = (
75 | 00E356F21AD99517003FC87E /* ShakeExampleTests.m */,
76 | 00E356F01AD99517003FC87E /* Supporting Files */,
77 | );
78 | path = ShakeExampleTests;
79 | sourceTree = "";
80 | };
81 | 00E356F01AD99517003FC87E /* Supporting Files */ = {
82 | isa = PBXGroup;
83 | children = (
84 | 00E356F11AD99517003FC87E /* Info.plist */,
85 | );
86 | name = "Supporting Files";
87 | sourceTree = "";
88 | };
89 | 13B07FAE1A68108700A75B9A /* ShakeExample */ = {
90 | isa = PBXGroup;
91 | children = (
92 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
93 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
94 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
95 | 13B07FB61A68108700A75B9A /* Info.plist */,
96 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
97 | 13B07FB71A68108700A75B9A /* main.m */,
98 | 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
99 | 9BC650B6C0FD1D493440A337 /* PrivacyInfo.xcprivacy */,
100 | );
101 | name = ShakeExample;
102 | sourceTree = "";
103 | };
104 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
105 | isa = PBXGroup;
106 | children = (
107 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
108 | 5DCACB8F33CDC322A6C60F78 /* libPods-ShakeExample.a */,
109 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-ShakeExample-ShakeExampleTests.a */,
110 | );
111 | name = Frameworks;
112 | sourceTree = "";
113 | };
114 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
115 | isa = PBXGroup;
116 | children = (
117 | );
118 | name = Libraries;
119 | sourceTree = "";
120 | };
121 | 83CBB9F61A601CBA00E9B192 = {
122 | isa = PBXGroup;
123 | children = (
124 | 13B07FAE1A68108700A75B9A /* ShakeExample */,
125 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
126 | 00E356EF1AD99517003FC87E /* ShakeExampleTests */,
127 | 83CBBA001A601CBA00E9B192 /* Products */,
128 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
129 | BBD78D7AC51CEA395F1C20DB /* Pods */,
130 | );
131 | indentWidth = 2;
132 | sourceTree = "";
133 | tabWidth = 2;
134 | usesTabs = 0;
135 | };
136 | 83CBBA001A601CBA00E9B192 /* Products */ = {
137 | isa = PBXGroup;
138 | children = (
139 | 13B07F961A680F5B00A75B9A /* ShakeExample.app */,
140 | 00E356EE1AD99517003FC87E /* ShakeExampleTests.xctest */,
141 | );
142 | name = Products;
143 | sourceTree = "";
144 | };
145 | BBD78D7AC51CEA395F1C20DB /* Pods */ = {
146 | isa = PBXGroup;
147 | children = (
148 | 3B4392A12AC88292D35C810B /* Pods-ShakeExample.debug.xcconfig */,
149 | 5709B34CF0A7D63546082F79 /* Pods-ShakeExample.release.xcconfig */,
150 | 5B7EB9410499542E8C5724F5 /* Pods-ShakeExample-ShakeExampleTests.debug.xcconfig */,
151 | 89C6BE57DB24E9ADA2F236DE /* Pods-ShakeExample-ShakeExampleTests.release.xcconfig */,
152 | );
153 | path = Pods;
154 | sourceTree = "";
155 | };
156 | /* End PBXGroup section */
157 |
158 | /* Begin PBXNativeTarget section */
159 | 00E356ED1AD99517003FC87E /* ShakeExampleTests */ = {
160 | isa = PBXNativeTarget;
161 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ShakeExampleTests" */;
162 | buildPhases = (
163 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
164 | 00E356EA1AD99517003FC87E /* Sources */,
165 | 00E356EB1AD99517003FC87E /* Frameworks */,
166 | 00E356EC1AD99517003FC87E /* Resources */,
167 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
168 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
169 | );
170 | buildRules = (
171 | );
172 | dependencies = (
173 | 00E356F51AD99517003FC87E /* PBXTargetDependency */,
174 | );
175 | name = ShakeExampleTests;
176 | productName = ShakeExampleTests;
177 | productReference = 00E356EE1AD99517003FC87E /* ShakeExampleTests.xctest */;
178 | productType = "com.apple.product-type.bundle.unit-test";
179 | };
180 | 13B07F861A680F5B00A75B9A /* ShakeExample */ = {
181 | isa = PBXNativeTarget;
182 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ShakeExample" */;
183 | buildPhases = (
184 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
185 | 13B07F871A680F5B00A75B9A /* Sources */,
186 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
187 | 13B07F8E1A680F5B00A75B9A /* Resources */,
188 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
189 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
190 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
191 | );
192 | buildRules = (
193 | );
194 | dependencies = (
195 | );
196 | name = ShakeExample;
197 | productName = ShakeExample;
198 | productReference = 13B07F961A680F5B00A75B9A /* ShakeExample.app */;
199 | productType = "com.apple.product-type.application";
200 | };
201 | /* End PBXNativeTarget section */
202 |
203 | /* Begin PBXProject section */
204 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
205 | isa = PBXProject;
206 | attributes = {
207 | LastUpgradeCheck = 1210;
208 | TargetAttributes = {
209 | 00E356ED1AD99517003FC87E = {
210 | CreatedOnToolsVersion = 6.2;
211 | TestTargetID = 13B07F861A680F5B00A75B9A;
212 | };
213 | 13B07F861A680F5B00A75B9A = {
214 | LastSwiftMigration = 1120;
215 | };
216 | };
217 | };
218 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ShakeExample" */;
219 | compatibilityVersion = "Xcode 12.0";
220 | developmentRegion = en;
221 | hasScannedForEncodings = 0;
222 | knownRegions = (
223 | en,
224 | Base,
225 | );
226 | mainGroup = 83CBB9F61A601CBA00E9B192;
227 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
228 | projectDirPath = "";
229 | projectRoot = "";
230 | targets = (
231 | 13B07F861A680F5B00A75B9A /* ShakeExample */,
232 | 00E356ED1AD99517003FC87E /* ShakeExampleTests */,
233 | );
234 | };
235 | /* End PBXProject section */
236 |
237 | /* Begin PBXResourcesBuildPhase section */
238 | 00E356EC1AD99517003FC87E /* Resources */ = {
239 | isa = PBXResourcesBuildPhase;
240 | buildActionMask = 2147483647;
241 | files = (
242 | );
243 | runOnlyForDeploymentPostprocessing = 0;
244 | };
245 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
246 | isa = PBXResourcesBuildPhase;
247 | buildActionMask = 2147483647;
248 | files = (
249 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
250 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
251 | E756178DFFF69D45B587AA67 /* PrivacyInfo.xcprivacy in Resources */,
252 | );
253 | runOnlyForDeploymentPostprocessing = 0;
254 | };
255 | /* End PBXResourcesBuildPhase section */
256 |
257 | /* Begin PBXShellScriptBuildPhase section */
258 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
259 | isa = PBXShellScriptBuildPhase;
260 | buildActionMask = 2147483647;
261 | files = (
262 | );
263 | inputPaths = (
264 | "$(SRCROOT)/.xcode.env.local",
265 | "$(SRCROOT)/.xcode.env",
266 | );
267 | name = "Bundle React Native code and images";
268 | outputPaths = (
269 | );
270 | runOnlyForDeploymentPostprocessing = 0;
271 | shellPath = /bin/sh;
272 | shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
273 | };
274 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
275 | isa = PBXShellScriptBuildPhase;
276 | buildActionMask = 2147483647;
277 | files = (
278 | );
279 | inputFileListPaths = (
280 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
281 | );
282 | name = "[CP] Embed Pods Frameworks";
283 | outputFileListPaths = (
284 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
285 | );
286 | runOnlyForDeploymentPostprocessing = 0;
287 | shellPath = /bin/sh;
288 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-frameworks.sh\"\n";
289 | showEnvVarsInLog = 0;
290 | };
291 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
292 | isa = PBXShellScriptBuildPhase;
293 | buildActionMask = 2147483647;
294 | files = (
295 | );
296 | inputFileListPaths = (
297 | );
298 | inputPaths = (
299 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
300 | "${PODS_ROOT}/Manifest.lock",
301 | );
302 | name = "[CP] Check Pods Manifest.lock";
303 | outputFileListPaths = (
304 | );
305 | outputPaths = (
306 | "$(DERIVED_FILE_DIR)/Pods-ShakeExample-ShakeExampleTests-checkManifestLockResult.txt",
307 | );
308 | runOnlyForDeploymentPostprocessing = 0;
309 | shellPath = /bin/sh;
310 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
311 | showEnvVarsInLog = 0;
312 | };
313 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
314 | isa = PBXShellScriptBuildPhase;
315 | buildActionMask = 2147483647;
316 | files = (
317 | );
318 | inputFileListPaths = (
319 | );
320 | inputPaths = (
321 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
322 | "${PODS_ROOT}/Manifest.lock",
323 | );
324 | name = "[CP] Check Pods Manifest.lock";
325 | outputFileListPaths = (
326 | );
327 | outputPaths = (
328 | "$(DERIVED_FILE_DIR)/Pods-ShakeExample-checkManifestLockResult.txt",
329 | );
330 | runOnlyForDeploymentPostprocessing = 0;
331 | shellPath = /bin/sh;
332 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
333 | showEnvVarsInLog = 0;
334 | };
335 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
336 | isa = PBXShellScriptBuildPhase;
337 | buildActionMask = 2147483647;
338 | files = (
339 | );
340 | inputFileListPaths = (
341 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
342 | );
343 | name = "[CP] Embed Pods Frameworks";
344 | outputFileListPaths = (
345 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
346 | );
347 | runOnlyForDeploymentPostprocessing = 0;
348 | shellPath = /bin/sh;
349 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-frameworks.sh\"\n";
350 | showEnvVarsInLog = 0;
351 | };
352 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
353 | isa = PBXShellScriptBuildPhase;
354 | buildActionMask = 2147483647;
355 | files = (
356 | );
357 | inputFileListPaths = (
358 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-resources-${CONFIGURATION}-input-files.xcfilelist",
359 | );
360 | name = "[CP] Copy Pods Resources";
361 | outputFileListPaths = (
362 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-resources-${CONFIGURATION}-output-files.xcfilelist",
363 | );
364 | runOnlyForDeploymentPostprocessing = 0;
365 | shellPath = /bin/sh;
366 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShakeExample/Pods-ShakeExample-resources.sh\"\n";
367 | showEnvVarsInLog = 0;
368 | };
369 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
370 | isa = PBXShellScriptBuildPhase;
371 | buildActionMask = 2147483647;
372 | files = (
373 | );
374 | inputFileListPaths = (
375 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist",
376 | );
377 | name = "[CP] Copy Pods Resources";
378 | outputFileListPaths = (
379 | "${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist",
380 | );
381 | runOnlyForDeploymentPostprocessing = 0;
382 | shellPath = /bin/sh;
383 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShakeExample-ShakeExampleTests/Pods-ShakeExample-ShakeExampleTests-resources.sh\"\n";
384 | showEnvVarsInLog = 0;
385 | };
386 | /* End PBXShellScriptBuildPhase section */
387 |
388 | /* Begin PBXSourcesBuildPhase section */
389 | 00E356EA1AD99517003FC87E /* Sources */ = {
390 | isa = PBXSourcesBuildPhase;
391 | buildActionMask = 2147483647;
392 | files = (
393 | 00E356F31AD99517003FC87E /* ShakeExampleTests.m in Sources */,
394 | );
395 | runOnlyForDeploymentPostprocessing = 0;
396 | };
397 | 13B07F871A680F5B00A75B9A /* Sources */ = {
398 | isa = PBXSourcesBuildPhase;
399 | buildActionMask = 2147483647;
400 | files = (
401 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
402 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
403 | );
404 | runOnlyForDeploymentPostprocessing = 0;
405 | };
406 | /* End PBXSourcesBuildPhase section */
407 |
408 | /* Begin PBXTargetDependency section */
409 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
410 | isa = PBXTargetDependency;
411 | target = 13B07F861A680F5B00A75B9A /* ShakeExample */;
412 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
413 | };
414 | /* End PBXTargetDependency section */
415 |
416 | /* Begin XCBuildConfiguration section */
417 | 00E356F61AD99517003FC87E /* Debug */ = {
418 | isa = XCBuildConfiguration;
419 | baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-ShakeExample-ShakeExampleTests.debug.xcconfig */;
420 | buildSettings = {
421 | BUNDLE_LOADER = "$(TEST_HOST)";
422 | GCC_PREPROCESSOR_DEFINITIONS = (
423 | "DEBUG=1",
424 | "$(inherited)",
425 | );
426 | INFOPLIST_FILE = ShakeExampleTests/Info.plist;
427 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
428 | LD_RUNPATH_SEARCH_PATHS = (
429 | "$(inherited)",
430 | "@executable_path/Frameworks",
431 | "@loader_path/Frameworks",
432 | );
433 | OTHER_LDFLAGS = (
434 | "-ObjC",
435 | "-lc++",
436 | "$(inherited)",
437 | );
438 | PRODUCT_BUNDLE_IDENTIFIER = shake.example;
439 | PRODUCT_NAME = "$(TARGET_NAME)";
440 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ShakeExample.app/ShakeExample";
441 | };
442 | name = Debug;
443 | };
444 | 00E356F71AD99517003FC87E /* Release */ = {
445 | isa = XCBuildConfiguration;
446 | baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-ShakeExample-ShakeExampleTests.release.xcconfig */;
447 | buildSettings = {
448 | BUNDLE_LOADER = "$(TEST_HOST)";
449 | COPY_PHASE_STRIP = NO;
450 | INFOPLIST_FILE = ShakeExampleTests/Info.plist;
451 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
452 | LD_RUNPATH_SEARCH_PATHS = (
453 | "$(inherited)",
454 | "@executable_path/Frameworks",
455 | "@loader_path/Frameworks",
456 | );
457 | OTHER_LDFLAGS = (
458 | "-ObjC",
459 | "-lc++",
460 | "$(inherited)",
461 | );
462 | PRODUCT_BUNDLE_IDENTIFIER = shake.example;
463 | PRODUCT_NAME = "$(TARGET_NAME)";
464 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ShakeExample.app/ShakeExample";
465 | };
466 | name = Release;
467 | };
468 | 13B07F941A680F5B00A75B9A /* Debug */ = {
469 | isa = XCBuildConfiguration;
470 | baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-ShakeExample.debug.xcconfig */;
471 | buildSettings = {
472 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
473 | CLANG_ENABLE_MODULES = YES;
474 | CURRENT_PROJECT_VERSION = 1;
475 | ENABLE_BITCODE = NO;
476 | INFOPLIST_FILE = ShakeExample/Info.plist;
477 | LD_RUNPATH_SEARCH_PATHS = (
478 | "$(inherited)",
479 | "@executable_path/Frameworks",
480 | );
481 | MARKETING_VERSION = 1.0;
482 | OTHER_LDFLAGS = (
483 | "$(inherited)",
484 | "-ObjC",
485 | "-lc++",
486 | );
487 | PRODUCT_BUNDLE_IDENTIFIER = shake.example;
488 | PRODUCT_NAME = ShakeExample;
489 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
490 | SWIFT_VERSION = 5.0;
491 | VERSIONING_SYSTEM = "apple-generic";
492 | };
493 | name = Debug;
494 | };
495 | 13B07F951A680F5B00A75B9A /* Release */ = {
496 | isa = XCBuildConfiguration;
497 | baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-ShakeExample.release.xcconfig */;
498 | buildSettings = {
499 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
500 | CLANG_ENABLE_MODULES = YES;
501 | CURRENT_PROJECT_VERSION = 1;
502 | INFOPLIST_FILE = ShakeExample/Info.plist;
503 | LD_RUNPATH_SEARCH_PATHS = (
504 | "$(inherited)",
505 | "@executable_path/Frameworks",
506 | );
507 | MARKETING_VERSION = 1.0;
508 | OTHER_LDFLAGS = (
509 | "$(inherited)",
510 | "-ObjC",
511 | "-lc++",
512 | );
513 | PRODUCT_BUNDLE_IDENTIFIER = shake.example;
514 | PRODUCT_NAME = ShakeExample;
515 | SWIFT_VERSION = 5.0;
516 | VERSIONING_SYSTEM = "apple-generic";
517 | };
518 | name = Release;
519 | };
520 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
521 | isa = XCBuildConfiguration;
522 | buildSettings = {
523 | ALWAYS_SEARCH_USER_PATHS = NO;
524 | CC = "";
525 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
526 | CLANG_CXX_LANGUAGE_STANDARD = "c++20";
527 | CLANG_CXX_LIBRARY = "libc++";
528 | CLANG_ENABLE_MODULES = YES;
529 | CLANG_ENABLE_OBJC_ARC = YES;
530 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
531 | CLANG_WARN_BOOL_CONVERSION = YES;
532 | CLANG_WARN_COMMA = YES;
533 | CLANG_WARN_CONSTANT_CONVERSION = YES;
534 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
535 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
536 | CLANG_WARN_EMPTY_BODY = YES;
537 | CLANG_WARN_ENUM_CONVERSION = YES;
538 | CLANG_WARN_INFINITE_RECURSION = YES;
539 | CLANG_WARN_INT_CONVERSION = YES;
540 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
541 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
542 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
543 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
544 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
545 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
546 | CLANG_WARN_STRICT_PROTOTYPES = YES;
547 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
548 | CLANG_WARN_UNREACHABLE_CODE = YES;
549 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
550 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
551 | COPY_PHASE_STRIP = NO;
552 | CXX = "";
553 | ENABLE_STRICT_OBJC_MSGSEND = YES;
554 | ENABLE_TESTABILITY = YES;
555 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
556 | GCC_C_LANGUAGE_STANDARD = gnu99;
557 | GCC_DYNAMIC_NO_PIC = NO;
558 | GCC_NO_COMMON_BLOCKS = YES;
559 | GCC_OPTIMIZATION_LEVEL = 0;
560 | GCC_PREPROCESSOR_DEFINITIONS = (
561 | "DEBUG=1",
562 | "$(inherited)",
563 | );
564 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
565 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
566 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
567 | GCC_WARN_UNDECLARED_SELECTOR = YES;
568 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
569 | GCC_WARN_UNUSED_FUNCTION = YES;
570 | GCC_WARN_UNUSED_VARIABLE = YES;
571 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
572 | LD = "";
573 | LDPLUSPLUS = "";
574 | LD_RUNPATH_SEARCH_PATHS = (
575 | /usr/lib/swift,
576 | "$(inherited)",
577 | );
578 | LIBRARY_SEARCH_PATHS = (
579 | "\"$(SDKROOT)/usr/lib/swift\"",
580 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
581 | "\"$(inherited)\"",
582 | );
583 | MTL_ENABLE_DEBUG_INFO = YES;
584 | ONLY_ACTIVE_ARCH = YES;
585 | OTHER_CPLUSPLUSFLAGS = (
586 | "$(OTHER_CFLAGS)",
587 | "-DFOLLY_NO_CONFIG",
588 | "-DFOLLY_MOBILE=1",
589 | "-DFOLLY_USE_LIBCPP=1",
590 | "-DFOLLY_CFG_NO_COROUTINES=1",
591 | "-DFOLLY_HAVE_CLOCK_GETTIME=1",
592 | );
593 | OTHER_LDFLAGS = (
594 | "$(inherited)",
595 | " ",
596 | );
597 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
598 | SDKROOT = iphoneos;
599 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
600 | USE_HERMES = true;
601 | };
602 | name = Debug;
603 | };
604 | 83CBBA211A601CBA00E9B192 /* Release */ = {
605 | isa = XCBuildConfiguration;
606 | buildSettings = {
607 | ALWAYS_SEARCH_USER_PATHS = NO;
608 | CC = "";
609 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
610 | CLANG_CXX_LANGUAGE_STANDARD = "c++20";
611 | CLANG_CXX_LIBRARY = "libc++";
612 | CLANG_ENABLE_MODULES = YES;
613 | CLANG_ENABLE_OBJC_ARC = YES;
614 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
615 | CLANG_WARN_BOOL_CONVERSION = YES;
616 | CLANG_WARN_COMMA = YES;
617 | CLANG_WARN_CONSTANT_CONVERSION = YES;
618 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
619 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
620 | CLANG_WARN_EMPTY_BODY = YES;
621 | CLANG_WARN_ENUM_CONVERSION = YES;
622 | CLANG_WARN_INFINITE_RECURSION = YES;
623 | CLANG_WARN_INT_CONVERSION = YES;
624 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
625 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
626 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
627 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
628 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
629 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
630 | CLANG_WARN_STRICT_PROTOTYPES = YES;
631 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
632 | CLANG_WARN_UNREACHABLE_CODE = YES;
633 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
634 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
635 | COPY_PHASE_STRIP = YES;
636 | CXX = "";
637 | ENABLE_NS_ASSERTIONS = NO;
638 | ENABLE_STRICT_OBJC_MSGSEND = YES;
639 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
640 | GCC_C_LANGUAGE_STANDARD = gnu99;
641 | GCC_NO_COMMON_BLOCKS = YES;
642 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
643 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
644 | GCC_WARN_UNDECLARED_SELECTOR = YES;
645 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
646 | GCC_WARN_UNUSED_FUNCTION = YES;
647 | GCC_WARN_UNUSED_VARIABLE = YES;
648 | IPHONEOS_DEPLOYMENT_TARGET = 13.4;
649 | LD = "";
650 | LDPLUSPLUS = "";
651 | LD_RUNPATH_SEARCH_PATHS = (
652 | /usr/lib/swift,
653 | "$(inherited)",
654 | );
655 | LIBRARY_SEARCH_PATHS = (
656 | "\"$(SDKROOT)/usr/lib/swift\"",
657 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
658 | "\"$(inherited)\"",
659 | );
660 | MTL_ENABLE_DEBUG_INFO = NO;
661 | OTHER_CPLUSPLUSFLAGS = (
662 | "$(OTHER_CFLAGS)",
663 | "-DFOLLY_NO_CONFIG",
664 | "-DFOLLY_MOBILE=1",
665 | "-DFOLLY_USE_LIBCPP=1",
666 | "-DFOLLY_CFG_NO_COROUTINES=1",
667 | "-DFOLLY_HAVE_CLOCK_GETTIME=1",
668 | );
669 | OTHER_LDFLAGS = (
670 | "$(inherited)",
671 | " ",
672 | );
673 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
674 | SDKROOT = iphoneos;
675 | USE_HERMES = true;
676 | VALIDATE_PRODUCT = YES;
677 | };
678 | name = Release;
679 | };
680 | /* End XCBuildConfiguration section */
681 |
682 | /* Begin XCConfigurationList section */
683 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ShakeExampleTests" */ = {
684 | isa = XCConfigurationList;
685 | buildConfigurations = (
686 | 00E356F61AD99517003FC87E /* Debug */,
687 | 00E356F71AD99517003FC87E /* Release */,
688 | );
689 | defaultConfigurationIsVisible = 0;
690 | defaultConfigurationName = Release;
691 | };
692 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ShakeExample" */ = {
693 | isa = XCConfigurationList;
694 | buildConfigurations = (
695 | 13B07F941A680F5B00A75B9A /* Debug */,
696 | 13B07F951A680F5B00A75B9A /* Release */,
697 | );
698 | defaultConfigurationIsVisible = 0;
699 | defaultConfigurationName = Release;
700 | };
701 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ShakeExample" */ = {
702 | isa = XCConfigurationList;
703 | buildConfigurations = (
704 | 83CBBA201A601CBA00E9B192 /* Debug */,
705 | 83CBBA211A601CBA00E9B192 /* Release */,
706 | );
707 | defaultConfigurationIsVisible = 0;
708 | defaultConfigurationName = Release;
709 | };
710 | /* End XCConfigurationList section */
711 | };
712 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
713 | }
714 |
--------------------------------------------------------------------------------
/example/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - boost (1.84.0)
3 | - DoubleConversion (1.1.6)
4 | - fast_float (6.1.4)
5 | - FBLazyVector (0.79.2)
6 | - fmt (11.0.2)
7 | - glog (0.3.5)
8 | - hermes-engine (0.79.2):
9 | - hermes-engine/Pre-built (= 0.79.2)
10 | - hermes-engine/Pre-built (0.79.2)
11 | - RCT-Folly (2024.11.18.00):
12 | - boost
13 | - DoubleConversion
14 | - fast_float (= 6.1.4)
15 | - fmt (= 11.0.2)
16 | - glog
17 | - RCT-Folly/Default (= 2024.11.18.00)
18 | - RCT-Folly/Default (2024.11.18.00):
19 | - boost
20 | - DoubleConversion
21 | - fast_float (= 6.1.4)
22 | - fmt (= 11.0.2)
23 | - glog
24 | - RCT-Folly/Fabric (2024.11.18.00):
25 | - boost
26 | - DoubleConversion
27 | - fast_float (= 6.1.4)
28 | - fmt (= 11.0.2)
29 | - glog
30 | - RCTDeprecation (0.79.2)
31 | - RCTRequired (0.79.2)
32 | - RCTTypeSafety (0.79.2):
33 | - FBLazyVector (= 0.79.2)
34 | - RCTRequired (= 0.79.2)
35 | - React-Core (= 0.79.2)
36 | - React (0.79.2):
37 | - React-Core (= 0.79.2)
38 | - React-Core/DevSupport (= 0.79.2)
39 | - React-Core/RCTWebSocket (= 0.79.2)
40 | - React-RCTActionSheet (= 0.79.2)
41 | - React-RCTAnimation (= 0.79.2)
42 | - React-RCTBlob (= 0.79.2)
43 | - React-RCTImage (= 0.79.2)
44 | - React-RCTLinking (= 0.79.2)
45 | - React-RCTNetwork (= 0.79.2)
46 | - React-RCTSettings (= 0.79.2)
47 | - React-RCTText (= 0.79.2)
48 | - React-RCTVibration (= 0.79.2)
49 | - React-callinvoker (0.79.2)
50 | - React-Core (0.79.2):
51 | - glog
52 | - hermes-engine
53 | - RCT-Folly (= 2024.11.18.00)
54 | - RCTDeprecation
55 | - React-Core/Default (= 0.79.2)
56 | - React-cxxreact
57 | - React-featureflags
58 | - React-hermes
59 | - React-jsi
60 | - React-jsiexecutor
61 | - React-jsinspector
62 | - React-jsitooling
63 | - React-perflogger
64 | - React-runtimescheduler
65 | - React-utils
66 | - SocketRocket (= 0.7.1)
67 | - Yoga
68 | - React-Core/CoreModulesHeaders (0.79.2):
69 | - glog
70 | - hermes-engine
71 | - RCT-Folly (= 2024.11.18.00)
72 | - RCTDeprecation
73 | - React-Core/Default
74 | - React-cxxreact
75 | - React-featureflags
76 | - React-hermes
77 | - React-jsi
78 | - React-jsiexecutor
79 | - React-jsinspector
80 | - React-jsitooling
81 | - React-perflogger
82 | - React-runtimescheduler
83 | - React-utils
84 | - SocketRocket (= 0.7.1)
85 | - Yoga
86 | - React-Core/Default (0.79.2):
87 | - glog
88 | - hermes-engine
89 | - RCT-Folly (= 2024.11.18.00)
90 | - RCTDeprecation
91 | - React-cxxreact
92 | - React-featureflags
93 | - React-hermes
94 | - React-jsi
95 | - React-jsiexecutor
96 | - React-jsinspector
97 | - React-jsitooling
98 | - React-perflogger
99 | - React-runtimescheduler
100 | - React-utils
101 | - SocketRocket (= 0.7.1)
102 | - Yoga
103 | - React-Core/DevSupport (0.79.2):
104 | - glog
105 | - hermes-engine
106 | - RCT-Folly (= 2024.11.18.00)
107 | - RCTDeprecation
108 | - React-Core/Default (= 0.79.2)
109 | - React-Core/RCTWebSocket (= 0.79.2)
110 | - React-cxxreact
111 | - React-featureflags
112 | - React-hermes
113 | - React-jsi
114 | - React-jsiexecutor
115 | - React-jsinspector
116 | - React-jsitooling
117 | - React-perflogger
118 | - React-runtimescheduler
119 | - React-utils
120 | - SocketRocket (= 0.7.1)
121 | - Yoga
122 | - React-Core/RCTActionSheetHeaders (0.79.2):
123 | - glog
124 | - hermes-engine
125 | - RCT-Folly (= 2024.11.18.00)
126 | - RCTDeprecation
127 | - React-Core/Default
128 | - React-cxxreact
129 | - React-featureflags
130 | - React-hermes
131 | - React-jsi
132 | - React-jsiexecutor
133 | - React-jsinspector
134 | - React-jsitooling
135 | - React-perflogger
136 | - React-runtimescheduler
137 | - React-utils
138 | - SocketRocket (= 0.7.1)
139 | - Yoga
140 | - React-Core/RCTAnimationHeaders (0.79.2):
141 | - glog
142 | - hermes-engine
143 | - RCT-Folly (= 2024.11.18.00)
144 | - RCTDeprecation
145 | - React-Core/Default
146 | - React-cxxreact
147 | - React-featureflags
148 | - React-hermes
149 | - React-jsi
150 | - React-jsiexecutor
151 | - React-jsinspector
152 | - React-jsitooling
153 | - React-perflogger
154 | - React-runtimescheduler
155 | - React-utils
156 | - SocketRocket (= 0.7.1)
157 | - Yoga
158 | - React-Core/RCTBlobHeaders (0.79.2):
159 | - glog
160 | - hermes-engine
161 | - RCT-Folly (= 2024.11.18.00)
162 | - RCTDeprecation
163 | - React-Core/Default
164 | - React-cxxreact
165 | - React-featureflags
166 | - React-hermes
167 | - React-jsi
168 | - React-jsiexecutor
169 | - React-jsinspector
170 | - React-jsitooling
171 | - React-perflogger
172 | - React-runtimescheduler
173 | - React-utils
174 | - SocketRocket (= 0.7.1)
175 | - Yoga
176 | - React-Core/RCTImageHeaders (0.79.2):
177 | - glog
178 | - hermes-engine
179 | - RCT-Folly (= 2024.11.18.00)
180 | - RCTDeprecation
181 | - React-Core/Default
182 | - React-cxxreact
183 | - React-featureflags
184 | - React-hermes
185 | - React-jsi
186 | - React-jsiexecutor
187 | - React-jsinspector
188 | - React-jsitooling
189 | - React-perflogger
190 | - React-runtimescheduler
191 | - React-utils
192 | - SocketRocket (= 0.7.1)
193 | - Yoga
194 | - React-Core/RCTLinkingHeaders (0.79.2):
195 | - glog
196 | - hermes-engine
197 | - RCT-Folly (= 2024.11.18.00)
198 | - RCTDeprecation
199 | - React-Core/Default
200 | - React-cxxreact
201 | - React-featureflags
202 | - React-hermes
203 | - React-jsi
204 | - React-jsiexecutor
205 | - React-jsinspector
206 | - React-jsitooling
207 | - React-perflogger
208 | - React-runtimescheduler
209 | - React-utils
210 | - SocketRocket (= 0.7.1)
211 | - Yoga
212 | - React-Core/RCTNetworkHeaders (0.79.2):
213 | - glog
214 | - hermes-engine
215 | - RCT-Folly (= 2024.11.18.00)
216 | - RCTDeprecation
217 | - React-Core/Default
218 | - React-cxxreact
219 | - React-featureflags
220 | - React-hermes
221 | - React-jsi
222 | - React-jsiexecutor
223 | - React-jsinspector
224 | - React-jsitooling
225 | - React-perflogger
226 | - React-runtimescheduler
227 | - React-utils
228 | - SocketRocket (= 0.7.1)
229 | - Yoga
230 | - React-Core/RCTSettingsHeaders (0.79.2):
231 | - glog
232 | - hermes-engine
233 | - RCT-Folly (= 2024.11.18.00)
234 | - RCTDeprecation
235 | - React-Core/Default
236 | - React-cxxreact
237 | - React-featureflags
238 | - React-hermes
239 | - React-jsi
240 | - React-jsiexecutor
241 | - React-jsinspector
242 | - React-jsitooling
243 | - React-perflogger
244 | - React-runtimescheduler
245 | - React-utils
246 | - SocketRocket (= 0.7.1)
247 | - Yoga
248 | - React-Core/RCTTextHeaders (0.79.2):
249 | - glog
250 | - hermes-engine
251 | - RCT-Folly (= 2024.11.18.00)
252 | - RCTDeprecation
253 | - React-Core/Default
254 | - React-cxxreact
255 | - React-featureflags
256 | - React-hermes
257 | - React-jsi
258 | - React-jsiexecutor
259 | - React-jsinspector
260 | - React-jsitooling
261 | - React-perflogger
262 | - React-runtimescheduler
263 | - React-utils
264 | - SocketRocket (= 0.7.1)
265 | - Yoga
266 | - React-Core/RCTVibrationHeaders (0.79.2):
267 | - glog
268 | - hermes-engine
269 | - RCT-Folly (= 2024.11.18.00)
270 | - RCTDeprecation
271 | - React-Core/Default
272 | - React-cxxreact
273 | - React-featureflags
274 | - React-hermes
275 | - React-jsi
276 | - React-jsiexecutor
277 | - React-jsinspector
278 | - React-jsitooling
279 | - React-perflogger
280 | - React-runtimescheduler
281 | - React-utils
282 | - SocketRocket (= 0.7.1)
283 | - Yoga
284 | - React-Core/RCTWebSocket (0.79.2):
285 | - glog
286 | - hermes-engine
287 | - RCT-Folly (= 2024.11.18.00)
288 | - RCTDeprecation
289 | - React-Core/Default (= 0.79.2)
290 | - React-cxxreact
291 | - React-featureflags
292 | - React-hermes
293 | - React-jsi
294 | - React-jsiexecutor
295 | - React-jsinspector
296 | - React-jsitooling
297 | - React-perflogger
298 | - React-runtimescheduler
299 | - React-utils
300 | - SocketRocket (= 0.7.1)
301 | - Yoga
302 | - React-CoreModules (0.79.2):
303 | - DoubleConversion
304 | - fast_float (= 6.1.4)
305 | - fmt (= 11.0.2)
306 | - RCT-Folly (= 2024.11.18.00)
307 | - RCTTypeSafety (= 0.79.2)
308 | - React-Core/CoreModulesHeaders (= 0.79.2)
309 | - React-jsi (= 0.79.2)
310 | - React-jsinspector
311 | - React-jsinspectortracing
312 | - React-NativeModulesApple
313 | - React-RCTBlob
314 | - React-RCTFBReactNativeSpec
315 | - React-RCTImage (= 0.79.2)
316 | - ReactCommon
317 | - SocketRocket (= 0.7.1)
318 | - React-cxxreact (0.79.2):
319 | - boost
320 | - DoubleConversion
321 | - fast_float (= 6.1.4)
322 | - fmt (= 11.0.2)
323 | - glog
324 | - hermes-engine
325 | - RCT-Folly (= 2024.11.18.00)
326 | - React-callinvoker (= 0.79.2)
327 | - React-debug (= 0.79.2)
328 | - React-jsi (= 0.79.2)
329 | - React-jsinspector
330 | - React-jsinspectortracing
331 | - React-logger (= 0.79.2)
332 | - React-perflogger (= 0.79.2)
333 | - React-runtimeexecutor (= 0.79.2)
334 | - React-timing (= 0.79.2)
335 | - React-debug (0.79.2)
336 | - React-defaultsnativemodule (0.79.2):
337 | - hermes-engine
338 | - RCT-Folly
339 | - React-domnativemodule
340 | - React-featureflagsnativemodule
341 | - React-hermes
342 | - React-idlecallbacksnativemodule
343 | - React-jsi
344 | - React-jsiexecutor
345 | - React-microtasksnativemodule
346 | - React-RCTFBReactNativeSpec
347 | - React-domnativemodule (0.79.2):
348 | - hermes-engine
349 | - RCT-Folly
350 | - React-Fabric
351 | - React-FabricComponents
352 | - React-graphics
353 | - React-hermes
354 | - React-jsi
355 | - React-jsiexecutor
356 | - React-RCTFBReactNativeSpec
357 | - ReactCommon/turbomodule/core
358 | - Yoga
359 | - React-Fabric (0.79.2):
360 | - DoubleConversion
361 | - fast_float (= 6.1.4)
362 | - fmt (= 11.0.2)
363 | - glog
364 | - hermes-engine
365 | - RCT-Folly/Fabric (= 2024.11.18.00)
366 | - RCTRequired
367 | - RCTTypeSafety
368 | - React-Core
369 | - React-cxxreact
370 | - React-debug
371 | - React-Fabric/animations (= 0.79.2)
372 | - React-Fabric/attributedstring (= 0.79.2)
373 | - React-Fabric/componentregistry (= 0.79.2)
374 | - React-Fabric/componentregistrynative (= 0.79.2)
375 | - React-Fabric/components (= 0.79.2)
376 | - React-Fabric/consistency (= 0.79.2)
377 | - React-Fabric/core (= 0.79.2)
378 | - React-Fabric/dom (= 0.79.2)
379 | - React-Fabric/imagemanager (= 0.79.2)
380 | - React-Fabric/leakchecker (= 0.79.2)
381 | - React-Fabric/mounting (= 0.79.2)
382 | - React-Fabric/observers (= 0.79.2)
383 | - React-Fabric/scheduler (= 0.79.2)
384 | - React-Fabric/telemetry (= 0.79.2)
385 | - React-Fabric/templateprocessor (= 0.79.2)
386 | - React-Fabric/uimanager (= 0.79.2)
387 | - React-featureflags
388 | - React-graphics
389 | - React-hermes
390 | - React-jsi
391 | - React-jsiexecutor
392 | - React-logger
393 | - React-rendererdebug
394 | - React-runtimescheduler
395 | - React-utils
396 | - ReactCommon/turbomodule/core
397 | - React-Fabric/animations (0.79.2):
398 | - DoubleConversion
399 | - fast_float (= 6.1.4)
400 | - fmt (= 11.0.2)
401 | - glog
402 | - hermes-engine
403 | - RCT-Folly/Fabric (= 2024.11.18.00)
404 | - RCTRequired
405 | - RCTTypeSafety
406 | - React-Core
407 | - React-cxxreact
408 | - React-debug
409 | - React-featureflags
410 | - React-graphics
411 | - React-hermes
412 | - React-jsi
413 | - React-jsiexecutor
414 | - React-logger
415 | - React-rendererdebug
416 | - React-runtimescheduler
417 | - React-utils
418 | - ReactCommon/turbomodule/core
419 | - React-Fabric/attributedstring (0.79.2):
420 | - DoubleConversion
421 | - fast_float (= 6.1.4)
422 | - fmt (= 11.0.2)
423 | - glog
424 | - hermes-engine
425 | - RCT-Folly/Fabric (= 2024.11.18.00)
426 | - RCTRequired
427 | - RCTTypeSafety
428 | - React-Core
429 | - React-cxxreact
430 | - React-debug
431 | - React-featureflags
432 | - React-graphics
433 | - React-hermes
434 | - React-jsi
435 | - React-jsiexecutor
436 | - React-logger
437 | - React-rendererdebug
438 | - React-runtimescheduler
439 | - React-utils
440 | - ReactCommon/turbomodule/core
441 | - React-Fabric/componentregistry (0.79.2):
442 | - DoubleConversion
443 | - fast_float (= 6.1.4)
444 | - fmt (= 11.0.2)
445 | - glog
446 | - hermes-engine
447 | - RCT-Folly/Fabric (= 2024.11.18.00)
448 | - RCTRequired
449 | - RCTTypeSafety
450 | - React-Core
451 | - React-cxxreact
452 | - React-debug
453 | - React-featureflags
454 | - React-graphics
455 | - React-hermes
456 | - React-jsi
457 | - React-jsiexecutor
458 | - React-logger
459 | - React-rendererdebug
460 | - React-runtimescheduler
461 | - React-utils
462 | - ReactCommon/turbomodule/core
463 | - React-Fabric/componentregistrynative (0.79.2):
464 | - DoubleConversion
465 | - fast_float (= 6.1.4)
466 | - fmt (= 11.0.2)
467 | - glog
468 | - hermes-engine
469 | - RCT-Folly/Fabric (= 2024.11.18.00)
470 | - RCTRequired
471 | - RCTTypeSafety
472 | - React-Core
473 | - React-cxxreact
474 | - React-debug
475 | - React-featureflags
476 | - React-graphics
477 | - React-hermes
478 | - React-jsi
479 | - React-jsiexecutor
480 | - React-logger
481 | - React-rendererdebug
482 | - React-runtimescheduler
483 | - React-utils
484 | - ReactCommon/turbomodule/core
485 | - React-Fabric/components (0.79.2):
486 | - DoubleConversion
487 | - fast_float (= 6.1.4)
488 | - fmt (= 11.0.2)
489 | - glog
490 | - hermes-engine
491 | - RCT-Folly/Fabric (= 2024.11.18.00)
492 | - RCTRequired
493 | - RCTTypeSafety
494 | - React-Core
495 | - React-cxxreact
496 | - React-debug
497 | - React-Fabric/components/legacyviewmanagerinterop (= 0.79.2)
498 | - React-Fabric/components/root (= 0.79.2)
499 | - React-Fabric/components/scrollview (= 0.79.2)
500 | - React-Fabric/components/view (= 0.79.2)
501 | - React-featureflags
502 | - React-graphics
503 | - React-hermes
504 | - React-jsi
505 | - React-jsiexecutor
506 | - React-logger
507 | - React-rendererdebug
508 | - React-runtimescheduler
509 | - React-utils
510 | - ReactCommon/turbomodule/core
511 | - React-Fabric/components/legacyviewmanagerinterop (0.79.2):
512 | - DoubleConversion
513 | - fast_float (= 6.1.4)
514 | - fmt (= 11.0.2)
515 | - glog
516 | - hermes-engine
517 | - RCT-Folly/Fabric (= 2024.11.18.00)
518 | - RCTRequired
519 | - RCTTypeSafety
520 | - React-Core
521 | - React-cxxreact
522 | - React-debug
523 | - React-featureflags
524 | - React-graphics
525 | - React-hermes
526 | - React-jsi
527 | - React-jsiexecutor
528 | - React-logger
529 | - React-rendererdebug
530 | - React-runtimescheduler
531 | - React-utils
532 | - ReactCommon/turbomodule/core
533 | - React-Fabric/components/root (0.79.2):
534 | - DoubleConversion
535 | - fast_float (= 6.1.4)
536 | - fmt (= 11.0.2)
537 | - glog
538 | - hermes-engine
539 | - RCT-Folly/Fabric (= 2024.11.18.00)
540 | - RCTRequired
541 | - RCTTypeSafety
542 | - React-Core
543 | - React-cxxreact
544 | - React-debug
545 | - React-featureflags
546 | - React-graphics
547 | - React-hermes
548 | - React-jsi
549 | - React-jsiexecutor
550 | - React-logger
551 | - React-rendererdebug
552 | - React-runtimescheduler
553 | - React-utils
554 | - ReactCommon/turbomodule/core
555 | - React-Fabric/components/scrollview (0.79.2):
556 | - DoubleConversion
557 | - fast_float (= 6.1.4)
558 | - fmt (= 11.0.2)
559 | - glog
560 | - hermes-engine
561 | - RCT-Folly/Fabric (= 2024.11.18.00)
562 | - RCTRequired
563 | - RCTTypeSafety
564 | - React-Core
565 | - React-cxxreact
566 | - React-debug
567 | - React-featureflags
568 | - React-graphics
569 | - React-hermes
570 | - React-jsi
571 | - React-jsiexecutor
572 | - React-logger
573 | - React-rendererdebug
574 | - React-runtimescheduler
575 | - React-utils
576 | - ReactCommon/turbomodule/core
577 | - React-Fabric/components/view (0.79.2):
578 | - DoubleConversion
579 | - fast_float (= 6.1.4)
580 | - fmt (= 11.0.2)
581 | - glog
582 | - hermes-engine
583 | - RCT-Folly/Fabric (= 2024.11.18.00)
584 | - RCTRequired
585 | - RCTTypeSafety
586 | - React-Core
587 | - React-cxxreact
588 | - React-debug
589 | - React-featureflags
590 | - React-graphics
591 | - React-hermes
592 | - React-jsi
593 | - React-jsiexecutor
594 | - React-logger
595 | - React-renderercss
596 | - React-rendererdebug
597 | - React-runtimescheduler
598 | - React-utils
599 | - ReactCommon/turbomodule/core
600 | - Yoga
601 | - React-Fabric/consistency (0.79.2):
602 | - DoubleConversion
603 | - fast_float (= 6.1.4)
604 | - fmt (= 11.0.2)
605 | - glog
606 | - hermes-engine
607 | - RCT-Folly/Fabric (= 2024.11.18.00)
608 | - RCTRequired
609 | - RCTTypeSafety
610 | - React-Core
611 | - React-cxxreact
612 | - React-debug
613 | - React-featureflags
614 | - React-graphics
615 | - React-hermes
616 | - React-jsi
617 | - React-jsiexecutor
618 | - React-logger
619 | - React-rendererdebug
620 | - React-runtimescheduler
621 | - React-utils
622 | - ReactCommon/turbomodule/core
623 | - React-Fabric/core (0.79.2):
624 | - DoubleConversion
625 | - fast_float (= 6.1.4)
626 | - fmt (= 11.0.2)
627 | - glog
628 | - hermes-engine
629 | - RCT-Folly/Fabric (= 2024.11.18.00)
630 | - RCTRequired
631 | - RCTTypeSafety
632 | - React-Core
633 | - React-cxxreact
634 | - React-debug
635 | - React-featureflags
636 | - React-graphics
637 | - React-hermes
638 | - React-jsi
639 | - React-jsiexecutor
640 | - React-logger
641 | - React-rendererdebug
642 | - React-runtimescheduler
643 | - React-utils
644 | - ReactCommon/turbomodule/core
645 | - React-Fabric/dom (0.79.2):
646 | - DoubleConversion
647 | - fast_float (= 6.1.4)
648 | - fmt (= 11.0.2)
649 | - glog
650 | - hermes-engine
651 | - RCT-Folly/Fabric (= 2024.11.18.00)
652 | - RCTRequired
653 | - RCTTypeSafety
654 | - React-Core
655 | - React-cxxreact
656 | - React-debug
657 | - React-featureflags
658 | - React-graphics
659 | - React-hermes
660 | - React-jsi
661 | - React-jsiexecutor
662 | - React-logger
663 | - React-rendererdebug
664 | - React-runtimescheduler
665 | - React-utils
666 | - ReactCommon/turbomodule/core
667 | - React-Fabric/imagemanager (0.79.2):
668 | - DoubleConversion
669 | - fast_float (= 6.1.4)
670 | - fmt (= 11.0.2)
671 | - glog
672 | - hermes-engine
673 | - RCT-Folly/Fabric (= 2024.11.18.00)
674 | - RCTRequired
675 | - RCTTypeSafety
676 | - React-Core
677 | - React-cxxreact
678 | - React-debug
679 | - React-featureflags
680 | - React-graphics
681 | - React-hermes
682 | - React-jsi
683 | - React-jsiexecutor
684 | - React-logger
685 | - React-rendererdebug
686 | - React-runtimescheduler
687 | - React-utils
688 | - ReactCommon/turbomodule/core
689 | - React-Fabric/leakchecker (0.79.2):
690 | - DoubleConversion
691 | - fast_float (= 6.1.4)
692 | - fmt (= 11.0.2)
693 | - glog
694 | - hermes-engine
695 | - RCT-Folly/Fabric (= 2024.11.18.00)
696 | - RCTRequired
697 | - RCTTypeSafety
698 | - React-Core
699 | - React-cxxreact
700 | - React-debug
701 | - React-featureflags
702 | - React-graphics
703 | - React-hermes
704 | - React-jsi
705 | - React-jsiexecutor
706 | - React-logger
707 | - React-rendererdebug
708 | - React-runtimescheduler
709 | - React-utils
710 | - ReactCommon/turbomodule/core
711 | - React-Fabric/mounting (0.79.2):
712 | - DoubleConversion
713 | - fast_float (= 6.1.4)
714 | - fmt (= 11.0.2)
715 | - glog
716 | - hermes-engine
717 | - RCT-Folly/Fabric (= 2024.11.18.00)
718 | - RCTRequired
719 | - RCTTypeSafety
720 | - React-Core
721 | - React-cxxreact
722 | - React-debug
723 | - React-featureflags
724 | - React-graphics
725 | - React-hermes
726 | - React-jsi
727 | - React-jsiexecutor
728 | - React-logger
729 | - React-rendererdebug
730 | - React-runtimescheduler
731 | - React-utils
732 | - ReactCommon/turbomodule/core
733 | - React-Fabric/observers (0.79.2):
734 | - DoubleConversion
735 | - fast_float (= 6.1.4)
736 | - fmt (= 11.0.2)
737 | - glog
738 | - hermes-engine
739 | - RCT-Folly/Fabric (= 2024.11.18.00)
740 | - RCTRequired
741 | - RCTTypeSafety
742 | - React-Core
743 | - React-cxxreact
744 | - React-debug
745 | - React-Fabric/observers/events (= 0.79.2)
746 | - React-featureflags
747 | - React-graphics
748 | - React-hermes
749 | - React-jsi
750 | - React-jsiexecutor
751 | - React-logger
752 | - React-rendererdebug
753 | - React-runtimescheduler
754 | - React-utils
755 | - ReactCommon/turbomodule/core
756 | - React-Fabric/observers/events (0.79.2):
757 | - DoubleConversion
758 | - fast_float (= 6.1.4)
759 | - fmt (= 11.0.2)
760 | - glog
761 | - hermes-engine
762 | - RCT-Folly/Fabric (= 2024.11.18.00)
763 | - RCTRequired
764 | - RCTTypeSafety
765 | - React-Core
766 | - React-cxxreact
767 | - React-debug
768 | - React-featureflags
769 | - React-graphics
770 | - React-hermes
771 | - React-jsi
772 | - React-jsiexecutor
773 | - React-logger
774 | - React-rendererdebug
775 | - React-runtimescheduler
776 | - React-utils
777 | - ReactCommon/turbomodule/core
778 | - React-Fabric/scheduler (0.79.2):
779 | - DoubleConversion
780 | - fast_float (= 6.1.4)
781 | - fmt (= 11.0.2)
782 | - glog
783 | - hermes-engine
784 | - RCT-Folly/Fabric (= 2024.11.18.00)
785 | - RCTRequired
786 | - RCTTypeSafety
787 | - React-Core
788 | - React-cxxreact
789 | - React-debug
790 | - React-Fabric/observers/events
791 | - React-featureflags
792 | - React-graphics
793 | - React-hermes
794 | - React-jsi
795 | - React-jsiexecutor
796 | - React-logger
797 | - React-performancetimeline
798 | - React-rendererdebug
799 | - React-runtimescheduler
800 | - React-utils
801 | - ReactCommon/turbomodule/core
802 | - React-Fabric/telemetry (0.79.2):
803 | - DoubleConversion
804 | - fast_float (= 6.1.4)
805 | - fmt (= 11.0.2)
806 | - glog
807 | - hermes-engine
808 | - RCT-Folly/Fabric (= 2024.11.18.00)
809 | - RCTRequired
810 | - RCTTypeSafety
811 | - React-Core
812 | - React-cxxreact
813 | - React-debug
814 | - React-featureflags
815 | - React-graphics
816 | - React-hermes
817 | - React-jsi
818 | - React-jsiexecutor
819 | - React-logger
820 | - React-rendererdebug
821 | - React-runtimescheduler
822 | - React-utils
823 | - ReactCommon/turbomodule/core
824 | - React-Fabric/templateprocessor (0.79.2):
825 | - DoubleConversion
826 | - fast_float (= 6.1.4)
827 | - fmt (= 11.0.2)
828 | - glog
829 | - hermes-engine
830 | - RCT-Folly/Fabric (= 2024.11.18.00)
831 | - RCTRequired
832 | - RCTTypeSafety
833 | - React-Core
834 | - React-cxxreact
835 | - React-debug
836 | - React-featureflags
837 | - React-graphics
838 | - React-hermes
839 | - React-jsi
840 | - React-jsiexecutor
841 | - React-logger
842 | - React-rendererdebug
843 | - React-runtimescheduler
844 | - React-utils
845 | - ReactCommon/turbomodule/core
846 | - React-Fabric/uimanager (0.79.2):
847 | - DoubleConversion
848 | - fast_float (= 6.1.4)
849 | - fmt (= 11.0.2)
850 | - glog
851 | - hermes-engine
852 | - RCT-Folly/Fabric (= 2024.11.18.00)
853 | - RCTRequired
854 | - RCTTypeSafety
855 | - React-Core
856 | - React-cxxreact
857 | - React-debug
858 | - React-Fabric/uimanager/consistency (= 0.79.2)
859 | - React-featureflags
860 | - React-graphics
861 | - React-hermes
862 | - React-jsi
863 | - React-jsiexecutor
864 | - React-logger
865 | - React-rendererconsistency
866 | - React-rendererdebug
867 | - React-runtimescheduler
868 | - React-utils
869 | - ReactCommon/turbomodule/core
870 | - React-Fabric/uimanager/consistency (0.79.2):
871 | - DoubleConversion
872 | - fast_float (= 6.1.4)
873 | - fmt (= 11.0.2)
874 | - glog
875 | - hermes-engine
876 | - RCT-Folly/Fabric (= 2024.11.18.00)
877 | - RCTRequired
878 | - RCTTypeSafety
879 | - React-Core
880 | - React-cxxreact
881 | - React-debug
882 | - React-featureflags
883 | - React-graphics
884 | - React-hermes
885 | - React-jsi
886 | - React-jsiexecutor
887 | - React-logger
888 | - React-rendererconsistency
889 | - React-rendererdebug
890 | - React-runtimescheduler
891 | - React-utils
892 | - ReactCommon/turbomodule/core
893 | - React-FabricComponents (0.79.2):
894 | - DoubleConversion
895 | - fast_float (= 6.1.4)
896 | - fmt (= 11.0.2)
897 | - glog
898 | - hermes-engine
899 | - RCT-Folly/Fabric (= 2024.11.18.00)
900 | - RCTRequired
901 | - RCTTypeSafety
902 | - React-Core
903 | - React-cxxreact
904 | - React-debug
905 | - React-Fabric
906 | - React-FabricComponents/components (= 0.79.2)
907 | - React-FabricComponents/textlayoutmanager (= 0.79.2)
908 | - React-featureflags
909 | - React-graphics
910 | - React-hermes
911 | - React-jsi
912 | - React-jsiexecutor
913 | - React-logger
914 | - React-rendererdebug
915 | - React-runtimescheduler
916 | - React-utils
917 | - ReactCommon/turbomodule/core
918 | - Yoga
919 | - React-FabricComponents/components (0.79.2):
920 | - DoubleConversion
921 | - fast_float (= 6.1.4)
922 | - fmt (= 11.0.2)
923 | - glog
924 | - hermes-engine
925 | - RCT-Folly/Fabric (= 2024.11.18.00)
926 | - RCTRequired
927 | - RCTTypeSafety
928 | - React-Core
929 | - React-cxxreact
930 | - React-debug
931 | - React-Fabric
932 | - React-FabricComponents/components/inputaccessory (= 0.79.2)
933 | - React-FabricComponents/components/iostextinput (= 0.79.2)
934 | - React-FabricComponents/components/modal (= 0.79.2)
935 | - React-FabricComponents/components/rncore (= 0.79.2)
936 | - React-FabricComponents/components/safeareaview (= 0.79.2)
937 | - React-FabricComponents/components/scrollview (= 0.79.2)
938 | - React-FabricComponents/components/text (= 0.79.2)
939 | - React-FabricComponents/components/textinput (= 0.79.2)
940 | - React-FabricComponents/components/unimplementedview (= 0.79.2)
941 | - React-featureflags
942 | - React-graphics
943 | - React-hermes
944 | - React-jsi
945 | - React-jsiexecutor
946 | - React-logger
947 | - React-rendererdebug
948 | - React-runtimescheduler
949 | - React-utils
950 | - ReactCommon/turbomodule/core
951 | - Yoga
952 | - React-FabricComponents/components/inputaccessory (0.79.2):
953 | - DoubleConversion
954 | - fast_float (= 6.1.4)
955 | - fmt (= 11.0.2)
956 | - glog
957 | - hermes-engine
958 | - RCT-Folly/Fabric (= 2024.11.18.00)
959 | - RCTRequired
960 | - RCTTypeSafety
961 | - React-Core
962 | - React-cxxreact
963 | - React-debug
964 | - React-Fabric
965 | - React-featureflags
966 | - React-graphics
967 | - React-hermes
968 | - React-jsi
969 | - React-jsiexecutor
970 | - React-logger
971 | - React-rendererdebug
972 | - React-runtimescheduler
973 | - React-utils
974 | - ReactCommon/turbomodule/core
975 | - Yoga
976 | - React-FabricComponents/components/iostextinput (0.79.2):
977 | - DoubleConversion
978 | - fast_float (= 6.1.4)
979 | - fmt (= 11.0.2)
980 | - glog
981 | - hermes-engine
982 | - RCT-Folly/Fabric (= 2024.11.18.00)
983 | - RCTRequired
984 | - RCTTypeSafety
985 | - React-Core
986 | - React-cxxreact
987 | - React-debug
988 | - React-Fabric
989 | - React-featureflags
990 | - React-graphics
991 | - React-hermes
992 | - React-jsi
993 | - React-jsiexecutor
994 | - React-logger
995 | - React-rendererdebug
996 | - React-runtimescheduler
997 | - React-utils
998 | - ReactCommon/turbomodule/core
999 | - Yoga
1000 | - React-FabricComponents/components/modal (0.79.2):
1001 | - DoubleConversion
1002 | - fast_float (= 6.1.4)
1003 | - fmt (= 11.0.2)
1004 | - glog
1005 | - hermes-engine
1006 | - RCT-Folly/Fabric (= 2024.11.18.00)
1007 | - RCTRequired
1008 | - RCTTypeSafety
1009 | - React-Core
1010 | - React-cxxreact
1011 | - React-debug
1012 | - React-Fabric
1013 | - React-featureflags
1014 | - React-graphics
1015 | - React-hermes
1016 | - React-jsi
1017 | - React-jsiexecutor
1018 | - React-logger
1019 | - React-rendererdebug
1020 | - React-runtimescheduler
1021 | - React-utils
1022 | - ReactCommon/turbomodule/core
1023 | - Yoga
1024 | - React-FabricComponents/components/rncore (0.79.2):
1025 | - DoubleConversion
1026 | - fast_float (= 6.1.4)
1027 | - fmt (= 11.0.2)
1028 | - glog
1029 | - hermes-engine
1030 | - RCT-Folly/Fabric (= 2024.11.18.00)
1031 | - RCTRequired
1032 | - RCTTypeSafety
1033 | - React-Core
1034 | - React-cxxreact
1035 | - React-debug
1036 | - React-Fabric
1037 | - React-featureflags
1038 | - React-graphics
1039 | - React-hermes
1040 | - React-jsi
1041 | - React-jsiexecutor
1042 | - React-logger
1043 | - React-rendererdebug
1044 | - React-runtimescheduler
1045 | - React-utils
1046 | - ReactCommon/turbomodule/core
1047 | - Yoga
1048 | - React-FabricComponents/components/safeareaview (0.79.2):
1049 | - DoubleConversion
1050 | - fast_float (= 6.1.4)
1051 | - fmt (= 11.0.2)
1052 | - glog
1053 | - hermes-engine
1054 | - RCT-Folly/Fabric (= 2024.11.18.00)
1055 | - RCTRequired
1056 | - RCTTypeSafety
1057 | - React-Core
1058 | - React-cxxreact
1059 | - React-debug
1060 | - React-Fabric
1061 | - React-featureflags
1062 | - React-graphics
1063 | - React-hermes
1064 | - React-jsi
1065 | - React-jsiexecutor
1066 | - React-logger
1067 | - React-rendererdebug
1068 | - React-runtimescheduler
1069 | - React-utils
1070 | - ReactCommon/turbomodule/core
1071 | - Yoga
1072 | - React-FabricComponents/components/scrollview (0.79.2):
1073 | - DoubleConversion
1074 | - fast_float (= 6.1.4)
1075 | - fmt (= 11.0.2)
1076 | - glog
1077 | - hermes-engine
1078 | - RCT-Folly/Fabric (= 2024.11.18.00)
1079 | - RCTRequired
1080 | - RCTTypeSafety
1081 | - React-Core
1082 | - React-cxxreact
1083 | - React-debug
1084 | - React-Fabric
1085 | - React-featureflags
1086 | - React-graphics
1087 | - React-hermes
1088 | - React-jsi
1089 | - React-jsiexecutor
1090 | - React-logger
1091 | - React-rendererdebug
1092 | - React-runtimescheduler
1093 | - React-utils
1094 | - ReactCommon/turbomodule/core
1095 | - Yoga
1096 | - React-FabricComponents/components/text (0.79.2):
1097 | - DoubleConversion
1098 | - fast_float (= 6.1.4)
1099 | - fmt (= 11.0.2)
1100 | - glog
1101 | - hermes-engine
1102 | - RCT-Folly/Fabric (= 2024.11.18.00)
1103 | - RCTRequired
1104 | - RCTTypeSafety
1105 | - React-Core
1106 | - React-cxxreact
1107 | - React-debug
1108 | - React-Fabric
1109 | - React-featureflags
1110 | - React-graphics
1111 | - React-hermes
1112 | - React-jsi
1113 | - React-jsiexecutor
1114 | - React-logger
1115 | - React-rendererdebug
1116 | - React-runtimescheduler
1117 | - React-utils
1118 | - ReactCommon/turbomodule/core
1119 | - Yoga
1120 | - React-FabricComponents/components/textinput (0.79.2):
1121 | - DoubleConversion
1122 | - fast_float (= 6.1.4)
1123 | - fmt (= 11.0.2)
1124 | - glog
1125 | - hermes-engine
1126 | - RCT-Folly/Fabric (= 2024.11.18.00)
1127 | - RCTRequired
1128 | - RCTTypeSafety
1129 | - React-Core
1130 | - React-cxxreact
1131 | - React-debug
1132 | - React-Fabric
1133 | - React-featureflags
1134 | - React-graphics
1135 | - React-hermes
1136 | - React-jsi
1137 | - React-jsiexecutor
1138 | - React-logger
1139 | - React-rendererdebug
1140 | - React-runtimescheduler
1141 | - React-utils
1142 | - ReactCommon/turbomodule/core
1143 | - Yoga
1144 | - React-FabricComponents/components/unimplementedview (0.79.2):
1145 | - DoubleConversion
1146 | - fast_float (= 6.1.4)
1147 | - fmt (= 11.0.2)
1148 | - glog
1149 | - hermes-engine
1150 | - RCT-Folly/Fabric (= 2024.11.18.00)
1151 | - RCTRequired
1152 | - RCTTypeSafety
1153 | - React-Core
1154 | - React-cxxreact
1155 | - React-debug
1156 | - React-Fabric
1157 | - React-featureflags
1158 | - React-graphics
1159 | - React-hermes
1160 | - React-jsi
1161 | - React-jsiexecutor
1162 | - React-logger
1163 | - React-rendererdebug
1164 | - React-runtimescheduler
1165 | - React-utils
1166 | - ReactCommon/turbomodule/core
1167 | - Yoga
1168 | - React-FabricComponents/textlayoutmanager (0.79.2):
1169 | - DoubleConversion
1170 | - fast_float (= 6.1.4)
1171 | - fmt (= 11.0.2)
1172 | - glog
1173 | - hermes-engine
1174 | - RCT-Folly/Fabric (= 2024.11.18.00)
1175 | - RCTRequired
1176 | - RCTTypeSafety
1177 | - React-Core
1178 | - React-cxxreact
1179 | - React-debug
1180 | - React-Fabric
1181 | - React-featureflags
1182 | - React-graphics
1183 | - React-hermes
1184 | - React-jsi
1185 | - React-jsiexecutor
1186 | - React-logger
1187 | - React-rendererdebug
1188 | - React-runtimescheduler
1189 | - React-utils
1190 | - ReactCommon/turbomodule/core
1191 | - Yoga
1192 | - React-FabricImage (0.79.2):
1193 | - DoubleConversion
1194 | - fast_float (= 6.1.4)
1195 | - fmt (= 11.0.2)
1196 | - glog
1197 | - hermes-engine
1198 | - RCT-Folly/Fabric (= 2024.11.18.00)
1199 | - RCTRequired (= 0.79.2)
1200 | - RCTTypeSafety (= 0.79.2)
1201 | - React-Fabric
1202 | - React-featureflags
1203 | - React-graphics
1204 | - React-hermes
1205 | - React-ImageManager
1206 | - React-jsi
1207 | - React-jsiexecutor (= 0.79.2)
1208 | - React-logger
1209 | - React-rendererdebug
1210 | - React-utils
1211 | - ReactCommon
1212 | - Yoga
1213 | - React-featureflags (0.79.2):
1214 | - RCT-Folly (= 2024.11.18.00)
1215 | - React-featureflagsnativemodule (0.79.2):
1216 | - hermes-engine
1217 | - RCT-Folly
1218 | - React-featureflags
1219 | - React-hermes
1220 | - React-jsi
1221 | - React-jsiexecutor
1222 | - React-RCTFBReactNativeSpec
1223 | - ReactCommon/turbomodule/core
1224 | - React-graphics (0.79.2):
1225 | - DoubleConversion
1226 | - fast_float (= 6.1.4)
1227 | - fmt (= 11.0.2)
1228 | - glog
1229 | - hermes-engine
1230 | - RCT-Folly/Fabric (= 2024.11.18.00)
1231 | - React-hermes
1232 | - React-jsi
1233 | - React-jsiexecutor
1234 | - React-utils
1235 | - React-hermes (0.79.2):
1236 | - DoubleConversion
1237 | - fast_float (= 6.1.4)
1238 | - fmt (= 11.0.2)
1239 | - glog
1240 | - hermes-engine
1241 | - RCT-Folly (= 2024.11.18.00)
1242 | - React-cxxreact (= 0.79.2)
1243 | - React-jsi
1244 | - React-jsiexecutor (= 0.79.2)
1245 | - React-jsinspector
1246 | - React-jsinspectortracing
1247 | - React-perflogger (= 0.79.2)
1248 | - React-runtimeexecutor
1249 | - React-idlecallbacksnativemodule (0.79.2):
1250 | - glog
1251 | - hermes-engine
1252 | - RCT-Folly
1253 | - React-hermes
1254 | - React-jsi
1255 | - React-jsiexecutor
1256 | - React-RCTFBReactNativeSpec
1257 | - React-runtimescheduler
1258 | - ReactCommon/turbomodule/core
1259 | - React-ImageManager (0.79.2):
1260 | - glog
1261 | - RCT-Folly/Fabric
1262 | - React-Core/Default
1263 | - React-debug
1264 | - React-Fabric
1265 | - React-graphics
1266 | - React-rendererdebug
1267 | - React-utils
1268 | - React-jserrorhandler (0.79.2):
1269 | - glog
1270 | - hermes-engine
1271 | - RCT-Folly/Fabric (= 2024.11.18.00)
1272 | - React-cxxreact
1273 | - React-debug
1274 | - React-featureflags
1275 | - React-jsi
1276 | - ReactCommon/turbomodule/bridging
1277 | - React-jsi (0.79.2):
1278 | - boost
1279 | - DoubleConversion
1280 | - fast_float (= 6.1.4)
1281 | - fmt (= 11.0.2)
1282 | - glog
1283 | - hermes-engine
1284 | - RCT-Folly (= 2024.11.18.00)
1285 | - React-jsiexecutor (0.79.2):
1286 | - DoubleConversion
1287 | - fast_float (= 6.1.4)
1288 | - fmt (= 11.0.2)
1289 | - glog
1290 | - hermes-engine
1291 | - RCT-Folly (= 2024.11.18.00)
1292 | - React-cxxreact (= 0.79.2)
1293 | - React-jsi (= 0.79.2)
1294 | - React-jsinspector
1295 | - React-jsinspectortracing
1296 | - React-perflogger (= 0.79.2)
1297 | - React-jsinspector (0.79.2):
1298 | - DoubleConversion
1299 | - glog
1300 | - hermes-engine
1301 | - RCT-Folly
1302 | - React-featureflags
1303 | - React-jsi
1304 | - React-jsinspectortracing
1305 | - React-perflogger (= 0.79.2)
1306 | - React-runtimeexecutor (= 0.79.2)
1307 | - React-jsinspectortracing (0.79.2):
1308 | - RCT-Folly
1309 | - React-oscompat
1310 | - React-jsitooling (0.79.2):
1311 | - DoubleConversion
1312 | - fast_float (= 6.1.4)
1313 | - fmt (= 11.0.2)
1314 | - glog
1315 | - RCT-Folly (= 2024.11.18.00)
1316 | - React-cxxreact (= 0.79.2)
1317 | - React-jsi (= 0.79.2)
1318 | - React-jsinspector
1319 | - React-jsinspectortracing
1320 | - React-jsitracing (0.79.2):
1321 | - React-jsi
1322 | - React-logger (0.79.2):
1323 | - glog
1324 | - React-Mapbuffer (0.79.2):
1325 | - glog
1326 | - React-debug
1327 | - React-microtasksnativemodule (0.79.2):
1328 | - hermes-engine
1329 | - RCT-Folly
1330 | - React-hermes
1331 | - React-jsi
1332 | - React-jsiexecutor
1333 | - React-RCTFBReactNativeSpec
1334 | - ReactCommon/turbomodule/core
1335 | - react-native-shake (6.7.7):
1336 | - DoubleConversion
1337 | - glog
1338 | - hermes-engine
1339 | - RCT-Folly (= 2024.11.18.00)
1340 | - RCTRequired
1341 | - RCTTypeSafety
1342 | - React-Core
1343 | - React-debug
1344 | - React-Fabric
1345 | - React-featureflags
1346 | - React-graphics
1347 | - React-hermes
1348 | - React-ImageManager
1349 | - React-jsi
1350 | - React-NativeModulesApple
1351 | - React-RCTFabric
1352 | - React-renderercss
1353 | - React-rendererdebug
1354 | - React-utils
1355 | - ReactCodegen
1356 | - ReactCommon/turbomodule/bridging
1357 | - ReactCommon/turbomodule/core
1358 | - Yoga
1359 | - React-NativeModulesApple (0.79.2):
1360 | - glog
1361 | - hermes-engine
1362 | - React-callinvoker
1363 | - React-Core
1364 | - React-cxxreact
1365 | - React-featureflags
1366 | - React-hermes
1367 | - React-jsi
1368 | - React-jsinspector
1369 | - React-runtimeexecutor
1370 | - ReactCommon/turbomodule/bridging
1371 | - ReactCommon/turbomodule/core
1372 | - React-oscompat (0.79.2)
1373 | - React-perflogger (0.79.2):
1374 | - DoubleConversion
1375 | - RCT-Folly (= 2024.11.18.00)
1376 | - React-performancetimeline (0.79.2):
1377 | - RCT-Folly (= 2024.11.18.00)
1378 | - React-cxxreact
1379 | - React-featureflags
1380 | - React-jsinspectortracing
1381 | - React-perflogger
1382 | - React-timing
1383 | - React-RCTActionSheet (0.79.2):
1384 | - React-Core/RCTActionSheetHeaders (= 0.79.2)
1385 | - React-RCTAnimation (0.79.2):
1386 | - RCT-Folly (= 2024.11.18.00)
1387 | - RCTTypeSafety
1388 | - React-Core/RCTAnimationHeaders
1389 | - React-jsi
1390 | - React-NativeModulesApple
1391 | - React-RCTFBReactNativeSpec
1392 | - ReactCommon
1393 | - React-RCTAppDelegate (0.79.2):
1394 | - hermes-engine
1395 | - RCT-Folly (= 2024.11.18.00)
1396 | - RCTRequired
1397 | - RCTTypeSafety
1398 | - React-Core
1399 | - React-CoreModules
1400 | - React-debug
1401 | - React-defaultsnativemodule
1402 | - React-Fabric
1403 | - React-featureflags
1404 | - React-graphics
1405 | - React-hermes
1406 | - React-jsitooling
1407 | - React-NativeModulesApple
1408 | - React-RCTFabric
1409 | - React-RCTFBReactNativeSpec
1410 | - React-RCTImage
1411 | - React-RCTNetwork
1412 | - React-RCTRuntime
1413 | - React-rendererdebug
1414 | - React-RuntimeApple
1415 | - React-RuntimeCore
1416 | - React-runtimescheduler
1417 | - React-utils
1418 | - ReactCommon
1419 | - React-RCTBlob (0.79.2):
1420 | - DoubleConversion
1421 | - fast_float (= 6.1.4)
1422 | - fmt (= 11.0.2)
1423 | - hermes-engine
1424 | - RCT-Folly (= 2024.11.18.00)
1425 | - React-Core/RCTBlobHeaders
1426 | - React-Core/RCTWebSocket
1427 | - React-jsi
1428 | - React-jsinspector
1429 | - React-NativeModulesApple
1430 | - React-RCTFBReactNativeSpec
1431 | - React-RCTNetwork
1432 | - ReactCommon
1433 | - React-RCTFabric (0.79.2):
1434 | - glog
1435 | - hermes-engine
1436 | - RCT-Folly/Fabric (= 2024.11.18.00)
1437 | - React-Core
1438 | - React-debug
1439 | - React-Fabric
1440 | - React-FabricComponents
1441 | - React-FabricImage
1442 | - React-featureflags
1443 | - React-graphics
1444 | - React-hermes
1445 | - React-ImageManager
1446 | - React-jsi
1447 | - React-jsinspector
1448 | - React-jsinspectortracing
1449 | - React-performancetimeline
1450 | - React-RCTAnimation
1451 | - React-RCTImage
1452 | - React-RCTText
1453 | - React-rendererconsistency
1454 | - React-renderercss
1455 | - React-rendererdebug
1456 | - React-runtimescheduler
1457 | - React-utils
1458 | - Yoga
1459 | - React-RCTFBReactNativeSpec (0.79.2):
1460 | - hermes-engine
1461 | - RCT-Folly
1462 | - RCTRequired
1463 | - RCTTypeSafety
1464 | - React-Core
1465 | - React-hermes
1466 | - React-jsi
1467 | - React-jsiexecutor
1468 | - React-NativeModulesApple
1469 | - ReactCommon
1470 | - React-RCTImage (0.79.2):
1471 | - RCT-Folly (= 2024.11.18.00)
1472 | - RCTTypeSafety
1473 | - React-Core/RCTImageHeaders
1474 | - React-jsi
1475 | - React-NativeModulesApple
1476 | - React-RCTFBReactNativeSpec
1477 | - React-RCTNetwork
1478 | - ReactCommon
1479 | - React-RCTLinking (0.79.2):
1480 | - React-Core/RCTLinkingHeaders (= 0.79.2)
1481 | - React-jsi (= 0.79.2)
1482 | - React-NativeModulesApple
1483 | - React-RCTFBReactNativeSpec
1484 | - ReactCommon
1485 | - ReactCommon/turbomodule/core (= 0.79.2)
1486 | - React-RCTNetwork (0.79.2):
1487 | - RCT-Folly (= 2024.11.18.00)
1488 | - RCTTypeSafety
1489 | - React-Core/RCTNetworkHeaders
1490 | - React-jsi
1491 | - React-NativeModulesApple
1492 | - React-RCTFBReactNativeSpec
1493 | - ReactCommon
1494 | - React-RCTRuntime (0.79.2):
1495 | - glog
1496 | - hermes-engine
1497 | - RCT-Folly/Fabric (= 2024.11.18.00)
1498 | - React-Core
1499 | - React-hermes
1500 | - React-jsi
1501 | - React-jsinspector
1502 | - React-jsinspectortracing
1503 | - React-jsitooling
1504 | - React-RuntimeApple
1505 | - React-RuntimeCore
1506 | - React-RuntimeHermes
1507 | - React-RCTSettings (0.79.2):
1508 | - RCT-Folly (= 2024.11.18.00)
1509 | - RCTTypeSafety
1510 | - React-Core/RCTSettingsHeaders
1511 | - React-jsi
1512 | - React-NativeModulesApple
1513 | - React-RCTFBReactNativeSpec
1514 | - ReactCommon
1515 | - React-RCTText (0.79.2):
1516 | - React-Core/RCTTextHeaders (= 0.79.2)
1517 | - Yoga
1518 | - React-RCTVibration (0.79.2):
1519 | - RCT-Folly (= 2024.11.18.00)
1520 | - React-Core/RCTVibrationHeaders
1521 | - React-jsi
1522 | - React-NativeModulesApple
1523 | - React-RCTFBReactNativeSpec
1524 | - ReactCommon
1525 | - React-rendererconsistency (0.79.2)
1526 | - React-renderercss (0.79.2):
1527 | - React-debug
1528 | - React-utils
1529 | - React-rendererdebug (0.79.2):
1530 | - DoubleConversion
1531 | - fast_float (= 6.1.4)
1532 | - fmt (= 11.0.2)
1533 | - RCT-Folly (= 2024.11.18.00)
1534 | - React-debug
1535 | - React-rncore (0.79.2)
1536 | - React-RuntimeApple (0.79.2):
1537 | - hermes-engine
1538 | - RCT-Folly/Fabric (= 2024.11.18.00)
1539 | - React-callinvoker
1540 | - React-Core/Default
1541 | - React-CoreModules
1542 | - React-cxxreact
1543 | - React-featureflags
1544 | - React-jserrorhandler
1545 | - React-jsi
1546 | - React-jsiexecutor
1547 | - React-jsinspector
1548 | - React-jsitooling
1549 | - React-Mapbuffer
1550 | - React-NativeModulesApple
1551 | - React-RCTFabric
1552 | - React-RCTFBReactNativeSpec
1553 | - React-RuntimeCore
1554 | - React-runtimeexecutor
1555 | - React-RuntimeHermes
1556 | - React-runtimescheduler
1557 | - React-utils
1558 | - React-RuntimeCore (0.79.2):
1559 | - glog
1560 | - hermes-engine
1561 | - RCT-Folly/Fabric (= 2024.11.18.00)
1562 | - React-cxxreact
1563 | - React-Fabric
1564 | - React-featureflags
1565 | - React-hermes
1566 | - React-jserrorhandler
1567 | - React-jsi
1568 | - React-jsiexecutor
1569 | - React-jsinspector
1570 | - React-jsitooling
1571 | - React-performancetimeline
1572 | - React-runtimeexecutor
1573 | - React-runtimescheduler
1574 | - React-utils
1575 | - React-runtimeexecutor (0.79.2):
1576 | - React-jsi (= 0.79.2)
1577 | - React-RuntimeHermes (0.79.2):
1578 | - hermes-engine
1579 | - RCT-Folly/Fabric (= 2024.11.18.00)
1580 | - React-featureflags
1581 | - React-hermes
1582 | - React-jsi
1583 | - React-jsinspector
1584 | - React-jsinspectortracing
1585 | - React-jsitooling
1586 | - React-jsitracing
1587 | - React-RuntimeCore
1588 | - React-utils
1589 | - React-runtimescheduler (0.79.2):
1590 | - glog
1591 | - hermes-engine
1592 | - RCT-Folly (= 2024.11.18.00)
1593 | - React-callinvoker
1594 | - React-cxxreact
1595 | - React-debug
1596 | - React-featureflags
1597 | - React-hermes
1598 | - React-jsi
1599 | - React-jsinspectortracing
1600 | - React-performancetimeline
1601 | - React-rendererconsistency
1602 | - React-rendererdebug
1603 | - React-runtimeexecutor
1604 | - React-timing
1605 | - React-utils
1606 | - React-timing (0.79.2)
1607 | - React-utils (0.79.2):
1608 | - glog
1609 | - hermes-engine
1610 | - RCT-Folly (= 2024.11.18.00)
1611 | - React-debug
1612 | - React-hermes
1613 | - React-jsi (= 0.79.2)
1614 | - ReactAppDependencyProvider (0.79.2):
1615 | - ReactCodegen
1616 | - ReactCodegen (0.79.2):
1617 | - DoubleConversion
1618 | - glog
1619 | - hermes-engine
1620 | - RCT-Folly
1621 | - RCTRequired
1622 | - RCTTypeSafety
1623 | - React-Core
1624 | - React-debug
1625 | - React-Fabric
1626 | - React-FabricImage
1627 | - React-featureflags
1628 | - React-graphics
1629 | - React-hermes
1630 | - React-jsi
1631 | - React-jsiexecutor
1632 | - React-NativeModulesApple
1633 | - React-RCTAppDelegate
1634 | - React-rendererdebug
1635 | - React-utils
1636 | - ReactCommon/turbomodule/bridging
1637 | - ReactCommon/turbomodule/core
1638 | - ReactCommon (0.79.2):
1639 | - ReactCommon/turbomodule (= 0.79.2)
1640 | - ReactCommon/turbomodule (0.79.2):
1641 | - DoubleConversion
1642 | - fast_float (= 6.1.4)
1643 | - fmt (= 11.0.2)
1644 | - glog
1645 | - hermes-engine
1646 | - RCT-Folly (= 2024.11.18.00)
1647 | - React-callinvoker (= 0.79.2)
1648 | - React-cxxreact (= 0.79.2)
1649 | - React-jsi (= 0.79.2)
1650 | - React-logger (= 0.79.2)
1651 | - React-perflogger (= 0.79.2)
1652 | - ReactCommon/turbomodule/bridging (= 0.79.2)
1653 | - ReactCommon/turbomodule/core (= 0.79.2)
1654 | - ReactCommon/turbomodule/bridging (0.79.2):
1655 | - DoubleConversion
1656 | - fast_float (= 6.1.4)
1657 | - fmt (= 11.0.2)
1658 | - glog
1659 | - hermes-engine
1660 | - RCT-Folly (= 2024.11.18.00)
1661 | - React-callinvoker (= 0.79.2)
1662 | - React-cxxreact (= 0.79.2)
1663 | - React-jsi (= 0.79.2)
1664 | - React-logger (= 0.79.2)
1665 | - React-perflogger (= 0.79.2)
1666 | - ReactCommon/turbomodule/core (0.79.2):
1667 | - DoubleConversion
1668 | - fast_float (= 6.1.4)
1669 | - fmt (= 11.0.2)
1670 | - glog
1671 | - hermes-engine
1672 | - RCT-Folly (= 2024.11.18.00)
1673 | - React-callinvoker (= 0.79.2)
1674 | - React-cxxreact (= 0.79.2)
1675 | - React-debug (= 0.79.2)
1676 | - React-featureflags (= 0.79.2)
1677 | - React-jsi (= 0.79.2)
1678 | - React-logger (= 0.79.2)
1679 | - React-perflogger (= 0.79.2)
1680 | - React-utils (= 0.79.2)
1681 | - SocketRocket (0.7.1)
1682 | - Yoga (0.0.0)
1683 |
1684 | DEPENDENCIES:
1685 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
1686 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
1687 | - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`)
1688 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
1689 | - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
1690 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
1691 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
1692 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1693 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1694 | - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
1695 | - RCTRequired (from `../node_modules/react-native/Libraries/Required`)
1696 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
1697 | - React (from `../node_modules/react-native/`)
1698 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
1699 | - React-Core (from `../node_modules/react-native/`)
1700 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
1701 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
1702 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
1703 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
1704 | - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
1705 | - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
1706 | - React-Fabric (from `../node_modules/react-native/ReactCommon`)
1707 | - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)
1708 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
1709 | - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
1710 | - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
1711 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
1712 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
1713 | - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
1714 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
1715 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
1716 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
1717 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
1718 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
1719 | - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`)
1720 | - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`)
1721 | - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
1722 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
1723 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
1724 | - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
1725 | - react-native-shake (from `../..`)
1726 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
1727 | - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`)
1728 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
1729 | - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)
1730 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
1731 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
1732 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
1733 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
1734 | - React-RCTFabric (from `../node_modules/react-native/React`)
1735 | - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`)
1736 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
1737 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
1738 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
1739 | - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`)
1740 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
1741 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
1742 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
1743 | - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)
1744 | - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`)
1745 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
1746 | - React-rncore (from `../node_modules/react-native/ReactCommon`)
1747 | - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
1748 | - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
1749 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
1750 | - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)
1751 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
1752 | - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`)
1753 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
1754 | - ReactAppDependencyProvider (from `build/generated/ios`)
1755 | - ReactCodegen (from `build/generated/ios`)
1756 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
1757 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
1758 |
1759 | SPEC REPOS:
1760 | trunk:
1761 | - SocketRocket
1762 |
1763 | EXTERNAL SOURCES:
1764 | boost:
1765 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
1766 | DoubleConversion:
1767 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
1768 | fast_float:
1769 | :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec"
1770 | FBLazyVector:
1771 | :path: "../node_modules/react-native/Libraries/FBLazyVector"
1772 | fmt:
1773 | :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
1774 | glog:
1775 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
1776 | hermes-engine:
1777 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
1778 | :tag: hermes-2025-03-03-RNv0.79.0-bc17d964d03743424823d7dd1a9f37633459c5c5
1779 | RCT-Folly:
1780 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
1781 | RCTDeprecation:
1782 | :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
1783 | RCTRequired:
1784 | :path: "../node_modules/react-native/Libraries/Required"
1785 | RCTTypeSafety:
1786 | :path: "../node_modules/react-native/Libraries/TypeSafety"
1787 | React:
1788 | :path: "../node_modules/react-native/"
1789 | React-callinvoker:
1790 | :path: "../node_modules/react-native/ReactCommon/callinvoker"
1791 | React-Core:
1792 | :path: "../node_modules/react-native/"
1793 | React-CoreModules:
1794 | :path: "../node_modules/react-native/React/CoreModules"
1795 | React-cxxreact:
1796 | :path: "../node_modules/react-native/ReactCommon/cxxreact"
1797 | React-debug:
1798 | :path: "../node_modules/react-native/ReactCommon/react/debug"
1799 | React-defaultsnativemodule:
1800 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
1801 | React-domnativemodule:
1802 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom"
1803 | React-Fabric:
1804 | :path: "../node_modules/react-native/ReactCommon"
1805 | React-FabricComponents:
1806 | :path: "../node_modules/react-native/ReactCommon"
1807 | React-FabricImage:
1808 | :path: "../node_modules/react-native/ReactCommon"
1809 | React-featureflags:
1810 | :path: "../node_modules/react-native/ReactCommon/react/featureflags"
1811 | React-featureflagsnativemodule:
1812 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
1813 | React-graphics:
1814 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
1815 | React-hermes:
1816 | :path: "../node_modules/react-native/ReactCommon/hermes"
1817 | React-idlecallbacksnativemodule:
1818 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
1819 | React-ImageManager:
1820 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
1821 | React-jserrorhandler:
1822 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
1823 | React-jsi:
1824 | :path: "../node_modules/react-native/ReactCommon/jsi"
1825 | React-jsiexecutor:
1826 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
1827 | React-jsinspector:
1828 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
1829 | React-jsinspectortracing:
1830 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing"
1831 | React-jsitooling:
1832 | :path: "../node_modules/react-native/ReactCommon/jsitooling"
1833 | React-jsitracing:
1834 | :path: "../node_modules/react-native/ReactCommon/hermes/executor/"
1835 | React-logger:
1836 | :path: "../node_modules/react-native/ReactCommon/logger"
1837 | React-Mapbuffer:
1838 | :path: "../node_modules/react-native/ReactCommon"
1839 | React-microtasksnativemodule:
1840 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
1841 | react-native-shake:
1842 | :path: "../.."
1843 | React-NativeModulesApple:
1844 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
1845 | React-oscompat:
1846 | :path: "../node_modules/react-native/ReactCommon/oscompat"
1847 | React-perflogger:
1848 | :path: "../node_modules/react-native/ReactCommon/reactperflogger"
1849 | React-performancetimeline:
1850 | :path: "../node_modules/react-native/ReactCommon/react/performance/timeline"
1851 | React-RCTActionSheet:
1852 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
1853 | React-RCTAnimation:
1854 | :path: "../node_modules/react-native/Libraries/NativeAnimation"
1855 | React-RCTAppDelegate:
1856 | :path: "../node_modules/react-native/Libraries/AppDelegate"
1857 | React-RCTBlob:
1858 | :path: "../node_modules/react-native/Libraries/Blob"
1859 | React-RCTFabric:
1860 | :path: "../node_modules/react-native/React"
1861 | React-RCTFBReactNativeSpec:
1862 | :path: "../node_modules/react-native/React"
1863 | React-RCTImage:
1864 | :path: "../node_modules/react-native/Libraries/Image"
1865 | React-RCTLinking:
1866 | :path: "../node_modules/react-native/Libraries/LinkingIOS"
1867 | React-RCTNetwork:
1868 | :path: "../node_modules/react-native/Libraries/Network"
1869 | React-RCTRuntime:
1870 | :path: "../node_modules/react-native/React/Runtime"
1871 | React-RCTSettings:
1872 | :path: "../node_modules/react-native/Libraries/Settings"
1873 | React-RCTText:
1874 | :path: "../node_modules/react-native/Libraries/Text"
1875 | React-RCTVibration:
1876 | :path: "../node_modules/react-native/Libraries/Vibration"
1877 | React-rendererconsistency:
1878 | :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency"
1879 | React-renderercss:
1880 | :path: "../node_modules/react-native/ReactCommon/react/renderer/css"
1881 | React-rendererdebug:
1882 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
1883 | React-rncore:
1884 | :path: "../node_modules/react-native/ReactCommon"
1885 | React-RuntimeApple:
1886 | :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
1887 | React-RuntimeCore:
1888 | :path: "../node_modules/react-native/ReactCommon/react/runtime"
1889 | React-runtimeexecutor:
1890 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
1891 | React-RuntimeHermes:
1892 | :path: "../node_modules/react-native/ReactCommon/react/runtime"
1893 | React-runtimescheduler:
1894 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
1895 | React-timing:
1896 | :path: "../node_modules/react-native/ReactCommon/react/timing"
1897 | React-utils:
1898 | :path: "../node_modules/react-native/ReactCommon/react/utils"
1899 | ReactAppDependencyProvider:
1900 | :path: build/generated/ios
1901 | ReactCodegen:
1902 | :path: build/generated/ios
1903 | ReactCommon:
1904 | :path: "../node_modules/react-native/ReactCommon"
1905 | Yoga:
1906 | :path: "../node_modules/react-native/ReactCommon/yoga"
1907 |
1908 | SPEC CHECKSUMS:
1909 | boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
1910 | DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
1911 | fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6
1912 | FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975
1913 | fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
1914 | glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
1915 | hermes-engine: 314be5250afa5692b57b4dd1705959e1973a8ebe
1916 | RCT-Folly: 36fe2295e44b10d831836cc0d1daec5f8abcf809
1917 | RCTDeprecation: 83ffb90c23ee5cea353bd32008a7bca100908f8c
1918 | RCTRequired: eb7c0aba998009f47a540bec9e9d69a54f68136e
1919 | RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93
1920 | React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c
1921 | React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d
1922 | React-Core: 7150cf9b6a5af063b37003062689f1691e79c020
1923 | React-CoreModules: 15a85e6665d61678942da6ae485b351f4c699049
1924 | React-cxxreact: 74f9de59259ac951923f5726aa14f0398f167af9
1925 | React-debug: e74e76912b91e08d580c481c34881899ccf63da9
1926 | React-defaultsnativemodule: 628285212bbd65417d40ad6a9f8781830fda6c98
1927 | React-domnativemodule: 185d9808198405c176784aaf33403d713bd24fb7
1928 | React-Fabric: c814804affbe1952e16149ddd20256e1bccae67e
1929 | React-FabricComponents: 81ef47d596966121784afec9924f9562a29b1691
1930 | React-FabricImage: f14f371d678aa557101def954ac3ba27e48948ff
1931 | React-featureflags: d5facceff8f8f6de430e0acecf4979a9a0839ba9
1932 | React-featureflagsnativemodule: 96f0ab285382d95c90f663e02526a5ceefa95a11
1933 | React-graphics: 1a66ee0a3f093b125b853f6370296fadcaf6f233
1934 | React-hermes: 8b86e5f54a65ecb69cdf22b3a00a11562eda82d2
1935 | React-idlecallbacksnativemodule: 5c25ab145c602264d00cb26a397ab52e0efa031c
1936 | React-ImageManager: 15e34bd5ef1ac4a18e96660817ef70a7f99ee8c2
1937 | React-jserrorhandler: 02cdf2cd45350108be1ffd2b164578936dbbdff7
1938 | React-jsi: 6af1987cfbb1b6621664fdbf6c7b62bd4d38c923
1939 | React-jsiexecutor: 51f372998e0303585cb0317232b938d694663cbd
1940 | React-jsinspector: 3539ad976d073bfaa8a7d2fa9bef35e70e55033e
1941 | React-jsinspectortracing: e8dbacaf67c201f23052ca1c2bae2f7b84dec443
1942 | React-jsitooling: 95a34f41e3c249d42181de13b4f8d854f178ca9f
1943 | React-jsitracing: 25b029cf5cad488252d46da19dd8c4c134fd5fe4
1944 | React-logger: 368570a253f00879a1e4fea24ed4047e72e7bbf3
1945 | React-Mapbuffer: c04fcda1c6281fc0a6824c7dcc1633dd217ac1ec
1946 | React-microtasksnativemodule: ca2804a25fdcefffa0aa942aa23ab53b99614a34
1947 | react-native-shake: 6671cfa5469a6c9d086f1e7cc026195a127b56e8
1948 | React-NativeModulesApple: 452b86b29fae99ed0a4015dca3ad9cd222f88abf
1949 | React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c
1950 | React-perflogger: 6fd2f6811533e9c19a61e855c3033eecbf4ad2a0
1951 | React-performancetimeline: abf31259d794c9274b3ea19c5016186925eec6c4
1952 | React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3
1953 | React-RCTAnimation: 2595dcb10a82216a511b54742f8c28d793852ac6
1954 | React-RCTAppDelegate: f03604b70f57c9469a84a159d8abecf793a5bcff
1955 | React-RCTBlob: e00f9b4e2f151938f4d9864cf33ebf24ac03328a
1956 | React-RCTFabric: 3945d116fd271598db262d4e6ed5691d431ed9e8
1957 | React-RCTFBReactNativeSpec: 0f4d4f0da938101f2ca9d5333a8f46e527ad2819
1958 | React-RCTImage: dac5e9f8ec476aefe6e60ee640ebc1dfaf1a4dbe
1959 | React-RCTLinking: 494b785a40d952a1dfbe712f43214376e5f0e408
1960 | React-RCTNetwork: b3d7c30cd21793e268db107dd0980cb61b3c1c44
1961 | React-RCTRuntime: a8ff419d437228e7b8a793b14f9d711e1cbb82af
1962 | React-RCTSettings: a060c7e381a3896104761b8eed7e284d95e37df3
1963 | React-RCTText: 4f272b72dbb61f390d8c8274528f9fdbff983806
1964 | React-RCTVibration: 0e5326220719aca12473d703aa46693e3b4ce67a
1965 | React-rendererconsistency: 351fdbc5c1fe4da24243d939094a80f0e149c7a1
1966 | React-renderercss: d333f2ada83969591100d91ec6b23ca2e17e1507
1967 | React-rendererdebug: 039e5949b72ba63c703de020701e3fd152434c61
1968 | React-rncore: 57ed480649bb678d8bdc386d20fee8bf2b0c307c
1969 | React-RuntimeApple: 344a5e1105256000afabaa8df12c3e4cab880340
1970 | React-RuntimeCore: 0e48fb5e5160acc0334c7a723a42d42cef4b58b6
1971 | React-runtimeexecutor: d60846710facedd1edb70c08b738119b3ee2c6c2
1972 | React-RuntimeHermes: 064286a03871d932c99738e0f8ef854962ab4b99
1973 | React-runtimescheduler: e917ab17ae08c204af1ebf8f669b7e411b0220c8
1974 | React-timing: a90f4654cbda9c628614f9bee68967f1768bd6a5
1975 | React-utils: 51c4e71608b8133fecc9a15801d244ae7bdf3758
1976 | ReactAppDependencyProvider: d5dcc564f129632276bd3184e60f053fcd574d6b
1977 | ReactCodegen: 2b79c9b8d02549b88cb4b6934bda01547b7ef050
1978 | ReactCommon: 4d0da92a5eb8da86c08e3ec34bd23ab439fb2461
1979 | SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
1980 | Yoga: c758bfb934100bb4bf9cbaccb52557cee35e8bdf
1981 |
1982 | PODFILE CHECKSUM: 1e2f9b6846eba78115fb30bb792640c1f56bedee
1983 |
1984 | COCOAPODS: 1.15.2
1985 |
--------------------------------------------------------------------------------