Compare commits

...
Author SHA1 Message Date
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
35 changed files with 616 additions and 146 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
+3
View File
@@ -54,6 +54,9 @@ 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
env:
+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",
@@ -2,22 +2,24 @@ 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') {
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:+'
)
"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.')
throw new Error(
"[@expo/config-plugins][withAndroidJscIntl] Cannot enable Intl in Android JSC app gradle because the build.gradle is not groovy."
);
}
return config
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;
}
+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,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,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">) {
@@ -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,
@@ -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}`;
@@ -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) => {
@@ -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")
);
})();
+284 -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"
@@ -2305,6 +2327,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 +5289,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 +5314,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 +5413,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 +5433,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 +5463,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 +5820,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 +7675,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 +8023,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 +8087,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 +8339,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 +8575,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 +8802,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 +8941,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 +8955,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 +9044,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 +9519,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 +9625,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 +9768,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 +10339,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 +10864,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 +10897,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 +12821,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 +13015,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 +13495,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 +13540,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 +15693,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 +16727,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 +16817,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 +18287,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 +18508,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 +19095,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 +19206,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 +19755,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 +20256,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 +20614,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==