Compare commits

...
Author SHA1 Message Date
Brent Vatne 2387fa9bd7 Publish
- @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
 - @config-plugins/[email protected]
2025-06-02 16:49:03 -07:00
Brent Vatne 91b88cd443 Revert "Remove versions from apps to skip publishing with lerna"
This reverts commit a1f6fbc2ec.
2025-06-02 16:48:10 -07:00
Brent Vatne a1f6fbc2ec Remove versions from apps to skip publishing with lerna 2025-06-02 16:45:21 -07:00
Evan BaconandBrent Vatne fed9abc5b8 feat: upgrade to SDK 53 (#272)
Co-authored-by: Brent Vatne <[email protected]>
2025-05-27 15:42:59 -07:00
evanbacon b368b0bfcb Update README.md 2025-05-01 13:11:35 -05:00
mphill 2fa8c2b809 fix(branch): Fix branch plugin namespace (#261)
* Update package.json

* Update build.gradle
2025-05-01 13:10:02 -05:00
Nick Novitski be399fdb3b Update actions/cache v2 -> v4 (#262)
v2 will stop working in February.
2025-05-01 13:09:42 -05:00
Dominique Rau 2927e09799 Update withDetoxProjectGradle.ts (#267) 2025-05-01 13:09:30 -05:00
Evan Bacon ec4f114b82 Update README.md 2024-12-29 23:56:24 -06:00
Evan Bacon 9a524549b7 Upgrade to 52 (#258)
* bump packages and drop extras

* reduce packages to update

* bump readmes

* build

* fix deps

* use whatever images

* add ccache

* fix upgrade

* fix apple settings

* attempt branch update

* add notices for better alternatives

* all ios confirmed to run

* drop unused android plugin in detox

* add splash screens

* delete google cast in favor of the upstream plugin

* Update README.md

* Update build.gradle

* update tests

* Update yarn.lock

* lint

* drop google cast workflow
2024-12-03 17:44:02 -06:00
Wilhelm Erasmus 4a3899c098 chore: adds expo-react-native-freshchat to out-of-tree plugin list (#257) 2024-12-02 12:40:23 -06:00
Evan Bacon 4eb10b7794 Upgrade to Expo SDK 51 (#234)
* update versions

* Update generate-plugin.ts

* Update yarn.lock

* ffmpeg running

* Update build.gradle

* fix android webrtc

* Update yarn.lock

* working detox tests
2024-05-08 11:12:56 -05:00
Cedric van Putten bc6856f7d3 fix(react-native-dynamic-app-icon): add exact ipad sizes 152/167 for exported icons (#233)
* fix(react-native-dynamic-app-icon): add exact ipad sizes `152x152`/`167x167` for exported icons

* fix(react-native-dynamic-app-icon): add ipad icons to pbxproj

* refactor(react-native-dynamic-app-icon): replace `scales` and `size` with `IconDimension` using additional dimensions for specific targets

* fix(react-native-dynamic-app-icon): add `width` and `height` to keep similar file name but override exact dimensions

* chore(react-native-dynamic-app-icon): enable tablet exports for icons

* fix(react-native-dynamic-app-icon): use proper plist names (without scales)
2024-05-07 14:48:07 -05:00
Evan Bacon fa4397d502 chore!: bump to SDK 50 (#220)
* upgrade apps

* update readmes

* update

* update typescript types

* update libs

* ✓ ios-stickers tested

* update android branch

* ✓ branch

* ✓ dynamic app icon (ios)

* Update yarn.lock

* ✓ react-native-pdf

* ✓ react-native-webrtc

* wip

* ✓ detox

* drop build folder

* update format

* update to node 18

* add faster template

* update prettier

* lint fix
2024-02-06 15:06:15 -06:00
Evan Bacon ace454934c chore: drop deprecated @config-plugins/react-native-ble-plx package (#219)
* drop react-native-ble-plx

* fix builds

* update
2024-02-05 15:41:41 -06:00
Evan Bacon 581ce227c6 chore: drop deprecated @config-plugins/react-native-quick-actions package (#218)
* drop react-native-quick-actions

* drop tests and update meta

* Update README.md
2024-02-05 15:29:15 -06:00
Aman Mittal a619addd70 Update React Native Firebase plugin list (#205)
The React Native Firebase is missing `"@react-native-firebase/crashlytics"` from the list and can be confusing as to why there is a parity between this doc and the actual React Native Firebase docs: https://rnfirebase.io/#expo-managed-workflow
2024-01-12 14:13:50 -06:00
Evan Bacon 87797617d7 Update README.md 2023-11-25 23:23:07 -06:00
Evan Bacon 7fb7fb0acf Update README.md (#206) 2023-11-20 13:00:06 -06:00
Evan Bacon 90dfa7aa55 Update README.md 2023-11-20 12:59:24 -06:00
Gustavo Gard 20e7914cad remove fbjs dependency (#171)
Remove `fbjs` because it is not a dependency anymore in `react-native-pdf`

https://github.com/wonday/react-native-pdf/releases/tag/v6.5.0
2023-11-02 14:37:17 -05:00
Nick Artman a8393fcfe8 docs(readme): fix link to lyrahealth-inc/react-native-orientation-plugin (#202) 2023-11-02 14:36:42 -05:00
Michael Wood c2cfc1e287 docs: add react-native-ble-plx (#203) 2023-11-02 14:35:52 -05:00
Douglas Lowder e650417b40 Remove packages/tv (#201) 2023-10-09 16:14:48 -07:00
evanbacon 2e57a4fee8 + @config-plugins/[email protected] 2023-09-28 19:39:58 -07:00
Douglas Lowder 93491ad59d feat(tv): Add TV plugin (@config-plugins/tv) (#194) 2023-09-28 12:08:58 -07:00
evanbacon b90eed0c0c feat(apple-settings): bump bacons/xcode 2023-08-05 22:04:47 -05:00
evanbacon 1ccbdb4855 feat(apple-settings): publish 0.0.4 2023-08-05 21:03:43 -05:00
evanbacon b20ef67eda fix(apple-settings): remove invalid types 2023-08-05 21:03:23 -05:00
evanbacon 9e43cce27f feat: add licenses 2023-08-05 20:21:01 -05:00
evanbacon 3740876bc7 feat(apple-settings): expose file for child pane 2023-08-05 15:48:09 -05:00
evanbacon 55e55e598f fix(apple-settings): export MultiValue 2023-08-05 15:45:10 -05:00
evanbacon f42cee7428 Update app.config.ts 2023-08-05 15:17:18 -05:00
Evan Bacon 59b1997c34 Update README.md (#184) 2023-08-05 15:17:06 -05:00
Evan Bacon bfb8838d5d Create @config-plugins/apple-settings plugin (#182)
* wip

* update repo meta

* working demo

* updates

* add linking

* Updated demo more

* drop assets

* add slider to example

* Updated types and usage

* add multi value page example
2023-08-05 15:03:04 -05:00
Evan Bacon 006142cd7a chore!: bump to SDK 49 (#180)
* bump

* Update yarn.lock

* drop default babel and metro configs

* reduce gitignores

* drop unused config files

* drop unused and web

* drop unused gitignores

* update and drop lodash

* yarn

* bump tested by

* bump all

* update

* Update app.json

* Update README.md

* bump kotlin

* update tests
2023-07-14 16:49:18 -05:00
Evan Bacon 79d464943b Update README.md 2023-05-24 15:58:49 -05:00
evanbacon 6f034e11f1 + @config-plugins/[email protected] 2023-03-09 11:26:23 -06:00
Evan Bacon 9b15ea96f6 update android detox plugin for detox 20 (#166)
* update android testing

* update with detox plugin

* use expo-build-properties for kotlin version

* update build files

* working

* update snaps for sdk 48
2023-03-09 11:25:10 -06:00
Evan Bacon d7626845d9 sdk 48 (#165)
* bump packages

* all running on iOS

* all running android

* bump

* update tests

* fix lint
2023-03-08 11:50:52 -06:00
dependabot[bot] bf2154da14 chore(deps): bump expo-build-properties in /packages/react-native-webrtc (#161)
Bumps [expo-build-properties](https://github.com/expo/expo/tree/HEAD/packages/expo-build-properties) from 0.4.1 to 0.5.1.
- [Release notes](https://github.com/expo/expo/releases)
- [Changelog](https://github.com/expo/expo/blob/main/packages/expo-build-properties/CHANGELOG.md)
- [Commits](https://github.com/expo/expo/commits/HEAD/packages/expo-build-properties)

---
updated-dependencies:
- dependency-name: expo-build-properties
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 15:34:59 -06:00
harry lachenmayer 0f41412dba fix(ffmpeg-kit-react-native): pick first libc++_shared.so in the Android project (#159) 2023-03-07 15:34:36 -06:00
Kim Brandwijk 841803b2d4 docs: add watermelondb out-of-tree plugin to readme 2023-02-10 16:02:07 +01:00
Pradeep Pandey a6d6b1dff8 docs: update detox docs link (#146) 2023-01-03 22:23:32 +01:00
evanbacon fee9e88c13 + @config-plugins/[email protected]
- Dropped support for the deprecated `NSBluetoothPeripheralUsageDescription` property
2022-12-16 19:33:17 -06:00
Evan Bacon 0cff8edfcd chore!: drop bluetoothPeripheralPermission property (#154) 2022-12-16 19:30:42 -06:00
evanbacon b4fe28fa00 + @config-plugins/[email protected]
- added `stickerBundleId` prop
2022-12-15 16:08:10 -06:00
Xavier Seignard 72da275f24 feat(ios-stickers): custom id for sticker project (#150) 2022-12-15 16:03:05 -06:00
evanbacon b86291107e rebuild and bump expo-module-scripts 2022-11-17 10:31:32 +00:00
Evan Bacon bce28777d1 feat: upgrade to Expo SDK 47 (#145)
* cd app/ && npx expo install --fix && cd .. && cd ios-stickers/ && npx expo install --fix && cd .. && cd react-native-dynamic-app-icon/ && npx expo install --fix && cd .. && cd react-native-quick-actions/ && npx expo install --fix && cd .. && cd react-native-ble-plx/ && npx expo install --fix && cd .. && cd react-native-google-cast/ && npx expo install --fix && cd .. && cd react-native-siri-shortcut/ && npx expo install --fix && cd .. && cd ffmpeg-kit-react-native/ && npx expo install --fix && cd .. && cd react-native-branch/ && npx expo install --fix && cd .. && cd react-native-pdf/ && npx expo install --fix && cd .. && cd react-native-webrtc/ && npx expo install --fix

* ✓ react-native-webrtc works

* update docs and notes

* updated versions

* all iOS builds pass

* Create tsconfig.json

* Update test.yml
2022-11-17 10:24:59 +00:00
evanbacon bf0d5383ab Revert " cd app/ && npx expo install --fix && cd .. && cd ios-stickers/ && npx expo install --fix && cd .. && cd react-native-dynamic-app-icon/ && npx expo install --fix && cd .. && cd react-native-quick-actions/ && npx expo install --fix && cd .. && cd react-native-ble-plx/ && npx expo install --fix && cd .. && cd react-native-google-cast/ && npx expo install --fix && cd .. && cd react-native-siri-shortcut/ && npx expo install --fix && cd .. && cd ffmpeg-kit-react-native/ && npx expo install --fix && cd .. && cd react-native-branch/ && npx expo install --fix && cd .. && cd react-native-pdf/ && npx expo install --fix && cd .. && cd react-native-webrtc/ && npx expo install --fix"
This reverts commit 4997e975ac.
2022-11-10 11:08:20 -06:00
evanbacon 4997e975ac cd app/ && npx expo install --fix && cd .. && cd ios-stickers/ && npx expo install --fix && cd .. && cd react-native-dynamic-app-icon/ && npx expo install --fix && cd .. && cd react-native-quick-actions/ && npx expo install --fix && cd .. && cd react-native-ble-plx/ && npx expo install --fix && cd .. && cd react-native-google-cast/ && npx expo install --fix && cd .. && cd react-native-siri-shortcut/ && npx expo install --fix && cd .. && cd ffmpeg-kit-react-native/ && npx expo install --fix && cd .. && cd react-native-branch/ && npx expo install --fix && cd .. && cd react-native-pdf/ && npx expo install --fix && cd .. && cd react-native-webrtc/ && npx expo install --fix 2022-11-10 11:07:55 -06:00
Frank Calise ed020d236b docs(contributing): fix typo in instructions (#128) 2022-11-09 09:18:44 -06:00
Martijn ArtsandEvan Bacon 92cae40eab docs(detox): Add "CLEARTEXT" error troubleshooting to README (#125)
* Add "CLEARTEXT" error troubleshooting to README

* Update packages/detox/README.md

Co-authored-by: Evan Bacon <[email protected]>
2022-10-27 10:00:46 -07:00
evanbacon f76b3eb281 + @config-plugins/[email protected] 2022-09-15 19:27:29 -05:00
Robert Herber 0ec44e86e4 Fix broken Universal links (#117)
* Fix broken Universal links

* fix: prettier warning
2022-09-15 19:24:32 -05:00
Scott Pritchard 6d990ea663 Update README.md (#118)
Added react-native-keyevent-expo-config-plugin link to 'out-of-tree' plugins
2022-09-14 18:39:09 -05:00
evanbacon 9d96dfbd68 chore: @config-plugins/[email protected] 2022-08-08 16:42:18 +02:00
Evan Bacon dca3987857 feat: add SDK 46 support (#114)
* updated all modules to SDK 46

* chore: drop all semantics

* feat: fix all plugins

* feat: update versions

* fix: format

fix ffmpeg

fix detox

fix google cast

* Update lint-md.yml
2022-08-08 16:40:35 +02:00
semantic-release-bot fc16d69ba6 chore: 2.0.0
## @config-plugins/react-native-pdf [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-08-04)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-08-04 16:53:20 +00:00
Fabrizio Rizzonelli bf11a17a81 docs: added expo-appcenter to the list of plugin (#95) 2022-08-04 18:50:24 +02:00
semantic-release-bot b3c6210ffc chore: 2.0.1
### @config-plugins/react-native-ble-plx [2.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-07-25)

### Bug Fixes

* **react-native-ble-plx:** Added new Bluetooth specific permission for Android 12 (SDK 31). ([#91](https://github.com/expo/config-plugins/issues/91)) ([d3df63f](https://github.com/expo/config-plugins/commit/d3df63fbb2344251b9b371959de3ce6e4b9ab0cd))
2022-07-25 12:57:23 +00:00
Tom d3df63fbb2 fix(react-native-ble-plx): Added new Bluetooth specific permission for Android 12 (SDK 31). (#91)
* fix(react-native-ble-plx): Added new Bluetooth specific permission for Android SDK 31.

Expo SDK 45 targets Android SDK 31 which requires new Bluetooth specific permissions. Without these new permissions Android 12 (SDK 31) devices don't get access to BLE.

* Update README.md

* chore(react-native-ble-plx): Added `tools:targetApi="31"` to Android Manifest (for Lint).
2022-07-25 14:54:10 +02:00
semantic-release-bot 057c6bd978 chore: 2.0.0
## @config-plugins/react-native-callkeep [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-07-25)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-07-25 11:16:39 +00:00
Michael WoodandEvan Bacon 3fbc237fd6 Add react-native-multiple-image-picker (#92)
Co-authored-by: Evan Bacon <[email protected]>
2022-07-25 13:13:39 +02:00
Joseph Odunsi 6603ab3215 Update README.md (#93)
Add shopify flashlist
2022-07-25 13:13:03 +02:00
semantic-release-bot 9f49f02401 chore: 1.0.0
## @config-plugins/react-native-siri-shortcut 1.0.0 (2022-07-12)

### Features

* **siri-shortcut:** Add config plugin ([#86](https://github.com/expo/config-plugins/issues/86)) ([226b2a6](https://github.com/expo/config-plugins/commit/226b2a6412ad3fe75c98952831fab5a63254d19f))

### Other chores

* **react-native-siri-shortcut:** add tests ([#88](https://github.com/expo/config-plugins/issues/88)) ([994fadc](https://github.com/expo/config-plugins/commit/994fadc8ddf9ee858f2ccb7d544674f107f7f9ad))
2022-07-12 12:04:10 +00:00
Evan Bacon 14dc560092 Update README.md 2022-07-12 14:01:17 +02:00
Evan Bacon 2dcaff6772 Update README.md 2022-07-12 13:17:20 +02:00
Evan Bacon 68190997b6 Update README.md 2022-07-12 10:39:42 +02:00
semantic-release-bot 74f55fc342 chore: 2.0.2
### @config-plugins/ios-stickers [2.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-06-30)

### Other chores

* **deps-dev:** bump memfs in /packages/ios-stickers ([#83](https://github.com/expo/config-plugins/issues/83)) ([764a047](https://github.com/expo/config-plugins/commit/764a04710bea6e66dbc6d0065812acb1591435fb))
2022-06-30 17:32:49 +00:00
Evan Bacon e32378e8ed Add App Clips and Safari Extensions to Awesome list 2022-06-30 19:29:09 +02:00
dependabot[bot] 764a04710b chore(deps-dev): bump memfs in /packages/ios-stickers (#83) 2022-06-18 18:06:21 +02:00
Eugene Nagorny 837602af36 Update README.md (#89) 2022-06-18 18:04:46 +02:00
semantic-release-bot af22acc509 chore: 2.0.0
## @config-plugins/react-native-dynamic-app-icon [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-06-14)

### ⚠ BREAKING CHANGES

* add SDK 45 support (#79)

### Features

* add SDK 45 support ([#79](https://github.com/expo/config-plugins/issues/79)) ([96c72dd](https://github.com/expo/config-plugins/commit/96c72dda469ace2b9eafd38ba4d21f1bcd2e3cdf))

### Other chores

* publish packages [no-ci] ([0c7b413](https://github.com/expo/config-plugins/commit/0c7b413a765e4b1ff92b9e3edc2b62077c41ce46))
2022-06-14 12:21:20 +00:00
Evan Bacon 994fadc8dd chore(react-native-siri-shortcut): add tests (#88)
* add: tests for siri

* add: unit tests

* chore: update repo settings

* chore: noop android

* Update withReactNativeSiriShortcut.ts
2022-06-14 14:17:45 +02:00
356 changed files with 12605 additions and 17972 deletions

No files matched your search

+2 -3
View File
@@ -30,18 +30,17 @@ body:
label: Config Plugin label: Config Plugin
options: options:
- '@config-plugins/android-jsc-intl' - '@config-plugins/android-jsc-intl'
- '@config-plugins/apple-settings'
- '@config-plugins/detox' - '@config-plugins/detox'
- '@config-plugins/ffmpeg-kit-react-native' - '@config-plugins/ffmpeg-kit-react-native'
- '@config-plugins/ios-stickers' - '@config-plugins/ios-stickers'
- '@config-plugins/react-native-adjust' - '@config-plugins/react-native-adjust'
- '@config-plugins/react-native-ble-plx'
- '@config-plugins/react-native-blob-util' - '@config-plugins/react-native-blob-util'
- '@config-plugins/react-native-branch' - '@config-plugins/react-native-branch'
- '@config-plugins/react-native-callkeep' - '@config-plugins/react-native-callkeep'
- '@config-plugins/react-native-dynamic-app-icon' - '@config-plugins/react-native-dynamic-app-icon'
- '@config-plugins/react-native-google-cast'
- '@config-plugins/react-native-pdf' - '@config-plugins/react-native-pdf'
- '@config-plugins/react-native-quick-actions' - '@config-plugins/react-native-siri-shortcut'
- '@config-plugins/react-native-webrtc' - '@config-plugins/react-native-webrtc'
validations: validations:
required: true required: true
+4 -11
View File
@@ -11,13 +11,10 @@ contact_links:
url: https://github.com/wix/Detox/issues url: https://github.com/wix/Detox/issues
- about: FFmpeg Kit for React Native - about: FFmpeg Kit for React Native
name: 📦 ffmpeg-kit-react-native issues name: 📦 ffmpeg-kit-react-native issues
url: https://github.com/tanersener/ffmpeg-kit/issues url: https://github.com/arthenica/ffmpeg-kit/issues
- about: Adjust React Native SDK - about: Adjust React Native SDK
name: 📦 react-native-adjust issues name: 📦 react-native-adjust issues
url: https://github.com/adjust/react_native_sdk/issues url: https://github.com/adjust/react_native_sdk/issues
- about: React Native Bluetooth Low Energy library
name: 📦 react-native-ble-plx issues
url: https://github.com/Polidea/react-native-ble-plx/issues
- about: >- - about: >-
A module provides upload, download, and files access API. Supports file A module provides upload, download, and files access API. Supports file
stream read/write for process large files. stream read/write for process large files.
@@ -29,16 +26,12 @@ contact_links:
- about: Programmatically change the app icon in React Native. - about: Programmatically change the app icon in React Native.
name: 📦 react-native-dynamic-app-icon issues name: 📦 react-native-dynamic-app-icon issues
url: https://github.com/idearockers/react-native-dynamic-app-icon/issues url: https://github.com/idearockers/react-native-dynamic-app-icon/issues
- about: React Native wrapper for the Google Cast SDK for iOS and Android
name: 📦 react-native-google-cast issues
url: >-
https://github.com/react-native-google-cast/react-native-google-cast/issues
- about: A react native PDF view component, support ios and android platform - about: A react native PDF view component, support ios and android platform
name: 📦 react-native-pdf issues name: 📦 react-native-pdf issues
url: https://github.com/wonday/react-native-pdf/issues url: https://github.com/wonday/react-native-pdf/issues
- about: A react-native interface for Touch 3D home screen quick actions - about: A React Native library that enables you to use iOS 12+ Siri Shortcuts.
name: 📦 react-native-quick-actions issues name: 📦 react-native-siri-shortcut issues
url: https://github.com/jordanbyron/react-native-quick-actions/issues url: https://github.com/Gustash/react-native-siri-shortcut/issues
- about: WebRTC for React Native - about: WebRTC for React Native
name: 📦 react-native-webrtc issues name: 📦 react-native-webrtc issues
url: https://github.com/react-native-webrtc/react-native-webrtc/issues url: https://github.com/react-native-webrtc/react-native-webrtc/issues
-91
View File
@@ -1,91 +0,0 @@
# AUTO GENERATED:
# This file was generated by running the following in the root directory:
#
# yarn update-dependabot-config
version: 2
updates:
- package-ecosystem: npm
directory: packages/android-jsc-intl
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/detox
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/ffmpeg-kit-react-native
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/ios-stickers
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-adjust
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-ble-plx
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-blob-util
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-branch
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-callkeep
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-dynamic-app-icon
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-google-cast
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-pdf
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-quick-actions
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
- package-ecosystem: npm
directory: packages/react-native-webrtc
schedule:
interval: daily
time: '09:00'
timezone: America/Los_Angeles
+1 -1
View File
@@ -16,5 +16,5 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- run: npm install - run: yarn install --frozen-lockfile --check-files
- run: npx remark --use validate-links . .github - run: npx remark --use validate-links . .github
-37
View File
@@ -1,37 +0,0 @@
name: Release
# https://github.com/bent10/monorepo-starter/blob/main/docs/recipes/release-automation.md
on:
push:
branches:
- main
jobs:
release:
name: Releasing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/cache@v2
with:
path: "**/node_modules"
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- run: yarn install --frozen-lockfile --check-files
- run: yarn lerna run prepare --stream
# If the dry run fails then it will prevent us from automatically breaking the repo.
- name: Semantic release (dry run)
run: npx multi-semantic-release --dry-run --ignore-private-packages
env:
GITHUB_TOKEN: ${{ github.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Semantic release
# use `--ignore-packages` to ignore packages on bumping process
# npx multi-semantic-release --ignore-packages=packages/a/**,packages/b/**
run: npx multi-semantic-release --ignore-private-packages
env:
GITHUB_TOKEN: ${{ github.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+5 -7
View File
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
node: ["16", "17"] node: ["18"]
name: Build with Node ${{ matrix.node }} name: Build with Node ${{ matrix.node }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
@@ -22,7 +22,7 @@ jobs:
node-version: ${{ matrix.node }} node-version: ${{ matrix.node }}
- run: yarn install --frozen-lockfile --check-files - run: yarn install --frozen-lockfile --check-files
- run: yarn lerna run prepare --stream - run: yarn lerna run prepare --stream
- uses: actions/cache@v2 - uses: actions/cache@v4
with: with:
path: "*" path: "*"
key: v2-${{ github.sha }}-${{ matrix.node }} key: v2-${{ github.sha }}-${{ matrix.node }}
@@ -32,22 +32,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
node: ["16", "17"] node: ["18"]
package: [ package: [
# Manually add packages here # Manually add packages here
detox, detox,
ffmpeg-kit-react-native, ffmpeg-kit-react-native,
ios-stickers, ios-stickers,
react-native-ble-plx,
react-native-blob-util, react-native-blob-util,
react-native-branch, react-native-branch,
react-native-google-cast, react-native-siri-shortcut,
react-native-pdf, react-native-pdf,
# react-native-quick-actions,
] ]
name: Test ${{ matrix.package }} on Node ${{ matrix.node }} name: Test ${{ matrix.package }} on Node ${{ matrix.node }}
steps: steps:
- uses: actions/cache@v2 - uses: actions/cache@v4
with: with:
path: "*" path: "*"
key: v2-${{ github.sha }}-${{ matrix.node }} key: v2-${{ github.sha }}-${{ matrix.node }}
+1
View File
@@ -63,3 +63,4 @@ packages/@*/*/build/**
apps/*/ios/* apps/*/ios/*
apps/*/android/* apps/*/android/*
apps/*/web-build/* apps/*/web-build/*
apps/*/dist/*
-62
View File
@@ -1,62 +0,0 @@
// From @byCedric https://github.com/expo/expo-github-action/blob/main/.releaserc.js
const rules = [
{ type: "feat", release: "minor", title: "Features" },
{ type: "fix", release: "patch", title: "Bug Fixes" },
{ type: "test", release: "patch", title: "Tests" },
{ type: "ci", release: "patch", title: "Continuous Integration" },
{ type: "refactor", release: "patch", title: "Code Refactoring" },
{ type: "chore", release: "patch", title: "Other chores" },
{ type: "docs", release: "patch", title: "Documentation changes" },
];
// Simple mapping to order the commit groups
const sortMap = Object.fromEntries(
rules.map((rule, index) => [rule.title, index])
);
module.exports = {
branches: ["main"],
tagFormat: "${version}",
repositoryUrl: "https://github.com/expo/config-plugins.git",
plugins: [
[
"@semantic-release/commit-analyzer",
{
preset: "conventionalcommits",
releaseRules: [
{ breaking: true, release: "major" },
{ revert: true, release: "patch" },
].concat(
rules.map(({ type, release, breaking }) => ({
type,
release,
breaking,
}))
),
},
],
[
"@semantic-release/release-notes-generator",
{
preset: "conventionalcommits",
presetConfig: {
types: rules.map(({ type, title }) => ({ type, section: title })),
},
writerOpts: {
commitGroupsSort: (a, z) => sortMap[a.title] - sortMap[z.title],
},
},
],
"@semantic-release/changelog",
"@semantic-release/npm",
[
"@semantic-release/git",
{
message: "chore: ${nextRelease.version}\n\n${nextRelease.notes}",
assets: ["package.json", "CHANGELOG.md", "build/*"],
},
],
"@semantic-release/github",
],
};
+1 -1
View File
@@ -6,7 +6,7 @@ To submit a pull request:
1. Fork the [repository](https://github.com/expo/config-plugins) and create a feature branch. (Existing contributors can create feature branches without forking. Prefix the branch name with `@your-github-username/`.) 1. Fork the [repository](https://github.com/expo/config-plugins) and create a feature branch. (Existing contributors can create feature branches without forking. Prefix the branch name with `@your-github-username/`.)
2. Run `yarn` in the root directory to generate the build files. 2. Run `yarn` in the root directory to generate the build files.
3. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile. 3. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR title.
4. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI. 4. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
5. Make sure all tests pass on GitHub Actions. 5. Make sure all tests pass on GitHub Actions.
6. Wait for a review and adjust the code if necessary. 6. Wait for a review and adjust the code if necessary.
+27 -6
View File
@@ -1,18 +1,19 @@
# Expo Config Plugins # Expo Config Plugins
- A collection of [Expo config plugins](https://docs.expo.dev/guides/config-plugins/) for configuring the `expo prebuild` command. - A collection of [Expo config plugins](https://docs.expo.dev/guides/config-plugins/) for configuring the `npx expo prebuild` command.
- This repo is to Expo config plugins as [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) is to TypeScript. - This repo is to Expo config plugins as [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) is to TypeScript.
- We prefer packages ship their own Expo config plugin (to ensure versioning is aligned), but if they haven't adopted the system yet, the community can add a package here. - We prefer packages ship their own Expo config plugin (to ensure versioning is aligned), but if they haven't adopted the system yet, the community can add a package here.
- All packages here are community maintained. Feel free to improve docs, packages, tests, etc. - All packages here are community maintained. Feel free to improve docs, packages, tests, etc.
- We maintain a 1-1 mapping of **native packages** ⇔ `@config-plugins/*`. This means there should be no general utility packages here -- those are better suited for a different repo / NPM namespace. - We maintain a 1-1 mapping of **native packages** ⇔ `@config-plugins/*`. This means there should be no general utility packages here -- those are better suited for a different repo / NPM namespace.
## Awesome ## First-party plugins
Here is a list of known packages that have a built-in Config Plugin. Here is a list of known packages that have a built-in Config Plugin.
> Not all packages need a config plugin, packages that don't appear here might still work with managed EAS. > Not all packages need a config plugin, packages that don't appear here might still work with managed EAS.
- [React Native Firebase](https://rnfirebase.io/) (`@react-native-firebase/perf`, `@react-native-firebase/app`) - [React Native Firebase](https://rnfirebase.io/) (`@react-native-firebase/perf`, `@react-native-firebase/app`, `@react-native-firebase/crashlytics`)
- [react-native-google-cast](https://github.com/react-native-google-cast/react-native-google-cast)
- [react-native-nfc-manager](https://github.com/revtel/react-native-nfc-manager) - [react-native-nfc-manager](https://github.com/revtel/react-native-nfc-manager)
- [react-native-health](https://github.com/agencyenterprise/react-native-health) - [react-native-health](https://github.com/agencyenterprise/react-native-health)
- [@react-native-mapbox-gl/maps](https://github.com/rnmapbox/maps) - [@react-native-mapbox-gl/maps](https://github.com/rnmapbox/maps)
@@ -23,25 +24,45 @@ Here is a list of known packages that have a built-in Config Plugin.
- [@stripe/stripe-react-native](https://www.npmjs.com/package/@stripe/stripe-react-native) - [@stripe/stripe-react-native](https://www.npmjs.com/package/@stripe/stripe-react-native)
- [@react-native-voice/voice](https://www.npmjs.com/package/@react-native-voice/voice) - [@react-native-voice/voice](https://www.npmjs.com/package/@react-native-voice/voice)
- [react-native-imglysdk](https://www.npmjs.com/package/react-native-imglysdk) - [react-native-imglysdk](https://www.npmjs.com/package/react-native-imglysdk)
- [@viro-community/react-viro](https://github.com/virocommunity/viro) - [@viro-community/react-viro](https://github.com/virocommunity/viro) -- [Guide](https://viro-community.readme.io/docs/integrating-with-expo)
- [react-native-msal](https://www.npmjs.com/package/react-native-msal) - [react-native-msal](https://www.npmjs.com/package/react-native-msal)
- [react-native-spotlight-search](https://www.npmjs.com/package/react-native-spotlight-search) - [react-native-spotlight-search](https://www.npmjs.com/package/react-native-spotlight-search)
- [newrelic-react-native-agent](https://www.npmjs.com/package/newrelic-react-native-agent) - [newrelic-react-native-agent](https://www.npmjs.com/package/newrelic-react-native-agent)
- [react-native-videoeditorsdk](https://www.npmjs.com/package/react-native-videoeditorsdk) - [react-native-videoeditorsdk](https://www.npmjs.com/package/react-native-videoeditorsdk)
- [notifee](https://notifee.app/)
- [App Clips](https://github.com/bndkt/react-native-app-clip/)
- [iOS Safari Extensions](https://github.com/andrew-levy/react-native-safari-extension/)
- [react-native-ble-plx](https://github.com/dotintent/react-native-ble-plx)
### Complementary ### Complementary
More out-of-tree plugins which can be used to configure more packages. More out-of-tree plugins which can be used to configure more packages.
- [onesignal-expo-plugin](https://github.com/OneSignal/onesignal-expo-plugin) (for use with `react-native-onesignal`) - [onesignal-expo-plugin](https://github.com/OneSignal/onesignal-expo-plugin) (for use with `react-native-onesignal`)
- [@lyrahealth-inc/react-native-orientation-plugin](@lyrahealth-inc/react-native-orientation-plugin) (for use with `react-native-orientation-plugin`) - Configures **iOS Notification Service Extensions** for rich push notification and custom notification actions.
- [@lyrahealth-inc/react-native-orientation-plugin](https://www.npmjs.com/package/@lyrahealth-inc/react-native-orientation-plugin) (for use with `react-native-orientation-plugin`)
- [airship-expo-plugin](https://www.npmjs.com/package/airship-expo-plugin) (for use with `urbanairship-react-native`) - [airship-expo-plugin](https://www.npmjs.com/package/airship-expo-plugin) (for use with `urbanairship-react-native`)
- [config-plugin-react-native-intercom](https://www.npmjs.com/package/config-plugin-react-native-intercom) (for use with `intercom-react-native`) - [config-plugin-react-native-intercom](https://www.npmjs.com/package/config-plugin-react-native-intercom) (for use with `intercom-react-native`)
- [@allboatsrise/expo-marketingcloudsdk](https://www.npmjs.com/package/@allboatsrise/expo-marketingcloudsdk) (for use with `react-native-marketingcloudsdk`) - [@allboatsrise/expo-marketingcloudsdk](https://www.npmjs.com/package/@allboatsrise/expo-marketingcloudsdk) (for use with `react-native-marketingcloudsdk`)
- [@ouvio/react-native-background-location-plugin](https://www.npmjs.com/package/@ouvio/react-native-background-location-plugin) (for use with `react-native-background-location-plugin`) - [@ouvio/react-native-background-location-plugin](https://www.npmjs.com/package/@ouvio/react-native-background-location-plugin) (for use with `react-native-background-location-plugin`)
- [with-notifee](https://www.npmjs.com/package/with-notifee) (for use with [notifee](https://notifee.app/))
- [expo-community-flipper](https://www.npmjs.com/package/expo-community-flipper) (for use with Flipper) - [expo-community-flipper](https://www.npmjs.com/package/expo-community-flipper) (for use with Flipper)
- [expo-appcenter](https://www.npmjs.com/package/expo-appcenter) (for use with `appcenter`)
- [expo-react-native-freshchat](https://www.npmjs.com/package/expo-react-native-freshchat) (for use with `react-native-freshchat-sdk`)
- [react-native-keyevent-expo-config-plugin](https://github.com/chronsyn/react-native-keyevent-expo-config-plugin) (for use with `react-native-keyevent`)
- [watermelondb-expo-plugin](https://github.com/morrowdigital/watermelondb-expo-plugin) (for use with `@nozbe/watermelondb`)
### No Plugin Required
Just install and rebuild! If a package doesn't require any futher setup then it most likely doesn't need an Expo config plugin. Most packages work without a config plugin (including packages not listed below):
- [react-native-share](https://github.com/react-native-share/react-native-share)
- [@react-native-menu/menu](https://github.com/react-native-menu/menu)
- [react-native-blurhash](https://github.com/mrousavy/react-native-blurhash)
- [react-native-app-shortcuts](https://github.com/lokyoung/react-native-app-shortcuts)
- [react-native-multiple-image-picker](https://github.com/baronha/react-native-multiple-image-picker)
- [`@shopify/flash-list`](https://github.com/Shopify/flash-list)
> Feel free to [open a PR](https://github.com/expo/config-plugins/edit/main/README.md) with missing packages.
## Contributing! ## Contributing!
-4
View File
@@ -1,4 +0,0 @@
{
"12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true,
"40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true
}
+1 -79
View File
@@ -1,80 +1,2 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command /scripts/start.command
/ios /artifacts
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
+3 -3
View File
@@ -1,3 +1,3 @@
export { default } from './src/detox/App'; export { default } from "./src/detox/App";
// export { default } from './src/android-jsc-intl/App'; // export { default } from "./src/android-jsc-intl/App";
// export { default } from './src/android-jsc-adjust/App'; // export { default } from "./src/react-native-adjust/App";
-66
View File
@@ -1,66 +0,0 @@
### @expo/app [1.0.1](https://github.com/expo/config-plugins/compare/@expo/[email protected]...@expo/[email protected]) (2022-03-15)
### Bug Fixes
* **ci:** use correct internal versions ([ab8076a](https://github.com/expo/config-plugins/commit/ab8076adf51e9ba0439eba60b153d729a0996b8d))
### Dependencies
* **@config-plugins/android-jsc-intl:** upgraded to 1.0.1
* **@config-plugins/detox:** upgraded to 1.0.1
* **@config-plugins/react-native-adjust:** upgraded to 1.0.0
* **@config-plugins/react-native-ble-plx:** upgraded to 1.0.0
* **@config-plugins/react-native-blob-util:** upgraded to 1.0.1
* **@config-plugins/react-native-branch:** upgraded to 1.0.0
* **@config-plugins/react-native-callkeep:** upgraded to 1.0.0
* **@config-plugins/react-native-dynamic-app-icon:** upgraded to 1.0.0
* **@config-plugins/react-native-google-cast:** upgraded to 1.0.0
* **@config-plugins/react-native-pdf:** upgraded to 1.0.0
* **@config-plugins/react-native-quick-actions:** upgraded to 1.0.0
* **@config-plugins/react-native-webrtc:** upgraded to 1.0.0
## @expo/app 1.0.0 (2022-03-15)
### Features
* create react-native-branch plugin ([0b06baa](https://github.com/expo/config-plugins/commit/0b06baa2b486c5e02d433a4ac785960934f403b9))
### Bug Fixes
* respect old config from expo-branch ([d0e0186](https://github.com/expo/config-plugins/commit/d0e018601c09c0e92191a4eb2998ab0e6fa1c6ec))
### Other chores
* added start-metro script ([4a7d707](https://github.com/expo/config-plugins/commit/4a7d707b200a3e499d9d71caf49ad4fc1d0a89e0))
* update script ([dcf61a9](https://github.com/expo/config-plugins/commit/dcf61a9b9542851095954d84c9054c97c5400dc9))
* upgrade to latest react-native-branch ([df98474](https://github.com/expo/config-plugins/commit/df98474d79ed139b42ddd698d13100160c656c26))
### Documentation changes
* add android-jsc-intl example ([d96c0b2](https://github.com/expo/config-plugins/commit/d96c0b2888da3808d7c4e2dd7993129711ba717d))
### Dependencies
* **@config-plugins/android-jsc-intl:** upgraded to 1.0.0
* **@config-plugins/detox:** upgraded to 1.0.0
* **@config-plugins/ffmpeg-kit-react-native:** upgraded to 1.0.0
* **@config-plugins/ios-stickers:** upgraded to 1.0.0
* **@config-plugins/react-native-adjust:** upgraded to 1.0.0
* **@config-plugins/react-native-ble-plx:** upgraded to 1.0.0
* **@config-plugins/react-native-blob-util:** upgraded to 1.0.0
* **@config-plugins/react-native-branch:** upgraded to 1.0.0
* **@config-plugins/react-native-callkeep:** upgraded to 1.0.0
* **@config-plugins/react-native-dynamic-app-icon:** upgraded to 1.0.0
* **@config-plugins/react-native-google-cast:** upgraded to 1.0.0
* **@config-plugins/react-native-pdf:** upgraded to 1.0.0
* **@config-plugins/react-native-quick-actions:** upgraded to 1.0.0
* **@config-plugins/react-native-webrtc:** upgraded to 1.0.0
+5 -6
View File
@@ -1,10 +1,10 @@
{ {
"expo": { "expo": {
"name": "app", "name": "detoxapp",
"slug": "app", "slug": "app",
"version": "1.0.0", "version": "1.0.0",
"orientation": "portrait", "orientation": "portrait",
"icon": "https://icogen.vercel.app/api/icon", "icon": "https://github.com/expo.png",
"splash": { "splash": {
"image": "./assets/splash.png", "image": "./assets/splash.png",
"resizeMode": "contain", "resizeMode": "contain",
@@ -29,12 +29,11 @@
"favicon": "./assets/favicon.png" "favicon": "./assets/favicon.png"
}, },
"plugins": [ "plugins": [
"@config-plugins/detox",
"@config-plugins/react-native-adjust", "@config-plugins/react-native-adjust",
"@config-plugins/react-native-callkeep", "@config-plugins/react-native-callkeep",
"@config-plugins/react-native-blob-util", "@config-plugins/android-jsc-intl",
"@config-plugins/react-native-pdf", "expo-localization"
"@config-plugins/android-jsc-intl"
] ]
} }
} }
-6
View File
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
+15 -7
View File
@@ -1,13 +1,21 @@
const iosName = "app"; const iosName = "detoxapp";
const emulator = "Pixel_3a_API_30"; const simulator = "iPhone 16";
const simulator = "iPhone 13 Pro";
const derivedDataPath = "ios/build"; const derivedDataPath = "ios/build";
const sdk = "iphonesimulator"; const sdk = "iphonesimulator";
module.exports = { module.exports = {
testRunner: "jest", testRunner: {
runnerConfig: require.resolve("./e2e/jest.config.js"), $0: "jest",
specs: "e2e", args: {
config: require.resolve("./e2e/jest.config.js"),
_: ["e2e"],
},
jest: {
setupTimeout: 300000,
reportSpecs: true,
reportWorkerAssign: true,
},
},
behavior: { behavior: {
init: { init: {
exposeGlobals: false, exposeGlobals: false,
@@ -47,7 +55,7 @@ module.exports = {
emulator: { emulator: {
type: "android.emulator", type: "android.emulator",
device: { device: {
avdName: emulator, avdName: "Pixel_6_Pro_API_33",
}, },
}, },
}, },
File renamed without changes.
-23
View File
@@ -1,23 +0,0 @@
const {
DetoxCircusEnvironment,
SpecReporter,
WorkerAssignReporter,
} = require("detox/runners/jest-circus");
class CustomDetoxEnvironment extends DetoxCircusEnvironment {
constructor(config, context) {
super(config, context);
// Can be safely removed, if you are content with the default value (=300000ms)
this.initTimeout = 300000;
// This takes care of generating status logs on a per-spec basis. By default, Jest only reports at file-level.
// This is strictly optional.
this.registerListeners({
SpecReporter,
WorkerAssignReporter,
});
}
}
module.exports = CustomDetoxEnvironment;
+6 -3
View File
@@ -1,11 +1,14 @@
module.exports = { module.exports = {
testEnvironment: require.resolve("./environment.js"),
testRunner: require.resolve("jest-circus/runner"), testRunner: require.resolve("jest-circus/runner"),
testTimeout: 120000, testTimeout: 120000,
testRegex: "/__tests__/.*(e2e)\\.[jt]sx?$", rootDir: "..",
testMatch: ["<rootDir>/**/__tests__/*"],
transform: { transform: {
"^.+\\.[jt]sx?$": "ts-jest", "^.+\\.[jt]sx?$": "ts-jest",
}, },
reporters: [require.resolve("detox/runners/jest/streamlineReporter")], reporters: [require.resolve("detox/runners/jest/reporter")],
globalSetup: "detox/runners/jest/globalSetup",
globalTeardown: "detox/runners/jest/globalTeardown",
testEnvironment: "detox/runners/jest/testEnvironment",
verbose: true, verbose: true,
}; };
Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

-6
View File
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
+15 -24
View File
@@ -25,37 +25,28 @@
"@config-plugins/detox": "*", "@config-plugins/detox": "*",
"@config-plugins/react-native-adjust": "*", "@config-plugins/react-native-adjust": "*",
"@config-plugins/react-native-callkeep": "*", "@config-plugins/react-native-callkeep": "*",
"expo": "^45.0.0", "detox": "^20.37.0",
"detox": "^19.6.9", "expo": "~53",
"expo-localization": "~13.0.0", "expo-localization": "~16.1.5",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"expo-status-bar": "~1.3.0",
"expo-updates": "~0.13.1",
"fbjs": "^0.8.18", "fbjs": "^0.8.18",
"i18n-js": "^3.8.0", "i18n-js": "^3.8.0",
"luxon": "^1.27.0", "luxon": "^1.27.0",
"react": "17.0.2", "react": "19.0.0",
"react-dom": "17.0.2", "react-native": "0.79.2",
"react-native": "0.68.2", "react-native-adjust": "^5.1.0",
"react-native-adjust": "^4.29.6", "react-native-callkeep": "^4.3.16",
"react-native-callkeep": "^4.3.3", "react-native-safe-area-context": "5.3.0"
"react-native-safe-area-context": "4.2.4",
"react-native-web": "0.17.7"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.12.9",
"@babel/plugin-syntax-jsx": "^7.16.0", "@babel/plugin-syntax-jsx": "^7.16.0",
"@expo/metro-config": "~0.3.7", "@types/jest": "^29.4.0",
"@expo/xcpretty": "^4.1.2",
"@types/jest": "^26.0.19",
"@types/luxon": "^1.27.1", "@types/luxon": "^1.27.1",
"@types/react": "~17.0.21", "babel-jest": "^29.5.0",
"@types/react-native": "~0.64.12", "jest": "~29.7.0",
"babel-jest": "~25.2.6", "jest-circus": "^29.5.0",
"jest": "^26.6.3", "ts-jest": "^29.0.5",
"jest-circus": "^26.5.2", "typescript": "~5.8.3"
"ts-jest": "^26.4.4",
"typescript": "~4.3.5"
}, },
"private": true "private": true
} }
+1 -1
View File
@@ -9,7 +9,7 @@ set -eu
iosName=$1 iosName=$1
# Debug or Release # Debug or Release
configuration=$2 configuration=${3:-"Debug"}
# YES or NO # YES or NO
UseModernBuildSystem=${3:-"NO"} UseModernBuildSystem=${3:-"NO"}
+1 -1
View File
@@ -16,7 +16,7 @@ else
commandFile=$(dirname "$0")/start.command commandFile=$(dirname "$0")/start.command
cat > ${commandFile} << EOF cat > ${commandFile} << EOF
cd "\$(dirname "\$0")/.." cd "\$(dirname "\$0")/.."
# Run 'react-native start --help' to get more parameters # Run 'npx expo start --help' to get more parameters
yarn start --port ${port} yarn start --port ${port}
EOF EOF
# execute the file in a new command line window # execute the file in a new command line window
+1 -1
View File
@@ -8,7 +8,7 @@ export default function App() {
"APP_TOKEN", "APP_TOKEN",
AdjustConfig.EnvironmentSandbox AdjustConfig.EnvironmentSandbox
); );
Adjust.create(adjustConfig); Adjust.enable();
}, []); }, []);
return ( return (
-3
View File
@@ -1,3 +0,0 @@
const { createWebpackConfigAsync } = require("expo-yarn-workspaces/webpack");
module.exports = createWebpackConfigAsync;
+123
View File
@@ -0,0 +1,123 @@
import withAppleSettings, {
ChildPane,
Group,
RadioGroup,
Slider,
Switch,
TextField,
Title,
} from "@config-plugins/apple-settings";
import { MultiValue } from "@config-plugins/apple-settings/build/models";
import { ConfigContext, ExpoConfig } from "expo/config";
import path from "node:path";
const folderName = path.basename(__dirname);
const cleanName = folderName.replace(/[_\s-]/g, "");
const appId = "dev.bacon." + cleanName;
function withWhiteLabel(config: Partial<ExpoConfig>) {
if (!config.extra) config.extra = {};
// Expose CI env variables to the app
config.extra.CI = process.env.CI;
if (!config.ios) config.ios = {};
config.ios.bundleIdentifier = appId;
if (!config.android) config.android = {};
config.android.package = appId;
return config;
}
module.exports = ({ config }: ConfigContext): Partial<ExpoConfig> => {
config = withWhiteLabel(config);
config = withAppleSettings(config as ExpoConfig, {
// The name of the .plist file to generate. Root is the default and must be provided.
Root: {
// The locales object is optional. If provided, it will be used to generate the localized .strings files.
locales: {
// The Apple locale code. This will be used to generate the .strings file.
en: {
// Name of the localized key.
Name: "Text Field",
},
},
// The page object is required. It will be used to generate the .plist file.
// The contents will be converted directly to plist.
page: {
// The `PreferenceSpecifiers` defines the UI elements to generate.
PreferenceSpecifiers: [
Title({
title: "Title",
value: "Default Title",
key: "title_preference",
}),
// Helper models can be used to generate the UI elements using
// an API that's similar to React Native.
TextField({
title: "Name",
key: "name_preference",
value: "",
keyboardType: "Alphabet",
autoCapitalize: "None",
autoCorrect: "No",
}),
Switch({
title: "Enabled",
key: "enabled_preference",
value: true,
}),
Slider({
key: "slider_preference",
value: 0.5,
}),
// Broken https://forums.developer.apple.com/forums/thread/764519
// RadioGroup({
// value: "option1",
// key: "radio_preference",
// items: [
// {
// title: "Option 1",
// value: "option1",
// },
// {
// title: "Option 2",
// value: "option2",
// },
// ],
// }),
// MultiValue({
// title: "Multi Value",
// key: "multi_value_preference",
// value: "alpha",
// items: [
// {
// title: "Alpha",
// value: "alpha",
// short: "α",
// },
// {
// title: "Beta",
// value: "beta",
// short: "β",
// },
// {
// title: "Delta",
// value: "delta",
// short: "Δ",
// },
// {
// title: "Omega",
// value: "omega",
// short: "Ω",
// },
// ],
// }),
],
},
},
});
return config;
};
+8
View File
@@ -0,0 +1,8 @@
{
"expo": {
"name": "apple-settings",
"icon": "https://github.com/expo.png",
"platforms": ["ios"],
"plugins": [["expo-build-properties", { "ios": { "ccacheEnabled": true } }]]
}
}
File renamed without changes.
+20
View File
@@ -0,0 +1,20 @@
{
"name": "@config-plugins-app/apple-settings",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/apple-settings": "*",
"@react-native-community/slider": "4.5.6",
"@react-native-picker/picker": "2.11.0",
"expo": "~53",
"expo-splash-screen": "~0.30.7",
"react": "19.0.0",
"react-native": "0.79.2"
},
"private": true
}
+57
View File
@@ -0,0 +1,57 @@
import React from "react";
import { Button, Linking, StyleSheet, View } from "react-native";
import {
SettingsRadioGroup,
SettingsSlider,
SettingsSwitch,
SettingsTextInput,
SettingsTitle,
} from "./SettingsViews";
const App = () => {
return (
<View style={styles.container}>
{/* <SettingsTitle settingsKey="title_preference" /> */}
<SettingsTextInput
style={{
height: 40,
borderColor: "gray",
borderWidth: 1,
padding: 8,
}}
settingsKey="name_preference"
/>
<SettingsSwitch settingsKey="enabled_preference" />
<SettingsSlider settingsKey="slider_preference" />
<View />
<SettingsRadioGroup settingsKey="radio_preference">
<SettingsRadioGroup.Item label="Option 1" value="option1" />
<SettingsRadioGroup.Item label="Option 2" value="option2" />
</SettingsRadioGroup>
<View />
<Button
title="Launch Settings"
onPress={() => {
Linking.openSettings();
}}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "stretch",
paddingHorizontal: 56,
gap: 12,
},
value: {
fontSize: 24,
marginVertical: 12,
},
});
export default App;
+91
View File
@@ -0,0 +1,91 @@
import Slider from "@react-native-community/slider";
import { Picker } from "@react-native-picker/picker";
import React from "react";
import { Settings, Switch, Text, TextInput } from "react-native";
export function useSetting<T = string>(key: string): [T, (value: T) => void] {
const [value, setValue] = React.useState<T>(() => Settings.get(key));
React.useEffect(() => {
let isMounted = true;
const callback = Settings.watchKeys(key, () => {
if (isMounted) {
setValue(Settings.get(key));
}
});
return () => {
Settings.clearWatch(callback);
isMounted = false;
};
}, [key]);
return [
value,
(value) => {
Settings.set({ [key]: value });
setValue(value);
},
];
}
export function SettingsSlider({
settingsKey,
...props
}: { settingsKey: string } & Omit<
React.ComponentProps<typeof Slider>,
"selectedValue" | "onValueChange"
>) {
const [value, setValue] = useSetting<number>(settingsKey);
return <Slider {...props} value={value ?? 0} onValueChange={setValue} />;
}
export function SettingsRadioGroup({
settingsKey,
...props
}: { settingsKey: string } & Omit<
React.ComponentProps<typeof Picker>,
"selectedValue" | "onValueChange"
>) {
const [value, setValue] = useSetting<string>(settingsKey);
return (
<Picker
{...props}
selectedValue={value ?? "option1"}
onValueChange={setValue}
/>
);
}
SettingsRadioGroup.Item = Picker.Item;
export function SettingsSwitch({
settingsKey,
...props
}: { settingsKey: string } & Omit<
React.ComponentProps<typeof Switch>,
"value" | "onValueChange"
>) {
const [value, setValue] = useSetting<boolean>(settingsKey);
return <Switch {...props} value={!!value} onValueChange={setValue} />;
}
export function SettingsTitle({
settingsKey,
...props
}: { settingsKey: string } & Omit<
React.ComponentProps<typeof Text>,
"children"
>) {
const [value] = useSetting<string>(settingsKey);
return <Text {...props} children={value} />;
}
export function SettingsTextInput({
settingsKey,
...props
}: { settingsKey: string } & Omit<
React.ComponentProps<typeof TextInput>,
"value" | "onChangeText"
>) {
const [value, setValue] = useSetting<string>(settingsKey);
return <TextInput {...props} value={value} onChangeText={setValue} />;
}
File renamed without changes.
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
+5 -1
View File
@@ -1,6 +1,10 @@
{ {
"expo": { "expo": {
"icon": "https://icogen.vercel.app/api/icon", "name": "ffmpeg",
"icon": "https://github.com/expo.png",
"splash": {
"image": "https://github.com/expo.png"
},
"plugins": [ "plugins": [
[ [
"@config-plugins/ffmpeg-kit-react-native", "@config-plugins/ffmpeg-kit-react-native",
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
+5 -11
View File
@@ -9,17 +9,11 @@
}, },
"dependencies": { "dependencies": {
"@config-plugins/ffmpeg-kit-react-native": "*", "@config-plugins/ffmpeg-kit-react-native": "*",
"expo": "^45.0.0", "expo": "~53",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"react": "17.0.2", "ffmpeg-kit-react-native": "^6.0.2",
"react-native": "0.68.2", "react": "19.0.0",
"ffmpeg-kit-react-native": "^4.5.1", "react-native": "0.79.2"
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
}, },
"private": true "private": true
} }
+23 -10
View File
@@ -1,22 +1,36 @@
import { Session } from 'ffmpeg-kit-react-native'; import { Session } from "ffmpeg-kit-react-native";
import React from 'react'; import React from "react";
import { ActivityIndicator, SafeAreaView, ScrollView, Text, View } from 'react-native'; import {
ActivityIndicator,
SafeAreaView,
ScrollView,
Text,
View,
} from "react-native";
import { useMediaInfo, useResolvedValue } from './useMediaInfo'; import { useMediaInfo, useResolvedValue } from "./useMediaInfo";
export default function App() { export default function App() {
const session = useMediaInfo('http://techslides.com/demos/sample-videos/small.mp4'); const session = useMediaInfo(
"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"
);
if (!session) { if (!session) {
return <View style={{ return (
<View
style={{
flex: 1, flex: 1,
justifyContent: "center", justifyContent: "center",
alignItems: "center", alignItems: "center",
}}><ActivityIndicator /><Text>Loading...</Text></View> }}
>
<ActivityIndicator />
<Text>Loading...</Text>
</View>
);
} }
return <SessionInfo session={session} /> return <SessionInfo session={session} />;
} }
function SessionInfo(props: { session: Session }) { function SessionInfo(props: { session: Session }) {
@@ -35,7 +49,6 @@ function SessionInfo(props: { session: Session }) {
<Text>Duration: {duration}</Text> <Text>Duration: {duration}</Text>
<Text>Output: {output}</Text> <Text>Output: {output}</Text>
</ScrollView> </ScrollView>
</SafeAreaView> </SafeAreaView>
); );
} }
@@ -0,0 +1,4 @@
{
"compilerOptions": {},
"extends": "expo/tsconfig.base"
}
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
View File
Whitespace-only changes.
+6 -2
View File
@@ -1,11 +1,14 @@
{ {
"expo": { "expo": {
"icon": "https://icogen.vercel.app/api/icon", "name": "stickers",
"icon": "https://github.com/expo.png",
"platforms": ["ios"],
"plugins": [ "plugins": [
[ [
"@config-plugins/ios-stickers", "@config-plugins/ios-stickers",
{ {
"name": "Stickers", "name": "Stickers",
"stickerBundleId": "dev.bacon.iosstickers.stickers",
"icon": "./assets/imessage-icon.png", "icon": "./assets/imessage-icon.png",
"columns": 4, "columns": 4,
"stickers": [ "stickers": [
@@ -22,7 +25,8 @@
"./assets/stickers/teapot.png" "./assets/stickers/teapot.png"
] ]
} }
] ],
["expo-build-properties", { "ios": { "ccacheEnabled": true } }]
] ]
} }
} }
-6
View File
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-6
View File
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
+5 -10
View File
@@ -4,21 +4,16 @@
"version": "1.0.0", "version": "1.0.0",
"scripts": { "scripts": {
"start": "expo start --dev-client", "start": "expo start --dev-client",
"prebuild": "expo prebuild -p ios --template ./expo-template-bare-minimum-50.0.17.tgz",
"ios": "expo run:ios", "ios": "expo run:ios",
"android": "expo run:android" "android": "expo run:android"
}, },
"dependencies": { "dependencies": {
"@config-plugins/ios-stickers": "*", "@config-plugins/ios-stickers": "*",
"expo": "^45.0.0", "expo": "~53",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"react": "17.0.2", "react": "19.0.0",
"react-native": "0.68.2", "react-native": "0.79.2"
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
}, },
"private": true "private": true
} }
-1
View File
@@ -1,4 +1,3 @@
import React from "react";
import { Text, View } from "react-native"; import { Text, View } from "react-native";
export default function App() { export default function App() {
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
-8
View File
@@ -1,8 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f9b7&color_hex=0000ff",
"plugins": [
"@config-plugins/react-native-ble-plx"
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
-28
View File
@@ -1,28 +0,0 @@
{
"name": "@config-plugins-app/react-native-ble-plx",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-ble-plx": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-ble-plx": "^2.0.3",
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@types/react": "~17.0.21",
"@types/react-native": "~0.64.12",
"typescript": "~4.3.5"
},
"private": true
}
-32
View File
@@ -1,32 +0,0 @@
import React from 'react';
import { Text, View } from 'react-native';
import useBluetoothDevices, { useManager, useManagerState } from './useBluetoothDevices';
export default function App() {
const bleManager = useManager();
const state = useManagerState(bleManager);
console.log('Info:', state);
return (
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'blue'}}>
<Text style={{fontSize: 18, color: 'white'}}>State: {state}</Text>
{state === 'PoweredOn' && <DeviceScanner bleManager={bleManager} />}
</View>
);
}
function DeviceScanner({ bleManager }) {
const [devices] = useBluetoothDevices(bleManager);
React.useEffect(() => {
console.log(devices);
}, [devices]);
return (
<View>
{devices.filter(({name}) => name).map((device, index) => (<Text key={`-${index}`} style={{fontSize: 14, color: 'white'}}>{device.name}</Text>))}
</View>
)
}
@@ -1,70 +0,0 @@
import { useEffect, useMemo, useRef, useState } from "react";
import { BleManager, State, Device } from "react-native-ble-plx";
import { uniqBy } from "lodash";
export function useManager() {
return useMemo(() => new BleManager(), []);
}
export function useManagerState(bleManager: BleManager): State | null {
const [state, setState] = useState<State | null>(null);
const isMounted = useMounted();
useEffect(() => {
if (!bleManager) return;
bleManager.onStateChange((state) => {
if (isMounted.current) {
setState(state);
}
}, true);
}, [bleManager]);
return state;
}
function useMounted() {
const isMounted = useRef(true);
useEffect(() => {
isMounted.current = true;
return () => {
isMounted.current = false;
};
}, []);
return isMounted;
}
export function useBluetoothDevices(
bleManager: BleManager
): [Device[], null | string] {
const isMoutned = useMounted();
const [error, setError] = useState<string | null>(null);
const [devices, setDevices] = useState<Device[]>([]);
useEffect(() => {
bleManager.startDeviceScan(
[],
{ allowDuplicates: false },
(e, scannedDevice) => {
if (!isMoutned.current) return;
if (e) {
setError(e.message);
}
if (!scannedDevice) return;
setDevices((oldDevices) =>
uniqBy([...oldDevices, scannedDevice], "id")
);
}
);
return () => {
bleManager.stopDeviceScan();
};
}, [bleManager]);
return [devices, error];
}
export default useBluetoothDevices;
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
+7 -2
View File
@@ -1,6 +1,10 @@
{ {
"expo": { "expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=1f334", "name": "branch",
"icon": "https://github.com/expo.png",
"splash": {
"image": "https://github.com/expo.png"
},
"ios": { "ios": {
"config": { "config": {
"branch": { "branch": {
@@ -16,7 +20,8 @@
} }
}, },
"plugins": [ "plugins": [
"@config-plugins/react-native-branch" "@config-plugins/react-native-branch",
["expo-build-properties", { "ios": { "ccacheEnabled": true } }]
] ]
} }
} }
-6
View File
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-6
View File
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
+5 -11
View File
@@ -9,17 +9,11 @@
}, },
"dependencies": { "dependencies": {
"@config-plugins/react-native-branch": "*", "@config-plugins/react-native-branch": "*",
"expo": "^45.0.0", "expo": "~53",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"react": "17.0.2", "react": "19.0.0",
"react-native": "0.68.2", "react-native": "0.79.2",
"react-native-branch": "^5.4.0", "react-native-branch": "^6.6.0"
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
}, },
"private": true "private": true
} }
-1
View File
@@ -1,4 +1,3 @@
import React from "react";
import { Text, View } from "react-native"; import { Text, View } from "react-native";
export default function App() { export default function App() {
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
+7 -1
View File
@@ -1,6 +1,11 @@
{ {
"expo": { "expo": {
"name": "app-icon",
"icon": "./assets/icons/winter.png", "icon": "./assets/icons/winter.png",
"platforms": ["ios"],
"ios": {
"supportsTablet": true
},
"plugins": [ "plugins": [
[ [
"@config-plugins/react-native-dynamic-app-icon", "@config-plugins/react-native-dynamic-app-icon",
@@ -11,7 +16,8 @@
"./assets/icons/fall.png", "./assets/icons/fall.png",
"./assets/icons/solstice.png" "./assets/icons/solstice.png"
] ]
] ],
["expo-build-properties", { "ios": { "ccacheEnabled": true } }]
] ]
} }
} }
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
@@ -9,17 +9,11 @@
}, },
"dependencies": { "dependencies": {
"@config-plugins/react-native-dynamic-app-icon": "*", "@config-plugins/react-native-dynamic-app-icon": "*",
"expo": "^45.0.0", "expo": "~53",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"react": "17.0.2", "react": "19.0.0",
"react-native": "0.68.2", "react-native": "0.79.2",
"react-native-dynamic-app-icon": "^1.1.0", "react-native-dynamic-app-icon": "^1.1.0"
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
}, },
"private": true "private": true
} }
@@ -0,0 +1,4 @@
{
"compilerOptions": {},
"extends": "expo/tsconfig.base"
}
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
@@ -1,16 +0,0 @@
const path = require("path");
const folderName = path.basename(__dirname);
const cleanName = folderName.replace(/[_\s-]/g, "");
const appId = "dev.bacon." + cleanName;
module.exports = ({ config }) => {
if (!config.extra) config.extra = {};
// Expose CI env variables to the app
config.extra.CI = process.env.CI;
if (!config.ios) config.ios = {};
config.ios.bundleIdentifier = appId;
if (!config.android) config.android = {};
config.android.package = appId;
return config;
};
-8
View File
@@ -1,8 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon",
"plugins": [
"@config-plugins/react-native-google-cast"
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
@@ -1,25 +0,0 @@
{
"name": "@config-plugins-app/react-native-google-cast",
"main": "./index.js",
"version": "1.0.0",
"scripts": {
"start": "expo start --dev-client",
"ios": "expo run:ios",
"android": "expo run:android"
},
"dependencies": {
"@config-plugins/react-native-google-cast": "*",
"expo": "^45.0.0",
"expo-splash-screen": "~0.15.1",
"react": "17.0.2",
"react-native": "0.68.2",
"react-native-google-cast": "^4.1.2",
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
},
"private": true
}
-86
View File
@@ -1,86 +0,0 @@
import React from "react";
import { View, Text, Button } from "react-native";
import GoogleCast, {
CastState,
CastButton,
useCastState,
useRemoteMediaClient,
} from "react-native-google-cast";
export default function HomeScreen() {
const castState = useCastState();
const client = useRemoteMediaClient();
GoogleCast.showIntroductoryOverlay();
const isConnected = castState === CastState.CONNECTED;
function cast() {
client
.loadMedia({
mediaInfo: {
contentUrl:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4",
contentType: "video/mp4",
metadata: {
images: [
{
url: "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/480x270/BigBuckBunny.jpg",
},
],
title: "Big Buck Bunny",
subtitle:
"A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel, who are determined to squelch his happiness.",
studio: "Blender Foundation",
type: "movie",
},
streamDuration: 596, // seconds
},
startTime: 10, // seconds
})
.then(console.log)
.catch(console.warn);
}
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>State: {castState}</Text>
<CastButton style={{ width: 24, height: 24 }} />
<Button
title="Overlay"
onPress={() => {
GoogleCast.showIntroductoryOverlay();
}}
/>
<Button
title="Expanded Controls"
onPress={() => {
GoogleCast.showExpandedControls();
}}
/>
<Button
title="Cast"
disabled={!isConnected}
onPress={() => {
cast();
}}
/>
<Button
title="Pause"
disabled={!isConnected}
onPress={() => {
// cast()
client.pause();
}}
/>
<Button
title="Disconnect"
disabled={!isConnected}
onPress={() => {
GoogleCast.sessionManager.endCurrentSession(true);
}}
/>
</View>
);
}
-80
View File
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
View File
Whitespace-only changes.
+7 -2
View File
@@ -1,9 +1,14 @@
{ {
"expo": { "expo": {
"icon": "https://icogen.vercel.app/api/icon?icon=🎆", "name": "pdf",
"icon": "https://github.com/expo.png",
"splash": {
"image": "https://github.com/expo.png"
},
"plugins": [ "plugins": [
"@config-plugins/react-native-blob-util", "@config-plugins/react-native-blob-util",
"@config-plugins/react-native-pdf" "@config-plugins/react-native-pdf",
["expo-build-properties", { "ios": { "ccacheEnabled": true } }]
] ]
} }
} }
-6
View File
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
-6
View File
@@ -1,6 +0,0 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require("@expo/metro-config");
const config = getDefaultConfig(__dirname);
module.exports = config;
+6 -12
View File
@@ -10,18 +10,12 @@
"dependencies": { "dependencies": {
"@config-plugins/react-native-blob-util": "*", "@config-plugins/react-native-blob-util": "*",
"@config-plugins/react-native-pdf": "*", "@config-plugins/react-native-pdf": "*",
"expo": "^45.0.0", "expo": "~53",
"expo-splash-screen": "~0.15.1", "expo-splash-screen": "~0.30.7",
"react": "17.0.2", "react": "19.0.0",
"react-native": "0.68.2", "react-native": "0.79.2",
"react-native-blob-util": "^0.16.0", "react-native-blob-util": "^0.21.2",
"react-native-pdf": "^6.5.0", "react-native-pdf": "^6.7.7"
"expo-status-bar": "~1.3.0",
"react-dom": "17.0.2",
"react-native-web": "0.17.7"
},
"devDependencies": {
"@babel/core": "^7.12.9"
}, },
"private": true "private": true
} }
+2 -2
View File
@@ -1,9 +1,8 @@
import React from "react";
import { SafeAreaView, StyleSheet, useWindowDimensions } from "react-native"; import { SafeAreaView, StyleSheet, useWindowDimensions } from "react-native";
import Pdf from "react-native-pdf"; import Pdf from "react-native-pdf";
const source = { const source = {
uri: "https://samples.leanpub.com/thereactnativebook-sample.pdf", uri: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
cache: true, cache: true,
}; };
export default function App() { export default function App() {
@@ -12,6 +11,7 @@ export default function App() {
return ( return (
<SafeAreaView style={styles.container}> <SafeAreaView style={styles.container}>
<Pdf <Pdf
trustAllCerts={false}
source={source} source={source}
onLoadComplete={(numberOfPages, filePath) => { onLoadComplete={(numberOfPages, filePath) => {
console.log(`Number of pages: ${numberOfPages}`); console.log(`Number of pages: ${numberOfPages}`);
@@ -1,80 +0,0 @@
node_modules/**/*
.expo/*
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/
# macOS
.DS_Store
/artifacts
/scripts/start.command
/ios
/android
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
# The following patterns were generated by expo-cli
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# Bundle artifacts
*.jsbundle
# CocoaPods
/ios/Pods/
# Expo
.expo/
web-build/
dist/
# @end expo-cli
Whitespace-only changes.
@@ -1,16 +0,0 @@
const path = require("path");
const folderName = path.basename(__dirname);
const cleanName = folderName.replace(/[_\s-]/g, "");
const appId = "dev.bacon." + cleanName;
module.exports = ({ config }) => {
if (!config.extra) config.extra = {};
// Expose CI env variables to the app
config.extra.CI = process.env.CI;
if (!config.ios) config.ios = {};
config.ios.bundleIdentifier = appId;
if (!config.android) config.android = {};
config.android.package = appId;
return config;
};
-17
View File
@@ -1,17 +0,0 @@
{
"expo": {
"icon": "https://icogen.vercel.app/api/icon",
"plugins": [
[
"@config-plugins/react-native-quick-actions",
[
{
"title": "Take Photo",
"type": "photo",
"iconType": "UIApplicationShortcutIconTypeCapturePhoto"
}
]
]
]
}
}
@@ -1,6 +0,0 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
Loaded 100 of 356 files, more files were not shown because too many files have changed in this diff. Show more