diff --git a/.buildkite/react-native-pipeline.yml b/.buildkite/react-native-pipeline.yml
index 4fd6f9a542..2b1cf5fb49 100644
--- a/.buildkite/react-native-pipeline.yml
+++ b/.buildkite/react-native-pipeline.yml
@@ -1,5 +1,6 @@
steps:
- label: ':docker: Build and publish JS packages'
+ timeout_in_minutes: 30
plugins:
- docker-compose#v3.3.0:
build: publisher
@@ -23,6 +24,7 @@ steps:
- label: ':android: Build RN 0.60 apk'
key: "rn-0-60-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.60"
plugins:
@@ -33,6 +35,7 @@ steps:
- label: ':ios: Build RN 0.60 ipa'
key: "rn-0-60-ipa"
+ timeout_in_minutes: 60
agents:
queue: "opensource-mac-rn"
env:
@@ -44,6 +47,7 @@ steps:
- label: ':android: Build RN 0.63 apk'
key: "rn-0-63-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.63"
plugins:
@@ -54,6 +58,7 @@ steps:
- label: ':ios: Build RN 0.63 ipa'
key: "rn-0-63-ipa"
+ timeout_in_minutes: 60
agents:
queue: "opensource-mac-rn"
env:
@@ -65,6 +70,7 @@ steps:
- label: ':android: Build react-navigation 0.60 apk'
key: "react-navigation-0-60-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.60"
JS_SOURCE_DIR: "react_navigation_js"
@@ -78,6 +84,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: Build react-navigation 0.60 ipa'
# key: "react-navigation-0-60-ipa"
+ # timeout_in_minutes: 60
# agents:
# queue: "opensource-mac-rn"
# env:
@@ -91,6 +98,7 @@ steps:
- label: ':android: Build react-navigation 0.63 apk'
key: "react-navigation-0-63-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.63"
JS_SOURCE_DIR: "react_navigation_js"
@@ -104,6 +112,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: Build react-navigation 0.63 ipa'
# key: "react-navigation-0-63-ipa"
+ # timeout_in_minutes: 60
# agents:
# queue: "opensource-mac-rn"
# env:
@@ -117,6 +126,7 @@ steps:
- label: ':android: Build react-native-navigation 0.60 apk'
key: "react-native-navigation-0-60-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.60"
JS_SOURCE_DIR: "react_native_navigation_js"
@@ -130,6 +140,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: Build react-native-navigation 0.60 ipa'
# key: "react-native-navigation-0-60-ipa"
+ # timeout_in_minutes: 60
# agents:
# queue: "opensource-mac-rn"
# env:
@@ -143,6 +154,7 @@ steps:
- label: ':android: Build react-native-navigation 0.63 apk'
key: "react-native-navigation-0-63-apk"
depends_on: "android-builder-image"
+ timeout_in_minutes: 60
env:
REACT_NATIVE_VERSION: "rn0.63"
JS_SOURCE_DIR: "react_native_navigation_js"
@@ -156,6 +168,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: Build react-native-navigation 0.63 ipa'
# key: "react-native-navigation-0-63-ipa"
+ # timeout_in_minutes: 60
# agents:
# queue: "opensource-mac-rn"
# env:
@@ -168,6 +181,7 @@ steps:
- label: ':android: RN 0.60 Android 9 end-to-end tests'
depends_on: "rn-0-60-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/rn0.60.apk"
@@ -183,6 +197,7 @@ steps:
- label: ':ios: RN 0.60 iOS 12 end-to-end tests'
depends_on: "rn-0-60-ipa"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/rn0.60.ipa"
@@ -198,6 +213,7 @@ steps:
- label: ':android: RN 0.63 Android 9 end-to-end tests'
depends_on: "rn-0-63-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/rn0.63.apk"
@@ -213,6 +229,7 @@ steps:
- label: ':ios: RN 0.63 iOS 12 end-to-end tests'
depends_on: "rn-0-63-ipa"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/rn0.63.ipa"
@@ -228,6 +245,7 @@ steps:
- label: ':android: react-navigation 0.60 Android 9 end-to-end tests'
depends_on: "react-navigation-0-60-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/r_navigation_0.60.apk"
@@ -244,6 +262,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: react-navigation 0.60 iOS 13 end-to-end tests'
# depends_on: "react-navigation-0-60-ipa"
+ # timeout_in_minutes: 60
# plugins:
# artifacts#v1.2.0:
# download: "build/r_navigation_0.60.ipa"
@@ -259,6 +278,7 @@ steps:
- label: ':android: react-navigation 0.63 Android 9 end-to-end tests'
depends_on: "react-navigation-0-63-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/r_navigation_0.63.apk"
@@ -275,6 +295,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: react-navigation 0.63 iOS 13 end-to-end tests'
# depends_on: "react-navigation-0-63-ipa"
+ # timeout_in_minutes: 60
# plugins:
# artifacts#v1.2.0:
# download: "build/r_navigation_0.63.ipa"
@@ -290,6 +311,7 @@ steps:
- label: ':android: react-native-navigation 0.60 Android 9 end-to-end tests'
depends_on: "react-native-navigation-0-60-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/r_native_navigation_0.60.apk"
@@ -306,7 +328,8 @@ steps:
# See: PLAT-5173
# - label: ':ios: react-native-navigation 0.60 iOS 13 end-to-end tests'
# depends_on: "react-native-navigation-0-60-ipa"
- # plugins:
+ # timeout_in_minutes: 60
+ # plugins:
# artifacts#v1.2.0:
# download: "build/r_native_navigation_0.60.ipa"
# docker-compose#v3.1.0:
@@ -321,6 +344,7 @@ steps:
- label: ':android: react-native-navigation 0.63 Android 9 end-to-end tests'
depends_on: "react-native-navigation-0-63-apk"
+ timeout_in_minutes: 60
plugins:
artifacts#v1.2.0:
download: "build/r_native_navigation_0.63.apk"
@@ -337,6 +361,7 @@ steps:
# See: PLAT-5173
# - label: ':ios: react-native-navigation 0.63 iOS 13 end-to-end tests'
# depends_on: "react-native-navigation-0-63-ipa"
+ # timeout_in_minutes: 60
# plugins:
# artifacts#v1.2.0:
# download: "build/r_native_navigation_0.63.ipa"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 133fb72260..b5ff9a2c17 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## v7.5.2 (2020-11-09)
+
+### Changed
+
+- (react-native): Update bugsnag-cocoa to v6.2.4
+ - The `onCrashHandler` is no longer called in the event of an OOM. [bugsnag-cocoa#874](https://github.com/bugsnag/bugsnag-cocoa/pull/874)
+ - os_proc_available_memory() is now used to get free memory, if available. [bugsnag-cocoa#851](https://github.com/bugsnag/bugsnag-cocoa/pull/851)
+ - CPU and memory impact of leaving breadcrumbs has been reduced. [bugsnag-cocoa#851](https://github.com/bugsnag/bugsnag-cocoa/pull/851)
+ - Fix app version reported for crashes that occur before an upgrade. [bugsnag-cocoa#862](https://github.com/bugsnag/bugsnag-cocoa/pull/862)
+ - Catch exceptions when (de)serializing JSON. [bugsnag-cocoa#856](https://github.com/bugsnag/bugsnag-cocoa/pull/856)
+- (react-native): Update bugsnag-android to v5.2.3 [#1119](https://github.com/bugsnag/bugsnag-js/pull/1119)
+ - Flush persisted sessions on launch and on connectivity changes
+ [bugsnag-android#973](https://github.com/bugsnag/bugsnag-android/pull/973)
+ - Increase breadcrumb time precision to milliseconds
+ [bugsnag-android#954](https://github.com/bugsnag/bugsnag-android/pull/954)
+ - Default to allowing requests when checking connectivity
+ [bugsnag-android#970](https://github.com/bugsnag/bugsnag-android/pull/970)
+ - Support changing NDK Event's api key in OnErrorCallback
+ [bugsnag-android#964](https://github.com/bugsnag/bugsnag-android/pull/964)
+
## v7.5.1 (2020-10-23)
### Fixed
diff --git a/dockerfiles/Dockerfile.expo-publisher b/dockerfiles/Dockerfile.expo-publisher
index 4f5de887d1..320592da68 100644
--- a/dockerfiles/Dockerfile.expo-publisher
+++ b/dockerfiles/Dockerfile.expo-publisher
@@ -1,4 +1,4 @@
-FROM node:lts-alpine
+FROM node:12-alpine
RUN apk add --update bash git python
diff --git a/jest.config.js b/jest.config.js
index 9a1bf7625f..c3b925908f 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -63,6 +63,8 @@ module.exports = {
displayName: 'expo',
testMatch: [
testsForPackage('delivery-expo'),
+ testsForPackage('expo-cli'),
+ testsForPackage('plugin-expo-app'),
testsForPackage('plugin-expo-device')
]
},
diff --git a/package-lock.json b/package-lock.json
index a49f135d04..b77011762f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4814,6 +4814,15 @@
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
"dev": true
},
+ "@types/ncp": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/ncp/-/ncp-2.0.4.tgz",
+ "integrity": "sha512-erpimpT1pH8QfeNg77ypnjwz6CGMqrnL4DewVbqFzD9FXzSULjmG3KzjZnLNe7bzTSZm2W9DpkHyqop1g1KmgQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/node": {
"version": "13.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz",
@@ -4880,12 +4889,28 @@
"@types/react": "*"
}
},
+ "@types/rimraf": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.0.tgz",
+ "integrity": "sha512-7WhJ0MdpFgYQPXlF4Dx+DhgvlPCfz/x5mHaeDQAKhcenvQP1KCpLQ18JklAqeGMYSAT2PxLpzd0g2/HE7fj7hQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "*",
+ "@types/node": "*"
+ }
+ },
"@types/stack-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
"integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
"dev": true
},
+ "@types/uuid": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz",
+ "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==",
+ "dev": true
+ },
"@types/yargs": {
"version": "15.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz",
diff --git a/package.json b/package.json
index 7f4b8d24b2..c2b70fc424 100644
--- a/package.json
+++ b/package.json
@@ -20,10 +20,13 @@
"@babel/preset-react": "^7.9.4",
"@babel/preset-typescript": "^7.10.4",
"@types/jest": "^25.1.2",
+ "@types/ncp": "^2.0.4",
"@types/node": "^13.7.1",
"@types/node-fetch": "^2.5.7",
"@types/react": "^16.9.23",
"@types/react-test-renderer": "^16.9.2",
+ "@types/rimraf": "^3.0.0",
+ "@types/uuid": "^8.3.0",
"@typescript-eslint/eslint-plugin": "^2.19.2",
"@typescript-eslint/parser": "^2.19.2",
"babel-jest": "^26.3.0",
diff --git a/packages/expo-cli/lib/test/.gitignore b/packages/expo-cli/lib/test/.gitignore
index d36977dc47..aab4112aed 100644
--- a/packages/expo-cli/lib/test/.gitignore
+++ b/packages/expo-cli/lib/test/.gitignore
@@ -1 +1 @@
-.tmp
+.tmp*
diff --git a/packages/expo-cli/lib/test/add-hook.test.js b/packages/expo-cli/lib/test/add-hook.test.ts
similarity index 72%
rename from packages/expo-cli/lib/test/add-hook.test.js
rename to packages/expo-cli/lib/test/add-hook.test.ts
index 2e7d3cc523..62d3d9a1ab 100644
--- a/packages/expo-cli/lib/test/add-hook.test.js
+++ b/packages/expo-cli/lib/test/add-hook.test.ts
@@ -1,46 +1,49 @@
-/* global describe, it, expect */
-
-const prepareFixture = require('./lib/prepare-fixture')
-const addHook = require('../add-hook')
-const { promisify } = require('util')
-const { readFile } = require('fs')
+/* eslint-disable jest/no-try-expect */
+import { prepareFixture } from './lib/prepare-fixture'
+import addHook from '../add-hook'
+import { promisify } from 'util'
+import { readFile } from 'fs'
describe('expo-cli: add-hook', () => {
it('should work on a fresh project', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
const msg = await addHook(projectRoot)
expect(msg).toBe(undefined)
const appJsonRaw = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const appJson = JSON.parse(appJsonRaw)
expect(appJson.expo.hooks.postPublish[0].file).toBe('@bugsnag/expo/hooks/post-publish.js')
+ await clean()
})
it('shouldn’t duplicate the hook config', async () => {
- const projectRoot = await prepareFixture('already-configured-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-configured-00')
const msg = await addHook(projectRoot)
expect(msg).toMatch(/already/)
const appJsonRaw = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const appJson = JSON.parse(appJsonRaw)
expect(appJson.expo.hooks.postPublish.length).toBe(1)
+ await clean()
})
it('should provide a reasonable error when there is no app.json', async () => {
- const projectRoot = await prepareFixture('empty-00')
+ const { target: projectRoot, clean } = await prepareFixture('empty-00')
try {
await addHook(projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/^Couldn’t find app\.json in/)
+ await clean()
}
})
it('should provide a reasonable error when app.json is not valid JSON', async () => {
- const projectRoot = await prepareFixture('malformed-json-00')
+ const { target: projectRoot, clean } = await prepareFixture('malformed-json-00')
try {
await addHook(projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/it wasn’t valid JSON/)
+ await clean()
}
})
diff --git a/packages/expo-cli/lib/test/detect-installed.test.js b/packages/expo-cli/lib/test/detect-installed.test.ts
similarity index 51%
rename from packages/expo-cli/lib/test/detect-installed.test.js
rename to packages/expo-cli/lib/test/detect-installed.test.ts
index befad38fbd..2dcf01295a 100644
--- a/packages/expo-cli/lib/test/detect-installed.test.js
+++ b/packages/expo-cli/lib/test/detect-installed.test.ts
@@ -1,22 +1,23 @@
-/* global describe, it, expect */
-
-const prepareFixture = require('./lib/prepare-fixture')
-const detectInstalled = require('../detect-installed')
+import { prepareFixture } from './lib/prepare-fixture'
+import detectInstalled from '../detect-installed'
describe('expo-cli: detect-installed', () => {
it('should work on a fresh project', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
const version = await detectInstalled(projectRoot)
expect(version).toBe(undefined)
+ await clean()
})
it('should work on project with Bugsnag installed', async () => {
- const projectRoot = await prepareFixture('already-configured-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-configured-00')
const version = await detectInstalled(projectRoot)
expect(version).toBe('^7.0.0')
+ await clean()
- const projectRoot2 = await prepareFixture('already-configured-01')
+ const { target: projectRoot2, clean: clean2 } = await prepareFixture('already-configured-01')
const version2 = await detectInstalled(projectRoot2)
expect(version2).toBe('7.0.0')
+ await clean2()
})
})
diff --git a/packages/expo-cli/lib/test/insert.test.js b/packages/expo-cli/lib/test/insert.test.ts
similarity index 66%
rename from packages/expo-cli/lib/test/insert.test.js
rename to packages/expo-cli/lib/test/insert.test.ts
index ec34edd363..9321138ae9 100644
--- a/packages/expo-cli/lib/test/insert.test.js
+++ b/packages/expo-cli/lib/test/insert.test.ts
@@ -1,69 +1,63 @@
-/* global describe, it, expect */
-
-const prepareFixture = require('./lib/prepare-fixture')
-const insert = require('../insert')
-const { promisify } = require('util')
-const { readFile } = require('fs')
+import { prepareFixture } from './lib/prepare-fixture'
+import insert from '../insert'
+import { promisify } from 'util'
+import { readFile } from 'fs'
describe('expo-cli: insert', () => {
it('should work on a fresh project', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
const msg = await insert(projectRoot)
expect(msg).toBe(undefined)
const appJs = await promisify(readFile)(`${projectRoot}/App.js`, 'utf8')
expect(appJs).toMatch(/^import Bugsnag from '@bugsnag\/expo';\sBugsnag.start\(\);\s/)
+ await clean()
})
it('shouldn’t insert if @bugsnag/expo is already imported (import)', async () => {
- const projectRoot = await prepareFixture('already-configured-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-configured-00')
const appJsBefore = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const msg = await insert(projectRoot)
expect(msg).toMatch(/already/)
const appJsAfter = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
expect(appJsAfter).toBe(appJsBefore)
+ await clean()
})
it('shouldn’t insert if @bugsnag/expo is already imported (require)', async () => {
- const projectRoot = await prepareFixture('already-configured-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-configured-00')
const appJsBefore = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const msg = await insert(projectRoot)
expect(msg).toMatch(/already/)
const appJsAfter = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
expect(appJsAfter).toBe(appJsBefore)
+ await clean()
})
it('should provide a reasonable error when there is no App.js', async () => {
- const projectRoot = await prepareFixture('empty-00')
- try {
- await insert(projectRoot)
- expect('should not be here').toBe(false)
- } catch (e) {
- expect(e.message).toMatch(/^Couldn’t find App\.js in/)
- }
+ const { target: projectRoot, clean } = await prepareFixture('empty-00')
+ await expect(insert(projectRoot)).rejects.toThrow(/^Couldn’t find App\.js in/)
+ await clean()
})
it('doesn’t swallow any other errors', async () => {
- try {
- await insert(/* projectRoot is required */)
- expect('should not be here').toBe(false)
- } catch (e) {
- expect(e.message).toMatch(/The "path" argument must be of type string/)
- }
+ await expect(insert(/* projectRoot is required */)).rejects.toThrow(/The "path" argument must be of type string/)
})
it('inserts correct code for pre v7 versions of Bugsnag', async () => {
- const projectRoot = await prepareFixture('already-installed-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-installed-00')
const msg = await insert(projectRoot)
expect(msg).toBe(undefined)
const appJs = await promisify(readFile)(`${projectRoot}/App.js`, 'utf8')
expect(appJs).toMatch(/^import bugsnag from '@bugsnag\/expo';\sconst bugsnagClient = bugsnag\(\);\s/)
+ await clean()
})
it('inserts correct code for post v7.0.0 versions of Bugsnag', async () => {
- const projectRoot = await prepareFixture('already-installed-01')
+ const { target: projectRoot, clean } = await prepareFixture('already-installed-01')
const msg = await insert(projectRoot)
expect(msg).toBe(undefined)
const appJs = await promisify(readFile)(`${projectRoot}/App.js`, 'utf8')
expect(appJs).toMatch(/^import Bugsnag from '@bugsnag\/expo';\sBugsnag\.start\(\);\s/)
+ await clean()
})
})
diff --git a/packages/expo-cli/lib/test/install.test.js b/packages/expo-cli/lib/test/install.test.ts
similarity index 65%
rename from packages/expo-cli/lib/test/install.test.js
rename to packages/expo-cli/lib/test/install.test.ts
index 09c61b5fb9..a75983190a 100644
--- a/packages/expo-cli/lib/test/install.test.js
+++ b/packages/expo-cli/lib/test/install.test.ts
@@ -1,25 +1,30 @@
-/* global describe, it, expect */
-
-const prepareFixture = require('./lib/prepare-fixture')
-const proxyquire = require('proxyquire').noPreserveCache().noCallThru()
-const { EventEmitter } = require('events')
-const { Readable } = require('stream')
+/* eslint-disable @typescript-eslint/no-var-requires */
+/* eslint-disable jest/no-try-expect */
+import { prepareFixture } from './lib/prepare-fixture'
+import { EventEmitter } from 'events'
+import { Readable } from 'stream'
describe('expo-cli: install', () => {
+ beforeEach(() => {
+ jest.resetModules()
+ })
+
it('should work on a fresh project (npm)', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
- const spawn = (cmd, args, opts) => {
+ const spawn = (cmd: string, args: string[], opts: {}) => {
expect(cmd).toBe('npm')
expect(args).toEqual(['install', '@bugsnag/expo@latest'])
expect(opts).toEqual({ cwd: projectRoot })
const proc = new EventEmitter()
+ // @ts-ignore
proc.stdout = new Readable({
read () {
this.push('some data on stdout')
this.push(null)
}
})
+ // @ts-ignore
proc.stderr = new Readable({
read () {
this.push('some data on stderr')
@@ -30,25 +35,30 @@ describe('expo-cli: install', () => {
return proc
}
- const install = proxyquire('../install', { child_process: { spawn } })
+ jest.doMock('child_process', () => ({ spawn }))
+ const install = require('../install')
+
const msg = await install('npm', 'latest', projectRoot)
expect(msg).toBe(undefined)
+ await clean()
})
it('should work on a fresh project (yarn)', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
- const spawn = (cmd, args, opts) => {
+ const spawn = (cmd: string, args: string[], opts: {}) => {
expect(cmd).toBe('yarn')
expect(args).toEqual(['add', '@bugsnag/expo@6.3.1'])
expect(opts).toEqual({ cwd: projectRoot })
const proc = new EventEmitter()
+ // @ts-ignore
proc.stdout = new Readable({
read () {
this.push('some data on stdout')
this.push(null)
}
})
+ // @ts-ignore
proc.stderr = new Readable({
read () {
this.push('some data on stderr')
@@ -59,22 +69,27 @@ describe('expo-cli: install', () => {
return proc
}
- const install = proxyquire('../install', { child_process: { spawn } })
+ jest.doMock('child_process', () => ({ spawn }))
+ const install = require('../install')
+
const msg = await install('yarn', '6.3.1', projectRoot)
expect(msg).toBe(undefined)
+ await clean()
})
it('should add stderr/stdout output onto error if there is one (non-zero exit code)', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
- const spawn = (cmd, args, opts) => {
+ const spawn = (cmd: string, args: string[], opts: {}) => {
const proc = new EventEmitter()
+ // @ts-ignore
proc.stdout = new Readable({
read () {
this.push('some data on stdout')
this.push(null)
}
})
+ // @ts-ignore
proc.stderr = new Readable({
read () {
this.push('some data on stderr')
@@ -85,7 +100,9 @@ describe('expo-cli: install', () => {
return proc
}
- const install = proxyquire('../install', { child_process: { spawn } })
+ jest.doMock('child_process', () => ({ spawn }))
+ const install = require('../install')
+
try {
await install('yarn', 'latest', projectRoot)
expect('should not be here').toBe(false)
@@ -93,20 +110,23 @@ describe('expo-cli: install', () => {
expect(e.message).toMatch(/Command exited with non-zero exit code/)
expect(e.message).toMatch(/some data on stdout/)
expect(e.message).toMatch(/some data on stderr/)
+ await clean()
}
})
it('should throw an error if the command does', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
- const spawn = (cmd, args, opts) => {
+ const spawn = (cmd: string, args: string[], opts: {}) => {
const proc = new EventEmitter()
+ // @ts-ignore
proc.stdout = new Readable({
read () {
this.push('some data on stdout')
this.push(null)
}
})
+ // @ts-ignore
proc.stderr = new Readable({
read () {
this.push('some data on stderr')
@@ -117,26 +137,32 @@ describe('expo-cli: install', () => {
return proc
}
- const install = proxyquire('../install', { child_process: { spawn } })
+ jest.doMock('child_process', () => ({ spawn }))
+ const install = require('../install')
+
try {
await install('yarn', 'latest', projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/floop/)
+ await clean()
}
})
it('should throw an error if the packageManager option is missing', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
+
+ const spawn = (cmd: string, args: string[], opts: {}) => {}
- const spawn = (cmd, args, opts) => {}
+ jest.doMock('child_process', () => ({ spawn }))
+ const install = require('../install')
- const install = proxyquire('../install', { child_process: { spawn } })
try {
await install(undefined, 'latest', projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/Don’t know what command to use for /)
+ await clean()
}
})
})
diff --git a/packages/expo-cli/lib/test/lib/prepare-fixture.js b/packages/expo-cli/lib/test/lib/prepare-fixture.js
deleted file mode 100644
index fb4ac7bd4f..0000000000
--- a/packages/expo-cli/lib/test/lib/prepare-fixture.js
+++ /dev/null
@@ -1,23 +0,0 @@
-const { ncp } = require('ncp')
-const { mkdir } = require('fs')
-const rimraf = require('rimraf')
-const { promisify } = require('util')
-
-const prepare = async (fixture) => {
- const tmp = `${__dirname}/../.tmp`
-
- // ensure tmp directory is empty
- await promisify(rimraf)(tmp)
-
- // ensure tmp directory exists
- await promisify(mkdir)(tmp)
-
- // copy in the desired fixture
- const target = `${tmp}/${fixture}`
- await promisify(ncp)(`${__dirname}/../fixtures/${fixture}`, target)
-
- // give the target path to the caller
- return target
-}
-
-module.exports = prepare
diff --git a/packages/expo-cli/lib/test/lib/prepare-fixture.ts b/packages/expo-cli/lib/test/lib/prepare-fixture.ts
new file mode 100644
index 0000000000..17bdf9e97d
--- /dev/null
+++ b/packages/expo-cli/lib/test/lib/prepare-fixture.ts
@@ -0,0 +1,20 @@
+import { ncp } from 'ncp'
+import { mkdir } from 'fs'
+import rimraf from 'rimraf'
+import { promisify } from 'util'
+import { v4 as uuidv4 } from 'uuid'
+
+export const prepareFixture = async (fixture: string) => {
+ const tmp = `${__dirname}/../.tmp${uuidv4()}`
+
+ const target = `${tmp}/${fixture}`
+
+ // create target directory
+ await promisify(mkdir)(target, { recursive: true })
+
+ // copy in the desired fixture
+ await promisify(ncp)(`${__dirname}/../fixtures/${fixture}`, target)
+
+ // give the target path and a clean up function to the caller
+ return { target, clean: async () => promisify(rimraf)(tmp) }
+}
diff --git a/packages/expo-cli/lib/test/set-api-key.test.js b/packages/expo-cli/lib/test/set-api-key.test.ts
similarity index 72%
rename from packages/expo-cli/lib/test/set-api-key.test.js
rename to packages/expo-cli/lib/test/set-api-key.test.ts
index 429fce0181..db3b64449f 100644
--- a/packages/expo-cli/lib/test/set-api-key.test.js
+++ b/packages/expo-cli/lib/test/set-api-key.test.ts
@@ -1,46 +1,49 @@
-/* global describe, it, expect */
-
-const prepareFixture = require('./lib/prepare-fixture')
-const setApiKey = require('../set-api-key')
-const { promisify } = require('util')
-const { readFile } = require('fs')
+/* eslint-disable jest/no-try-expect */
+import { prepareFixture } from './lib/prepare-fixture'
+import setApiKey from '../set-api-key'
+import { promisify } from 'util'
+import { readFile } from 'fs'
describe('expo-cli: set-api-key', () => {
it('should work on a fresh project', async () => {
- const projectRoot = await prepareFixture('blank-00')
+ const { target: projectRoot, clean } = await prepareFixture('blank-00')
const msg = await setApiKey('AABBCCDD', projectRoot)
expect(msg).toBe(undefined)
const appJsonRaw = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const appJson = JSON.parse(appJsonRaw)
expect(appJson.expo.extra.bugsnag.apiKey).toBe('AABBCCDD')
+ await clean()
})
it('shouldn’t replaces an existing API key', async () => {
- const projectRoot = await prepareFixture('already-configured-00')
+ const { target: projectRoot, clean } = await prepareFixture('already-configured-00')
const msg = await setApiKey('AABBCCDD', projectRoot)
expect(msg).toBe(undefined)
const appJsonRaw = await promisify(readFile)(`${projectRoot}/app.json`, 'utf8')
const appJson = JSON.parse(appJsonRaw)
expect(appJson.expo.extra.bugsnag.apiKey).toBe('AABBCCDD')
+ await clean()
})
it('should provide a reasonable error when there is no app.json', async () => {
- const projectRoot = await prepareFixture('empty-00')
+ const { target: projectRoot, clean } = await prepareFixture('empty-00')
try {
await setApiKey('AABBCCDD', projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/^Couldn’t find app\.json in/)
+ await clean()
}
})
it('should provide a reasonable error when app.json is not valid JSON', async () => {
- const projectRoot = await prepareFixture('malformed-json-00')
+ const { target: projectRoot, clean } = await prepareFixture('malformed-json-00')
try {
await setApiKey('AABBCCDD', projectRoot)
expect('should not be here').toBe(false)
} catch (e) {
expect(e.message).toMatch(/it wasn’t valid JSON/)
+ await clean()
}
})
diff --git a/packages/expo-cli/package-lock.json b/packages/expo-cli/package-lock.json
index fd935afd98..a9da4ddfd3 100644
--- a/packages/expo-cli/package-lock.json
+++ b/packages/expo-cli/package-lock.json
@@ -4,171 +4,11 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "@babel/code-frame": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
- "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
- "dev": true,
- "requires": {
- "@babel/highlight": "7.0.0-beta.51"
- }
- },
- "@babel/generator": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz",
- "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.5",
- "source-map": "^0.5.0",
- "trim-right": "^1.0.1"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz",
- "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "7.0.0-beta.51",
- "@babel/template": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz",
- "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz",
- "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/highlight": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
- "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
- "dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
- "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
- "dev": true
- },
- "@babel/template": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz",
- "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "lodash": "^4.17.5"
- }
- },
- "@babel/traverse": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz",
- "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.0.0-beta.51",
- "@babel/generator": "7.0.0-beta.51",
- "@babel/helper-function-name": "7.0.0-beta.51",
- "@babel/helper-split-export-declaration": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "debug": "^3.1.0",
- "globals": "^11.1.0",
- "invariant": "^2.2.0",
- "lodash": "^4.17.5"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz",
- "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.5",
- "to-fast-properties": "^2.0.0"
- }
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
"array-back": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-3.0.1.tgz",
"integrity": "sha512-nzD+aqgQPTZlUGH6tE8JEjYPpnuBUFghPbq6zEWBHUmCHGQKWD9pf1PIuc2bMBtzi2OoIaoTJwgBV3h0ztdrFg=="
},
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
"command-line-args": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz",
@@ -180,33 +20,6 @@
"typical": "^4.0.0"
}
},
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
- "dev": true
- },
"find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
@@ -215,2230 +28,16 @@
"array-back": "^3.0.1"
}
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globals": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
- "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
- "istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz",
- "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==",
- "dev": true,
- "requires": {
- "@babel/generator": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/template": "7.0.0-beta.51",
- "@babel/traverse": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "istanbul-lib-coverage": "^2.0.1",
- "semver": "^5.5.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "jasmine": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.1.0.tgz",
- "integrity": "sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=",
- "dev": true,
- "requires": {
- "glob": "^7.0.6",
- "jasmine-core": "~3.1.0"
- }
- },
- "jasmine-core": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.1.0.tgz",
- "integrity": "sha1-pHheE11d9lAk38kiSVPfWFvSdmw=",
- "dev": true
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
"kleur": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz",
"integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q=="
},
- "lodash": {
- "version": "4.17.11",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
- "dev": true
- },
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
},
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
- "nyc": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz",
- "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=",
- "dev": true,
- "requires": {
- "archy": "^1.0.0",
- "arrify": "^1.0.1",
- "caching-transform": "^1.0.0",
- "convert-source-map": "^1.5.1",
- "debug-log": "^1.0.1",
- "default-require-extensions": "^1.0.0",
- "find-cache-dir": "^0.1.1",
- "find-up": "^2.1.0",
- "foreground-child": "^1.5.3",
- "glob": "^7.0.6",
- "istanbul-lib-coverage": "^1.2.0",
- "istanbul-lib-hook": "^1.1.0",
- "istanbul-lib-instrument": "^2.1.0",
- "istanbul-lib-report": "^1.1.3",
- "istanbul-lib-source-maps": "^1.2.5",
- "istanbul-reports": "^1.4.1",
- "md5-hex": "^1.2.0",
- "merge-source-map": "^1.1.0",
- "micromatch": "^3.1.10",
- "mkdirp": "^0.5.0",
- "resolve-from": "^2.0.0",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.1",
- "spawn-wrap": "^1.4.2",
- "test-exclude": "^4.2.0",
- "yargs": "11.1.0",
- "yargs-parser": "^8.0.0"
- },
- "dependencies": {
- "align-text": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "append-transform": {
- "version": "0.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "default-require-extensions": "^1.0.0"
- }
- },
- "archy": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "arr-diff": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "bundled": true,
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "bundled": true,
- "dev": true
- },
- "atob": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "builtin-modules": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "caching-transform": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "md5-hex": "^1.2.0",
- "mkdirp": "^0.5.1",
- "write-file-atomic": "^1.1.4"
- }
- },
- "camelcase": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "center-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
- },
- "class-utils": {
- "version": "0.3.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "cliui": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "commondir": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "component-emitter": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true
- },
- "convert-source-map": {
- "version": "1.5.1",
- "bundled": true,
- "dev": true
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "cross-spawn": {
- "version": "4.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "debug": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "debug-log": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "decamelize": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "bundled": true,
- "dev": true
- },
- "default-require-extensions": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "strip-bom": "^2.0.0"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "error-ex": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "execa": {
- "version": "0.7.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "extend-shallow": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "find-cache-dir": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "mkdirp": "^0.5.1",
- "pkg-dir": "^1.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "foreground-child": {
- "version": "1.5.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
- }
- },
- "fragment-cache": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "get-caller-file": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "bundled": true,
- "dev": true
- },
- "glob": {
- "version": "7.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "bundled": true,
- "dev": true
- },
- "handlebars": {
- "version": "4.0.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "has-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hosted-git-info": {
- "version": "2.6.0",
- "bundled": true,
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "bundled": true,
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "builtin-modules": "^1.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-odd": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-hook": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "append-transform": "^0.4.0"
- }
- },
- "istanbul-lib-report": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^1.1.2",
- "mkdirp": "^0.5.1",
- "path-parse": "^1.0.5",
- "supports-color": "^3.1.2"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.2.0",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.6.1",
- "source-map": "^0.5.3"
- }
- },
- "istanbul-reports": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "handlebars": "^4.0.3"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "lazy-cache": {
- "version": "1.0.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "lcid": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "longest": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "lru-cache": {
- "version": "4.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "bundled": true,
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "md5-hex": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "md5-o-matic": "^0.1.1"
- }
- },
- "md5-o-matic": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "mem": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "merge-source-map": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true
- },
- "mixin-deep": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-odd": "^2.0.0",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "object-visit": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "os-locale": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "p-limit": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "path-exists": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true
- },
- "path-parse": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "bundled": true,
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "repeat-element": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "bundled": true,
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "resolve-from": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "bundled": true,
- "dev": true
- },
- "right-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "glob": "^7.0.5"
- }
- },
- "safe-regex": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "semver": {
- "version": "5.5.0",
- "bundled": true,
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "set-value": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true
- },
- "slide": {
- "version": "1.1.6",
- "bundled": true,
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "bundled": true,
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "bundled": true,
- "dev": true
- },
- "spawn-wrap": {
- "version": "1.4.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "foreground-child": "^1.5.6",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "which": "^1.3.0"
- }
- },
- "spdx-correct": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "string-width": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "test-exclude": {
- "version": "4.2.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "micromatch": "^3.1.8",
- "object-assign": "^4.1.0",
- "read-pkg-up": "^1.0.1",
- "require-main-filename": "^1.0.1"
- }
- },
- "to-object-path": {
- "version": "0.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
- },
- "dependencies": {
- "yargs": {
- "version": "3.10.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
- }
- }
- }
- },
- "uglify-to-browserify": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "union-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^0.4.3"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "set-value": {
- "version": "0.4.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.1",
- "to-object-path": "^0.3.0"
- }
- }
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true
- }
- }
- },
- "urix": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true
- },
- "use": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "window-size": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wordwrap": {
- "version": "0.0.3",
- "bundled": true,
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "write-file-atomic": {
- "version": "1.3.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "slide": "^1.1.5"
- }
- },
- "y18n": {
- "version": "3.2.1",
- "bundled": true,
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true
- },
- "yargs": {
- "version": "11.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "yargs-parser": {
- "version": "9.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "8.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true
- }
- }
- }
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
"prompts": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz",
@@ -2458,42 +57,15 @@
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz",
"integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ=="
},
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
"typical": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
"integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw=="
},
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "uuid": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
+ "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
"dev": true
}
}
diff --git a/packages/expo-cli/package.json b/packages/expo-cli/package.json
index fc93ae0efd..afec345036 100644
--- a/packages/expo-cli/package.json
+++ b/packages/expo-cli/package.json
@@ -3,9 +3,6 @@
"version": "7.4.0",
"description": "A tool to help integrate Bugsnag with an Expo app",
"bin": "cli.js",
- "scripts": {
- "test": "nyc --reporter=lcov -x lib/test/lib/* -x **/*.test.js -- jasmine '!(node_modules)/**/*.test.js'"
- },
"files": [
"commands",
"lib",
@@ -13,14 +10,13 @@
],
"author": "Bugsnag",
"license": "MIT",
- "devDependencies": {
- "jasmine": "3.1.0",
- "nyc": "^12.0.2"
- },
"dependencies": {
"command-line-args": "^5.0.2",
"kleur": "^3.0.2",
"prompts": "^2.0.4",
"semver": "^6.3.0"
+ },
+ "devDependencies": {
+ "uuid": "^8.3.1"
}
}
diff --git a/packages/expo/CONTRIBUTING.md b/packages/expo/CONTRIBUTING.md
new file mode 100644
index 0000000000..eeaa584719
--- /dev/null
+++ b/packages/expo/CONTRIBUTING.md
@@ -0,0 +1,28 @@
+# @bugnsnag/expo contributing guide
+
+## Keeping dependencies in sync
+
+The Expo notifier depends on some modules whose native code, if it exists, is bundled with Expo core. That means the version we depend on must match, otherwise we get conflicts and/or there are native/JS interface differences.
+
+When a new version of the Expo SDK is released, the dependencies we use must be checked to see if they are up to date.
+
+The following modules are currently used:
+
+- `expo-constants` (`@bugsnag/expo`, `@bugsnag/plugin-expo-app`, `@bugsnag/plugin-expo-device`)
+- `expo-file-system`, `@react-native-community/netinfo` (`@bugsnag/delivery-expo`)
+- `expo-constants` (`@bugsnag/plugin-expo-app`)
+- `expo-device` (`@bugsnag/plugin-expo-device`)
+
+If you add a new dependency please add it to this list.
+
+To check what native module versions are bundled with Expo, check this file:
+
+https://github.com/expo/expo/blob/master/packages/expo/bundledNativeModules.json
+
+To check what JS-only module versions are depended on by Expo, check this file:
+
+https://github.com/expo/expo/blob/master/changelogVersions.json
+
+## Updating the CLI to install a compatible notifier version
+
+When the version of the bundled native modules changes the notifier will be incompatible with previous Expo SDKs. To prevent installing the conflicting versions, we need to update the CLI using the established pattern in [`packages/expo-cli/commands/install.js`](../expo-cli/commands/install.js).
\ No newline at end of file
diff --git a/packages/plugin-expo-app/package-lock.json b/packages/plugin-expo-app/package-lock.json
index fa98015f88..ea414554d5 100644
--- a/packages/plugin-expo-app/package-lock.json
+++ b/packages/plugin-expo-app/package-lock.json
@@ -4,191 +4,16 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "@babel/code-frame": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
- "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
- "dev": true,
- "requires": {
- "@babel/highlight": "7.0.0-beta.51"
- }
- },
- "@babel/generator": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz",
- "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.5",
- "source-map": "^0.5.0",
- "trim-right": "^1.0.1"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz",
- "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "7.0.0-beta.51",
- "@babel/template": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz",
- "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz",
- "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=",
- "dev": true,
- "requires": {
- "@babel/types": "7.0.0-beta.51"
- }
- },
- "@babel/highlight": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
- "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
- "dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
- "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
- "dev": true
- },
- "@babel/template": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz",
- "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "lodash": "^4.17.5"
- }
- },
- "@babel/traverse": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz",
- "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.0.0-beta.51",
- "@babel/generator": "7.0.0-beta.51",
- "@babel/helper-function-name": "7.0.0-beta.51",
- "@babel/helper-split-export-declaration": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "debug": "^3.1.0",
- "globals": "^11.1.0",
- "invariant": "^2.2.0",
- "lodash": "^4.17.5"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz",
- "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.5",
- "to-fast-properties": "^2.0.0"
- }
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
"core-js": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
},
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
"encoding": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
@@ -197,18 +22,6 @@
"iconv-lite": "^0.6.2"
}
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
- "dev": true
- },
"expo-constants": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.2.0.tgz",
@@ -238,38 +51,6 @@
"resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
"integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
},
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globals": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
- "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"iconv-lite": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
@@ -278,31 +59,6 @@
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
},
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -317,60 +73,11 @@
"whatwg-fetch": ">=0.10.0"
}
},
- "istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz",
- "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==",
- "dev": true,
- "requires": {
- "@babel/generator": "7.0.0-beta.51",
- "@babel/parser": "7.0.0-beta.51",
- "@babel/template": "7.0.0-beta.51",
- "@babel/traverse": "7.0.0-beta.51",
- "@babel/types": "7.0.0-beta.51",
- "istanbul-lib-coverage": "^2.0.1",
- "semver": "^5.5.0"
- }
- },
- "jasmine": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.1.0.tgz",
- "integrity": "sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=",
- "dev": true,
- "requires": {
- "glob": "^7.0.6",
- "jasmine-core": "~3.1.0"
- }
- },
- "jasmine-core": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.1.0.tgz",
- "integrity": "sha1-pHheE11d9lAk38kiSVPfWFvSdmw=",
- "dev": true
- },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
},
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "lodash": {
- "version": "4.17.11",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
- "dev": true
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -379,21 +86,6 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
@@ -403,2081 +95,11 @@
"is-stream": "^1.0.1"
}
},
- "nyc": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz",
- "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=",
- "dev": true,
- "requires": {
- "archy": "^1.0.0",
- "arrify": "^1.0.1",
- "caching-transform": "^1.0.0",
- "convert-source-map": "^1.5.1",
- "debug-log": "^1.0.1",
- "default-require-extensions": "^1.0.0",
- "find-cache-dir": "^0.1.1",
- "find-up": "^2.1.0",
- "foreground-child": "^1.5.3",
- "glob": "^7.0.6",
- "istanbul-lib-coverage": "^1.2.0",
- "istanbul-lib-hook": "^1.1.0",
- "istanbul-lib-instrument": "^2.1.0",
- "istanbul-lib-report": "^1.1.3",
- "istanbul-lib-source-maps": "^1.2.5",
- "istanbul-reports": "^1.4.1",
- "md5-hex": "^1.2.0",
- "merge-source-map": "^1.1.0",
- "micromatch": "^3.1.10",
- "mkdirp": "^0.5.0",
- "resolve-from": "^2.0.0",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.1",
- "spawn-wrap": "^1.4.2",
- "test-exclude": "^4.2.0",
- "yargs": "11.1.0",
- "yargs-parser": "^8.0.0"
- },
- "dependencies": {
- "align-text": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "ansi-regex": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "append-transform": {
- "version": "0.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "default-require-extensions": "^1.0.0"
- }
- },
- "archy": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "arr-diff": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "bundled": true,
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "bundled": true,
- "dev": true
- },
- "atob": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "builtin-modules": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "caching-transform": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "md5-hex": "^1.2.0",
- "mkdirp": "^0.5.1",
- "write-file-atomic": "^1.1.4"
- }
- },
- "camelcase": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "center-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
- },
- "class-utils": {
- "version": "0.3.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "cliui": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "commondir": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "component-emitter": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true
- },
- "convert-source-map": {
- "version": "1.5.1",
- "bundled": true,
- "dev": true
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "cross-spawn": {
- "version": "4.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "debug": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "debug-log": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "decamelize": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "bundled": true,
- "dev": true
- },
- "default-require-extensions": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "strip-bom": "^2.0.0"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "error-ex": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "execa": {
- "version": "0.7.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "extend-shallow": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "find-cache-dir": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "mkdirp": "^0.5.1",
- "pkg-dir": "^1.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "foreground-child": {
- "version": "1.5.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
- }
- },
- "fragment-cache": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "get-caller-file": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "bundled": true,
- "dev": true
- },
- "glob": {
- "version": "7.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "bundled": true,
- "dev": true
- },
- "handlebars": {
- "version": "4.0.11",
- "bundled": true,
- "dev": true,
- "requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "has-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hosted-git-info": {
- "version": "2.6.0",
- "bundled": true,
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "bundled": true,
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "builtin-modules": "^1.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-odd": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "istanbul-lib-hook": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "append-transform": "^0.4.0"
- }
- },
- "istanbul-lib-report": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^1.1.2",
- "mkdirp": "^0.5.1",
- "path-parse": "^1.0.5",
- "supports-color": "^3.1.2"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.2.0",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.6.1",
- "source-map": "^0.5.3"
- }
- },
- "istanbul-reports": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "handlebars": "^4.0.3"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "lazy-cache": {
- "version": "1.0.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "lcid": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "longest": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "lru-cache": {
- "version": "4.1.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "bundled": true,
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "md5-hex": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "md5-o-matic": "^0.1.1"
- }
- },
- "md5-o-matic": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "mem": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "merge-source-map": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true
- },
- "mixin-deep": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-odd": "^2.0.0",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "object-visit": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "os-locale": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "p-limit": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "path-exists": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true
- },
- "path-parse": {
- "version": "1.0.5",
- "bundled": true,
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "bundled": true,
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "repeat-element": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "bundled": true,
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
- "resolve-from": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "bundled": true,
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "bundled": true,
- "dev": true
- },
- "right-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "glob": "^7.0.5"
- }
- },
- "safe-regex": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "semver": {
- "version": "5.5.0",
- "bundled": true,
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "set-value": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true
- },
- "slide": {
- "version": "1.1.6",
- "bundled": true,
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "bundled": true,
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "bundled": true,
- "dev": true
- },
- "spawn-wrap": {
- "version": "1.4.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "foreground-child": "^1.5.6",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "which": "^1.3.0"
- }
- },
- "spdx-correct": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.0",
- "bundled": true,
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "string-width": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- },
- "test-exclude": {
- "version": "4.2.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "micromatch": "^3.1.8",
- "object-assign": "^4.1.0",
- "read-pkg-up": "^1.0.1",
- "require-main-filename": "^1.0.1"
- }
- },
- "to-object-path": {
- "version": "0.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
- },
- "dependencies": {
- "yargs": {
- "version": "3.10.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
- }
- }
- }
- },
- "uglify-to-browserify": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "union-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^0.4.3"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "set-value": {
- "version": "0.4.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.1",
- "to-object-path": "^0.3.0"
- }
- }
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true
- }
- }
- },
- "urix": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true
- },
- "use": {
- "version": "3.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- },
- "window-size": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wordwrap": {
- "version": "0.0.3",
- "bundled": true,
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "write-file-atomic": {
- "version": "1.3.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "slide": "^1.1.5"
- }
- },
- "y18n": {
- "version": "3.2.1",
- "bundled": true,
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true
- },
- "yargs": {
- "version": "11.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "yargs-parser": {
- "version": "9.0.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "8.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true
- }
- }
- }
- }
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -2491,44 +113,11 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
- "semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
- "dev": true
- },
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
"ua-parser-js": {
"version": "0.7.22",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz",
@@ -2543,12 +132,6 @@
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz",
"integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ=="
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
}
}
}
diff --git a/packages/plugin-expo-app/package.json b/packages/plugin-expo-app/package.json
index 99658e174b..ca0faa0c14 100644
--- a/packages/plugin-expo-app/package.json
+++ b/packages/plugin-expo-app/package.json
@@ -14,15 +14,10 @@
"files": [
"*.js"
],
- "scripts": {
- "test": "nyc --reporter=lcov -- jasmine '!(node_modules)/**/*.test.js'"
- },
"author": "Bugsnag",
"license": "MIT",
"devDependencies": {
- "@bugsnag/core": "^7.3.5",
- "jasmine": "3.1.0",
- "nyc": "^12.0.2"
+ "@bugsnag/core": "^7.3.5"
},
"dependencies": {
"expo-constants": "~9.2"
diff --git a/packages/plugin-expo-app/test/app.test.js b/packages/plugin-expo-app/test/app.test.ts
similarity index 62%
rename from packages/plugin-expo-app/test/app.test.js
rename to packages/plugin-expo-app/test/app.test.ts
index 68749f8535..f7660ff346 100644
--- a/packages/plugin-expo-app/test/app.test.js
+++ b/packages/plugin-expo-app/test/app.test.ts
@@ -1,27 +1,30 @@
-/* global describe, it, expect */
+/* eslint-disable @typescript-eslint/no-var-requires */
+import Client, { EventDeliveryPayload } from '@bugsnag/core/client'
-const proxyquire = require('proxyquire').noPreserveCache().noCallThru()
-const Client = require('@bugsnag/core/client')
+jest.mock('react-native', () => ({
+ AppState: {
+ addEventListener: jest.fn(),
+ currentState: 'active'
+ }
+}))
describe('plugin: expo app', () => {
+ beforeEach(() => {
+ jest.resetModules()
+ })
+
it('should should use revisionId if defined (all platforms)', done => {
const VERSION = '1.0.0'
const REVISION_ID = '1.0.0-r132432'
- const plugin = proxyquire('../', {
- 'expo-constants': {
- default: {
- platform: {
- },
- manifest: { version: VERSION, revisionId: REVISION_ID }
- }
- },
- 'react-native': {
- AppState: {
- addEventListener: () => {},
- currentState: 'active'
- }
+ jest.doMock('expo-constants', () => ({
+ default: {
+ platform: {},
+ manifest: { version: VERSION, revisionId: REVISION_ID }
}
- })
+ }))
+
+ const plugin = require('..')
+
const c = new Client({ apiKey: 'api_key', plugins: [plugin] })
c._setDelivery(client => ({
@@ -30,30 +33,27 @@ describe('plugin: expo app', () => {
expect(r).toBeTruthy()
expect(r.events[0].app.codeBundleId).toBe(REVISION_ID)
done()
- }
+ },
+ sendSession: () => {}
}))
c.notify(new Error('flip'))
})
it('should should use versionCode if defined (android)', done => {
const VERSION_CODE = '1.0'
- const plugin = proxyquire('../', {
- 'expo-constants': {
- default: {
- platform: {
- android: { versionCode: VERSION_CODE }
- },
- manifest: { version: '1.0.0' },
- appOwnership: 'standalone'
- }
- },
- 'react-native': {
- AppState: {
- addEventListener: () => {},
- currentState: 'active'
- }
+
+ jest.doMock('expo-constants', () => ({
+ default: {
+ platform: {
+ android: { versionCode: VERSION_CODE }
+ },
+ manifest: { version: '1.0.0' },
+ appOwnership: 'standalone'
}
- })
+ }))
+
+ const plugin = require('..')
+
const c = new Client({ apiKey: 'api_key', plugins: [plugin] })
c._setDelivery(client => ({
@@ -62,30 +62,27 @@ describe('plugin: expo app', () => {
expect(r).toBeTruthy()
expect(r.events[0].metaData.app.nativeVersionCode).toBe(VERSION_CODE)
done()
- }
+ },
+ sendSession: () => {}
}))
c.notify(new Error('flip'))
})
it('should should use bundleVersion if defined (ios)', done => {
const BUNDLE_VERSION = '1.0'
- const plugin = proxyquire('../', {
- 'expo-constants': {
- default: {
- platform: {
- ios: { buildNumber: BUNDLE_VERSION }
- },
- manifest: { version: '1.0.0' },
- appOwnership: 'standalone'
- }
- },
- 'react-native': {
- AppState: {
- addEventListener: () => {},
- currentState: 'active'
- }
+
+ jest.doMock('expo-constants', () => ({
+ default: {
+ platform: {
+ ios: { buildNumber: BUNDLE_VERSION }
+ },
+ manifest: { version: '1.0.0' },
+ appOwnership: 'standalone'
}
- })
+ }))
+
+ const plugin = require('..')
+
const c = new Client({ apiKey: 'api_key', plugins: [plugin] })
c._setDelivery(client => ({
@@ -94,32 +91,38 @@ describe('plugin: expo app', () => {
expect(r).toBeTruthy()
expect(r.events[0].metaData.app.nativeBundleVersion).toBe(BUNDLE_VERSION)
done()
- }
+ },
+ sendSession: () => {}
}))
c.notify(new Error('flip'))
})
it('detects whether the app is inForeground', done => {
const AppState = {
- addEventListener: (name, fn) => {
- listener = fn
- },
+ addEventListener: jest.fn(),
currentState: 'active'
}
- let listener
- const plugin = proxyquire('../', {
- 'expo-constants': {
- default: {
- platform: {},
- manifest: {}
- }
- },
- 'react-native': { AppState }
- })
+
+ jest.doMock('expo-constants', () => ({
+ default: {
+ platform: {},
+ manifest: {}
+ }
+ }))
+
+ jest.doMock('react-native', () => ({
+ AppState
+ }))
+
+ const plugin = require('..')
+
const c = new Client({ apiKey: 'api_key', plugins: [plugin] })
- expect(typeof listener).toBe('function')
- const events = []
+ expect(AppState.addEventListener).toHaveBeenCalledWith('change', expect.any(Function))
+
+ const listener = AppState.addEventListener.mock.calls[0][1]
+
+ const events: EventDeliveryPayload[] = []
c._setDelivery(client => ({
sendEvent: (payload) => {
const r = JSON.parse(JSON.stringify(payload))
@@ -130,7 +133,8 @@ describe('plugin: expo app', () => {
expect(events[1].events[0].app.inForeground).toBe(false)
expect(events[2].events[0].app.inForeground).toBe(true)
done()
- }
+ },
+ sendSession: () => {}
}))
c.notify(new Error('flip'))
setTimeout(() => {
@@ -148,20 +152,14 @@ describe('plugin: expo app', () => {
it('includes duration in event.app', done => {
const start = Date.now()
- const plugin = proxyquire('../', {
- 'expo-constants': {
- default: {
- platform: {},
- manifest: {}
- }
- },
- 'react-native': {
- AppState: {
- addEventListener: (name, fn) => {},
- currentState: 'active'
- }
+ jest.doMock('expo-constants', () => ({
+ default: {
+ platform: {},
+ manifest: {}
}
- })
+ }))
+
+ const plugin = require('..')
const client = new Client({ apiKey: 'api_key', plugins: [plugin] })
diff --git a/packages/react-native/CONTRIBUTING.md b/packages/react-native/CONTRIBUTING.md
index 95c7fe4429..5d0a557d53 100644
--- a/packages/react-native/CONTRIBUTING.md
+++ b/packages/react-native/CONTRIBUTING.md
@@ -1,30 +1,57 @@
-# @bugsnag/react-native: contributing guide
+# @bugsnag/react-native contributing guide
-This is a WIP.
+## Upgrading native notifier dependencies
-## Installing the development notifier in a React Native app
+Both [`bugsnag-android`](https://github.com/bugnsag/bugsnag-android) and [`bugsnag-cocoa`](https://github.com/bugnsag/bugsnag-cocoa) are vendored into this repository as part of the `@bugsnag/react-native` package. When updates to those notifiers are released, a PR should be make to this repository to vendor the new version.
-### Problem
+### Android
+
+[bugsnag-android](https://github.com/bugnsag/bugsnag-android) AAR artefacts are located in `packages/react-native/android/com/bugsnag`
+
+To update the version of the bundled artefacts:
+
+- Ensure `bugsnag-js` (this repo) is cloned in a sibling directory alongside `bugsnag-android`
+- Checkout the tag of the release version to be vendored in `bugsnag-android` (e.g. `git checkout v5.2.2`)
+- From within the React Native package directory in this repo (`cd packages/react-native`), run the `./update-android.sh` script. This will build the Android notifier and copy the files in.
+- Update the changelog according to the [contributing guide](../../CONTRIBUTING.md), creating a new `TBD` section if one doesn't exist. Under the section `### Changed` add a new entry: `- (react-native): Update bugsnag-android to v{VERSION}`, indenting one level and including the entire changelog for the version that has been updated. If multiple releases have been made since the version bump, the changelog entries for the interim should be aggregated into one.
+
+#### iOS
+
+[bugsnag-cocoa](https://github.com/bugnsag/bugsnag-cocoa) source is vendored in `packages/react-native/ios/vendor/bugsnag-cocoa`.
+
+To update the version of the bundled notifier source:
+
+- Ensure `bugsnag-js` (this repo) is cloned in a sibling directory alongside `bugsnag-cocoa`
+- Checkout the tag of the release version to be vendored in `bugsnag-cocoa` (e.g. `git checkout v5.2.2`)
+- From within the React Native package directory in this repo (`cd packages/react-native`), run the `./update-ios.sh` script. This will copy the Cocoa sources and headers into the correct locations.
+- Update the changelog according to the [contributing guide](../../CONTRIBUTING.md), creating a new `TBD` section if one doesn't exist. Under the section `### Changed` add a new entry: `- (react-native): Update bugsnag-cocoa to v{VERSION}`, indenting one level and including the entire changelog for the version that has been updated. If multiple releases have been made since the version bump, the changelog entries for the interim should be aggregated into one.
+
+## Development
+
+### Installing the development notifier in a React Native app
+
+#### Problem
To install a single development npm package, you can simply use `npm pack` to create the tarball that would be added to the registry.
Since the React Native notifier is larger that a single package – for the purpose of this discussion it's a directed graph of dependencies in this monorepo – you can't do that. You can pack the `@bugsnag/react-native` package, but any unpublished changes to any other local package in the monorepo will not be included. If you have added a new package which does not exist on the registry yet it will also not include that.
-To solve this problem we publish to a local npm proxy which can forward on install requests to npm.
+To solve this problem we publish to a local npm clone, which proxies requests for unknown modules onto the public registry. This means we can push local working copies to it, and consume them as if they were on the public registry.
-### Prerequisites
+#### Prerequisites
The proxy of choice is [verdaccio](https://verdaccio.org/):
```sh
-# install it
+# install it globally on your system
npm i -g verdaccio
-# starts verdaccio on the default port
+# starts the on the default port
verdaccio
# log in to the registry
-# (you can enter nonsense credentials – it will accept anything)
+# (you can enter anything, just be sure to remember them when
+# your session times out and you need to "sign in" again)
npm adduser --registry http://localhost:4873
```
@@ -34,28 +61,15 @@ On the project you want to install the development notifier, create an a `.npmrc
registry=http://localhost:4873
```
-#### Android
-
-Currently this branch relies on a snapshotted version of bugsnag-android, which should _just work_.
-
-The tests can be run with by running `./gradlew test -Pbugsnagdev=true` from the `android` directory.
-
-The AAR artefacts can be updated by running `./update-android.sh` from the `packages/react-native` directory.
-__Please ensure that you are building from a tagged release of bugsnag-android if releasing!__ It is necessary to build artefacts in this way to ensure the version name is distinct, and cannot clash with any value released on mavenCentral/jcenter.
-
-#### iOS
-
-The cocoa notifier is vendored in to this repo so nothing special is required there.
+Alternatively you can just supply the `--registry=http://localhost:4873` to each npm/yarn command you issue.
-### Installing the development notifier on a React Native project
+#### Installing the development notifier on a React Native project
1. Make changes.
-2. Commit your changes (you can't publish changes with Lerna with a dirty working tree).
- _N.B. if you are making a lot of changes you can `git commit --amend` to prevent a noisy commit trail._
-3. Run the following command to publish to the local registry:
+2. Run the following command to publish to the local registry:
```
- lerna publish v99.99.99-canary.`git rev-parse HEAD` --no-push --no-git-tag-version --registry http://localhost:4873/
+ npx lerna publish v99.99.99-canary.`git rev-parse HEAD` --no-push --exact --no-git-tag-version --registry http://localhost:4873/
```
This should prompt you for each module that has changed since the last proper publish.
diff --git a/packages/react-native/android/.bugsnag-android-version b/packages/react-native/android/.bugsnag-android-version
index 70471cfe0e..a8cd2b90c4 100644
--- a/packages/react-native/android/.bugsnag-android-version
+++ b/packages/react-native/android/.bugsnag-android-version
@@ -1 +1 @@
-df7ac4158fa32bb79ca04d7023a1fd653ee9a4eb
+991dc3322517a7b4c7e66e0b876148148482d883
diff --git a/packages/react-native/android/build.gradle b/packages/react-native/android/build.gradle
index 1f1d976bb7..064cb41116 100644
--- a/packages/react-native/android/build.gradle
+++ b/packages/react-native/android/build.gradle
@@ -40,8 +40,8 @@ android {
}
dependencies {
- api "com.bugsnag:bugsnag-android:5.2.2-react-native"
- api "com.bugsnag:bugsnag-plugin-react-native:5.2.2-react-native"
+ api "com.bugsnag:bugsnag-android:5.2.3-react-native"
+ api "com.bugsnag:bugsnag-plugin-react-native:5.2.3-react-native"
implementation 'com.facebook.react:react-native:+'
testImplementation "junit:junit:4.12"
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index b32c00c397..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX1AAoJEO8eQUNdoVGtFOIL/358RcqGBRq3sYZ4Acauart7
-d7tHNgqZ0Pn9EKVW7gAj490mQmDbS35MLrlbCeWfEz5A4IH0Md27ojMOBx3W3UBF
-MPC+gX2rEQa/WLI73jk7Hv5TPW2r9b1ZTNfGipAgWXteTy4HUSBJh0+dtEQH2/It
-KOkhldIVh1Dz6Bd95vrSpZOYjpfvDZfElIQqJxK6u0rRC8ue118oL00BuSEQt2HU
-lF80Vw7u3Idf+ewvxXCsz133ZQufa8lR/Tjs3AhwT8lsIpdBX2m2E3zWw62+V85X
-4Pkqv1PE8VJqOAus2i5siIqD5sUa3JXI63qK4kD0FxPjEJEqSpDeUJJA+LIx2OIh
-7gwJFJA9GydmzDlU4YBNCHasfQptfRsFXqt+/tk6dyx6/mfMHZ9nsAPxydqvWkSf
-/qfm1ZGxG2uHx4SYiPi1CuperM+s6xHF8qLctiV/yZI8E8R82cKwhZExWnjcAB0A
-yV2KGiSRjYWvlMazlTP53lDGJAjlzM7tmFG0zJf/nw==
-=/zUE
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar
deleted file mode 100644
index baca3fa3df..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar.asc
deleted file mode 100644
index 0ffd0c2ce5..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX1AAoJEO8eQUNdoVGt/Y8MAI3C+UO3qo/AdffWBDrwzleP
-8cRmu+868HOxY69pNF9WoY1ZubE3yepIJzOXW5F7HceHvXdL2rGRMDdMhxkfZAu7
-OMTBgPIKFnuGtJ5kLfOE0Y4I32IJwRBJiTb3+XXaBc94LvDiECpGShw0jebkL8bl
-HRi8wdaM4euLmMwNPoB9zR2uOmZjglxPAp8te8V1FlzIt7+tddf12QQiAtH9ZDYk
-zPUWjJMYhcsKXB3y9SD3slf7vFxnltJlBHHDBwhUch+SFQqoUtYQqBcMssQAbPy9
-9jXDhRfEt45IEpYCWJkinn4TOuSgUlZ+/L+PlvMXGYY1Y6jERgUpwCKV/Gj3keGw
-mq9PooBV3MpnTAnHKbbuaBqK+ItgzZxQ9d6RkyL73OravpEHZLkTJsLICTaej6MD
-snnAIXQuFMSpmI5VJoQbZ5+IrnrSKAgUgsn2Z1vvVB7mn9TXi5uA+Khz0L4WIsk+
-G/XIAiTGxX1Q/f61KfSBq35FP5viEQjuxymM2ZWPWw==
-=P2qp
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom.asc
deleted file mode 100644
index 8f082788e7..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX1AAoJEO8eQUNdoVGtP3cMAIdfUZgJIxL0gYYET29CchgF
-Apw3khAmMUkS90BtPDmcC9wVua74ArNzKhbH/FFtemPmjfNwJN4jzzNHZsxQ1Vp3
-+41OGgW53D+QafOWuN5URSFb1+VZrfQANyI0PCX1a9K0HI0eEb+ObPQfnIH0Lm58
-XjorbhZe2CrwnCA/ZpxB/w+2bMdKCAXP5lPhE1RvNkdU0SIeJYHuGHf59dIKv3LV
-cG62KpIIH8nWC9Fu62aT89VnC7qbUg6fPDJtEA6R6M10MtVYrT6PckIqg9WAu6Qf
-bq6HooRBo6UAUVhukggJGbl/N9OIpY1Y+y4T8Lhped/iAeK81KsawY1/FbuvfSEn
-UPv5wcpD3PlGqVzq57+eXROAiLzPoQsk3ksFbV7ka9dC7AZni0QtEZgIGEPviZ4N
-V35Iq1gsZ6gj5jt40FMhygeY0HLacQrGEiHJAVC8ExlD0OG7zJvQWCoKpNeBg4nq
-ijtTwHRq0Z3QjMR6XpWYhDXjFlB4aTYrRiZNa3GWIA==
-=MI4E
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar
similarity index 66%
rename from packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar
rename to packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar
index 963922a932..7771cd4d44 100644
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native-sources.jar and b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..b17644e537
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqHAAoJEJAqRX/iyO/5CWcP/3dXON27Tg8ase41zgkvC38C
+iL5Xf+Gady6aRhdS5P39F2ZcADGjOr6FJ5BE/SBc2/O/XC7N5g7GPi2GnaXhGRSG
+JxJSn0wcn++iu7T5+u7TxzpQjlb45fcKJQCXz1VFhsSG8t3xP8z6TB0q7vzCg93t
+8877mh63O0d2NhoabpKbcN6fz5MXWLAZwlVeMeviZVHqKwYGI8tkjvqQcw2D5Ob6
+kal4iEtAyuUQyyFoxXWUDQHH8f350lVgEwDFWfFqfWqBqH69Y+SjFFkhvS32kduU
+5WTpUC7k/E25CA3AfXf5ZSH13Ahm45gSgwgfxr73stv0xM2wZRvd6DM+F3Jte33P
+uPlo1F04LqbVE6gPTjIPrbd+UxW+ZTDGFYunvPx8E01Kof1k/pUGMsdD4adYQtkT
+J9I1u82doY2eD/J8TjzkFcqH9fmLgiVzs2Dd9iPwUF66DISDCqMS9F1mTvrzBEWr
+BOmx+i37z0nIKkCqHiHF9JbHzvJRZrLkCsANzF2QWa0lcLjI0AIrAeXRkDKF0pyn
+V/6EyQ2on0BZGP43uoddy/j5umja5UiAdxArnh0f0UTG8R9BpMsuyU969nsnVHbJ
+/kSb9ohWLY0csfYLD1yTlCvZKgtRl8KxUxlmFDKafF6/FFIR+C5HjkBfw9c60bbg
+MXnrgyh0oPwLnKXEllwe
+=RcN+
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar
new file mode 100644
index 0000000000..f8bc87b098
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..259aa2d7d4
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqIAAoJEJAqRX/iyO/5EoQP+gNJZzgczBV+k7tKmdlIIQXq
+IFyX35MLemL9vXSrbIaNeJu4chtokYK399pybQ93EZVx9g8XZYbDTHWIfaYkAsw8
+Gn51GpeCYlPkG87YsEVbd3kfPPcU9BF3Sw5UZqig9otWY2Fr8qU9cRWfXA83GBfV
+9PzzM31FmvuBj6wX73JfkJdSnRmYHWTS/H9LV/UQhu9niLogQM+G6xV4GOyXJnZZ
+gUAMgty/6C3Tm6UbdrWscc8wzTOSBY8AsOFg6F6m617/CmHiU70Y96S3VRVOrtRS
+4AyXLxygh7aHZ7Us/Nr4HyFGQN7Slde582lqyzQQWB6O51CtLO275OjcYnCh/M/q
+c1+3ajgMEPw/ao0vUHlzfGdj16u/ij8X4utGm3SU3SkZJZMDdEKLqXAdIUd6PtN8
+cSPY2lfiTAblOn3L7a2+wvi50eLCtG0gwWV9/xqD7wG6C2mKCWZFMU+CYTdReenx
+YaHJV7apP7fMGGF+HGutMifEu27+AQWyG39YeWDFwnJvRcAUpm2f3RXxQHFQhg43
+QdFs2yPpnnVzweAdPR6MNb7qvhbq0V/edk3q9w2JRNECFVN3MC3867/bCI20Qfs3
+kjuqswo35W3mU3/nT4ybS9VFJ3xsUfu9BRV2S9WfiHMWU+frmekADhNc5Gc7MGUB
+DZgip5gaAOG+EfZEsfKJ
+=XaZV
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom
similarity index 97%
rename from packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom
index a21371d186..462729c9ae 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.2-react-native/bugsnag-android-core-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android Core
Official Bugsnag notifier for Android applications
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..1a0fbb5067
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.2.3-react-native/bugsnag-android-core-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqHAAoJEJAqRX/iyO/5QJMP/jxF1lO46b9Yhh/Poc65i7a7
+jz6aYSeRnzhFVChp6X9F3FFPZ1O6Eik1jxEng3TochqtdO88E1wELTNfZb1odzac
+5PenVu2YuSYv1r0wNtPmgMUOUCs7UH61QwMrCeKIXn3t949M8t2ZiDcqPGtAY+jq
++5FTiq3NGGX+Yp6oOa83tpkbrVl+jskvjkvTwRpXQUGrz0vwUluhciM6yVHzbHBG
+ZOh1xtWSmmozk/eiR5O7OF8Z2PWExP2XAj5K3OsJstccrvtOvO6j2VEmXKz1P1UO
+vpNkXXKrvZM6NQ8bOB/w6nGlSzn74ssXR8kvuFGRANXHly6HqZwDSRlb2VU1B7X1
+LSJ1a5hj0M2yZCXpUcGUNGfDiRXQ6cG+pxdqSRW0q6nYI0sreCACftgEQxRUWlgN
+aDi1O8mbpsfkb8eyX3ZLUFOqYidniusqiZbtjO8wttTdWRp4LlljpkimW0RO7YFt
+jloGqltbgPNiGGWnT1CT1kV/ZPe+u4mLSpgJUXrW9+OpvTIGimGP2EI3Sv4aH48h
+4EKbmpsXs0Kvf0BVGOIqOPmzH4CkioO42NPKApgoz1/Aem2MG3LYYxab5E9pbW/8
+gtcKZLlQgy+KhHGqEYOUn0kvUciS6fTEH2L+QWQOdlAw+Ekmex98GOKbzJJPu8RM
+iQZjHIKn3uCvXyQ5lxDB
+=tPma
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-android-core/maven-metadata-local.xml
index 36b978456a..fc68c3c945 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131533
+ 20201104121152
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar
deleted file mode 100644
index 332f546d5b..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index 0a0317b2cc..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX2AAoJEO8eQUNdoVGtja0L/1qs5G4ga7KI/RXZcd/QNanJ
-mb3SaNdkCfBkhadXOVcHxM1viseSF46nGCvcPPZq7mxutoEyjseHu8z8/DIFH2qg
-rvA0SS36lYhlbS8Wg/oX1dzAdjkyaYmCKKNoOjtQBUXYnLfHe4nN/9Lq55PCCtTj
-jrVmal3g4MAQ5D2Ax2EQUcOaDekMVI9W+S1lFGcjGVMLqld9O4jvhbdDq8aWbfHv
-n+pD5NGuFOBqQKYtRavJ6rKIOmMM84KBD2Ld3hiaF1wqjuDXGDiXnVjf6fkpSWho
-TNXswUIISRXoP2SP1nUVjvsJ7gaAANaXM7OsZlCJqMny5MejiH+CN9fNlZCUfmzx
-MJ9QY7u4PYOtlBjOfRwQIWiXVqr+oz7M/7XrKYv09ct6CeMS78gpcNbq45Exi5xK
-4sJR7B1XW5pdyTeQV5KlKZr27ttAyn0hChzKcbtHQpUERNjeekesOMe58QrMZfL2
-A6jQikwnxIXxFWL79r/ReSsrYU79dZDYAYVduwoxFw==
-=6kzG
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.aar.asc
deleted file mode 100644
index 8504e73c4c..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX2AAoJEO8eQUNdoVGtwjAMAI2WENpyRUqvChv+Snc8cO4n
-9q0zOVDvAUGUHIEznT14kk5+URb/0vy0O/pId6ni5cTk9N4O9WX2M5o2iw+kpP6F
-EiVFKWJuSLwipUMiopBNyr56VUJVkXYdEZfwvA9Q5djBphUDa3a95STEFAU0i9F8
-7V54LQnv9Lt097YnZdUeOTuqJJv7k7ZG6Em9uOcNo7AhaqLGA3zxxadTmlCr2iEt
-ohewLVaBj1pAeNFuRWPTBErZaSCrRYHicfV/eGBH59DoqyC1sofdiBltXkicAq2V
-aCmBcGKTHVw0K4g8HcS9PqWT9mqqEk4czx7bPQc7J07ejqwiHMcwsOlc+lX4/TY1
-QoPb8YLazhbuHo/G7/n6ItiDPLuKKpTwOl2I/+jqZi2Huw9sHObSV5uBI7Ha1O96
-ZqWknoU2/MumWPywEHZ/caKqoCEFQdn0GDfIhYxQ8eN5Z8rrTAQOdLRyOk0PNxFt
-tRdEB8pV15QiMb5CWbHIjmg3OLfIvE2bjOntT1gafA==
-=nCbf
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom.asc
deleted file mode 100644
index caf6d95fce..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX2AAoJEO8eQUNdoVGtEmoL/iQedZuvOQbJ5Rwx0vhVVtiz
-v5iGQC06fP+5/jxZhqel0zs8GpK+fMD5UADu3mFs5OhOm9EwWIw/ri4vaEIcgxVV
-xF17qxdNzm7/ZSmr0uLr/mLItM55NjK1rdcSl4UqOfYTfeiwPDP8G9nNAO/xd0Je
-sjYAlQxuAK3eBzoTIUquAFNVE1OJhAViuwEx6qebQY2CwAi8FCbwyoc5q0p4HqPf
-HHe/WrAScxfEZI+Q+cGx02oWGFvnfjTHvpTEJ7SN3myRT1f17HJwyTdYonf2OBKX
-Wzk5ih67dD7R348Za/t8QsX3col6p53F09xZwOV7w18CH6Q6MvgDWMb1pwx1IB+Y
-0l2ZqS53oWQoeLGMhhsGJF3EJuEyxm2joQgv9GazBSCWzx5Af+IS/kVKaO64CPvi
-JIDKFn4fgzGSdb1nMZ0Vfj8tYvGXH33N1Tua5rzlqneOOgTWxh2A3LCW22wWlp17
-DY/yqkHJvizjYzcUiQEaN+uuww/msOS9UTFp/FBYjQ==
-=5mVa
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar
new file mode 100644
index 0000000000..81b3f97003
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..d79a742249
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqJAAoJEJAqRX/iyO/5wlwP/2FJtjj+WNhFPztsdGT0SDR3
+kgZ5UhFcZB+WZR9ePqWaDKX72PP3yyNoVPosvvwvXrHQa5ZqbBbdNnSrcscgOeaM
+vxZamqekNgVqkgIp6ijiPjGFArbAqfm1cdtxo0TiVLd4CNxqTceXaK3eMoo+yLMx
+CifP5BNu3B64u4VTKYJR6B5S4iO5kOnvlfr6z3n4ydSQlne647b8pPf4PPbURxGy
+y1eeYy3PQiRVXAzJL8pOmHUcdZ9fix7cIIdv27BHf16NkhyjoEFhHtIJznKNUFlE
+bZVeCsCFIHiKftSrswpr/f7rLO2W1E14XY14DuViwj0tQPsHZmQGuBRDn5uBtbgK
+6InPv9vwUYQBAMxoAb1lFbmUoVhjKg6PVzLn0W1p1kSep4pDMPiet6ccvGtT40E9
+ILli74gwAxbJ/cZitADOwstwDgCpt1w0wA/o3NQc2JtkpqDg2T5jbLZ+TlF3idqL
+rj0x9kw12QLSiqjStgogZdIMgZUEUwwrk99Z5CdT5Y7w7uXvdwqBEblkX5Jxl3qp
+88c0U6ILDZFkUuVkxKVqTULMj3Uo3OxFo7gHMXFnaXDLXyQd2sgRIvqLDIeSPozk
+JoKi9sPZ2Ke4tp7KSRmY9Evxg/Zo5iqTJdi1CDgRJTE8FheN1thYKQqOSrviyXph
+NZaJ4HseeyzXxoz2RncW
+=MObW
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.aar
similarity index 100%
rename from packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.aar
rename to packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.aar
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..b169879654
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqJAAoJEJAqRX/iyO/502kP/1EsQkscGlTpugxtY3h6z6e3
+LoHTmFoQ0fsQh7I1hXEK2j9tkZNS2fx9XXf3ClVaBaRDPKeSCLU7I/sbS1DQQWaU
+T+lYFp2DuOOUPbjL2oKd/fu3q6shfJ67zToLVSnBZ4ps+hA0GiyjcUe24qml0kaO
+1eAbE7wUXmNCz1gox4zqm/ypn2CBnc4jHgRWQIa6CGscsOrFOzyhyz04ELhF5zft
+IGEYhDX4o4QwU5Q7mYYeW1i6k8/RiMWANgI3WJNQ6NeN+fYrEqnLwf0MY3ExTZLK
+oOdslZpjPaigr3uVgQ64UZwTpuT2GAP5ahOy09DXT+Gc1savlkzE/ponVrpDxBs+
+DVXSK1BE6kB7eNmWZEJiE1jEy2kwWBhjOGmY9BxslKFiCGBhh2yxKri5ypH4Ei3b
+YiDl5C5RWPk2PAjgEaHlWsXhkwAQaHgGVJ/ljm7S5/HqDm/qZfbFCITQYZYMZo4R
+HyzBqhPtBGZY9WONZzJ9FekO6y3Jh24EplQ4HYwiuCa+goI8Fg9sRZR7ZgJr6T9A
+lBKhUz+0v7+0rVds3TvfLtcGeQ8ZsvOU8/WnrEvjRv49/Txw1uv/JQZF6OyqxpAZ
+inQfhQHC2KwwFFgIqYogPlePLYsOF9gV24TPWvKhcnITTnQbjvqAYc7z4XVwmEjA
++db7arGmFDxjtf0VhXTe
+=Pb2V
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom
similarity index 90%
rename from packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom
index 2085ab6857..90f4ce1c06 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.2-react-native/bugsnag-android-ndk-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-android-ndk
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android NDK
Official Bugsnag notifier for Android applications
@@ -30,19 +30,19 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
compile
com.bugsnag
bugsnag-plugin-android-anr
- 5.2.2-react-native
+ 5.2.3-react-native
compile
com.bugsnag
bugsnag-plugin-android-ndk
- 5.2.2-react-native
+ 5.2.3-react-native
compile
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..3f5a4d1836
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.2.3-react-native/bugsnag-android-ndk-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqIAAoJEJAqRX/iyO/5TpIP/jiw+4uyCzaPM4fWgYU/V6VK
+za4GdhddnAyiHOoHEKnPthMfrSS9qddXCR8IhhGnReSTxpFuakwo0rDj1D4fUDGW
+53cWi9Fb/hKTHONsP+XKFOUM/ZUs6/YV1YaqW6yMyhq4gr1xu1zHJrFyRUMlt3Ow
+5GLqs91qgDZaMB73TDlm41GmcikLDnH4xyjDnzXJCY5vzp2zto+4AkxZXfggZqAS
+PD1stqcrOcmil3dBSs95c/DBjnYvzSdikHUnwUqV5B3p7gRlTreX3EB2MoFHtKpV
+a/JID+KlljFJkJmLVGIywsfoUTzeCVOTAfE70Zt1xpq2XIb03EGMji28dozFK+8E
+uzHI0JiKYHkB+YRrCmU8AgX9ROyehKpHmbOR6Cp3few4HvNhtpTte4vBRg60BrK8
+8zBZBvpr8VIOt70+FNpDE2TKUIdD0hO8DgzIG09L6UAJAWfFnF4V9aVu/+qznkPm
+w32+L4NuzWsSc9rXMQ13B5riWoKXVyT1MzY0MXpf+d5a8XfeWbRVebc9vY/g7UfO
+nVjttuKZkA2soq3l+or04X4xSFxWjFb+JZciXvz6UbY28ZMQzqgZ2kNXuPGcRUdF
+sMLd0VQGSMVLfmsH1721bFHxli6OCcszheCww+3USaElItE7I+nlLxsQkPlP6tx1
+0AGwz3dhmQsJbMdTyH7u
+=HxyQ
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/maven-metadata-local.xml
index 63be0e600f..63826fc35e 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-android-ndk
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131534
+ 20201104121153
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar
deleted file mode 100644
index e87be37766..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index abad9aff2e..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX0AAoJEO8eQUNdoVGtTyEMAJQh4JuVFbeJLxnoqlHm6fjH
-G4l9LDZUDung78bMKW5D59trdIl018BWZVqRpwhY3q3o102LpvXD6Ik5HcDkVBTU
-o2Bh7S4n/ykpoU5iAAXhHNsdgJWD2+7t6OGwUXR5yqjsZdFUtpOKqXd80waLdoBL
-3y2JoFrpnRYMSBzHTF0YnlS9zGvsdB294trt9NvYA/RJv0m+IhNP7MdQDRcW/QQ0
-w35wbddtLI8VmzCXB2lhGsqIjZKrqCaGPCqHkHm8IPTjwC6HpH8ZKtOr0fbaYEkB
-LkxSUGi5DhN1vdGTQZzPv6Xz4KkrlvNDq2cZ5duVsyLVx9Y9RPwQxDSDgqp8MWwY
-2+RLHVKaUB5lOT4VYSD1RgYPi4xJ55LjDt7Z4sCJJ3qUkaq+uER2YDlRlu0vB4dX
-RcZX4pc9d7th/lDL1ybiDwtprJiaNDIvSS+l71rnnG4ogMtByvdmZGSdGKLVu1wW
-cCU7MmOwyohhaWsm6oMLa2eNWa6/DaQxA3+KvOU4bw==
-=fXcO
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.aar.asc
deleted file mode 100644
index 302ce13ac2..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX0AAoJEO8eQUNdoVGtRY4L/RK0gHkyaolZvDpLO7uVupWS
-dVyvwqOzWNmcwG5Vv17bskOvSP+iPF6r/nj6jZbxHOW+NdzaPkkn7PByLwuDy+ny
-gG+2nC2Dmx+chJRRvO5/CDERplo3A8uLKDGHCFN3HcB4JFyhMym8Oqg4ECKfhYdc
-0WQJUNTIE8I1sHGIp6F8wYtoVu5GQSdTxK/AL4uTg03+ImeuBO0VAn/iOwkEBZLG
-oNW/YBOtJijrdndv3r9RfUvwv8kH2r9vZgaIBqfU52j56787dYz1sZqhkii/EDQF
-prNBXvYrw24gKAR3KvpLgLoxSxlO8zIjY6sI1vFrEOfKLGnRNtdbFZf6vKXUTnYG
-kzrAy5Xgf8sc/GF1Th0OpxH9ZEc75ofu6zHYLM1paQyERzKhFCxsawDORjexaw42
-ludRVbffZDctzBs2CcK66zRPypuhWqGlumq4RrLr03YyApIzI7MnEUq2dGA6/6v5
-ZA+j0cz+Gux1ZYXAQnSs5h1SHJgMQn9YTOA+17DYRQ==
-=iOxl
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom.asc
deleted file mode 100644
index f069c4aeda..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX0AAoJEO8eQUNdoVGti/AL/jqLiUVYtMWAUH8cipiLXmqn
-dpTqdb0PL0VFNd82DbwPILNkmlRNW172E7FDshuiPAcNb5a8xsA8MfBUTKwsFkI+
-zmHvSuoU/t9DuGZTwAT5KcDvL5bF5IvmTXuJswQCqwLnAQRULWt3Bx+x1IdYAvLY
-1WJeQFAgDYY6eP3jaCv7LpAljeXjChkctavyJHQWup1AKLMuEps8R2xLXXYETm3I
-oTMJHeEO4sf9i5JNgyAhiFz0bRRj9oJoE2L8FvFEntGoXUPFONNuRxyx0nKyCSWV
-qBAjoHlpMaaEYMf/cmIsspIfmB4xzkRAVy9sJ/kglIBj5FWZIiL/7xlTZlPIjUe1
-t/ND95dKVgfqoC4c7ZvFoknKbc9aqeZ6GMj88C+e1p6iBNAkKxXhtFBgQPW2prZr
-e4aoVF8ZO815j1KaKjJnF9hchL6n3ql2kLsyR7v+xXONCk8L7TCA/8lFzJrUSfcz
-raeWxgKxwMiameLwSEXXDSL7ISdwXqnQmG+HYGfUGw==
-=Rz7g
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar
new file mode 100644
index 0000000000..8838475ca4
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..2a5a31b69f
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqGAAoJEJAqRX/iyO/5DiwP/066c8p8nCXUr6EsHwnyT1QJ
+OL/Oe7qk/n5wRhVnLcdx8LOOPAtURE3d4HRLNt0QD4Z/lfx+br9hm+E7QtSn3TX/
+Te2zEdBSPGbit+XOirjV7g5I4aOZwqa8AIQXmkMcKhNMWwukbzRrd6K00YBqWT+Q
+dqj4cp1iW/WAXzoSUJ/IiVj8B7eTPTm2ifK411s2n6V6BFN4mku8KXO9AKJnqAXI
+EiwoStmWnDcDe47UtoNMmG4WFhzEh9bjUh4vA/R45v7NjROfBgfghBURUcutFEcr
+uderWYfiMpCdQY9qAi6abOZDLZkep7GeCj2LuumnmAniW0TPMAy0+WDH+7vZvL85
+TAGS/ysZHhA3fr2XNPvbeTdYQu5VGC5KM3WqtrZSPvqzbxopkChgY6ejuKUJf7wl
+/LBN0NcvopG/vOl5yC7ShpwxqnpVDJLFV2yVqnZAPl9ljxBzv0ftXnAACCmVOGkU
+fTlydU75o0IW+5jvzYkWMklSATqMIxomAO/U7Pjb9O38cynhwGOTKh14nCxZuTfu
+HxjN9VfwsB+IHvDMcUEVjrulatbSMR2jz7nwZoNZwJhqVQy+AmbM6O+S973fYIs9
+RcvWut3sye+gZgk1gtPHz9DIOOwyvIabULgW1SIuY9iJyLTxGfsOUlcHVt6g9iOS
+kYblggzH704fj99560mU
+=NoTx
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.aar
similarity index 100%
rename from packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.aar
rename to packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.aar
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..0bed642d59
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqGAAoJEJAqRX/iyO/5FOUP/AjUDQO0BrxxPsnJgFmiBRg3
+jAhEYUol7et9i/4Vj3MG7BgIebARPLG/U+e0H2qFL0H1k3fEdRL2l733KuSybxa8
++dtONXBtuoS6SRn6QgHNr2W6qmD+tSIUlnKHDbRqP24TLnb9adIOytFbvyxP1Onx
+zUKhIB6BSeWVvEMYEY4c8+ErkREA7KKG0LyilI3DBh9WskklBBoMY3FSxGNC3Q9T
+M+Rs526bQ1P/iG09orBtXLTarTr6eZlQg5oVDFcyWIiRa3IZ56f4CKzxOgLDz1eQ
+hc1TrZ2YOZFjvfDud9vGlH61UE0doBwAEVkCWGvCNgBuL4QjWUkD62lsCm0bE2Kd
+jEI4y2ARkSzLUiOm5RNGBxTqlRLm3lxbgnz794SCXf/Lb+dqXq4Ne+tHIpDvdWd9
+vS9cF1mOq4JCSgjrdB9zUH3+MPz0kor5UTAZ4F5DGP8CzGWY+DZp8sXsVt9Rzdr0
+5ediabZzulLe/M7kVKK/w9No1X56xH5X/1oIUNDJObKe8J/0Wq70DzIL+OBlBMAE
+4//9pi52aqksykjAT+mOEmUQfPzg9rQAqSZiEBSG6Pjq/MMdCep8FtoXrSeIjhjY
+zr9FWmeezJBngWF5vg4X1iB+MtUJwPEKDc3bAgbhk4NHKorthTEPr75bkPyVAgn4
+g3L+FiCGKlnLJzKZ7pv3
+=Sx72
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom
similarity index 90%
rename from packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom
index 23be35a7fb..dd7379f13e 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.2-react-native/bugsnag-android-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-android
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android
Official Bugsnag notifier for Android applications
@@ -30,19 +30,19 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
compile
com.bugsnag
bugsnag-plugin-android-anr
- 5.2.2-react-native
+ 5.2.3-react-native
compile
com.bugsnag
bugsnag-plugin-android-ndk
- 5.2.2-react-native
+ 5.2.3-react-native
compile
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..7f779b93b8
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.2.3-react-native/bugsnag-android-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqGAAoJEJAqRX/iyO/5xKcQAKmJs0TUkMtAxxePWwKOC7l0
+qtd2sVrdIZGtnzbOpJESSw8TQ6TzCKpD+sI0geO22cPtKb0atwXBkmGCKNkJKvEe
+YVzDBcU8ZI7wlMw0cVXT7bQcECq0lanzT+meJHp+N0lM0X7kweI/94oazRIHbxtu
+I+3/zOSHGfFWiKejUd0ziwAWAUwl3Xj65Ff77SDGapTUfNXnSIJA5VL9Tj65zTPk
+Z/45oSIaiEZuz6T1FNr8VgCQLJdRIXeWQSWjInyScYSkMLtkoHvuzUlImZEQS8ez
+hx5vjB/NxHa2/2sVhkT/JMbTeKfMWyHi5QGpEiSUZEopQwGPxodQz/HdPbNlnEbP
+KWtALHIiZ7We7Fja/ZyMmtul1GYlmBRvKEniT7+p+/3aHsmVIS09ZGjcgPGun73g
+yu4eG04j4A4RBXMVWmn77U9gc0S+QS+KMhl2X4Y25eUG4qACyXbmz92h4Bdeur30
+WfWWQ/GDZEo7JXTF5gTloShXJbZzFdCXbzNPy+TQHUiUId/9iB4pXzb2ktXxiVcE
+fYlYThCQMrUE+4NJRFypFFCyRShrqRNzxkpX+cIWh96R0myBnfJfb2lNMVhABpnI
+04OakbfDoN3d0Q7tas6rI4lMmQoL2R4pa+96YISHEymk0Axx/a7JzcoQyyLYafE2
+BXjS1ZoJSDtV1Bco62r9
+=VwmQ
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-android/maven-metadata-local.xml
index f7ae0e68c0..05c4c06425 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-android/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-android/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-android
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131532
+ 20201104121150
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar
deleted file mode 100644
index ea9bdf8a9e..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index 06cfe5d007..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX3AAoJEO8eQUNdoVGt6IAL/A2+D5/ZsVKMA8mEAhh12Xx4
-BYVfBjVrADGHyxDpHRgRGHsGmeaUp0gh98Je/hI1fxv2esw2p8hwqKkSfKjHS75j
-pzPLwg2YGuMvs5OVE+uMK3bAZ/wIcWnq+Fbc6ZGPqfmdhEZ3+KTNg9mPcJFB9dv6
-KdLSXRT5YHSOrun317gmEThXK2VDt6RpyKsE1bjAa1QOcutQWVr1/nNgbcnhOnTt
-5mw4ywITIKaTvJeQUp7uX8XzCPJG3gyNJuDBQmi3+ZO7d7xl4RsKQGrAhvRCU0sn
-VigPi1YOQ+FyBmYUqNHKcFToQsp/ewuvB96u1iqQW7cJR/dKfNVrn0h0OitTTqyq
-FI2YSoamXXbelyCkIl0QjrWgrtZ9tdXeBWc4JIUHBgQ1JyZO/ndCK3OednPz9u0c
-VnjRE5ppJU40FHdI4uAMH/l2C+7bu1/H2RqWwWBoZliLnKUPCHduP0aHSwuaL8so
-96Uy5J2dEgxlFBsrbd1m6zLPYA3IZ2KVU37rApab6A==
-=QnuG
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar
deleted file mode 100644
index 04bebfbdf1..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar.asc
deleted file mode 100644
index ee82bab420..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX3AAoJEO8eQUNdoVGtpGEL/3UzdSBTtH9deR+G9IBkirOa
-WtVINm5x421AwnHEpTyU7k2BAT5KUn4/vqXbHu6XP3BKoMqaG5D+HFuowHwfDomL
-0JHwq4e4cLJ0eHtMDK9BHT/FEY54pvvbZt5JgY85cs9UXl182BfeTlM/fYSgSZpO
-lX9VDBV4OQD+rzPxlPM4+7rchVvmziwRlG58dUFpVCL6t8gHnSzlHxoejs4nma/d
-8LYpYdJHGwWdpVxbrwJu/vNvoCFmQTXN+foLN8juVK4MgvojihKT6Vq5pSLUOdvu
-kpCpvIonFAyx1/JvSV52I8oOccsHT89mBrjcxHSSbRdZLFNlgMgLdZ8uYnOxVhvl
-CbnJCn6rrthgEf7P1cE8+8dqVwMOvD4Th5XK3B0kbMdRDQSsGk7XbDweKR045xX1
-3ZOjDvNLo1Cw49xklFwe1umC4sLSlGnmWt0cXiUtWi1BhHmNNZo6W2bOKv3zLBo7
-PtYwHz6xFPr2I58rDgc/9WmHyI+AsyOlJ4rSKhQuKg==
-=5kFm
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom.asc
deleted file mode 100644
index 4ee28cfc50..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX3AAoJEO8eQUNdoVGtEZQMAIlOT9My5SG3UrghDcNJxmwD
-vJ2CaIIR6UrpNJ/M4OSShcOEMVFXa6xopsJB87IZjT4HGXXklkG7cdzuuKzRLWk3
-9v7sEmQDjqOiP6FDb5Wq3zyOcCJeXgWcQaYD1ytSn+2zXZoz7gAVNVbHnqfcZMNp
-aG1peKD7h5LbdO+nZSneT8fBLpW3+y0dAbw7bpe5uLxvHEi6RWjjsr2uAa+Wd0jP
-zpoqOYpA/e6/ChcWBlBp5Ovks06MeaVMfu22ImwNafyBTglaejCbJhw4XznD75OS
-6JZO9R8VPjyJRF5aj/1ytP4Lq1LhS/L6yRPSBpU6O3B+1mptTkNdE1YO7I2Dr53C
-JWKfpk40AWYcjafxlhP3TF4+sPGXRjBSXLdd8tBH9N0JZ5mU/LOEMDES4fEs2TCF
-Wn3bLC3maeYC3n3rRdso5jIGw7GghyMtyFb7OcYzKyRmDS8cd8Hyoo//pREx6MKr
-5mMXn6hmLsPy4DgRZLjQU+WLz1ZVFKfUvybqO7wl7g==
-=4Aqe
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar
new file mode 100644
index 0000000000..c88786dee6
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..93db919eed
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqKAAoJEJAqRX/iyO/5EI8QAKrsYJXUwrmYX0UA3X1s6TD2
++3GFQlaDIG2XQ6hkNGWonCf79ldg0TeDZtkKRrdzcg7+vU8PCU28TuyafLoBKSqi
+//I1/Bt8Qlxzr0WXrM7ujnM+VIPGFoCrjUIOcZoO9dBUVSt+Pf8WQTUfOSWOQYFz
+5snbBs0kWoyhnN7kdUbOjpfVBu+nEaYevGIHCKA7a3BZ7zKV05bRrJRZC2Swb+DU
+RV9dOxIbFPDZu3/PylBYBd1DGHLO5asaSgXxONcnpsmkhwgS6L4iCnMItfUJTYpB
+TsnX1CfM/shw7qDv7tfsk9qFIuikj1BZ6SZUVnnIKRMHJvRn58z7bTPubum7SYYm
+qBqn9Cg/ZCG0RtOcoaEHSoSKuc4Qtbdgvn4UDdGOXXKXnoUW5zn1/A6uhc253uq1
+55lf7+wAgSIy48QsYkG+/Vgi+tgoFzwZxZiuRxsoUJQh1vEqmAz4y0cJ0TP/XaFy
+H70txF6uU7OyI3qOAYr7cM0/wdZStrrVB+4uieMhXgY6Cbt5c3cZwist60fI/Jqv
+FIzczl5jJueGvCzalP8mBQ8bsirOMst8n9OmAHvGxuWkSqHmixbl05U2t4I47UqY
+3UlSFuj0kSZseV92wdwXZShrWmoBvi0UbIaBQ4cqUFvuUwKOWqJ/yzEQFkVzvklc
+BRzWH/EmzNaMc2QwbVVc
+=4hRc
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar
new file mode 100644
index 0000000000..6c8d341349
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..e91516b76f
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqKAAoJEJAqRX/iyO/5U50P/23LQmzyYfyTMv9RMqBGIADK
+wjL2R6Okhp3c2qr/3N2qgzoLgiU+HjpSbiPwXMNAT2qA+U1FETxvDzx7XZPHdPlU
+6SKRMiRiPz88ex1fNNISnC6DnZBQP626KZ/pmzg4tiZkx2vt29K0XccvGXEKC0Sz
+zUJeCOKpWE20XZOYQJnZouqayl4rULVzCh2rrINutuc4BhEhbSPXaY2LOct6j2FL
+1fo+Utu4zJk6/KsvOTW0wXf1SpuY1mqqKd01CK3Hz/Y4IOqhCTDpyEA3EZr0Imh6
+iytfezoAyjIMHDOXNbXxGsbWuoXIjqU466eupHZ9uF7nMnX0XElVD1aACrtG960q
+vWLTXSFSZbwz6oTVD3b72hf3koq6aapPlggLjW9YpqfU4plV+3/vccLAnKM6H3Up
+E/r2ivbDMsbtbhjWaHB6n6xfp60Gla6Z2ZtSj5vRdWjGUv7eVUls0sv+69MnBe26
+Xp/mGKgfnYw9Oc4cBJcsFjGG7Ehphso2FLUHNxmYiSC4bMDA3TD/qluAcaIIGr+R
+vQiB7QsuuYYU4flgSp5EBVBcXPivDIq5bB6rsM+JrAIU7Mx3w6Q47l5pN/XxxlCL
++1Drylxiju+5Ia2/rWfkIU3sblj2DR6T839wj95IGynxrR2YAJtNMKxl++9NsCQu
+DEoydzwI4RcwSHV7SwnB
+=DICk
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom
similarity index 95%
rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom
index 52a01f3211..3e8d8cd4f0 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.2-react-native/bugsnag-plugin-android-anr-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-plugin-android-anr
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android ANR
Official Bugsnag notifier for Android applications
@@ -30,7 +30,7 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
compile
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..e08c8cb0b1
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.2.3-react-native/bugsnag-plugin-android-anr-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqKAAoJEJAqRX/iyO/5AIkP/1HTUXMjlJtFWqtlcSGEJ/tH
+M9Zwijuum8JfP6lkV+hqiYnteUVeJjOBBmPWBqqaUofSXn01xCxBHdEH2fMhK+Nt
+WNjXk7Fama0GqxIeLgzarx1Bm0OEa8FwVv3lM6BSqfGudsPUaUeLNDctlj+6dTOt
+s2L3Zxb8UlhgKT5ARpVMZI0JofRfjmq/4kBrRQPRpMSfSsuPt/Gp80nhL6nYifun
+uo1kNe+f/JIALVHyFPMZIoauIeqBFtYofuuDSh1i+Y4gJmNZgSyqexcy836MO1KJ
+WQbDTaUdDBEi13dznyN3ukWaClz9qGM2oYuNbfP7raIgEHkOGK0nzNPkksUNlZ6t
+lFrpQNJp67FfaPs+DScCsxJQWAwp9/ZM5L8Mza/l9Vn36jqj7ks0TRrJj1v3fzCW
+oUDBK/F2mf4VzMqTWThOefVamRwfTUiRp++BeWpgCoCCWo3vX/+5ug/or9iJYUZE
+BV8qC7XlA+yqqdN8yAZukByB/Pv92xWrNRN39Er827G/eSxNrIJyAoJUvx/Or+iH
+Q9TENshHN/qeeM1UbY1YKchiwkW7W/+ayIinCkLUBCmGYrrZn0dYIca84RuXsmFz
+VtKGxgmTHTBcDyCp4Dz8DyyEVmfCw1mfTHTjJ/HD2kYtSDxJhkOM0/Lj73S2A/ur
+9e8JoxrbrU5V/tl0M8ae
+=9KGs
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/maven-metadata-local.xml
index 3b8a8a4331..68e456691a 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-plugin-android-anr
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131535
+ 20201104121154
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar
deleted file mode 100644
index 892166404f..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index 8497715ace..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX4AAoJEO8eQUNdoVGtFSoL/RerhmF9CVHGH4xQH4hs7e4a
-IY6Rz9xlFgWhD6AUoQ2+XWQA8gMbMfbMRnOphvhTgzb3w6WR2+EX9B+F+9CaGFIr
-MOJ9Pflfk8d+MQxFtfxDN6UM7IRzWTZBD9Oze+cYQU09ycjJBH09jfKVq/u0CO8h
-r7NDm7GXZBMA/OduUXl/784qxpRJ67OmtNBhzldHxSJ/mWJfs5UFGWU04j+H0fxP
-FgTfTYpgRwf1FB+dnQpOn2cFIGjGl9IWYDfcL5fPqO+/tYv299GcVM5CAIYG1bIq
-iEdfIzvM7U7AI+LXziTcWprrD1vPpp/BVtqA5cwzyCpCqqsJPrVaISjqt4Cg2DwY
-TAAtxOwVd8RFJ8hwF2o98V4D37UmQ3Q9eiOwwszkoE/8OIaeyMAARF7po3kPM9Pi
-FxanY8rOuRnn7JchE7wrk4bSDlCT6IBd1qR4hql3Kakb21ZIU+Cmt+d6235MAxr4
-cVmFRiIwOCpxZAgIQYtDtks6FQRnpTj3LMFnYKyTSQ==
-=YRJQ
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar
deleted file mode 100644
index bccb13ba4c..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar.asc
deleted file mode 100644
index 12d91e5fec..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX4AAoJEO8eQUNdoVGtmHUL/Ra8Ir6QmaPGFboq0h8FSxQC
-eBGePcT31YFP5MUfpxwtKITpJpgyYr8b5TbkBCb9TIN/ejf8h/pkL1433AU29nCQ
-bnv7CSkXLBAuqCjN8AYLmvYR48kqHgKmfU+TLrwu06HYrKbd7d+8lvqYzHmKEF8w
-bkYVzu0QRAua37MN8f5u+tzpF++z/kPMvU8pOmTWY/yfvmfnYBlrhwDDrkXWBULR
-XHbtIcDvBRy1CiUo6DLiJsZbElNRJYzN6UTjIDoVGuOEl5yMNePFv4MdJ/mOyZG3
-Q8NIC/BMT3DiqXeSZBOB0/Hxg+44G+Q2ouEMThKhAzNAB8WIunmwf30RKgENftcr
-/MhCi/vd0D0LaHVUk2Y40EIJb0hLXFUX3Ta6UODOGa7kLIQcDxPVCKcjHWux93BN
-cRDcEF5LEugjc0yboBRQLCzZ8r5Dfz1RcA8lDOy6AVsWvU5dsF7Pkw8KOi0UdRfC
-OimETtgEc1A66n+5dC2JLzAtFOd/Fq0FoFhu1Fgwyg==
-=KOw0
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom.asc
deleted file mode 100644
index ec811b2511..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX4AAoJEO8eQUNdoVGt7PIL/3lFHltLghzMUvpLvHuP9tWk
-hYokJaMM070XsCKJSrAkAJBBKfntBjdzSKiGGvZiix73HpyJOprNarhy61ycfoe2
-WzawMeuWp7VBgOVNqwOjJ/RtEf3fZY3yZcIc1MrtfryG3BbwFw67QIRWJBjq8fRD
-Nmrw3dGbfCsaidldEI6w2FVbwXaeNoiXIs6HDEWG/dbVPqiuiIgX1Ly4BtNiua7g
-H7kflX+HQ+7EjnXVb0lJtqYCobIDuy8OeBepgTM7owwA6EqOnf4RH33oUJUu0ulI
-deEy1FBiFTIKqb660a0G+7frvAtdMUBAiBr8Ll9EiSe+oLRdUIbDosHQ591T+3a9
-Q7FFwPLrQxJfTyBM5V7B0BwnuyIrbSeMTPTq3OHNa3fYKYa9Hn/DEFZC+MpyoCQ/
-2kjXPgcPNoRaKJZqNE+fZF8pHRrNvR1EoyHe55reDdXrE9BcXImTe1MLD4id2R7c
-Sy8X7HOg88ugEsKlmVVoJ1SNCYP+FxqmqtGGdWR9AQ==
-=PQg2
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar
new file mode 100644
index 0000000000..435fb4f1fd
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..c6a810bf72
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqLAAoJEJAqRX/iyO/5VL4P/RtBNfKkJZ12zvQt3xBrgbD7
+YWCkEJYY/TbHWCcH6XLStI2NXYEqeXUzoxls+VCl9HewZMybMr/GnAQmWnf92b8l
+CnTU9752fqHWV85mja3rHZjWufilyrSIuwLH1Weq2nnpqS48j2SRJkEoGfWI248y
+68s9XC4u2px/AEAMIfVNwPsTDkqrZhxi5Ptr+N9R7ogbnrenCcvMp3dT8A3RCMv8
+eRuDIH6s/OuJnVGZ5iopEI+o3+JX3y3RgSEw50bzvklws8K3cNXV55GmWAGw4Hfa
+ub4c4tinvzD532jB9E4DMJSTBI6Br6ycDru2TFglkrjFs4ZFQV+sHyORfYlvRru3
++poCUv/gQHt3YaYJObQxH6cDtKRHamSt+7MqdV4BV3DbJtFDsGo9y3WQ3ky+gm3D
+YJChbWU0bPJKuAPYEsfwNvTXGx0Dy6bLyCM5IDlIlI6yiZzzX46uw98v01KYRxhA
+16Tb1xdAyRPDIYR+0pfCZ3zkpzfRm4Hxt7V3OSX3AjTvT5ZTknfFSLWF4SalvqL0
+vc5ft87L77Arwrro1sNu33UIai1sfjfDxAxvWV5g2nITJxGvUr8G565l8rekTEi5
+mdVbm7jdeT/d/RSzViFnwM33Ek81dTzg2jFO5eaIkBMCHJeaVWDwbH4/tBKYEfpT
+xLetxCgM8fLNzFsRujH5
+=jGLw
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar
new file mode 100644
index 0000000000..b82b534b14
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..52c1e0e5fb
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqMAAoJEJAqRX/iyO/56HQQALM3UqbsdSv+HPswSMWN8bd4
+dcUe8eQIogTzBCCp8/ZrYcn+YaLdpZ6GY7pVgj25mZRBWwJ9vRq7IHpS5CMKdk8x
+Z2fePXZTEDKCusoX2wcV2aHqtoK4m/SLxMLla+E1aQKe3sGCyBznXIXdFgpe26h1
+ROghCRAE9+rV8XLXBii18EJDs8YSGhL+kmgB/a9MsLhhOb6HVs+MIqV158S7WEEI
+8yVexa4uyEgzchkjY9vkPA5NeHKwoUlpUAOQV7fd/TYqNXcNcYd6Oeapr2pBZ+mq
+oaNa/cXp74IBt4Yh9t5wURlI1PQxW1ouzOZBcAuvYXdskjLczHm9aZauA1EXOZcg
+BOX1dwHZDIzWH2udkBmIsUPTX2XJYDab0QFupZusaKrPRYe2jT8UVqCgF8wQ5SfR
+PCLD9kPTcVlm/qF5YteR3EjY/VBj2os0o84izBgcYWKH7WsJbAbtEaYdk/cPnR/5
+KdL4FcxKsrfs1OiU7zh+CCB0VTqmZRQlOyCVF2IuZEnyvsQ3FIIU3pm4yzZPDJUC
+qMHRyWntTpPRbaDRX3Qg9vPub7qd64sZ+tMY5a29X2LR0tm1HdfvwEKZZWol3cnQ
+Is4nfqIK5dWmwR1rasbz/eGvAmJ7zIdXCg36r9nGWlKSHTtJSxcxwTt29trngQFc
+XoaRpI35F+1rK3odbEVD
+=ysB9
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom
similarity index 95%
rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom
index abeb577e25..38735a85ed 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.2-react-native/bugsnag-plugin-android-ndk-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-plugin-android-ndk
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android NDK
Official Bugsnag notifier for Android applications
@@ -30,7 +30,7 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
compile
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..3feb411e2d
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.2.3-react-native/bugsnag-plugin-android-ndk-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqLAAoJEJAqRX/iyO/58BAP/15K8qYVgzVgpoL8LXmsGsVb
+B0+eLR3rOYZAdnUuBHpmF3LlXgiN7PjW4vxhInO7NDxf/SB62bS5P9GDRAGe+tge
+ZMrw2e9jPu3m1Kcyy/lLQiDM0kgQxIi32ROApBbBPC0sTmQ9RnipQ7TXfxMEvEZt
+FwSUxu54KdivjFkn1VDhZ9tiUgr6f/wfkFfo1YzjmrN1sWXnD8NNMaVdkThuY2T7
+VuVVa6HEmbCDtXNKvC8Y/3hUDEs6CzSe/H5PZKnD7IBcyXlTDyM/s5yIR4SdXlD6
+0ObZjT/O6ORMLCGZv0yayhyQrMvOyYjZsumQSnMSIzXMWO4VTuVI+BAGzQWyg7gt
+hepwJR7VUPrp6aEiImowM5y/RTdyQihw8WKXI01AyYdM178kaAtDbBuYLoGTH3MJ
+/Af1muwq9p0PC1KZHCkxeOsWtbcw9F65HRp6/mLCzwpyWSyDM9wYMnd56ZJAWeU5
+agBzYxzaD9SeZgmKFLCJBopB11m9PKnZ1hyi+jhkZr+T9mt6hSnht0batT0t89hR
+xTkun67gr0crKLVY/ERvrAdeFVvEwfqAr+ugYg5GyGEIieBm5onLe2CL8azL8n6i
+CalzSb4RTDptyWYZkNqzol1TVt6Ze8/7JppQCMNVEAdDFLa/3+bxi/O9hlkrnh9c
+pA3Qp2W6Uk2Mz0oTVyYt
+=zLFG
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/maven-metadata-local.xml
index a6d126952f..13f9b890f8 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-plugin-android-ndk
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131536
+ 20201104121156
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar.asc
deleted file mode 100644
index a96a543ea3..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX5AAoJEO8eQUNdoVGt+PYL/0L+PzkwgpAF3cTmYiQQOEfy
-71TkVuaGFdkVKegGQ1l0g+cjygUTackU13tv4TIXgA5tPQBmNtXW1a3VnoxpSuO2
-7Iv0I7EAxOb1V16vcgR2Z294VdB6yLFxMW7sywpjIF4qQ0sH6x5D/eRpOm/8fu4l
-KG6eHPJMNEpK79SgcespQ17OJyluWtfRcTNi0oT3YSp69iOmfeP7yYw+00cuxGjt
-p6qsGpQJM+i1JdKrSV4qpwfoq/+X22leDQrdP/UWTGpg84w7eyOjBYnGqG+i6rhJ
-oKtfQFdr8RgM6PlLJ9/i7quXwHm13rjtgg5dYi/5SX7wxIfRFM1Rt9A9uPhQ9m8X
-KJRSeZrE/urvDUwxErI9Dtueah4ShtdKh1kA9ly9LrdAtjpQj6XULVoa2aKX+Ygo
-SXVjVM5AQX6Hjy9TnzejJLGwuzVRYw23lF5EcIl5w32E8VwGd7Zu4HMZIfuH5vrh
-roYET4tPbURL3R0IOFOgFst+pbh3v6Uhxgubooe0yg==
-=jNdm
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar
deleted file mode 100644
index 1128b5ac25..0000000000
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar and /dev/null differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar.asc
deleted file mode 100644
index 40e298f222..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.aar.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX5AAoJEO8eQUNdoVGtwrIMAK9gYQg0V7WmNB8VPSub7SMs
-bW5LsOcuQ3FIk9kqtQjzVx7cNSBtzjd/yqA+Y8mU9f4vfZy0Jk1tQPPBTyKsuB4L
-/zc+0TS3Pf85SUee33JjruCKmQkc39UMVyl4R6nhGeR8pSxc1OcuJQpHGDacfHVY
-mWdvcWO4KDHmSID14u/6VP3slwejr3k+CK0GUCKldG7vO9tQV9ROR+TLk6GRu6/l
-IIHHFN+t2lHtp0QEgN8qUWfNg8qz79U6JOx2FQqFo8x/wjqVG8RjvpO42oC5CgMm
-eI7rsLw2qNFkarOY+QLlTSG4vhIkKKedpca6akAo5SFlLzBntUOGhc81sOzphBgS
-kvZsQyHHHsDCCrEKz+9c0RXPMUA58nUfl962gR+nN1aGScfDDIbSQghG9yeJqiUc
-9uz+9b1mqFMZhtWYp6tktgeK7PsBw/CkcG92VQQwf7BIHjbIwjFIByg58+G20WsB
-ZrVicZMtqlYHcw4F5Qqb1us1FZSl7nxjpivm85nRFw==
-=31rZ
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom.asc
deleted file mode 100644
index e26c238621..0000000000
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom.asc
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BCPG v1.64
-
-iQGcBAABCgAGBQJfkYX5AAoJEO8eQUNdoVGtpUkL/1xs2gMTwmLj6fNna9Vr9JAD
-LX/jZWMZfI9SNOq+tTYF9xK4SrUfV0hTzmFBtM9yWIvm77k1eqfmog1gq83Q5LIr
-KVZtJrLfKOIc4inNFnq0DUrnjJkoR0c2anzlFYjXCtdsvkSHEpQhWAz3h8AxmGAX
-p33XEAMG/lKFHb1dpqI1NHuoh5EfYLUUNv0gaamsNSYn+N2laCVPCVvOaTHM853H
-KHoIFHgbt+xyg/63UffdsfPdGZENVmdX9VSUKuFY1Vja+BQRlXk58rpL8OR6CCPI
-ou5P0Vu/4Sw2mN4jTQNZ7X28kcEdHReP/luGHOqm8pHttSPYskMdlvKcQ4KcxXMB
-yl47AH+YGdlAj+EyNeFoFG+x+3QhQQcvsHcNtGte/FKuq7QOU/eha73eb9u3JtXJ
-9OedwGd+qymDotZulKPzAIPUyz7xJ8YfUcpjR3LXTF5tADhrVQ0xqcZAmf3RnsSZ
-sSk9e65ueeCkCG6RLHVJ0QFqUabizHscLQj+UotgLQ==
-=K8rm
------END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar
similarity index 59%
rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar
rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar
index 09d9d6bd94..48ebe05b7f 100644
Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native-sources.jar and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar.asc
new file mode 100644
index 0000000000..d1690cd3a9
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native-sources.jar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqNAAoJEJAqRX/iyO/5YdUP/3zBE6uUl/TxLsePK+fUPh8K
+E3LOcFVzrCmzmoc/wr4zkgiemWQVPu9YgUQRJbGP51xafjY3QS5/0dH7xXnH+fk+
+YmGv4Zn0XPweNSGkKl6fcgYRgbgP5eUFYsiGZuO7S8F5qpq4ZIb1ZNiNx7H4i1kk
+kbOAHn+89ksGjEd331iqNmO6XxYJbEdyKQ+hLpITn3+5zb+hcElzqSQp17avQBI/
+rtpvSZKVLKzsrCWSenV/Nj5ibve79gFrpl2+2/IOf5wwVxsSLnWNG7M1533XTXzS
+dxpuB7ZIlKcUc3h89xAVg7Z34bN/rgwGhBkU5Vrk2PpTt3QryhDxpC1MfJnd6unN
+NfMeOkDf04rtlOQcWQ5XSzqkU1/KFyk2NkbzeNuqmNHiEhd4Wpsctz1vTWPieCGI
+8LBTlJ0qEtIONhMDwMCOGmskmuwx63wPNPApIkVxMxCP+iIMbHPB18H9i3Z59FD/
+8aCJacBfNtb6zsVqNd7ndHEwQ6msJpbKXFayw5XFl50fUw9iOL97ch1LaPsrirJ5
+tkTyGGYMThO3hoz1dBIvNsBpMedmJmjZe9/Pq9LP+wZtHws2BBseXH1/1JHG21q3
+YwJEvsK0ikwyHEF+CdOUc81X/cq539mV1kiXX536nIW/3eKgyB5YbiCe8Jgb9OSp
+f7mwzufslU1QMtnJd68l
+=jxxo
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar
new file mode 100644
index 0000000000..811c3b6854
Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar differ
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar.asc
new file mode 100644
index 0000000000..17ff404250
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.aar.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqNAAoJEJAqRX/iyO/5DbsP/1pGMNNndXXyRVNUzC6h/1kB
+68kf3haiL/VfptXExKt/73HhGxAiaq6b63CoFRhxas5KQ+Zo447OIDyz/tdN26VB
+vaGu4M3z7PqzFQT4FlDfsYN9//o/DeBxUuN6iG1g1pNDxFuYCmgcgUB834QbwMfp
+QUtN44esfWO9ufFghoSHrZZYSzSM5okkan6g7ueK26FwdpWS64Q3nFtA86pwnNBM
+QB2I2e2w0qJC3G33Ysq/KWFnsDPCzlPo/FpRgvExOWtbY7Mt9IOXiBWPVvUNq8w+
+nWxTwJITQtrsLlC40Y0VbhJr0r+SOA/n/xM9/54rYyWDsB+TNemPcFvQ7Io+UQFo
+82wCHRG52giGGlF3yljGsZ7j+5aEBWV56/O+bSyfGRw2WMTPu7tPXSUVm0976TcO
+jZCTGvfksSnlTpRYI9WR53flNOf5lkqPyrOONv/ixknIkqk8EO3i4vuj2A2AAw8X
+IL/WxQZhkjXW9QuRdolY3dmfr9MVhINrivhbZk9l+hd/Tx9E6f/sIhCayArqVmeg
+7sFb/AffGaGHJxR8roTa1T7Ke/9CwXDiHdvauwINEMKntRRea1xabp7/MdsGM0YV
+4j2j1JlwTaHIH8fxfzDHdNy1YEBXfXvu5mN2bXBb8jUnR54jJaaRxzNgpW1hJHWf
+lLk6IyMEZD1c/Cx9pLFU
+=YWsG
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom
similarity index 95%
rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom
rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom
index 9da3716228..9c32846f56 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.2-react-native/bugsnag-plugin-react-native-5.2.2-react-native.pom
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom
@@ -3,7 +3,7 @@
4.0.0
com.bugsnag
bugsnag-plugin-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
aar
Bugsnag Android React Native
Official Bugsnag notifier for Android applications
@@ -30,7 +30,7 @@
com.bugsnag
bugsnag-android-core
- 5.2.2-react-native
+ 5.2.3-react-native
compile
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom.asc
new file mode 100644
index 0000000000..fdb5107a04
--- /dev/null
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.2.3-react-native/bugsnag-plugin-react-native-5.2.3-react-native.pom.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BCPG v1.64
+
+iQIcBAABCgAGBQJfopqMAAoJEJAqRX/iyO/503gQAILhZOlcJfQoxrjMpDj1n5ve
+JxOoNXzTphbA9D18Yz8n5UcgO8Ipgf/0Wwj2dF00Qp6YcoZSTdHqlurzVtN0d/z+
+jUG7AIBwkqtexZrl9uidrfAwWw3nCmBLtWOuerVeKwIhX6VGvX+/XDSJYKhR6Bu0
+JpF1ocDm+tvgBEjoP/TmU7aJXbgDlwrrPzPXHfWquuRXaPavdSBdF+iR3Qy2TBX7
+4PGWBbELw8raHmYpyCWhimls5stiEzkm51x9uaCPa90dCgpzjsVJcztTV4gKwiXT
+ytT4r51FbCLXThin/I0wJ4wvHqjoHB3r3N2Icdbdvdg+5tkjNvDB25kMboiP4dF3
+fXbVVSTp5qKUijDwO9t0o7Zj6J4kqkKXPDqIMee14bloeIwT/Q43d6SAOPcKgjaj
+QKSAZ0Sok/pLAtaGWALH5RzX1F4iV7DeezZ84YgT5silYjszlO5ceS5sIcWcpzBh
+pW/VD/IYEprcWK63YKL2HcqV/kPYFU8N7G8um1eDVCUi9InKethAHOi7zyjDDZJE
+WZAEpTAWQfycVflSkDXYLVoCewpIZhRldsuIK+yZUCyuo6XhgK3/tQPDM9zd7/hB
+G/PZFVGXQ30QtfsubLpY/MJ1zxz4R63Eu5AyxHZjm7+49dNpkR3eGZPEvSEkCNz9
+m99dLKrfJZ26u/kpAh6p
+=pgo+
+-----END PGP SIGNATURE-----
diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/maven-metadata-local.xml b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/maven-metadata-local.xml
index 0dd2be5b06..6a266ffbe5 100644
--- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/maven-metadata-local.xml
+++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/maven-metadata-local.xml
@@ -3,11 +3,11 @@
com.bugsnag
bugsnag-plugin-react-native
- 5.2.2-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
+ 5.2.3-react-native
- 5.2.2-react-native
+ 5.2.3-react-native
- 20201022131537
+ 20201104121157
diff --git a/packages/react-native/ios/.bugsnag-cocoa-version b/packages/react-native/ios/.bugsnag-cocoa-version
index e203d8fb25..2d10354661 100644
--- a/packages/react-native/ios/.bugsnag-cocoa-version
+++ b/packages/react-native/ios/.bugsnag-cocoa-version
@@ -1 +1 @@
-a6596e573b5979b83c84cd4ab29a5bf5b2da9648
+d2560bbc5d672727368015284a44adc26d6ae4d8
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.podspec.json b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.podspec.json
index 8d3ab71c8c..c74f914d5e 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.podspec.json
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.podspec.json
@@ -1,6 +1,6 @@
{
"name": "Bugsnag",
- "version": "6.2.2",
+ "version": "6.2.4",
"summary": "The Bugsnag crash reporting framework for Apple platforms.",
"homepage": "https://bugsnag.com",
"license": "MIT",
@@ -9,7 +9,7 @@
},
"source": {
"git": "https://github.com/bugsnag/bugsnag-cocoa.git",
- "tag": "v6.2.2"
+ "tag": "v6.2.4"
},
"frameworks": [
"Foundation",
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/project.pbxproj b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/project.pbxproj
index a704ac71a2..62ba98e1e8 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/project.pbxproj
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/project.pbxproj
@@ -661,6 +661,9 @@
01B14C56251CE55F00118748 /* report-react-native-promise-rejection.json in Resources */ = {isa = PBXBuildFile; fileRef = 01B14C55251CE55F00118748 /* report-react-native-promise-rejection.json */; };
01B14C57251CE55F00118748 /* report-react-native-promise-rejection.json in Resources */ = {isa = PBXBuildFile; fileRef = 01B14C55251CE55F00118748 /* report-react-native-promise-rejection.json */; };
01B14C58251CE55F00118748 /* report-react-native-promise-rejection.json in Resources */ = {isa = PBXBuildFile; fileRef = 01B14C55251CE55F00118748 /* report-react-native-promise-rejection.json */; };
+ 01C17AE72542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C17AE62542ED7F00C102C9 /* KSCrashReportWriterTests.m */; };
+ 01C17AE82542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C17AE62542ED7F00C102C9 /* KSCrashReportWriterTests.m */; };
+ 01C17AE92542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 01C17AE62542ED7F00C102C9 /* KSCrashReportWriterTests.m */; };
3A700A9424A63ABC0068CD1B /* BugsnagThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A700A8024A63A8E0068CD1B /* BugsnagThread.h */; settings = {ATTRIBUTES = (Public, ); }; };
3A700A9524A63AC50068CD1B /* BugsnagSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A700A8124A63A8E0068CD1B /* BugsnagSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
3A700A9624A63AC60068CD1B /* BugsnagStackframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A700A8224A63A8E0068CD1B /* BugsnagStackframe.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1272,6 +1275,7 @@
00E636C12487031D006CBF1A /* docker-compose.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = "docker-compose.yml"; sourceTree = SOURCE_ROOT; };
00E636C324878FFC006CBF1A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
01B14C55251CE55F00118748 /* report-react-native-promise-rejection.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "report-react-native-promise-rejection.json"; sourceTree = ""; };
+ 01C17AE62542ED7F00C102C9 /* KSCrashReportWriterTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSCrashReportWriterTests.m; sourceTree = ""; };
3A700A8024A63A8E0068CD1B /* BugsnagThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BugsnagThread.h; sourceTree = ""; };
3A700A8124A63A8E0068CD1B /* BugsnagSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BugsnagSession.h; sourceTree = ""; };
3A700A8224A63A8E0068CD1B /* BugsnagStackframe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BugsnagStackframe.h; sourceTree = ""; };
@@ -1414,6 +1418,7 @@
008966E92486D43700DC48C2 /* KSCrashIdentifierTests.m */,
008966DF2486D43700DC48C2 /* KSCrashReportConverter_Tests.m */,
008966DE2486D43700DC48C2 /* KSCrashReportStore_Tests.m */,
+ 01C17AE62542ED7F00C102C9 /* KSCrashReportWriterTests.m */,
008966DD2486D43700DC48C2 /* KSCrashSentry_NSException_Tests.m */,
008966E72486D43700DC48C2 /* KSCrashSentry_Signal_Tests.m */,
008966E62486D43700DC48C2 /* KSCrashSentry_Tests.m */,
@@ -2545,6 +2550,7 @@
008966FD2486D43700DC48C2 /* BugsnagOnBreadcrumbTest.m in Sources */,
008967812486D43700DC48C2 /* KSSystemInfo_Tests.m in Sources */,
0089671B2486D43700DC48C2 /* BugsnagSessionTest.m in Sources */,
+ 01C17AE72542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */,
008967A82486D43700DC48C2 /* KSCrashIdentifierTests.m in Sources */,
008967572486D43700DC48C2 /* BugsnagClientMirrorTest.m in Sources */,
0089677B2486D43700DC48C2 /* RFC3339DateTool_Tests.m in Sources */,
@@ -2746,6 +2752,7 @@
008967762486D43700DC48C2 /* XCTestCase+KSCrash.m in Sources */,
008967312486D43700DC48C2 /* BugsnagStateEventTest.m in Sources */,
004E35362487AFF2007FBAE4 /* BugsnagHandledStateTest.m in Sources */,
+ 01C17AE82542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */,
0089678B2486D43700DC48C2 /* KSCrashReportStore_Tests.m in Sources */,
00896A412486DBDD00DC48C2 /* BSGConfigurationBuilderTests.m in Sources */,
008967672486D43700DC48C2 /* BugsnagNotifierTest.m in Sources */,
@@ -2905,6 +2912,7 @@
CBA2249D251E429C00B87416 /* TestSupport.m in Sources */,
004E35372487AFF2007FBAE4 /* BugsnagHandledStateTest.m in Sources */,
0089678C2486D43700DC48C2 /* KSCrashReportStore_Tests.m in Sources */,
+ 01C17AE92542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */,
00896A422486DBDD00DC48C2 /* BSGConfigurationBuilderTests.m in Sources */,
008967682486D43700DC48C2 /* BugsnagNotifierTest.m in Sources */,
0089676E2486D43700DC48C2 /* BugsnagTestsDummyClass.m in Sources */,
@@ -3044,6 +3052,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -3082,6 +3091,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Bugsnag;
PRODUCT_NAME = Bugsnag;
+ RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = iphoneos;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -3115,6 +3125,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -3146,6 +3157,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Bugsnag;
PRODUCT_NAME = Bugsnag;
+ RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/AAE3C352-6D5A-468D-8448-CC2EA52E7868.plist b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/AAE3C352-6D5A-468D-8448-CC2EA52E7868.plist
new file mode 100644
index 0000000000..e550e1e0da
--- /dev/null
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/AAE3C352-6D5A-468D-8448-CC2EA52E7868.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ classNames
+
+ BugsnagBreadcrumbsTest
+
+ testPerformance
+
+ com.apple.XCTPerformanceMetric_WallClockTime
+
+ baselineAverage
+ 0.0488
+ baselineIntegrationDisplayName
+ Local Baseline
+
+
+
+
+
+
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/Info.plist b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/Info.plist
new file mode 100644
index 0000000000..fd8d35f3ed
--- /dev/null
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag.xcodeproj/xcshareddata/xcbaselines/00AD1C7A24869B0E00A27979.xcbaseline/Info.plist
@@ -0,0 +1,40 @@
+
+
+
+
+ runDestinationsByUUID
+
+ AAE3C352-6D5A-468D-8448-CC2EA52E7868
+
+ localComputer
+
+ busSpeedInMHz
+ 400
+ cpuCount
+ 1
+ cpuKind
+ 8-Core Intel Core i9
+ cpuSpeedInMHz
+ 2300
+ logicalCPUCoresPerPackage
+ 16
+ modelCode
+ MacBookPro16,1
+ physicalCPUCoresPerPackage
+ 8
+ platformIdentifier
+ com.apple.platform.macosx
+
+ targetArchitecture
+ x86_64
+ targetDevice
+
+ modelCode
+ iPhone12,1
+ platformIdentifier
+ com.apple.platform.iphonesimulator
+
+
+
+
+
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.h
index 19edc32e52..11cafce37b 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.h
@@ -8,47 +8,61 @@
#import
-#import "BugsnagBreadcrumb.h"
-#import "BugsnagConfiguration.h"
+@class BugsnagBreadcrumb;
+@class BugsnagConfiguration;
+typedef struct BSG_KSCrashReportWriter BSG_KSCrashReportWriter;
typedef void (^BSGBreadcrumbConfiguration)(BugsnagBreadcrumb *_Nonnull);
+#pragma mark -
+
+NS_ASSUME_NONNULL_BEGIN
+
@interface BugsnagBreadcrumbs : NSObject
-- (instancetype _Nonnull)initWithConfiguration:(BugsnagConfiguration *_Nonnull)config;
+- (instancetype)initWithConfiguration:(BugsnagConfiguration *)config;
+
+/**
+ * The current breadcrumbs, loaded from disk.
+ */
+@property (readonly) NSArray *breadcrumbs;
/**
* Path where breadcrumbs are persisted on disk
*/
-@property (nonatomic, readonly, strong, nullable) NSString *cachePath;
+@property (readonly) NSString *cachePath;
/**
* Store a new breadcrumb with a provided message.
*/
-- (void)addBreadcrumb:(NSString *_Nonnull)breadcrumbMessage;
+- (void)addBreadcrumb:(NSString *)breadcrumbMessage;
/**
* Store a new breadcrumb configured via block.
*
* @param block configuration block
*/
-- (void)addBreadcrumbWithBlock:
- (void (^_Nonnull)(BugsnagBreadcrumb *_Nonnull))block;
+- (void)addBreadcrumbWithBlock:(BSGBreadcrumbConfiguration)block;
/**
- * Generates an array of dictionaries representing the current buffer of breadcrumbs.
+ * Returns the breadcrumb JSON dictionaries stored on disk.
*/
-- (NSArray *_Nonnull)arrayValue;
+- (nullable NSArray *)cachedBreadcrumbs;
/**
- * Returns an array containing the current buffer of breadcrumbs.
+ * Removes breadcrumbs from disk.
*/
-- (NSArray *_Nonnull)getBreadcrumbs;
+- (void)removeAllBreadcrumbs;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#pragma mark -
/**
- * The types of breadcrumbs which will be automatically captured.
- * By default, this is all types.
+ * Inserts the current breadcrumbs into a crash report.
+ *
+ * This function is async-signal-safe.
*/
-@property BSGEnabledBreadcrumbType enabledBreadcrumbTypes;
-
-@end
+void BugsnagBreadcrumbsWriteCrashReport(const BSG_KSCrashReportWriter * _Nonnull writer);
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.m
index db28f85d49..b5d0cfcdfb 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BugsnagBreadcrumbs.m
@@ -8,10 +8,12 @@
#import "BugsnagBreadcrumbs.h"
-#import "BugsnagBreadcrumb.h"
+
+#import "BSGCachesDirectory.h"
+#import "BSGJSONSerialization.h"
+#import "BSG_KSCrashReportWriter.h"
#import "BugsnagLogger.h"
#import "Private.h"
-#import "BSGJSONSerialization.h"
@interface BugsnagConfiguration ()
@property(nonatomic) NSMutableArray *onBreadcrumbBlocks;
@@ -23,68 +25,84 @@ + (instancetype _Nullable)breadcrumbWithBlock:
+ (instancetype _Nullable)breadcrumbFromDict:(NSDictionary *_Nonnull)dict;
@end
+/**
+ * Information that can be accessed in an async-safe manner from the crash handler.
+ */
+typedef struct {
+ char directoryPath[PATH_MAX];
+ unsigned int firstFileNumber;
+ unsigned int nextFileNumber;
+} BugsnagBreadcrumbsContext;
+
+static BugsnagBreadcrumbsContext g_context;
+
+#pragma mark -
+
@interface BugsnagBreadcrumbs ()
+
@property BugsnagConfiguration *config;
-@property(nonatomic, readwrite, strong) NSMutableArray *breadcrumbs;
-@property(nonatomic, readonly, strong) dispatch_queue_t readWriteQueue;
+@property unsigned int nextFileNumber;
+@property unsigned int maxBreadcrumbs;
+
@end
+#pragma mark -
+
@implementation BugsnagBreadcrumbs
- (instancetype)initWithConfiguration:(BugsnagConfiguration *)config {
- static NSString *const BSGBreadcrumbCacheFileName = @"bugsnag_breadcrumbs.json";
- if (self = [super init]) {
- _config = config;
- _breadcrumbs = [NSMutableArray arrayWithCapacity:config.maxBreadcrumbs];
- _readWriteQueue = dispatch_queue_create("com.bugsnag.BreadcrumbRead",
- DISPATCH_QUEUE_SERIAL);
- NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(
- NSCachesDirectory, NSUserDomainMask, YES) firstObject];
- if (cacheDir != nil) {
- _cachePath = [cacheDir stringByAppendingPathComponent:
- BSGBreadcrumbCacheFileName];
- }
+ if (!(self = [super init])) {
+ return nil;
+ }
+
+ _config = config;
+ // Capture maxBreadcrumbs to protect against config being changed after initialization
+ _maxBreadcrumbs = (unsigned int)config.maxBreadcrumbs;
+
+ NSError *error = nil;
+ NSString *cachesDir = [BSGCachesDirectory cachesDirectory];
+ _cachePath = [[cachesDir stringByAppendingPathComponent:@"bugsnag"] stringByAppendingPathComponent:@"breadcrumbs"];
+ if (![[NSFileManager defaultManager] createDirectoryAtPath:_cachePath withIntermediateDirectories:YES attributes:nil error:&error]) {
+ bsg_log_err(@"Unable to create breadcrumbs directory: %@", error);
}
+
+ [_cachePath getFileSystemRepresentation:g_context.directoryPath maxLength:sizeof(g_context.directoryPath)];
+
return self;
}
+- (NSArray *)breadcrumbs {
+ return [self loadBreadcrumbsAsDictionaries:NO] ?: @[];
+}
+
- (void)addBreadcrumb:(NSString *)breadcrumbMessage {
[self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull crumb) {
crumb.message = breadcrumbMessage;
}];
}
-- (void)addBreadcrumbWithBlock:
- (void (^_Nonnull)(BugsnagBreadcrumb *_Nonnull))block {
- if (self.config.maxBreadcrumbs == 0) {
+- (void)addBreadcrumbWithBlock:(BSGBreadcrumbConfiguration)block {
+ if (self.maxBreadcrumbs == 0) {
return;
}
BugsnagBreadcrumb *crumb = [BugsnagBreadcrumb breadcrumbWithBlock:block];
- if (crumb != nil && [self shouldSendBreadcrumb:crumb]) {
- dispatch_barrier_sync(self.readWriteQueue, ^{
- if ((self.breadcrumbs.count > 0) &&
- (self.breadcrumbs.count == self.config.maxBreadcrumbs)) {
- [self.breadcrumbs removeObjectAtIndex:0];
- }
- [self.breadcrumbs addObject:crumb];
- // Serialize crumbs to disk inside barrier to avoid simultaneous
- // access to the file
- if (self.cachePath != nil) {
- static NSString *const arrayKeyPath = @"objectValue";
- NSArray *items = [self.breadcrumbs valueForKeyPath:arrayKeyPath];
- if ([BSGJSONSerialization isValidJSONObject:items]) {
- NSError *error = nil;
- NSData *data = [BSGJSONSerialization dataWithJSONObject:items
- options:0
- error:&error];
- [data writeToFile:self.cachePath atomically:NO];
- if (error != nil) {
- bsg_log_err(@"Failed to write breadcrumbs to disk: %@", error);
- }
- }
- }
- });
+ if (!crumb || ![self shouldSendBreadcrumb:crumb]) {
+ return;
+ }
+ NSData *data = [self dataForBreadcrumb:crumb];
+ if (!data) {
+ return;
}
+ unsigned int fileNumber;
+ @synchronized (self) {
+ fileNumber = self.nextFileNumber;
+ self.nextFileNumber = fileNumber + 1;
+ if (fileNumber + 1 > self.maxBreadcrumbs) {
+ g_context.firstFileNumber = fileNumber + 1 - self.maxBreadcrumbs;
+ }
+ g_context.nextFileNumber = fileNumber + 1;
+ }
+ [self writeBreadcrumbData:(NSData *)data toFileNumber:fileNumber];
}
- (BOOL)shouldSendBreadcrumb:(BugsnagBreadcrumb *)crumb {
@@ -100,49 +118,118 @@ - (BOOL)shouldSendBreadcrumb:(BugsnagBreadcrumb *)crumb {
return YES;
}
-- (NSArray *)cachedBreadcrumbs {
- __block NSArray *cache = nil;
- dispatch_barrier_sync(self.readWriteQueue, ^{
- NSError *error = nil;
- NSData *data = [NSData dataWithContentsOfFile:self.cachePath options:0 error:&error];
- if (error == nil) {
- cache = [BSGJSONSerialization JSONObjectWithData:data options:0 error:&error];
- }
- if (error != nil) {
- bsg_log_err(@"Failed to read breadcrumbs from disk: %@", error);
+- (void)removeAllBreadcrumbs {
+ @synchronized (self) {
+ self.nextFileNumber = 0;
+ g_context.firstFileNumber = 0;
+ g_context.nextFileNumber = 0;
+ }
+ [self deleteBreadcrumbFiles];
+}
+
+#pragma mark - File storage
+
+- (NSData *)dataForBreadcrumb:(BugsnagBreadcrumb *)breadcrumb {
+ id JSONObject = [breadcrumb objectValue];
+ if (![BSGJSONSerialization isValidJSONObject:JSONObject]) {
+ bsg_log_err(@"Unable to serialize breadcrumb: Not a valid JSON object");
+ return nil;
+ }
+ NSError *error = nil;
+ NSData *data = [BSGJSONSerialization dataWithJSONObject:JSONObject options:0 error:&error];
+ if (!data) {
+ bsg_log_err(@"Unable to serialize breadcrumb: %@", error);
+ }
+ return data;
+}
+
+- (NSString *)pathForFileNumber:(unsigned int)fileNumber {
+ return [self.cachePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%u.json", fileNumber]];
+}
+
+- (void)writeBreadcrumbData:(NSData *)data toFileNumber:(unsigned int)fileNumber {
+ NSString *path = [self pathForFileNumber:fileNumber];
+
+ NSError *error = nil;
+ if (![data writeToFile:path options:NSDataWritingAtomic error:&error]) {
+ bsg_log_err(@"Unable to write breadcrumb: %@", error);
+ return;
+ }
+
+ if (fileNumber >= self.maxBreadcrumbs) {
+ NSString *path = [self pathForFileNumber:fileNumber - self.maxBreadcrumbs];
+ if (![[NSFileManager defaultManager] removeItemAtPath:path error:&error]) {
+ bsg_log_err(@"Unable to delete old breadcrumb: %@", error);
}
- });
- return [cache isKindOfClass:[NSArray class]] ? cache : nil;
+ }
}
-- (NSArray *)arrayValue {
- __block NSMutableArray *contents;
- dispatch_barrier_sync(self.readWriteQueue, ^{
- contents = [[NSMutableArray alloc] initWithCapacity:self.breadcrumbs.count];
- for (BugsnagBreadcrumb *crumb in self.breadcrumbs) {
- NSDictionary *objectValue = [crumb objectValue];
- NSError *error = nil;
- @try {
- if (![BSGJSONSerialization isValidJSONObject:objectValue]) {
- bsg_log_err(@"Unable to serialize breadcrumb: Not a valid "
- @"JSON object");
- continue;
- }
- [contents addObject:objectValue];
- } @catch (NSException *exception) {
- bsg_log_err(@"Unable to serialize breadcrumb: %@", error);
- }
+- (nullable NSArray *)cachedBreadcrumbs {
+ return [self loadBreadcrumbsAsDictionaries:YES];
+}
+
+- (nullable NSArray *)loadBreadcrumbsAsDictionaries:(BOOL)asDictionaries {
+ NSError *error = nil;
+
+ NSArray *filenames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:_cachePath error:&error];
+ if (!filenames) {
+ bsg_log_err(@"Unable to read breadcrumbs: %@", error);
+ return nil;
+ }
+
+ NSMutableArray *breadcrumbs = [NSMutableArray array];
+
+ for (NSString *file in [filenames sortedArrayUsingSelector:@selector(compare:)]) {
+ NSString *path = [self.cachePath stringByAppendingPathComponent:file];
+ NSData *data = [NSData dataWithContentsOfFile:path];
+ if (!data) {
+ bsg_log_err(@"Unable to read breadcrumb from %@", path);
+ continue;
+ }
+ id JSONObject = [BSGJSONSerialization JSONObjectWithData:data options:0 error:&error];
+ if (!JSONObject) {
+ bsg_log_err(@"Unable to parse breadcrumb: %@", error);
+ continue;
}
- });
- return contents;
+ BugsnagBreadcrumb *breadcrumb;
+ if (![JSONObject isKindOfClass:[NSDictionary class]] ||
+ !(breadcrumb = [BugsnagBreadcrumb breadcrumbFromDict:JSONObject])) {
+ bsg_log_err(@"Unexpected breadcrumb payload in file %@", file);
+ continue;
+ }
+ [breadcrumbs addObject:asDictionaries ? JSONObject : breadcrumb];
+ }
+
+ return breadcrumbs;
}
-- (NSArray *)getBreadcrumbs {
- __block NSArray *result = nil;
- dispatch_barrier_sync(self.readWriteQueue, ^{
- result = [NSArray arrayWithArray:self.breadcrumbs];
- });
- return result;
+- (void)deleteBreadcrumbFiles {
+ [[NSFileManager defaultManager] removeItemAtPath:self.cachePath error:NULL];
+
+ NSError *error = nil;
+ if (![[NSFileManager defaultManager] createDirectoryAtPath:self.cachePath withIntermediateDirectories:YES attributes:nil error:&error]) {
+ bsg_log_err(@"Unable to create breadcrumbs directory: %@", error);
+ }
+
+ NSString *cachesDir = [BSGCachesDirectory cachesDirectory];
+ NSString *oldBreadcrumbsPath = [cachesDir stringByAppendingPathComponent:@"bugsnag_breadcrumbs.json"];
+ [[NSFileManager defaultManager] removeItemAtPath:oldBreadcrumbsPath error:NULL];
}
@end
+
+#pragma mark -
+
+void BugsnagBreadcrumbsWriteCrashReport(const BSG_KSCrashReportWriter *writer) {
+ char path[PATH_MAX];
+ writer->beginArray(writer, "breadcrumbs");
+ for (unsigned int i = g_context.firstFileNumber; i < g_context.nextFileNumber; i++) {
+ int result = snprintf(path, sizeof(path), "%s/%u.json", g_context.directoryPath, i);
+ if (result < 0 || result >= sizeof(path)) {
+ bsg_log_err(@"Breadcrumb path is too long");
+ continue;
+ }
+ writer->addJSONFileElement(writer, NULL, path);
+ }
+ writer->endContainer(writer);
+}
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Bugsnag.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Bugsnag.m
index c662fdc585..6d69c3d07e 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Bugsnag.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Bugsnag.m
@@ -203,7 +203,7 @@ + (void)leaveBreadcrumbWithMessage:(NSString *_Nonnull)message
+ (NSArray *_Nonnull)breadcrumbs {
if ([self bugsnagStarted]) {
- return [self.client.breadcrumbs getBreadcrumbs];
+ return self.client.breadcrumbs.breadcrumbs;
} else {
return @[];
}
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClient.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClient.m
index 0bb6c71f08..af86416806 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClient.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClient.m
@@ -27,6 +27,8 @@
#import "BugsnagPlatformConditional.h"
#import "BugsnagClient.h"
+
+#import "BugsnagBreadcrumbs.h"
#import "BugsnagClientInternal.h"
#import "BSGConnectivity.h"
#import "Bugsnag.h"
@@ -159,6 +161,7 @@ void BSSerializeDataCrashHandler(const BSG_KSCrashReportWriter *writer, int type
if (bsg_g_bugsnag_data.stateJSON) {
writer->addJSONElement(writer, "state", bsg_g_bugsnag_data.stateJSON);
}
+ BugsnagBreadcrumbsWriteCrashReport(writer);
if (bsg_g_bugsnag_data.metadataJSON) {
// The API expects "metaData", capitalised as such. Elsewhere is is one word.
writer->addJSONElement(writer, "metaData", bsg_g_bugsnag_data.metadataJSON);
@@ -358,10 +361,6 @@ - (instancetype)initWithUserId:(NSString *)userId name:(NSString *)name emailAdd
- (NSDictionary *)toJson;
@end
-@interface BugsnagBreadcrumbs ()
-@property(nonatomic, readwrite, strong) NSMutableArray *breadcrumbs;
-@end
-
// =============================================================================
// MARK: - BugsnagClient
// =============================================================================
@@ -552,6 +551,7 @@ - (void)start {
apiClient:self.errorReportApiClient
onCrash:&BSSerializeDataCrashHandler];
[self computeDidCrashLastLaunch];
+ [self.breadcrumbs removeAllBreadcrumbs];
[self setupConnectivityListener];
[self updateAutomaticBreadcrumbDetectionSettings];
@@ -621,7 +621,7 @@ - (void)start {
[self.metadata addMetadata:BSGParseDeviceMetadata(@{@"system": systemInfo}) toSection:BSGKeyDevice];
}
-- (bool)shouldReportOOM {
+- (BOOL)shouldReportOOM {
#if BSGOOMAvailable
// Disable if in an app extension, since app extensions have a different
// app lifecycle and the heuristic used for finding app terminations rooted
@@ -649,7 +649,7 @@ - (bool)shouldReportOOM {
/**
* These heuristics aren't 100% guaranteed to be correct, but they're correct often enough to be useful.
*/
-- (bool)didLikelyOOM {
+- (BOOL)didLikelyOOM {
#if BSGOOMAvailable
NSDictionary *currAppState = self.systemState.currentLaunchState[SYSTEMSTATE_KEY_APP];
NSDictionary *prevAppState = self.systemState.lastLaunchState[SYSTEMSTATE_KEY_APP];
@@ -696,7 +696,6 @@ - (void)addTerminationObserver:(NSString *)name {
- (void)computeDidCrashLastLaunch {
const BSG_KSCrash_State *crashState = bsg_kscrashstate_currentState();
-#if BSG_PLATFORM_TVOS || BSG_PLATFORM_IOS
BOOL didOOMLastLaunch = [self shouldReportOOM];
NSFileManager *manager = [NSFileManager defaultManager];
NSString *didCrashSentinelPath = [NSString stringWithUTF8String:crashSentinelPath];
@@ -721,11 +720,12 @@ - (void)computeDidCrashLastLaunch {
// and insures against the crash callback crashing
if (!handledCrashLastLaunch && didOOMLastLaunch) {
+ void *onCrash = bsg_g_bugsnag_data.onCrash;
+ // onCrash should not be called for OOMs
+ bsg_g_bugsnag_data.onCrash = NULL;
[self notifyOutOfMemoryEvent];
+ bsg_g_bugsnag_data.onCrash = onCrash;
}
-#else
- self.appDidCrashLastLaunch = crashState->crashedLastLaunch;
-#endif
}
- (void)setCodeBundleId:(NSString *)codeBundleId {
@@ -1153,16 +1153,8 @@ - (BugsnagError *)generateError:(NSException *)exception
// MARK: - Breadcrumbs
-- (void)addBreadcrumbWithBlock:
- (void (^_Nonnull)(BugsnagBreadcrumb *_Nonnull))block {
+- (void)addBreadcrumbWithBlock:(void (^)(BugsnagBreadcrumb *))block {
[self.breadcrumbs addBreadcrumbWithBlock:block];
- [self serializeBreadcrumbs];
-}
-
-- (void)serializeBreadcrumbs {
- [self.state addMetadata:[self.breadcrumbs arrayValue]
- withKey:BSGKeyBreadcrumbs
- toSection:BSTabCrash];
}
- (void)metadataChanged:(BugsnagMetadata *)metadata {
@@ -1615,10 +1607,9 @@ - (NSDictionary *)collectDeviceWithState {
}
- (NSArray *)collectBreadcrumbs {
- NSMutableArray *crumbs = self.breadcrumbs.breadcrumbs;
NSMutableArray *data = [NSMutableArray new];
- for (BugsnagBreadcrumb *crumb in crumbs) {
+ for (BugsnagBreadcrumb *crumb in self.breadcrumbs.breadcrumbs) {
NSMutableDictionary *crumbData = [[crumb objectValue] mutableCopy];
// JSON is serialized as 'name', we want as 'message' when passing to RN
crumbData[@"message"] = crumbData[@"name"];
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClientInternal.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClientInternal.h
index 8d1d53df02..9c2281ea9b 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClientInternal.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Client/BugsnagClientInternal.h
@@ -28,5 +28,7 @@
@property(readonly) BOOL started;
- (void)start;
-@end
+- (BOOL)shouldReportOOM;
+
+@end
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BSGConfigurationBuilder.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BSGConfigurationBuilder.m
index 73e3a57ad6..d704d34e9f 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BSGConfigurationBuilder.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BSGConfigurationBuilder.m
@@ -13,7 +13,7 @@ static BOOL BSGValueIsBoolean(id object) {
@implementation BSGConfigurationBuilder
+ (BugsnagConfiguration *)configurationFromOptions:(NSDictionary *)options {
- NSString *apiKey = options[@"apiKey"];
+ NSString *apiKey = options[BSGKeyApiKey];
if (apiKey != nil && ![apiKey isKindOfClass:[NSString class]]) {
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Bugsnag apiKey must be a string" userInfo:nil];
}
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration.m
index ff6432d6b2..c71e60c3d7 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration.m
@@ -164,15 +164,15 @@ - (instancetype)init {
/**
* The designated initializer.
*/
-- (instancetype _Nonnull)initWithApiKey:(NSString *_Nonnull)apiKey
-{
- [self setApiKey:apiKey];
-
- self = [super init];
-
+- (instancetype)initWithApiKey:(NSString *)apiKey {
+ if (!(self = [super init])) {
+ return nil;
+ }
+ if (apiKey) {
+ [self setApiKey:apiKey];
+ }
_metadata = [[BugsnagMetadata alloc] init];
_config = [[BugsnagMetadata alloc] init];
- _bundleVersion = NSBundle.mainBundle.infoDictionary[@"CFBundleVersion"];
_endpoints = [BugsnagEndpointConfiguration new];
_sessionURL = [NSURL URLWithString:@"https://sessions.bugsnag.com"];
_autoDetectErrors = YES;
@@ -203,19 +203,30 @@ - (instancetype _Nonnull)initWithApiKey:(NSString *_Nonnull)apiKey
sessionWithConfiguration:[NSURLSessionConfiguration
defaultSessionConfiguration]];
}
+
+ NSString *releaseStage = nil;
#if DEBUG
- _releaseStage = BSGKeyDevelopment;
+ releaseStage = BSGKeyDevelopment;
#else
- _releaseStage = BSGKeyProduction;
+ releaseStage = BSGKeyProduction;
#endif
+ NSString *appType = nil;
#if BSG_PLATFORM_TVOS
- _appType = @"tvOS";
+ appType = @"tvOS";
#elif BSG_PLATFORM_IOS
- _appType = @"iOS";
+ appType = @"iOS";
#elif BSG_PLATFORM_OSX
- _appType = @"macOS";
+ appType = @"macOS";
+ #else
+ appType = @"unknown";
#endif
+
+ [self setAppType:appType];
+ [self setReleaseStage:releaseStage];
+ [self setAppVersion:NSBundle.mainBundle.infoDictionary[@"CFBundleShortVersionString"]];
+ [self setBundleVersion:NSBundle.mainBundle.infoDictionary[@"CFBundleVersion"]];
+
return self;
}
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReport.c b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReport.c
index 02fd6de11a..20207a14a4 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReport.c
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReport.c
@@ -1571,7 +1571,7 @@ void bsg_kscrashreport_writeStandardReport(
}
if (crashContext->config.onCrashNotify != NULL) {
- // NOTE: The blacklist for BSG_KSCrashField_UserAtCrash children in BugsnagEvent.m
+ // NOTE: The deny list for BSG_KSCrashField_UserAtCrash children in BugsnagEvent.m
// should be updated when adding new fields here
// Write handled exception report info
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSJSONCodecObjC.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSJSONCodecObjC.m
index b687d6e308..91e8cc8c7f 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSJSONCodecObjC.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSJSONCodecObjC.m
@@ -29,6 +29,7 @@
#import "BSG_KSJSONCodec.h"
#import "BSG_RFC3339DateTool.h"
#import "NSError+BSG_SimpleConstructor.h"
+#import "BSG_KSLogger.h"
@interface BSG_KSJSONCodec ()
@@ -487,20 +488,28 @@ int bsg_ksjsoncodecobjc_i_encodeObject(BSG_KSJSONCodec *codec, id object,
+ (NSData *)encode:(id)object
options:(BSG_KSJSONEncodeOption)encodeOptions
error:(NSError *__autoreleasing *)error {
- NSMutableData *data = [NSMutableData data];
- BSG_KSJSONEncodeContext JSONContext;
- bsg_ksjsonbeginEncode(
- &JSONContext, encodeOptions & BSG_KSJSONEncodeOptionPretty,
- bsg_ksjsoncodecobjc_i_addJSONData, (__bridge void *)data);
- BSG_KSJSONCodec *codec =
- [self codecWithEncodeOptions:encodeOptions decodeOptions:0];
-
- int result =
- bsg_ksjsoncodecobjc_i_encodeObject(codec, object, NULL, &JSONContext);
- if (error != nil) {
- *error = codec.error;
+ @try {
+ NSMutableData *data = [NSMutableData data];
+ BSG_KSJSONEncodeContext JSONContext;
+ bsg_ksjsonbeginEncode(
+ &JSONContext, encodeOptions & BSG_KSJSONEncodeOptionPretty,
+ bsg_ksjsoncodecobjc_i_addJSONData, (__bridge void *)data);
+ BSG_KSJSONCodec *codec =
+ [self codecWithEncodeOptions:encodeOptions decodeOptions:0];
+
+ int result =
+ bsg_ksjsoncodecobjc_i_encodeObject(codec, object, NULL, &JSONContext);
+ if (error != nil) {
+ *error = codec.error;
+ }
+ return result == BSG_KSJSON_OK ? data : nil;
+ } @catch (NSException *exception) {
+ BSG_KSLOG_ERROR(@"Could not encode JSON object: %@", exception.description);
+ if (error != nil) {
+ *error = [NSError bsg_errorWithDomain:@"KSJSONCodecObjC" code:0 description:exception.description];
+ }
+ return nil;
}
- return result == BSG_KSJSON_OK ? data : nil;
}
+ (id)decode:(NSData *)JSONData
@@ -511,6 +520,10 @@ + (id)decode:(NSData *)JSONData
@try {
result = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:error];
} @catch (NSException *exception) {
+ BSG_KSLOG_ERROR(@"Could not decode JSON object: %@", exception.description);
+ if (error != nil) {
+ *error = [NSError bsg_errorWithDomain:@"KSJSONCodecObjC" code:0 description:exception.description];
+ }
result = @{};
}
return result;
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMach.c b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMach.c
index f368f5a93b..4671367ce7 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMach.c
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMach.c
@@ -35,6 +35,9 @@
#include
#include
#include
+#if defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
+#import
+#endif
// Avoiding static functions due to linker issues.
@@ -56,6 +59,25 @@ static pthread_t bsg_g_topThread;
// ============================================================================
uint64_t bsg_ksmachfreeMemory(void) {
+ size_t mem = 0;
+
+#if BSG_PLATFORM_IOS && defined(__IPHONE_13_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
+ if (__builtin_available(iOS 13.0, *)) {
+ mem = os_proc_available_memory();
+ }
+#endif
+
+#if BSG_PLATFORM_TVOS && defined(__TVOS_13_0) && __TV_OS_VERSION_MAX_ALLOWED >= __TVOS_13_0
+ if (__builtin_available(tvOS 13.0, *)) {
+ mem = os_proc_available_memory();
+ }
+#endif
+
+ // Note: Some broken versions of iOS always return 0.
+ if(mem != 0) {
+ return mem;
+ }
+
vm_statistics_data_t vmStats;
vm_size_t pageSize;
if (bsg_ksmachi_VMStats(&vmStats, &pageSize)) {
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent.m
index e41d405247..5a254b209e 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent.m
@@ -16,6 +16,7 @@
#import
#import "BSGSerialization.h"
#import "Bugsnag.h"
+#import "BugsnagBreadcrumbs.h"
#import "BugsnagCollections.h"
#import "BugsnagHandledState.h"
#import "BugsnagLogger.h"
@@ -185,7 +186,10 @@ id BSGLoadConfigValue(NSDictionary *report, NSString *valueName) {
// then cached breadcrumbs from an OOM event
?: [report valueForKeyPath:@"user.state.oom.breadcrumbs"]
// then cached breadcrumbs from a regular event
- ?: [report valueForKeyPath:@"user.state.crash.breadcrumbs"];
+ // KSCrashReports from earlier versions of the notifier used this
+ ?: [report valueForKeyPath:@"user.state.crash.breadcrumbs"]
+ // breadcrumbs added to a KSCrashReport by BSSerializeDataCrashHandler
+ ?: [report valueForKeyPath:@"user.breadcrumbs"];
NSMutableArray *breadcrumbs = [NSMutableArray arrayWithCapacity:cache.count];
for (NSDictionary *data in cache) {
if (![data isKindOfClass:[NSDictionary class]]) {
@@ -573,19 +577,20 @@ - (instancetype)initWithUserData:(NSDictionary *)event {
- (NSMutableDictionary *)parseOnCrashData:(NSDictionary *)report {
NSMutableDictionary *userAtCrash = [report[BSGKeyUser] mutableCopy];
// avoid adding internal information to user-defined metadata
- NSArray *blacklistedKeys = @[
+ NSArray *keysToRemove = @[
@BSG_KSCrashField_Overrides,
@BSG_KSCrashField_HandledState,
@BSG_KSCrashField_Metadata,
@BSG_KSCrashField_State,
@BSG_KSCrashField_Config,
@BSG_KSCrashField_DiscardDepth,
+ @"breadcrumbs",
@"startedAt",
@"unhandledCount",
@"handledCount",
@"id",
];
- [userAtCrash removeObjectsForKeys:blacklistedKeys];
+ [userAtCrash removeObjectsForKeys:keysToRemove];
for (NSString *key in [userAtCrash allKeys]) { // remove any non-dictionary values
if (![userAtCrash[key] isKindOfClass:[NSDictionary class]]) {
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagNotifier.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagNotifier.m
index 50fb61eb1a..2e7aba006f 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagNotifier.m
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagNotifier.m
@@ -23,7 +23,7 @@ - (instancetype)init {
#else
self.name = @"Bugsnag Objective-C";
#endif
- self.version = @"6.2.2";
+ self.version = @"6.2.4";
self.url = @"https://github.com/bugsnag/bugsnag-cocoa";
self.dependencies = [NSMutableArray new];
}
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Private.h
index 758f19afa3..012345506a 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Private.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Private.h
@@ -8,7 +8,6 @@
#import "BSG_RFC3339DateTool.h"
#import "Bugsnag.h"
#import "BugsnagBreadcrumb.h"
-#import "BugsnagBreadcrumbs.h"
#import "BugsnagKeys.h"
#import "BugsnagLogger.h"
#import "BugsnagMetadataInternal.h"
@@ -36,16 +35,6 @@
#pragma mark -
-@interface BugsnagBreadcrumbs ()
-/**
- * Reads and return breadcrumb data currently stored on disk
- */
-- (NSArray *_Nullable)cachedBreadcrumbs;
-
-@end
-
-#pragma mark -
-
@interface Bugsnag ()
/** Get the current Bugsnag configuration.
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/Bugsnag.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/Bugsnag.h
index 828aa89a6f..b5cd3ad507 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/Bugsnag.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/Bugsnag.h
@@ -25,21 +25,21 @@
//
#import
-#import "BugsnagConfiguration.h"
-#import "BugsnagMetadata.h"
-#import "BugsnagPlugin.h"
-#import "BugsnagClient.h"
-#import "BugsnagEvent.h"
-#import "BugsnagApp.h"
-#import "BugsnagAppWithState.h"
-#import "BugsnagDevice.h"
-#import "BugsnagDeviceWithState.h"
-#import "BugsnagEndpointConfiguration.h"
-#import "BugsnagError.h"
-#import "BugsnagErrorTypes.h"
-#import "BugsnagSession.h"
-#import "BugsnagStackframe.h"
-#import "BugsnagThread.h"
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
@interface Bugsnag : NSObject
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagAppWithState.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagAppWithState.h
index cd9a4795ab..7e39733b16 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagAppWithState.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagAppWithState.h
@@ -8,7 +8,7 @@
#import
-#import "BugsnagApp.h"
+#import
/**
* Stateful information set by the notifier about your app can be found on this class. These values
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagClient.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagClient.h
index 090f001c37..9cd3b1e6ca 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagClient.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagClient.h
@@ -26,9 +26,9 @@
#import
-#import "BugsnagConfiguration.h"
-#import "BugsnagMetadata.h"
-#import "BugsnagMetadataStore.h"
+#import
+#import
+#import
@class BugsnagSessionTracker;
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagConfiguration.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagConfiguration.h
index a948fbfac0..844f4406e4 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagConfiguration.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagConfiguration.h
@@ -26,12 +26,12 @@
#import
-#import "BSG_KSCrashReportWriter.h"
-#import "BugsnagBreadcrumb.h"
-#import "BugsnagEvent.h"
-#import "BugsnagMetadata.h"
-#import "BugsnagPlugin.h"
-#import "BugsnagMetadataStore.h"
+#import
+#import
+#import
+#import
+#import
+#import
@class BugsnagUser;
@class BugsnagEndpointConfiguration;
@@ -111,7 +111,7 @@ typedef BOOL (^BugsnagOnSessionBlock)(BugsnagSession *_Nonnull session);
/**
* Initializes a new configuration object with the provided API key.
*/
-- (instancetype)initWithApiKey:(NSString *)apiKey NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(_:));
+- (instancetype)initWithApiKey:(nullable NSString *)apiKey NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(_:));
/**
* Required declaration to suppress a superclass designated-initializer error
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagDeviceWithState.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagDeviceWithState.h
index f14137ec7b..70000b9099 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagDeviceWithState.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagDeviceWithState.h
@@ -8,7 +8,7 @@
#import
-#import "BugsnagDevice.h"
+#import
/**
* Stateful information set by the notifier about the device on which the event occurred can be
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagEvent.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagEvent.h
index f10ac718d9..c3e5c85945 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagEvent.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagEvent.h
@@ -7,7 +7,8 @@
//
#import
-#import "BugsnagMetadataStore.h"
+
+#import
@class BugsnagConfiguration;
@class BugsnagHandledState;
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagMetadata.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagMetadata.h
index 6f05f7e9d5..532cd86fe3 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagMetadata.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagMetadata.h
@@ -25,7 +25,8 @@
//
#import
-#import "BugsnagMetadataStore.h"
+
+#import
@interface BugsnagMetadata : NSObject
- (instancetype _Nonnull)initWithDictionary:(NSDictionary *_Nonnull)dict;
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagSession.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagSession.h
index 63a2d465e0..5d64704b06 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagSession.h
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/include/Bugsnag/BugsnagSession.h
@@ -8,9 +8,9 @@
#import
-#import "BugsnagUser.h"
-#import "BugsnagApp.h"
-#import "BugsnagDevice.h"
+#import
+#import
+#import
@interface BugsnagSession : NSObject
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md b/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md
index b67b0ccc77..ff53455aaf 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md
@@ -1,31 +1,59 @@
Changelog
=========
+## 6.2.4 (2020-11-04)
+
+### Bug fixes
+
+* The `onCrashHandler` is no longer called in the event of an OOM.
+ [#874](https://github.com/bugsnag/bugsnag-cocoa/pull/874)
+
+## 6.2.3 (2020-10-28)
+
+### Enhancements
+
+* Use os_proc_available_memory() to get free memory, if available.
+ [#851](https://github.com/bugsnag/bugsnag-cocoa/pull/851)
+
+* Reduced the CPU and memory impact of leaving breadcrumbs.
+ [#853](https://github.com/bugsnag/bugsnag-cocoa/pull/853)
+ [#863](https://github.com/bugsnag/bugsnag-cocoa/pull/863)
+
+### Bug fixes
+
+* Fix for incorrect version info during edge case where version info is not
+ manually set, and app version is changed between crashing and reporting the error.
+ [#862](https://github.com/bugsnag/bugsnag-cocoa/pull/862)
+
+* Catch and report unexpected exceptions when (de)serializing JSON data rather
+ than crashing.
+ [#856](https://github.com/bugsnag/bugsnag-cocoa/pull/856)
+
## 6.2.2 (2020-10-21)
-## Enhancements
+### Enhancements
* Support "foreground" duration in MacOS as well.
- [848](https://github.com/bugsnag/bugsnag-cocoa/pull/848)
+ [#848](https://github.com/bugsnag/bugsnag-cocoa/pull/848)
* Timestamp accuracy in reports has been increased from seconds to milliseconds.
- [847](https://github.com/bugsnag/bugsnag-cocoa/pull/847)
+ [#847](https://github.com/bugsnag/bugsnag-cocoa/pull/847)
* Calculation of "foreground" duration now also includes time in
UIApplicationStateActive and UIApplicationStateInactive states in order to
match Apple's definition of "foreground".
- [839](https://github.com/bugsnag/bugsnag-cocoa/pull/839)
+ [#839](https://github.com/bugsnag/bugsnag-cocoa/pull/839)
## 6.2.1 (2020-10-15)
-## Bug fixes
+### Bug fixes
* Changed synchronization method when responding to dynamic library image events
to a dispatch queue, which is a more bulletproof and battle-hardened approach.
- [837](https://github.com/bugsnag/bugsnag-cocoa/pull/837)
+ [#837](https://github.com/bugsnag/bugsnag-cocoa/pull/837)
* Fixed a deadlock which can occur when calling `notify`
- [833](https://github.com/bugsnag/bugsnag-cocoa/pull/833)
+ [#833](https://github.com/bugsnag/bugsnag-cocoa/pull/833)
## 6.2.0 (2020-10-07)
@@ -34,70 +62,70 @@ Changelog
* An invalid or missing API key now causes an NSException to be thrown upon
calling [Bugsnag start]. This check used to occur during configuration,
and only for malformed API keys.
- [828](https://github.com/bugsnag/bugsnag-cocoa/pull/828)
+ [#828](https://github.com/bugsnag/bugsnag-cocoa/pull/828)
* Exception Mach code and subcode are now written to the crash report as
stringified hex values instead of integers to avoid potential data loss from
JSON readers that lose the lower bits from unsigned 64-bit numbers.
- [827](https://github.com/bugsnag/bugsnag-cocoa/pull/827)
+ [#827](https://github.com/bugsnag/bugsnag-cocoa/pull/827)
* Improved out-of-memory event detection by disabling reporting when a debugger
is attached. OOM reporting is now enabled by default in debug builds.
- [820](https://github.com/bugsnag/bugsnag-cocoa/pull/820)
+ [#820](https://github.com/bugsnag/bugsnag-cocoa/pull/820)
## 6.1.7 (2020-10-01)
-## Bug fixes
+### Bug fixes
* Re-enabled the `Require Only App-Extension-Safe API` build setting
- [823](https://github.com/bugsnag/bugsnag-cocoa/pull/823)
+ [#823](https://github.com/bugsnag/bugsnag-cocoa/pull/823)
* Fix reporting of events with more than one error
- [821](https://github.com/bugsnag/bugsnag-cocoa/pull/821)
+ [#821](https://github.com/bugsnag/bugsnag-cocoa/pull/821)
## 6.1.6 (2020-09-24)
### Bug fixes
* Fix crash-on-launch (attempt to insert into immutable dictionary).
- [819](https://github.com/bugsnag/bugsnag-cocoa/pull/819)
+ [#819](https://github.com/bugsnag/bugsnag-cocoa/pull/819)
## 6.1.5 (2020-09-23)
### Enhancements
* Add `+[Bugsnag breadcrumbs]` to allow apps to fetch the list of breadcrumbs.
- [813](https://github.com/bugsnag/bugsnag-cocoa/pull/813)
+ [#813](https://github.com/bugsnag/bugsnag-cocoa/pull/813)
* Disable JSON pretty-printing in KSCrash reports to save disk space and bandwidth.
- [802](https://github.com/bugsnag/bugsnag-cocoa/pull/802)
+ [#802](https://github.com/bugsnag/bugsnag-cocoa/pull/802)
### Bug fixes
* Fix reporting of Mach exception code and subcode.
- [806](https://github.com/bugsnag/bugsnag-cocoa/pull/806)
+ [#806](https://github.com/bugsnag/bugsnag-cocoa/pull/806)
* Create date formatters at init time to avoid potential race conditions.
- [807](https://github.com/bugsnag/bugsnag-cocoa/pull/807)
+ [#807](https://github.com/bugsnag/bugsnag-cocoa/pull/807)
* Refactor OOM handler to be less suceptible to data loss on crash.
- [804](https://github.com/bugsnag/bugsnag-cocoa/pull/804)
+ [#804](https://github.com/bugsnag/bugsnag-cocoa/pull/804)
## 6.1.4 (2020-09-11)
### Bug fixes
* Copy the metadata observer list rather than mutating it directly.
- [796](https://github.com/bugsnag/bugsnag-cocoa/pull/796)
+ [#796](https://github.com/bugsnag/bugsnag-cocoa/pull/796)
* Reorganized the project file
- [793](https://github.com/bugsnag/bugsnag-cocoa/pull/793)
+ [#793](https://github.com/bugsnag/bugsnag-cocoa/pull/793)
* Removed some magic values and used the const string references instead.
[#792](https://github.com/bugsnag/bugsnag-cocoa/pull/792)
* Added BSGJSONSerializer, which ensures no exceptions get thrown (NSErrors get returned instead)
- [791](https://github.com/bugsnag/bugsnag-cocoa/pull/791)
+ [#791](https://github.com/bugsnag/bugsnag-cocoa/pull/791)
* Guard against non-string metadata map keys
[#790](https://github.com/bugsnag/bugsnag-cocoa/pull/790)
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Framework/Info.plist b/packages/react-native/ios/vendor/bugsnag-cocoa/Framework/Info.plist
index a31377df8d..c5cd9bbd44 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/Framework/Info.plist
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Framework/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 6.2.1
+ 6.2.4
CFBundleVersion
1
diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION b/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION
index ca06394388..42cc526d6c 100644
--- a/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION
+++ b/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION
@@ -1 +1 @@
-6.2.2
+6.2.4
diff --git a/packages/react-native/update-android.sh b/packages/react-native/update-android.sh
index 6a2b18683e..9e430cfb41 100755
--- a/packages/react-native/update-android.sh
+++ b/packages/react-native/update-android.sh
@@ -25,3 +25,6 @@ cp -r $MAVEN_REPO_DIR $AAR_DST
echo "Recording version"
rm -rf ./android/.bugsnag-android-version
echo $(cd $ANDROID_REPO_DIR && git rev-parse HEAD) >> ./android/.bugsnag-android-version
+
+sed -i '' "s/api \"com.bugsnag:bugsnag-android:.*/api \"com.bugsnag:bugsnag-android:$AMENDED_VERSION\"/" android/build.gradle
+sed -i '' "s/api \"com.bugsnag:bugsnag-plugin-react-native:.*/api \"com.bugsnag:bugsnag-plugin-react-native:$AMENDED_VERSION\"/" android/build.gradle
diff --git a/test/react-native/features/fixtures/app/react_native_navigation_js/index.js b/test/react-native/features/fixtures/app/react_native_navigation_js/index.js
index 05752848e5..7d6babf070 100644
--- a/test/react-native/features/fixtures/app/react_native_navigation_js/index.js
+++ b/test/react-native/features/fixtures/app/react_native_navigation_js/index.js
@@ -23,7 +23,6 @@ export default class AppScreen extends Component {
sessionsEndpoint: 'http://bs-local.com:9339',
scenario: null
}
- console.log(`Available scenarios:\n ${Object.keys(Scenarios).join('\n ')}`)
}
getConfiguration = () => {
diff --git a/test/react-native/features/fixtures/app/react_navigation_js/app/App.js b/test/react-native/features/fixtures/app/react_navigation_js/app/App.js
index 665b450720..be9646fba7 100644
--- a/test/react-native/features/fixtures/app/react_navigation_js/app/App.js
+++ b/test/react-native/features/fixtures/app/react_navigation_js/app/App.js
@@ -27,7 +27,6 @@ export default class App extends Component {
sessionsEndpoint: 'http://bs-local.com:9339',
scenario: null
}
- console.log(`Available scenarios:\n ${Object.keys(Scenarios).join('\n ')}`)
}
getConfiguration = () => {
diff --git a/test/react-native/features/fixtures/app/scenario_js/app/App.js b/test/react-native/features/fixtures/app/scenario_js/app/App.js
index 18941dd04d..c79fd58736 100644
--- a/test/react-native/features/fixtures/app/scenario_js/app/App.js
+++ b/test/react-native/features/fixtures/app/scenario_js/app/App.js
@@ -20,7 +20,6 @@ export default class App extends Component {
notifyEndpoint: 'http://bs-local.com:9339',
sessionsEndpoint: 'http://bs-local.com:9339'
}
- console.log(`Available scenarios:\n ${Object.keys(Scenarios).join('\n ')}`)
}
getConfiguration = () => {
diff --git a/tsconfig.json b/tsconfig.json
index 59e9a072f2..cf9ec59ed9 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -74,6 +74,8 @@
"packages/plugin-browser-context",
"packages/plugin-browser-device",
"packages/plugin-contextualize",
+ "packages/plugin-expo-app",
+ "packages/expo-cli",
"packages/plugin-expo-device",
"packages/plugin-navigation-breadcrumbs",
"packages/plugin-network-breadcrumbs",