Compare commits

..
Author SHA1 Message Date
semantic-release-bot 7a570fb05a chore: 2.0.0
## @config-plugins/android-jsc-intl [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-10)

### ⚠ BREAKING CHANGES

* **android-jsc-intl:** add SDK 45 support (#77)

### Features

* **android-jsc-intl:** add SDK 45 support ([#77](https://github.com/expo/config-plugins/issues/77)) ([aed0904](https://github.com/expo/config-plugins/commit/aed09045d61bc67b375a277b96bdc90ed5245d0f))
2022-05-10 00:05:35 +00:00
Evan Bacon aed09045d6 feat(android-jsc-intl)!: add SDK 45 support (#77)
* feat(android-jsc-intl)!: add SDK 45 support

* Update README.md
2022-05-09 17:02:24 -07:00
semantic-release-bot ad810c8b11 chore: 1.0.3
### @config-plugins/react-native-ble-plx [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-09)

### Other chores

* **react-native-ble-plx:** lint fix ([a99c60e](https://github.com/expo/config-plugins/commit/a99c60efd5fe53d369551c9a1323701ab14e935b))
2022-05-09 23:52:05 +00:00
dependabot[bot] e445cb4bc8 chore(deps): bump @expo/config-types in /packages/react-native-branch (#76)
Bumps [@expo/config-types](https://github.com/expo/expo-cli/tree/HEAD/packages/config-types) from 44.0.0 to 45.0.0.
- [Release notes](https://github.com/expo/expo-cli/releases)
- [Changelog](https://github.com/expo/expo-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expo/expo-cli/commits/HEAD/packages/config-types)

---
updated-dependencies:
- dependency-name: "@expo/config-types"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-09 16:48:18 -07:00
semantic-release-bot 9b22a71343 chore: 1.0.3
### @config-plugins/react-native-google-cast [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Other chores

* **react-native-google-cast:** lint fix ([21c4928](https://github.com/expo/config-plugins/commit/21c49280d49a3584863d8338e4b34c508249a595))
2022-03-23 19:03:10 +00:00
evanbacon e49a241243 fix: drop build folders 2022-03-23 13:59:17 -05:00
semantic-release-bot 2e06dcae54 chore: 1.0.3
### @config-plugins/react-native-adjust [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Bug Fixes

* upgrade google play-services-analytics to v18.0.1 ([a24ea1d](https://github.com/expo/config-plugins/commit/a24ea1df58e9d0639dc4fa016aae8a4e15d53529))
2022-03-23 17:17:22 +00:00
Yann Pringault a24ea1df58 fix: upgrade google play-services-analytics to v18.0.1 2022-03-23 12:03:11 -05:00
semantic-release-bot 50646306c5 chore: 1.0.4
### @config-plugins/android-jsc-intl [1.0.4](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)

### Other chores

* **android-jsc-intl:** lint fix ([5ca4e44](https://github.com/expo/config-plugins/commit/5ca4e44a49ad5c3153b4a2b15acf69db594d76b8))
2022-03-23 05:26:26 +00:00
dependabot[bot] 6fbb2192ad chore(deps): bump @expo/config-types in /packages/react-native-branch (#63)
Bumps [@expo/config-types](https://github.com/expo/expo-cli/tree/HEAD/packages/config-types) from 43.0.1 to 44.0.0.
- [Release notes](https://github.com/expo/expo-cli/releases)
- [Changelog](https://github.com/expo/expo-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expo/expo-cli/commits/HEAD/packages/config-types)

---
updated-dependencies:
- dependency-name: "@expo/config-types"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-23 00:22:42 -05:00
semantic-release-bot 7c3cda4f79 chore: 1.0.3
### @config-plugins/ios-stickers [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* **ios-stickers:** lint fix ([331ecb1](https://github.com/expo/config-plugins/commit/331ecb163f000578bc519ebe94f90d62374095d1))
2022-03-22 22:41:06 +00:00
Evan Bacon a78e569f54 test: add tests for core plugin methods (#64)
* test: add tests for core plugin methods

* Update test.yml
2022-03-22 17:38:19 -05:00
semantic-release-bot 3fee1c0e6e chore: 1.0.3
### @config-plugins/react-native-callkeep [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* **react-native-callkeep:** lint fix ([241d378](https://github.com/expo/config-plugins/commit/241d378a54327340df3663ef8f66cb8663e1e359))
2022-03-22 22:10:46 +00:00
evanbacon 31aee40ee3 chore(react-native-webrtc): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 21c49280d4 chore(react-native-google-cast): lint fix 2022-03-22 17:08:15 -05:00
evanbacon ce1a818564 chore(react-native-dynamic-app-icon): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 241d378a54 chore(react-native-callkeep): lint fix 2022-03-22 17:08:15 -05:00
evanbacon d1bf616248 chore(react-native-blob-util): lint fix 2022-03-22 17:08:15 -05:00
evanbacon a99c60efd5 chore(react-native-ble-plx): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 331ecb163f chore(ios-stickers): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 1003ddb2ec chore(detox): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 5ca4e44a49 chore(android-jsc-intl): lint fix 2022-03-22 17:08:15 -05:00
evanbacon 4103b4eb7d chore(react-native-branch): fix lint 2022-03-22 17:08:15 -05:00
evanbacon f8023bf04c ci: add lint step to CI 2022-03-22 17:08:15 -05:00
evanbacon 1b3e87f930 ci: use npm for dependabot 2022-03-22 15:24:55 -05:00
Evan Bacon 5e3ed6d5e4 ci: add dependabot config (#61)
* ci: add dependabot config and generation script

* docs: update contributing guide

* docs: update README with better contributing info

* chore: add dependabot script to root package.json
2022-03-22 15:19:13 -05:00
semantic-release-bot f46f340623 chore: 2.1.1
### [2.1.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
2022-03-22 18:31:24 +00:00
semantic-release-bot 99f18da4ed chore: 1.0.2
### [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Features

* **react-native-webrtc:** add config mod for Android minSdkVersion 24 ([ff8b167](https://github.com/expo/config-plugins/commit/ff8b1677640a560ca98abd8a83f349b3a1ee9017))

### Bug Fixes

* **detox:** use improved xml generation ([#47](https://github.com/expo/config-plugins/issues/47)) ([6324eb0](https://github.com/expo/config-plugins/commit/6324eb041b3b4eb2318c0a1ea0297e3b7bf28f7c))

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
* 2.1.0 ([e2d2b27](https://github.com/expo/config-plugins/commit/e2d2b27494b6a207932194c680de8cc6c1e7c02e))
* **repo:** add PR template ([#56](https://github.com/expo/config-plugins/issues/56)) ([eee366b](https://github.com/expo/config-plugins/commit/eee366bebcc42f4cdc4623f8b52790e3082a4472))
* 1.2.2 ([72fa3e1](https://github.com/expo/config-plugins/commit/72fa3e14ef3aa19c375457c81e8899c0ac13f4c9)), closes [#47](https://github.com/expo/config-plugins/issues/47)
* 2.0.2 ([480ec19](https://github.com/expo/config-plugins/commit/480ec19161587fb40fb2745511741f806083fc76)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#55](https://github.com/expo/config-plugins/issues/55)
2022-03-22 18:31:20 +00:00
semantic-release-bot 999cc00275 chore: 1.0.2
### [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Features

* **react-native-webrtc:** add config mod for Android minSdkVersion 24 ([ff8b167](https://github.com/expo/config-plugins/commit/ff8b1677640a560ca98abd8a83f349b3a1ee9017))

### Bug Fixes

* **detox:** use improved xml generation ([#47](https://github.com/expo/config-plugins/issues/47)) ([6324eb0](https://github.com/expo/config-plugins/commit/6324eb041b3b4eb2318c0a1ea0297e3b7bf28f7c))

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
* 1.0.1 ([39a9e63](https://github.com/expo/config-plugins/commit/39a9e63fe975122c5ffff0dd8975ea0dc7639720)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 2.1.0 ([e2d2b27](https://github.com/expo/config-plugins/commit/e2d2b27494b6a207932194c680de8cc6c1e7c02e))
* **repo:** add PR template ([#56](https://github.com/expo/config-plugins/issues/56)) ([eee366b](https://github.com/expo/config-plugins/commit/eee366bebcc42f4cdc4623f8b52790e3082a4472))
* 1.2.2 ([72fa3e1](https://github.com/expo/config-plugins/commit/72fa3e14ef3aa19c375457c81e8899c0ac13f4c9)), closes [#47](https://github.com/expo/config-plugins/issues/47)
* 2.0.2 ([480ec19](https://github.com/expo/config-plugins/commit/480ec19161587fb40fb2745511741f806083fc76)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#55](https://github.com/expo/config-plugins/issues/55)
2022-03-22 18:31:17 +00:00
semantic-release-bot 363d36b0bb chore: 1.0.2
### [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Features

* **react-native-webrtc:** add config mod for Android minSdkVersion 24 ([ff8b167](https://github.com/expo/config-plugins/commit/ff8b1677640a560ca98abd8a83f349b3a1ee9017))

### Bug Fixes

* **detox:** use improved xml generation ([#47](https://github.com/expo/config-plugins/issues/47)) ([6324eb0](https://github.com/expo/config-plugins/commit/6324eb041b3b4eb2318c0a1ea0297e3b7bf28f7c))

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
* 1.0.1 ([39a9e63](https://github.com/expo/config-plugins/commit/39a9e63fe975122c5ffff0dd8975ea0dc7639720)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 2.1.0 ([e2d2b27](https://github.com/expo/config-plugins/commit/e2d2b27494b6a207932194c680de8cc6c1e7c02e))
* **repo:** add PR template ([#56](https://github.com/expo/config-plugins/issues/56)) ([eee366b](https://github.com/expo/config-plugins/commit/eee366bebcc42f4cdc4623f8b52790e3082a4472))
* 1.0.1 ([7ffc38a](https://github.com/expo/config-plugins/commit/7ffc38a808f4af7d098e3bddd84e69d9be083589)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 1.2.2 ([72fa3e1](https://github.com/expo/config-plugins/commit/72fa3e14ef3aa19c375457c81e8899c0ac13f4c9)), closes [#47](https://github.com/expo/config-plugins/issues/47)
* 2.0.2 ([480ec19](https://github.com/expo/config-plugins/commit/480ec19161587fb40fb2745511741f806083fc76)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#55](https://github.com/expo/config-plugins/issues/55)
2022-03-22 18:31:12 +00:00
semantic-release-bot 37d11f1867 chore: 1.0.2
### [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)

### Features

* **react-native-webrtc:** add config mod for Android minSdkVersion 24 ([ff8b167](https://github.com/expo/config-plugins/commit/ff8b1677640a560ca98abd8a83f349b3a1ee9017))

### Bug Fixes

* **detox:** use improved xml generation ([#47](https://github.com/expo/config-plugins/issues/47)) ([6324eb0](https://github.com/expo/config-plugins/commit/6324eb041b3b4eb2318c0a1ea0297e3b7bf28f7c))

### Other chores

* 1.0.2 ([5f4e900](https://github.com/expo/config-plugins/commit/5f4e90059e4dd69579082aa7531b8ef7d2cc9a72)), closes [#60](https://github.com/expo/config-plugins/issues/60)
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
* **ci:** remove PR title validation action ([#62](https://github.com/expo/config-plugins/issues/62)) ([1648e85](https://github.com/expo/config-plugins/commit/1648e8598b959bf8140a2b984af0b8bb85a7e724))
* **ffmpeg-kit-react-native:** update plugin to use `AndroidConfig.Version.withBuildScriptExtMinimumVersion` ([#60](https://github.com/expo/config-plugins/issues/60)) ([c3a375b](https://github.com/expo/config-plugins/commit/c3a375b292d6405be7b3277d10ab4f8dbb006047))
* 1.0.1 ([39a9e63](https://github.com/expo/config-plugins/commit/39a9e63fe975122c5ffff0dd8975ea0dc7639720)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 1.0.1 ([97dcf1a](https://github.com/expo/config-plugins/commit/97dcf1aca63bb524217e731bded311a9c5dfdb28)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 2.1.0 ([e2d2b27](https://github.com/expo/config-plugins/commit/e2d2b27494b6a207932194c680de8cc6c1e7c02e))
* **repo:** add PR template ([#56](https://github.com/expo/config-plugins/issues/56)) ([eee366b](https://github.com/expo/config-plugins/commit/eee366bebcc42f4cdc4623f8b52790e3082a4472))
* 1.0.1 ([7ffc38a](https://github.com/expo/config-plugins/commit/7ffc38a808f4af7d098e3bddd84e69d9be083589)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#48](https://github.com/expo/config-plugins/issues/48) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#49](https://github.com/expo/config-plugins/issues/49) [#49](https://github.com/expo/config-plugins/issues/49) [#46](https://github.com/expo/config-plugins/issues/46) [#3](https://github.com/expo/config-plugins/issues/3) [#55](https://github.com/expo/config-plugins/issues/55)
* 1.2.2 ([72fa3e1](https://github.com/expo/config-plugins/commit/72fa3e14ef3aa19c375457c81e8899c0ac13f4c9)), closes [#47](https://github.com/expo/config-plugins/issues/47)
* 2.0.2 ([480ec19](https://github.com/expo/config-plugins/commit/480ec19161587fb40fb2745511741f806083fc76)), closes [#52](https://github.com/expo/config-plugins/issues/52) [#54](https://github.com/expo/config-plugins/issues/54) [#53](https://github.com/expo/config-plugins/issues/53) [#55](https://github.com/expo/config-plugins/issues/55)
2022-03-22 18:31:09 +00:00
91 changed files with 1700 additions and 280 deletions

No files matched your search

+91
View File
@@ -0,0 +1,91 @@
# 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
+6 -1
View File
@@ -40,6 +40,7 @@ jobs:
ios-stickers,
react-native-ble-plx,
react-native-blob-util,
react-native-branch,
react-native-google-cast,
react-native-pdf,
# react-native-quick-actions,
@@ -54,8 +55,12 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- name: Lint ${{ matrix.package }}
run: yarn lint --max-warnings 0
working-directory: packages/${{ matrix.package }}
- name: Test ${{ matrix.package }}
run: cd packages/${{ matrix.package }} && yarn test
run: yarn test
working-directory: packages/${{ matrix.package }}
env:
CI: true
EXPO_DEBUG: true
+16 -4
View File
@@ -5,10 +5,22 @@
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/`.)
2. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR tile.
3. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
4. Make sure all tests pass on GitHub Actions.
5. Wait for a review and adjust the code if necessary.
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.
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.
6. Wait for a review and adjust the code if necessary.
## Creating a plugin
- Plugins can be generated by running `yarn gen`.
- Add plugins to the example in [`apps/app`](/apps/app/package.json) to test them.
- The example app should always stay in a state of regeneration.
Be sure to run the following scripts in the **root directory** to update automation tools:
- Update dependabot: `yarn update-dependabot-config`
- Update the issue template: `yarn update-issue-template`
## Publishing a release
+7 -6
View File
@@ -1,10 +1,11 @@
# Expo Config Plugins
A collection of custom WIP config plugins for Expo dev clients. Use at your own discretion.
- A collection of [Expo config plugins](https://docs.expo.dev/guides/config-plugins/) for configuring the `expo prebuild` command.
- 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.
- 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.
## Contributing!
## Creating a plugin
- Plugins can be generated by running `yarn gen`.
- Add plugins to the example in [`apps/app`](/apps/app/package.json) to test them.
- The example app should always stay in a state of regeneration.
See the [contributing guide](/CONTRIBUTING.md).
+2
View File
@@ -6,6 +6,7 @@
"postinstall": "expo-yarn-workspaces check-workspace-dependencies",
"gen": "ts-node ./scripts/generate-plugin.ts",
"update-issue-template": "ts-node ./scripts/gh-issues-config.ts",
"update-dependabot-config": "ts-node ./scripts/update-dependabot-config.ts",
"start": "lerna run build --parallel -- --watch",
"prepare": "lerna run prepare --parallel"
},
@@ -28,6 +29,7 @@
"semantic-release": "^19.0.2",
"@types/js-yaml": "^4.0.5",
"@types/prompts": "^2.0.13",
"eslint": "^7.25.0",
"expo-yarn-workspaces": "^1.5.1",
"js-yaml": "^4.1.0",
"lerna": "3.4.1",
+18
View File
@@ -1,3 +1,21 @@
## @config-plugins/android-jsc-intl [2.0.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-10)
### ⚠ BREAKING CHANGES
* **android-jsc-intl:** add SDK 45 support (#77)
### Features
* **android-jsc-intl:** add SDK 45 support ([#77](https://github.com/expo/config-plugins/issues/77)) ([aed0904](https://github.com/expo/config-plugins/commit/aed09045d61bc67b375a277b96bdc90ed5245d0f))
### @config-plugins/android-jsc-intl [1.0.4](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)
### Other chores
* **android-jsc-intl:** lint fix ([5ca4e44](https://github.com/expo/config-plugins/commit/5ca4e44a49ad5c3153b4a2b15acf69db594d76b8))
### @config-plugins/android-jsc-intl [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
+1 -1
View File
@@ -6,7 +6,7 @@ Adding this plugin lets you use `Intl` in your Android app, without using Hermes
## Expo installation
> Tested against Expo SDK 44
> Tested against Expo SDK 45
This package cannot be used in the "Expo Go" app because [it requires custom native code](https://docs.expo.io/workflow/customizing/).
+4 -6
View File
@@ -8,13 +8,11 @@ const config_plugins_1 = require("@expo/config-plugins");
*/
const withAndroidJscIntl = (config) => {
// Return the modified config.
return config_plugins_1.withAppBuildGradle(config, config => {
if (config.modResults.language === 'groovy') {
config.modResults.contents = config.modResults.contents.replace('org.webkit:android-jsc:+', 'org.webkit:android-jsc-intl:+');
}
else {
throw new Error('[@expo/config-plugins][withAndroidJscIntl] Cannot enable Intl in Android JSC app gradle because the build.gradle is not groovy.');
return config_plugins_1.withAppBuildGradle(config, (config) => {
if (config.modResults.language !== "groovy") {
throw new Error("[@expo/config-plugins][withAndroidJscIntl] Cannot enable Intl in Android JSC app gradle because the build.gradle is not groovy.");
}
config.modResults.contents = config.modResults.contents.replace("org.webkit:android-jsc:+", "org.webkit:android-jsc-intl:+");
return config;
});
};
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/android-jsc-intl",
"version": "1.0.3",
"version": "2.0.0",
"description": "Config plugin for android-jsc-intl package",
"main": "build/withAndroidJscIntl.js",
"types": "build/withAndroidJscIntl.d.ts",
@@ -31,7 +31,7 @@
"preset": "expo-module-scripts"
},
"dependencies": {
"@expo/config-plugins": "^4.1.0"
"@expo/config-plugins": "~4.1.4"
},
"devDependencies": {
"expo-module-scripts": "^2.0.0"
@@ -2,22 +2,25 @@ import { ConfigPlugin, withAppBuildGradle } from "@expo/config-plugins";
/**
* Apply android-jsc-intl configuration for Expo SDK 42 projects.
*
*
* This plugin lets you access the `Intl` API in Android apps (without Hermes).
*/
const withAndroidJscIntl: ConfigPlugin = (config) => {
// Return the modified config.
return withAppBuildGradle(config, config => {
if (config.modResults.language === 'groovy') {
config.modResults.contents = config.modResults.contents.replace(
'org.webkit:android-jsc:+',
'org.webkit:android-jsc-intl:+'
)
} else {
throw new Error('[@expo/config-plugins][withAndroidJscIntl] Cannot enable Intl in Android JSC app gradle because the build.gradle is not groovy.')
return withAppBuildGradle(config, (config) => {
if (config.modResults.language !== "groovy") {
throw new Error(
"[@expo/config-plugins][withAndroidJscIntl] Cannot enable Intl in Android JSC app gradle because the build.gradle is not groovy."
);
}
return config
config.modResults.contents = config.modResults.contents.replace(
"org.webkit:android-jsc:+",
"org.webkit:android-jsc-intl:+"
);
return config;
});
};
export default withAndroidJscIntl
export default withAndroidJscIntl;
@@ -7,13 +7,13 @@ describe(getTemplateFile, () => {
it(`returns only base-config when subdomains is '*'`, () => {
const content = getTemplateFile("*");
expect(content).toMatchSnapshot();
expect(content).toMatch(/base\-config/);
expect(content).not.toMatch(/domain\-config/);
expect(content).toMatch(/base-config/);
expect(content).not.toMatch(/domain-config/);
});
it(`returns domain-config when subdomains is an array`, () => {
const content = getTemplateFile(["localhost"]);
expect(content).toMatchSnapshot();
expect(content).toMatch(/domain\-config/);
expect(content).toMatch(/domain-config/);
expect(content).toMatch(/localhost/);
});
});
+4 -1
View File
@@ -8,7 +8,10 @@ import withDetoxProjectGradle from "./withDetoxProjectGradle";
import withDetoxTestAppGradle from "./withDetoxTestAppGradle";
import { withDetoxTestClass } from "./withDetoxTestClass";
import withKotlinGradle from "./withKotlinGradle";
import { withNetworkSecurityConfigManifest, SubdomainsType } from "./withNetworkSecurityConfig";
import {
withNetworkSecurityConfigManifest,
SubdomainsType,
} from "./withNetworkSecurityConfig";
import withProguardGradle from "./withProguardGradle";
const withDetox: ConfigPlugin<{
+1 -1
View File
@@ -28,7 +28,7 @@ const withDetoxTestAppGradle: ConfigPlugin = (config) => {
export function setGradleAndroidTestImplementation(
buildGradle: string
): string {
const pattern = /androidTestImplementation\(\'com.wix:detox:\+\'\)/g;
const pattern = /androidTestImplementation\('com.wix:detox:\+'\)/g;
if (buildGradle.match(pattern)) {
return buildGradle;
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { ConfigPlugin, withDangerousMod } from "@expo/config-plugins";
import * as path from "path";
import * as fs from "fs";
import assert from "assert";
import fs from "fs";
import path from "path";
/**
* Copied from the [official template file](https://github.com/wix/Detox/blob/master/examples/demo-react-native/android/app/src/androidTest/java/com/example/DetoxTest.java).
@@ -4,9 +4,9 @@ import {
withAndroidManifest,
withDangerousMod,
} from "@expo/config-plugins";
import * as path from "path";
import * as fs from "fs";
import assert from "assert";
import fs from "fs";
import path from "path";
export type SubdomainsType = string[] | "*";
@@ -31,7 +31,7 @@ export function getTemplateFile(subdomains: SubdomainsType): string {
const content = getTemplateConfigContent(subdomains);
/**
* May not have new lines or spaces in the beginning.
* Otherwise build fails with:
* Otherwise build fails with:
* "AAPT: error: XML or text declaration not at start of entity"
*/
return `<?xml version="1.0" encoding="utf-8"?>
@@ -69,11 +69,9 @@ const withNetworkSecurityConfigFile: ConfigPlugin<{
/**
* [Step 6](https://github.com/wix/Detox/blob/master/docs/Introduction.Android.md#6-enable-clear-text-unencrypted-traffic-for-detox). Link the `network_security_config.xml` file to the `AndroidManifest.xml`.
*/
export const withNetworkSecurityConfigManifest: ConfigPlugin<
{
subdomains: SubdomainsType;
} | void
> = (config, props) => {
export const withNetworkSecurityConfigManifest: ConfigPlugin<{
subdomains: SubdomainsType;
} | void> = (config, props) => {
if (!props || !props.subdomains) {
// (*) 10.0.2.2 for Google emulators, 10.0.3.2 for Genymotion emulators.
// https://developer.android.com/training/articles/security-config
+1 -1
View File
@@ -23,7 +23,7 @@ const withProguardGradle: ConfigPlugin = (config) => {
};
export function addDetoxProguardRules(buildGradle: string): string {
const pattern = /detox\/proguard\-rules\-app\.pro/g;
const pattern = /detox\/proguard-rules-app\.pro/g;
if (buildGradle.match(pattern)) {
return buildGradle;
}
+7
View File
@@ -1,3 +1,10 @@
### @config-plugins/ios-stickers [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* **ios-stickers:** lint fix ([331ecb1](https://github.com/expo/config-plugins/commit/331ecb163f000578bc519ebe94f90d62374095d1))
### @config-plugins/ios-stickers [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
+1 -1
View File
@@ -4,12 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeStickersProps = void 0;
const path_1 = __importDefault(require("path"));
const schema_utils_1 = require("schema-utils");
const options_json_1 = __importDefault(require("./options.json"));
const withStickerAssets_1 = require("./withStickerAssets");
const withStickerInfoPlist_1 = require("./withStickerInfoPlist");
const withStickerXcodeTarget_1 = require("./withStickerXcodeTarget");
const path_1 = __importDefault(require("path"));
// TODO: Maybe the name is better to use as a prop...
const sizeColumnMap = {
4: "small",
+3 -3
View File
@@ -70,9 +70,9 @@ const pbxTargetDependency = "PBXTargetDependency";
const pbxContainerItemProxy = "PBXContainerItemProxy";
function addStickersTarget(proj, name, bundleId, subfolder) {
// Setup uuid and name of new target
let targetUuid = proj.generateUuid();
let targetType = "app_extension_messages_sticker_pack";
let targetName = name.trim();
const targetUuid = proj.generateUuid();
const targetType = "app_extension_messages_sticker_pack";
const targetName = name.trim();
const bundleName = subfolder.trim().split(" ").join("-");
// Check type against list of allowed target types
if (!targetName) {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/ios-stickers",
"version": "1.0.2",
"version": "1.0.3",
"description": "Config plugin to auto configure iOS iMessage stickers",
"main": "build/withStickerPack.js",
"types": "build/withStickerPack.d.ts",
+2 -1
View File
@@ -1,10 +1,11 @@
import { ConfigPlugin } from "@expo/config-plugins";
import path from "path";
import { validate } from "schema-utils";
import schema from "./options.json";
import { Props, Sticker, withStickerAssets } from "./withStickerAssets";
import { withStickersPlist } from "./withStickerInfoPlist";
import { withStickerXcodeTarget } from "./withStickerXcodeTarget";
import path from "path";
// TODO: Maybe the name is better to use as a prop...
const sizeColumnMap: Record<number, string> = {
+3 -3
View File
@@ -91,9 +91,9 @@ export function addStickersTarget(
subfolder: string
) {
// Setup uuid and name of new target
let targetUuid = proj.generateUuid();
let targetType = "app_extension_messages_sticker_pack";
let targetName = name.trim();
const targetUuid = proj.generateUuid();
const targetType = "app_extension_messages_sticker_pack";
const targetName = name.trim();
const bundleName = subfolder.trim().split(" ").join("-");
// Check type against list of allowed target types
@@ -1,3 +1,10 @@
### @config-plugins/react-native-adjust [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)
### Bug Fixes
* upgrade google play-services-analytics to v18.0.1 ([a24ea1d](https://github.com/expo/config-plugins/commit/a24ea1df58e9d0639dc4fa016aae8a4e15d53529))
### @config-plugins/react-native-adjust [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
-5
View File
@@ -1,5 +0,0 @@
import { ConfigPlugin } from "@expo/config-plugins";
declare const _default: ConfigPlugin<void | {
targetAndroid12?: boolean | undefined;
}>;
export default _default;
-92
View File
@@ -1,92 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
const withXcodeLinkBinaryWithLibraries = (config, { library, status }) => {
return config_plugins_1.withXcodeProject(config, (config) => {
const options = status === "optional" ? { weak: true } : {};
const target = config_plugins_1.IOSConfig.XcodeUtils.getApplicationNativeTarget({
project: config.modResults,
projectName: config.modRequest.projectName,
});
config.modResults.addFramework(library, {
target: target.uuid,
...options,
});
return config;
});
};
const addAndroidPackagingOptions = (src) => {
return generateCode_1.mergeContents({
tag: "react-native-play-services-analytics",
src,
newSrc: `
implementation 'com.google.android.gms:play-services-analytics:18.0.0'
implementation 'com.android.installreferrer:installreferrer:2.2'
`,
anchor: /dependencies(?:\s+)?\{/,
// Inside the dependencies block.
offset: 1,
comment: "//",
});
};
const withGradle = (config) => {
return config_plugins_1.withAppBuildGradle(config, (config) => {
if (config.modResults.language === "groovy") {
config.modResults.contents = addAndroidPackagingOptions(config.modResults.contents).contents;
}
else {
throw new Error("Cannot add Play Services maven gradle because the project build.gradle is not groovy");
}
return config;
});
};
/**
* Apply react-native-adjust configuration for Expo SDK +44 projects.
*/
const withAdjustPlugin = (config, _props) => {
const props = _props || {};
config = withXcodeLinkBinaryWithLibraries(config, {
library: "iAd.framework",
status: "optional",
});
config = withXcodeLinkBinaryWithLibraries(config, {
library: "AdServices.framework",
status: "optional",
});
config = withXcodeLinkBinaryWithLibraries(config, {
library: "AdSupport.framework",
status: "optional",
});
config = withXcodeLinkBinaryWithLibraries(config, {
library: "StoreKit.framework",
status: "optional",
});
config = withXcodeLinkBinaryWithLibraries(config, {
library: "AppTrackingTransparency.framework",
status: "optional",
});
if (props.targetAndroid12) {
config = config_plugins_1.AndroidConfig.Version.withBuildScriptExtMinimumVersion(config, {
name: "compileSdkVersion",
minVersion: 31,
});
config = config_plugins_1.AndroidConfig.Permissions.withPermissions(config, [
"com.google.android.gms.permission.AD_ID",
]);
}
config = withGradle(config);
// Return the modified config.
return config;
};
const pkg = {
// Prevent this plugin from being run more than once.
// This pattern enables users to safely migrate off of this
// out-of-tree `@config-plugins/react-native-adjust` to a future
// upstream plugin in `react-native-adjust`
name: "react-native-adjust",
// Indicates that this plugin is dangerously linked to a module,
// and might not work with the latest version of that module.
version: "UNVERSIONED",
};
exports.default = config_plugins_1.createRunOncePlugin(withAdjustPlugin, pkg.name, pkg.version);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-adjust",
"version": "1.0.2",
"version": "1.0.3",
"description": "Config plugin to auto configure Adjust SDK on prebuild",
"main": "build/withReactNativeAdjust.js",
"types": "build/withReactNativeAdjust.d.ts",
@@ -34,7 +34,7 @@ const addAndroidPackagingOptions = (src: string) => {
tag: "react-native-play-services-analytics",
src,
newSrc: `
implementation 'com.google.android.gms:play-services-analytics:18.0.0'
implementation 'com.google.android.gms:play-services-analytics:18.0.1'
implementation 'com.android.installreferrer:installreferrer:2.2'
`,
anchor: /dependencies(?:\s+)?\{/,
@@ -1,3 +1,10 @@
### @config-plugins/react-native-ble-plx [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-05-09)
### Other chores
* **react-native-ble-plx:** lint fix ([a99c60e](https://github.com/expo/config-plugins/commit/a99c60efd5fe53d369551c9a1323701ab14e935b))
### @config-plugins/react-native-ble-plx [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
-1
View File
@@ -1,5 +1,4 @@
"use strict";
/* eslint-disable flowtype/no-types-missing-file-annotation */
Object.defineProperty(exports, "__esModule", { value: true });
exports.BackgroundMode = void 0;
const config_plugins_1 = require("@expo/config-plugins");
+1 -1
View File
@@ -1,5 +1,5 @@
import { ConfigPlugin, AndroidConfig } from "@expo/config-plugins";
declare type InnerManifest = AndroidConfig.Manifest.AndroidManifest['manifest'];
declare type InnerManifest = AndroidConfig.Manifest.AndroidManifest["manifest"];
declare type ManifestPermission = InnerManifest["permission"];
declare type AndroidManifest = {
manifest: InnerManifest & {
-1
View File
@@ -1,5 +1,4 @@
"use strict";
/* eslint-disable flowtype/no-types-missing-file-annotation */
Object.defineProperty(exports, "__esModule", { value: true });
exports.addBLEHardwareFeatureToManifest = exports.addFineControlPermissionToManifest = exports.withBLEAndroidManifest = void 0;
const config_plugins_1 = require("@expo/config-plugins");
+1 -1
View File
@@ -1,4 +1,4 @@
import { ConfigPlugin } from '@expo/config-plugins';
import { ConfigPlugin } from "@expo/config-plugins";
export declare enum BackgroundMode {
Central = "central",
Peripheral = "peripheral"
+4 -5
View File
@@ -1,7 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withBLEBackgroundModes = exports.BackgroundMode = void 0;
/* eslint-disable flowtype/no-types-missing-file-annotation */
const config_plugins_1 = require("@expo/config-plugins");
var BackgroundMode;
(function (BackgroundMode) {
@@ -9,18 +8,18 @@ var BackgroundMode;
BackgroundMode["Peripheral"] = "peripheral";
})(BackgroundMode = exports.BackgroundMode || (exports.BackgroundMode = {}));
function ensureKey(arr, key) {
if (!arr.find(mode => mode === key)) {
if (!arr.find((mode) => mode === key)) {
arr.push(key);
}
return arr;
}
const centralKey = 'bluetooth-central';
const peripheralKey = 'bluetooth-peripheral';
const centralKey = "bluetooth-central";
const peripheralKey = "bluetooth-peripheral";
/**
* Append `UIBackgroundModes` to the `Info.plist`.
*/
const withBLEBackgroundModes = (c, modes) => {
return config_plugins_1.withInfoPlist(c, config => {
return config_plugins_1.withInfoPlist(c, (config) => {
if (!Array.isArray(config.modResults.UIBackgroundModes)) {
config.modResults.UIBackgroundModes = [];
}
-1
View File
@@ -1,7 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withBluetoothPermissions = void 0;
/* eslint-disable flowtype/no-types-missing-file-annotation */
const config_plugins_1 = require("@expo/config-plugins");
const BLUETOOTH_ALWAYS = "Allow $(PRODUCT_NAME) to connect to bluetooth devices";
const BLUETOOTH_PERIPHERAL_USAGE = "Allow $(PRODUCT_NAME) to connect to bluetooth devices";
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-ble-plx",
"version": "1.0.2",
"version": "1.0.3",
"description": "Config plugin to auto configure react-native-ble-plx on prebuild",
"main": "build/withBLE.js",
"types": "build/withBLE.d.ts",
@@ -1,42 +1,44 @@
import { AndroidConfig, XML } from '@expo/config-plugins'
import { AndroidConfig, XML } from "@expo/config-plugins";
import { resolve } from "path";
import { resolve } from 'path'
import {
addBLEHardwareFeatureToManifest,
addFineControlPermissionToManifest,
} from "../withBLEAndroidManifest";
import { addBLEHardwareFeatureToManifest, addFineControlPermissionToManifest } from '../withBLEAndroidManifest'
const { readAndroidManifestAsync } = AndroidConfig.Manifest;
const { readAndroidManifestAsync } = AndroidConfig.Manifest
const sampleManifestPath = resolve(__dirname, "fixtures/AndroidManifest.xml");
const sampleManifestPath = resolve(__dirname, 'fixtures/AndroidManifest.xml')
describe('addFineControlPermissionToManifest', () => {
describe("addFineControlPermissionToManifest", () => {
it(`adds element`, async () => {
let androidManifest = await readAndroidManifestAsync(sampleManifestPath)
androidManifest = await addFineControlPermissionToManifest(androidManifest)
expect(androidManifest.manifest['uses-permission-sdk-23']).toStrictEqual([
{ $: { 'android:name': 'android.permission.ACCESS_FINE_LOCATION' } }
])
let androidManifest = await readAndroidManifestAsync(sampleManifestPath);
androidManifest = await addFineControlPermissionToManifest(androidManifest);
expect(androidManifest.manifest["uses-permission-sdk-23"]).toStrictEqual([
{ $: { "android:name": "android.permission.ACCESS_FINE_LOCATION" } },
]);
// Sanity
expect(XML.format(androidManifest)).toMatch(
/<uses-permission-sdk-23 android:name="android\.permission\.ACCESS_FINE_LOCATION"\/>/
)
})
})
describe('addBLEHardwareFeatureToManifest', () => {
);
});
});
describe("addBLEHardwareFeatureToManifest", () => {
it(`adds element`, async () => {
let androidManifest = await readAndroidManifestAsync(sampleManifestPath)
androidManifest = await addBLEHardwareFeatureToManifest(androidManifest)
let androidManifest = await readAndroidManifestAsync(sampleManifestPath);
androidManifest = await addBLEHardwareFeatureToManifest(androidManifest);
expect(androidManifest.manifest['uses-feature']).toStrictEqual([
expect(androidManifest.manifest["uses-feature"]).toStrictEqual([
{
$: {
'android:name': 'android.hardware.bluetooth_le',
'android:required': 'true'
}
}
])
"android:name": "android.hardware.bluetooth_le",
"android:required": "true",
},
},
]);
// Sanity
expect(XML.format(androidManifest)).toMatch(
/<uses-feature android:name="android\.hardware\.bluetooth_le" android:required="true"\/>/
)
})
})
);
});
});
@@ -1,5 +1,3 @@
/* eslint-disable flowtype/no-types-missing-file-annotation */
import {
AndroidConfig,
ConfigPlugin,
@@ -1,12 +1,10 @@
/* eslint-disable flowtype/no-types-missing-file-annotation */
import {
ConfigPlugin,
withAndroidManifest,
AndroidConfig,
} from "@expo/config-plugins";
type InnerManifest = AndroidConfig.Manifest.AndroidManifest['manifest'];
type InnerManifest = AndroidConfig.Manifest.AndroidManifest["manifest"];
type ManifestPermission = InnerManifest["permission"];
@@ -1,42 +1,50 @@
/* eslint-disable flowtype/no-types-missing-file-annotation */
import { ConfigPlugin, withInfoPlist } from '@expo/config-plugins'
import { ConfigPlugin, withInfoPlist } from "@expo/config-plugins";
export enum BackgroundMode {
Central = 'central',
Peripheral = 'peripheral'
Central = "central",
Peripheral = "peripheral",
}
function ensureKey(arr: string[], key: string) {
if (!arr.find(mode => mode === key)) {
arr.push(key)
if (!arr.find((mode) => mode === key)) {
arr.push(key);
}
return arr
return arr;
}
const centralKey = 'bluetooth-central'
const peripheralKey = 'bluetooth-peripheral'
const centralKey = "bluetooth-central";
const peripheralKey = "bluetooth-peripheral";
/**
* Append `UIBackgroundModes` to the `Info.plist`.
*/
export const withBLEBackgroundModes: ConfigPlugin<BackgroundMode[]> = (c, modes) => {
return withInfoPlist(c, config => {
export const withBLEBackgroundModes: ConfigPlugin<BackgroundMode[]> = (
c,
modes
) => {
return withInfoPlist(c, (config) => {
if (!Array.isArray(config.modResults.UIBackgroundModes)) {
config.modResults.UIBackgroundModes = []
config.modResults.UIBackgroundModes = [];
}
if (modes.includes(BackgroundMode.Central)) {
config.modResults.UIBackgroundModes = ensureKey(config.modResults.UIBackgroundModes, centralKey)
config.modResults.UIBackgroundModes = ensureKey(
config.modResults.UIBackgroundModes,
centralKey
);
}
if (modes.includes(BackgroundMode.Peripheral)) {
config.modResults.UIBackgroundModes = ensureKey(config.modResults.UIBackgroundModes, peripheralKey)
config.modResults.UIBackgroundModes = ensureKey(
config.modResults.UIBackgroundModes,
peripheralKey
);
}
// Prevent empty array
if (!config.modResults.UIBackgroundModes.length) {
delete config.modResults.UIBackgroundModes
delete config.modResults.UIBackgroundModes;
}
return config
})
}
return config;
});
};
@@ -1,4 +1,3 @@
/* eslint-disable flowtype/no-types-missing-file-annotation */
import { ConfigPlugin, withInfoPlist } from "@expo/config-plugins";
const BLUETOOTH_ALWAYS =
@@ -1,4 +1,5 @@
import { AndroidConfig, XML } from "@expo/config-plugins";
import { XML } from "@expo/config-plugins";
import { appendDownloadCompleteAction } from "../withReactNativeBlobUtil";
const fixture = `
+1 -1
View File
@@ -2,5 +2,5 @@ import type { ConfigPlugin, InfoPlist } from "@expo/config-plugins";
import type { ExpoConfig } from "@expo/config-types";
import type { ConfigData } from "./types";
export declare function getBranchApiKey(config: Pick<ExpoConfig, "ios">): string | null;
export declare function setBranchApiKey(apiKey: string, infoPlist: InfoPlist): InfoPlist;
export declare function setBranchApiKey(apiKey: string | null, infoPlist: InfoPlist): InfoPlist;
export declare const withBranchIOS: ConfigPlugin<ConfigData>;
+1 -1
View File
@@ -34,7 +34,7 @@
},
"dependencies": {
"@expo/config-plugins": "^4.1.0",
"@expo/config-types": "^43.0.1"
"@expo/config-types": "^45.0.0"
},
"devDependencies": {
"expo-module-scripts": "^2.0.0"
@@ -0,0 +1,24 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.expo.mycoolapp">
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<!-- Support checking for http(s) links via the Linking API -->
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme">
<activity android:name=".MainActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>
@@ -0,0 +1,53 @@
import { AndroidConfig } from "@expo/config-plugins";
import { resolve } from "path";
import { getBranchApiKey, setBranchApiKey } from "../withBranchAndroid";
const { findMetaDataItem, getMainApplication, readAndroidManifestAsync } =
AndroidConfig.Manifest;
const sampleManifestPath = resolve(
__dirname,
"./fixtures",
"react-native-AndroidManifest.xml"
);
describe(getBranchApiKey, () => {
it(`returns null if no android branch api key is provided`, () => {
expect(getBranchApiKey({ android: { config: {} } } as any)).toBe(null);
});
it(`returns apikey if android branch api key is provided`, () => {
expect(
getBranchApiKey({
android: { config: { branch: { apiKey: "MY-API-KEY" } } },
} as any)
).toBe("MY-API-KEY");
});
});
describe(setBranchApiKey, () => {
it("sets branch api key in AndroidManifest.xml if given", async () => {
let androidManifestJson = await readAndroidManifestAsync(
sampleManifestPath
);
androidManifestJson = await setBranchApiKey(
"MY-API-KEY",
androidManifestJson
);
let mainApplication = getMainApplication(androidManifestJson);
expect(
findMetaDataItem(mainApplication, "io.branch.sdk.BranchKey")
).toBeGreaterThan(-1);
// Unset the item
androidManifestJson = await setBranchApiKey(null, androidManifestJson);
mainApplication = getMainApplication(androidManifestJson);
expect(findMetaDataItem(mainApplication, "io.branch.sdk.BranchKey")).toBe(
-1
);
});
});
@@ -0,0 +1,27 @@
import { getBranchApiKey, setBranchApiKey } from "../withBranchIOS";
describe(getBranchApiKey, () => {
it(`returns null if no api key is provided`, () => {
expect(getBranchApiKey({})).toBe(null);
});
it(`returns the api key if provided`, () => {
expect(
getBranchApiKey({ ios: { config: { branch: { apiKey: "123" } } } })
).toBe("123");
});
});
describe(setBranchApiKey, () => {
it(`sets branch_key.live if the api key is given`, () => {
expect(setBranchApiKey("123", {})).toMatchObject({
branch_key: {
live: "123",
},
});
});
it(`makes no changes to the infoPlist no api key is provided`, () => {
expect(setBranchApiKey(null, {})).toMatchObject({});
});
});
@@ -1,9 +1,9 @@
import { createRunOncePlugin } from "@expo/config-plugins";
import type { ConfigPlugin } from "@expo/config-plugins";
import type { ConfigData } from "./types";
import { withBranchAndroid } from "./withBranchAndroid";
import { withBranchIOS } from "./withBranchIOS";
import type { ConfigData } from "./types";
const withBranch: ConfigPlugin<ConfigData> = (
config,
@@ -1,6 +1,7 @@
import { withInfoPlist } from "@expo/config-plugins";
import type { ConfigPlugin, InfoPlist } from "@expo/config-plugins";
import type { ExpoConfig } from "@expo/config-types";
import type { ConfigData } from "./types";
export function getBranchApiKey(config: Pick<ExpoConfig, "ios">) {
@@ -8,7 +9,7 @@ export function getBranchApiKey(config: Pick<ExpoConfig, "ios">) {
}
export function setBranchApiKey(
apiKey: string,
apiKey: string | null,
infoPlist: InfoPlist
): InfoPlist {
if (apiKey === null) {
@@ -1,3 +1,10 @@
### @config-plugins/react-native-callkeep [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* **react-native-callkeep:** lint fix ([241d378](https://github.com/expo/config-plugins/commit/241d378a54327340df3663ef8f66cb8663e1e359))
### @config-plugins/react-native-callkeep [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
+4 -3
View File
@@ -7,8 +7,9 @@ function unquote(str) {
return str.replace(/^"(.*)"$/, "$1");
}
function nonComments(obj) {
var keys = Object.keys(obj), newObj = {}, i = 0;
for (i; i < keys.length; i++) {
const keys = Object.keys(obj);
const newObj = {};
for (let i = 0; i < keys.length; i++) {
if (!COMMENT_KEY.test(keys[i])) {
newObj[keys[i]] = obj[keys[i]];
}
@@ -20,7 +21,7 @@ function ensureHeaderSearchPath(project, file) {
const INHERITED = '"$(inherited)"';
for (const config in configurations) {
const buildSettings = configurations[config].buildSettings;
if (unquote(buildSettings["PRODUCT_NAME"]) != project.productName)
if (unquote(buildSettings["PRODUCT_NAME"]) !== project.productName)
continue;
if (!buildSettings["HEADER_SEARCH_PATHS"]) {
buildSettings["HEADER_SEARCH_PATHS"] = [INHERITED];
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-callkeep",
"version": "1.0.2",
"version": "1.0.3",
"description": "Config plugin to auto configure callkeep on prebuild",
"main": "build/withCallkeep.js",
"types": "build/withCallkeep.d.ts",
@@ -6,11 +6,10 @@ function unquote(str: string) {
if (str) return str.replace(/^"(.*)"$/, "$1");
}
function nonComments(obj: Record<string, any>) {
var keys = Object.keys(obj),
newObj: Record<string, any> = {},
i = 0;
const keys = Object.keys(obj);
const newObj: Record<string, any> = {};
for (i; i < keys.length; i++) {
for (let i = 0; i < keys.length; i++) {
if (!COMMENT_KEY.test(keys[i])) {
newObj[keys[i]] = obj[keys[i]];
}
@@ -26,7 +25,8 @@ export function ensureHeaderSearchPath(project: XcodeProject, file: string) {
for (const config in configurations) {
const buildSettings = configurations[config].buildSettings;
if (unquote(buildSettings["PRODUCT_NAME"]) != project.productName) continue;
if (unquote(buildSettings["PRODUCT_NAME"]) !== project.productName)
continue;
if (!buildSettings["HEADER_SEARCH_PATHS"]) {
buildSettings["HEADER_SEARCH_PATHS"] = [INHERITED];
@@ -129,8 +129,7 @@ export const withXcodeLinkBinaryWithLibraries: ConfigPlugin<{
status?: string;
}> = (config, { library, status }) => {
return withXcodeProject(config, (config) => {
const options =
status === "optional" ? { weak: true } : {};
const options = status === "optional" ? { weak: true } : {};
const target = IOSConfig.XcodeUtils.getApplicationNativeTarget({
project: config.modResults,
@@ -1,3 +1,10 @@
### @config-plugins/react-native-dynamic-app-icon [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
### @config-plugins/react-native-dynamic-app-icon [1.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-16)
+7
View File
@@ -0,0 +1,7 @@
import { ConfigPlugin } from "@expo/config-plugins";
declare type IconSet = Record<string, {
image: string;
prerendered?: boolean;
}>;
declare const withDynamicIcon: ConfigPlugin<string[] | IconSet | void>;
export default withDynamicIcon;
+175
View File
@@ -0,0 +1,175 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const image_utils_1 = require("@expo/image-utils");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const folderName = "DynamicAppIcons";
const size = 60;
const scales = [2, 3];
function arrayToImages(images) {
return images.reduce((prev, curr, i) => ({ ...prev, [i]: { image: curr } }), {});
}
const withDynamicIcon = (config, props = {}) => {
const _props = props || {};
let prepped = {};
if (Array.isArray(_props)) {
prepped = arrayToImages(_props);
}
else if (_props) {
prepped = _props;
}
config = withIconXcodeProject(config, { icons: prepped });
config = withIconInfoPlist(config, { icons: prepped });
config = withIconImages(config, { icons: prepped });
return config;
};
function getIconName(name, size, scale) {
const fileName = `${name}-Icon-${size}x${size}`;
if (scale != null) {
return `${fileName}@${scale}x.png`;
}
return fileName;
}
// @ts-ignore
const pbxFile_1 = __importDefault(require("xcode/lib/pbxFile"));
const withIconXcodeProject = (config, { icons }) => {
return config_plugins_1.withXcodeProject(config, async (config) => {
const groupPath = `${config.modRequest.projectName}/${folderName}`;
const group = config_plugins_1.IOSConfig.XcodeUtils.ensureGroupRecursively(config.modResults, groupPath);
const project = config.modResults;
const opt = {};
// Unlink old assets
const groupId = Object.keys(project.hash.project.objects["PBXGroup"]).find((id) => {
const _group = project.hash.project.objects["PBXGroup"][id];
return _group.name === group.name;
});
if (!project.hash.project.objects["PBXVariantGroup"]) {
project.hash.project.objects["PBXVariantGroup"] = {};
}
const variantGroupId = Object.keys(project.hash.project.objects["PBXVariantGroup"]).find((id) => {
const _group = project.hash.project.objects["PBXVariantGroup"][id];
return _group.name === group.name;
});
const children = [...(group.children || [])];
for (const child of children) {
const file = new pbxFile_1.default(path_1.default.join(group.name, child.comment), opt);
file.target = opt ? opt.target : undefined;
project.removeFromPbxBuildFileSection(file); // PBXBuildFile
project.removeFromPbxFileReferenceSection(file); // PBXFileReference
if (group) {
if (groupId) {
project.removeFromPbxGroup(file, groupId); //Group other than Resources (i.e. 'splash')
}
else if (variantGroupId) {
project.removeFromPbxVariantGroup(file, variantGroupId); // PBXVariantGroup
}
}
project.removeFromPbxResourcesBuildPhase(file); // PBXResourcesBuildPhase
}
// Link new assets
await iterateIconsAsync({ icons }, async (key, icon, index) => {
for (const scale of scales) {
const iconFileName = getIconName(key, size, scale);
if (!(group === null || group === void 0 ? void 0 : group.children.some(({ comment }) => comment === iconFileName))) {
// Only write the file if it doesn't already exist.
config.modResults = config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({
filepath: path_1.default.join(groupPath, iconFileName),
groupName: groupPath,
project: config.modResults,
isBuildFile: true,
verbose: true,
});
}
else {
console.log("Skipping duplicate: ", iconFileName);
}
}
});
return config;
});
};
const withIconInfoPlist = (config, { icons }) => {
return config_plugins_1.withInfoPlist(config, async (config) => {
const altIcons = {};
await iterateIconsAsync({ icons }, async (key, icon) => {
altIcons[key] = {
CFBundleIconFiles: [
// Must be a file path relative to the source root (not a icon set it seems).
// i.e. `Bacon-Icon-60x60` when the image is `ios/somn/appIcons/[email protected]`
getIconName(key, size),
],
UIPrerenderedIcon: !!icon.prerendered,
};
});
function applyToPlist(key) {
if (typeof config.modResults[key] !== "object" ||
Array.isArray(config.modResults[key]) ||
!config.modResults[key]) {
config.modResults[key] = {};
}
// @ts-expect-error
config.modResults[key].CFBundleAlternateIcons = altIcons;
// @ts-expect-error
config.modResults[key].CFBundlePrimaryIcon = {
CFBundleIconFiles: ["AppIcon"],
};
}
// Apply for both tablet and phone support
applyToPlist("CFBundleIcons");
applyToPlist("CFBundleIcons~ipad");
return config;
});
};
const withIconImages = (config, props) => {
return config_plugins_1.withDangerousMod(config, [
"ios",
async (config) => {
await createIconsAsync(config, props);
return config;
},
]);
};
async function createIconsAsync(config, { icons }) {
const iosRoot = path_1.default.join(config.modRequest.platformProjectRoot, config.modRequest.projectName);
// Delete all existing assets
await fs_1.default.promises
.rmdir(path_1.default.join(iosRoot, folderName), { recursive: true })
.catch(() => null);
// Ensure directory exists
await fs_1.default.promises.mkdir(path_1.default.join(iosRoot, folderName), { recursive: true });
// Generate new assets
await iterateIconsAsync({ icons }, async (key, icon) => {
for (const scale of scales) {
const iconFileName = getIconName(key, size, scale);
const fileName = path_1.default.join(folderName, iconFileName);
const outputPath = path_1.default.join(iosRoot, fileName);
const scaledSize = scale * size;
const { source } = await image_utils_1.generateImageAsync({
projectRoot: config.modRequest.projectRoot,
cacheType: "react-native-dynamic-app-icon",
}, {
name: iconFileName,
src: icon.image,
removeTransparency: true,
backgroundColor: "#ffffff",
resizeMode: "cover",
width: scaledSize,
height: scaledSize,
});
await fs_1.default.promises.writeFile(outputPath, source);
}
});
}
async function iterateIconsAsync({ icons }, callback) {
const entries = Object.entries(icons);
for (let i = 0; i < entries.length; i++) {
const [key, val] = entries[i];
await callback(key, val, i);
}
}
exports.default = withDynamicIcon;
//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yDAO8B;AAC9B,mDAAuD;AACvD,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAQtB,SAAS,aAAa,CAAC,MAAgB;IACrC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EACtD,EAAE,CACH,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAA4C,CAC/D,MAAM,EACN,KAAK,GAAG,EAAE,EACV,EAAE;IACF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;IAE3B,IAAI,OAAO,GAAmB,EAAE,CAAC;IAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;KACjC;SAAM,IAAI,MAAM,EAAE;QACjB,OAAO,GAAG,MAAM,CAAC;KAClB;IAED,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1D,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,KAAc;IAC7D,MAAM,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;IAEhD,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,GAAG,QAAQ,IAAI,KAAK,OAAO,CAAC;KACpC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,aAAa;AACb,gEAAwC;AAExC,MAAM,oBAAoB,GAAwB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACtE,OAAO,iCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,WAAY,IAAI,UAAU,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,0BAAS,CAAC,UAAU,CAAC,sBAAsB,CACvD,MAAM,CAAC,UAAU,EACjB,SAAS,CACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,MAAM,GAAG,GAAQ,EAAE,CAAC;QAEpB,oBAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CACxE,CAAC,EAAE,EAAE,EAAE;YACL,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QACpC,CAAC,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YACpD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SACtD;QACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAChD,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAE7C,KAAK,MAAM,KAAK,IAAI,QAGjB,EAAE;YACH,MAAM,IAAI,GAAG,IAAI,iBAAO,CAAC,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAE3C,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YAC5D,OAAO,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB;YACpE,IAAI,KAAK,EAAE;gBACT,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,4CAA4C;iBACxF;qBAAM,IAAI,cAAc,EAAE;oBACzB,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,kBAAkB;iBAC5E;aACF;YACD,OAAO,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;SAC1E;QAED,kBAAkB;QAElB,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAEnD,IACE,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,IAAI,CACnB,CAAC,EAAE,OAAO,EAAuB,EAAE,EAAE,CAAC,OAAO,KAAK,YAAY,CAC/D,CAAA,EACD;oBACA,mDAAmD;oBACnD,MAAM,CAAC,UAAU,GAAG,0BAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC;wBAC9D,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;wBAC5C,SAAS,EAAE,SAAS;wBACpB,OAAO,EAAE,MAAM,CAAC,UAAU;wBAC1B,WAAW,EAAE,IAAI;wBACjB,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;iBACJ;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;iBACnD;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAwB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACnE,OAAO,8BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAGV,EAAE,CAAC;QAEP,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,QAAQ,CAAC,GAAG,CAAC,GAAG;gBACd,iBAAiB,EAAE;oBACjB,6EAA6E;oBAC7E,wFAAwF;oBACxF,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;iBACvB;gBACD,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,SAAS,YAAY,CAAC,GAAW;YAC/B,IACE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC1C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB;gBACA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAC7B;YAED,mBAAmB;YACnB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,sBAAsB,GAAG,QAAQ,CAAC;YAEzD,mBAAmB;YACnB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG;gBAC3C,iBAAiB,EAAE,CAAC,SAAS,CAAC;aAC/B,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9B,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAEnC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IAC5D,OAAO,iCAAgB,CAAC,MAAM,EAAE;QAC9B,KAAK;QACL,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,MAAM,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC;QAChLine truncated
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-dynamic-app-icon",
"version": "1.0.1",
"version": "1.0.2",
"description": "Config plugin to auto configure react-native-dynamic-app-icon",
"main": "build/index.js",
"types": "build/index.d.ts",
@@ -9,6 +9,8 @@ import {
import { generateImageAsync } from "@expo/image-utils";
import fs from "fs";
import path from "path";
// @ts-ignore
import pbxFile from "xcode/lib/pbxFile";
const folderName = "DynamicAppIcons";
const size = 60;
@@ -56,9 +58,6 @@ function getIconName(name: string, size: number, scale?: number) {
return fileName;
}
// @ts-ignore
import pbxFile from "xcode/lib/pbxFile";
const withIconXcodeProject: ConfigPlugin<Props> = (config, { icons }) => {
return withXcodeProject(config, async (config) => {
const groupPath = `${config.modRequest.projectName!}/${folderName}`;
@@ -1,3 +1,17 @@
### @config-plugins/react-native-google-cast [1.0.3](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-23)
### Other chores
* **react-native-google-cast:** lint fix ([21c4928](https://github.com/expo/config-plugins/commit/21c49280d49a3584863d8338e4b34c508249a595))
### @config-plugins/react-native-google-cast [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
### @config-plugins/react-native-google-cast [1.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-16)
+11
View File
@@ -0,0 +1,11 @@
import { ConfigPlugin } from "@expo/config-plugins";
export declare const withAndroidGoogleCast: ConfigPlugin<{
/**
* @default '+'
*/
androidPlayServicesCastFrameworkVersion?: string;
/**
* ??
*/
receiverAppId?: string;
}>;
+151
View File
@@ -0,0 +1,151 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withAndroidGoogleCast = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const codeMod_1 = require("@expo/config-plugins/build/android/codeMod");
const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
const { addMetaDataItemToMainApplication, getMainApplicationOrThrow } = config_plugins_1.AndroidConfig.Manifest;
const META_PROVIDER_CLASS = "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME";
const META_RECEIVER_APP_ID = "com.reactnative.googlecast.RECEIVER_APPLICATION_ID";
const CUSTOM_ACTIVITY = "com.reactnative.googlecast.RNGCExpandedControllerActivity";
async function ensureCustomActivityAsync({ mainApplication, }) {
if (Array.isArray(mainApplication.activity)) {
// Remove all activities matching the custom name
mainApplication.activity = mainApplication.activity.filter((activity) => {
var _a;
return ((_a = activity.$) === null || _a === void 0 ? void 0 : _a["android:name"]) !== CUSTOM_ACTIVITY;
});
}
else {
mainApplication.activity = [];
}
// `<activity android:name="${CUSTOM_ACTIVITY}" />`
mainApplication.activity.push({
$: {
"android:name": CUSTOM_ACTIVITY,
},
});
return mainApplication;
}
const withAndroidManifestCast = (config, { receiverAppId } = {}) => {
return config_plugins_1.withAndroidManifest(config, async (config) => {
const mainApplication = getMainApplicationOrThrow(config.modResults);
ensureCustomActivityAsync({ mainApplication });
addMetaDataItemToMainApplication(mainApplication, META_PROVIDER_CLASS,
// This is the native Java class
"com.reactnative.googlecast.GoogleCastOptionsProvider");
if (receiverAppId) {
addMetaDataItemToMainApplication(mainApplication, META_RECEIVER_APP_ID, receiverAppId);
}
return config;
});
};
const withProjectBuildGradleVersion = (config, { version }) => {
return config_plugins_1.withProjectBuildGradle(config, (config) => {
if (config.modResults.language !== "groovy")
throw new Error("react-native-google-cast config plugin does not support Kotlin /build.gradle yet.");
config.modResults.contents = addGoogleCastVersionImport(config.modResults.contents, {
version,
}).contents;
return config;
});
};
const withAppBuildGradleImport = (config, { version }) => {
return config_plugins_1.withAppBuildGradle(config, (config) => {
if (config.modResults.language !== "groovy")
throw new Error("react-native-google-cast config plugin does not support Kotlin app/build.gradle yet.");
config.modResults.contents = addSafeExtGet(config.modResults.contents);
config.modResults.contents = addGoogleCastImport(config.modResults.contents, {
version,
}).contents;
return config;
});
};
const withMainActivityLazyLoading = (config) => {
return config_plugins_1.withMainActivity(config, async (config) => {
const src = codeMod_1.addImports(config.modResults.contents, ["com.google.android.gms.cast.framework.CastContext"], config.modResults.language === "java");
if (config.modResults.language === "java") {
config.modResults.contents = addGoogleCastLazyLoadingImport(src).contents;
}
else {
throw new Error("react-native-google-cast config plugin does not support kotlin MainActivity yet.");
}
return config;
});
};
// castFrameworkVersion
const withAndroidGoogleCast = (config, props) => {
var _a, _b;
config = withAndroidManifestCast(config, {
receiverAppId: props.receiverAppId,
});
config = withMainActivityLazyLoading(config);
config = withProjectBuildGradleVersion(config, {
// gradle dep version
version: (_a = props.androidPlayServicesCastFrameworkVersion) !== null && _a !== void 0 ? _a : "+",
});
config = withAppBuildGradleImport(config, {
// gradle dep version
version: (_b = props.androidPlayServicesCastFrameworkVersion) !== null && _b !== void 0 ? _b : "+",
});
return config;
};
exports.withAndroidGoogleCast = withAndroidGoogleCast;
function addGoogleCastLazyLoadingImport(src) {
const newSrc = [];
newSrc.push(" CastContext.getSharedInstance(this);");
return generateCode_1.mergeContents({
tag: "react-native-google-cast-onCreate",
src,
newSrc: newSrc.join("\n"),
anchor: /super\.onCreate\(\w+\);/,
offset: 1,
comment: "//",
});
}
// TODO: Add this ability to autolinking
// dependencies { implementation "com.google.android.gms:play-services-cast-framework:+" }
function addGoogleCastImport(src, { version } = {}) {
const newSrc = [];
newSrc.push(` implementation "com.google.android.gms:play-services-cast-framework:\${safeExtGet('castFrameworkVersion', '${version}')}"`);
return generateCode_1.mergeContents({
tag: "react-native-google-cast-dependencies",
src,
newSrc: newSrc.join("\n"),
anchor: /dependencies(?:\s+)?\{/,
offset: 1,
comment: "//",
});
}
function addSafeExtGet(src) {
const tag = "safeExtGet";
src = generateCode_1.removeContents({ src, tag }).contents;
// If the source already has a safeExtGet method after removing this one, then go with the existing one.
if (src.match(/def(?:\s+)?safeExtGet\(/)) {
return src;
}
// Otherwise add a new one
const newSrc = [];
newSrc.push("def safeExtGet(prop, fallback) {", " rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback", "}");
return generateCode_1.mergeContents({
tag: "safeExtGet",
src,
newSrc: newSrc.join("\n"),
// This block can go anywhere in the upper scope
anchor: /apply plugin/,
offset: 1,
comment: "//",
}).contents;
}
function addGoogleCastVersionImport(src, { version } = {}) {
const newSrc = [];
newSrc.push(` castFrameworkVersion = "${version}"`);
return generateCode_1.mergeContents({
tag: "react-native-google-cast-version",
src,
newSrc: newSrc.join("\n"),
anchor: /ext(?:\s+)?\{/,
offset: 1,
comment: "//",
});
}
+16
View File
@@ -0,0 +1,16 @@
import { ConfigPlugin } from "@expo/config-plugins";
declare const _default: ConfigPlugin<void | {
/**
* @default '+'
*/
androidPlayServicesCastFrameworkVersion?: string | undefined;
/**
* @default 'CC1AD845'
*/
iosReceiverAppId?: string | undefined;
/**
* ??
*/
androidReceiverAppId?: string | undefined;
}>;
export default _default;
+20
View File
@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const withAndroidGoogleCast_1 = require("./withAndroidGoogleCast");
const withIosGoogleCast_1 = require("./withIosGoogleCast");
const withGoogleCast = (config, _props) => {
const props = _props || {};
// TODO: Are the Android and iOS receiverAppId values the same?
config = withIosGoogleCast_1.withIosGoogleCast(config, {
receiverAppId: props.iosReceiverAppId,
// disableDiscoveryAutostart?: boolean;
// startDiscoveryAfterFirstTapOnCastButton?: boolean;
});
config = withAndroidGoogleCast_1.withAndroidGoogleCast(config, {
receiverAppId: props.androidReceiverAppId,
androidPlayServicesCastFrameworkVersion: props.androidPlayServicesCastFrameworkVersion,
});
return config;
};
exports.default = config_plugins_1.createRunOncePlugin(withGoogleCast, "react-native-google-cast");
+15
View File
@@ -0,0 +1,15 @@
import { ConfigPlugin } from "@expo/config-plugins";
export declare const withIosGoogleCast: ConfigPlugin<{
/**
* @default 'CC1AD845'
*/
receiverAppId?: string;
}>;
export declare const MATCH_INIT: RegExp;
declare type IosProps = {
receiverAppId?: string | null;
disableDiscoveryAutostart?: boolean;
startDiscoveryAfterFirstTapOnCastButton?: boolean;
};
export declare function addGoogleCastAppDelegateDidFinishLaunchingWithOptions(src: string, { receiverAppId, disableDiscoveryAutostart, startDiscoveryAfterFirstTapOnCastButton, }?: IosProps): import("@expo/config-plugins/build/utils/generateCode").MergeResults;
export {};
+127
View File
@@ -0,0 +1,127 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addGoogleCastAppDelegateDidFinishLaunchingWithOptions = exports.MATCH_INIT = exports.withIosGoogleCast = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
/**
* In Xcode, go to Signing & Capabilities, click + Capability and select Access WiFi Information. (This is required since iOS 12.)
* Note that "Wireless Accessory Configuration" is unrelated.
*
* @param {*} config
* @returns
*/
const withIosWifiEntitlements = (config) => {
return config_plugins_1.withEntitlementsPlist(config, (config) => {
config.modResults["com.apple.developer.networking.wifi-info"] = true;
return config;
});
};
const LOCAL_NETWORK_USAGE = "${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi network";
// const BLUETOOTH_ALWAYS_USAGE =
// "${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
// const BLUETOOTH_PERIPHERAL_USAGE =
// "${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
// const MICROPHONE_USAGE =
// "${PRODUCT_NAME} uses microphone access to listen for ultrasonic tokens when pairing with nearby Cast devices";
/**
* On iOS, a dialog asking the user for the local network permission will now be displayed immediately when the app is opened.
*
* @param {*} config
* @param {*} props.receiverAppId If using a custom receiver, make sure to replace `CC1AD845` with your custom receiver app id.
* @returns
*/
const withIosLocalNetworkPermissions = (config, { receiverAppId = "CC1AD845" } = {}) => {
return config_plugins_1.withInfoPlist(config, (config) => {
if (!Array.isArray(config.modResults.NSBonjourServices)) {
config.modResults.NSBonjourServices = [];
}
// Add required values
config.modResults.NSBonjourServices.push("_googlecast._tcp", `_${receiverAppId}._googlecast._tcp`);
// Remove duplicates
config.modResults.NSBonjourServices = [
...new Set(config.modResults.NSBonjourServices),
];
// For iOS 14+, you need to add local network permissions to Info.plist:
// https://developers.google.com/cast/docs/ios_sender/ios_permissions_changes#updating_your_app_on_ios_14
config.modResults.NSLocalNetworkUsageDescription =
config.modResults.NSLocalNetworkUsageDescription || LOCAL_NETWORK_USAGE;
return config;
});
};
// const withIosGuestMode: ConfigPlugin = (config) => {
// return withInfoPlist(config, (config) => {
// config.modResults.NSBluetoothAlwaysUsageDescription =
// config.modResults.NSBluetoothAlwaysUsageDescription ||
// BLUETOOTH_ALWAYS_USAGE;
// config.modResults.NSBluetoothPeripheralUsageDescription =
// config.modResults.NSBluetoothPeripheralUsageDescription ||
// BLUETOOTH_PERIPHERAL_USAGE;
// config.modResults.NSMicrophoneUsageDescription =
// config.modResults.NSMicrophoneUsageDescription || MICROPHONE_USAGE;
// return config;
// });
// };
// TODO: Use AppDelegate swizzling
const withIosAppDelegateLoaded = (config, props) => {
return config_plugins_1.withAppDelegate(config, (config) => {
if (config.modResults.language !== "objc") {
throw new Error("react-native-google-cast config plugin does not support Swift AppDelegate yet.");
}
config.modResults.contents =
addGoogleCastAppDelegateDidFinishLaunchingWithOptions(config.modResults.contents, props).contents;
config.modResults.contents = addGoogleCastAppDelegateImport(config.modResults.contents).contents;
return config;
});
};
const withIosGoogleCast = (config, props) => {
config = withIosWifiEntitlements(config);
config = withIosLocalNetworkPermissions(config, {
receiverAppId: props.receiverAppId,
});
config = withIosAppDelegateLoaded(config, {
receiverAppId: props.receiverAppId,
// disableDiscoveryAutostart?: boolean;
// startDiscoveryAfterFirstTapOnCastButton?: boolean;
});
// TODO
// config = withIosGuestMode(config)
return config;
};
exports.withIosGoogleCast = withIosGoogleCast;
// From expo-cli RNMaps setup
exports.MATCH_INIT = /(?:(self\.|_)(\w+)\s?=\s?\[\[UMModuleRegistryAdapter alloc\])|(?:RCTBridge\s?\*\s?(\w+)\s?=\s?\[\[RCTBridge alloc\])|(\[self\.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions\])/g;
function addGoogleCastAppDelegateDidFinishLaunchingWithOptions(src, { receiverAppId = null, disableDiscoveryAutostart = false, startDiscoveryAfterFirstTapOnCastButton = true, } = {}) {
let newSrc = [];
newSrc.push(
// For extra safety
"#if __has_include(<GoogleCast/GoogleCast.h>)",
// TODO: This should probably read safely from a static file like the Info.plist
` NSString *receiverAppID = ${receiverAppId
? `@"${receiverAppId}"`
: "kGCKDefaultMediaReceiverApplicationID"};`, " GCKDiscoveryCriteria *criteria = [[GCKDiscoveryCriteria alloc] initWithApplicationID:receiverAppID];", " GCKCastOptions* options = [[GCKCastOptions alloc] initWithDiscoveryCriteria:criteria];",
// TODO: Same as above, read statically
// ` options.disableDiscoveryAutostart = ${String(!!disableDiscoveryAutostart)};`,
` options.startDiscoveryAfterFirstTapOnCastButton = ${String(!!startDiscoveryAfterFirstTapOnCastButton)};`, " [GCKCastContext setSharedInstanceWithOptions:options];", "#endif");
newSrc = newSrc.filter(Boolean);
return generateCode_1.mergeContents({
tag: "react-native-google-cast-didFinishLaunchingWithOptions",
src,
newSrc: newSrc.join("\n"),
anchor: exports.MATCH_INIT,
offset: 0,
comment: "//",
});
}
exports.addGoogleCastAppDelegateDidFinishLaunchingWithOptions = addGoogleCastAppDelegateDidFinishLaunchingWithOptions;
function addGoogleCastAppDelegateImport(src) {
const newSrc = [];
newSrc.push("#if __has_include(<GoogleCast/GoogleCast.h>)", "#import <GoogleCast/GoogleCast.h>", "#endif");
return generateCode_1.mergeContents({
tag: "react-native-google-cast-import",
src,
newSrc: newSrc.join("\n"),
anchor: /#import "AppDelegate\.h"/,
offset: 1,
comment: "//",
});
}
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-google-cast",
"version": "1.0.1",
"version": "1.0.3",
"description": "Config plugin to auto configure Google Cast on prebuild",
"main": "build/withGoogleCast.js",
"types": "build/withGoogleCast.d.ts",
@@ -6,12 +6,11 @@ import {
withMainActivity,
withProjectBuildGradle,
} from "@expo/config-plugins";
import { addImports } from "@expo/config-plugins/build/android/codeMod";
import {
mergeContents,
removeContents,
} from "@expo/config-plugins/build/utils/generateCode";
import { addImports } from "@expo/config-plugins/build/android/codeMod";
import fs from "fs";
const { addMetaDataItemToMainApplication, getMainApplicationOrThrow } =
AndroidConfig.Manifest;
@@ -121,7 +120,7 @@ const withAppBuildGradleImport: ConfigPlugin<{ version?: string }> = (
const withMainActivityLazyLoading: ConfigPlugin = (config) => {
return withMainActivity(config, async (config) => {
let src = addImports(
const src = addImports(
config.modResults.contents,
["com.google.android.gms.cast.framework.CastContext"],
config.modResults.language === "java"
@@ -22,12 +22,12 @@ const withIosWifiEntitlements: ConfigPlugin = (config) => {
const LOCAL_NETWORK_USAGE =
"${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi network";
const BLUETOOTH_ALWAYS_USAGE =
"${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
const BLUETOOTH_PERIPHERAL_USAGE =
"${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
const MICROPHONE_USAGE =
"${PRODUCT_NAME} uses microphone access to listen for ultrasonic tokens when pairing with nearby Cast devices";
// const BLUETOOTH_ALWAYS_USAGE =
// "${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
// const BLUETOOTH_PERIPHERAL_USAGE =
// "${PRODUCT_NAME} uses Bluetooth to discover nearby Cast devices";
// const MICROPHONE_USAGE =
// "${PRODUCT_NAME} uses microphone access to listen for ultrasonic tokens when pairing with nearby Cast devices";
/**
* On iOS, a dialog asking the user for the local network permission will now be displayed immediately when the app is opened.
@@ -61,19 +61,19 @@ const withIosLocalNetworkPermissions: ConfigPlugin<{ receiverAppId?: string }> =
});
};
const withIosGuestMode: ConfigPlugin = (config) => {
return withInfoPlist(config, (config) => {
config.modResults.NSBluetoothAlwaysUsageDescription =
config.modResults.NSBluetoothAlwaysUsageDescription ||
BLUETOOTH_ALWAYS_USAGE;
config.modResults.NSBluetoothPeripheralUsageDescription =
config.modResults.NSBluetoothPeripheralUsageDescription ||
BLUETOOTH_PERIPHERAL_USAGE;
config.modResults.NSMicrophoneUsageDescription =
config.modResults.NSMicrophoneUsageDescription || MICROPHONE_USAGE;
return config;
});
};
// const withIosGuestMode: ConfigPlugin = (config) => {
// return withInfoPlist(config, (config) => {
// config.modResults.NSBluetoothAlwaysUsageDescription =
// config.modResults.NSBluetoothAlwaysUsageDescription ||
// BLUETOOTH_ALWAYS_USAGE;
// config.modResults.NSBluetoothPeripheralUsageDescription =
// config.modResults.NSBluetoothPeripheralUsageDescription ||
// BLUETOOTH_PERIPHERAL_USAGE;
// config.modResults.NSMicrophoneUsageDescription =
// config.modResults.NSMicrophoneUsageDescription || MICROPHONE_USAGE;
// return config;
// });
// };
// TODO: Use AppDelegate swizzling
const withIosAppDelegateLoaded: ConfigPlugin<IosProps> = (config, props) => {
+7
View File
@@ -1,3 +1,10 @@
### @config-plugins/react-native-pdf [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
### @config-plugins/react-native-pdf [1.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-16)
+5
View File
@@ -0,0 +1,5 @@
import { ConfigPlugin } from "@expo/config-plugins";
export declare const withAndroidPackagingOptions: ConfigPlugin;
export declare function addAndroidPackagingOptions(src: string): import("@expo/config-plugins/build/utils/generateCode").MergeResults;
declare const _default: ConfigPlugin<void>;
export default _default;
+52
View File
@@ -0,0 +1,52 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addAndroidPackagingOptions = exports.withAndroidPackagingOptions = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
let pkg = {
name: "react-native-pdf",
};
try {
pkg = require("react-native-pdf/package.json");
}
catch (_a) {
// empty catch block
}
const withAndroidPackagingOptions = (config) => {
return config_plugins_1.withAppBuildGradle(config, (config) => {
if (config.modResults.language === "groovy") {
config.modResults.contents = addAndroidPackagingOptions(config.modResults.contents).contents;
}
else {
config_plugins_1.WarningAggregator.addWarningAndroid("@config-plugins/react-native-pdf", `Cannot automatically configure app build.gradle if it's not groovy`);
}
return config;
});
};
exports.withAndroidPackagingOptions = withAndroidPackagingOptions;
function addAndroidPackagingOptions(src) {
return generateCode_1.mergeContents({
tag: "react-native-pdf-packaging-options",
src,
newSrc: packagingOptionsContents,
anchor: /android(?:\s+)?\{/,
// Inside the android block.
offset: 1,
comment: "//",
});
}
exports.addAndroidPackagingOptions = addAndroidPackagingOptions;
const packagingOptionsContents = `
packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libjsc.so'
pickFirst 'lib/arm64-v8a/libjsc.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}
`;
const withReactNativePdf = (config) => {
return exports.withAndroidPackagingOptions(config);
};
exports.default = config_plugins_1.createRunOncePlugin(withReactNativePdf, pkg.name, pkg.version);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-pdf",
"version": "1.0.1",
"version": "1.0.2",
"description": "Config plugin to auto configure react-native-pdf on prebuild",
"main": "build/withPdf.js",
"types": "build/withPdf.d.ts",
@@ -1,3 +1,10 @@
### @config-plugins/react-native-quick-actions [1.0.2](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
### @config-plugins/react-native-quick-actions [1.0.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-16)
@@ -0,0 +1,20 @@
import { ConfigPlugin, XML } from "@expo/config-plugins";
import { MergeResults } from "@expo/config-plugins/build/utils/generateCode";
export declare function addQuickActionsAppDelegateImport(src: string): MergeResults;
export declare function addQuickActionsAppDelegateInit(src: string): MergeResults;
declare const _default: ConfigPlugin<void | {
iconType?: string | undefined;
title: string;
iconSymbolName?: string | undefined;
iconFile?: string | undefined;
subtitle?: string | undefined;
/**
* A unique string that the system passes to your app
*/
type: string;
/**
* An optional, app-defined dictionary. One use for this dictionary is to provide app version information, as described in the “App Launch and App Update Considerations for Quick Actions” section of the overview in UIApplicationShortcutItem Class Reference.
*/
userInfo?: XML.XMLObject | undefined;
}[]>;
export default _default;
@@ -0,0 +1,106 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addQuickActionsAppDelegateInit = exports.addQuickActionsAppDelegateImport = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
const remapping = {
iconType: "UIApplicationShortcutItemIconType",
iconFile: "UIApplicationShortcutItemIconFile",
iconSymbolName: "UIApplicationShortcutItemIconSymbolName",
title: "UIApplicationShortcutItemTitle",
subtitle: "UIApplicationShortcutItemSubtitle",
type: "UIApplicationShortcutItemType",
userInfo: "UIApplicationShortcutItemUserInfo",
};
// #import "RNQuickActionManager.h"
// https://github.com/jordanbyron/react-native-quick-actions#adding-static-quick-actions---ios-only
// https://developer.apple.com/documentation/uikit/menus_and_shortcuts/add_home_screen_quick_actions
// TODO: Auto generate images in asset catalogues
/**
* Apply react-native-quick-actions configuration for Expo SDK 42 projects.
*/
const withReactNativeQuickActions = (config, _items) => {
config = withQuickActionsAppDelegate(config);
const items = _items || [];
if (!Array.isArray(items) || !items.length) {
return config;
}
return config_plugins_1.withInfoPlist(config, (config) => {
config.modResults.UIApplicationShortcutItems = items.map((item) => {
const result = {};
for (const [key, value] of Object.entries(remapping)) {
// @ts-expect-error
const itemValue = item[key];
if (itemValue) {
result[value] = itemValue;
}
}
return result;
});
for (const index in config.modResults.UIApplicationShortcutItems) {
const item = config.modResults.UIApplicationShortcutItems[index];
for (const key of Object.keys(item)) {
if (!item[key]) {
// @ts-expect-error
delete config.modResults.UIApplicationShortcutItems[index][key];
}
}
}
return config;
});
};
function addQuickActionsAppDelegateImport(src) {
return generateCode_1.mergeContents({
tag: "react-native-quick-actions-import",
src,
newSrc: '#import "RNQuickActionManager.h"',
anchor: /#import "AppDelegate\.h"/,
offset: 1,
comment: "//",
});
}
exports.addQuickActionsAppDelegateImport = addQuickActionsAppDelegateImport;
function addQuickActionsAppDelegateInit(src) {
const newSrc = [];
newSrc.push("- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler {", " [RNQuickActionManager onQuickActionPress:shortcutItem completionHandler:completionHandler];", "}");
return generateCode_1.mergeContents({
tag: "react-native-quick-actions-delegate",
src,
newSrc: newSrc.join("\n"),
anchor: /-\s?\(BOOL\)application:\(UIApplication\s?\*\)application/,
offset: 0,
comment: "//",
});
}
exports.addQuickActionsAppDelegateInit = addQuickActionsAppDelegateInit;
const withQuickActionsAppDelegate = (config) => {
return config_plugins_1.withAppDelegate(config, (config) => {
if (config.modResults.language === "objc") {
try {
config.modResults.contents = addQuickActionsAppDelegateImport(config.modResults.contents).contents;
config.modResults.contents = addQuickActionsAppDelegateInit(config.modResults.contents).contents;
}
catch (error) {
if (error.code === "ERR_NO_MATCH") {
throw new Error(`Cannot add QuickActions to the project's AppDelegate because it's malformed. Please report this with a copy of your project AppDelegate.`);
}
throw error;
}
}
else {
throw new Error("Cannot setup QuickActions because the AppDelegate is not Objective C");
}
return config;
});
};
const pkg = {
// Prevent this plugin from being run more than once.
// This pattern enables users to safely migrate off of this
// out-of-tree `@config-plugins/react-native-quick-actions` to a future
// upstream plugin in `react-native-quick-actions`
name: "react-native-quick-actions",
// Indicates that this plugin is dangerously linked to a module,
// and might not work with the latest version of that module.
version: "UNVERSIONED",
};
exports.default = config_plugins_1.createRunOncePlugin(withReactNativeQuickActions, pkg.name, pkg.version);
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-quick-actions",
"version": "1.0.1",
"version": "1.0.2",
"description": "Config plugin for react-native-quick-actions package",
"main": "build/withReactNativeQuickActions.js",
"types": "build/withReactNativeQuickActions.d.ts",
@@ -1,3 +1,10 @@
### @config-plugins/react-native-webrtc [2.1.1](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
### Other chores
* git ignore build folders ([#59](https://github.com/expo/config-plugins/issues/59)) ([d6050be](https://github.com/expo/config-plugins/commit/d6050beb2a5c68dc59287c27ec388c2002ec7904))
## @config-plugins/react-native-webrtc [2.1.0](https://github.com/expo/config-plugins/compare/@config-plugins/[email protected]...@config-plugins/[email protected]) (2022-03-22)
+2
View File
@@ -0,0 +1,2 @@
import { ConfigPlugin } from "@expo/config-plugins";
export declare const withBitcodeDisabled: ConfigPlugin;
+19
View File
@@ -0,0 +1,19 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withBitcodeDisabled = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const withBitcodeDisabled = (config) => {
var _a, _b;
if (!config.ios) {
config.ios = {};
}
if (((_a = config.ios) === null || _a === void 0 ? void 0 : _a.bitcode) != null && ((_b = config.ios) === null || _b === void 0 ? void 0 : _b.bitcode) !== false) {
config_plugins_1.WarningAggregator.addWarningIOS("ios.bitcode", "react-native-webrtc plugin is overwriting project bitcode settings. WebRTC requires bitcode to be disabled for builds, targeting physical iOS devices.");
}
// WebRTC requires Bitcode be disabled for
// production AND development iOS builds that target devices, e.g. not simulators.
// SDK +44 property
config.ios.bitcode = false;
return config;
};
exports.withBitcodeDisabled = withBitcodeDisabled;
+6
View File
@@ -0,0 +1,6 @@
import { ConfigPlugin } from "@expo/config-plugins";
/**
* Set the `android.enableDexingArtifactTransform.desugaring` value in the static `gradle.properties` file.
* This is used to disable desugaring to fix weird Android bugs. [Learn more](https://github.com/jitsi/jitsi-meet/issues/7911#issuecomment-714323255).
*/
export declare const withDesugaring: ConfigPlugin<boolean>;
+26
View File
@@ -0,0 +1,26 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withDesugaring = void 0;
const config_plugins_1 = require("@expo/config-plugins");
/**
* Set the `android.enableDexingArtifactTransform.desugaring` value in the static `gradle.properties` file.
* This is used to disable desugaring to fix weird Android bugs. [Learn more](https://github.com/jitsi/jitsi-meet/issues/7911#issuecomment-714323255).
*/
const withDesugaring = (config, isDisabled) => {
const desugaringKey = "android.enableDexingArtifactTransform.desugaring";
return config_plugins_1.withGradleProperties(config, (config) => {
config.modResults = config.modResults.filter((item) => {
if (item.type == "property" && item.key === desugaringKey) {
return false;
}
return true;
});
config.modResults.push({
type: "property",
key: desugaringKey,
value: String(!isDisabled),
});
return config;
});
};
exports.withDesugaring = withDesugaring;
+6
View File
@@ -0,0 +1,6 @@
import { ConfigPlugin } from "@expo/config-plugins";
export declare type IOSPermissionsProps = {
cameraPermission?: string;
microphonePermission?: string;
};
export declare const withPermissions: ConfigPlugin<IOSPermissionsProps | void>;
+21
View File
@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.withPermissions = void 0;
const config_plugins_1 = require("@expo/config-plugins");
const CAMERA_USAGE = "Allow $(PRODUCT_NAME) to access your camera";
const MICROPHONE_USAGE = "Allow $(PRODUCT_NAME) to access your microphone";
const withPermissions = (config, props) => {
return config_plugins_1.withInfoPlist(config, (config) => {
const { cameraPermission, microphonePermission } = props || {};
config.modResults.NSCameraUsageDescription =
cameraPermission ||
config.modResults.NSCameraUsageDescription ||
CAMERA_USAGE;
config.modResults.NSMicrophoneUsageDescription =
microphonePermission ||
config.modResults.NSMicrophoneUsageDescription ||
MICROPHONE_USAGE;
return config;
});
};
exports.withPermissions = withPermissions;
+4
View File
@@ -0,0 +1,4 @@
import { ConfigPlugin } from "@expo/config-plugins";
import { IOSPermissionsProps } from "./withPermissions";
declare const _default: ConfigPlugin<void | IOSPermissionsProps>;
export default _default;
+31
View File
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const withBitcodeDisabled_1 = require("./withBitcodeDisabled");
const withDesugaring_1 = require("./withDesugaring");
const withPermissions_1 = require("./withPermissions");
const pkg = { name: "react-native-webrtc", version: "UNVERSIONED" }; //require("react-native-webrtc/package.json");
const withWebRTC = (config, props = {}) => {
const _props = props || {};
// iOS
config = withPermissions_1.withPermissions(config, _props);
config = withBitcodeDisabled_1.withBitcodeDisabled(config);
// Android
config = config_plugins_1.AndroidConfig.Permissions.withPermissions(config, [
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.BLUETOOTH",
"android.permission.CAMERA",
"android.permission.INTERNET",
"android.permission.MODIFY_AUDIO_SETTINGS",
"android.permission.RECORD_AUDIO",
"android.permission.SYSTEM_ALERT_WINDOW",
"android.permission.WAKE_LOCK",
]);
config = config_plugins_1.AndroidConfig.Version.withBuildScriptExtMinimumVersion(config, {
name: "minSdkVersion",
minVersion: 24,
});
config = withDesugaring_1.withDesugaring(config, true);
return config;
};
exports.default = config_plugins_1.createRunOncePlugin(withWebRTC, pkg.name, pkg.version);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@config-plugins/react-native-webrtc",
"version": "2.1.0",
"version": "2.1.1",
"description": "Config plugin to setup react-native-webrtc on prebuild",
"main": "build/withWebRTC.js",
"types": "build/withWebRTC.d.ts",
@@ -8,7 +8,7 @@ export const withDesugaring: ConfigPlugin<boolean> = (config, isDisabled) => {
const desugaringKey = "android.enableDexingArtifactTransform.desugaring";
return withGradleProperties(config, (config) => {
config.modResults = config.modResults.filter((item) => {
if (item.type == "property" && item.key === desugaringKey) {
if (item.type === "property" && item.key === desugaringKey) {
return false;
}
return true;
@@ -3,8 +3,8 @@ import {
ConfigPlugin,
createRunOncePlugin,
} from "@expo/config-plugins";
import { withBitcodeDisabled } from "./withBitcodeDisabled";
import { withBitcodeDisabled } from "./withBitcodeDisabled";
import { withDesugaring } from "./withDesugaring";
import { IOSPermissionsProps, withPermissions } from "./withPermissions";
@@ -31,12 +31,10 @@ const withWebRTC: ConfigPlugin<IOSPermissionsProps | void> = (
"android.permission.SYSTEM_ALERT_WINDOW",
"android.permission.WAKE_LOCK",
]);
config = AndroidConfig.Version.withBuildScriptExtMinimumVersion(config,
{
name: "minSdkVersion",
minVersion: 24,
}
)
config = AndroidConfig.Version.withBuildScriptExtMinimumVersion(config, {
name: "minSdkVersion",
minVersion: 24,
});
config = withDesugaring(config, true);
return config;
+72
View File
@@ -0,0 +1,72 @@
#!/usr/bin/env ts-node
import * as fs from "fs/promises";
import { sync as globSync } from "glob";
import * as yaml from "js-yaml";
import * as path from "path";
/**
* @returns a list of file paths for each package in the packages folder, relative to the root.
* @example
* ```
* ['packages/react-native-callkeep', 'packages/react-native-camera', ...]
* ```
*/
function getAllPackageJsonFiles(root: string): string[] {
const packageJsonFiles = globSync("packages/*/package.json", {
cwd: root,
});
return packageJsonFiles.map((pkgJsonFilePath) =>
path.dirname(pkgJsonFilePath)
);
}
(async () => {
const root = path.join(__dirname, "../");
const filePaths = getAllPackageJsonFiles(root);
const config: {
version: number;
updates: {
"package-ecosystem": string;
directory: string;
schedule: { interval?: string; time?: string; timezone?: string };
}[];
} = {
version: 2,
updates: [],
};
for (const filePath of filePaths.sort()) {
config.updates.push({
"package-ecosystem": "npm",
directory: filePath,
// Default for every package is to run at the beginning of every Expo work day.
schedule: {
interval: "daily",
time: "09:00",
// Expo is based out of California
timezone: "America/Los_Angeles",
},
});
}
const outputFilePath = path.join(root, ".github/dependabot.yml");
const results = yaml.dump(config);
console.log("Results:\n", results);
console.log("");
console.log("Writing to:", outputFilePath);
await fs.writeFile(
outputFilePath,
[
"# AUTO GENERATED:",
"# This file was generated by running the following in the root directory:",
"#",
"# yarn update-dependabot-config",
"",
results,
].join("\n")
);
})();
+328 -9
View File
@@ -25,6 +25,13 @@
dependencies:
"@babel/highlight" "^7.10.4"
"@babel/[email protected]":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
dependencies:
"@babel/highlight" "^7.10.4"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
@@ -1683,6 +1690,21 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
espree "^7.3.0"
globals "^13.9.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@evocateur/libnpmaccess@^3.1.2":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845"
@@ -1901,6 +1923,27 @@
xcode "^3.0.1"
xml2js "0.4.23"
"@expo/config-plugins@~4.1.4":
version "4.1.4"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.4.tgz#08e1a6314dc0f96cd165a748b5997b5ec75a84d0"
integrity sha512-fkOjXnSieQfVSWVLKhst0DnCAyeHksvWky1CldFCQllhDB1HHBiP09Z8pamVB783n3qr/1HNZiSp6k2iUcaSoA==
dependencies:
"@expo/config-types" "^45.0.0"
"@expo/json-file" "8.2.36"
"@expo/plist" "0.0.18"
"@expo/sdk-runtime-versions" "^1.0.0"
"@react-native/normalize-color" "^2.0.0"
chalk "^4.1.2"
debug "^4.3.1"
find-up "~5.0.0"
getenv "^1.0.0"
glob "7.1.6"
resolve-from "^5.0.0"
semver "^7.3.5"
slash "^3.0.0"
xcode "^3.0.1"
xml2js "0.4.23"
"@expo/config-types@^40.0.0-beta.2":
version "40.0.0-beta.2"
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-40.0.0-beta.2.tgz#4fea4ef5654d02218b02b0b3772529a9ce5b0471"
@@ -1926,6 +1969,11 @@
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-44.0.0.tgz#d3480fe2c99f9e895dae4ebba58b74ed72d03e26"
integrity sha512-d+gpdKOAhqaD5RmcMzGgKzNtvE1w+GCqpFQNSXLliYlXjj+Tv0eL8EPeAdPtvke0vowpPFwd5McXLA90dgY6Jg==
"@expo/config-types@^45.0.0":
version "45.0.0"
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-45.0.0.tgz#963c2fdce8fbcbd003758b92ed8a25375f437ef6"
integrity sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA==
"@expo/[email protected]":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-5.0.1.tgz#845b2d87bb360bac3e578fa629b68f10377f2005"
@@ -2107,6 +2155,15 @@
json5 "^1.0.1"
write-file-atomic "^2.3.0"
"@expo/[email protected]":
version "8.2.36"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.36.tgz#62a505cb7f30a34d097386476794680a3f7385ff"
integrity sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==
dependencies:
"@babel/code-frame" "~7.10.4"
json5 "^1.0.1"
write-file-atomic "^2.3.0"
"@expo/metro-config@^0.1.59":
version "0.1.76"
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.1.76.tgz#b54cf4372bf8df74b3c6e259186169ee83f78639"
@@ -2199,6 +2256,15 @@
base64-js "^1.2.3"
xmlbuilder "^14.0.0"
"@expo/[email protected]":
version "0.0.18"
resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.18.tgz#9abcde78df703a88f6d9fa1a557ee2f045d178b0"
integrity sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==
dependencies:
"@xmldom/xmldom" "~0.7.0"
base64-js "^1.2.3"
xmlbuilder "^14.0.0"
"@expo/prebuild-config@^3.0.6":
version "3.0.7"
resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-3.0.7.tgz#9d2e22b06ea61377331d561e5fb47a505d96757c"
@@ -2305,6 +2371,20 @@
dependencies:
"@hapi/hoek" "^9.0.0"
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
dependencies:
"@humanwhocodes/object-schema" "^1.2.0"
debug "^4.1.1"
minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.0":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@isaacs/string-locale-compare@^1.0.1", "@isaacs/string-locale-compare@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b"
@@ -5253,6 +5333,11 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
acorn-jsx@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-walk@^6.0.1:
version "6.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
@@ -5273,7 +5358,7 @@ acorn@^6.0.1, acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
acorn@^7.1.0, acorn@^7.1.1:
acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -5372,7 +5457,7 @@ ajv-keywords@^5.0.0:
dependencies:
fast-deep-equal "^3.1.3"
ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -5392,6 +5477,16 @@ ajv@^8.0.0, ajv@^8.8.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
ajv@^8.0.1:
version "8.10.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d"
integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ajv@^8.6.3:
version "8.8.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb"
@@ -5412,6 +5507,11 @@ anser@^1.4.9:
resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b"
integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==
ansi-colors@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
ansi-escapes@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@@ -5764,6 +5864,11 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
astral-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
async-each@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
@@ -7614,7 +7719,7 @@ cross-os@^1.3.0:
resolved "https://registry.yarnpkg.com/cross-os/-/cross-os-1.4.0.tgz#350f03fccb4bd9178777b6ae20160c1c7c79dbed"
integrity sha512-nuARAXqbsizhsqo3qo1bpYW2S6ohxJICjo/5Q/mq5xQ9dn1uWoRQ855DZrBAWgVfg7liPLdatnY2KMZwZYuxsQ==
[email protected], cross-spawn@^7.0.0, cross-spawn@^7.0.3:
[email protected], cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -7962,6 +8067,13 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
debug@^4.0.1:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
@@ -8019,6 +8131,11 @@ deep-extend@^0.6.0:
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -8266,6 +8383,13 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
dom-converter@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@@ -8495,6 +8619,13 @@ enhanced-resolve@^4.1.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
enquirer@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
dependencies:
ansi-colors "^4.1.1"
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
@@ -8715,6 +8846,11 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
escodegen@^1.11.1, escodegen@^1.9.1:
version "1.14.3"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
@@ -8849,6 +8985,13 @@ eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
@@ -8856,16 +8999,83 @@ eslint-utils@^3.0.0:
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint@^7.25.0:
version "7.32.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
dependencies:
"@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.4.3"
"@humanwhocodes/config-array" "^0.5.0"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^5.1.2"
globals "^13.6.0"
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
progress "^2.0.0"
regexpp "^3.1.0"
semver "^7.2.1"
strip-ansi "^6.0.0"
strip-json-comments "^3.1.0"
table "^6.0.9"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
dependencies:
acorn "^7.4.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
dependencies:
estraverse "^5.1.0"
esrecurse@^4.1.0, esrecurse@^4.2.1, esrecurse@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
@@ -8878,6 +9088,11 @@ estraverse@^4.1.1, estraverse@^4.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
estraverse@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
@@ -9348,7 +9563,7 @@ [email protected], fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
fast-levenshtein@~2.0.6:
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
@@ -9454,6 +9669,13 @@ figures@^3.0.0:
dependencies:
escape-string-regexp "^1.0.5"
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
dependencies:
flat-cache "^3.0.4"
file-loader@~6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f"
@@ -9590,11 +9812,24 @@ find-yarn-workspace-root@^2.0.0, find-yarn-workspace-root@~2.0.0:
dependencies:
micromatch "^4.0.2"
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
dependencies:
flatted "^3.1.0"
rimraf "^3.0.2"
flat@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
flatted@^3.1.0:
version "3.2.5"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
flow-parser@0.*:
version "0.162.1"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.162.1.tgz#128150cd483c4899719fb5ceb06744282e51a10d"
@@ -10148,6 +10383,13 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.6.0, globals@^13.9.0:
version "13.13.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b"
integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==
dependencies:
type-fest "^0.20.2"
[email protected]:
version "11.0.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
@@ -10666,7 +10908,7 @@ ignore-walk@^4.0.1:
dependencies:
minimatch "^3.0.4"
ignore@^4.0.3:
ignore@^4.0.3, ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
@@ -10699,7 +10941,7 @@ import-fresh@^2.0.0:
caller-path "^2.0.0"
resolve-from "^3.0.0"
import-fresh@^3.2.1:
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -12623,6 +12865,11 @@ [email protected]:
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
@@ -12812,6 +13059,14 @@ levenshtein-edit-distance@^1.0.0:
resolved "https://registry.yarnpkg.com/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz#895baf478cce8b5c1a0d27e45d7c1d978a661e49"
integrity sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
prelude-ls "^1.2.1"
type-check "~0.4.0"
levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -13284,6 +13539,11 @@ [email protected], lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.omit@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
@@ -13324,6 +13584,11 @@ lodash.throttle@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
lodash.truncate@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -15472,6 +15737,18 @@ optionator@^0.8.1:
type-check "~0.3.2"
word-wrap "~1.2.3"
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
dependencies:
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
word-wrap "^1.2.3"
options@>=0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
@@ -16494,6 +16771,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.2
source-map "^0.6.1"
supports-color "^6.1.0"
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -16579,7 +16861,7 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
progress@^2.0.3:
progress@^2.0.0, progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
@@ -18049,7 +18331,7 @@ [email protected]:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
[email protected], semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.2:
[email protected], semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.2:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@@ -18270,6 +18552,15 @@ slice-ansi@^2.0.0:
astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0"
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
dependencies:
ansi-styles "^4.0.0"
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
slide@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
@@ -18848,6 +19139,11 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -18954,6 +19250,17 @@ symbol-tree@^3.2.2, symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@^6.0.9:
version "6.8.0"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==
dependencies:
ajv "^8.0.1"
lodash.truncate "^4.4.2"
slice-ansi "^4.0.0"
string-width "^4.2.3"
strip-ansi "^6.0.1"
tail@^2.0.0:
version "2.2.3"
resolved "https://registry.yarnpkg.com/tail/-/tail-2.2.3.tgz#3e6bf65963bb868913e4e3b770cc1584c9d8091c"
@@ -19492,6 +19799,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies:
prelude-ls "^1.2.1"
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -19986,6 +20300,11 @@ uuid@^8.3.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache@^2.0.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
v8-to-istanbul@^4.1.3:
version "4.1.4"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
@@ -20339,7 +20658,7 @@ windows-release@^3.1.0:
dependencies:
execa "^1.0.0"
word-wrap@~1.2.3:
word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==