diff --git a/.buildkite/browser-pipeline.yml b/.buildkite/browser-pipeline.yml index db3e69a76e..56db99267e 100644 --- a/.buildkite/browser-pipeline.yml +++ b/.buildkite/browser-pipeline.yml @@ -174,19 +174,6 @@ steps: concurrency: 5 concurrency_group: 'browserstack' - - label: ':desktop_computer: Opera v12 Browser tests' - depends_on: "browser-maze-runner-image" - timeout_in_minutes: 10 - plugins: - docker-compose#v3.7.0: - run: browser-maze-runner - use-aliases: true - verbose: true - env: - BROWSER: "opera_12" - concurrency: 5 - concurrency_group: 'browserstack' - - label: ':iphone: iOS 10.3 Browser tests' depends_on: "browser-maze-runner-image" timeout_in_minutes: 20 diff --git a/.buildkite/expo-pipeline.yml b/.buildkite/expo-pipeline.yml index e819b7a4fb..8ca745ed71 100644 --- a/.buildkite/expo-pipeline.yml +++ b/.buildkite/expo-pipeline.yml @@ -137,8 +137,13 @@ steps: concurrency_group: 'browserstack-app' - block: "Trigger full test suite" + key: "trigger-full-suite" - label: ':runner: expo Android 8' + depends_on: + - "trigger-full-suite" + - "build-expo-apk" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: @@ -155,12 +160,18 @@ steps: - --access-key=$BROWSER_STACK_ACCESS_KEY - --fail-fast - --retry=2 + - --appium-version=1.18.0 + - --capabilities={"appWaitForLaunch":"false"} concurrency: 9 concurrency_group: 'browserstack-app' soft_fail: - exit_status: "*" - label: ':runner: expo Android 7' + depends_on: + - "trigger-full-suite" + - "build-expo-apk" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: @@ -181,6 +192,10 @@ steps: concurrency_group: 'browserstack-app' - label: ':runner: expo Android 6' + depends_on: + - "trigger-full-suite" + - "build-expo-apk" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: @@ -201,6 +216,10 @@ steps: concurrency_group: 'browserstack-app' - label: ':runner: expo Android 5' + depends_on: + - "trigger-full-suite" + - "build-expo-apk" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: @@ -221,6 +240,10 @@ steps: concurrency_group: 'browserstack-app' - label: ':runner: expo iOS 11' + depends_on: + - "trigger-full-suite" + - "build-expo-ipa" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: @@ -243,6 +266,10 @@ steps: concurrency_group: 'browserstack-app' - label: ':runner: expo iOS 10' + depends_on: + - "trigger-full-suite" + - "build-expo-ipa" + - "expo-maze-runner-image" timeout_in_minutes: 50 plugins: artifacts#v1.2.0: diff --git a/.github/workflows/pr-size.yml b/.github/workflows/pr-size.yml new file mode 100644 index 0000000000..e3a876492a --- /dev/null +++ b/.github/workflows/pr-size.yml @@ -0,0 +1,45 @@ +name: "PR size bot" +on: [pull_request] + +jobs: + build: + name: PR size bot + runs-on: ubuntu-latest + steps: + - name: Setup node + uses: actions/setup-node@v1 + with: + node-version: 14.x + + - name: Checkout PR branch + uses: actions/checkout@v1 + + - name: Install dependencies + run: npm ci + + - name: Record PR size + run: | + mkdir .size + npx lerna bootstrap --ignore @bugsnag/expo --ignore @bugsnag/react-native + npx lerna run build --scope @bugsnag/browser + cat packages/browser/dist/bugsnag.min.js | wc -c > .size/after-minified + cat packages/browser/dist/bugsnag.min.js | gzip | wc -c > .size/after-gzipped + + - name: Checkout base branch + uses: actions/checkout@v1 + with: + ref: ${{ github.base_ref }} + clean: false + + - name: Record target branch size + run: | + npm ci + npx lerna bootstrap --ignore @bugsnag/expo --ignore @bugsnag/react-native + npx lerna run build --scope @bugsnag/browser + cat packages/browser/dist/bugsnag.min.js | wc -c > .size/before-minified + cat packages/browser/dist/bugsnag.min.js | gzip | wc -c > .size/before-gzipped + + - name: Run danger + uses: danger/danger-js@9.1.6 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9f4b44ac2c..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: node_js -node_js: - - "12" -before_script: - - mkdir .size - - npx lerna bootstrap --ignore @bugsnag/expo --concurrency 1 - - npx lerna run build --scope @bugsnag/browser - - cat packages/browser/dist/bugsnag.min.js | wc -c > .size/after-minified - - cat packages/browser/dist/bugsnag.min.js | gzip | wc -c > .size/after-gzipped - - git reset --hard HEAD - - git remote set-branches origin $TRAVIS_BRANCH - - git fetch - - git checkout $TRAVIS_BRANCH - - npm ci - - npx lerna bootstrap --ignore @bugsnag/expo - - npx lerna run build --scope @bugsnag/browser - - cat packages/browser/dist/bugsnag.min.js | wc -c > .size/before-minified - - cat packages/browser/dist/bugsnag.min.js | gzip | wc -c > .size/before-gzipped - - git reset --hard HEAD - - git checkout - -script: - - npx danger ci diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ec7b9172b..26c87187b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## v7.5.6 (2021-01-11) + +### Changed + +- (expo): Add support for Expo SDK v40 [#1219](https://github.com/bugsnag/bugsnag-js/pull/1219) +- (react-native): Update bugsnag-cocoa to v6.5.0 + - Add `errorClass` configuration option. [bugsnag-cocoa#938](https://github.com/bugsnag/bugsnag-cocoa/pull/938) + - Add `maxPersistedEvents` configuration option. [bugsnag-cocoa#936](https://github.com/bugsnag/bugsnag-cocoa/pull/936) + - Add `maxPersistedSessions` configuration option. [bugsnag-cocoa#943](https://github.com/bugsnag/bugsnag-cocoa/pull/943) + - Add `[Bugsnag]` prefix to log messages. [bugsnag-cocoa#955](https://github.com/bugsnag/bugsnag-cocoa/pull/955) + - Fix reliability of Swift fatal error message reporting. [bugsnag-cocoa#948](https://github.com/bugsnag/bugsnag-cocoa/pull/948) +- (react-native): Update bugsnag-android to v5.5.0 + + This release supports initializing Bugsnag in multi processes apps. If your app uses Bugsnag in multiple processes, you should initialize Bugsnag + with a unique `persistenceDirectory` value for each process. Please see [the docs](https://docs.bugsnag.com/platforms/android/faq/#does-bugsnag-support-multi-process-apps) for further information. + - Store user information in persistenceDirectory [bugsnag-android#1017](https://github.com/bugsnag/bugsnag-android/pull/1017) + - Use consistent device ID for multi process apps [bugsnag-android#1013](https://github.com/bugsnag/bugsnag-android/pull/1013) + - Create synchronized store for user information [bugsnag-android#1010](https://github.com/bugsnag/bugsnag-android/pull/1010) + - Add persistenceDirectory config option for controlling event/session storage [bugsnag-android#998](https://github.com/bugsnag/bugsnag-android/pull/998) + - Add configuration option to control maximum number of persisted events/sessions [bugsnag-android#980](https://github.com/bugsnag/bugsnag-android/pull/980) + - Increase kotlin dependency version to 1.3.72 [bugsnag-android#1050](https://github.com/bugsnag/bugsnag-android/pull/1050) + + ## v7.5.5 (2020-12-14) ### Changed diff --git a/Gemfile b/Gemfile index 939d3ce592..2b6d0799c5 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' # A reference to Maze Runner is only needed for running tests locally and if committed it must be # portable for CI, e.g. a specific release. However, leaving it commented out would mean quicker CI. -gem 'bugsnag-maze-runner', git: 'https://github.com/bugsnag/maze-runner', tag: 'v3.5.0' +gem 'bugsnag-maze-runner', git: 'https://github.com/bugsnag/maze-runner', tag: 'v3.7.0' # Locally, you can run against Maze Runner branches and uncommitted changes: # gem 'bugsnag-maze-runner', path: '../maze-runner' diff --git a/Gemfile.lock b/Gemfile.lock index 750d9411bc..978e6d23e5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ GIT remote: https://github.com/bugsnag/maze-runner - revision: 1f471086782f0bc5d306b1ca87d81965d54518b8 - tag: v3.5.0 + revision: dfe41e657bbf40ad85661b193555bc59773302ba + tag: v3.7.0 specs: - bugsnag-maze-runner (3.5.0) + bugsnag-maze-runner (3.7.0) appium_lib (~> 10.2) cucumber (~> 3.1.2) cucumber-expressions (~> 6.0.0) @@ -23,10 +23,10 @@ GEM appium_lib_core (~> 3.3) nokogiri (~> 1.8, >= 1.8.1) tomlrb (~> 1.1) - appium_lib_core (3.11.0) + appium_lib_core (3.11.1) faye-websocket (~> 0.11.0) selenium-webdriver (~> 3.14, >= 3.14.1) - backports (3.18.2) + backports (3.20.1) builder (3.2.4) childprocess (3.0.0) cucumber (3.1.2) @@ -52,21 +52,23 @@ GEM eventmachine (>= 0.12.0) websocket-driver (>= 0.5.1) gherkin (5.1.0) - mini_portile2 (2.4.0) + mini_portile2 (2.5.0) minitest (5.14.2) multi_json (1.15.0) multi_test (0.1.2) - nokogiri (1.10.10) - mini_portile2 (~> 2.4.0) + nokogiri (1.11.0) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) optimist (3.0.1) os (1.0.1) power_assert (1.2.0) + racc (1.5.2) rake (12.3.3) rubyzip (2.3.0) selenium-webdriver (3.142.7) childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) - test-unit (3.3.6) + test-unit (3.3.9) power_assert tomlrb (1.3.0) websocket-driver (0.7.3) diff --git a/README.md b/README.md index 53a0ec724a..6ff76fac5d 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,12 @@ npm run build # Run the unit tests npm run test:unit +# Run tests for a specific package +npm run test:unit -- --testPathPattern="packages/react-native" + +# Generate a code coverage report +npm run test:unit -- --coverage + # Run the linter npm run test:lint @@ -90,4 +96,4 @@ See [contributing](CONTRIBUTING.md) for more information. ## License -All packages in this repository are released under the MIT License. See [LICENSE.txt](./LICENSE.txt) for details. \ No newline at end of file +All packages in this repository are released under the MIT License. See [LICENSE.txt](./LICENSE.txt) for details. diff --git a/dockerfiles/Dockerfile.node b/dockerfiles/Dockerfile.node index 40f7b4788b..9d3da21382 100644 --- a/dockerfiles/Dockerfile.node +++ b/dockerfiles/Dockerfile.node @@ -21,7 +21,7 @@ RUN npm pack --verbose packages/plugin-koa/ RUN npm pack --verbose packages/plugin-restify/ # The maze-runner node tests -FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:v3.5.1-cli as node-maze-runner +FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:latest-v3-cli as node-maze-runner WORKDIR /app/ COPY packages/node/ . COPY test/node test/node diff --git a/jest.config.js b/jest.config.js index 484046af89..9ebd80cf15 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,99 +1,101 @@ const testsForPackage = (packageName) => `/packages/${packageName}/**/*.test.[jt]s?(x)` +const project = (displayName, packageNames, config = {}) => ({ + roots: ['/packages'], + displayName, + testMatch: packageNames.map(testsForPackage), + ...config +}) + +const extensions = 'js,jsx,ts,tsx' + module.exports = { + collectCoverageFrom: [ + `**/packages/*/**/*.{${extensions}}`, + `!**/*.test.{${extensions}}`, + '!**/*.d.ts', + '!**/dist/**', + '!**/packages/js/**', + '!/packages/plugin-angular/**/*', + '!/packages/expo-cli/lib/test/fixtures/**/*', + '!/packages/expo-cli/lib/test/lib/**/*', + '!/packages/react-native/src/test/setup.js', + '!/packages/plugin-node-surrounding-code/test/fixtures/**/*' + ], projects: [ - { - displayName: 'core', - testMatch: [ - testsForPackage('core') - ] - }, - { - displayName: 'shared plugins', - testMatch: [ - testsForPackage('plugin-app-duration') - ] - }, - { - displayName: 'browser', - testMatch: [ - testsForPackage('browser'), - testsForPackage('delivery-x-domain-request'), - testsForPackage('delivery-xml-http-request'), - testsForPackage('plugin-react'), - testsForPackage('plugin-vue'), - testsForPackage('plugin-browser-context'), - testsForPackage('plugin-browser-device'), - testsForPackage('plugin-browser-request'), - testsForPackage('plugin-client-ip'), - testsForPackage('plugin-navigation-breadcrumbs'), - testsForPackage('plugin-network-breadcrumbs'), - testsForPackage('plugin-window-unhandled-rejection'), - testsForPackage('plugin-window-onerror'), - testsForPackage('plugin-strip-query-string'), - testsForPackage('plugin-interaction-breadcrumbs'), - testsForPackage('plugin-simple-throttle'), - testsForPackage('plugin-console-breadcrumbs'), - testsForPackage('plugin-browser-session') - ] - }, - { - displayName: 'react native', + project('core', ['core']), + project('shared plugins', ['plugin-app-duration']), + project('browser', [ + 'browser', + 'delivery-x-domain-request', + 'delivery-xml-http-request', + 'plugin-react', + 'plugin-vue', + 'plugin-browser-context', + 'plugin-browser-device', + 'plugin-browser-request', + 'plugin-client-ip', + 'plugin-navigation-breadcrumbs', + 'plugin-network-breadcrumbs', + 'plugin-window-unhandled-rejection', + 'plugin-window-onerror', + 'plugin-strip-query-string', + 'plugin-interaction-breadcrumbs', + 'plugin-inline-script-content', + 'plugin-simple-throttle', + 'plugin-console-breadcrumbs', + 'plugin-browser-session' + ]), + project('react native', [ + 'react-native', + 'delivery-react-native', + 'plugin-react-native-app-state-breadcrumbs', + 'plugin-react-native-connectivity-breadcrumbs', + 'plugin-react-native-orientation-breadcrumbs', + 'plugin-react-native-unhandled-rejection', + 'plugin-react-native-hermes', + 'plugin-react-native-client-sync', + 'plugin-react-native-event-sync', + 'plugin-react-native-global-error-handler', + 'plugin-react-native-session', + 'plugin-react-navigation', + 'plugin-react-native-navigation' + ], { preset: 'react-native', - testMatch: [ - testsForPackage('react-native'), - testsForPackage('delivery-react-native'), - testsForPackage('plugin-react-native-app-state-breadcrumbs'), - testsForPackage('plugin-react-native-connectivity-breadcrumbs'), - testsForPackage('plugin-react-native-orientation-breadcrumbs'), - testsForPackage('plugin-react-native-unhandled-rejection'), - testsForPackage('plugin-react-native-hermes'), - testsForPackage('plugin-react-native-client-sync'), - testsForPackage('plugin-react-native-event-sync'), - testsForPackage('plugin-react-native-global-error-handler'), - testsForPackage('plugin-react-native-session'), - testsForPackage('plugin-react-navigation'), - testsForPackage('plugin-react-native-navigation') - ], setupFiles: [ '/packages/react-native/src/test/setup.js' ] - }, - { - displayName: 'expo', - testMatch: [ - testsForPackage('delivery-expo'), - testsForPackage('expo'), - testsForPackage('expo-cli'), - testsForPackage('plugin-expo-app'), - testsForPackage('plugin-expo-device') - ] - }, - { - displayName: 'node plugins', - testEnvironment: 'node', - testMatch: [ - testsForPackage('delivery-node'), - testsForPackage('plugin-express'), - testsForPackage('plugin-koa'), - testsForPackage('plugin-restify'), - testsForPackage('plugin-contextualize'), - testsForPackage('plugin-server-*'), - testsForPackage('plugin-strip-project-root'), - testsForPackage('plugin-intercept'), - testsForPackage('plugin-node-unhandled-rejection'), - testsForPackage('plugin-node-in-project'), - testsForPackage('plugin-node-device'), - testsForPackage('plugin-node-surrounding-code'), - testsForPackage('plugin-node-uncaught-exception') - ] - }, - { - displayName: 'node integration tests', + }), + project('expo', [ + 'delivery-expo', + 'expo', + 'expo-cli', + 'plugin-expo-app', + 'plugin-expo-device' + ]), + project('node plugins', [ + 'delivery-node', + 'plugin-express', + 'plugin-koa', + 'plugin-restify', + 'plugin-contextualize', + 'plugin-server-*', + 'plugin-strip-project-root', + 'plugin-intercept', + 'plugin-node-unhandled-rejection', + 'plugin-node-in-project', + 'plugin-node-device', + 'plugin-node-surrounding-code', + 'plugin-node-uncaught-exception' + ], { + testEnvironment: 'node' + }), + project('node integration tests', [ + ], { testEnvironment: 'node', testMatch: [ '/packages/node/test/integration/**/*.test.[jt]s' ] - } + }) ] } diff --git a/package.json b/package.json index 02871cea86..5266d67216 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "cdn-upload": "lerna run cdn-upload --stream", "build": "lerna run build --scope '@bugsnag/node' --scope '@bugsnag/browser' --scope '@bugsnag/expo' && lerna run build --ignore '@bugsnag/node' --ignore '@bugsnag/browser' --ignore '@bugsnag/expo'", "test:lint": "eslint --ext .ts,.js --report-unused-disable-directives --max-warnings=0 .", - "test:unit": "jest && lerna run test --ignore '@bugsnag/browser' --ignore '@bugsnag/node'", + "test:unit": "jest", "test:types": "tsc -p tsconfig.json && lerna run test:types", "test:test-container-registry-login": "aws ecr get-login-password --profile=opensource | docker login --username AWS --password-stdin 855461928731.dkr.ecr.us-west-1.amazonaws.com", "test:build-browser-container": "docker-compose up --build minimal-packager && docker-compose build --pull browser-maze-runner", diff --git a/packages/browser/src/notifier.d.ts b/packages/browser/src/notifier.d.ts new file mode 100644 index 0000000000..844bfb518c --- /dev/null +++ b/packages/browser/src/notifier.d.ts @@ -0,0 +1,2 @@ +export { default } from '../types/bugsnag' +export * from '../types/bugsnag' diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index bc2d7c1fe9..a7caf5aa26 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -1,5 +1,4 @@ -import BugsnagBrowserStatic from '..' -import { Breadcrumb, Session } from '../types/bugsnag' +import BugsnagBrowserStatic, { Breadcrumb, Session } from '../src/notifier' const DONE = window.XMLHttpRequest.DONE @@ -29,13 +28,18 @@ function mockFetch () { } describe('browser notifier', () => { + beforeAll(() => { + jest.spyOn(console, 'debug').mockImplementation(() => {}) + jest.spyOn(console, 'warn').mockImplementation(() => {}) + }) + beforeEach(() => { jest.resetModules() mockFetch() }) function getBugsnag (): typeof BugsnagBrowserStatic { - const Bugsnag = require('..') as typeof BugsnagBrowserStatic + const Bugsnag = require('../src/notifier') as typeof BugsnagBrowserStatic return Bugsnag } diff --git a/packages/delivery-expo/package-lock.json b/packages/delivery-expo/package-lock.json index 86b688e491..f27fbc289d 100644 --- a/packages/delivery-expo/package-lock.json +++ b/packages/delivery-expo/package-lock.json @@ -5,19 +5,19 @@ "requires": true, "dependencies": { "@react-native-community/netinfo": { - "version": "5.9.6", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-5.9.6.tgz", - "integrity": "sha512-cEkA1Apg8+VjnDdeDZRHI+2RqouiPKgYnewouRkvF4ettH9ZS4Cmi/nANQKIpIu2L+czboxM3fCZ44nc7IM9VQ==" + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-5.9.7.tgz", + "integrity": "sha512-NAkkT68oF+M9o6El2xeUqZK7magPjG/tAcEbvCbqyhlh3yElKWnI1e1vpbVvFXzTefy67FwYFWOJqBN6U7Mnkg==" }, "expo-crypto": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-8.3.0.tgz", - "integrity": "sha512-PbfxihKJsAkAy5M6jfv5Eiv9pRHU1BjBa7jLcwKDH6aUiWiJNjUvfdwku/Odt/lpXDuNcyDASy4WrD/PZDHtLA==" + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-8.4.0.tgz", + "integrity": "sha512-EHEFx5sHTDVIuQH8/juuecQWj1uQ7ClM98fKXPFcNYcBlYSCQvkik37hwfJC5WLcVnelFDpvZJmHxiTfB5GKCg==" }, "expo-file-system": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-9.2.0.tgz", - "integrity": "sha512-GsDf+E6e1WyYqyUiXbcWthLk7oVO+WDticnHUGAzb17hVCgxJhlUbRriwY3kBkQAX1mr+Hq9lkgJPIRbV197Fw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-9.3.0.tgz", + "integrity": "sha512-x83IVep6PVfzGLpzR5fhWgKGlDaF95vfRzvmLyOMnbSuM8gY9a8C92taxZxfitryy9+D46lbRcnxPvBqFkXMNg==", "requires": { "uuid": "^3.4.0" } diff --git a/packages/delivery-expo/package.json b/packages/delivery-expo/package.json index 32209db982..4302a53bf9 100644 --- a/packages/delivery-expo/package.json +++ b/packages/delivery-expo/package.json @@ -17,9 +17,9 @@ "author": "Bugsnag", "license": "MIT", "dependencies": { - "@react-native-community/netinfo": "5.9.6", - "expo-crypto": "~8.3.0", - "expo-file-system": "~9.2" + "@react-native-community/netinfo": "5.9.7", + "expo-crypto": "~8.4.0", + "expo-file-system": "~9.3.0" }, "devDependencies": { "@bugsnag/core": "^7.5.4" diff --git a/packages/delivery-expo/test/delivery.test.ts b/packages/delivery-expo/test/delivery.test.ts index 81bb7cd1cf..047af51f40 100644 --- a/packages/delivery-expo/test/delivery.test.ts +++ b/packages/delivery-expo/test/delivery.test.ts @@ -241,6 +241,8 @@ describe('delivery: expo', () => { expect(err).toBeTruthy() expect((err as any).code).toBe('ECONNRESET') expect(enqueueSpy).toHaveBeenCalled() + + server.close() done() }) }) @@ -268,6 +270,8 @@ describe('delivery: expo', () => { expect(didLog).toBe(true) expect(err).toBeTruthy() expect(enqueueSpy).toHaveBeenCalled() + + server.close() done() }) }) diff --git a/packages/delivery-node/test/delivery.test.ts b/packages/delivery-node/test/delivery.test.ts index 0500991211..fca1339222 100644 --- a/packages/delivery-node/test/delivery.test.ts +++ b/packages/delivery-node/test/delivery.test.ts @@ -125,6 +125,8 @@ describe('delivery:node', () => { expect(didLog).toBe(true) expect(err).toBeTruthy() expect(err.code).toBe('ECONNRESET') + + server.close() done() }) }) @@ -149,6 +151,8 @@ describe('delivery:node', () => { delivery({ _config: config, _logger: { error: log } } as unknown as Client).sendEvent(payload, (err) => { expect(didLog).toBe(true) expect(err).toBeTruthy() + + server.close() done() }) }) diff --git a/packages/expo-cli/commands/install.js b/packages/expo-cli/commands/install.js index 6c979eefe2..f09e8e93ab 100644 --- a/packages/expo-cli/commands/install.js +++ b/packages/expo-cli/commands/install.js @@ -59,6 +59,7 @@ const selectVersion = async (dir) => { const isPre37 = (expoVersion && !semver.gte(semver.minVersion(expoVersion), '37.0.0')) const isPre38 = (expoVersion && !semver.gte(semver.minVersion(expoVersion), '38.0.0')) const isPre39 = (expoVersion && !semver.gte(semver.minVersion(expoVersion), '39.0.0')) + const isPre40 = (expoVersion && !semver.gte(semver.minVersion(expoVersion), '40.0.0')) if (isPre33) { throw new Error('Expo SDK <33 is no longer supported') @@ -74,6 +75,9 @@ const selectVersion = async (dir) => { } else if (isPre39) { message = 'It looks like you’re using a version of Expo SDK <39. The last version of Bugsnag that supported your version of Expo is v7.3.5' defaultVersion = '7.3.5' + } else if (isPre40) { + message = 'It looks like you’re using a version of Expo SDK <40. The last version of Bugsnag that supported your version of Expo is v7.5.5' + defaultVersion = '7.5.5' } const { version } = await prompts({ diff --git a/packages/expo/CONTRIBUTING.md b/packages/expo/CONTRIBUTING.md index a082b93364..804f1ba84d 100644 --- a/packages/expo/CONTRIBUTING.md +++ b/packages/expo/CONTRIBUTING.md @@ -8,11 +8,11 @@ When a new version of the Expo SDK is released, the dependencies we use must be The following modules are currently used: +- `@react-native-community/netinfo` (`@bugsnag/delivery-expo`) - `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`) - `expo-crypto` (`@bugsnag/expo`, `@bugsnag/delivery-expo`) +- `expo-device` (`@bugsnag/plugin-expo-device`) +- `expo-file-system` (`@bugsnag/delivery-expo`) If you add a new dependency please add it to this list. @@ -20,10 +20,8 @@ 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). + +This should also be added to [the manual setup docs](https://docs.bugsnag.com/platforms/react-native/expo/manual-setup/#installation). diff --git a/packages/expo/package-lock.json b/packages/expo/package-lock.json index 5d4d6833dd..7f026cd883 100644 --- a/packages/expo/package-lock.json +++ b/packages/expo/package-lock.json @@ -12,11 +12,258 @@ "@babel/highlight": "^7.10.4" } }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "requires": { + "@babel/types": "^7.12.11" + } + }, "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", @@ -34,6 +281,672 @@ } } }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz", + "integrity": "sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz", + "integrity": "sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", + "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", + "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + } + } + }, "@bugsnag/source-maps": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-1.0.1.tgz", @@ -71,6 +984,109 @@ } } }, + "@expo/babel-preset-cli": { + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@expo/babel-preset-cli/-/babel-preset-cli-0.2.18.tgz", + "integrity": "sha512-y2IZFynVtRxMQ4uxXYUnrnXZa+pvSH1R1aSUAfC6RsUb2UNOxC6zRehdLGSOyF4s9Wy+j3/CPm6fC0T5UJYoQg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", + "@babel/plugin-proposal-optional-chaining": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/preset-env": "^7.4.4", + "@babel/preset-typescript": "^7.3.3" + } + }, + "@expo/config": { + "version": "3.3.22", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-3.3.22.tgz", + "integrity": "sha512-BzahndK+Uxsvzui1+9QiJXptjVPgbSCQ3saNVF4N3Wrxjyr0WXHNp3Gz3VAGkoHhoBlxZheslmiNoMwjG25xjw==", + "requires": { + "@babel/core": "7.9.0", + "@expo/babel-preset-cli": "0.2.18", + "@expo/config-types": "^40.0.0-beta.2", + "@expo/json-file": "8.2.25", + "find-up": "^5.0.0", + "fs-extra": "9.0.0", + "getenv": "0.7.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.1.3", + "slugify": "^1.3.4" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "40.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-40.0.0-beta.2.tgz", + "integrity": "sha512-t9pHCQMXOP4nwd7LGXuHkLlFy0JdfknRSCAeVF4Kw2/y+5OBbR9hW9ZVnetpBf0kORrekgiI7K/qDaa3hh5+Qg==" + }, + "@expo/json-file": { + "version": "8.2.25", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.25.tgz", + "integrity": "sha512-KFX6grWVzttaDskq/NK8ByqFPgpDZGFnyeZVeecGoKx5kU61zuR7/xQM04OvN6BNXq3jTUst1TyS8fXEfJuscA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "fs-extra": "9.0.0", + "json5": "^1.0.1", + "lodash": "^4.17.15", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -109,6 +1125,19 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -123,6 +1152,18 @@ "concat-map": "0.0.1" } }, + "browserslist": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", + "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "requires": { + "caniuse-lite": "^1.0.30001165", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.621", + "escalade": "^3.1.1", + "node-releases": "^1.1.67" + } + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -274,6 +1315,20 @@ } } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001170", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz", + "integrity": "sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -297,6 +1352,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -360,10 +1420,34 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.0.tgz", "integrity": "sha512-vlcSGgdYS26mPf7qNi+dCisbhiyDnrN1zaRbw3CSuc2wGOMEGGPsp46PdRG5gqXwgtJfjxDkxRNAgRPr1B77vQ==" }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, "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==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", + "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "requires": { + "browserslist": "^4.15.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } }, "core-util-is": { "version": "1.0.2", @@ -378,6 +1462,14 @@ "array-find-index": "^1.0.1" } }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -397,11 +1489,24 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "electron-to-chromium": { + "version": "1.3.631", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.631.tgz", + "integrity": "sha512-mPEG/52142po0XK1jQkZtbMmp38MZtQ3JDFItYxV65WXyhxDYEQ54tP4rb93m0RbMlZqQ+4zBw2N7UumSgGfbA==" + }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -426,16 +1531,27 @@ "is-arrayish": "^0.2.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "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=" }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, "expo-constants": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.2.0.tgz", - "integrity": "sha512-WKwiEMvBgPrEPEyZKm21UUB2KWQux9OCWf6ZDORLTln7kO3rsbaJEprfWUWTP7AxyaLMYfN+/0WFHjZc25SZWQ==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.3.5.tgz", + "integrity": "sha512-qIlv2ffSjQl3wrvJwXYoNfQNfH/sK46EXcgyEQnQ1SAQO4ukwTEpG9j3fdW6aTiVEVrv/DsA1IaVRqKrUwSd3A==", "requires": { + "@expo/config": "^3.3.18", "fbjs": "1.0.0", "uuid": "^3.3.2" } @@ -538,11 +1654,54 @@ "mime-types": "^2.1.12" } }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "getenv": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-0.7.0.tgz", + "integrity": "sha1-ObkYOHB+IIb9HPbvh3fRyT4UZJ4=" + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -556,16 +1715,34 @@ "path-is-absolute": "^1.0.0" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -579,6 +1756,11 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -623,9 +1805,14 @@ } }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -637,6 +1824,30 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -658,6 +1869,11 @@ } } }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -680,6 +1896,14 @@ "signal-exit": "^3.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -706,6 +1930,11 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, "minimist-options": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", @@ -715,6 +1944,11 @@ "is-plain-obj": "^1.1.0" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -724,6 +1958,11 @@ "is-stream": "^1.0.1" } }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==" + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -740,6 +1979,22 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -897,6 +2152,70 @@ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", @@ -905,6 +2224,11 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -935,6 +2259,16 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "slugify": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.6.tgz", + "integrity": "sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -1019,6 +2353,11 @@ "xtend": "~4.0.1" } }, + "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=" + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -1035,9 +2374,38 @@ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, "util-deprecate": { "version": "1.0.2", @@ -1045,9 +2413,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -1059,9 +2427,9 @@ } }, "whatwg-fetch": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", - "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" }, "wordwrapjs": { "version": "4.0.0", @@ -1084,10 +2452,30 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/packages/expo/package.json b/packages/expo/package.json index d46372c8cd..40ae36c49e 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -47,7 +47,7 @@ "@bugsnag/plugin-react-native-unhandled-rejection": "^7.5.4", "@bugsnag/source-maps": "^1.0.1", "bugsnag-build-reporter": "^1.0.1", - "expo-constants": "~9.2" + "expo-constants": "~9.3.3" }, "peerDependencies": { "expo": ">=33.0.0", diff --git a/packages/expo/test/index.test.ts b/packages/expo/test/index.test.ts index 8b39610b63..d65107869a 100644 --- a/packages/expo/test/index.test.ts +++ b/packages/expo/test/index.test.ts @@ -105,6 +105,10 @@ describe('expo notifier', () => { let Bugsnag: typeof BugsnagExpoStatic let _delivery + beforeAll(() => { + jest.spyOn(console, 'debug').mockImplementation(() => {}) + }) + beforeEach(() => { (delivery as jest.MockedFunction).mockImplementation(() => { _delivery = { diff --git a/packages/node/__mocks__/https.js b/packages/node/__mocks__/https.js deleted file mode 100644 index f51e4ba217..0000000000 --- a/packages/node/__mocks__/https.js +++ /dev/null @@ -1,22 +0,0 @@ -/* global jest */ - -const { Readable, Writable } = require('stream') -const https = jest.genMockFromModule('https') - -const requests = [] - -https.request = (opts) => { - const req = new Writable({ - write: body => { - requests.push({ opts, body: JSON.parse(body) }) - } - }) - process.nextTick(() => { - req.emit('response', new Readable({ read: function () { this.push(null) } })) - }) - return req -} - -module.exports = https -module.exports._requests = requests -module.exports._clear = () => { while (requests.length) requests.pop() } diff --git a/packages/node/src/notifier.d.ts b/packages/node/src/notifier.d.ts new file mode 100644 index 0000000000..844bfb518c --- /dev/null +++ b/packages/node/src/notifier.d.ts @@ -0,0 +1,2 @@ +export { default } from '../types/bugsnag' +export * from '../types/bugsnag' diff --git a/packages/node/test/integration/handled-unhandled.test.ts b/packages/node/test/integration/handled-unhandled.test.ts index bb59d95d79..db45be973a 100644 --- a/packages/node/test/integration/handled-unhandled.test.ts +++ b/packages/node/test/integration/handled-unhandled.test.ts @@ -1,4 +1,4 @@ -import Bugsnag from '../..' +import Bugsnag from '../../src/notifier' import https from 'https' // extend the https module type with the utilities added in mocks @@ -34,6 +34,9 @@ jest.mock('https', () => { // we can only start bugsnag once per file, because it installs global handlers // and doesn't have a way to uninstall itself beforeAll(() => { + jest.spyOn(console, 'debug').mockImplementation(() => {}) + jest.spyOn(console, 'error').mockImplementation(() => {}) + Bugsnag.start({ apiKey: 'aaaabbbbccccdddd0000111122223333', // ordinarily after catching an uncaught exception we shut down the process, diff --git a/packages/plugin-angular/package.json b/packages/plugin-angular/package.json index f8d95fbc75..b7925a586c 100644 --- a/packages/plugin-angular/package.json +++ b/packages/plugin-angular/package.json @@ -25,7 +25,7 @@ "build": "npm run clean && npm run build:esm2015 && npm run build:esm5", "build:esm2015": "ngc -p tsconfig.json", "build:esm5": "ngc -p tsconfig.esm5.json", - "test": "npm run build", + "test:types": "npm run build", "postversion": "npm run build" }, "author": "Bugsnag", diff --git a/packages/plugin-console-breadcrumbs/test/console-breadcrumbs.test.ts b/packages/plugin-console-breadcrumbs/test/console-breadcrumbs.test.ts index 48662246fe..4a5f975d4c 100644 --- a/packages/plugin-console-breadcrumbs/test/console-breadcrumbs.test.ts +++ b/packages/plugin-console-breadcrumbs/test/console-breadcrumbs.test.ts @@ -3,6 +3,10 @@ import plugin from '../' import Client from '@bugsnag/core/client' describe('plugin: console breadcrumbs', () => { + beforeAll(() => { + jest.spyOn(console, 'log').mockImplementation(() => {}) + }) + it('should leave a breadcrumb when console.log() is called', () => { const c = new Client({ apiKey: 'aaaa-aaaa-aaaa-aaaa', plugins: [plugin] }) console.log('check 1, 2') diff --git a/packages/plugin-expo-app/package-lock.json b/packages/plugin-expo-app/package-lock.json index c4760f7539..6c1266c7de 100644 --- a/packages/plugin-expo-app/package-lock.json +++ b/packages/plugin-expo-app/package-lock.json @@ -4,15 +4,1172 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "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==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz", + "integrity": "sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "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==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz", + "integrity": "sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", + "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", + "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@expo/babel-preset-cli": { + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@expo/babel-preset-cli/-/babel-preset-cli-0.2.18.tgz", + "integrity": "sha512-y2IZFynVtRxMQ4uxXYUnrnXZa+pvSH1R1aSUAfC6RsUb2UNOxC6zRehdLGSOyF4s9Wy+j3/CPm6fC0T5UJYoQg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", + "@babel/plugin-proposal-optional-chaining": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/preset-env": "^7.4.4", + "@babel/preset-typescript": "^7.3.3" + } + }, + "@expo/config": { + "version": "3.3.22", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-3.3.22.tgz", + "integrity": "sha512-BzahndK+Uxsvzui1+9QiJXptjVPgbSCQ3saNVF4N3Wrxjyr0WXHNp3Gz3VAGkoHhoBlxZheslmiNoMwjG25xjw==", + "requires": { + "@babel/core": "7.9.0", + "@expo/babel-preset-cli": "0.2.18", + "@expo/config-types": "^40.0.0-beta.2", + "@expo/json-file": "8.2.25", + "find-up": "^5.0.0", + "fs-extra": "9.0.0", + "getenv": "0.7.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.1.3", + "slugify": "^1.3.4" + } + }, + "@expo/config-types": { + "version": "40.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-40.0.0-beta.2.tgz", + "integrity": "sha512-t9pHCQMXOP4nwd7LGXuHkLlFy0JdfknRSCAeVF4Kw2/y+5OBbR9hW9ZVnetpBf0kORrekgiI7K/qDaa3hh5+Qg==" + }, + "@expo/json-file": { + "version": "8.2.25", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.25.tgz", + "integrity": "sha512-KFX6grWVzttaDskq/NK8ByqFPgpDZGFnyeZVeecGoKx5kU61zuR7/xQM04OvN6BNXq3jTUst1TyS8fXEfJuscA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "fs-extra": "9.0.0", + "json5": "^1.0.1", + "lodash": "^4.17.15", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.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==", + "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=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", + "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "requires": { + "caniuse-lite": "^1.0.30001165", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.621", + "escalade": "^3.1.1", + "node-releases": "^1.1.67" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001170", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz", + "integrity": "sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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==", + "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=" + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, "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==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", + "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "requires": { + "browserslist": "^4.15.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "electron-to-chromium": { + "version": "1.3.631", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.631.tgz", + "integrity": "sha512-mPEG/52142po0XK1jQkZtbMmp38MZtQ3JDFItYxV65WXyhxDYEQ54tP4rb93m0RbMlZqQ+4zBw2N7UumSgGfbA==" }, "encoding": { "version": "0.1.13", @@ -22,11 +1179,27 @@ "iconv-lite": "^0.6.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "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=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, "expo-constants": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.2.0.tgz", - "integrity": "sha512-WKwiEMvBgPrEPEyZKm21UUB2KWQux9OCWf6ZDORLTln7kO3rsbaJEprfWUWTP7AxyaLMYfN+/0WFHjZc25SZWQ==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.3.5.tgz", + "integrity": "sha512-qIlv2ffSjQl3wrvJwXYoNfQNfH/sK46EXcgyEQnQ1SAQO4ukwTEpG9j3fdW6aTiVEVrv/DsA1IaVRqKrUwSd3A==", "requires": { + "@expo/config": "^3.3.18", "fbjs": "1.0.0", "uuid": "^3.3.2" } @@ -51,6 +1224,97 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "getenv": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-0.7.0.tgz", + "integrity": "sha1-ObkYOHB+IIb9HPbvh3fRyT4UZJ4=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "iconv-lite": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", @@ -59,6 +1323,33 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -74,9 +1365,51 @@ } }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "loose-envify": { "version": "1.4.0", @@ -86,6 +1419,32 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -95,11 +1454,71 @@ "is-stream": "^1.0.1" } }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "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=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -108,20 +1527,168 @@ "asap": "~2.0.3" } }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "slugify": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.6.tgz", + "integrity": "sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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=" + }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, "uuid": { "version": "3.4.0", @@ -129,9 +1696,34 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "whatwg-fetch": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", - "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/packages/plugin-expo-app/package.json b/packages/plugin-expo-app/package.json index b895c18bb4..82dd7e66d7 100644 --- a/packages/plugin-expo-app/package.json +++ b/packages/plugin-expo-app/package.json @@ -20,7 +20,7 @@ "@bugsnag/core": "^7.5.4" }, "dependencies": { - "expo-constants": "~9.2" + "expo-constants": "~9.3.3" }, "peerDependencies": { "@bugsnag/core": "^7.0.0" diff --git a/packages/plugin-expo-device/package-lock.json b/packages/plugin-expo-device/package-lock.json index 453fb37fbf..f5f71a74ff 100644 --- a/packages/plugin-expo-device/package-lock.json +++ b/packages/plugin-expo-device/package-lock.json @@ -4,15 +4,1172 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "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==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==" + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz", + "integrity": "sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "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==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz", + "integrity": "sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz", + "integrity": "sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz", + "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@expo/babel-preset-cli": { + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@expo/babel-preset-cli/-/babel-preset-cli-0.2.18.tgz", + "integrity": "sha512-y2IZFynVtRxMQ4uxXYUnrnXZa+pvSH1R1aSUAfC6RsUb2UNOxC6zRehdLGSOyF4s9Wy+j3/CPm6fC0T5UJYoQg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", + "@babel/plugin-proposal-optional-chaining": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/preset-env": "^7.4.4", + "@babel/preset-typescript": "^7.3.3" + } + }, + "@expo/config": { + "version": "3.3.22", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-3.3.22.tgz", + "integrity": "sha512-BzahndK+Uxsvzui1+9QiJXptjVPgbSCQ3saNVF4N3Wrxjyr0WXHNp3Gz3VAGkoHhoBlxZheslmiNoMwjG25xjw==", + "requires": { + "@babel/core": "7.9.0", + "@expo/babel-preset-cli": "0.2.18", + "@expo/config-types": "^40.0.0-beta.2", + "@expo/json-file": "8.2.25", + "find-up": "^5.0.0", + "fs-extra": "9.0.0", + "getenv": "0.7.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.1.3", + "slugify": "^1.3.4" + } + }, + "@expo/config-types": { + "version": "40.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-40.0.0-beta.2.tgz", + "integrity": "sha512-t9pHCQMXOP4nwd7LGXuHkLlFy0JdfknRSCAeVF4Kw2/y+5OBbR9hW9ZVnetpBf0kORrekgiI7K/qDaa3hh5+Qg==" + }, + "@expo/json-file": { + "version": "8.2.25", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.25.tgz", + "integrity": "sha512-KFX6grWVzttaDskq/NK8ByqFPgpDZGFnyeZVeecGoKx5kU61zuR7/xQM04OvN6BNXq3jTUst1TyS8fXEfJuscA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "fs-extra": "9.0.0", + "json5": "^1.0.1", + "lodash": "^4.17.15", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.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==", + "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=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", + "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "requires": { + "caniuse-lite": "^1.0.30001165", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.621", + "escalade": "^3.1.1", + "node-releases": "^1.1.67" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001170", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz", + "integrity": "sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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==", + "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=" + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, "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==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", + "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "requires": { + "browserslist": "^4.15.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "electron-to-chromium": { + "version": "1.3.631", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.631.tgz", + "integrity": "sha512-mPEG/52142po0XK1jQkZtbMmp38MZtQ3JDFItYxV65WXyhxDYEQ54tP4rb93m0RbMlZqQ+4zBw2N7UumSgGfbA==" }, "encoding": { "version": "0.1.13", @@ -22,19 +1179,35 @@ "iconv-lite": "^0.6.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "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=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, "expo-constants": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.2.0.tgz", - "integrity": "sha512-WKwiEMvBgPrEPEyZKm21UUB2KWQux9OCWf6ZDORLTln7kO3rsbaJEprfWUWTP7AxyaLMYfN+/0WFHjZc25SZWQ==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-9.3.5.tgz", + "integrity": "sha512-qIlv2ffSjQl3wrvJwXYoNfQNfH/sK46EXcgyEQnQ1SAQO4ukwTEpG9j3fdW6aTiVEVrv/DsA1IaVRqKrUwSd3A==", "requires": { + "@expo/config": "^3.3.18", "fbjs": "1.0.0", "uuid": "^3.3.2" } }, "expo-device": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-2.3.0.tgz", - "integrity": "sha512-nClXT+YocEaUGImiOGfdAkDP6T/3U8zeKsu3ZfQ0HzToTHjpv8ri+J6NzHkkoGCTXTjejU55IqZPyeSPrihLFg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-2.4.0.tgz", + "integrity": "sha512-mxBiX6nvvtbKot3Kmmb2y8lo4Ki8jWGdUnpC2OX70Yiy75c8mOVbHUe2VMEnx3SysXycwvC5KzJSDy+PuDqovg==", "requires": { "fbjs": "1.0.0", "ua-parser-js": "^0.7.19" @@ -60,6 +1233,97 @@ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "getenv": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-0.7.0.tgz", + "integrity": "sha1-ObkYOHB+IIb9HPbvh3fRyT4UZJ4=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, "iconv-lite": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", @@ -68,6 +1332,33 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -87,6 +1378,48 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -95,6 +1428,32 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -104,11 +1463,71 @@ "is-stream": "^1.0.1" } }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "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=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -117,20 +1536,168 @@ "asap": "~2.0.3" } }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "slugify": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.6.tgz", + "integrity": "sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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=" + }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" + "version": "0.7.23", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.23.tgz", + "integrity": "sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, "uuid": { "version": "3.4.0", @@ -138,9 +1705,34 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "whatwg-fetch": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", - "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/packages/plugin-expo-device/package.json b/packages/plugin-expo-device/package.json index 8d22e96271..e9cf63da80 100644 --- a/packages/plugin-expo-device/package.json +++ b/packages/plugin-expo-device/package.json @@ -20,8 +20,8 @@ "@bugsnag/core": "^7.5.4" }, "dependencies": { - "expo-constants": "~9.2", - "expo-device": "~2.3" + "expo-constants": "~9.3.3", + "expo-device": "~2.4.0" }, "peerDependencies": { "@bugsnag/core": "^7.0.0" diff --git a/packages/plugin-express/test/express.test.ts b/packages/plugin-express/test/express.test.ts index 41c6326883..97c3ab1a62 100644 --- a/packages/plugin-express/test/express.test.ts +++ b/packages/plugin-express/test/express.test.ts @@ -1,5 +1,5 @@ import Client from '@bugsnag/core/client' -import plugin from '../' +import plugin from '../src/express' describe('plugin: express', () => { it('exports two middleware functions', () => { diff --git a/packages/plugin-inline-script-content/test/inline-script-content.test.ts b/packages/plugin-inline-script-content/test/inline-script-content.test.ts index eb14ba40ba..2a956b8640 100644 --- a/packages/plugin-inline-script-content/test/inline-script-content.test.ts +++ b/packages/plugin-inline-script-content/test/inline-script-content.test.ts @@ -1,4 +1,4 @@ -import plugin from '../' +import plugin from '../inline-script-content' import Client from '@bugsnag/core/client' import Event from '@bugsnag/core/event' diff --git a/packages/plugin-koa/test/koa.test.ts b/packages/plugin-koa/test/koa.test.ts index c541f105ca..8320e3d169 100644 --- a/packages/plugin-koa/test/koa.test.ts +++ b/packages/plugin-koa/test/koa.test.ts @@ -1,5 +1,5 @@ import Client from '@bugsnag/core/client' -import plugin from '../' +import plugin from '../src/koa' describe('plugin: koa', () => { it('exports two middleware functions', () => { diff --git a/packages/plugin-react/src/test/index.test.tsx b/packages/plugin-react/src/test/index.test.tsx index 278e956e2b..9be1e91b21 100644 --- a/packages/plugin-react/src/test/index.test.tsx +++ b/packages/plugin-react/src/test/index.test.tsx @@ -16,6 +16,10 @@ type FallbackComponentType = React.ComponentType // eslint-disable-next-line const ErrorBoundary = client.getPlugin('react')!.createErrorBoundary() +beforeAll(() => { + jest.spyOn(console, 'error').mockImplementation(() => {}) +}) + beforeEach(() => (client._notify as jest.Mock).mockClear()) test('formatComponentStack(str)', () => { diff --git a/packages/plugin-restify/test/restify.test.ts b/packages/plugin-restify/test/restify.test.ts index c05518e270..06790a43b1 100644 --- a/packages/plugin-restify/test/restify.test.ts +++ b/packages/plugin-restify/test/restify.test.ts @@ -1,5 +1,5 @@ import Client from '@bugsnag/core/client' -import plugin from '../' +import plugin from '../src/restify' describe('plugin: restify', () => { it('exports two middleware functions', () => { diff --git a/packages/plugin-vue/test/index.test.ts b/packages/plugin-vue/test/index.test.ts index 7ce4885c73..904ca86373 100644 --- a/packages/plugin-vue/test/index.test.ts +++ b/packages/plugin-vue/test/index.test.ts @@ -3,6 +3,10 @@ import Client from '@bugsnag/core/client' import Vue from 'vue' describe('bugsnag vue', () => { + beforeAll(() => { + jest.spyOn(console, 'error').mockImplementation(() => {}) + }) + it('throws when missing Vue', () => { expect(() => { new BugsnagVuePlugin(undefined).load(new Client({ apiKey: 'API_KEYYY' })) diff --git a/packages/react-native/android/.bugsnag-android-version b/packages/react-native/android/.bugsnag-android-version index b0c35e5367..bef38a7b29 100644 --- a/packages/react-native/android/.bugsnag-android-version +++ b/packages/react-native/android/.bugsnag-android-version @@ -1 +1 @@ -b105b3a8f2ec2b116c87b78b472afe2e73acd2d8 +a4a005fe90f08a443f1e2c82ae6b59627ae7985a diff --git a/packages/react-native/android/build.gradle b/packages/react-native/android/build.gradle index 5d59834a2b..ce06f38e50 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.4.0-react-native" - api "com.bugsnag:bugsnag-plugin-react-native:5.4.0-react-native" + api "com.bugsnag:bugsnag-android:5.5.0-react-native" + api "com.bugsnag:bugsnag-plugin-react-native:5.5.0-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.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index fb96e97c37..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jKAAoJEJAqRX/iyO/5dugQAJN1gQAaeFrjLaon52NroWbv -vjgI4CHcpLEfsV2OeqfoaZmxeWf3/Z77zG9tS/IOEgIAE2nthy65Wp4mzeslTdlo -aDMghuZ8ee1tBhPx5Vycz5U3UJvWTfvNh3pNf1CNTuvPlseN09b8VILoSi97iS07 -79txE6Zro+SkjMEVYvSnugvQs5KkbxjVOTpDyC2Qtz0JDH/WtaJpm1QfFGat1ttu -emSk8F6D85Lp6gmSnnxK+j+pRcl5CqB4Im6ONFsLqX4pVaFOSzdVqTEPZ6ZyMsrU -jJ2ZAFHDaj1pG5ZVN773gfJiABVpJtUQiss5MNEJiyPO4b+KD4DmWB00fZzzmhfh -uK9jDz/zxKsTtB9xStLAlnrcA1LjtBBRFqH48IbRT4azDnpCUhKTdF5zQqEMm/XW -cU2WiYfnGqNcRP0EpXPg2jFFxxi2O6IZVM/krn3i+MpsGxQ7BTPcYExfE4qWdgeh -Hl8DSxKyXfNnfmFSvw59rNkDyzrHGR2W4Ulkr+NrY6o0NBvuX97kSdLcuBlS5KuT -IynAL1Xs2dLu15IZgPdOAo3nG3mipOR9edhsx7WyaZM1agy3bm/9cN6uSib+G4zy -JnoEwZutEJp0hSalivve706VZ8s22xShZ0Ex1ZvNqUMSFGOX0IRbJWEV2YP7Aenh -mI9LO6mXn6dD0u4Ez1kA -=Jxp0 ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar deleted file mode 100644 index c8006c7042..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar.asc deleted file mode 100644 index 6428e2e683..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jKAAoJEJAqRX/iyO/5EPcQAKc4JmzhE7mvL4kJyH1UmqwQ -/TaN9pI/hF+I22iML+7PnEf9ETkxorxnWVJVIwuX6vZzgFua56ugRkzs6qSA1xuG -kZg73lF6ny0DGGWeRz7Pj7mYZfzTS+ZmDrwM77qpOaTiK6RTPgaZkjX/YYOXgp7L -YnJ288qnZrjN77UXnsMY8vEJi5+dv/eQMHFpFFFf3CF6QbaI6UjFTnclavfuxDq2 -eUiwctWz9hj6ZjacB/cSLqlJBxbizpbm5uNhieww1EN/Vd9lLds0T4Y67E+uxZ/J -my+NEtkLuwxcXK/PW+VyQP2+T/mJg6iDOTq2+5hcbkdo+gk1qEwL6rqvDFfUyq+8 -Imut2C3oPCEpqGpTwvyUYLbJ9WMXpFtmL+pNQdYMHJfJAXrCRH5tKjKSXyf1D2xm -hn3QCEv6f0E8/hF55uClhIpTe+6EqWhkbgqfBBlqi9IrcnwoTrVVrg4WuK68IRm8 -NKfGtygEBwFGQCFmXt6M8BzxdGvWnvcHuyqEN8Bq02yxRWMGF2Q2rDDFIA5hJzq+ -xSDrT5UF0/qzIGAF16uXISYgg6h892hktrCEs0h0ef+65tF0G4nnZoqgo7Niyc3P -B7qtHuhs6WBANXjWIcc3wqFW0dD3OiABg/A6TMo8okQDHFs/D7ycY8PH8AOUlVpi -t+4bY/f0kWzAKNeT3gFY -=n9wV ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom.asc deleted file mode 100644 index 50685db309..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jKAAoJEJAqRX/iyO/5NPYQAJ7yN+fgjDUW+0AJC4XNqQIn -bszu+uG1YxD5GnulOVB0lFHzGm/7ux4mBqQF5q9qfduLtZ90LeqC1uBZr0HlYdeB -fST7Hg7Mek5mpaDOs/KqVuT/zzFuEERrMGeUVjlNBls6WLeeyoSJ1rnyv5GeTfVF -J2t8uIVJ8qMpq83aMby+obDZhMRoaakvm7JB9t4fgvXfFrseymhSNlTaybrplPvL -bfg++3zyFP4kK1+fOAfGEdWu6uwMP0Gi241WnzwnbLgjpzcZyrOddiEjsDU5dueC -sBmCvwNsRbN0mnZMGVhJp1EnykC/giZKcakZIUl6MVWwM8LCCvML502YEEjiOBpz -092Y9qH5ohdWloC4H+sdtHdXBGORFq5SXDAp8RUfmPWBJDhDEV4ATLzaipOBJlmT -RWSat0+Q9Beg0P3fSG/EzQmgs5IkmpjnarO4Mlcq46yEH9/+KeRWIA2Zijs8P0+E -uykdYDs9UPq80qK4KG/9c0E2JKcpBztjvNbPNISbfFcMhDsNqKboAbburq+Yiym0 -VDA/UfwgEaKP+8RHtoXKynAZ/2MtNwL9X4x+Zyf19KYQ8ilgemX2G5u0Rn3JvG5W -D8Iao478T5QF7HLsuxpD9dXJnwL/B58HfEmBN3wbCFifTj2kaxqGBW67GaOgg6ft -+cVyDyxW4olOIUa4lSxG -=xW4F ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar similarity index 62% rename from packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar rename to packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar index d2794a18b9..a87f1bd858 100644 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native-sources.jar and b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..386d95cbe2 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5SHAP/1gVyn5+72L09Odx+42fNW/w +mhJIcKOvCIRG5231IMyK9wQ0zBngM+u2F5zuBa5niSQ8iw5CZ7K6RXD8DgXlAkNk +HQo/cZSoPoREbadbo2QFjZhTfGJ+vt7XwzGQLgtbYQsUqqccBIxdQw/fIihplQBi +lGIzdrZMewSJ2YONft0fJvUhC56mueScDWVOrg0AZkkDsCIAijW+7rYhwu4AuZMC +X4vxn4UFH+DJa0HOK135yqbTnSVwjg5ixemtZXtGMhvNA/JkbGEUyTNmVbaClxPx +FxpAFRP/h2hb+LhEMotHfg4T419StrK1nHGTxwokyIvJeBaSw9DKhXiOZUmQpAY7 +zfrV9dRNvnM2Fo7cndmnVfV5Mjc9ktLyv7Vo3w8hKZUk4jfIaXp7EV/FiQR+xNic +22xfw0FITNH87bMGFI4nkxBpyA0+N6VDgH32sH1huNqHQO/kTcIHnwp3NTiCiXus +M9s+W078EGD8pjzCuQeyg0QnMniHsaM1hx3LFBptFuTYXiV1A2VlPyZTrkAxms1a ++wD0B2O0KFj8Ais/f8vBsjjaIQKqZ7VQ34JTpck8Pun8kYvM47YTHaRJZOXXl2hy +oKAlbBONk6ujk52MpdEoc1llvJ0n0JaUZ8RXG3RVl12vgGgtSZ6rScEwryUn5iMe +gr/hf+8mt48kpb1JnI4n +=kaX9 +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar new file mode 100644 index 0000000000..233115db85 Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..7f548e0feb --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5k0UQAKbcnC9oWJEGLTlMABQqgwVd +obyT5J2bmzRfzqlt+LjcIFvpWfi2MAEYqvXQFKPEeEn0JMl1FdBmi/d3NGOuEpSM +oD/4b/TYwlIhbqJjfe/7JVf1SOFusy7Dbm9OAqf/RLs2a/fYwYE0m3yaEu5ckxDK +wlHUIgkVBWCRSib+/fGsHb8s/RCavl3MCGubHkwlPsmyvsT74u7iiXUHqXw/lvUe +z5EOSoJ8NdXK7UvA8qXMomD93tOdoktPWhbgDOGQ2qi53EifEbbVOzt0F7gDaC6m +Gh8rSaCE1nbAIvRmMPp8w3L59kt+yctOZw9h2/RDqAHZfO6UQ5FAukv9hKGZ6B12 +CK3D0UFMt2Uz1jVKTc16nslf3NDkGmED5asgVVnRLo0+aJlhRiyCAbxz5C8XfMEm +kzJqoLgQiibaUFmVYq1+r/EV6OjwhT8paQphYR6jrW1818VVbKIe/Yg8SFg4LOsv +EuYKN4zLas0kcDRlTZ/paxu56tl4SNfYUJkCp5mUeaLb0mOTsKt9IeHOhlhuWWbN +nRg5pIc51f04S7S6SmkDtF4N0AbLO16XO+CItoTHWM+7C+qGFyhyWC+Iuu9fVnxr +0bxj80MJlZ8POYbDSD3olzotHJbdCHKDihdnQUpBAgz7L+/+Y6bweQ9Qb6TZfBYs +MDSTQ3GvPc8djM92c6/u +=kCzG +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module new file mode 100644 index 0000000000..a7af6a0ab9 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module @@ -0,0 +1,91 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-android-core-5.5.0-react-native.aar", + "url": "bugsnag-android-core-5.5.0-react-native.aar", + "size": 259822, + "sha512": "447a57029c190a0cfea3604ac98fc3ceb525f9706599d6f160fe4bfae1227d331dbf01389d40c2fd3b581bdcf75814b4497e5b3fa295b20682e23db2cead9138", + "sha256": "56ddce1ae2e41510273865ba743c6c05eabb5755b3dbc70e35c4a6ec1db71e68", + "sha1": "3ff2df216ed8d956cc7a1354fe2328ec5e3bece8", + "md5": "9217195cea70e8e7b1db0e492d96f5cd" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-android-core-5.5.0-react-native.aar", + "url": "bugsnag-android-core-5.5.0-react-native.aar", + "size": 259822, + "sha512": "447a57029c190a0cfea3604ac98fc3ceb525f9706599d6f160fe4bfae1227d331dbf01389d40c2fd3b581bdcf75814b4497e5b3fa295b20682e23db2cead9138", + "sha256": "56ddce1ae2e41510273865ba743c6c05eabb5755b3dbc70e35c4a6ec1db71e68", + "sha1": "3ff2df216ed8d956cc7a1354fe2328ec5e3bece8", + "md5": "9217195cea70e8e7b1db0e492d96f5cd" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..7422ab111e --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5fCkP/3UtFLh+w1To814RRpeFH96P +f+Zq2sHjYYRzCPKdGhL1qtZazlbRcYAwlC2j8sDRGdkybuEYT3TPzCdgOvAWazbP +Vb+nIc3TEFeNM2LD++9ay+eOs/j8OQop9YXWvDPWlD2GzIvQ7U9cPod2NbTKkTzV +VSGCauEXiAyrNAd5xPuJ6kiO88KqVs90WZQlQ0d/+bHi8kOIk7AR+vaLDJ0oaVtX ++c0pHeX4UInHBlaRbxk/eTYiF+AICfCfvwgTPvHBWPO8IEVn4MGSzbfGLQbpfpul +jUlYIZmnfPgdrq08X/+SICbIEswMUUegkEvOYLWSzNSZrmvX6MZLBEiWVchRJnzb +fAUnx8oro6UQi9Qq/y/FJHOycHD6ZHBucMd+HhJsL3eUar873WiZiV8B7gHuwHc3 +1d9rOOxRTH8lYGgznqdIoBeVFEzZCQORu4KJ8qVTJ3BSH/eNjKkCXVXZiNyXIIqg +YL0CfQIlwoEAHo07KXMdfgFNkvgYCbfeLSnmh6i4+opXK5cjIexYa/CWAI2zBBbo +9bitF7RjZj/reJwhtGrTWxkFyUowlFmJOlSipdq+MJ5CUgikiaC62hYRqak700Do +9kQihkTHrRAeA1WaqM70weDSx5R9xCnzhvZFsG3euZW/VWaYJWBIZX2XJK0AGZt1 +MJzcWG0ehCyzCEgvCDMQ +=JcE5 +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom similarity index 66% rename from packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom index c8a959297e..37d555b90b 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.4.0-react-native/bugsnag-android-core-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android Core Official Bugsnag notifier for Android applications @@ -36,7 +42,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.3.61 + 1.3.72 compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..deb5ac0797 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-core/5.5.0-react-native/bugsnag-android-core-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5avgP/RupxqLSI0zdVCuozrHfdmwF +DKUYORJxfmIadIn4liXkMe/uRs7mmF/ToOitoYPJicH2N/3FulcKXLBv+oLc704R +guAWiGUla6cp15rsHyhS9FMiAxN8pKr9fVcMh/C2cDsaBvAgCg7MTN9l2zLu03QC +cXUk9DIeRUL/9stRp3wWTAH3KPOMttiv26gs+QJpNIZaSd4Yh7t+8tSQECCZg/l5 +BV089WD06jKsGsDyIL9caA4Y1a12omUmwm8xUr76YMHPWAC0HKgCzJWSSie6uc98 +49cNT3VLh289pHN5phSwLDbUM758yeK1l21PbMLO8KEdetxoEBEI1JuNacXpmMf7 +/tbGIpg1/5zr7B07MxThK8Oa1X15QR4ESYrLUK+zKZD5448g1Sw7pPAZaJ2AbT/+ +ScBX/y0K1tkdHYgYbmj8LO1rUJ2YXrKw9hFq0YsNbabR4RwrXz8/EwcKJOiVcvji +Ivv80fbsbAfvewZKIykTUuRLbAcBKwB8YFVcQVZhQSc+G1Pb75zYWpPc4w3KpGpl +IGeY1P8LTQFXs099gwV/vVEFrLYUM/vktb+hXEAeB8kXocdi4UrK5S9Lpl2x21WE +tB/kiRWvEHt96AjfMh2ZaeprqYnhntPShTF09hcNTY/lfCTpqogG8Mtl5uCXkZJ3 +aJMfJAotirbzSZVpxM6M +=/hFn +-----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 d0bd1bdd03..70ac962567 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122130 + 20210111092837 diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar deleted file mode 100644 index 515ade7ec0..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index 23e9de3048..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jLAAoJEJAqRX/iyO/5zysQAJ4MuwNurOUf2JvxHPfry4fl -cC6sD/fVN0BYuFft/aNpIDmueN5ONdZRx4Qidv/jyC+pebYhuL0mHj3r3Na8b47w -beB9jCmImDmIUNU34q4Jf3bV4iR4rkFTWLuurG1thn9MrXz/xUjGvSjN5YfcIG4D -GiPtyKy/BLqok9hLG9FTsO+57t2PoZO/ag7MlC2+oNnO9+1gUmfUVxTXHviqZJWQ -0ucSLazlLk1y8xmIjTs3AmcfX2Tg71K0kLLkNpuqVRvd9x7q8+nrCxTIqkG5Z0/b -rdSW9UKh6mFxczY9bYfEgbCwEVKKKyZ/YBV6/V8vSljsXsBG4W7kGAJMESfOCm2r -jqmdg8xQt8S4+2tJIP0G2fJ1zrQSdRXAq8jjXRLT9S6Tl9mbHQBqn26njgwBiBnP -raJrh5LNfCZW6oYSZ8SVxTgVdPbu7o7T9vPF8lIIC0Gtxo5nNxB/DcJSL4nMx0rU -GLQaHsybTq+Kupjz/q2ntLCX+wbKEEZsCu95bcxMRKOTnN1DVBopjzalvSiaJ/+g -BfEA38LMvoxlSmCRHpUctGE9rIZsnF9Vt13E48j0yyoLj8z2gN1u9RPSf2kI3sFN -jLOHD4AmGAX0Dz8/4Vb8/KrQbXV60FcmAsARhAr22Y3nPEYs3FYSD2DaknBsWOBT -GfDXwWmLLCmOmWMkqdBN -=16DI ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar deleted file mode 100644 index 5e24933bac..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar.asc deleted file mode 100644 index 9c0e57d440..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jLAAoJEJAqRX/iyO/5qOQQAIomP+JWPTdzTE4OVDRMzyXs -/isaIitbpabgCaRznRYi6+ZL4uhHRR57QUc/M+QRg34rwtlY8xA6Y+8akUYMHog5 -YOiWulhr8esaLkPn6DoI4aeZXvbmGi1h/bCR5ajHR3eFD2ia5/TVvNYqJTGa9tup -mXRYkOEeeNgfCnwbZ4XNCXmcgJkklL4RR8wkEtPIVVjfTwFjiGPhpLvhWuYV2HKL -t17biiPVWngJFO7V+I2l6MQCo9XMFQm/thJ/MoXqMzQXqb6EerEtgbR2eqbStz6w -AoT54RNmar2wIMkMGLwIGAAnz0OMPCvRqoOjTgs2adQBjBQWNEeQ353ZgsiMmLyP -fuWwFromocQeJ2yq+rMwQiH8PqtaFTTGdyFfFHUVA/mmDV03InD+aAkXFQDww0PC -sZMoaZYRS3yCQ7PFLvDdcqbqU7annrJVNzUOhXbfN/Lw/zzkzotsoH6c3BwuU2AV -5s9SfcbJ1hN4d7NkDzjQTT8D/8/NKWWJr2D/bWj9kTTz4K1RAlMBH9vQxqdswSb4 -IHXN12Ox0tQ1r4GO4SGhVxYT6Bfz627xI385JRxRFoeTLwMz3+5cHHyGeOWUFEdj -z8jNMEvd8UqBSn7KJQA4QVQXJR5jPemWoxk96unqmeB6MeTfk//zlas0zxEWO6pQ -GOGKF6ZRChFI16knMlXt -=1exr ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom.asc deleted file mode 100644 index 2f5e3ebaea..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jLAAoJEJAqRX/iyO/5jqIQAKDtMItI4nT+xi6feK3KhVkh -/N74UZn9d3nFe7LvedFCUMM8a3AgodDtQ+44z5xNdKHrvTXR7j++PGnEY9QJGjh9 -cuCpHEzriXpxHOljpNBz1Rnrm0QS2Hj2cFrUqAcPLI7umLeCThrTdT1sCmSFi44K -mfgA+oLWCLUeOhZAnomL08wprI7X81FTjHpPOLNEw8dkaPfUM+OCkzMLPBkDqldP -3vT+ch7x1w+DO0hWd9zRkOZWVG/90fJM5Cmvj02LRrKJK/ml6t6eLBJHPGhCMjZa -qJXG1LINcNxMXUfjfhvJTzM7/CZiD94tfhzq46VbufK5p66DlBztTt8lbZmErZxY -DePxpw/5mWwa7XDmTBKImJnpDvvFnRI0TSLXqHeus0USrdrXQs9ZVCouGcxsUX0l -WMQb0hnpna5RYhURR6+Gg7gEjbAS0KJtlqMzobp4QlVB7DfYfokT/7ESus0rQep2 -84mhivQ+etV74Jkbd+ApqtoIbJDLygTxsODah7PaeGhd9RjG6mOgSz5MHuYxOtUw -/nHgzN/UU9h999M1IoWfO2EhkeKlQI8XpZd0AMdHJiz4Vd7YJbmNnui9ODXXodLD -t0+9bU57NRiPmdiZpbyfGonUO7cQ6oOyzQiD9GyUWyNlw8Rg/2Fj8mlGWSduoPbe -WvcJjuIRyWaFD9i+kgPW -=Oiii ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar new file mode 100644 index 0000000000..66d574edae Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..a61728f727 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5zzAQAKfRRr/LGr5YbA4HYdzzduNE +3Fe/1w9uy78yJEpn0bypHidoINn57HUGl2SdnQWdJOwxc9xsQBQX0Zc6jhxsHc0F +TwCiIWfZN/T+k3daEPWB28gmSsjZsAp3d6U0b3RDHdjsEhwOmVo1VY7GEGFkhINJ +ZdeTPxQ3wjqxHgCNasMg4Z9TZTeYoRZ3GcLB54FE/+pi0GXCNyhf7qU9AKc3l6k9 +O/jq+ZHD+j9rBwzmozDFcZN8EC7vgFj9bxHqmDkVy8GwQVTNrNxKbExIwJh7TKEO +6uJIV1Ao6oVEQ2hRQMXXUHZ+Z/mtcO3hgdD3awSO7XMUOlccGJ7hzTDift0szqWf +Yl/MfC3dDYWMcWHwcZn3rPa1uJBP9hP7b3SnJ1vnmM3Uy9Wtlc9UqXLdx1njo0PQ +wPQ9PwQ1LVFaN9X27oOSz3TmLdlu5STZ7aBrALKOCLJntKWecgDgnZ330uEuO0P0 +rVsVTuNsiicbvJOXzSel85TC5rLE2fhRJaLxMsvrZT+oBHmgmXTe/EG0UsAlSHsk +7YqgFO8WFd+5d44cKt+01F+AJ5lSiBYSnX80LiY0UnrcqF31ioIG+uZMbaX1JoJC +GpCRTD3eIMNt4jgSfBDkGFibXbEB0xudH+180OFJ2nLKjEwDu6WJHWJcR1c9T4TD +fPTfzoJrVEvrEq6UNFR4 +=sN1u +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar new file mode 100644 index 0000000000..ca36a26426 Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..f0abcc9056 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5REgP/39PzB1TLD36dZTWLu3/B2XS +vEdBF/+bdKJIanOsUqfh1frZmWlWnxzVRFVTqLrZ+Vq+0mNqolDRXaRzBFNq9Ab5 +6+vZvKf2dDjqR5qAHwv0n3ppMjUXlfrPsWkSVdjpV2JxceStz1wZiK7NhdHbC4MP +TMo9iiSahMtoimLR3Aj3RkhOcqjyGekXLmZ3ApKDXjmC8U1/Ex7/ThaBrxHSR5Jx +KLOIxBrU0hio9LAn8PwH2YRyZcgo5hZLjUHVmAnOUEaJaprcsc0PF9t61h+sgaLG +ozFX+irWvlljyRuTDmsq2MvvwgDFv2QuR55baiJhH8r78KP7Z3dJc10WCstVUwDx +IpLxbENgbdTmSx9NUaulJe0DMGuaESCZ0KArVsFBzZ0OORIuDtqtqfbVPq5p9ig1 +taAIqorNO/en07r18B8tCvyGYelnyXyd6CvGlf8olkfnTMBmvvvx+K66wCvUV0As +my9WiWZcstY8HaQeRY+gOP02edpbHw9MSDDGceMaV63q9kKbrBUPQR2aS5q54R/p +u3DOpB10aL9Z9N5ppHj7/sn2MDrFstKxBGb1ft6VnH/OqP2f3hI08fH0oMPbNEtP +wSsvcH+pWPpyDFZy+4c1dCad2YL2kxyCG5ulCYFKhyrKP7GftwaDVDzg0i6b96FO +UWhwFjGRPL3ysVBmv/Av +=/JqH +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module new file mode 100644 index 0000000000..4286a54b3a --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module @@ -0,0 +1,105 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-android-ndk", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-anr", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-ndk", + "version": { + "requires": "5.5.0-react-native" + } + } + ], + "files": [ + { + "name": "bugsnag-android-ndk-5.5.0-react-native.aar", + "url": "bugsnag-android-ndk-5.5.0-react-native.aar", + "size": 701, + "sha512": "b000ee5afc2daaab0f09bfa0585c74893e16f8d0712f91e66c8cccc5ea1a17acc866e94de5e2698461ad0ce454d4b4f58398a9603c4f5051b5394f244d001427", + "sha256": "71846d015ea94fa6ed5c27465a23ed7ddc9f92dcdda65c61e4a8dbd90be83874", + "sha1": "e95db02741555d9a9e4d5ef358c353a130460669", + "md5": "db05ceaeec468cebc3e199e87474c64a" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-anr", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-ndk", + "version": { + "requires": "5.5.0-react-native" + } + } + ], + "files": [ + { + "name": "bugsnag-android-ndk-5.5.0-react-native.aar", + "url": "bugsnag-android-ndk-5.5.0-react-native.aar", + "size": 701, + "sha512": "b000ee5afc2daaab0f09bfa0585c74893e16f8d0712f91e66c8cccc5ea1a17acc866e94de5e2698461ad0ce454d4b4f58398a9603c4f5051b5394f244d001427", + "sha256": "71846d015ea94fa6ed5c27465a23ed7ddc9f92dcdda65c61e4a8dbd90be83874", + "sha1": "e95db02741555d9a9e4d5ef358c353a130460669", + "md5": "db05ceaeec468cebc3e199e87474c64a" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..c49d140dde --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5uG4P/2mC5Orp6UyJasSXXmmEBWDO +D487Zpv7PNIexKoxA+0N3xzFfmYvPmXEC+CgTRrWqbFDyvHNXDnk4cNrLTB2VgHr +GHMY0sU6ViL4syNdWDkrwYd7FzvWBO6owVhAkroMrgGlIDFgl+UXg+6vGkdrx/y4 +7zVIEwwnlJnpdOGw+Ag+2GqK5yCXZobadi9HS1PZwy3jiohb6p0HFwD+CI+SEaj8 +WAc8eU2vRfns2ddgYtyMgyucimA4039aohgshIo8+Fdke3WfcvQYrMIgLt4uQSJ7 +yk4bc2wgdx1FHl7c8MfuO4/MdMl3TjktPg2JoZShOZ1OLIr54OXMCSAG8PdU9KOe +AhLG7F6t2fN+8y4lOwiRcDEKWqHbuCNXLCS7aO3e0FwCAl6rGJOKjE5sj/mZlECm +SoXDw6dz9jOmPal61F1dsbidSFNJOq9sSP9ASJiCVshPHF/le1cRS1LMOg+bWVPo +m8PRTMfXD/UHUJwj/Mn7uhfuu08oXAPSpJDUuk3C1yBGS3/dW34FCdPN03uGJy5v +/JF6+Sx6kJUNg3UqYklJolzs64VXiq5EPFQh3MB9Fxuvn+DEmEvtzX4L0tt5S9iV +/6q42BWL5J5EmesAJJhTB+s1bQdm8mlZ8CiuSRCj0SQhXEiQ17Ic6KGn2YZr6Sjg +0mtoCFbHDL6J4VOjfYKd +=g9w6 +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom similarity index 65% rename from packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom index b180ea6b73..95f611e7c0 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.4.0-react-native/bugsnag-android-ndk-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-android-ndk - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android NDK Official Bugsnag notifier for Android applications @@ -30,19 +36,19 @@ com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native compile com.bugsnag bugsnag-plugin-android-anr - 5.4.0-react-native + 5.5.0-react-native compile com.bugsnag bugsnag-plugin-android-ndk - 5.4.0-react-native + 5.5.0-react-native compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..68ee3ff277 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android-ndk/5.5.0-react-native/bugsnag-android-ndk-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5YXEQAJ2m58ajXevu/fVU97pN7Rbn +Kd25kwjyg5h109NJtZdKWz7QUOB3I3XK2KQH9H5AzAzgHgeIsVVe46/oqKpNpmIU +BleUqt/myLboUpmIepGkSudRH746QX2gfdr+M3FVTChTYZcr8+3S+dLp9Hyx+cgk +x3TaXLIcuwwwUv7SWBC6Jzku067hT905Bia7/QZ1KNiMu8ioE3hUXLSwRjf9GEjp +uXhbs3IY7by4I00pa/v0HteYam5rvwxwT89nxc/TNkIwjd7jA/7RxevxYfhYJYbv +USmfUQRgExvwtoWHBTt4rd/UtsL/hAG0k5OtzG8hGybaNQxuNDE0ObaGmoAQcOn/ +zx+6mGz0eG6V5Fs05tjPgWJLlxFyWGcWmSy78gYbIHtwpGbUM2rc0mcBKn1TE5hf +fCx5MjKFQJFtqknRNVRfhIWPtEpZ1ehPnGA9mdcl0a02tBDtpuVRhaMMB63JGx1W +HxdxOPBWUwo7+Eu8yjv9scxNgG69uLCETJk/45TI66p37202nFRJt3qa3uNgp3iK +90fmnI+AS9m0rV+wfPWcM4O7UZgSewk48dEKhTsTN995Zdu6wu5648xqja4mOgfo +xhutu61cUZEwvOsCj+ozaXkwRV1pXIeScgH2OirH8b4abhfG88sMgbPrcBK+uhak +pjOvIx/lABIlnnxWpSba +=kR8q +-----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 8bf5c6fbe6..421b91d1f8 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122131 + 20210111092837 diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar deleted file mode 100644 index e7be755b16..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index b67e277672..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jJAAoJEJAqRX/iyO/5u3wP/Rxg5KbU8TfJ8lWQIh50uaLa -KhclSBOa5t4Ole848E9YOsQH7AxAQxyMMyMy+DBtM5PwOjkxcUn7qul06K2ZIwo0 -7idO23EUONxKCM2mSjHw0b95QyxBuNWw2igLK65ZL/xW1YJ7b9Zvoat6tZTAlU+j -lkRUkbQnawgBlZp42jj/tHfQIzdshSNrrK2mb1tFkKFbJnXX5EkfbD/2k7UsVC9K -1U90AotqSIPEAn32JKPFfIrstbTXBu8iTtRACfM1eonmxcuL5kzvoWVxAcmkQKu3 -vB4TAS0N9JJgH8xQ4PdCqgY4ANL0jXNyh9h7g1CKWrKm4MT5HatVT174vatH9HYd -KTe1+045GaEGbfzydXKOa4DSxRCG0fSVy5Q16qp9nK1iQ7ev8dMUx2/XOfOO4Y8F -n4xGU95/wjYla5eLFSlXqqhwiINi1C9zmEQBeGhhhnT3KiT/jkk5Ldx3UlNN2GEG -q3IjB6N8eKju0CZaqHVRetgRPMTnJXYSb/hK9Y6Ayp13bXuMFMlxDMFfa6A2EnqK -ArKiVJjWvUptJlBq7oqsllRWzPg3oF5wpHIYbKSf8O7VsCz+Wb3GQ+jzS3MqM2Mo -xC733VRfM8h8ySlzxUrd0IPQ2b1QVYQlX8HOkQi7un5UfDfyAXDzJoqEkdDPslt8 -D2Ko1HY2uVnhrBWnQm3c -=ZWL0 ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar deleted file mode 100644 index 5e24933bac..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar.asc deleted file mode 100644 index e136b232d5..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jJAAoJEJAqRX/iyO/5IGQQALqhrZM/ayBvFpx5pKXQ1cp9 -kYTQsOJIeORIeRk/LSzjEGXE/Rnp+5vQGYjUnBqWCoBuCgOBVQx4WykH2gzTEPDY -huVkN1VPM6lUe5NQk2LtOoRq389lPiY1rQwbiCBPrZC/QdaZWXRuAGCTe+kgTARn -KTg5416wzUEqyUzPdiPTl0WqzoOqAChEjOoGTIwBzRXXGNry73cmFtt4/ByTLloJ -rz9jUtPMi0iGV8uRwwutSG6pjKJaeI0h7TqdZKU9k0NFXPiKXJQ0uxRns75kSZGZ -7lJb8AmbVnEmgZWPHZU171dlaKeggNQeHeYl7PBMurfQzeMh7NlQ61Q60/D4Ehw3 -GfAJ3Ol3A/NRmheb6LWScWc3jzmmBomAu47ouoywqclSOEKY0bjpiEIVBJ5Cknkd -01ciSsGPnsaUNEz9iihjzuuwcIzoA7Bp0Ebf0kEvXs6Mhsx9Qmj4OGwwzcTu2fh3 -mbukk2yQ5+gOFEi1CTWZMvTUBmToB0O34eI2AJLp4Aguda3XKEgBb3bdomJzcErN -KtCbkr21qA2A0ZppxAMFdEtNXK4yp3GThSOju/r3n9ProT7Zbyxluw1oD58UIXD9 -EZ7m4XIgn+Eh8xiovU9VvgHz1egjcDSgwpJhkB4134jW8sNxN+L+LDztpNAEiG0n -mZZKmMtnBm3oIhppYeEk -=ucZS ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom.asc deleted file mode 100644 index 07b02e0a46..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jJAAoJEJAqRX/iyO/5noMQAJoLI0qL1nSXEjqdlezOz1Q/ -NbDuzelFiT+bvYziiWJh4XGYwgeaGK+jUZSoKhOiyWfvgIY+Xxyq0jTqsRPRy8C1 -IwiVVM0oCGl6q/yW/3vQZIp7wvYZd1frtqczOc06xuVDaREoUoNiTMN7YD6mYuf1 -Z4yqND9JT9BIOdYvKkeaHhoiNZaei9BqEtjdMfkzIGev7SECu0MN/sAkuTNSXcSU -vQeUdNLAig69mc33WEcyouV01JhsBEbH3TeoJUJPdUhkuvBfhNunnm54zzQsM3LV -pm/BSauqdX9zYcyPXaJ/AzH7v+lgHx3/+kLUpH5FTgYRTrIPhQ7dt2GDTMPJR8iX -ZHSpK5jLjgmfhJ1/Ap04ARsC/QODTEh80QCAGVqHZsrMPLWBHSmdinxmBI7NeGtc -yvRb9ah5aSPdfm9hM5T37c70NVWABkGG85TtlUTA6V1WnsFdbEsd6rz/tDV6xvo+ -TORg68LUzabccWaRHr1Vx2aRwyTpKGCeChIhzl+894dk1YDydgOGAJziHtRw7Hgy -sAVEmx94driMBH8djrzY0ytZz9+Zqfg4RxgmOSUXb7HxZPwg5m17uBlyEI12SrhQ -rCnvO8pQVXyysK19eaE3n8JEjDfei6mt2e3FNBnMsa80mFkgcUh/LOf7zc9u+zZK -EAcFzKJSZ/PR+nMsSw/l -=i0+E ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar new file mode 100644 index 0000000000..66d574edae Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..a61728f727 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5zzAQAKfRRr/LGr5YbA4HYdzzduNE +3Fe/1w9uy78yJEpn0bypHidoINn57HUGl2SdnQWdJOwxc9xsQBQX0Zc6jhxsHc0F +TwCiIWfZN/T+k3daEPWB28gmSsjZsAp3d6U0b3RDHdjsEhwOmVo1VY7GEGFkhINJ +ZdeTPxQ3wjqxHgCNasMg4Z9TZTeYoRZ3GcLB54FE/+pi0GXCNyhf7qU9AKc3l6k9 +O/jq+ZHD+j9rBwzmozDFcZN8EC7vgFj9bxHqmDkVy8GwQVTNrNxKbExIwJh7TKEO +6uJIV1Ao6oVEQ2hRQMXXUHZ+Z/mtcO3hgdD3awSO7XMUOlccGJ7hzTDift0szqWf +Yl/MfC3dDYWMcWHwcZn3rPa1uJBP9hP7b3SnJ1vnmM3Uy9Wtlc9UqXLdx1njo0PQ +wPQ9PwQ1LVFaN9X27oOSz3TmLdlu5STZ7aBrALKOCLJntKWecgDgnZ330uEuO0P0 +rVsVTuNsiicbvJOXzSel85TC5rLE2fhRJaLxMsvrZT+oBHmgmXTe/EG0UsAlSHsk +7YqgFO8WFd+5d44cKt+01F+AJ5lSiBYSnX80LiY0UnrcqF31ioIG+uZMbaX1JoJC +GpCRTD3eIMNt4jgSfBDkGFibXbEB0xudH+180OFJ2nLKjEwDu6WJHWJcR1c9T4TD +fPTfzoJrVEvrEq6UNFR4 +=sN1u +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar new file mode 100644 index 0000000000..ca36a26426 Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..f96efdb413 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpEAAoJEJAqRX/iyO/51pQP+wfcSr9BRUSE7JM5PunGcrep +wugca9oLQdNfzNPFeHtZKTcsBQ8rn1u1cKkfX4ZrJlcY9qBQrqMnHp+MTZ97Z0HE +IZ5rcDNoX2C2Vd2JakChwnQZny6X002kH4H2QNbc9S9aYGsUdNSK+sYf4CP42wXT +5CiDI3o4ffJ/LNNpGsNUxaGx+DPlyz3simMYAGwMeQIgUopvPR+rb8lqkdqNKmDq +KsVUgcWucQIBJXykW9AOVTSp3DxL8Y0jSagM02/nF1WAPr4hJJFPeHnaF1aJ/8jS +2Wybc7SrqPmDOCg2/RXYBSMsSpjGHUSM3p9d8gN1Lapo9rZf+qICoB9tDu+Xbzbz +KqRzFuchlSmZyUzl2/NfQX4Rq2oQIxbBIQDhw42lQJnHQfLWTg+zj2FWgwj6yI3u +hrHTt09SbPK7iKbfCwbfjIjOZI6zX8/yINL4xGTERAkl42e5OWwzvl4ulXIfDlTa +uuh5t9U8+qGsJgPShBxQ8xLdU+nEboHOV+XNETNsmBn54JAGgNu0uL6L6hXQkQEG +DmSxMpE7w6gjgzcziHk27EFsNRNrvUgyms3mDdlH052dgNxYqqZr+Mhm9gKqnq+A +QCrrDoxuTAX40qNYcVKjOeCCz3v87wDCuqETP5JFv+y6QZshD0x7LkfoRSwcNSYb +gaSDftw3mIepXVbNgRMP +=GlYe +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module new file mode 100644 index 0000000000..ccb399a9de --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module @@ -0,0 +1,105 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-android", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-anr", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-ndk", + "version": { + "requires": "5.5.0-react-native" + } + } + ], + "files": [ + { + "name": "bugsnag-android-5.5.0-react-native.aar", + "url": "bugsnag-android-5.5.0-react-native.aar", + "size": 701, + "sha512": "b000ee5afc2daaab0f09bfa0585c74893e16f8d0712f91e66c8cccc5ea1a17acc866e94de5e2698461ad0ce454d4b4f58398a9603c4f5051b5394f244d001427", + "sha256": "71846d015ea94fa6ed5c27465a23ed7ddc9f92dcdda65c61e4a8dbd90be83874", + "sha1": "e95db02741555d9a9e4d5ef358c353a130460669", + "md5": "db05ceaeec468cebc3e199e87474c64a" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-anr", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-ndk", + "version": { + "requires": "5.5.0-react-native" + } + } + ], + "files": [ + { + "name": "bugsnag-android-5.5.0-react-native.aar", + "url": "bugsnag-android-5.5.0-react-native.aar", + "size": 701, + "sha512": "b000ee5afc2daaab0f09bfa0585c74893e16f8d0712f91e66c8cccc5ea1a17acc866e94de5e2698461ad0ce454d4b4f58398a9603c4f5051b5394f244d001427", + "sha256": "71846d015ea94fa6ed5c27465a23ed7ddc9f92dcdda65c61e4a8dbd90be83874", + "sha1": "e95db02741555d9a9e4d5ef358c353a130460669", + "md5": "db05ceaeec468cebc3e199e87474c64a" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..1b4b7325f4 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5gKYQAI/If6XB+/HGfUiWDE9W9drR +lFyKsNK4WHR0gnKfOWZjOlnB5+8vx4uLWuK3lOwvzu17mc0hLjF2GvNEvOIWVtr4 +WBp9zEGYjGWPuOnMzXWTSO98oRC2vkHmSrVRQwMfgAhiW3NCKi/P/Hun8Cd1D1M3 +ZlMFS9qcvBMzC7FFIqOhIe1gf4iM0uQ2DnvRnfVTCRfU5mvFJUVynFVAIsdtsFdQ +goa1M6zXQdNiNSUXhJJ8z2o4l2XoSFcZ/arJkjjqKblb3G+BosByMjDnqO3YCpT/ +aDYpnmTDpxXmZ/dM0onKuP9OcsyVIkqDbfuh+eMljy0Qna1pUE32zxIguW3XKXV4 +Iy5iNMvW8m4ipE3K6VuC24BjPjfMbfHnJf037al1X8GwtwWn20940yOWJ3ffgY76 +HTPKQ32KmoRdnS2LHLrJF0dQZcTg6gJvnVpwmhaSkIprK/59pUOfMB6HH42lcGsf +ioptXCZs9e1VP5X9N2XjGa2z21CiNLFujcVXARqYaAPQRsV2trAwTZVLiYjUI65y +EdYgJ3pheB/yhldAPLGC8Y5p2ktRYKCKnmWgzbkxHXqtgawkAZy6R7yNeBsjDcrr +BEaLblYx8t70IhMC6k2wkfPGfxteT+l4hWyzmhnd1rwHE8EphBlamtME6Op2GgqW +sj40GLZrhneF1FYAF2kp +=dZ2o +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom similarity index 65% rename from packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom index 77e0b7a82b..0170213d1f 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-android/5.4.0-react-native/bugsnag-android-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-android - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android Official Bugsnag notifier for Android applications @@ -30,19 +36,19 @@ com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native compile com.bugsnag bugsnag-plugin-android-anr - 5.4.0-react-native + 5.5.0-react-native compile com.bugsnag bugsnag-plugin-android-ndk - 5.4.0-react-native + 5.5.0-react-native compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..58f4f6b49b --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-android/5.5.0-react-native/bugsnag-android-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5o7IP/3VXdcbp7vMoi2N5NvuH+Fi+ +H237dI0v/wkCLb92b9WZEP4+WH1KRgavLI6su0/KzRjoZllO6xw6fScFLiWND72F +UIks2JqIs08Q/P5RhddyWU0LgvpFMWdkyq7lGbql0eg5JqGtgUw+AsAxFPh1/Ag3 +TAETd0XhxrJEMkNmdXVGKW9p3dYJSLN8qn5pah7t1RUfTwTPPXX9IGAafmaHu2nh +SLQ0WaxVj66QZBbTRC6dWVyHAKyXrOZi7H+kwT4Z3hkJTMZpUgq4uJxTEWysxcWD +f9d9iA3yegkuTxnF/E/TzBur24nW+YuFsO0IkN5Dj/6/En8ogisvVJFW0Up35dWQ +BDi8cugR3fvKUkt+VQ8KWHPsc9BA3NGjNkIyGYoTN19E3HUOIW6z2VgI0hpnIDH1 +ws3wb8J1nZKBo5doB6ZJyYBFEZnFoO1joN57ATZKTa18+SBCqHgJb9RPuftW9HqE +ngn5TEpu/LdMP8Q87thTef35cxr4/FJQh+cuh7OCPR3VuZWqAdudkby5H2J6tgUL +QZ+H0mhHZVz4PfQcij0bPYqLYZdUYhr7Ga6MGMRTW2REFEwZx0J6EL0hHVupscHI +OsTehTTc7RwgJx+i6NsUr8p2+SQOFKb4iUZnoSVvN+Da+QEoXlpCSL16t9Okw0aT +LbFMySE9vdcCJkAxDV+X +=P1fy +-----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 3363495637..af40b6e68e 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122130 + 20210111092837 diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index a344a30fbb..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jMAAoJEJAqRX/iyO/5y8kQAJa6kDf2Z9N+QOJrcilb780t -PV7RteoMqtp/UUjUJssJEokMTMqlJNun+oBcXjOxU0yEgpJ4BfkCsGwm9lTJqO+w -BJYYZAU2seR+36qp6+yubreAv3CSk5hZ3gmULaboySDwiAJjkHrF0Gs0KgK5Rl/g -5FSEOGb7myv/y9RChlRdLQopsotMdg0Q15va/6EhzaISLntRcFZzrsjozSN4q5c7 -zYb1wPlkAgoH7ouihzQxiVJmOq82hiXxWapuVAT5oT30jO3+lnI6Kavbrz+ISY9K -ck2qBbj0D7NbN+z1b+Mo10EBpBlXF6a/ENj4zjYVM5bpxHLDKoeogb0iasvv8vH6 -OLD2NqWC72mNJcnPYSHTn22nN1vk6gzfSIJgK3IhO+qBIx/AXfIf9st17yBKfK5U -34yHRarLgUUkqpRnjg8Va22CNrnk6i30imXpX/B+oXPVN05sDz1S+n2qzkmeNwNt -Bpqj95ugxliGM1Mnfl7SVSk72Xd/Fd+ZDVOSsc7Lz7kiXsI3jUljB3ekA9b9u7kZ -dBVk25ZGiTppxmX0SfWGFntsJu31bE+9wxxANBYIIpLeQyc1rzQe5InJU3XtDjXO -fWAquzspO8mKcx4JFd4O7y+vuCLOBoBvhWttzVTGAtwzUOIE9JbMyrqaumRsI/xI -JpzXWiWOp6O3/uMJSeej -=6BdE ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar deleted file mode 100644 index 982f661322..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar.asc deleted file mode 100644 index 91347b39a7..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jMAAoJEJAqRX/iyO/5uYkP+gOrOIaAxJiImKv/ibY6yldz -qvPAfgOQ6TlKrYxaynba329VqAR0MJWWVy0313W+WVvbB/QwPDi/kTngzUg39yPt -IrE2+w2G2YbEc2xfCpjKdzTXIuEHzk5J8qq4mFQ5sQWnSyzo4rN2CflyeGRX+GJz -VAV+fiiKaPWERuGjLyU+9eQCKZUGGqW/CQ7Pwjv1b7YuS9wyXA+Y/8QikJDtEUHQ -fhY8oKRB9Pe4aF9LW9qIKTEStSZO7Q7Mj2cl1qfi2aXRzM8f4Ki93X5HToJODRp0 -PbAVOVKMT1raz1vRyGd7b217540Lj0ai74YAFASnVwFc3zjinN7e2vQlXoFZtnJL -CBnkv2LE35X15Sb0K8OlkhzrK/Fs9TxeUHQFXNYt7nQWBu6Zkab5fCD1Ng7EzE58 -SJAEts0MsAmS8x52QbMGM6Awfkc5t2ke9d16rIGzjG2YL2F2Cd2chI4Dq5W7m4rt -2z1NPtOB5ApO85Z1YtHpwV0P4FppduGtq/tOa01nnzw9lhlGAS+MLHDG3IqVy06w -BGIwglCpFrXpdVnC7SZzTQD3mkVEnWwif5pUftJ4qF1KmwYluNN8gA9W7ZlR/gj0 -dqL7MaUTaHYK9f7hkLqWw1/xXKNDeXHhJmduEVScHA5fOcXdoE9HiAWPowxtZFSu -fyFn8JYDym627s6KMQBq -=fme5 ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom.asc deleted file mode 100644 index 0af2681aab..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jMAAoJEJAqRX/iyO/5qaEQALsow7+gdJgfCzlviogG7DI7 -Hh7Ub+2iOQpTNqyCL4ay8UMc5V5/L3u50RbeSTxmgpHv1CY8hyWzR4nM98jrELUR -scEsp4SHbQJMSKjvQdRK1TXXQ0+/x9pM7yjLU0yxqfJ3YdK5qZW6Im/r3J9CpIRh -3EJBu+umVbMoqiQJqsRauNMtfUXvyMCazqN0LLKIIDTNB4Lmm29YwedRDwvTFuEf -vOSHa4iCL5xSd6Dg8d6CTJAzqNCNLgwjUMkzDZuupigy6yi3V+XFcwfnoKvhdtWI -LZJ+Aj2q2M/o3R4K911z55i8fBpDF+BpeJZwkuSHD9+ScmH/6pjilEvDXqV0q8oc -2WGdoQ3dM+HkCBOdC+K9IOUplKpBLHob19/abi7AUWlI1YGkfRhCVosuEzVNHiYw -17G1V3XZBvSwHyEsrd0M/Pg66ZS57msYzseX1GjkkoeoQpVgh/Eq4VdNL405/Hrx -sT+5D0s5ncQlv7L41iqof/dpVG0+8+6v8iAN0GUlMyNEPzjdszv/o+5xJqklQDJL -OovHNFFX3eZLAs1EP7+6wmI3Mt7nz/SyiqbrtOEUYCgAO55fvrzXN+vHAVVNEGca -NphKy2QQuGRrVUoXpb7EX0hQHH5sDt5YA050Xj69uxTWqsV341eGRggVneyybx/6 -/biLwDpMs6kBI6h8juJx -=oXT6 ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar similarity index 83% rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar index 3e8a27a938..b359d624c8 100644 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native-sources.jar and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..506dbbf7fb --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpGAAoJEJAqRX/iyO/5oUAP/3Axd4qH/H074WEFypTuYoI6 +6crD4Fow9gtMC1G0NrTeFvXM+0nRiOX5G1mabH1TsXNtlRabzpmov1uhNTraJ21G +XdL6RCVNuRTaXEaxmOjxDIeM7U+hZETCwhQiIao4M6NopFJYUID/kJRibjCV9XH/ +i+MZNIMeiHMyNBwRjKV9fe1Bn2XqYGWssTWYMhvjluWoLgusI796GzpMF/DfaD2L +a5XClflMo9+122TUuuz5h+JoS5psB8F+jzpfxEyUXlQyTMQQRRLfg5uofZow15zb +YSzuzoocgSRZw+3FFtP6gDqbYE1yMJNXMTyEZAj8JRaR7Ee0vXsdkQFS+uOQK3Ym +8y54vaVSmFd7+RunMIh4IWwdWQz3iehxFmlzhL/u2NSPOvAXJdwBF5lWEjTjbSEw +i4hQdw8sGr6oPs7dTWTyfxCHyCFrQaKLv6nLXk+n97LH/MModyz7nkEdCQPpFVW0 +te+HdlaRHgQS+jWUbktkB0Yb0Urt357rCH0Wxw3V45kvFPaoNK6RUc+YHvR78VbO +HpXZE2BQtvQI7XOcRcYmatE8443vwusFdi8cAhcy5u3qrTaZN5BfuRAMgwoitlpz +NrFwYN7j4WE8a0Kce9jazVAXu71wKJd8XNX6kkp7AktRqjSJu8A+it/xSXSksevK +FnMNJSmf8Egz5EhNVh3W +=E8Cv +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar new file mode 100644 index 0000000000..13b34564b2 Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..8a1cacef81 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5DdMQAJ3Mn4HNsPgoQ3HswCiGYSF7 +A+BlvGJ88d4Mm1+lNY3CRmBhQ1PsjDVsXwO9C29MOrcRg46hdrfOhq6hj5f8FB1e +KtSLVO1qDEMEhwnAIlL+DJdFiQwLZnStAqHqpg+yS5AONmT3YmZq/H9oDEYiVYjw +EEXiv9q6VHDwdKW9slu2ixDS4EHyZqsGQXCMTN8GMsDhUF/cV02p/Ex6ZvOilnAA +2wHO87fF4PDOH9OK42MWnyUZ9i+Y9WksEaW1HSmgJpYAPNXlpQGzUbhAHhHx9+r6 +nVFbYfOdQSHsFhZBT5IpVG2BDaChdvpgbu8wEyQzaw6HKki/2/ObcOLzLhzvXI9E +UFQar7ggcYKYpmJmbMsKNk0brpC6ERxjPol2e1vEwb4G8VBcwYnsBGcvlVj7rfeI +K09rnmCeLId6OVpzSykFAUSkUSC66tagHtfyddl8Cm3gY5/JQlwpLk4dJxHGIbWf +75kFZKc6yacGgMqenw45SpeNvSpOhW4QoAxOhVXrkt7bD+P3yi8hACpK6yNbHdfi +OGuXy47OXZySE685fwd9PSRgWaYDvG7OqaCFB3XILZCvEoYGZmDhbB7WE0e5aZcE +YOcIGtmgDlzDWAyP8F2i71V3NMVfWenAj5V5Dg95m8K/RwYqVUtu8Y4cxSCGytzF +BLyNaREiPtEiBzyBI5Ye +=sNZt +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module new file mode 100644 index 0000000000..821cd43c8c --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module @@ -0,0 +1,105 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-anr", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-android-anr-5.5.0-react-native.aar", + "url": "bugsnag-plugin-android-anr-5.5.0-react-native.aar", + "size": 26527, + "sha512": "899774acc896cb3c73a1e191599bf5d1a2a0f17ff741c7e64c804c779d8662b7e1369ddbf63641957b68bc5c0b7c85c6b74b07d665b715f29f52b37b12cef80a", + "sha256": "bb564d1ed01a764fb8ba41d7d5de245853218c3455c3402d3d367396f39edc57", + "sha1": "73a8a3cca255146430af2daeba8f2a2a1b6390e3", + "md5": "e95028ec1d848ef74aeef0e5531a9652" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-android-anr-5.5.0-react-native.aar", + "url": "bugsnag-plugin-android-anr-5.5.0-react-native.aar", + "size": 26527, + "sha512": "899774acc896cb3c73a1e191599bf5d1a2a0f17ff741c7e64c804c779d8662b7e1369ddbf63641957b68bc5c0b7c85c6b74b07d665b715f29f52b37b12cef80a", + "sha256": "bb564d1ed01a764fb8ba41d7d5de245853218c3455c3402d3d367396f39edc57", + "sha1": "73a8a3cca255146430af2daeba8f2a2a1b6390e3", + "md5": "e95028ec1d848ef74aeef0e5531a9652" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..c44cc98cd2 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5/cQQAKW583XOoYreobXF49XVXh2a +l1KzNbHtaAEAuW5/y7IcOOuQNeSR3ELTYgNlD0R9W+xfjUQORhGUro8ck1+iEz7C +iGlWAq15L2wgwRkVh73i1XtaxRpZspYNyYloUGnbhCMRAVdWKqjSsU3NiVVV4W6T +tfMZhRT6cwwWaUKpwWT84YOAOZF8lkUTgrtLV6B6OX1DsgFrjGMtVC3eaqpTpFpJ +/ElbjyuzHBhc0WTZTgdsZuOP4RofKaJeV4El4ixRHehaDAXyQUzooJv/S5QND+WT +zoMWVktb1ybRBX/g01SHA74wzV1rypiQRsTEq+ZsG0XuhVOrEx9D8FitOxKXzOgj +QGTMT8LNxnvBqt8s7kmXu/IGJmOS8J8BwPyPdmJdd6fgEeIuyOjbXak0wxl6VZDu +oftzYSxYR2+ECFNTcS8aItE2sSAsTsTsAShSCmtfwxOXUiOptWfRMPuSKrgBDRXN +EMaLnFuXNDwgPlzMPKM25pNI9UNI2JS62+sVb7NvOVqgIRrJpB1Vm4qI4uoHUvkW +cYVW65VMu3V1/QjcS+UvMLd9ES70Xvy81qrcQ9nDhlXcu4ch4dqXZGnWwJ0f+IzT +uI42/5inCLXQO9hhhPwIh2VZmVeNWTJ0RVEx6tOnvLCCxRGI65m6QDuTE40imFb7 +Mzi/tb/8C97n089UWmOr +=8w4t +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom similarity index 67% rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom index 85462f4814..5cc8b59f13 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.4.0-react-native/bugsnag-plugin-android-anr-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-plugin-android-anr - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android ANR Official Bugsnag notifier for Android applications @@ -30,7 +36,7 @@ com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native compile @@ -42,7 +48,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.3.61 + 1.3.72 compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..118cd76512 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-anr/5.5.0-react-native/bugsnag-plugin-android-anr-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5pZYQAIqqep4oQ/WrW5dsiuWCr1aD +54lr3XkbaXRMJof4ZSZ2CJ0HELchl4C0yM9zJAKTODJHdOp1FqmLNEiMiZZ0V7j5 +twbAnuJXdxVfwOTyGH/fbqwqAvkXd/nQuDXipstWqmZrF5yy/acvZMgAc9ZRnMjm +uh3ik1FmYykEx3v6iJCwBy2fhfDHW5KdtBZHIh30LCbbcC/mqur6MBC8h4hp3UVg +s8IZRBxI8Fs5YulztZoawVbXjn0MhoxKE8aWj45/86ES4QUIca9NwjdljMWId8Ih +kXRQk5G+6dHpBzR+3E/bRBAbI33vN36hHdcH3Njnk7f3rroieSfl1R8QvN4+KhXm +WeJYdk63qlX9mqk3HAizz4GsSCtY6Tt611QrO3uiBhEI2VsEggqfBaQjXHCs1UZ2 +myLrHruSOkl3PvSryXy3S52JUUTXkJbQLAxx8Xo4LGYqUti+tWiDKOfHiautjLYr +hf/4nnXXFTmsqGYobTNYJD1LRgVQv76egI+HehHcftGOOiLLtHrpiM8qvSlUbJwv +LDzc8t72yOb+7arWfc6aSaCYFyayA+81Re0IyJ3LdfBvTane7WupIx/SBWSGTDqN +7p/3bJZqtOpB5gKDFpCBkHLXCoVygRIjmpS9n4GrSlXXCfRocew3UIorYLlOcg2j +IrNgWIsJmO5ilBoE2gHo +=WGrx +-----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 6ec163a2af..91b022b17c 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122132 + 20210111092838 diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar deleted file mode 100644 index 4683a7b777..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index 03161c7982..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jNAAoJEJAqRX/iyO/59GUQAIysXBeDGPNxEE7M88dB6tht -zmSsFHQs/iL6Wa0g0LkIpUbUzoa16kjKG+56xrDfHPOVO6PhR6Pao9zua2+eJlLS -5yhkRv3le35c8OIvaPiHDA+KZO62XsVC8SyVfTrHqx+qkjpuKfBoHOrvLsd1u5A0 -dWLRM86l0xlYzplt2JKPEg9n2dPmM6i/YVOfWfw0+QeO1sdoN1r+6n3PxU80u05W -HaB6RmefNWX0BQQOxCrQaR9eGUKSNnH5TCbFJhE9nKtFnNHJE4pqm7PxQ94L7WXz -Ubq4wHr4yT5hfZO6+PwTq7EWyxQX35phT7RuzVR9NL2Fg0vsHudLs9PJOwzYHDtp -8smJzCag9ZjfeSoG0TBOKuaKbOBM+Cm+6Q4Age6+MthZa2X5I38DIBGzpB6HQkCT -06WF01flA2UCCKFGIHgHjlSxQSKo+Ebgn2/qESXXiNL/xjNi/iHpJ+N1fH+WOk+T -4gjB/s8D1nuKi6Lb+dvez8mYkRe/E/dlbpyNKbC9d1nB3IY49A8pHPCC5Hdl0PAv -wwW0AS0rr3QdHSfpSl3VhqWcm+dEaCONkwH1Alj7o2zgL9OaFTZtETrDFSG7mUwg -hXF3+3XgjcUVvYn+2Jsu+U/IrZXNXKj7irU30a5CahwPHDa6xe3oJ9JCOAOU6BIw -aNekw/xliO1mk5Ppe4Tp -=E8je ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar deleted file mode 100644 index 030f4ed95b..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar.asc deleted file mode 100644 index e02df98a5e..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jNAAoJEJAqRX/iyO/5t+MP/160sg1TZ/86cavagZEXe6FC -EmYD4O9xBPkBjjjSdw+3b3wCU1/PXchJgAhGlcMYV7F2EOqi4vFL+dK1ZcjDb34q -CsZZ8dQzbO+SC/ejckD5Mes8puHf5/fLgbYunt8Io3bVR1oDI1KSpM+TW5JRRYlr -Qgo50yaxAEIjIMf0MOYM6egpbIBjDzVdtGA02lh62bVgVYR+ahnfIslILe7wkEL1 -p41oZxCe7roI1qiauDfDPQesDqXihqw60k0zpu4qJQlkKOQh0FMcgDzcDun9pbhJ -R7FCeGYgsxcG/BzTZyTygs6WzpYHoVmoMBBSXYe2CqLQGoyKCdYE+DawnNEXVQ8y -/uKb+ItkLm70oSjiVWJjFW2O9pnnueD9LV/6uH/6y/uFkN2+l11oQT04xge5fIH0 -fDzugqoQy4pn+nbM+IYn5N0qV7J9lnJhmn0rswYD9XaHoBHYNjlrI4GXENlUkJQ2 -mzKvmEH1lSRxijwMQhtPOeM9xVXTX5YZd5Ap3vwTJxwQ+PtC1XaSlt3I3RMvYE85 -IWgpW0cYz7MeGxk21Xdoa4omuGx0g/iO4RsoB61vTj8goyxrkQROzWj+38k3jbK5 -KyU1bfNcyN72REwoMjJeX6QQCiAybrzytynhdWshyKum/Da/nJiQ5WPjGMVW0Ve0 -jxZRr3KzvMCqdxThcrcB -=fIwn ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom.asc deleted file mode 100644 index 4039dec346..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jNAAoJEJAqRX/iyO/56KAP/2tp1kAWT9g/EP/5vX2P+xRw -Coc00aMATL11IgKHe6Ovcxc96X94zkNrc5i6tAO6bvw/NL3IsenAhOacrtwVhtPX -cgiiR8C1CEGD7nQAi24vpfDc6RFVUrfYvfGxu+l5thy4W6SGLq9cWxafikSSoCqH -Gn1DTJjWet6AHzw5xHSqsjxp1EdZeBr8jHPNnMB7vID3aelzRFEg5n17l3eN6pbl -U+YwEyIKF0oEdtH4VujFz33BSbsUKYJdWztdXaiIXDlnLKMl6FtNfgly6/KLoORL -CiU2xzI2uk34lf7RLgm7JyCfWDdPGWJCEnowpNPD1OKVvAHeROaUKmhSSgRIEDE9 -ryZipmLViNA6SD6JYuWYLEtx479Hc3K2NJr3HLUP6vR+kead3s1ChHgnXUG2nmBg -7khAVcFeP700BmG2VKOq0Qv5hk5jxRwH67JcISudlEPL37ZRrJ0YdRaPzdRo5jAF -V0GS00l5hs87Uy7BpHQ+DjfeGGC5/ADQL3AAIjhMr8krtOJlS431UbCaikGm5Zj0 -BLj3Wsx26vVb6qFE5YA/VzhOWZFic/NShB+pu6602Qoz9CzyP6op6wa6Q4XmAdoZ -8ryQiilr/dInQqwpNCyV9POCmRLroU15iRq5lNs0YVL0Gdlw8miZjS7H6HX5et4e -CCZwGCcrb2qnJnkID+iH -=nrRx ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar new file mode 100644 index 0000000000..e6f244baf2 Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..6c8fb3d837 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpIAAoJEJAqRX/iyO/51PAQAJKwl4E6lqTXf1uros/YF8R+ +EuZLHQ+fCtJMtpK9Nl7Cw7dTi1umILTk/EMyF6nVVXeuV94opDmFC8Ft/gQMkJvw +kkjdqJm/4Utf8FSrzX8CDQCHQUgT33iQFHmKoN5xK+iAlTmY/PtJsdBs7OLaPQv2 +cf9eu0meEQN7C6zYXvMYAWaPZfCwth0jtGRgXuqpIYgzENUQxsa3KtKzzherQZsu +FrvLXLSM0KCUc7WuZ9jW1+7Ri9rBCzxVYowQdUDcs+hafiJt5tXYOLU2jcMH+iNv +1AGW7PUCjJKAPpB/ac59GWLv0egyHMyG/vH8YlVD0AzGlIyb+dWefxXgZwK6MWxJ +d3Q/oCGAMv+LUV+IQeHMx0UuSmNKmQujp2J/LhkxpeLNeGZQANL7p2dNMI/ks06T +EIzOowNdrqTc49aXS4BthYN4czCHNXGrkEpDdWZbFE+GuhvVJPf6OESuBswYMjwi +ruWojJCtfl94YpCgpxEot8kxT9BjKbDaESrm+o/QiF8OGEr9UC1XTlhb1Up5bc0i +CVOCqpOFUWDmeVxVJmI4RCq1Jk+P0nUKoXB96nZS1FwkNhzkFNt8DeKMcLCpP3hz +CIHTGujZHTwQiAkNpX9efadBHup2wPYt8TlQltrljyo2iCAb8an1K6/rtrqUSGhk +c3X8C7W3I0wm22JxOD87 +=H5eB +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar new file mode 100644 index 0000000000..9f6274147e Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..5bbf6b2022 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpJAAoJEJAqRX/iyO/5CTMQALarNBDRceyXi4Ai7+qMd8oI +mgDgiqnRyVNPKiT8Y3Cz3FkUxzp6T7Vd/hrdWMOL0DHedD/HvGPG5xguX5sMz2Tm +HvZ+lz8VrTY4O2obF+2IXbw9QEpTeD7H+9XhaS4jdFdHVTcy9i1Hpt/vEz0DueYn +TpNYcL7gMQOz8TvR6rG9USV46gcLzOBFby43Gc7MIzUlsJjkEVvaX3c/1kQFGPqo +8R8ac3RmZGoYqDV9a1b0z1avVsiiXt8EJ981b4n/E9M0WEcbGdNBKYYA6qdaiXvv +9L8JjOrD/yA/OnL0EVboWCLh94IGQ2BD4e6DTFqrpGZL2ikLDTk44EUWzmtOmLNG +lTeAeL9P3EDCfON9Inv4XBLw8TMjr/RoIn1P0L/bz+WbV7TJL648+m2+NzRn1kBU +WJzj10vV0c2vuGMGCY3wo+gDKflwTb+Xj1tu3PdItXnDr/07JviHN6W8Tm1sbdVy +4ew8J2en4iuXcV9UOa4DXWmNCNAzdcvTa0QDDIC5rOV1igwXklR9MHLUOfPOgKOe +QoFd0oIoGS5n1FKa0I1fLwVpJXgaimJCZn8Q9fsMQMvcv8eQxgw7YnnKwA1WctH9 +X5VtQD1uWtkViIzyhpzqPxPHc6AhlnddnJ/PQExUGtxTTrWPmVA66gBMnFc38EzL +suTMixXMnS2D5OKJf1h2 +=WTLk +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module new file mode 100644 index 0000000000..304ab270ec --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module @@ -0,0 +1,105 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-plugin-android-ndk", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-android-ndk-5.5.0-react-native.aar", + "url": "bugsnag-plugin-android-ndk-5.5.0-react-native.aar", + "size": 1099446, + "sha512": "75afb6183f1d37ffb86b315b9e19843f0fc1635814b99941696e634ddd4ebaa64ba6145eaf231268e8aa10923e74772e73fa3a152e74a3dd14faf5f66136a5b1", + "sha256": "0593a8a82ec0f403368b66c751fbd916a4e57cc94dd5877dde9fe24d6c747854", + "sha1": "df8a36ace432fbb600e2b088d723e5bf13a01542", + "md5": "5784389f1f15eace6f46417362bd53f5" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-android-ndk-5.5.0-react-native.aar", + "url": "bugsnag-plugin-android-ndk-5.5.0-react-native.aar", + "size": 1099446, + "sha512": "75afb6183f1d37ffb86b315b9e19843f0fc1635814b99941696e634ddd4ebaa64ba6145eaf231268e8aa10923e74772e73fa3a152e74a3dd14faf5f66136a5b1", + "sha256": "0593a8a82ec0f403368b66c751fbd916a4e57cc94dd5877dde9fe24d6c747854", + "sha1": "df8a36ace432fbb600e2b088d723e5bf13a01542", + "md5": "5784389f1f15eace6f46417362bd53f5" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..d820962755 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpJAAoJEJAqRX/iyO/5SK8P/ihL7fqhHrVOGNLBrsHY4E6e +iFf2aYDKT4O8MhqjzA7QiQ3a+YURbbfb99IVcwcULFekXH4LoGItPHrWR13n+Dv9 +r12nuBvXcdVcbLlTGgjFyCHDBeiAQe+ryJzF/a0Ivb+w3LkDQLoYf3KhKkKmDxrV +KRFo2+T7vO1VCrv5Qeu7c7m6ar/7kFiNGXw5MtKsMJjSvAtHsFVefLbvuvSgtZyS +JQQVgmdNDDbFEMrj6VOBKTRoh1nGsr/Qu5ZLwp36m8TnJDdKEhGLxMeqzrV85ljO +m8HtMBekIar5ZQymEWQOFd50xV++BUPHF8Gi+WNqbohcUbPigWBGzlRFMUo29BeV +VbDFNEGLuLm78mC1o5S1+3sYjbEToW8WLOSF1dRW/bZgFC9cIooodAlnyeJOTZTW +kKfiK6nUkpPLzYhgwyXnvXhz3GI0tGSdV9jekAtAYCN709maH+vhUx6eLw1kU/Wl +L7p7yeWEPeb/0Fbq76lM6WVJxeg98fDGB2Mqbo++UKUUYLoSZVdST1MhhtdpYvg6 +xhYHUhvJymTn/nFaQBcNcAQKCoTFmc2r2ltPqz9B1uygLlCXFwG//nG90ef8qMZH +SYF2PFGo0ip5budZQZEt7mc3+HD0EwWMPomVD/TBtFMt7pllOXAVIBLKtl13mvI/ +SkRnrdabhRqOsBVhIzkZ +=oHoD +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom similarity index 67% rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom index 3686fb475c..1069c38156 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.4.0-react-native/bugsnag-plugin-android-ndk-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-plugin-android-ndk - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android NDK Official Bugsnag notifier for Android applications @@ -30,7 +36,7 @@ com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native compile @@ -42,7 +48,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.3.61 + 1.3.72 compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..2078a9b526 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-android-ndk/5.5.0-react-native/bugsnag-plugin-android-ndk-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpIAAoJEJAqRX/iyO/5S8MP/iSdYIw/zDIDdRL9eZ3bUKi4 +rVff/lhUL/kjc0yXuXLd0QVYdOQSuJMDS8yNiBe59+Qe5kPIR7Om73jO268l37oa +19NRzjePgiErBWj5uW91xeKtoG0Wm2xeT4J3Fn5FFR+kpljvfxdCCYu2IDp7aJ8C +NDEENc45uB62kPgaFhnUCPLLw1pOw50obFDL1EAJnCncoDM5JwURv5v8jNE+NJv2 +xu3nd51+0veUJM800w/vxu5OO7T+2lJ1bSn/YzbQCdDe0oPvP1/v1wmFgvsHN1TF +Y6FUM1xaCpzvzXEKtukDpz2rWf80I6U2FNIhekumq5l/Hz3vzyOPTFd84Xw4JfiR +vaqoV0gWpc6fg2TRAN47ic7IepCQYbMZjhAFjd6bDBJDFVvRWOrbEZdLKYzzN7LZ +DVjr48JdmjZkrTnj2ZWiyluSdvKK5y5hUXjrCg5wKAjxylaEaytxY+9hzlY5fmzP +093uqmoKvsiX26UZvZ/ctSxZ0lqjuYgz9lPu1eQuME6A88aqZlXOXZUvXK8/Ook+ +6ododG28j2wDm0G7cLm4dDLuMqdL9k4EYC30tP+/5uA4DueYp3fVM0Ij0O6hguKT +f8vRjNVrvc419GFiHOTQqRVRoKVKwT9RVYox2Wug3Eg++usiqFUGGSOP9rf2GQS4 +wWc9d41dyp1WbdHw0q/i +=P3UV +-----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 abbea8f17e..3ed5fe038f 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122133 + 20210111092841 diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar.asc deleted file mode 100644 index cda8acf40b..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jOAAoJEJAqRX/iyO/57iEQALjhFwvq20zTau/NqzlpIgOM -kLoDMtTVxin2kCqxPNRTLQ69dqB0Pg1KyVQVgoHQ6y5aHUIwk15TXp2C+a4gPTDP -DyW1dbRalTpuTA9Q7LkRs8CoS9RxjMLlLyiqFqj7bWOIVu/JqaHhPG5syMq2I4p0 -MSFXyvJZwB2LbTrTclUzPy8RQVhTIHKU7TccA8vnnO8Sd5Ibkh/rWBi7LKoa2vkT -UtKKOa1viTfl7ZeqduyBbVM/B7wNdTnvQHRiH2oppcvlweUYpZIXuqxUdlTJ9195 -L3v+lvMqTJrYxJCXEa9kvzIM7tpkwxKFUiPaK7P2uNnpnTBWj9UJ02ChafPZsjI6 -XZFx57qmLhT6+H92B94ZQSrzwBgliLvL1LRKDx7FPlgBuV7w/Xgfdhs+dS6bOC/p -+qsQZcoyMFGLN0O/oJJSu3VKHeYhJTIvAWMVVJf+iSDPaskmByjfWwtMdGqbzatf -mQ58dGxPKY5OKNK0XGS6kuybCPNLGideBmLqYE3TTvCNKpH103hE8YO2+fsTaGD5 -284DiPkZwJOahL71Rp36cFngjzcqTNiKVaPoIx9uYShvOnDU5sxLaJ31I86wKn/+ -iiFQKRxHS8EMEVDYVveWuDmYujSzU2smD8RW7WuzCqSbGnhuucitP+aHCCpd8Bjv -Y3MSANr4K+cjFp9vsMeH -=71rh ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar deleted file mode 100644 index 31ff0eb6af..0000000000 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar and /dev/null differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar.asc deleted file mode 100644 index 7876f8b50d..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.aar.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jOAAoJEJAqRX/iyO/5+9UP/2oJduyd02pzTb/xqMCRtO9q -+jSgxRrIm6rPWCbwml1C+gP1xMzhj9oaEPDvLRskfEDUKTHBMEQ6GOKqlOVppvGN -2chCLwGEt+JG5wqrPqWWUAMD8BnjgVQgUJXocwMyrtzEyL8fkPqe7jUWIKHbe06O -/GpsSTivonOBugNmwmFtrCCtUkJXsbdO6XPZNh2HJoE5HEaO0T/voKNZCrF5BguT -j6RV1ng3btRYOhjtj+dCSn/b8EF+eW6Ux9oCPIKio/1Zd8MC6ngxr377mtTXZfB/ -+H9Sk8h19RjtRhQammWO5ZA6AY5DdqepUiq1fcBl2Agen/F2ng1iZdxeaQVodvIQ -oXa7QH5wqnl+B7bF3RRf0tXSE6R9+jBeFrHFQaICdhl4z1RMPqAICO4APJU0JD4n -2OZGKojVDnfUHm602iXJUfv6a2LpIa6Lgu59ACFxveox8U/g9Dku4NkQkDf8yXm4 -Jy1YxAxk5eCTs+W8l5Jkbn9p/MtI/vaAt5h5CVuYaZUiPqd0N1e+KhVBtBV3CKBF -EYG7+j//Pc1D6cBwuRQGqYQ8Z17SClWooadIpI7UutfuxXb4Bmz5UzV28765XJTc -ycI0NX8SfGo4quHDIAWE1gkTx81nSqbrit9xX2vSLwfRPRMr6sTRjQZuC+UmFWSJ -SiD0tBRkGHSXF//dF20E -=u8np ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom.asc deleted file mode 100644 index bdb0b0b5ae..0000000000 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: BCPG v1.64 - -iQIcBAABCgAGBQJf11jNAAoJEJAqRX/iyO/51E8QAKn72uQmgjTo3BNhNY1EMsln -0EPJOnjbc3tsAkTRMdZSdgC5TWOQ3kQk9AXEZnEKDaOE2PSOn12RC1QpfZ1xF51X -1H7sTurhzRcIbmtIWFiAJI7jMh4KoBSl1xZ5gwhxpXujm/utCTPjUH76fDaZWi7J -EWDs47PuG6ZTt85KcQSd2nTLDD2E0hewQmzB+nLvzw8YeqmeRAwr8EfnAOOEhQeh -fpD1igcQl5IOgzLIecjzh/OZYg7VS8oXSUPrVKL9mrgMU9P1ejIx+z+zuH4g6HiR -rYlvZNlA0BgE7gP4VlgHH5Lx83NlUdLsOxUMTdBRQvnL7kevyMjOG5f63b7GoD2R -GZ85DFi15KMOKLYYjtA86pWHex8Lh/oJ6RpA9W8adik2RraaWxGKXn5vd5tI5gEM -8zR57QTyR98SswyJoQ2ZGeiXT/Xen5xc17JGGcM894KIhQLvPEjYe14tMuqzbqhS -ykQ7mc/keGHRFX7x7wvmo9Gl7Q+E0mrVtIBIZ18+mzq0EP6rHPLTtvp1LKM3iv2d -Loc3KaeZ4eFmvNOKMxdgusEEMtEa0dYR/I7C22ZLYYhE7k0PUO1pwugCr+VJgVrh -6IwPodz/0ZzL5yIJ43Tp9UBkbM3QOJNIDv0DTv7rXxhBHDiPJugnr9gJNRkRPjEn -TmyuBPf8a9efAItDrk7X -=DuIo ------END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar similarity index 94% rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar index e775793098..8b788a8c45 100644 Binary files a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native-sources.jar and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar.asc new file mode 100644 index 0000000000..ba471f4a27 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5AMEP/jKL+/VxmEQ4uBmz7KiAa+FD +I40N5aRyH50U6i4//JsYrxeZo5jVVN0pYh3w5WPtiMWVM+wtLKG1G0xMQvr8TtjL +77b8EeJ6kuz03pOeMxncSHqdokTqAJr7vjlEXETdb88VRsRHztl5kzp3Bjmc7zQ/ +jvZ+8FPPp7Ef5Ba3AdaAb2PpWYbxrwIONJYBZKH+fjiSb5UawVhAyQAfYnQ5aNJS +Le24vovjlrrqDdbPAVAW0SWFBqupa03Bv5oxgvnnevnCElWM3qySQCmkvLchItH7 +RVfoUlKxF+Dnb1T1fheOKFOtQkclP28r7xzToeqKkGog83Nrr4Z7Kz/8PnHddmD5 +YqHinGN6yqENrqj7b7/zGvXia18ae6UP75MMzEPgCjFQL3SPRWeQbe2ScsTCNq47 +CYUcgBffw49J3X0ajMMchZHd3ci9Uyk4I03A1QlLfYBhRbbyIGzVU2+MGAgiGKDr +oKwMoDyFSvbmTwwOVGCtRoMwEF94/xzx21jMW0BHDGAWfUa7xeppgb+G6pnvZdBA +n7hzV/H7C87ZHmr3xhdpHvE8lLBLbjM6+U+jDX9bOUbwvOiEIb+buoML1HICxCIQ +tHzYl8sN/yg2fW+2wycQtzro+OvSJAteyM3qcycLfQfsKUgjdwQeoY4YazCQ/UIH +HBHtVMtwePDjtmhBtNBl +=sOZ5 +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar new file mode 100644 index 0000000000..f586d3510f Binary files /dev/null and b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar differ diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar.asc new file mode 100644 index 0000000000..0cb3fe870d --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.aar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5+e0P/jdhcMuLU3FKQ8z9dQt+4bpj +v19ttoYia/VnWecfFxQyq9fCKUvHZ6170axdQKsT6+EZf9Twc/tKmdKi1U1G4Klk +h+ilRKw/PGQpuN5eTi4gCW81zA37rd+HCCjMrL4nvdtx/65gUIQkl2pBvSvhHipz +Nh+f9DNC1tCHDddrYYBsjrjdT7s+3Oau4OkDU9JLkYTM1tOXCuf5jcUHsLR9g/D5 +ohanS+5+8ec3rXqQISY0NLKHSOUxpdDi6C01id86N3pK8wQWHVjAy4rE3pIY0dF8 +x9h11Krc1pf6Z10oMKGA8cUi+7X3Y4s20HBLwYrR5bgspurBLbtJCQwVHLog70Xh +q7Y8ZpQPtqolwNsWYhxeA0xWJKkM6Lek/FCKQknWQtUMnt66PDn4Qb9FJ1rvNdMr +iN0W0kJeDGcAizFoRwQkooRQ+uOw43MLFlrdnNhkxvAMrbL5JMRMdwh674qASsH5 +oT7/HpXI0V46Fm7tZYD7YiSM25W71FuuiN7x1RlylYVycuMxjKsL/PoKtDVlFfT9 +/0g+/qc76nh7WwUt5SHxkRWf9+olq8487HZvnZgylBn3EzsrExbNCl6j8Z9zRFzj +mNQjGhZv3p1oEVuiwva0x7XTTk3DTjhCptt1Ckx3InvBR3zWSA0QbXaht3Rsn09U +RYzdkRKrHZZaKziB9Mus +=WLIs +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module new file mode 100644 index 0000000000..cf797e1f22 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module @@ -0,0 +1,105 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.bugsnag", + "module": "bugsnag-plugin-react-native", + "version": "5.5.0-react-native", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "6.7", + "buildId": "w6ywacghgze7pnni24xevplabi" + } + }, + "variants": [ + { + "name": "releaseApiPublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-react-native-5.5.0-react-native.aar", + "url": "bugsnag-plugin-react-native-5.5.0-react-native.aar", + "size": 36441, + "sha512": "15b574f55a36ac5c452166d4998c62c7c758d39efe9678141fbb9f954cce0ae30ab4ce6c5eb7bd7319832a0426a61262dafd169630723a6974eafb3bf319fe0d", + "sha256": "00a945801f529cb45763cb5f9c83167b8cf66920558c02e9bcb728fa301b3327", + "sha1": "7ca76478d6652bcc20a05baaa50f54673806c8a7", + "md5": "a08b9ecd547e354be47cb5431c6e93e1" + } + ] + }, + { + "name": "releaseRuntimePublication", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.bugsnag", + "module": "bugsnag-android-core", + "version": { + "requires": "5.5.0-react-native" + } + }, + { + "group": "androidx.annotation", + "module": "annotation", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib", + "version": { + "requires": "1.3.72" + } + } + ], + "files": [ + { + "name": "bugsnag-plugin-react-native-5.5.0-react-native.aar", + "url": "bugsnag-plugin-react-native-5.5.0-react-native.aar", + "size": 36441, + "sha512": "15b574f55a36ac5c452166d4998c62c7c758d39efe9678141fbb9f954cce0ae30ab4ce6c5eb7bd7319832a0426a61262dafd169630723a6974eafb3bf319fe0d", + "sha256": "00a945801f529cb45763cb5f9c83167b8cf66920558c02e9bcb728fa301b3327", + "sha1": "7ca76478d6652bcc20a05baaa50f54673806c8a7", + "md5": "a08b9ecd547e354be47cb5431c6e93e1" + } + ] + } + ] +} diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module.asc new file mode 100644 index 0000000000..efdc050b78 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.module.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/50cEQAIpq7jSOSgnZfpdhQeNs5UFP +lwM/rxF12+1F4k8atLGDSripK+kT2PHU8WY8VUPmHWRxs8Uzy8NWVi26yBwEdcyv +Uan2OwZtOiKnOEq5vtZZr15dj7QK9mPgE9pRxp8f8jtpn8ijY3h6p2PXKFsaydip +LG5DCMFq4NyQqOx0zzn23DPJWfg7tEgiXRDJidQf5iYB9UM/6vs3KcSTfHfoz5Wk +P/RBF3qWCXxfrLgTmAhSso5dQk4rgfaGZ/orjXr2yA8lIE6QZPUtcsUPYU4sT03r +w7RSPdInZTccREbyn53od3G8AzPZAoV/auPTY46jw3H8rFLqZuM9RXyUnBhqRPh5 +ZrK+smMcx0dY4GKlcmupOdQ7QQLk4ofHmgjUo+8IKETh6g67UktQDAbW3pCh+l71 +cBWchRGI5wPFwGdz4UowuQHH+JrMbdtzMgex08j8pKYQIiDZTKQ8cxv0sngn+gBE +dXoBLyiRiy0CJzyMT+dL3Mx46Pv3gJHN5eMm/g/CuO1jkWYZkQbgBMB0XkCV0LGr +c8mbENO18W7I+/LUGTwRthmvFqotjRxxSYZm6pc/MPQVKSlUbwvUWpS33gxSLgy3 +m06j5I+NR55dMdJIkqCO9ekCZPFGaXDbp/jCRXThy8I4WXphmNSIYT/6UsyOlQLo +M1Oyzrlj7iWAaaTsNpl2 +=wDpf +-----END PGP SIGNATURE----- diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom similarity index 67% rename from packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom rename to packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom index 34eb0b1737..550fa03815 100644 --- a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.4.0-react-native/bugsnag-plugin-react-native-5.4.0-react-native.pom +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom @@ -1,9 +1,15 @@ - + + + + + + 4.0.0 com.bugsnag bugsnag-plugin-react-native - 5.4.0-react-native + 5.5.0-react-native aar Bugsnag Android React Native Official Bugsnag notifier for Android applications @@ -30,7 +36,7 @@ com.bugsnag bugsnag-android-core - 5.4.0-react-native + 5.5.0-react-native compile @@ -42,7 +48,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.3.61 + 1.3.72 compile diff --git a/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom.asc b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom.asc new file mode 100644 index 0000000000..5d7c39ff79 --- /dev/null +++ b/packages/react-native/android/com/bugsnag/bugsnag-plugin-react-native/5.5.0-react-native/bugsnag-plugin-react-native-5.5.0-react-native.pom.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJf/BpFAAoJEJAqRX/iyO/5cmAP/3+aEPLaHNBRWWusATZAG6ER +Tm/hmMqPbcs0KG80KN7lnVrFwk2p8jJPa5+USGxxWHQLg1YkCzZwCTupCQmKM+Te +Uybik2vku82OMuxBUeeqCVbddkm/tGJ6IPVyw3gaCGrT6IdtYvQH+rFmr9JI6Dvd +B5LbG23KW7VMOv0nsoprkWi28/ZltWWCX29EksEfDNfqs0c3ZZzUTrNWgpWgblGh +grcPoxwt1ZW1kb+ZEk7frb1YrJ57bdHAVnTxBmTEFO5cKtIHdoL9xoGODgpmut/V +4ViBdZtJ5gvV+3f7H3lboGNWaYkw2CvFu+TSOlGm2h46PNgrjNMrkm5CgHzOCoDK +DwjHtm+zSVBOqG8hQwNJdP+o/lNl87xoo3xI/wAXrS6OxvTVwCN+6CardZKrVj2T +mIoJffMSOFAYedo2Q8Lh6AcyGcm9LS4Nvt2s8qco6tkvhgtnKqVRIMpgOyEJgowi +ZKFV+l0oIEMbwI++dlEsQY2hLiqMA23f27VjTmqkFRS+qm2YDpPamXXwlwv7oh5W +t0zLw2P7iPbrmyO6laLCBHcDY6IGnVOlu5wL2s2bLCs63fSd+0zGHzVuDj3I4Ad4 +43U7qSM2j0YirRVQ6uk6TEa5UetXmkfjpNQN2caAjZXitjf4pgWnvQ9jL8njLVpq +heDtq52UY2ITxW1gf1+9 +=FHAl +-----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 ca04d47a19..1e3772743e 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.4.0-react-native - 5.4.0-react-native + 5.5.0-react-native + 5.5.0-react-native - 5.4.0-react-native + 5.5.0-react-native - 20201214122134 + 20210111092837 diff --git a/packages/react-native/ios/.bugsnag-cocoa-version b/packages/react-native/ios/.bugsnag-cocoa-version index 5575cd6071..ebdb49639a 100644 --- a/packages/react-native/ios/.bugsnag-cocoa-version +++ b/packages/react-native/ios/.bugsnag-cocoa-version @@ -1 +1 @@ -59881aff8a17e68b6027aac3f3ac0aa05d266cdc +75ea085426f483b2fd46dbcae9a3a5d2a3f5496c diff --git a/packages/react-native/ios/BugsnagReactNative/BugsnagEventDeserializer.m b/packages/react-native/ios/BugsnagReactNative/BugsnagEventDeserializer.m index 6500b46510..c46a6d1d82 100644 --- a/packages/react-native/ios/BugsnagReactNative/BugsnagEventDeserializer.m +++ b/packages/react-native/ios/BugsnagReactNative/BugsnagEventDeserializer.m @@ -8,80 +8,28 @@ #import "BugsnagEventDeserializer.h" +#import "Bugsnag+Private.h" +#import "BugsnagAppWithState+Private.h" +#import "BugsnagBreadcrumb+Private.h" +#import "BugsnagClient+Private.h" +#import "BugsnagDeviceWithState+Private.h" +#import "BugsnagError+Private.h" +#import "BugsnagEvent+Private.h" +#import "BugsnagHandledState.h" +#import "BugsnagSessionTracker+Private.h" #import "BugsnagStacktrace.h" - -BSGSeverity BSGParseSeverity(NSString *severity); - -@interface Bugsnag () -+ (id)client; -+ (BugsnagConfiguration *)configuration; -@end - -@interface BugsnagClient() -@property id sessionTracker; -@property BugsnagMetadata *metadata; -@end - -@interface BugsnagError () - -- (instancetype)initWithErrorClass:(NSString *)errorClass - errorMessage:(NSString *)errorMessage - errorType:(BSGErrorType)errorType - stacktrace:(NSArray *)stacktrace; - -@end - -@interface BugsnagMetadata () -@end - -@interface BugsnagHandledState: NSObject -- (instancetype)initWithSeverityReason:(NSUInteger)severityReason - severity:(BSGSeverity)severity - unhandled:(BOOL)unhandled - unhandledOverridden:(BOOL)unhandledOverridden - attrValue:(NSString *)attrValue; -+ (NSUInteger)severityReasonFromString:(NSString *)string; -@end - -@interface BugsnagAppWithState() -+ (BugsnagAppWithState *)appFromJson:(NSDictionary *)json; -@end - -@interface BugsnagDeviceWithState() -+ (BugsnagDeviceWithState *)deviceFromJson:(NSDictionary *)json; -@end - -@interface BugsnagUser() -- (instancetype)initWithDictionary:(NSDictionary *)dict; -@end - -@interface BugsnagThread () -+ (instancetype)threadFromJson:(NSDictionary *)json; -@end +#import "BugsnagThread+Private.h" +#import "BugsnagUser+Private.h" @interface BugsnagEvent () -- (instancetype)initWithApp:(BugsnagAppWithState *)app - device:(BugsnagDeviceWithState *)device - handledState:(BugsnagHandledState *)handledState - user:(BugsnagUser *)user - metadata:(BugsnagMetadata *)metadata - breadcrumbs:(NSArray *)breadcrumbs - errors:(NSArray *)errors - threads:(NSArray *)threads - session:(BugsnagSession *)session; -- (NSDictionary *)toJson; - (void)attachCustomStacktrace:(NSArray *)frames withType:(NSString *)type; @end -@interface BugsnagBreadcrumb () -+ (instancetype)breadcrumbFromDict:(NSDictionary *)dict; -@end - @implementation BugsnagEventDeserializer - (BugsnagEvent *)deserializeEvent:(NSDictionary *)payload { BugsnagClient *client = [Bugsnag client]; - BugsnagSession *session = [client.sessionTracker valueForKey:@"runningSession"]; + BugsnagSession *session = client.sessionTracker.runningSession; BugsnagMetadata *metadata = [[BugsnagMetadata alloc] initWithDictionary:payload[@"metadata"]]; BugsnagHandledState *handledState = [self deserializeHandledState:payload]; diff --git a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNative.m b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNative.m index 14db55b577..312b152a6c 100644 --- a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNative.m +++ b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNative.m @@ -1,24 +1,12 @@ -#import "Bugsnag.h" -#import "BugsnagClient.h" #import "BugsnagReactNative.h" + +#import "Bugsnag+Private.h" +#import "BugsnagClient+Private.h" #import "BugsnagReactNativeEmitter.h" #import "BugsnagConfigSerializer.h" #import "BugsnagEventDeserializer.h" -@interface BugsnagClient () -- (NSDictionary *)collectAppWithState; -- (NSDictionary *)collectDeviceWithState; -- (NSArray *)collectBreadcrumbs; -- (NSArray *)collectThreads:(BOOL)unhandled; -@property id notifier; -@property id sessionTracker; -@property BugsnagMetadata *metadata; -@end - @interface Bugsnag () -+ (BugsnagClient *)client; -+ (BOOL)bugsnagStarted; -+ (BugsnagConfiguration *)configuration; + (void)updateCodeBundleId:(NSString *)codeBundleId; + (void)notifyInternal:(BugsnagEvent *_Nonnull)event block:(BOOL (^_Nonnull)(BugsnagEvent *_Nonnull))block; @@ -26,18 +14,6 @@ + (void)addRuntimeVersionInfo:(NSString *)info withKey:(NSString *)key; @end -@interface BugsnagMetadata () -@end - -@interface BugsnagEvent () -- (instancetype _Nonnull)initWithErrorName:(NSString *_Nonnull)name - errorMessage:(NSString *_Nonnull)message - configuration:(BugsnagConfiguration *_Nonnull)config - metadata:(BugsnagMetadata *_Nullable)metadata - handledState:(BugsnagHandledState *_Nonnull)handledState - session:(BugsnagSession *_Nullable)session; -@end - @interface BugsnagReactNative () @property (nonatomic) BugsnagConfigSerializer *configSerializer; @end diff --git a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativeEmitter.m b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativeEmitter.m index 020a057afe..fdc3490c31 100644 --- a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativeEmitter.m +++ b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativeEmitter.m @@ -1,18 +1,11 @@ #import "BugsnagReactNativeEmitter.h" -#import "Bugsnag.h" -#import "BugsnagClient.h" -@interface BugsnagStateEvent: NSObject -@property NSString *type; -@property id data; -@end +#import "Bugsnag+Private.h" +#import "BugsnagClient.h" +#import "BugsnagStateEvent.h" typedef void (^BugsnagObserverBlock)(BugsnagStateEvent *_Nonnull event); -@interface Bugsnag () -+ (BugsnagClient *)client; -@end - @interface BugsnagClient () - (void)addObserverWithBlock:(BugsnagObserverBlock _Nonnull)block; - (void)removeObserverWithBlock:(BugsnagObserverBlock _Nonnull)block; diff --git a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativePlugin.m b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativePlugin.m index fa7f672294..6ab363d971 100644 --- a/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativePlugin.m +++ b/packages/react-native/ios/BugsnagReactNative/BugsnagReactNativePlugin.m @@ -1,12 +1,9 @@ +#import "BugsnagReactNativePlugin.h" + #import "Bugsnag.h" -#import "BugsnagClient.h" +#import "BugsnagClient+Private.h" #import "BugsnagConfiguration.h" #import "BugsnagError.h" -#import "BugsnagReactNativePlugin.h" - -@interface BugsnagClient () -@property(nonatomic, readwrite, retain) BugsnagConfiguration * configuration; -@end @interface BugsnagReactNativePlugin () @end 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 5de71ad21b..fdb946e55e 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.4.1", + "version": "6.5.0", "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.4.1" + "tag": "v6.5.0" }, "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 3ba9fe84b1..356219d2aa 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 @@ -34,9 +34,6 @@ 008966F42486D43700DC48C2 /* BugsnagThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A72486D43400DC48C2 /* BugsnagThreadTest.m */; }; 008966F52486D43700DC48C2 /* BugsnagThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A72486D43400DC48C2 /* BugsnagThreadTest.m */; }; 008966F62486D43700DC48C2 /* BugsnagThreadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A72486D43400DC48C2 /* BugsnagThreadTest.m */; }; - 008966F72486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A92486D43400DC48C2 /* RegisterErrorDataTest.m */; }; - 008966F82486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A92486D43400DC48C2 /* RegisterErrorDataTest.m */; }; - 008966F92486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966A92486D43400DC48C2 /* RegisterErrorDataTest.m */; }; 008966FD2486D43700DC48C2 /* BugsnagOnBreadcrumbTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966AB2486D43500DC48C2 /* BugsnagOnBreadcrumbTest.m */; }; 008966FE2486D43700DC48C2 /* BugsnagOnBreadcrumbTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966AB2486D43500DC48C2 /* BugsnagOnBreadcrumbTest.m */; }; 008966FF2486D43700DC48C2 /* BugsnagOnBreadcrumbTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 008966AB2486D43500DC48C2 /* BugsnagOnBreadcrumbTest.m */; }; @@ -423,9 +420,9 @@ 008969812486DAD100DC48C2 /* BSG_KSObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0089690F2486DAD000DC48C2 /* BSG_KSObjC.h */; }; 008969822486DAD100DC48C2 /* BSG_KSObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0089690F2486DAD000DC48C2 /* BSG_KSObjC.h */; }; 008969832486DAD100DC48C2 /* BSG_KSObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0089690F2486DAD000DC48C2 /* BSG_KSObjC.h */; }; - 008969842486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */; }; - 008969852486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */; }; - 008969862486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */; }; + 008969842486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */; }; + 008969852486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */; }; + 008969862486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */; }; 008969872486DAD100DC48C2 /* BSG_KSMachApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 008969112486DAD000DC48C2 /* BSG_KSMachApple.h */; }; 008969882486DAD100DC48C2 /* BSG_KSMachApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 008969112486DAD000DC48C2 /* BSG_KSMachApple.h */; }; 008969892486DAD100DC48C2 /* BSG_KSMachApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 008969112486DAD000DC48C2 /* BSG_KSMachApple.h */; }; @@ -609,13 +606,6 @@ 00AD1C7C24869B0E00A27979 /* Bugsnag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00AD1C7224869B0E00A27979 /* Bugsnag.framework */; }; 00AD1CB624869C1200A27979 /* Bugsnag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00AD1CAD24869C1200A27979 /* Bugsnag.framework */; }; 00AD1CD224869C2400A27979 /* Bugsnag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00AD1CC924869C2400A27979 /* Bugsnag.framework */; }; - 00AD1F022486A17900A27979 /* RegisterErrorData.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF42486A17600A27979 /* RegisterErrorData.h */; }; - 00AD1F032486A17900A27979 /* RegisterErrorData.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF42486A17600A27979 /* RegisterErrorData.h */; }; - 00AD1F042486A17900A27979 /* RegisterErrorData.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF42486A17600A27979 /* RegisterErrorData.h */; }; - 00AD1F052486A17900A27979 /* RegisterErrorData.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD1EF52486A17600A27979 /* RegisterErrorData.m */; }; - 00AD1F062486A17900A27979 /* RegisterErrorData.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD1EF52486A17600A27979 /* RegisterErrorData.m */; }; - 00AD1F072486A17900A27979 /* RegisterErrorData.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD1EF52486A17600A27979 /* RegisterErrorData.m */; }; - 00AD1F082486A17900A27979 /* RegisterErrorData.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD1EF52486A17600A27979 /* RegisterErrorData.m */; }; 00AD1F102486A17900A27979 /* BugsnagSessionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF82486A17700A27979 /* BugsnagSessionTracker.h */; }; 00AD1F112486A17900A27979 /* BugsnagSessionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF82486A17700A27979 /* BugsnagSessionTracker.h */; }; 00AD1F122486A17900A27979 /* BugsnagSessionTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EF82486A17700A27979 /* BugsnagSessionTracker.h */; }; @@ -646,6 +636,19 @@ 0126DF1D257A92860031A70C /* BugsnagSession+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0126DF1A257A92860031A70C /* BugsnagSession+Private.h */; }; 0140D29A25767C9A00FD0306 /* BugsnagApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9103632502320A00E9D1E2 /* BugsnagApiClientTest.m */; }; 01447605256684500018AB94 /* BugsnagApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9103632502320A00E9D1E2 /* BugsnagApiClientTest.m */; }; + 016875C6258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 016875C5258D003200DFFF69 /* NSUserDefaultsStub.m */; }; + 016875C7258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 016875C5258D003200DFFF69 /* NSUserDefaultsStub.m */; }; + 016875C8258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 016875C5258D003200DFFF69 /* NSUserDefaultsStub.m */; }; + 01468F5225876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 01468F5025876DC1002B0519 /* BSGNotificationBreadcrumbs.h */; }; + 01468F5325876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 01468F5025876DC1002B0519 /* BSGNotificationBreadcrumbs.h */; }; + 01468F5425876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 01468F5025876DC1002B0519 /* BSGNotificationBreadcrumbs.h */; }; + 01468F5525876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */ = {isa = PBXBuildFile; fileRef = 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */; }; + 01468F5625876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */ = {isa = PBXBuildFile; fileRef = 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */; }; + 01468F5725876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */ = {isa = PBXBuildFile; fileRef = 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */; }; + 01468F5825876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */ = {isa = PBXBuildFile; fileRef = 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */; }; + 0163BF5925823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0163BF5825823D8D008DC28B /* NotificationBreadcrumbTests.m */; }; + 0163BF5A25823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0163BF5825823D8D008DC28B /* NotificationBreadcrumbTests.m */; }; + 0163BF5B25823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0163BF5825823D8D008DC28B /* NotificationBreadcrumbTests.m */; }; 0187D464255BD7B800C503D9 /* BugsnagApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9103632502320A00E9D1E2 /* BugsnagApiClientTest.m */; }; 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 */; }; @@ -794,7 +797,7 @@ E701FAB12490EFE8008D842F /* ConfigurationApiValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E701FAAE2490EFE8008D842F /* ConfigurationApiValidationTest.m */; }; E74628FC248907C100F92D67 /* BSG_KSCrashDoctor.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969002486DAD000DC48C2 /* BSG_KSCrashDoctor.m */; }; E74628FD248907C100F92D67 /* BSG_KSJSONCodecObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969082486DAD000DC48C2 /* BSG_KSJSONCodecObjC.m */; }; - E74628FF248907C100F92D67 /* BSG_KSMachHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */; }; + E74628FF248907C100F92D67 /* BSG_KSMachHeaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */; }; E7462900248907C100F92D67 /* NSError+BSG_SimpleConstructor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0089691E2486DAD000DC48C2 /* NSError+BSG_SimpleConstructor.m */; }; E7462901248907C100F92D67 /* BSG_KSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969262486DAD000DC48C2 /* BSG_KSLogger.m */; }; E7462902248907C100F92D67 /* BSG_KSCrashState.m in Sources */ = {isa = PBXBuildFile; fileRef = 008969292486DAD000DC48C2 /* BSG_KSCrashState.m */; }; @@ -901,7 +904,6 @@ E746299524890D3200F92D67 /* BugsnagCrashSentry.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00AD1F002486A17900A27979 /* BugsnagCrashSentry.h */; }; E746299624890D3200F92D67 /* BugsnagSessionTracker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00AD1EF82486A17700A27979 /* BugsnagSessionTracker.h */; }; E746299724890D3200F92D67 /* BugsnagErrorReportSink.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00AD1EFD2486A17800A27979 /* BugsnagErrorReportSink.h */; }; - E746299824890D3200F92D67 /* RegisterErrorData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00AD1EF42486A17600A27979 /* RegisterErrorData.h */; }; E75A5CDB248A5D97005D2C74 /* BugsnagErrorReportSink.h in Headers */ = {isa = PBXBuildFile; fileRef = 00AD1EFD2486A17800A27979 /* BugsnagErrorReportSink.h */; }; E75A5CDC248A5DA2005D2C74 /* BugsnagErrorReportSink.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AD1EF92486A17700A27979 /* BugsnagErrorReportSink.m */; }; /* End PBXBuildFile section */ @@ -1020,7 +1022,6 @@ E746299524890D3200F92D67 /* BugsnagCrashSentry.h in CopyFiles */, E746299624890D3200F92D67 /* BugsnagSessionTracker.h in CopyFiles */, E746299724890D3200F92D67 /* BugsnagErrorReportSink.h in CopyFiles */, - E746299824890D3200F92D67 /* RegisterErrorData.h in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1034,7 +1035,6 @@ 008966A62486D43400DC48C2 /* BugsnagMetadataRedactionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagMetadataRedactionTest.m; sourceTree = ""; }; 008966A72486D43400DC48C2 /* BugsnagThreadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagThreadTest.m; sourceTree = ""; }; 008966A82486D43400DC48C2 /* BugsnagTestConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BugsnagTestConstants.h; sourceTree = ""; }; - 008966A92486D43400DC48C2 /* RegisterErrorDataTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterErrorDataTest.m; sourceTree = ""; }; 008966AB2486D43500DC48C2 /* BugsnagOnBreadcrumbTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagOnBreadcrumbTest.m; sourceTree = ""; }; 008966AC2486D43500DC48C2 /* BugsnagEventPersistLoadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagEventPersistLoadTest.m; sourceTree = ""; }; 008966AD2486D43500DC48C2 /* BugsnagThreadSerializationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagThreadSerializationTest.m; sourceTree = ""; }; @@ -1162,7 +1162,7 @@ 0089690C2486DAD000DC48C2 /* NSError+BSG_SimpleConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+BSG_SimpleConstructor.h"; sourceTree = ""; }; 0089690E2486DAD000DC48C2 /* BSG_KSArchSpecific.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSG_KSArchSpecific.h; sourceTree = ""; }; 0089690F2486DAD000DC48C2 /* BSG_KSObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSG_KSObjC.h; sourceTree = ""; }; - 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSG_KSMachHeaders.m; sourceTree = ""; }; + 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BSG_KSMachHeaders.c; sourceTree = ""; }; 008969112486DAD000DC48C2 /* BSG_KSMachApple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSG_KSMachApple.h; sourceTree = ""; }; 008969122486DAD000DC48C2 /* BSG_KSString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSG_KSString.h; sourceTree = ""; }; 008969132486DAD000DC48C2 /* BSG_KSMach.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BSG_KSMach.c; sourceTree = ""; }; @@ -1232,8 +1232,6 @@ 00AD1CC924869C2400A27979 /* Bugsnag.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bugsnag.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 00AD1CD124869C2400A27979 /* Bugsnag-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Bugsnag-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 00AD1CE424869C6C00A27979 /* libBugsnagStatic.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBugsnagStatic.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 00AD1EF42486A17600A27979 /* RegisterErrorData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterErrorData.h; sourceTree = ""; }; - 00AD1EF52486A17600A27979 /* RegisterErrorData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterErrorData.m; sourceTree = ""; }; 00AD1EF82486A17700A27979 /* BugsnagSessionTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BugsnagSessionTracker.h; sourceTree = ""; }; 00AD1EF92486A17700A27979 /* BugsnagErrorReportSink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugsnagErrorReportSink.m; sourceTree = ""; }; 00AD1EFD2486A17800A27979 /* BugsnagErrorReportSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BugsnagErrorReportSink.h; sourceTree = ""; }; @@ -1263,6 +1261,11 @@ 0134524A256BCF7C0088C548 /* BugsnagError+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BugsnagError+Private.h"; sourceTree = ""; }; 0134524B256BD00A0088C548 /* BugsnagThread+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BugsnagThread+Private.h"; sourceTree = ""; }; 0140D24725765F8F00FD0306 /* BSGUIKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BSGUIKit.h; sourceTree = ""; }; + 016875C4258D003200DFFF69 /* NSUserDefaultsStub.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSUserDefaultsStub.h; sourceTree = ""; }; + 016875C5258D003200DFFF69 /* NSUserDefaultsStub.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSUserDefaultsStub.m; sourceTree = ""; }; + 01468F5025876DC1002B0519 /* BSGNotificationBreadcrumbs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSGNotificationBreadcrumbs.h; sourceTree = ""; }; + 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSGNotificationBreadcrumbs.m; sourceTree = ""; }; + 0163BF5825823D8D008DC28B /* NotificationBreadcrumbTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotificationBreadcrumbTests.m; sourceTree = ""; }; 01937CF9257A7B4C00F2DE31 /* Bugsnag+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bugsnag+Private.h"; sourceTree = ""; }; 01937D01257A7E0E00F2DE31 /* BugsnagErrorReportSink+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BugsnagErrorReportSink+Private.h"; sourceTree = ""; }; 01937D09257A7ED000F2DE31 /* BugsnagSessionTracker+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BugsnagSessionTracker+Private.h"; sourceTree = ""; }; @@ -1540,7 +1543,7 @@ 008969282486DAD000DC48C2 /* BSG_KSMach.h */, 008969112486DAD000DC48C2 /* BSG_KSMachApple.h */, 008969232486DAD000DC48C2 /* BSG_KSMachHeaders.h */, - 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.m */, + 008969102486DAD000DC48C2 /* BSG_KSMachHeaders.c */, 008969252486DAD000DC48C2 /* BSG_KSObjC.c */, 0089690F2486DAD000DC48C2 /* BSG_KSObjC.h */, 008969202486DAD000DC48C2 /* BSG_KSObjCApple.h */, @@ -1618,8 +1621,6 @@ 01937D09257A7ED000F2DE31 /* BugsnagSessionTracker+Private.h */, CBB0928B2519F891007698BC /* BugsnagSystemState.h */, CBB0928A2519F891007698BC /* BugsnagSystemState.m */, - 00AD1EF42486A17600A27979 /* RegisterErrorData.h */, - 00AD1EF52486A17600A27979 /* RegisterErrorData.m */, 00AD1CF124869EBD00A27979 /* Breadcrumbs */, 00AD1CF224869ECF00A27979 /* Client */, 00AD1CF324869ED700A27979 /* Configuration */, @@ -1685,7 +1686,9 @@ E701FAAA2490EFD9008D842F /* EventApiValidationTest.m */, 00E636C324878FFC006CBF1A /* Info.plist */, 008966D32486D43700DC48C2 /* KSCrash */, - 008966A92486D43400DC48C2 /* RegisterErrorDataTest.m */, + 016875C4258D003200DFFF69 /* NSUserDefaultsStub.h */, + 016875C5258D003200DFFF69 /* NSUserDefaultsStub.m */, + 0163BF5825823D8D008DC28B /* NotificationBreadcrumbTests.m */, 01B14C55251CE55F00118748 /* report-react-native-promise-rejection.json */, 008966B72486D43500DC48C2 /* report.json */, 008966AE2486D43500DC48C2 /* Swift Tests */, @@ -1701,6 +1704,8 @@ 00AD1CF124869EBD00A27979 /* Breadcrumbs */ = { isa = PBXGroup; children = ( + 01468F5025876DC1002B0519 /* BSGNotificationBreadcrumbs.h */, + 01468F5125876DC1002B0519 /* BSGNotificationBreadcrumbs.m */, 008967B32486D9D700DC48C2 /* BugsnagBreadcrumbs.h */, 008967B22486D9D700DC48C2 /* BugsnagBreadcrumbs.m */, ); @@ -1995,7 +2000,7 @@ 008969962486DAD100DC48C2 /* BSG_KSBacktrace_Private.h in Headers */, 00896A112486DAD100DC48C2 /* BSG_KSCrashSentry_CPPException.h in Headers */, 008969ED2486DAD100DC48C2 /* BSG_KSCrashDoctor.h in Headers */, - 00AD1F022486A17900A27979 /* RegisterErrorData.h in Headers */, + 01468F5225876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */, 008968ED2486DAB800DC48C2 /* BugsnagFileStore.h in Headers */, 00896A292486DAD100DC48C2 /* BSG_KSCrashType.h in Headers */, 008969DB2486DAD100DC48C2 /* BSG_KSCrash.h in Headers */, @@ -2091,7 +2096,7 @@ 008969972486DAD100DC48C2 /* BSG_KSBacktrace_Private.h in Headers */, 00896A122486DAD100DC48C2 /* BSG_KSCrashSentry_CPPException.h in Headers */, 008969EE2486DAD100DC48C2 /* BSG_KSCrashDoctor.h in Headers */, - 00AD1F032486A17900A27979 /* RegisterErrorData.h in Headers */, + 01468F5325876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */, 008968EE2486DAB800DC48C2 /* BugsnagFileStore.h in Headers */, 00896A2A2486DAD100DC48C2 /* BSG_KSCrashType.h in Headers */, 008969DC2486DAD100DC48C2 /* BSG_KSCrash.h in Headers */, @@ -2188,7 +2193,7 @@ 008969982486DAD100DC48C2 /* BSG_KSBacktrace_Private.h in Headers */, 00896A132486DAD100DC48C2 /* BSG_KSCrashSentry_CPPException.h in Headers */, 008969EF2486DAD100DC48C2 /* BSG_KSCrashDoctor.h in Headers */, - 00AD1F042486A17900A27979 /* RegisterErrorData.h in Headers */, + 01468F5425876DC1002B0519 /* BSGNotificationBreadcrumbs.h in Headers */, 008968EF2486DAB800DC48C2 /* BugsnagFileStore.h in Headers */, 00896A2B2486DAD100DC48C2 /* BSG_KSCrashType.h in Headers */, 008969DD2486DAD100DC48C2 /* BSG_KSCrash.h in Headers */, @@ -2456,7 +2461,7 @@ 008969992486DAD100DC48C2 /* BSG_KSMach_Arm64.c in Sources */, 008967E82486DA2D00DC48C2 /* BugsnagErrorTypes.m in Sources */, 008968722486DA9500DC48C2 /* BugsnagDevice.m in Sources */, - 008969842486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */, + 008969842486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */, 00896A322486DAD100DC48C2 /* BSG_KSCrashC.c in Sources */, 008969902486DAD100DC48C2 /* BSG_RFC3339DateTool.m in Sources */, 008968AB2486DA9600DC48C2 /* BugsnagStateEvent.m in Sources */, @@ -2489,6 +2494,7 @@ 008969572486DAD000DC48C2 /* BSG_KSCrashDoctor.m in Sources */, 008968B92486DA9600DC48C2 /* BugsnagStacktrace.m in Sources */, 00896A142486DAD100DC48C2 /* BSG_KSCrashSentry_Signal.c in Sources */, + 01468F5525876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */, 008967BE2486DA1900DC48C2 /* BugsnagClient.m in Sources */, 008968952486DA9600DC48C2 /* BugsnagHandledState.m in Sources */, 008969C32486DAD100DC48C2 /* BSG_KSObjC.c in Sources */, @@ -2507,7 +2513,6 @@ 008968C32486DA9600DC48C2 /* BugsnagUser.m in Sources */, CBAB4DD82510D2460092CBAA /* BugsnagKVStoreObjC.m in Sources */, 008968A72486DA9600DC48C2 /* BugsnagSession.m in Sources */, - 00AD1F052486A17900A27979 /* RegisterErrorData.m in Sources */, 0089683A2486DA6C00DC48C2 /* BugsnagMetadata.m in Sources */, 008969F62486DAD100DC48C2 /* BSG_KSCrash.m in Sources */, 0089695D2486DAD000DC48C2 /* BSG_KSMach_x86_32.c in Sources */, @@ -2563,6 +2568,7 @@ 0089676F2486D43700DC48C2 /* NSError+SimpleConstructor_Tests.m in Sources */, 008966F42486D43700DC48C2 /* BugsnagThreadTest.m in Sources */, 008967692486D43700DC48C2 /* BugsnagSessionTrackerTest.m in Sources */, + 016875C6258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */, 008967842486D43700DC48C2 /* KSDynamicLinker_Tests.m in Sources */, 008967032486D43700DC48C2 /* BugsnagThreadSerializationTest.m in Sources */, 0089674B2486D43700DC48C2 /* BSGConnectivityTest.m in Sources */, @@ -2584,12 +2590,12 @@ 008967332486D43700DC48C2 /* BugsnagClientTests.m in Sources */, 004E353F2487B3BD007FBAE4 /* BugsnagSwiftConfigurationTests.swift in Sources */, 008967542486D43700DC48C2 /* BugsnagOnCrashTest.m in Sources */, - 008966F72486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */, 008967152486D43700DC48C2 /* BugsnagCollectionsBSGDictMergeTest.m in Sources */, 01E8765E256684E700F4B70A /* URLSessionMock.m in Sources */, 008967AB2486D43700DC48C2 /* KSMach_Tests.m in Sources */, 0089672A2486D43700DC48C2 /* BugsnagStacktraceTest.m in Sources */, 0089678D2486D43700DC48C2 /* KSCrashReportConverter_Tests.m in Sources */, + 0163BF5925823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */, 008967392486D43700DC48C2 /* BugsnagEventFromKSCrashReportTest.m in Sources */, 008967182486D43700DC48C2 /* BugsnagErrorTest.m in Sources */, 008967212486D43700DC48C2 /* BugsnagErrorReportSinkTests.m in Sources */, @@ -2617,7 +2623,7 @@ 0089699A2486DAD100DC48C2 /* BSG_KSMach_Arm64.c in Sources */, 008967E92486DA2D00DC48C2 /* BugsnagErrorTypes.m in Sources */, 008968732486DA9500DC48C2 /* BugsnagDevice.m in Sources */, - 008969852486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */, + 008969852486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */, 00896A332486DAD100DC48C2 /* BSG_KSCrashC.c in Sources */, 008969912486DAD100DC48C2 /* BSG_RFC3339DateTool.m in Sources */, 008968AC2486DA9600DC48C2 /* BugsnagStateEvent.m in Sources */, @@ -2651,6 +2657,7 @@ 008969582486DAD000DC48C2 /* BSG_KSCrashDoctor.m in Sources */, 008968BA2486DA9600DC48C2 /* BugsnagStacktrace.m in Sources */, 00896A152486DAD100DC48C2 /* BSG_KSCrashSentry_Signal.c in Sources */, + 01468F5625876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */, 008967BF2486DA1900DC48C2 /* BugsnagClient.m in Sources */, 008968962486DA9600DC48C2 /* BugsnagHandledState.m in Sources */, 008969C42486DAD100DC48C2 /* BSG_KSObjC.c in Sources */, @@ -2669,7 +2676,6 @@ 008968C42486DA9600DC48C2 /* BugsnagUser.m in Sources */, CBAB4DD92510D2460092CBAA /* BugsnagKVStoreObjC.m in Sources */, 008968A82486DA9600DC48C2 /* BugsnagSession.m in Sources */, - 00AD1F062486A17900A27979 /* RegisterErrorData.m in Sources */, 0089683B2486DA6C00DC48C2 /* BugsnagMetadata.m in Sources */, 008969F72486DAD100DC48C2 /* BSG_KSCrash.m in Sources */, 0089695E2486DAD000DC48C2 /* BSG_KSMach_x86_32.c in Sources */, @@ -2707,7 +2713,6 @@ 0089679A2486D43700DC48C2 /* FileBasedTestCase.m in Sources */, 008967912486D43700DC48C2 /* KSJSONCodec_Tests.m in Sources */, 008967732486D43700DC48C2 /* KSSysCtl_Tests.m in Sources */, - 008966F82486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */, E701FAAC2490EFD9008D842F /* EventApiValidationTest.m in Sources */, 0089674F2486D43700DC48C2 /* BugsnagPluginTest.m in Sources */, 008967132486D43700DC48C2 /* BugsnagEventTests.m in Sources */, @@ -2717,6 +2722,7 @@ 008967A62486D43700DC48C2 /* KSString_Tests.m in Sources */, 004E353D2487B3B8007FBAE4 /* BugsnagSwiftTests.swift in Sources */, 008967192486D43700DC48C2 /* BugsnagErrorTest.m in Sources */, + 016875C7258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */, 008967162486D43700DC48C2 /* BugsnagCollectionsBSGDictMergeTest.m in Sources */, 008967582486D43700DC48C2 /* BugsnagClientMirrorTest.m in Sources */, 0089676A2486D43700DC48C2 /* BugsnagSessionTrackerTest.m in Sources */, @@ -2733,6 +2739,7 @@ 008967702486D43700DC48C2 /* NSError+SimpleConstructor_Tests.m in Sources */, 0089671C2486D43700DC48C2 /* BugsnagSessionTest.m in Sources */, 008967AC2486D43700DC48C2 /* KSMach_Tests.m in Sources */, + 0163BF5A25823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */, 00896A452486DBF000DC48C2 /* BugsnagConfigurationTests.m in Sources */, 008967492486D43700DC48C2 /* BugsnagUserTest.m in Sources */, 0089673A2486D43700DC48C2 /* BugsnagEventFromKSCrashReportTest.m in Sources */, @@ -2777,7 +2784,7 @@ 0089699B2486DAD100DC48C2 /* BSG_KSMach_Arm64.c in Sources */, 008967EA2486DA2D00DC48C2 /* BugsnagErrorTypes.m in Sources */, 008968742486DA9500DC48C2 /* BugsnagDevice.m in Sources */, - 008969862486DAD100DC48C2 /* BSG_KSMachHeaders.m in Sources */, + 008969862486DAD100DC48C2 /* BSG_KSMachHeaders.c in Sources */, 00896A342486DAD100DC48C2 /* BSG_KSCrashC.c in Sources */, 008969922486DAD100DC48C2 /* BSG_RFC3339DateTool.m in Sources */, 008968AD2486DA9600DC48C2 /* BugsnagStateEvent.m in Sources */, @@ -2811,6 +2818,7 @@ 008969592486DAD000DC48C2 /* BSG_KSCrashDoctor.m in Sources */, 008968BB2486DA9600DC48C2 /* BugsnagStacktrace.m in Sources */, 00896A162486DAD100DC48C2 /* BSG_KSCrashSentry_Signal.c in Sources */, + 01468F5725876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */, 008967C02486DA1900DC48C2 /* BugsnagClient.m in Sources */, 008968972486DA9600DC48C2 /* BugsnagHandledState.m in Sources */, 008969C52486DAD100DC48C2 /* BSG_KSObjC.c in Sources */, @@ -2829,7 +2837,6 @@ 008968C52486DA9600DC48C2 /* BugsnagUser.m in Sources */, CBAB4DDA2510D2460092CBAA /* BugsnagKVStoreObjC.m in Sources */, 008968A92486DA9600DC48C2 /* BugsnagSession.m in Sources */, - 00AD1F072486A17900A27979 /* RegisterErrorData.m in Sources */, 0089683C2486DA6C00DC48C2 /* BugsnagMetadata.m in Sources */, 008969F82486DAD100DC48C2 /* BSG_KSCrash.m in Sources */, 0089695F2486DAD000DC48C2 /* BSG_KSMach_x86_32.c in Sources */, @@ -2864,7 +2871,6 @@ CB10E541250BA8E000AF5824 /* BugsnagKVStoreTest.m in Sources */, 008967922486D43700DC48C2 /* KSJSONCodec_Tests.m in Sources */, 008967742486D43700DC48C2 /* KSSysCtl_Tests.m in Sources */, - 008966F92486D43700DC48C2 /* RegisterErrorDataTest.m in Sources */, 008967502486D43700DC48C2 /* BugsnagPluginTest.m in Sources */, 008967142486D43700DC48C2 /* BugsnagEventTests.m in Sources */, 0089675C2486D43700DC48C2 /* BugsnagEnabledBreadcrumbTest.m in Sources */, @@ -2907,6 +2913,7 @@ E701FAB12490EFE8008D842F /* ConfigurationApiValidationTest.m in Sources */, 0089677D2486D43700DC48C2 /* RFC3339DateTool_Tests.m in Sources */, CBCF77AD250142E0004AF22A /* BSGJSONSerializerTest.m in Sources */, + 0163BF5B25823D8D008DC28B /* NotificationBreadcrumbTests.m in Sources */, 008967562486D43700DC48C2 /* BugsnagOnCrashTest.m in Sources */, 008967A12486D43700DC48C2 /* KSCrashSentry_Tests.m in Sources */, 008967442486D43700DC48C2 /* BugsnagSessionTrackerStopTest.m in Sources */, @@ -2915,6 +2922,7 @@ 008967322486D43700DC48C2 /* BugsnagStateEventTest.m in Sources */, CBA2249D251E429C00B87416 /* TestSupport.m in Sources */, 004E35372487AFF2007FBAE4 /* BugsnagHandledStateTest.m in Sources */, + 016875C8258D003200DFFF69 /* NSUserDefaultsStub.m in Sources */, 0089678C2486D43700DC48C2 /* KSCrashReportStore_Tests.m in Sources */, 01C17AE92542ED7F00C102C9 /* KSCrashReportWriterTests.m in Sources */, 00896A422486DBDD00DC48C2 /* BSGConfigurationBuilderTests.m in Sources */, @@ -2956,7 +2964,7 @@ E746291C248907E500F92D67 /* BSG_KSCrashC.c in Sources */, E74628FC248907C100F92D67 /* BSG_KSCrashDoctor.m in Sources */, E74628FD248907C100F92D67 /* BSG_KSJSONCodecObjC.m in Sources */, - E74628FF248907C100F92D67 /* BSG_KSMachHeaders.m in Sources */, + E74628FF248907C100F92D67 /* BSG_KSMachHeaders.c in Sources */, E7462900248907C100F92D67 /* NSError+BSG_SimpleConstructor.m in Sources */, E7462901248907C100F92D67 /* BSG_KSLogger.m in Sources */, E7462902248907C100F92D67 /* BSG_KSCrashState.m in Sources */, @@ -2973,6 +2981,7 @@ 0089687F2486DA9600DC48C2 /* BugsnagBreadcrumb.m in Sources */, 008968012486DA4500DC48C2 /* BugsnagSessionTrackingApiClient.m in Sources */, 008968322486DA5600DC48C2 /* BugsnagCollections.m in Sources */, + 01468F5825876DC1002B0519 /* BSGNotificationBreadcrumbs.m in Sources */, 008968832486DA9600DC48C2 /* BugsnagAppWithState.m in Sources */, 008968AA2486DA9600DC48C2 /* BugsnagSession.m in Sources */, 008968982486DA9600DC48C2 /* BugsnagHandledState.m in Sources */, @@ -3004,7 +3013,6 @@ 008968942486DA9600DC48C2 /* BugsnagError.m in Sources */, 008967E12486DA2D00DC48C2 /* BSGConfigurationBuilder.m in Sources */, 008967FD2486DA4500DC48C2 /* BugsnagApiClient.m in Sources */, - 00AD1F082486A17900A27979 /* RegisterErrorData.m in Sources */, 008968EC2486DAB800DC48C2 /* BugsnagSessionFileStore.m in Sources */, 008968F32486DAB800DC48C2 /* BugsnagFileStore.m in Sources */, ); diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.h new file mode 100644 index 0000000000..074dd3e247 --- /dev/null +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.h @@ -0,0 +1,57 @@ +// +// BSGBreadcrumbsProducer.h +// Bugsnag +// +// Created by Nick Dowell on 10/12/2020. +// Copyright © 2020 Bugsnag Inc. All rights reserved. +// + +#import + +@class BugsnagConfiguration; + +NS_ASSUME_NONNULL_BEGIN + +@protocol BSGBreadcrumbSink + +- (void)leaveBreadcrumbWithMessage:(NSString *)message metadata:(nullable NSDictionary *)metadata andType:(BSGBreadcrumbType)type; + +@end + + +#pragma mark - + +extern NSString * const BSGNotificationBreadcrumbsMessageAppWillTerminate; + +@interface BSGNotificationBreadcrumbs : NSObject + +#pragma mark Initializers + +- (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration + breadcrumbSink:(id)breadcrumbSink NS_DESIGNATED_INITIALIZER; + +- (instancetype)init UNAVAILABLE_ATTRIBUTE; + +#pragma mark Properties + +@property BugsnagConfiguration *configuration; + +@property (weak) id breadcrumbSink; + +@property NSNotificationCenter *notificationCenter; + +@property NSNotificationCenter *workspaceNotificationCenter; + +#pragma mark Methods + +/// Starts observing the default notifications. +- (void)start; + +/// Starts observing notifications with the given name and adds a "state" breadcrumbs when received. +- (void)startListeningForStateChangeNotification:(NSNotificationName)notificationName; + +- (NSString *)messageForNotificationName:(NSNotificationName)name; + +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.m new file mode 100644 index 0000000000..194cf153f6 --- /dev/null +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Breadcrumbs/BSGNotificationBreadcrumbs.m @@ -0,0 +1,303 @@ +// +// BSGNotificationBreadcrumbs.m +// Bugsnag +// +// Created by Nick Dowell on 10/12/2020. +// Copyright © 2020 Bugsnag Inc. All rights reserved. +// + +#import "BSGNotificationBreadcrumbs.h" + +#import "BugsnagBreadcrumbs.h" +#import "BugsnagConfiguration+Private.h" +#import "BugsnagKeys.h" + +#if TARGET_OS_IOS || TARGET_OS_TV +#import "BSGUIKit.h" +#else +#import +#endif + + +NSString * const BSGNotificationBreadcrumbsMessageAppWillTerminate = @"App Will Terminate"; + + +@interface BSGNotificationBreadcrumbs () + +@property NSDictionary *notificationNameMap; + +@end + + +@implementation BSGNotificationBreadcrumbs + +- (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration + breadcrumbSink:(id)breadcrumbSink { + if ((self = [super init])) { + _configuration = configuration; + _notificationCenter = NSNotificationCenter.defaultCenter; +#if TARGET_OS_OSX + _workspaceNotificationCenter = NSWorkspace.sharedWorkspace.notificationCenter; +#endif + _breadcrumbSink = breadcrumbSink; + _notificationNameMap = @{ +#if TARGET_OS_TV + NSUndoManagerDidRedoChangeNotification : @"Redo Operation", + NSUndoManagerDidUndoChangeNotification : @"Undo Operation", + UIScreenBrightnessDidChangeNotification : @"Screen Brightness Changed", + UITableViewSelectionDidChangeNotification : @"TableView Select Change", + UIWindowDidBecomeHiddenNotification : @"Window Became Hidden", + UIWindowDidBecomeKeyNotification : @"Window Became Key", + UIWindowDidBecomeVisibleNotification : @"Window Became Visible", + UIWindowDidResignKeyNotification : @"Window Resigned Key", +#elif TARGET_OS_IOS + NSUndoManagerDidRedoChangeNotification : @"Redo Operation", + NSUndoManagerDidUndoChangeNotification : @"Undo Operation", + UIApplicationDidEnterBackgroundNotification : @"App Did Enter Background", + UIApplicationDidReceiveMemoryWarningNotification : @"Memory Warning", + UIApplicationUserDidTakeScreenshotNotification : @"Took Screenshot", + UIApplicationWillEnterForegroundNotification : @"App Will Enter Foreground", + UIApplicationWillTerminateNotification : BSGNotificationBreadcrumbsMessageAppWillTerminate, + UIDeviceBatteryLevelDidChangeNotification : @"Battery Level Changed", + UIDeviceBatteryStateDidChangeNotification : @"Battery State Changed", + UIDeviceOrientationDidChangeNotification : @"Orientation Changed", + UIKeyboardDidHideNotification : @"Keyboard Became Hidden", + UIKeyboardDidShowNotification : @"Keyboard Became Visible", + UIMenuControllerDidHideMenuNotification : @"Did Hide Menu", + UIMenuControllerDidShowMenuNotification : @"Did Show Menu", + UITableViewSelectionDidChangeNotification : @"TableView Select Change", + UITextFieldTextDidBeginEditingNotification : @"Began Editing Text", + UITextFieldTextDidEndEditingNotification : @"Stopped Editing Text", + UITextViewTextDidBeginEditingNotification : @"Began Editing Text", + UITextViewTextDidEndEditingNotification : @"Stopped Editing Text", + UIWindowDidBecomeHiddenNotification : @"Window Became Hidden", + UIWindowDidBecomeVisibleNotification : @"Window Became Visible", +#elif TARGET_OS_OSX + NSUndoManagerDidRedoChangeNotification : @"Redo Operation", + NSUndoManagerDidUndoChangeNotification : @"Undo Operation", + NSApplicationDidBecomeActiveNotification : @"App Became Active", + NSApplicationDidHideNotification : @"App Did Hide", + NSApplicationDidResignActiveNotification : @"App Resigned Active", + NSApplicationDidUnhideNotification : @"App Did Unhide", + NSApplicationWillTerminateNotification : BSGNotificationBreadcrumbsMessageAppWillTerminate, + NSControlTextDidBeginEditingNotification : @"Control Text Began Edit", + NSControlTextDidEndEditingNotification : @"Control Text Ended Edit", + NSMenuWillSendActionNotification : @"Menu Will Send Action", + NSTableViewSelectionDidChangeNotification : @"TableView Select Change", + NSWindowDidBecomeKeyNotification : @"Window Became Key", + NSWindowDidEnterFullScreenNotification : @"Window Entered Full Screen", + NSWindowDidExitFullScreenNotification : @"Window Exited Full Screen", + NSWindowWillCloseNotification : @"Window Will Close", + NSWindowWillMiniaturizeNotification : @"Window Will Miniaturize", + NSWorkspaceScreensDidSleepNotification : @"Workspace Screen Slept", + NSWorkspaceScreensDidWakeNotification : @"Workspace Screen Awoke", +#endif + }; + } + return self; +} + +#if TARGET_OS_OSX +- (NSArray *)workspaceBreadcrumbStateEvents { + return @[ + NSWorkspaceScreensDidSleepNotification, + NSWorkspaceScreensDidWakeNotification + ]; +} +#endif + +- (NSArray *)automaticBreadcrumbStateEvents { +#if TARGET_OS_TV + return @[ + NSUndoManagerDidRedoChangeNotification, + NSUndoManagerDidUndoChangeNotification, + UIScreenBrightnessDidChangeNotification, + UIWindowDidBecomeHiddenNotification, + UIWindowDidBecomeKeyNotification, + UIWindowDidBecomeVisibleNotification, + UIWindowDidResignKeyNotification, + ]; +#elif TARGET_OS_IOS + return @[ + NSUndoManagerDidRedoChangeNotification, + NSUndoManagerDidUndoChangeNotification, + UIApplicationDidEnterBackgroundNotification, + UIApplicationDidReceiveMemoryWarningNotification, + UIApplicationUserDidTakeScreenshotNotification, + UIApplicationWillEnterForegroundNotification, + UIApplicationWillTerminateNotification, + UIKeyboardDidHideNotification, + UIKeyboardDidShowNotification, + UIMenuControllerDidHideMenuNotification, + UIMenuControllerDidShowMenuNotification, + UIWindowDidBecomeHiddenNotification, + UIWindowDidBecomeVisibleNotification, + ]; +#elif TARGET_OS_OSX + return @[ + NSApplicationDidBecomeActiveNotification, + NSApplicationDidResignActiveNotification, + NSApplicationDidHideNotification, + NSApplicationDidUnhideNotification, + NSApplicationWillTerminateNotification, + + NSWindowDidBecomeKeyNotification, + NSWindowDidEnterFullScreenNotification, + NSWindowDidExitFullScreenNotification, + NSWindowWillCloseNotification, + NSWindowWillMiniaturizeNotification, + ]; +#endif + return nil; +} + +- (NSArray *)automaticBreadcrumbControlEvents { +#if TARGET_OS_IOS + return @[ + UITextFieldTextDidBeginEditingNotification, + UITextFieldTextDidEndEditingNotification, + UITextViewTextDidBeginEditingNotification, + UITextViewTextDidEndEditingNotification + ]; +#elif TARGET_OS_OSX + return @[ + NSControlTextDidBeginEditingNotification, + NSControlTextDidEndEditingNotification + ]; +#endif + return nil; +} + +- (NSArray *)automaticBreadcrumbTableItemEvents { +#if TARGET_OS_IOS || TARGET_OS_TV + return @[ UITableViewSelectionDidChangeNotification ]; +#elif TARGET_OS_OSX + return @[ NSTableViewSelectionDidChangeNotification ]; +#endif + return nil; +} + +- (NSArray *)automaticBreadcrumbMenuItemEvents { +#if TARGET_OS_OSX + return @[ NSMenuWillSendActionNotification ]; +#endif + return nil; +} + +- (void)dealloc { + [_notificationCenter removeObserver:self]; +} + +#pragma mark - + +- (NSString *)messageForNotificationName:(NSNotificationName)name { + return self.notificationNameMap[name] ?: [name stringByReplacingOccurrencesOfString:@"Notification" withString:@""]; +} + +- (void)addBreadcrumbWithType:(BSGBreadcrumbType)type forNotificationName:(NSNotificationName)notificationName { + [self addBreadcrumbWithType:type forNotificationName:notificationName metadata:nil]; +} + +- (void)addBreadcrumbWithType:(BSGBreadcrumbType)type forNotificationName:(NSNotificationName)notificationName metadata:(NSDictionary *)metadata { + [self.breadcrumbSink leaveBreadcrumbWithMessage:[self messageForNotificationName:notificationName] metadata:metadata ?: @{} andType:type]; +} + +#pragma mark - + +- (void)start { + // State events + if ([_configuration shouldRecordBreadcrumbType:BSGBreadcrumbTypeState]) { + // Generic state events + for (NSNotificationName name in [self automaticBreadcrumbStateEvents]) { + [self startListeningForStateChangeNotification:name]; + } + +#if TARGET_OS_OSX + // Workspace-specific events - macOS only + for (NSNotificationName name in [self workspaceBreadcrumbStateEvents]) { + [_workspaceNotificationCenter addObserver:self + selector:@selector(addBreadcrumbForNotification:) + name:name + object:nil]; + } + + // NSMenu events (macOS only) + for (NSNotificationName name in [self automaticBreadcrumbMenuItemEvents]) { + [_notificationCenter addObserver:self + selector:@selector(addBreadcrumbForMenuItemNotification:) + name:name + object:nil]; + } +#endif + } + + // Navigation events + if ([_configuration shouldRecordBreadcrumbType:BSGBreadcrumbTypeNavigation]) { + // UI/NSTableView events + for (NSNotificationName name in [self automaticBreadcrumbTableItemEvents]) { + [_notificationCenter addObserver:self + selector:@selector(addBreadcrumbForTableViewNotification:) + name:name + object:nil]; + } + } + + // User events + if ([_configuration shouldRecordBreadcrumbType:BSGBreadcrumbTypeUser]) { + // UITextField/NSControl events (text editing) + for (NSNotificationName name in [self automaticBreadcrumbControlEvents]) { + [_notificationCenter addObserver:self + selector:@selector(addBreadcrumbForControlNotification:) + name:name + object:nil]; + } + } +} + +- (void)startListeningForStateChangeNotification:(NSNotificationName)notificationName { + [_notificationCenter addObserver:self selector:@selector(addBreadcrumbForNotification:) name:notificationName object:nil]; +} + +- (void)addBreadcrumbForNotification:(NSNotification *)notification { + [self addBreadcrumbWithType:BSGBreadcrumbTypeState forNotificationName:notification.name]; +} + +- (void)addBreadcrumbForTableViewNotification:(NSNotification *)notification { +#if TARGET_OS_IOS || TARGET_OS_TV + NSIndexPath *indexPath = ((UITableView *)notification.object).indexPathForSelectedRow; + [self addBreadcrumbWithType:BSGBreadcrumbTypeNavigation forNotificationName:notification.name metadata: + indexPath ? @{@"row" : @(indexPath.row), @"section" : @(indexPath.section)} : nil]; +#elif TARGET_OS_OSX + NSTableView *tableView = notification.object; + [self addBreadcrumbWithType:BSGBreadcrumbTypeNavigation forNotificationName:notification.name metadata: + tableView ? @{@"selectedRow" : @(tableView.selectedRow), @"selectedColumn" : @(tableView.selectedColumn)} : nil]; +#endif +} + +- (void)addBreadcrumbForMenuItemNotification:(NSNotification *)notification { +#if TARGET_OS_OSX + NSMenuItem *menuItem = [[notification userInfo] valueForKey:@"MenuItem"]; + [self addBreadcrumbWithType:BSGBreadcrumbTypeState forNotificationName:notification.name metadata: + [menuItem isKindOfClass:[NSMenuItem class]] ? @{BSGKeyAction : menuItem.title} : nil]; +#endif +} + +- (void)addBreadcrumbForControlNotification:(NSNotification *)notification { +#if TARGET_OS_IOS + NSString *label = ((UIControl *)notification.object).accessibilityLabel; + [self addBreadcrumbWithType:BSGBreadcrumbTypeUser forNotificationName:notification.name metadata: + label.length ? @{BSGKeyLabel : label} : nil]; +#elif TARGET_OS_OSX + NSControl *control = notification.object; + NSDictionary *metadata = nil; + if ([control respondsToSelector:@selector(accessibilityLabel)]) { + NSString *label = control.accessibilityLabel; + if (label.length > 0) { + metadata = @{BSGKeyLabel : label}; + } + } + [self addBreadcrumbWithType:BSGBreadcrumbTypeUser forNotificationName:notification.name metadata:metadata]; +#endif +} + +@end diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.h index 129f5dd8a4..863f02958b 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.h @@ -12,10 +12,13 @@ #import "BugsnagConfiguration.h" #import "BugsnagErrorReportApiClient.h" +@class BugsnagNotifier; + @interface BugsnagCrashSentry : NSObject - (void)install:(BugsnagConfiguration *)config apiClient:(BugsnagErrorReportApiClient *)apiClient + notifier:(BugsnagNotifier *)notifier onCrash:(BSGReportCallback)onCrash; - (void)reportUserException:(NSString *)reportName diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.m index 7e779faf3d..1b5d05e5a6 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagCrashSentry.m @@ -16,20 +16,19 @@ #import "Bugsnag.h" #import "BugsnagErrorTypes.h" -NSUInteger const BSG_MAX_STORED_REPORTS = 12; - @implementation BugsnagCrashSentry - (void)install:(BugsnagConfiguration *)config apiClient:(BugsnagErrorReportApiClient *)apiClient + notifier:(BugsnagNotifier *)notifier onCrash:(BSGReportCallback)onCrash { - BugsnagErrorReportSink *sink = [[BugsnagErrorReportSink alloc] initWithApiClient:apiClient]; + BugsnagErrorReportSink *sink = [[BugsnagErrorReportSink alloc] initWithApiClient:apiClient configuration:config notifier:notifier]; BSG_KSCrash *ksCrash = [BSG_KSCrash sharedInstance]; ksCrash.sink = sink; - ksCrash.introspectMemory = YES; + ksCrash.introspectMemory = NO; ksCrash.onCrash = onCrash; - ksCrash.maxStoredReports = BSG_MAX_STORED_REPORTS; + ksCrash.maxStoredReports = (int)config.maxPersistedEvents; // overridden elsewhere for handled errors, so we can assume that this only // applies to unhandled errors diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink+Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink+Private.h index 306c06ac5c..1a4994be81 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink+Private.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink+Private.h @@ -8,6 +8,8 @@ #import "BugsnagErrorReportSink.h" +@class BugsnagEvent; + NS_ASSUME_NONNULL_BEGIN @interface BugsnagErrorReportSink () diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.h index 966ff928a8..2339e1bb84 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.h @@ -25,16 +25,26 @@ // #import -#import "BSG_KSCrash.h" -#import "BugsnagErrorReportApiClient.h" + +#import "BSGOnErrorSentBlock.h" + +@class BugsnagConfiguration; +@class BugsnagErrorReportApiClient; +@class BugsnagNotifier; NS_ASSUME_NONNULL_BEGIN @interface BugsnagErrorReportSink : NSObject -@property(nonatomic, strong) BugsnagErrorReportApiClient *apiClient; +- (instancetype)initWithApiClient:(BugsnagErrorReportApiClient *)apiClient + configuration:(BugsnagConfiguration *)configuration + notifier:(BugsnagNotifier *)notifier; + +@property (strong, nonatomic) BugsnagErrorReportApiClient *apiClient; + +@property (strong, nonatomic) BugsnagConfiguration *configuration; -- (instancetype)initWithApiClient:(BugsnagErrorReportApiClient *)apiClient; +@property (strong, nonatomic) BugsnagNotifier *notifier; /** * Invoked when reports stored by KSCrash need to be delivered. diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.m index 555d764a0c..60a21423cd 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagErrorReportSink.m @@ -31,6 +31,7 @@ #import "BugsnagClient+Private.h" #import "BugsnagCollections.h" #import "BugsnagConfiguration+Private.h" +#import "BugsnagErrorReportApiClient.h" #import "BugsnagEvent+Private.h" #import "BugsnagKeys.h" #import "BugsnagLogger.h" @@ -42,10 +43,14 @@ @interface BugsnagErrorReportSink () @implementation BugsnagErrorReportSink -- (instancetype)initWithApiClient:(BugsnagErrorReportApiClient *)apiClient { - if (self = [super init]) { - self.apiClient = apiClient; - self.activeRequests = [NSMutableSet new]; +- (instancetype)initWithApiClient:(BugsnagErrorReportApiClient *)apiClient + configuration:(BugsnagConfiguration *)configuration + notifier:(BugsnagNotifier *)notifier { + if ((self = [super init])) { + _apiClient = apiClient; + _activeRequests = [NSMutableSet new]; + _configuration = configuration; + _notifier = notifier; } return self; } @@ -86,7 +91,6 @@ - (void)sendStoredReports:(NSDictionary *)ksCrashRe // 4. When a request has completed and deleted the file, remove the files from the dictionary NSArray *keys = [self prepareNewRequests:[ksCrashReports allKeys]]; NSMutableDictionary* storedEvents = [NSMutableDictionary new]; - BugsnagConfiguration *configuration = [Bugsnag configuration]; // run user callbacks on events before enqueueing any requests, as // this way events can be discarded quickly. This frees up disk @@ -94,28 +98,33 @@ - (void)sendStoredReports:(NSDictionary *)ksCrashRe for (NSString *fileKey in keys) { NSDictionary *report = ksCrashReports[fileKey]; BugsnagEvent *event = [[BugsnagEvent alloc] initWithKSReport:report]; - event.redactedKeys = configuration.redactedKeys; - - if ([event shouldBeSent] && [self runOnSendBlocks:configuration event:event]) { + event.redactedKeys = self.configuration.redactedKeys; + + NSString *errorClass = event.errors.firstObject.errorClass; + if ([self.configuration shouldDiscardErrorClass:errorClass]) { + bsg_log_info(@"Discarding event because errorClass \"%@\" matched configuration.discardClasses", errorClass); + [self finishActiveRequest:fileKey completed:YES error:nil block:block]; + continue; + } + + if (self.configuration.shouldSendReports && [event shouldBeSent] && [self runOnSendBlocksForEvent:event]) { storedEvents[fileKey] = event; } else { // delete the report as the user has discarded it [self finishActiveRequest:fileKey completed:YES error:nil block:block]; } } - [self deliverStoredEvents:storedEvents configuration:configuration block:block]; + [self deliverStoredEvents:storedEvents block:block]; } -- (void)deliverStoredEvents:(NSMutableDictionary *)storedEvents - configuration:(BugsnagConfiguration *)configuration - block:(BSGOnErrorSentBlock)block { +- (void)deliverStoredEvents:(NSMutableDictionary *)storedEvents block:(BSGOnErrorSentBlock)block { for (NSString *filename in storedEvents) { BugsnagEvent *event = storedEvents[filename]; NSDictionary *requestPayload = [self prepareEventPayload:event]; - NSMutableDictionary *apiHeaders = [[configuration errorApiHeaders] mutableCopy]; + NSMutableDictionary *apiHeaders = [self.configuration.errorApiHeaders mutableCopy]; apiHeaders[BugsnagHTTPHeaderNameApiKey] = event.apiKey; apiHeaders[BugsnagHTTPHeaderNameStacktraceTypes] = [event.stacktraceTypes componentsJoinedByString:@","]; - [self.apiClient sendJSONPayload:requestPayload headers:apiHeaders toURL:configuration.notifyURL + [self.apiClient sendJSONPayload:requestPayload headers:apiHeaders toURL:self.configuration.notifyURL completionHandler:^(BugsnagApiClientDeliveryStatus status, NSError *error) { BOOL completed = status == BugsnagApiClientDeliveryStatusDelivered || status == BugsnagApiClientDeliveryStatusUndeliverable; [self finishActiveRequest:filename completed:completed error:error block:block]; @@ -123,9 +132,8 @@ - (void)deliverStoredEvents:(NSMutableDictionary *)s } } -- (BOOL)runOnSendBlocks:(BugsnagConfiguration *)configuration - event:(BugsnagEvent *)event { - for (BugsnagOnSendErrorBlock onSendErrorBlock in configuration.onSendBlocks) { +- (BOOL)runOnSendBlocksForEvent:(BugsnagEvent *)event { + for (BugsnagOnSendErrorBlock onSendErrorBlock in self.configuration.onSendBlocks) { @try { if (!onSendErrorBlock(event)) { return false; @@ -143,8 +151,15 @@ - (BOOL)runOnSendBlocks:(BugsnagConfiguration *)configuration * @return an Error Reporting API payload represented as a serializable dictionary */ - (NSDictionary *)prepareEventPayload:(BugsnagEvent *)event { + if (!event.app.type) { + // Use current value for crashes from older notifier versions that didn't persist config.appType + event.app.type = self.configuration.appType; + } + if (!event.apiKey) { + event.apiKey = self.configuration.apiKey; + } NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; - data[BSGKeyNotifier] = [[Bugsnag client].notifier toDict]; + data[BSGKeyNotifier] = [self.notifier toDict]; data[BSGKeyApiKey] = event.apiKey; data[BSGKeyPayloadVersion] = @"4.0"; data[BSGKeyEvents] = @[[event toJson]]; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagSessionTracker.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagSessionTracker.m index a93aee55d6..c110aed6c6 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagSessionTracker.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/BugsnagSessionTracker.m @@ -8,18 +8,17 @@ #import "BugsnagSessionTracker+Private.h" +#import "BSG_KSSystemInfo.h" #import "BugsnagApp+Private.h" -#import "BugsnagClient.h" +#import "BugsnagClient+Private.h" +#import "BugsnagCollections.h" #import "BugsnagConfiguration+Private.h" #import "BugsnagDevice+Private.h" -#import "BugsnagSessionFileStore.h" -#import "BSG_KSLogger.h" -#import "BugsnagSessionTrackingPayload.h" -#import "BugsnagSessionTrackingApiClient.h" #import "BugsnagLogger.h" #import "BugsnagSession+Private.h" -#import "BSG_KSSystemInfo.h" -#import "BugsnagCollections.h" +#import "BugsnagSessionFileStore.h" +#import "BugsnagSessionTrackingApiClient.h" +#import "BugsnagSessionTrackingPayload.h" /** Number of seconds in background required to make a new session @@ -51,14 +50,15 @@ - (instancetype)initWithConfig:(BugsnagConfiguration *)config if (self = [super init]) { _config = config; _client = client; - _apiClient = [[BugsnagSessionTrackingApiClient alloc] initWithConfig:config queueName:@"Session API queue"]; + _apiClient = [[BugsnagSessionTrackingApiClient alloc] initWithConfig:config queueName:@"Session API queue" notifier:client.notifier]; _callback = callback; NSString *storePath = [BugsnagFileStore findReportStorePath:@"Sessions"]; if (!storePath) { - BSG_KSLOG_ERROR(@"Failed to initialize session store."); + bsg_log_err(@"Failed to initialize session store."); } - _sessionStore = [BugsnagSessionFileStore storeWithPath:storePath]; + + _sessionStore = [BugsnagSessionFileStore storeWithPath:storePath maxPersistedSessions:config.maxPersistedSessions]; _extraRuntimeInfo = [NSMutableDictionary new]; } return self; 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 71ff25e808..9f1fe013fd 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 @@ -31,6 +31,7 @@ #import "BSGCachesDirectory.h" #import "BSGConnectivity.h" #import "BSGJSONSerialization.h" +#import "BSGNotificationBreadcrumbs.h" #import "BSGSerialization.h" #import "BSG_KSCrash.h" #import "BSG_KSCrashC.h" @@ -101,8 +102,6 @@ void (*onCrash)(const BSG_KSCrashReportWriter *writer); } bsg_g_bugsnag_data; -static NSDictionary *notificationNameMap; - static char *sessionId[128]; static char *sessionStartDate[128]; static char *watchdogSentinelPath = NULL; @@ -154,24 +153,6 @@ void BSSerializeDataCrashHandler(const BSG_KSCrashReportWriter *writer, int type } } -/** - * Maps an NSNotificationName to its standard (Bugsnag) name - * - * @param name The NSNotificationName (type aliased to NSString) - * - * @returns The Bugsnag-standard name, or the notification name minus the "Notification" portion. - */ -NSString *BSGBreadcrumbNameForNotificationName(NSString *name) { - NSString *readableName = notificationNameMap[name]; - - if (readableName) { - return readableName; - } else { - return [name stringByReplacingOccurrencesOfString:@"Notification" - withString:@""]; - } -} - /** * Convert a device orientation into its Bugsnag string representation * @@ -242,6 +223,12 @@ void BSGWriteSessionCrashData(BugsnagSession *session) { // MARK: - BugsnagClient // ============================================================================= +@interface BugsnagClient () + +@property BSGNotificationBreadcrumbs *notificationBreadcrumbs; + +@end + @implementation BugsnagClient /** @@ -284,10 +271,7 @@ - (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration { self.errorReportApiClient = [[BugsnagErrorReportApiClient alloc] initWithSession:configuration.session queueName:@"Error API queue"]; bsg_g_bugsnag_data.onCrash = (void (*)(const BSG_KSCrashReportWriter *))self.configuration.onCrashHandler; - static dispatch_once_t once_t; - dispatch_once(&once_t, ^{ - [self initializeNotificationNameMap]; - }); + _notificationBreadcrumbs = [[BSGNotificationBreadcrumbs alloc] initWithConfiguration:configuration breadcrumbSink:self]; self.sessionTracker = [[BugsnagSessionTracker alloc] initWithConfig:self.configuration client:self @@ -297,6 +281,8 @@ - (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration { self.breadcrumbs = [[BugsnagBreadcrumbs alloc] initWithConfiguration:self.configuration]; + [BSGJSONSerialization writeJSONObject:configuration.dictionaryRepresentation toFile:_configMetadataFile options:0 error:nil]; + // Start with a copy of the configuration metadata self.metadata = [[configuration metadata] deepCopy]; // add metadata about app/device @@ -305,7 +291,6 @@ - (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration { [self.metadata addMetadata:BSGParseDeviceMetadata(@{@"system": systemInfo}) toSection:BSGKeyDevice]; // sync initial state [self metadataChanged:self.metadata]; - [self metadataChanged:self.configuration.config]; [self metadataChanged:self.state]; // add observers for future metadata changes @@ -317,7 +302,6 @@ - (instancetype)initWithConfiguration:(BugsnagConfiguration *)configuration { [weakSelf metadataChanged:event.data]; }; [self.metadata addObserverWithBlock:observer]; - [self.configuration.config addObserverWithBlock:observer]; [self.state addObserverWithBlock:observer]; self.pluginClient = [[BugsnagPluginClient alloc] initWithPlugins:self.configuration.plugins @@ -363,86 +347,14 @@ - (void)notifyObservers:(BugsnagStateEvent *)event { } } -NSString *const kWindowVisible = @"Window Became Visible"; -NSString *const kWindowHidden = @"Window Became Hidden"; -NSString *const kBeganTextEdit = @"Began Editing Text"; -NSString *const kStoppedTextEdit = @"Stopped Editing Text"; -NSString *const kUndoOperation = @"Undo Operation"; -NSString *const kRedoOperation = @"Redo Operation"; -NSString *const kTableViewSelectionChange = @"TableView Select Change"; -NSString *const kAppWillTerminate = @"App Will Terminate"; -NSString *const BSGBreadcrumbLoadedMessage = @"Bugsnag loaded"; - -/** - * A map of notification names to human-readable strings - */ -- (void)initializeNotificationNameMap { - notificationNameMap = @{ -#if BSG_PLATFORM_TVOS - NSUndoManagerDidUndoChangeNotification : kUndoOperation, - NSUndoManagerDidRedoChangeNotification : kRedoOperation, - UIWindowDidBecomeVisibleNotification : kWindowVisible, - UIWindowDidBecomeHiddenNotification : kWindowHidden, - UIWindowDidBecomeKeyNotification : @"Window Became Key", - UIWindowDidResignKeyNotification : @"Window Resigned Key", - UIScreenBrightnessDidChangeNotification : @"Screen Brightness Changed", - UITableViewSelectionDidChangeNotification : kTableViewSelectionChange, - -#elif BSG_PLATFORM_IOS - UIWindowDidBecomeVisibleNotification : kWindowVisible, - UIWindowDidBecomeHiddenNotification : kWindowHidden, - UIApplicationWillTerminateNotification : kAppWillTerminate, - UIApplicationWillEnterForegroundNotification : @"App Will Enter Foreground", - UIApplicationDidEnterBackgroundNotification : @"App Did Enter Background", - UIKeyboardDidShowNotification : @"Keyboard Became Visible", - UIKeyboardDidHideNotification : @"Keyboard Became Hidden", - UIMenuControllerDidShowMenuNotification : @"Did Show Menu", - UIMenuControllerDidHideMenuNotification : @"Did Hide Menu", - NSUndoManagerDidUndoChangeNotification : kUndoOperation, - NSUndoManagerDidRedoChangeNotification : kRedoOperation, - UIApplicationUserDidTakeScreenshotNotification : @"Took Screenshot", - UITextFieldTextDidBeginEditingNotification : kBeganTextEdit, - UITextViewTextDidBeginEditingNotification : kBeganTextEdit, - UITextFieldTextDidEndEditingNotification : kStoppedTextEdit, - UITextViewTextDidEndEditingNotification : kStoppedTextEdit, - UITableViewSelectionDidChangeNotification : kTableViewSelectionChange, - UIDeviceBatteryStateDidChangeNotification : @"Battery State Changed", - UIDeviceBatteryLevelDidChangeNotification : @"Battery Level Changed", - UIDeviceOrientationDidChangeNotification : @"Orientation Changed", - UIApplicationDidReceiveMemoryWarningNotification : @"Memory Warning", - -#elif BSG_PLATFORM_OSX - NSApplicationDidBecomeActiveNotification : @"App Became Active", - NSApplicationDidResignActiveNotification : @"App Resigned Active", - NSApplicationDidHideNotification : @"App Did Hide", - NSApplicationDidUnhideNotification : @"App Did Unhide", - NSApplicationWillTerminateNotification : kAppWillTerminate, - NSWorkspaceScreensDidSleepNotification : @"Workspace Screen Slept", - NSWorkspaceScreensDidWakeNotification : @"Workspace Screen Awoke", - NSWindowWillCloseNotification : @"Window Will Close", - NSWindowDidBecomeKeyNotification : @"Window Became Key", - NSWindowWillMiniaturizeNotification : @"Window Will Miniaturize", - NSWindowDidEnterFullScreenNotification : @"Window Entered Full Screen", - NSWindowDidExitFullScreenNotification : @"Window Exited Full Screen", - NSControlTextDidBeginEditingNotification : @"Control Text Began Edit", - NSControlTextDidEndEditingNotification : @"Control Text Ended Edit", - NSMenuWillSendActionNotification : @"Menu Will Send Action", - NSTableViewSelectionDidChangeNotification : kTableViewSelectionChange, -#endif - }; -} - - (void)start { [self.configuration validate]; - - [self.crashSentry install:self.configuration - apiClient:self.errorReportApiClient - onCrash:&BSSerializeDataCrashHandler]; + [self.crashSentry install:self.configuration apiClient:self.errorReportApiClient notifier:self.notifier onCrash:&BSSerializeDataCrashHandler]; [self.systemState recordAppUUID]; // Needs to be called after crashSentry installed but before -computeDidCrashLastLaunch [self computeDidCrashLastLaunch]; [self.breadcrumbs removeAllBreadcrumbs]; [self setupConnectivityListener]; - [self updateAutomaticBreadcrumbDetectionSettings]; + [self.notificationBreadcrumbs start]; NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [self watchLifecycleEvents:center]; @@ -497,9 +409,7 @@ - (void)start { [self.sessionTracker startNewSessionIfAutoCaptureEnabled]; // Record a "Bugsnag Loaded" message - [self addAutoBreadcrumbOfType:BSGBreadcrumbTypeState - withMessage:BSGBreadcrumbLoadedMessage - andMetadata:nil]; + [self addAutoBreadcrumbOfType:BSGBreadcrumbTypeState withMessage:@"Bugsnag loaded" andMetadata:nil]; // notification not received in time on initial startup, so trigger manually [self willEnterForeground:self]; @@ -729,7 +639,7 @@ - (void)leaveBreadcrumbWithMessage:(NSString *_Nonnull)message { } - (void)leaveBreadcrumbForNotificationName:(NSString *_Nonnull)notificationName { - [self startListeningForStateChangeNotification:notificationName]; + [self.notificationBreadcrumbs startListeningForStateChangeNotification:notificationName]; } - (void)leaveBreadcrumbWithMessage:(NSString *_Nonnull)message @@ -883,7 +793,7 @@ - (void)notifyOutOfMemoryEvent { // If the termination breadcrumb is set, the app entered a normal // termination flow but expired before the watchdog sentinel could // be updated. In this case, no report should be sent. - if ([name isEqualToString:kAppWillTerminate]) { + if ([name isEqualToString:BSGNotificationBreadcrumbsMessageAppWillTerminate]) { return; } } @@ -964,6 +874,12 @@ - (void)notify:(NSException *)exception - (void)notifyInternal:(BugsnagEvent *_Nonnull)event block:(BugsnagOnErrorBlock)block { + NSString *errorClass = event.errors.firstObject.errorClass; + if ([self.configuration shouldDiscardErrorClass:errorClass]) { + bsg_log_info(@"Discarding event because errorClass \"%@\" matched configuration.discardClasses", errorClass); + return; + } + // enhance device information with additional metadata NSDictionary *deviceFields = [self.state getMetadataFromSection:BSGKeyDeviceState]; @@ -1004,7 +920,7 @@ - (void)notifyInternal:(BugsnagEvent *_Nonnull)event callbackOverrides:event.overrides eventOverrides:eventOverrides metadata:[event.metadata toDictionary] - config:[self.configuration.config toDictionary]]; + config:self.configuration.dictionaryRepresentation]; // A basic set of event metadata NSMutableDictionary *metadata = [@{ @@ -1057,8 +973,6 @@ - (void)metadataChanged:(BugsnagMetadata *)metadata { @synchronized(metadata) { if (metadata == self.metadata) { [BSGJSONSerialization writeJSONObject:[metadata toDictionary] toFile:self.metadataFile options:0 error:nil]; - } else if (metadata == self.configuration.config) { - [BSGJSONSerialization writeJSONObject:[metadata getMetadataFromSection:BSGKeyConfig] toFile:self.configMetadataFile options:0 error:nil]; } else if (metadata == self.state) { [BSGJSONSerialization writeJSONObject:[metadata toDictionary] toFile:self.stateMetadataFile options:0 error:nil]; } @@ -1116,7 +1030,7 @@ - (void)orientationChanged:(NSNotification *)notification { // Send a breadcrumb and preserve the orientation. [self addAutoBreadcrumbOfType:BSGBreadcrumbTypeState - withMessage:BSGBreadcrumbNameForNotificationName(notification.name) + withMessage:[self.notificationBreadcrumbs messageForNotificationName:notification.name] andMetadata:@{ @"from" : _lastOrientation, @"to" : orientation @@ -1129,11 +1043,8 @@ - (void)lowMemoryWarning:(NSNotification *)notif { [self.state addMetadata:[BSG_RFC3339DateTool stringFromDate:[NSDate date]] withKey:BSEventLowMemoryWarning toSection:BSGKeyDeviceState]; - - if ([[self configuration] shouldRecordBreadcrumbType:BSGBreadcrumbTypeState]) { - [self sendBreadcrumbForNotification:notif]; - } } + #endif /** @@ -1157,280 +1068,10 @@ - (void)addAutoBreadcrumbOfType:(BSGBreadcrumbType)breadcrumbType } } -/** - * Configure event listeners (i.e. observers) for enabled automatic breadcrumbs. - */ -- (void)updateAutomaticBreadcrumbDetectionSettings { - // State events - if ([[self configuration] shouldRecordBreadcrumbType:BSGBreadcrumbTypeState]) { - // Generic state events - for (NSString *name in [self automaticBreadcrumbStateEvents]) { - [self startListeningForStateChangeNotification:name]; - } - -#if BSG_PLATFORM_OSX - // Workspace-specific events - MacOS only - for (NSString *name in [self workspaceBreadcrumbStateEvents]) { - [self startListeningForWorkspaceStateChangeNotifications:name]; - } -#endif - - // NSMenu events (Mac only) - for (NSString *name in [self automaticBreadcrumbMenuItemEvents]) { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(sendBreadcrumbForMenuItemNotification:) - name:name - object:nil]; - } - } - - // Navigation events - if ([[self configuration] shouldRecordBreadcrumbType:BSGBreadcrumbTypeNavigation]) { - // UI/NSTableView events - for (NSString *name in [self automaticBreadcrumbTableItemEvents]) { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(sendBreadcrumbForTableViewNotification:) - name:name - object:nil]; - } - } - - // User events - if ([[self configuration] shouldRecordBreadcrumbType:BSGBreadcrumbTypeUser]) { - // UITextField/NSControl events (text editing) - for (NSString *name in [self automaticBreadcrumbControlEvents]) { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(sendBreadcrumbForControlNotification:) - name:name - object:nil]; - } - } -} - -/** - * NSWorkspace-specific automatic breadcrumb events - */ -- (NSArray *)workspaceBreadcrumbStateEvents { -#if BSG_PLATFORM_OSX - return @[ - NSWorkspaceScreensDidSleepNotification, - NSWorkspaceScreensDidWakeNotification - ]; -#endif - - // Fall-through - return nil; -} - -- (NSArray *)automaticBreadcrumbStateEvents { -#if BSG_PLATFORM_TVOS - return @[ - NSUndoManagerDidUndoChangeNotification, - NSUndoManagerDidRedoChangeNotification, - UIWindowDidBecomeVisibleNotification, - UIWindowDidBecomeHiddenNotification, UIWindowDidBecomeKeyNotification, - UIWindowDidResignKeyNotification, - UIScreenBrightnessDidChangeNotification - ]; -#elif BSG_PLATFORM_IOS - return @[ - UIWindowDidBecomeHiddenNotification, - UIWindowDidBecomeVisibleNotification, - UIApplicationWillTerminateNotification, - UIApplicationWillEnterForegroundNotification, - UIApplicationDidEnterBackgroundNotification, - UIKeyboardDidShowNotification, UIKeyboardDidHideNotification, - UIMenuControllerDidShowMenuNotification, - UIMenuControllerDidHideMenuNotification, - NSUndoManagerDidUndoChangeNotification, - NSUndoManagerDidRedoChangeNotification, -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0 - UIApplicationUserDidTakeScreenshotNotification -#endif - ]; -#elif BSG_PLATFORM_OSX - return @[ - NSApplicationDidBecomeActiveNotification, - NSApplicationDidResignActiveNotification, - NSApplicationDidHideNotification, - NSApplicationDidUnhideNotification, - NSApplicationWillTerminateNotification, - - NSWindowWillCloseNotification, - NSWindowDidBecomeKeyNotification, - NSWindowWillMiniaturizeNotification, - NSWindowDidEnterFullScreenNotification, - NSWindowDidExitFullScreenNotification - ]; -#endif - - // Fall-through - return nil; -} - -- (NSArray *)automaticBreadcrumbControlEvents { -#if BSG_PLATFORM_IOS - return @[ - UITextFieldTextDidBeginEditingNotification, - UITextViewTextDidBeginEditingNotification, - UITextFieldTextDidEndEditingNotification, - UITextViewTextDidEndEditingNotification - ]; -#elif BSG_PLATFORM_OSX - return @[ - NSControlTextDidBeginEditingNotification, - NSControlTextDidEndEditingNotification - ]; -#endif - - // Fall-through - return nil; -} - -- (NSArray *)automaticBreadcrumbTableItemEvents { -#if BSG_PLATFORM_IOS || BSG_PLATFORM_TVOS - return @[ UITableViewSelectionDidChangeNotification ]; -#elif BSG_PLATFORM_OSX - return @[ NSTableViewSelectionDidChangeNotification ]; -#endif - - // Fall-through - return nil; -} - -- (NSArray *)automaticBreadcrumbMenuItemEvents { -#if BSG_PLATFORM_TVOS - return @[]; -#elif BSG_PLATFORM_IOS - return nil; -#elif BSG_PLATFORM_OSX - return @[ NSMenuWillSendActionNotification ]; -#endif - - // Fall-through - return nil; -} - -/** - * Configure a generic state change breadcrumb listener - * - * @param notificationName The name of the notification. - */ -- (void)startListeningForStateChangeNotification:(NSString *)notificationName { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(sendBreadcrumbForNotification:) - name:notificationName - object:nil]; -} - -/** - * Configure an NSWorkspace-specific state change breadcrumb listener. MacOS only. - * - * @param notificationName The name of the notification. - */ -#if BSG_PLATFORM_OSX -- (void)startListeningForWorkspaceStateChangeNotifications:(NSString *)notificationName { - [NSWorkspace.sharedWorkspace.notificationCenter - addObserver:self - selector:@selector(sendBreadcrumbForNotification:) - name:notificationName - object:nil]; - } -#endif - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } -- (void)sendBreadcrumbForNotification:(NSNotification *)note { - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeState; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(note.name); - }]; -} - -/** - * Leave a navigation breadcrumb whenever a tableView selection changes - * - * @param notification The UI/NSTableViewSelectionDidChangeNotification - */ -- (void)sendBreadcrumbForTableViewNotification:(NSNotification *)notification { -#if BSG_PLATFORM_IOS || BSG_PLATFORM_TVOS - UITableView *tableView = [notification object]; - NSIndexPath *indexPath = [tableView indexPathForSelectedRow]; - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeNavigation; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(notification.name); - if (indexPath) { - breadcrumb.metadata = - @{ @"row" : @(indexPath.row), - @"section" : @(indexPath.section) }; - } - }]; -#elif BSG_PLATFORM_OSX - NSTableView *tableView = [notification object]; - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeNavigation; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(notification.name); - if (tableView) { - breadcrumb.metadata = @{ - @"selectedRow" : @(tableView.selectedRow), - @"selectedColumn" : @(tableView.selectedColumn) - }; - } - }]; -#endif -} - -/** -* Leave a state breadcrumb whenever a tableView selection changes -* -* @param notification The UI/NSTableViewSelectionDidChangeNotification -*/ -- (void)sendBreadcrumbForMenuItemNotification:(NSNotification *)notification { -#if BSG_PLATFORM_OSX - NSMenuItem *menuItem = [[notification userInfo] valueForKey:@"MenuItem"]; - if ([menuItem isKindOfClass:[NSMenuItem class]]) { - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeState; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(notification.name); - if (menuItem.title.length > 0) - breadcrumb.metadata = @{BSGKeyAction : menuItem.title}; - }]; - } -#endif -} - -- (void)sendBreadcrumbForControlNotification:(NSNotification *)note { -#if BSG_PLATFORM_IOS - UIControl *control = note.object; - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeUser; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(note.name); - NSString *label = control.accessibilityLabel; - if (label.length > 0) { - breadcrumb.metadata = @{BSGKeyLabel : label}; - } - }]; -#elif BSG_PLATFORM_OSX - NSControl *control = note.object; - [self addBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { - breadcrumb.type = BSGBreadcrumbTypeUser; - breadcrumb.message = BSGBreadcrumbNameForNotificationName(note.name); - if ([control respondsToSelector:@selector(accessibilityLabel)]) { - NSString *label = control.accessibilityLabel; - if (label.length > 0) { - breadcrumb.metadata = @{BSGKeyLabel : label}; - } - } - }]; -#endif -} - // MARK: - - (void)addMetadata:(NSDictionary *_Nonnull)metadata 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 d704d34e9f..52312be739 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 @@ -1,9 +1,9 @@ #import "BSGConfigurationBuilder.h" -#import "BSG_KSLogger.h" #import "BugsnagConfiguration.h" #import "BugsnagEndpointConfiguration.h" #import "BugsnagKeys.h" +#import "BugsnagLogger.h" static BOOL BSGValueIsBoolean(id object) { return object != nil && [object isKindOfClass:[NSNumber class]] @@ -30,6 +30,8 @@ + (BugsnagConfiguration *)configurationFromOptions:(NSDictionary *)options { BSGKeyEnabledReleaseStages, BSGKeyEndpoints, BSGKeyMaxBreadcrumbs, + BSGKeyMaxPersistedEvents, + BSGKeyMaxPersistedSessions, BSGKeyPersistUser, BSGKeyRedactedKeys, BSGKeyReleaseStage, @@ -39,7 +41,7 @@ + (BugsnagConfiguration *)configurationFromOptions:(NSDictionary *)options { NSMutableSet *unknownKeys = [NSMutableSet setWithArray:options.allKeys]; [unknownKeys minusSet:[NSSet setWithArray:validKeys]]; if (unknownKeys.count > 0) { - BSG_KSLOG_WARN(@"Unknown dictionary keys passed in configuration options: %@", unknownKeys); + bsg_log_warn(@"Unknown dictionary keys passed in configuration options: %@", unknownKeys); } [self loadString:config options:options key:BSGKeyAppType]; @@ -54,7 +56,9 @@ + (BugsnagConfiguration *)configurationFromOptions:(NSDictionary *)options { [self loadStringArray:config options:options key:BSGKeyRedactedKeys]; [self loadEndpoints:config options:options]; - [self loadMaxBreadcrumbs:config options:options]; + [self loadNumber:config options:options key:BSGKeyMaxBreadcrumbs]; + [self loadNumber:config options:options key:BSGKeyMaxPersistedEvents]; + [self loadNumber:config options:options key:BSGKeyMaxPersistedSessions]; [self loadSendThreads:config options:options]; return config; } @@ -71,6 +75,12 @@ + (void)loadString:(BugsnagConfiguration *)config options:(NSDictionary *)option } } ++ (void)loadNumber:(BugsnagConfiguration *)config options:(NSDictionary *)options key:(NSString *)key { + if (options[key] && [options[key] isKindOfClass:[NSNumber class]]) { + [config setValue:options[key] forKey:key]; + } +} + + (void)loadStringArray:(BugsnagConfiguration *)config options:(NSDictionary *)options key:(NSString *)key { if (options[key] && [options[key] isKindOfClass:[NSArray class]]) { NSArray *val = options[key]; @@ -97,13 +107,6 @@ + (void)loadEndpoints:(BugsnagConfiguration *)config options:(NSDictionary *)opt } } -+ (void)loadMaxBreadcrumbs:(BugsnagConfiguration *)config options:(NSDictionary *)options { - if (options[BSGKeyMaxBreadcrumbs] && [options[BSGKeyMaxBreadcrumbs] isKindOfClass:[NSNumber class]]) { - NSNumber *num = options[BSGKeyMaxBreadcrumbs]; - config.maxBreadcrumbs = [num unsignedIntValue]; - } -} - + (void)loadSendThreads:(BugsnagConfiguration *)config options:(NSDictionary *)options { if (options[BSGKeySendThreads] && [options[BSGKeySendThreads] isKindOfClass:[NSString class]]) { NSString *sendThreads = [options[BSGKeySendThreads] lowercaseString]; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration+Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration+Private.h index 9e20d5c890..ad2a2585db 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration+Private.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Configuration/BugsnagConfiguration+Private.h @@ -14,13 +14,14 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark Initializers -/// Initializes the configuration with values previously stored in metadata. -- (instancetype)initWithMetadata:(NSDictionary *)JSONObject NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithDictionaryRepresentation:(NSDictionary *)JSONObject NS_DESIGNATED_INITIALIZER; #pragma mark Properties -/// Meta-information about the state of Bugsnag -@property (retain, nullable) BugsnagMetadata *config; +/// The user defaults database to use for persistence of user information. +@property (class, nonatomic) NSUserDefaults *userDefaults; + +@property (readonly) NSDictionary *dictionaryRepresentation; @property (readonly) NSDictionary *errorApiHeaders; @@ -49,6 +50,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)deletePersistedUserData; +- (BOOL)shouldDiscardErrorClass:(NSString *)errorClass; + - (BOOL)shouldRecordBreadcrumbType:(BSGBreadcrumbType)breadcrumbType; /// Throws an NSInvalidArgumentException if the API key is empty or missing. 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 1d9c043687..001e893a76 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 @@ -51,6 +51,12 @@ @implementation BugsnagConfiguration +static NSUserDefaults *userDefaults; + ++ (void)initialize { + userDefaults = NSUserDefaults.standardUserDefaults; +} + + (instancetype _Nonnull)loadConfig { NSDictionary *options = [[NSBundle mainBundle] infoDictionary][@"bugsnag"]; return [BSGConfigurationBuilder configurationFromOptions:options]; @@ -77,12 +83,14 @@ - (nonnull id)copyWithZone:(nullable NSZone *)zone { [copy setAutoDetectErrors:self.autoDetectErrors]; [copy setAutoTrackSessions:self.autoTrackSessions]; [copy setBundleVersion:self.bundleVersion]; - [copy setConfig:[[BugsnagMetadata alloc] initWithDictionary:[[self.config toDictionary] mutableCopy]]]; [copy setContext:self.context]; [copy setEnabledBreadcrumbTypes:self.enabledBreadcrumbTypes]; [copy setEnabledErrorTypes:self.enabledErrorTypes]; [copy setEnabledReleaseStages:self.enabledReleaseStages]; + copy.discardClasses = self.discardClasses; [copy setRedactedKeys:self.redactedKeys]; + [copy setMaxPersistedEvents:self.maxPersistedEvents]; + [copy setMaxPersistedSessions:self.maxPersistedSessions]; [copy setMaxBreadcrumbs:self.maxBreadcrumbs]; copy->_metadata = [[BugsnagMetadata alloc] initWithDictionary:[[self.metadata toDictionary] mutableCopy]]; [copy setEndpoints:self.endpoints]; @@ -90,7 +98,7 @@ - (nonnull id)copyWithZone:(nullable NSZone *)zone { [copy setPersistUser:self.persistUser]; [copy setPlugins:[self.plugins copy]]; [copy setReleaseStage:self.releaseStage]; - [copy setSession:[self.session copy]]; + copy.session = self.session; // NSURLSession does not declare conformance to NSCopying [copy setSendThreads:self.sendThreads]; [copy setUser:self.user.id withEmail:self.user.email @@ -124,6 +132,14 @@ + (BOOL)isValidApiKey:(NSString *)apiKey { return isHex && [apiKey length] == BSGApiKeyLength; } ++ (void)setUserDefaults:(NSUserDefaults *)newValue { + userDefaults = newValue; +} + ++ (NSUserDefaults *)userDefaults { + return userDefaults; +} + // ----------------------------------------------------------------------------- // MARK: - Initializers // ----------------------------------------------------------------------------- @@ -147,7 +163,6 @@ - (instancetype)initWithApiKey:(NSString *)apiKey { [self setApiKey:apiKey]; } _metadata = [[BugsnagMetadata alloc] init]; - _config = [[BugsnagMetadata alloc] init]; _endpoints = [BugsnagEndpointConfiguration new]; _sessionURL = [NSURL URLWithString:@"https://sessions.bugsnag.com"]; _autoDetectErrors = YES; @@ -159,6 +174,8 @@ - (instancetype)initWithApiKey:(NSString *)apiKey { _enabledReleaseStages = nil; _redactedKeys = [NSSet setWithArray:@[@"password"]]; _enabledBreadcrumbTypes = BSGEnabledBreadcrumbTypeAll; + _maxPersistedEvents = 12; + _maxPersistedSessions = 32; _maxBreadcrumbs = 25; _autoTrackSessions = YES; _sendThreads = BSGThreadSendPolicyAlways; @@ -205,15 +222,16 @@ - (instancetype)initWithApiKey:(NSString *)apiKey { return self; } -- (instancetype)initWithMetadata:(NSDictionary *)metadata { +- (instancetype)initWithDictionaryRepresentation:(NSDictionary *)dictionaryRepresentation { if (!(self = [super init])) { return nil; } - _appVersion = metadata[BSGKeyAppVersion]; - _context = metadata[BSGKeyContext]; - _bundleVersion = metadata[BSGKeyBundleVersion]; - _enabledReleaseStages = metadata[BSGKeyEnabledReleaseStages]; - _releaseStage = metadata[BSGKeyReleaseStage]; + _appType = dictionaryRepresentation[BSGKeyAppType]; + _appVersion = dictionaryRepresentation[BSGKeyAppVersion]; + _bundleVersion = dictionaryRepresentation[BSGKeyBundleVersion]; + _context = dictionaryRepresentation[BSGKeyContext]; + _enabledReleaseStages = dictionaryRepresentation[BSGKeyEnabledReleaseStages]; + _releaseStage = dictionaryRepresentation[BSGKeyReleaseStage]; return self; } @@ -221,6 +239,17 @@ - (instancetype)initWithMetadata:(NSDictionary *)metadata { // MARK: - Instance Methods // ----------------------------------------------------------------------------- +- (NSDictionary *)dictionaryRepresentation { + NSMutableDictionary *dictionaryRepresentation = [NSMutableDictionary dictionary]; + dictionaryRepresentation[BSGKeyAppType] = self.appType; + dictionaryRepresentation[BSGKeyAppVersion] = self.appVersion; + dictionaryRepresentation[BSGKeyBundleVersion] = self.bundleVersion; + dictionaryRepresentation[BSGKeyContext] = self.context; + dictionaryRepresentation[BSGKeyEnabledReleaseStages] = self.enabledReleaseStages.allObjects; + dictionaryRepresentation[BSGKeyReleaseStage] = self.releaseStage; + return dictionaryRepresentation; +} + /** * Whether reports should be sent, based on release stage options * @@ -350,7 +379,6 @@ - (void)setPersistUser:(BOOL)persistUser { */ - (BugsnagUser *)getPersistedUserData { @synchronized(self) { - NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSString *email = [userDefaults objectForKey:kBugsnagUserEmailAddress]; NSString *name = [userDefaults objectForKey:kBugsnagUserName]; NSString *userId = [userDefaults objectForKey:kBugsnagUserUserId]; @@ -370,8 +398,6 @@ - (BugsnagUser *)getPersistedUserData { - (void)persistUserData { @synchronized(self) { if (_user) { - NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; - // Email if (_user.email) { [userDefaults setObject:_user.email forKey:kBugsnagUserEmailAddress]; @@ -404,7 +430,6 @@ - (void)persistUserData { */ -(void)deletePersistedUserData { @synchronized(self) { - NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults removeObjectForKey:kBugsnagUserEmailAddress]; [userDefaults removeObjectForKey:kBugsnagUserName]; [userDefaults removeObjectForKey:kBugsnagUserUserId]; @@ -415,6 +440,46 @@ -(void)deletePersistedUserData { // MARK: - Properties: Getters and Setters // ----------------------------------------------------------------------------- +@synthesize maxPersistedEvents = _maxPersistedEvents; + +- (NSUInteger)maxPersistedEvents { + @synchronized (self) { + return _maxPersistedEvents; + } +} + +- (void)setMaxPersistedEvents:(NSUInteger)maxPersistedEvents { + @synchronized (self) { + if (maxPersistedEvents >= 1 && maxPersistedEvents <= 100) { + _maxPersistedEvents = maxPersistedEvents; + } else { + bsg_log_err(@"Invalid configuration value detected. Option maxPersistedEvents " + "should be an integer between 1-100. Supplied value is %lu", + (unsigned long) maxPersistedEvents); + } + } +} + +@synthesize maxPersistedSessions = _maxPersistedSessions; + +- (NSUInteger)maxPersistedSessions { + @synchronized (self) { + return _maxPersistedSessions; + } +} + +- (void)setMaxPersistedSessions:(NSUInteger)maxPersistedSessions { + @synchronized (self) { + if (maxPersistedSessions >= 1 && maxPersistedSessions <= 100) { + _maxPersistedSessions = maxPersistedSessions; + } else { + bsg_log_err(@"Invalid configuration value detected. Option maxPersistedSessions " + "should be an integer between 1-100. Supplied value is %lu", + (unsigned long) maxPersistedSessions); + } + } +} + @synthesize maxBreadcrumbs = _maxBreadcrumbs; - (NSUInteger)maxBreadcrumbs { @@ -435,6 +500,21 @@ - (void)setMaxBreadcrumbs:(NSUInteger)maxBreadcrumbs { } } +- (BOOL)shouldDiscardErrorClass:(NSString *)errorClass { + for (id obj in self.discardClasses) { + if ([obj isKindOfClass:[NSString class]]) { + if ([obj isEqualToString:errorClass]) { + return YES; + } + } else if ([obj isKindOfClass:[NSRegularExpression class]]) { + if ([obj firstMatchInString:errorClass options:0 range:NSMakeRange(0, errorClass.length)]) { + return YES; + } + } + } + return NO; +} + /** * Specific types of breadcrumb should be recorded if either enabledBreadcrumbTypes * is None, or contains the type. @@ -469,49 +549,6 @@ - (BOOL)shouldRecordBreadcrumbType:(BSGBreadcrumbType)type { return NO; } -// MARK: - - -@synthesize releaseStage = _releaseStage; - -- (NSString *)releaseStage { - @synchronized (self) { - return _releaseStage; - } -} - -- (void)setReleaseStage:(NSString *)newReleaseStage { - @synchronized (self) { - NSString *key = NSStringFromSelector(@selector(releaseStage)); - [self willChangeValueForKey:key]; - _releaseStage = newReleaseStage; - [self didChangeValueForKey:key]; - [self.config addMetadata:newReleaseStage - withKey:BSGKeyReleaseStage - toSection:BSGKeyConfig]; - } -} - -// MARK: - - -@synthesize enabledReleaseStages = _enabledReleaseStages; - -- (NSSet *)enabledReleaseStages { - @synchronized (self) { - return _enabledReleaseStages; - } -} - -- (void)setEnabledReleaseStages:(NSSet *)newReleaseStages -{ - @synchronized (self) { - NSSet *releaseStagesCopy = [newReleaseStages copy]; - _enabledReleaseStages = releaseStagesCopy; - [self.config addMetadata:[releaseStagesCopy allObjects] - withKey:BSGKeyEnabledReleaseStages - toSection:BSGKeyConfig]; - } -} - // MARK: - enabledBreadcrumbTypes @synthesize enabledBreadcrumbTypes = _enabledBreadcrumbTypes; @@ -530,63 +567,6 @@ - (void)setEnabledBreadcrumbTypes:(BSGEnabledBreadcrumbType)enabledBreadcrumbTyp // MARK: - -@synthesize context = _context; - -- (NSString *)context { - @synchronized (self) { - return _context; - } -} - -- (void)setContext:(NSString *)newContext { - @synchronized (self) { - _context = newContext; - [self.config addMetadata:newContext - withKey:BSGKeyContext - toSection:BSGKeyConfig]; - } -} - -// MARK: - - -@synthesize appVersion = _appVersion; - -- (NSString *)appVersion { - @synchronized (self) { - return _appVersion; - } -} - -- (void)setAppVersion:(NSString *)newVersion { - @synchronized (self) { - _appVersion = newVersion; - [self.config addMetadata:newVersion - withKey:BSGKeyAppVersion - toSection:BSGKeyConfig]; - } -} - -// MARK: - - -@synthesize bundleVersion = _bundleVersion; - -- (NSString *)bundleVersion { - @synchronized (self) { - return _bundleVersion; - } -} - -- (void)setBundleVersion:(NSString *)newVersion { - @synchronized (self) { - _bundleVersion = newVersion; - [self.config addMetadata:newVersion - withKey:BSGKeyBundleVersion - toSection:BSGKeyConfig]; - } -} - -// MARK: - - - (void)validate { if (self.apiKey.length == 0) { @throw [NSException exceptionWithName:NSInvalidArgumentException reason: @@ -594,7 +574,7 @@ - (void)validate { } if (![BugsnagConfiguration isValidApiKey:self.apiKey]) { - bsg_log_warn(@"Invalid Bugsnag apiKey: expected a 32-character hexademical string, got \"%@\"", self.apiKey); + bsg_log_warn(@"Invalid apiKey: expected a 32-character hexademical string, got \"%@\"", self.apiKey); } } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagErrorReportApiClient.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagErrorReportApiClient.m index b9bb89a900..859e6b00a8 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagErrorReportApiClient.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagErrorReportApiClient.m @@ -7,11 +7,14 @@ // #import "BugsnagErrorReportApiClient.h" + +#import "BSG_KSCrash.h" #import "Bugsnag.h" -#import "BugsnagLogger.h" #import "BugsnagClient.h" #import "BugsnagErrorReportSink.h" #import "BugsnagKeys.h" +#import "BugsnagLogger.h" + @interface BSGDeliveryOperation : NSOperation @end diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.h index 08dc7dde57..abe1b71ba7 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.h @@ -7,11 +7,12 @@ #import "BugsnagApiClient.h" @class BugsnagConfiguration; +@class BugsnagNotifier; @class BugsnagSessionFileStore; @interface BugsnagSessionTrackingApiClient : BugsnagApiClient -- (instancetype)initWithConfig:(BugsnagConfiguration *)configuration queueName:(NSString *)queueName; +- (instancetype)initWithConfig:(BugsnagConfiguration *)configuration queueName:(NSString *)queueName notifier:(BugsnagNotifier *)notifier; /** * Asynchronously delivers sessions written to the store @@ -22,4 +23,6 @@ @property (copy) NSString *codeBundleId; +@property BugsnagNotifier *notifier; + @end diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.m index d8f4467622..67f783b60c 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Delivery/BugsnagSessionTrackingApiClient.m @@ -5,7 +5,6 @@ #import "BugsnagSessionTrackingApiClient.h" -#import "Bugsnag+Private.h" #import "BugsnagConfiguration+Private.h" #import "BugsnagSessionTrackingPayload.h" #import "BugsnagSessionFileStore.h" @@ -22,10 +21,11 @@ @interface BugsnagSessionTrackingApiClient () @implementation BugsnagSessionTrackingApiClient -- (instancetype)initWithConfig:(BugsnagConfiguration *)configuration queueName:(NSString *)queueName { +- (instancetype)initWithConfig:(BugsnagConfiguration *)configuration queueName:(NSString *)queueName notifier:(BugsnagNotifier *)notifier { if ((self = [super initWithSession:configuration.session queueName:queueName])) { _activeIds = [NSMutableSet new]; _config = configuration; + _notifier = notifier; } return self; } @@ -61,8 +61,9 @@ - (void)deliverSessionsInStore:(BugsnagSessionFileStore *)store { [self.sendQueue addOperationWithBlock:^{ BugsnagSessionTrackingPayload *payload = [[BugsnagSessionTrackingPayload alloc] initWithSessions:@[session] - config:[Bugsnag configuration] - codeBundleId:self.codeBundleId]; + config:self.config + codeBundleId:self.codeBundleId + notifier:self.notifier]; NSMutableDictionary *data = [payload toJson]; NSDictionary *HTTPHeaders = @{ BugsnagHTTPHeaderNameApiKey: apiKey ?: @"", @@ -73,14 +74,14 @@ - (void)deliverSessionsInStore:(BugsnagSessionFileStore *)store { completionHandler:^(BugsnagApiClientDeliveryStatus status, NSError *error) { switch (status) { case BugsnagApiClientDeliveryStatusDelivered: - bsg_log_info(@"Sent session %@ to Bugsnag", session.id); + bsg_log_info(@"Sent session %@", session.id); [store deleteFileWithId:fileId]; break; case BugsnagApiClientDeliveryStatusFailed: - bsg_log_warn(@"Failed to send sessions to Bugsnag: %@", error); + bsg_log_warn(@"Failed to send sessions: %@", error); break; case BugsnagApiClientDeliveryStatusUndeliverable: - bsg_log_warn(@"Failed to send sessions to Bugsnag: %@", error); + bsg_log_warn(@"Failed to send sessions: %@", error); [store deleteFileWithId:fileId]; break; } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BSGCachesDirectory.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BSGCachesDirectory.m index b0a9d0ea23..b195410568 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BSGCachesDirectory.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BSGCachesDirectory.m @@ -7,7 +7,8 @@ // #import "BSGCachesDirectory.h" -#import "BSG_KSLogger.h" + +#import "BugsnagLogger.h" @implementation BSGCachesDirectory @@ -21,12 +22,12 @@ + (NSString *)cachesDirectory { dispatch_once(&onceToken, ^{ NSArray *dirs = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); if ([dirs count] == 0) { - BSG_KSLOG_ERROR(@"Could not locate cache directory path."); + bsg_log_err(@"Could not locate cache directory path."); return; } if ([dirs[0] length] == 0) { - BSG_KSLOG_ERROR(@"Could not locate cache directory path."); + bsg_log_err(@"Could not locate cache directory path."); return; } cachesPath = dirs[0]; @@ -42,7 +43,7 @@ + (NSString *)getSubdirPath:(NSString *)relativePath { NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error = nil; if(![fileManager createDirectoryAtPath:subdirPath withIntermediateDirectories:YES attributes:nil error:&error]) { - BSG_KSLOG_ERROR(@"Could not create caches subdir %@: %@", subdirPath, error); + bsg_log_err(@"Could not create caches subdir %@: %@", subdirPath, error); // Make the best of it, just return the top-level caches dir. return cachesDir; } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.h index aeba03ee38..37c8c1cb38 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.h @@ -42,8 +42,8 @@ extern NSString *const BSGKeyExceptionName; extern NSString *const BSGKeyExceptions; extern NSString *const BSGKeyExecutableName; extern NSString *const BSGKeyExtraRuntimeInfo; -extern NSString *const BSGKeyFrameAddrFormat; extern NSString *const BSGKeyFrameAddress; +extern NSString *const BSGKeyFrameAddrFormat; extern NSString *const BSGKeyGroupingHash; extern NSString *const BSGKeyHwMachine; extern NSString *const BSGKeyHwModel; @@ -63,6 +63,8 @@ extern NSString *const BSGKeyMachoLoadAddr; extern NSString *const BSGKeyMachoUUID; extern NSString *const BSGKeyMachoVMAddress; extern NSString *const BSGKeyMaxBreadcrumbs; +extern NSString *const BSGKeyMaxPersistedEvents; +extern NSString *const BSGKeyMaxPersistedSessions; extern NSString *const BSGKeyMessage; extern NSString *const BSGKeyMetadata; extern NSString *const BSGKeyMethod; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.m index 300a94fb30..62d22abb0c 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagKeys.m @@ -38,8 +38,8 @@ NSString *const BSGKeyExceptions = @"exceptions"; NSString *const BSGKeyExecutableName = @"CFBundleExecutable"; NSString *const BSGKeyExtraRuntimeInfo = @"extraRuntimeInfo"; -NSString *const BSGKeyFrameAddrFormat = @"0x%lx"; NSString *const BSGKeyFrameAddress = @"frameAddress"; +NSString *const BSGKeyFrameAddrFormat = @"0x%lx"; NSString *const BSGKeyGroupingHash = @"groupingHash"; NSString *const BSGKeyHwMachine = @"hw.machine"; NSString *const BSGKeyHwModel = @"hw.model"; @@ -59,6 +59,8 @@ NSString *const BSGKeyMachoUUID = @"machoUUID"; NSString *const BSGKeyMachoVMAddress = @"machoVMAddress"; NSString *const BSGKeyMaxBreadcrumbs = @"maxBreadcrumbs"; +NSString *const BSGKeyMaxPersistedEvents = @"maxPersistedEvents"; +NSString *const BSGKeyMaxPersistedSessions = @"maxPersistedSessions"; NSString *const BSGKeyMessage = @"message"; NSString *const BSGKeyMetadata = @"metaData"; NSString *const BSGKeyMethod = @"method"; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagLogger.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagLogger.h index f4bb4e8331..c1ad6212fe 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagLogger.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Helpers/BugsnagLogger.h @@ -24,9 +24,6 @@ * That file includes this one. No further configuration is required. */ -#ifndef BugsnagLogger_h -#define BugsnagLogger_h - #define BSG_LOGLEVEL_NONE 0 #define BSG_LOGLEVEL_ERR 10 #define BSG_LOGLEVEL_WARN 20 @@ -38,28 +35,32 @@ #define BSG_LOG_LEVEL BSG_LOGLEVEL_INFO #endif +#ifdef __OBJC__ + +#import + #if BSG_LOG_LEVEL >= BSG_LOGLEVEL_ERR -#define bsg_log_err NSLog +#define bsg_log_err(...) NSLog(@"[Bugsnag] [ERROR] " __VA_ARGS__) #else #define bsg_log_err(format, ...) #endif #if BSG_LOG_LEVEL >= BSG_LOGLEVEL_WARN -#define bsg_log_warn NSLog +#define bsg_log_warn(...) NSLog(@"[Bugsnag] [WARN] " __VA_ARGS__) #else #define bsg_log_warn(format, ...) #endif #if BSG_LOG_LEVEL >= BSG_LOGLEVEL_INFO -#define bsg_log_info NSLog +#define bsg_log_info(...) NSLog(@"[Bugsnag] [INFO] " __VA_ARGS__) #else #define bsg_log_info(format, ...) #endif #if BSG_LOG_LEVEL >= BSG_LOGLEVEL_DEBUG -#define bsg_log_debug NSLog +#define bsg_log_debug(...) NSLog(@"[Bugsnag] [DEBUG] " __VA_ARGS__) #else #define bsg_log_debug(format, ...) #endif -#endif /* BugsnagLogger_h */ +#endif diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrash.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrash.m index a001905b54..1c47cf9900 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrash.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrash.m @@ -283,7 +283,7 @@ - (void)sendAllReports { NSDictionary *reports = [self allReportsByFilename]; - BSG_KSLOG_INFO(@"Sending %d crash reports", [reports count]); + BSG_KSLOG_INFO(@"Sending %lu crash reports", (unsigned long)reports.count); [self sendReports:reports withBlock:^(NSString *filename, BOOL completed, 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 20207a14a4..59d728d192 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 @@ -965,6 +965,27 @@ void bsg_kscrw_i_writeNotableAddresses( writer->endContainer(writer); } +/** Write the message from the `__crash_info` Mach section into the report. + * + * @param writer The writer. + * + * @param key The object key. + * + * @param address The address of the first frame in the backtrace. + */ +void bsg_kscrw_i_writeCrashInfoMessage(const BSG_KSCrashReportWriter *const writer, + const char *key, uintptr_t address) { + BSG_Mach_Header_Info *image = bsg_mach_headers_image_at_address(address); + if (!image) { + BSG_KSLOG_ERROR("Could not locate mach header info"); + return; + } + const char *message = bsg_mach_headers_get_crash_info_message(image); + if (message) { + writer->addStringElement(writer, key, message); + } +} + /** Write information about a thread to the report. * * @param writer The writer. @@ -1021,6 +1042,10 @@ void bsg_kscrw_i_writeThread(const BSG_KSCrashReportWriter *const writer, writer, BSG_KSCrashField_NotableAddresses, machineContext); } } + if (isCrashedThread && backtrace && backtraceLength) { + bsg_kscrw_i_writeCrashInfoMessage(writer, BSG_KSCrashField_CrashInfoMessage, + backtrace[0]); + } } writer->endContainer(writer); } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReportFields.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReportFields.h index 475c7e0053..44aa19d5fa 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReportFields.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/BSG_KSCrashReportFields.h @@ -95,6 +95,7 @@ #define BSG_KSCrashField_Backtrace "backtrace" #define BSG_KSCrashField_Basic "basic" #define BSG_KSCrashField_Crashed "crashed" +#define BSG_KSCrashField_CrashInfoMessage "crash_info_message" #define BSG_KSCrashField_CurrentThread "current_thread" #define BSG_KSCrashField_DispatchQueue "dispatch_queue" #define BSG_KSCrashField_NotableAddresses "notable_addresses" diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSLogger.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSLogger.h index 7676817d3f..4700260602 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSLogger.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSLogger.h @@ -356,6 +356,24 @@ bool bsg_kslog_setLogFilename(const char *filename, bool overwrite); #undef BSG_KSLOG_BAK_TRACE #endif +#ifdef __OBJC__ + +#pragma mark - Redirect BSG_KSLOG_* to bsg_log_* so that logging output has a unified format. + +#undef BSG_KSLOG_ERROR +#undef BSG_KSLOG_WARN +#undef BSG_KSLOG_INFO +#undef BSG_KSLOG_DEBUG +#undef BSG_KSLOG_TRACE + +#define BSG_KSLOG_ERROR bsg_log_err +#define BSG_KSLOG_WARN bsg_log_warn +#define BSG_KSLOG_INFO bsg_log_info +#define BSG_KSLOG_DEBUG bsg_log_debug +#define BSG_KSLOG_TRACE bsg_log_debug + +#endif // __OBJC__ + #ifdef __cplusplus } #endif diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.c b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.c new file mode 100644 index 0000000000..4b30496090 --- /dev/null +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.c @@ -0,0 +1,340 @@ +// +// BSG_KSMachHeaders.c +// Bugsnag +// +// Created by Robin Macharg on 04/05/2020. +// Copyright © 2020 Bugsnag. All rights reserved. +// + +#include "BSG_KSMachHeaders.h" + +#include "BSG_KSDynamicLinker.h" +#include "BSG_KSMach.h" + +#include +#include +#include +#include + +// Copied from https://github.com/apple/swift/blob/swift-5.0-RELEASE/include/swift/Runtime/Debug.h#L28-L40 + +#define CRASHREPORTER_ANNOTATIONS_VERSION 5 +#define CRASHREPORTER_ANNOTATIONS_SECTION "__crash_info" + +struct crashreporter_annotations_t { + uint64_t version; // unsigned long + uint64_t message; // char * + uint64_t signature_string; // char * + uint64_t backtrace; // char * + uint64_t message2; // char * + uint64_t thread; // uint64_t + uint64_t dialog_mode; // unsigned int + uint64_t abort_cause; // unsigned int +}; + +// MARK: - Mach Header Linked List + +static BSG_Mach_Header_Info *bsg_g_mach_headers_images_head; +static BSG_Mach_Header_Info *bsg_g_mach_headers_images_tail; +static dispatch_queue_t bsg_g_serial_queue; + +BSG_Mach_Header_Info *bsg_mach_headers_get_images() { + return bsg_g_mach_headers_images_head; +} + +void bsg_mach_headers_initialize() { + + // Clear any existing headers to reset the head/tail pointers + for (BSG_Mach_Header_Info *img = bsg_g_mach_headers_images_head; img != NULL; ) { + BSG_Mach_Header_Info *imgToDelete = img; + img = img->next; + free(imgToDelete); + } + + bsg_g_mach_headers_images_head = NULL; + bsg_g_mach_headers_images_tail = NULL; + bsg_g_serial_queue = dispatch_queue_create("com.bugsnag.mach-headers", DISPATCH_QUEUE_SERIAL); +} + +void bsg_mach_headers_register_for_changes() { + + // Register for binary images being loaded and unloaded. dyld calls the add function once + // for each library that has already been loaded and then keeps this cache up-to-date + // with future changes + _dyld_register_func_for_add_image(&bsg_mach_headers_add_image); + _dyld_register_func_for_remove_image(&bsg_mach_headers_remove_image); + +} + +/** + * Populate a Mach binary image info structure + * + * @param header The Mach binary image header + * + * @param info Encapsulated Binary Image info + * + * @returns a boolean indicating success + */ +bool bsg_mach_headers_populate_info(const struct mach_header *header, intptr_t slide, BSG_Mach_Header_Info *info) { + + // Early exit conditions; this is not a valid/useful binary image + // 1. We can't find a sensible Mach command + uintptr_t cmdPtr = bsg_mach_headers_first_cmd_after_header(header); + if (cmdPtr == 0) { + return false; + } + + // 2. The image doesn't have a name. Note: running with a debugger attached causes this condition to match. + Dl_info DlInfo = (const Dl_info) { 0 }; + dladdr(header, &DlInfo); + const char *imageName = DlInfo.dli_fname; + if (!imageName) { + return false; + } + + // Look for the TEXT segment to get the image size. + // Also look for a UUID command. + uint64_t imageSize = 0; + uint64_t imageVmAddr = 0; + uint8_t *uuid = NULL; + + for (uint32_t iCmd = 0; iCmd < header->ncmds; iCmd++) { + struct load_command *loadCmd = (struct load_command *)cmdPtr; + switch (loadCmd->cmd) { + case LC_SEGMENT: { + struct segment_command *segCmd = (struct segment_command *)cmdPtr; + if (strcmp(segCmd->segname, SEG_TEXT) == 0) { + imageSize = segCmd->vmsize; + imageVmAddr = segCmd->vmaddr; + } + break; + } + case LC_SEGMENT_64: { + struct segment_command_64 *segCmd = + (struct segment_command_64 *)cmdPtr; + if (strcmp(segCmd->segname, SEG_TEXT) == 0) { + imageSize = segCmd->vmsize; + imageVmAddr = segCmd->vmaddr; + } + break; + } + case LC_UUID: { + struct uuid_command *uuidCmd = (struct uuid_command *)cmdPtr; + uuid = uuidCmd->uuid; + break; + } + } + cmdPtr += loadCmd->cmdsize; + } + + // Save these values + info->header = header; + info->imageSize = imageSize; + info->imageVmAddr = imageVmAddr; + info->uuid = uuid; + info->name = imageName; + info->slide = slide; + info->unloaded = FALSE; + info->next = NULL; + + return true; +} + +void bsg_mach_headers_add_image(const struct mach_header *header, intptr_t slide) { + BSG_Mach_Header_Info *newImage = malloc(sizeof(BSG_Mach_Header_Info)); + if (newImage != NULL) { + if (bsg_mach_headers_populate_info(header, slide, newImage)) { + dispatch_sync(bsg_g_serial_queue, ^{ + if (bsg_g_mach_headers_images_head == NULL) { + bsg_g_mach_headers_images_head = newImage; + } else { + bsg_g_mach_headers_images_tail->next = newImage; + } + bsg_g_mach_headers_images_tail = newImage; + }); + } + } +} + +/** + * To avoid a destructive operation that could lead thread safety problems, we maintain the + * image record, but mark it as unloaded + */ +void bsg_mach_headers_remove_image(const struct mach_header *header, intptr_t slide) { + BSG_Mach_Header_Info existingImage = { 0 }; + if (bsg_mach_headers_populate_info(header, slide, &existingImage)) { + for (BSG_Mach_Header_Info *img = bsg_g_mach_headers_images_head; img != NULL; img = img->next) { + if (img->imageVmAddr == existingImage.imageVmAddr) { + img->unloaded = true; + } + } + } +} + +BSG_Mach_Header_Info *bsg_mach_headers_image_named(const char *const imageName, bool exactMatch) { + + if (imageName != NULL) { + + for (BSG_Mach_Header_Info *img = bsg_g_mach_headers_images_head; img != NULL; img = img->next) { + if (img->name == NULL) { + continue; // name is null if the index is out of range per dyld(3) + } else if (img->unloaded == true) { + continue; // ignore unloaded libraries + } else if (exactMatch) { + if (strcmp(img->name, imageName) == 0) { + return img; + } + } else { + if (strstr(img->name, imageName) != NULL) { + return img; + } + } + } + } + + return NULL; +} + +BSG_Mach_Header_Info *bsg_mach_headers_image_at_address(const uintptr_t address) { + + for (BSG_Mach_Header_Info *img = bsg_g_mach_headers_images_head; img != NULL; img = img->next) { + if (img->unloaded == true) { + continue; + } + // Look for a segment command with this address within its range. + uintptr_t cmdPtr = bsg_mach_headers_first_cmd_after_header(img->header); + if (cmdPtr == 0) { + continue; + } + uintptr_t addressWSlide = address - img->slide; + for (uint32_t iCmd = 0; iCmd < img->header->ncmds; iCmd++) { + const struct load_command *loadCmd = + (struct load_command *)cmdPtr; + if (loadCmd->cmd == LC_SEGMENT) { + const struct segment_command *segCmd = + (struct segment_command *)cmdPtr; + if (addressWSlide >= segCmd->vmaddr && + addressWSlide < segCmd->vmaddr + segCmd->vmsize) { + return img; + } + } else if (loadCmd->cmd == LC_SEGMENT_64) { + const struct segment_command_64 *segCmd = + (struct segment_command_64 *)cmdPtr; + if (addressWSlide >= segCmd->vmaddr && + addressWSlide < segCmd->vmaddr + segCmd->vmsize) { + return img; + } + } + cmdPtr += loadCmd->cmdsize; + } + } + + return NULL; +} + +uintptr_t bsg_mach_headers_first_cmd_after_header(const struct mach_header *const header) { + if (header == NULL) { + return 0; + } + switch (header->magic) { + case MH_MAGIC: + case MH_CIGAM: + return (uintptr_t)(header + 1); + case MH_MAGIC_64: + case MH_CIGAM_64: + return (uintptr_t)(((struct mach_header_64 *)header) + 1); + default: + // Header is corrupt + return 0; + } +} + +uintptr_t bsg_mach_headers_image_at_base_of_image_index(const struct mach_header *const header) { + // Look for a segment command and return the file image address. + uintptr_t cmdPtr = bsg_mach_headers_first_cmd_after_header(header); + if (cmdPtr == 0) { + return 0; + } + for (uint32_t i = 0; i < header->ncmds; i++) { + const struct load_command *loadCmd = (struct load_command *)cmdPtr; + if (loadCmd->cmd == LC_SEGMENT) { + const struct segment_command *segmentCmd = + (struct segment_command *)cmdPtr; + if (strcmp(segmentCmd->segname, SEG_LINKEDIT) == 0) { + return segmentCmd->vmaddr - segmentCmd->fileoff; + } + } else if (loadCmd->cmd == LC_SEGMENT_64) { + const struct segment_command_64 *segmentCmd = + (struct segment_command_64 *)cmdPtr; + if (strcmp(segmentCmd->segname, SEG_LINKEDIT) == 0) { + return (uintptr_t)(segmentCmd->vmaddr - segmentCmd->fileoff); + } + } + cmdPtr += loadCmd->cmdsize; + } + + return 0; +} +static uintptr_t bsg_mach_header_info_get_section_addr_named(const BSG_Mach_Header_Info *header, const char *name) { + uintptr_t cmdPtr = bsg_mach_headers_first_cmd_after_header(header->header); + if (!cmdPtr) { + return 0; + } + for (uint32_t i = 0; i < header->header->ncmds; i++) { + const struct load_command *loadCmd = (struct load_command *)cmdPtr; + if (loadCmd->cmd == LC_SEGMENT) { + const struct segment_command *segment = (void *)cmdPtr; + char *sectionPtr = (void *)(cmdPtr + sizeof(*segment)); + for (uint32_t i = 0; i < segment->nsects; i++) { + struct section *section = (void *)sectionPtr; + if (strcmp(name, section->sectname) == 0) { + return section->addr + header->slide; + } + sectionPtr += sizeof(*section); + } + } else if (loadCmd->cmd == LC_SEGMENT_64) { + const struct segment_command_64 *segment = (void *)cmdPtr; + char *sectionPtr = (void *)(cmdPtr + sizeof(*segment)); + for (uint32_t i = 0; i < segment->nsects; i++) { + struct section_64 *section = (void *)sectionPtr; + if (strcmp(name, section->sectname) == 0) { + return (uintptr_t)section->addr + header->slide; + } + sectionPtr += sizeof(*section); + } + } + cmdPtr += loadCmd->cmdsize; + } + return 0; +} + +const char *bsg_mach_headers_get_crash_info_message(const BSG_Mach_Header_Info *header) { + struct crashreporter_annotations_t info; + uintptr_t sectionAddress = bsg_mach_header_info_get_section_addr_named(header, CRASHREPORTER_ANNOTATIONS_SECTION); + if (!sectionAddress) { + return NULL; + } + if (bsg_ksmachcopyMem((void *)sectionAddress, &info, sizeof(info)) != KERN_SUCCESS) { + return NULL; + } + // Version 4 was in use until iOS 9 / Swift 2.0 when the version was bumped to 5. + if (info.version > CRASHREPORTER_ANNOTATIONS_VERSION) { + return NULL; + } + if (!info.message) { + return NULL; + } + // Probe the string to ensure it's safe to read. + for (uintptr_t i = 0; i < 500; i++) { + char c; + if (bsg_ksmachcopyMem((void *)(info.message + i), &c, sizeof(c)) != KERN_SUCCESS) { + // String is not readable. + return NULL; + } + if (c == '\0') { + // Found end of string. + return (const char *)info.message; + } + } + return NULL; +} diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.h index 38f22f9853..376aad0e0f 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/KSCrash/Source/KSCrash/Recording/Tools/BSG_KSMachHeaders.h @@ -99,4 +99,11 @@ uintptr_t bsg_mach_headers_first_cmd_after_header(const struct mach_header *head */ uintptr_t bsg_mach_headers_image_at_base_of_image_index(const struct mach_header *header); +/** Get the __crash_info message of the specified image. + * + * @param header The header to get commands for. + * @return The __crash_info message, or NULL if no readable message could be found. + */ +const char *bsg_mach_headers_get_crash_info_message(const BSG_Mach_Header_Info *header); + #endif /* BSG_KSMachHeaders_h */ diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError+Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError+Private.h index 395fc45e75..99308add94 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError+Private.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError+Private.h @@ -23,6 +23,9 @@ NS_ASSUME_NONNULL_BEGIN + (BugsnagError *)errorFromJson:(NSDictionary *)json; +/// Parses the `__crash_info` message and updates the `errorClass` and `errorMessage` as appropriate. +- (void)updateWithCrashInfoMessage:(NSString *)crashInfoMessage; + - (NSDictionary *)toDictionary; @end diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError.m index 960113a279..5771a3c1ce 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagError.m @@ -6,14 +6,16 @@ // Copyright © 2020 Bugsnag. All rights reserved. // -#import "BugsnagError.h" +#import "BugsnagError+Private.h" +#import "BSG_KSCrashReportFields.h" +#import "BugsnagCollections.h" #import "BugsnagKeys.h" +#import "BugsnagLogger.h" #import "BugsnagStackframe+Private.h" #import "BugsnagStacktrace.h" -#import "BugsnagCollections.h" -#import "RegisterErrorData.h" -#import "BugsnagThread.h" +#import "BugsnagThread+Private.h" + NSString *_Nonnull BSGSerializeErrorType(BSGErrorType errorType) { switch (errorType) { @@ -87,12 +89,6 @@ - (instancetype)initWithEvent:(NSDictionary *)event errorReportingThread:(Bugsna _type = BSGErrorTypeCocoa; if (![[event valueForKeyPath:@"user.state.didOOM"] boolValue]) { - NSArray *threadDict = [event valueForKeyPath:@"crash.threads"]; - RegisterErrorData *data = [RegisterErrorData errorDataFromThreads:threadDict]; - if (data) { - _errorClass = data.errorClass; - _errorMessage = data.errorMessage; - } _stacktrace = thread.stacktrace; } } @@ -132,6 +128,36 @@ + (BugsnagError *)errorFromJson:(NSDictionary *)json { return error; } +- (void)updateWithCrashInfoMessage:(NSString *)crashInfoMessage { + @try { + // Messages that match this pattern should override the errorClass (and errorMessage if there is enough information.) + NSString *pattern = @"^(Assertion failed|Fatal error|Precondition failed): ((.+): )?file .+, line \\d+\n$"; + NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil]; + NSArray *matches = [regex matchesInString:crashInfoMessage options:0 range:NSMakeRange(0, crashInfoMessage.length)]; + if (matches.count != 1 || matches[0].numberOfRanges != 4) { + if (!self.errorMessage.length) { + // It's better to fall back to the raw string than have an empty errorMessage. + self.errorMessage = crashInfoMessage; + } + return; + } + NSRange errorClassRange = [matches[0] rangeAtIndex:1]; + if (errorClassRange.location != NSNotFound) { + self.errorClass = [crashInfoMessage substringWithRange:errorClassRange]; + } + NSRange errorMessageRange = [matches[0] rangeAtIndex:3]; + if (errorMessageRange.location != NSNotFound) { + self.errorMessage = [crashInfoMessage substringWithRange:errorMessageRange]; + } + } @catch (NSException *exception) { + bsg_log_err(@"Exception thrown while parsing crash info message: %@", exception); + if (!self.errorMessage.length) { + // It's better to fall back to the raw string than have an empty errorMessage. + self.errorMessage = crashInfoMessage; + } + } +} + - (NSDictionary *)findErrorReportingThread:(NSDictionary *)event { NSArray *threads = [event valueForKeyPath:@"crash.threads"]; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent+Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent+Private.h index 745d6b1e1d..4104d4814f 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent+Private.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagEvent+Private.h @@ -37,7 +37,7 @@ NS_ASSUME_NONNULL_BEGIN /// Property overrides. @property (readonly, copy) NSDictionary *overrides; -@property NSSet *redactedKeys; +@property NSSet *redactedKeys; /// The release stage of the application @property (readwrite, copy, nullable) NSString *releaseStage; 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 7c5d5984ed..8787468cdc 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 @@ -8,6 +8,8 @@ #import "BugsnagPlatformConditional.h" +#import "BugsnagEvent+Private.h" + #if BSG_PLATFORM_IOS #import "BSGUIKit.h" #include @@ -27,7 +29,6 @@ #import "BugsnagConfiguration+Private.h" #import "BugsnagDeviceWithState+Private.h" #import "BugsnagError+Private.h" -#import "BugsnagEvent+Private.h" #import "BugsnagHandledState.h" #import "BugsnagKeys.h" #import "BugsnagMetadata+Private.h" @@ -36,7 +37,7 @@ #import "BugsnagStacktrace+Private.h" #import "BugsnagThread+Private.h" #import "BugsnagUser+Private.h" -#import "RegisterErrorData.h" + static NSString *const DEFAULT_EXCEPTION_TYPE = @"cocoa"; @@ -267,7 +268,7 @@ - (instancetype)initWithOOMData:(NSDictionary *)event { * @return a BugsnagEvent containing the parsed information */ - (instancetype)initWithKSCrashData:(NSDictionary *)event { - NSDictionary *error = [event valueForKeyPath:@"crash.error"]; + NSMutableDictionary *error = [[event valueForKeyPath:@"crash.error"] mutableCopy]; NSString *errorType = error[BSGKeyType]; // Always assume that a report coming from KSCrash is by default an unhandled error. @@ -333,6 +334,11 @@ - (instancetype)initWithKSCrashData:(NSDictionary *)event { NSArray *errors = @[[[BugsnagError alloc] initWithEvent:event errorReportingThread:errorReportingThread]]; + if (errorReportingThread.crashInfoMessage) { + [errors[0] updateWithCrashInfoMessage:errorReportingThread.crashInfoMessage]; + error[@"crashInfo"] = errorReportingThread.crashInfoMessage; + } + BugsnagHandledState *handledState; if (recordedState) { handledState = [[BugsnagHandledState alloc] initWithDictionary:recordedState]; @@ -356,11 +362,8 @@ - (instancetype)initWithKSCrashData:(NSDictionary *)event { NSString *deviceAppHash = [event valueForKeyPath:@"system.device_app_hash"]; BugsnagDeviceWithState *device = [BugsnagDeviceWithState deviceWithDictionary:event]; BugsnagUser *user = [self parseUser:event deviceAppHash:deviceAppHash deviceId:device.id]; - BugsnagConfiguration *config = [[BugsnagConfiguration alloc] initWithMetadata:[event valueForKeyPath:@"user.config"]]; + BugsnagConfiguration *config = [[BugsnagConfiguration alloc] initWithDictionaryRepresentation:[event valueForKeyPath:@"user.config"]]; BugsnagAppWithState *app = [BugsnagAppWithState appWithDictionary:event config:config codeBundleId:self.codeBundleId]; - if (!app.type) { // Configuration.type does not get stored in the crash report at the time of writing. - app.type = [Bugsnag configuration].appType; - } BugsnagEvent *obj = [self initWithApp:app device:device handledState:handledState @@ -475,13 +478,9 @@ - (NSMutableDictionary *)parseOnCrashData:(NSDictionary *)report { @synthesize apiKey = _apiKey; - (NSString *)apiKey { - if (! _apiKey) { - _apiKey = Bugsnag.configuration.apiKey; - } return _apiKey; } - - (void)setApiKey:(NSString *)apiKey { if ([BugsnagConfiguration isValidApiKey:apiKey]) { _apiKey = apiKey; @@ -496,8 +495,7 @@ - (void)setApiKey:(NSString *)apiKey { - (BOOL)shouldBeSent { return [self.enabledReleaseStages containsObject:self.releaseStage] || - (self.enabledReleaseStages.count == 0 && - [[Bugsnag configuration] shouldSendReports]); + (self.enabledReleaseStages.count == 0); } - (NSArray *)serializeBreadcrumbs { 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 09e93fa75b..e59034259d 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.4.1"; + self.version = @"6.5.0"; self.url = @"https://github.com/bugsnag/bugsnag-cocoa"; self.dependencies = [NSMutableArray new]; } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.h index 21034135c4..17420d96ab 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.h @@ -10,6 +10,7 @@ #import "BugsnagSession.h" @class BugsnagConfiguration; +@class BugsnagNotifier; @interface BugsnagSessionTrackingPayload : NSObject @@ -17,7 +18,8 @@ - (instancetype)initWithSessions:(NSArray *)sessions config:(BugsnagConfiguration *)config - codeBundleId:(NSString *)codeBundleId; + codeBundleId:(NSString *)codeBundleId + notifier:(BugsnagNotifier *)notifier; - (NSMutableDictionary *)toJson; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.m index 28721909b7..5e6c430119 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagSessionTrackingPayload.m @@ -23,6 +23,7 @@ @interface BugsnagSessionTrackingPayload () @property (nonatomic) BugsnagConfiguration *config; @property(nonatomic, copy) NSString *codeBundleId; +@property (nonatomic) BugsnagNotifier *notifier; @end @implementation BugsnagSessionTrackingPayload @@ -30,11 +31,13 @@ @implementation BugsnagSessionTrackingPayload - (instancetype)initWithSessions:(NSArray *)sessions config:(BugsnagConfiguration *)config codeBundleId:(NSString *)codeBundleId + notifier:(BugsnagNotifier *)notifier { if (self = [super init]) { _sessions = sessions; _config = config; _codeBundleId = codeBundleId; + _notifier = notifier; } return self; } @@ -48,7 +51,7 @@ - (NSMutableDictionary *)toJson [sessionData addObject:[session toDictionary]]; } dict[@"sessions"] = sessionData; - dict[BSGKeyNotifier] = [[Bugsnag client].notifier toDict]; + dict[BSGKeyNotifier] = [self.notifier toDict]; // app/device data collection relies on KSCrash reports, // need to mimic the JSON structure here diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread+Private.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread+Private.h index 1caf2459d2..3616e22c00 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread+Private.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread+Private.h @@ -18,6 +18,8 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)threadFromJson:(NSDictionary *)json; +@property (readonly) NSString *crashInfoMessage; + + (NSDictionary *)enhanceThreadInfo:(NSDictionary *)thread depth:(NSUInteger)depth errorType:(nullable NSString *)errorType; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread.m index cc2f73c081..fb68643999 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Payload/BugsnagThread.m @@ -6,8 +6,9 @@ // Copyright © 2020 Bugsnag. All rights reserved. // -#import "BugsnagThread.h" +#import "BugsnagThread+Private.h" +#import "BSG_KSCrashReportFields.h" #import "BugsnagCollections.h" #import "BugsnagStackframe+Private.h" #import "BugsnagStacktrace+Private.h" @@ -56,13 +57,13 @@ - (instancetype)initWithId:(NSString *)id - (instancetype)initWithThread:(NSDictionary *)thread binaryImages:(NSArray *)binaryImages { if (self = [super init]) { - _errorReportingThread = [thread[@"crashed"] boolValue]; - self.id = [thread[@"index"] stringValue]; - self.type = BSGThreadTypeCocoa; - - NSArray *backtrace = thread[@"backtrace"][@"contents"]; + _errorReportingThread = [thread[@(BSG_KSCrashField_Crashed)] boolValue]; + _id = [thread[@(BSG_KSCrashField_Index)] stringValue]; + _type = BSGThreadTypeCocoa; + _crashInfoMessage = [thread[@(BSG_KSCrashField_CrashInfoMessage)] copy]; + NSArray *backtrace = thread[@(BSG_KSCrashField_Backtrace)][@(BSG_KSCrashField_Contents)]; BugsnagStacktrace *frames = [[BugsnagStacktrace alloc] initWithTrace:backtrace binaryImages:binaryImages]; - self.stacktrace = frames.trace; + _stacktrace = [frames.trace copy]; } return self; } diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagFileStore.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagFileStore.m index 66fe065a13..b938747f8e 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagFileStore.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagFileStore.m @@ -4,11 +4,12 @@ // #import "BugsnagFileStore.h" + +#import "BSGCachesDirectory.h" #import "BSG_KSCrashReportFields.h" #import "BSG_KSJSONCodecObjC.h" +#import "BugsnagLogger.h" #import "NSError+BSG_SimpleConstructor.h" -#import "BSG_KSLogger.h" -#import "BSGCachesDirectory.h" #pragma mark - Meta Data @@ -90,7 +91,7 @@ - (NSArray *)fileIds { NSFileManager *fm = [NSFileManager defaultManager]; NSArray *filenames = [fm contentsOfDirectoryAtPath:self.path error:&error]; if (filenames == nil) { - BSG_KSLOG_ERROR(@"Could not get contents of directory %@: %@", + bsg_log_err(@"Could not get contents of directory %@: %@", self.path, error); return nil; } @@ -105,7 +106,7 @@ - (NSArray *)fileIds { NSDictionary *fileAttribs = [fm attributesOfItemAtPath:fullPath error:&error]; if (fileAttribs == nil) { - BSG_KSLOG_ERROR(@"Could not read file attributes for %@: %@", + bsg_log_err(@"Could not read file attributes for %@: %@", fullPath, error); } else { FileStoreInfo *info = [FileStoreInfo fileStoreInfoWithId:fileId @@ -165,11 +166,11 @@ - (NSDictionary *)fileWithId:(NSString *)fileId { NSMutableDictionary *fileContents = [self readFile:[self pathToFileWithId:fileId] error:&error]; if (error != nil) { - BSG_KSLOG_ERROR(@"Encountered error loading file %@: %@", + bsg_log_err(@"Encountered error loading file %@: %@", fileId, error); } if (fileContents == nil) { - BSG_KSLOG_ERROR(@"Could not load file"); + bsg_log_err(@"Could not load file"); return nil; } return fileContents; @@ -181,7 +182,7 @@ - (void)deleteFileWithId:(NSString *)fileId { [[NSFileManager defaultManager] removeItemAtPath:filename error:&error]; if (error != nil) { - BSG_KSLOG_ERROR(@"Could not delete file %@: %@", filename, error); + bsg_log_err(@"Could not delete file %@: %@", filename, error); } } @@ -195,11 +196,11 @@ + (NSString *)findReportStorePath:(NSString *)customDirectory { [[BSGCachesDirectory cachesDirectory] stringByAppendingPathComponent:storePathEnd]; if ([storePath length] == 0) { - BSG_KSLOG_ERROR(@"Could not determine report files path."); + bsg_log_err(@"Could not determine report files path."); return nil; } if (![self ensureDirectoryExists:storePath]) { - BSG_KSLOG_ERROR(@"Store Directory does not exist."); + bsg_log_err(@"Store Directory does not exist."); return nil; } return storePath; @@ -214,7 +215,7 @@ + (BOOL)ensureDirectoryExists:(NSString *)path { withIntermediateDirectories:YES attributes:nil error:&error]) { - BSG_KSLOG_ERROR(@"Could not create directory %@: %@.", path, error); + bsg_log_err(@"Could not create directory %@: %@.", path, error); return NO; } } @@ -229,7 +230,7 @@ - (void)performOnFields:(NSArray *)fieldPath operation:(void (^)(id parent, id field))operation okIfNotFound:(BOOL)isOkIfNotFound { if (fieldPath.count == 0) { - BSG_KSLOG_ERROR(@"Unexpected end of field path"); + bsg_log_err(@"Unexpected end of field path"); return; } @@ -244,7 +245,7 @@ - (void)performOnFields:(NSArray *)fieldPath id field = file[currentField]; if (field == nil) { if (!isOkIfNotFound) { - BSG_KSLOG_ERROR(@"%@: No such field in file. Candidates are: %@", + bsg_log_err(@"%@: No such field in file. Candidates are: %@", currentField, file.allKeys); } return; @@ -300,7 +301,7 @@ - (NSMutableDictionary *)readFile:(NSString *)path error:error]; if (error != nil && *error != nil) { - BSG_KSLOG_ERROR(@"Error decoding JSON data from %@: %@", path, *error); + bsg_log_err(@"Error decoding JSON data from %@: %@", path, *error); fileContents[@BSG_KSCrashField_Incomplete] = @YES; } return fileContents; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.h b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.h index 6a5616c04b..3e9b3bcf1d 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.h +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.h @@ -9,7 +9,8 @@ #import "BugsnagSession.h" @interface BugsnagSessionFileStore : BugsnagFileStore -+ (BugsnagSessionFileStore *)storeWithPath:(NSString *)path; ++ (BugsnagSessionFileStore *)storeWithPath:(NSString *)path + maxPersistedSessions:(NSUInteger)maxPersistedSessions; - (void)write:(BugsnagSession *)session; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.m b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.m index 95951b56f7..3ab62d019e 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.m +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/Bugsnag/Storage/BugsnagSessionFileStore.m @@ -5,17 +5,33 @@ #import "BugsnagSessionFileStore.h" -#import "BSG_KSLogger.h" #import "BSGJSONSerialization.h" +#import "BugsnagLogger.h" #import "BugsnagSession+Private.h" static NSString *const kSessionStoreSuffix = @"-Session-"; +@interface BugsnagSessionFileStore () + +@property NSUInteger maxPersistedSessions; + +@end + @implementation BugsnagSessionFileStore -+ (BugsnagSessionFileStore *)storeWithPath:(NSString *)path { ++ (BugsnagSessionFileStore *)storeWithPath:(NSString *)path + maxPersistedSessions:(NSUInteger)maxPersistedSessions { return [[self alloc] initWithPath:path - filenameSuffix:kSessionStoreSuffix]; + maxPersistedSessions:maxPersistedSessions]; +} + +- (instancetype) initWithPath:(NSString *)path + maxPersistedSessions:(NSUInteger)maxPersistedSessions { + if ((self = [super initWithPath:path + filenameSuffix:kSessionStoreSuffix])) { + _maxPersistedSessions = maxPersistedSessions; + } + return self; } - (void)write:(BugsnagSession *)session { @@ -27,9 +43,11 @@ - (void)write:(BugsnagSession *)session { NSData *json = [BSGJSONSerialization dataWithJSONObject:dict options:0 error:&error]; if (error != nil || ![json writeToFile:filepath atomically:YES]) { - BSG_KSLOG_ERROR(@"Failed to write session %@", error); + bsg_log_err(@"Failed to write session %@", error); return; } + + [self pruneFilesLeaving:(int)self.maxPersistedSessions]; } 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 844f4406e4..b6fa258e3d 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 @@ -149,6 +149,20 @@ typedef BOOL (^BugsnagOnSessionBlock)(BugsnagSession *_Nonnull session); */ @property(readwrite, retain, nullable) NSSet *redactedKeys; +/** + * A set of strings and / or NSRegularExpression objects that determine which errors should + * be discarded based on their `errorClass`. + * + * Comparisons are case sensitive. + * + * OnError / OnSendError blocks will not be called for discarded errors. + * + * Some examples of errorClass are: Objective-C exception names like "NSRangeException", + * signal names like "SIGABRT", mach exception names like "EXC_BREAKPOINT", and Swift + * error names like "Fatal error". + */ +@property(readwrite, copy, nullable) NSSet *discardClasses; + /** * A general summary of what was occuring in the application */ @@ -204,6 +218,22 @@ typedef BOOL (^BugsnagOnSessionBlock)(BugsnagSession *_Nonnull session); @property(retain, nullable) NSString *appType; +/** + * Sets the maximum number of events which will be stored. Once the threshold is reached, + * the oldest events will be deleted. + * + * By default, 12 events are stored: this can be amended up to a maximum of 100. + */ +@property (nonatomic) NSUInteger maxPersistedEvents; + +/** + * Sets the maximum number of sessions which will be stored. Once the threshold is reached, + * the oldest sessions will be deleted. + * + * By default, 32 sessions are stored: this can be amended up to a maximum of 100. + */ +@property (nonatomic) NSUInteger maxPersistedSessions; + /** * Sets the maximum number of breadcrumbs which will be stored. Once the threshold is reached, * the oldest breadcrumbs will be deleted. 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 a3c85a307d..9c07c3c64c 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 @@ -62,7 +62,7 @@ typedef NS_ENUM(NSUInteger, BSGSeverity) { /** * A per-event override for the apiKey. - * - Reads default to the BugsnagConfiguration apiKey value unless explicitly set. + * - The default value of nil results in the BugsnagConfiguration apiKey being used. * - Writes are not persisted to BugsnagConfiguration. */ @property(readwrite, copy, nullable) NSString *apiKey; diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md b/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md index b525a2f6d6..0a85d4a026 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/CHANGELOG.md @@ -1,6 +1,27 @@ Changelog ========= +## 6.5.0 (2021-01-06) + +### Enhancements + +* Errors may now be discarded based on their `errorClass` using the new `discardClasses` configuration option. + [#938](https://github.com/bugsnag/bugsnag-cocoa/pull/938) + +* The maxiumum number of persisted errors / events may now be configured using the new `maxPersistedEvents` configuration option. + [#936](https://github.com/bugsnag/bugsnag-cocoa/pull/936) + +* The maxiumum number of persisted sessions may now be configured using the new `maxPersistedSessions` configuration option. + [#943](https://github.com/bugsnag/bugsnag-cocoa/pull/943) + +* Bugsnag log messages are now prefixed with `[Bugsnag]` for easier searching & filtering. + [#955](https://github.com/bugsnag/bugsnag-cocoa/pull/955) + +## Bug fixes + +* Fix reliability of Swift fatal error message reporting. + [#948](https://github.com/bugsnag/bugsnag-cocoa/pull/948) + ## 6.4.1 (2020-12-14) ### Bug fixes 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 a75e8d8718..6662460650 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.4.1 + 6.5.0 CFBundleVersion 1 diff --git a/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION b/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION index 4c77920fd2..f22d756da3 100644 --- a/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION +++ b/packages/react-native/ios/vendor/bugsnag-cocoa/VERSION @@ -1 +1 @@ -6.4.1 +6.5.0 diff --git a/packages/react-native/src/test/integration/handled-unhandled.test.ts b/packages/react-native/src/test/integration/handled-unhandled.test.ts index a3f7b2b746..e4977c774b 100644 --- a/packages/react-native/src/test/integration/handled-unhandled.test.ts +++ b/packages/react-native/src/test/integration/handled-unhandled.test.ts @@ -54,6 +54,8 @@ declare global { // we can only start bugsnag once per file, because it installs global handlers // and doesn't have a way to uninstall itself beforeAll(() => { + jest.spyOn(console, 'debug').mockImplementation(() => {}) + // leaving the default handler intact causes simulated unhandled errors to fail tests global.ErrorUtils.setGlobalHandler(() => {}) Bugsnag.start() @@ -94,7 +96,6 @@ describe('@bugsnag/react-native: handled and unhandled errors', () => { // @ts-ignore 'sdf'.sdflkj() } catch (e) { - console.log(e) rnPromise.reject(e) } setTimeout(() => { diff --git a/packages/react-native/test/index.test.ts b/packages/react-native/test/index.test.ts index 815589d9c8..d79a0c84c8 100644 --- a/packages/react-native/test/index.test.ts +++ b/packages/react-native/test/index.test.ts @@ -32,6 +32,10 @@ jest.mock('react-native', () => ({ describe('react native notifier', () => { let Bugsnag: typeof BugsnagReactNativeStatic + beforeAll(() => { + jest.spyOn(console, 'debug').mockImplementation(() => {}) + }) + beforeEach(() => { jest.isolateModules(() => { Bugsnag = require('..') diff --git a/test/browser/features/browsers.yml b/test/browser/features/browsers.yml index da2a22aa4f..6ed356b129 100644 --- a/test/browser/features/browsers.yml +++ b/test/browser/features/browsers.yml @@ -54,12 +54,6 @@ safari_13: os: "OS X" os_version: "Catalina" -opera_12: - browser: "opera" - browser_version: "12.16" - os: "windows" - os_version: "8" - iphone_7: browser: "iphone" device: "iPhone 7" diff --git a/test/browser/features/fixtures/browser_errors.yml b/test/browser/features/fixtures/browser_errors.yml index 9bcdf1e328..ffc876fd79 100644 --- a/test/browser/features/fixtures/browser_errors.yml +++ b/test/browser/features/fixtures/browser_errors.yml @@ -229,28 +229,6 @@ safari_13: lineNumber: 17 columnNumber: 25 -opera_12: - handled: - errorClass: 'ReferenceError' - errorMessage: 'Undefined variable: foo' - unhandled_syntax: - errorClass: 'Error' - errorMessage: "Syntax error at line 17 while loading: expected ';', got '!'" - lineNumber: 17 - file: '/unhandled/script/a.html' - unhandled_thrown: - errorClass: 'Error' - errorMessage: "Uncaught exception: Error: bad things" - lineNumber: 17 - unhandled_undefined_function: - errorClass: 'Error' - errorMessage: "Uncaught exception: ReferenceError: Undefined variable: nevergoingtoexist_notinamillionyears" - lineNumber: 17 - unhandled_malformed_uri: - errorClass: 'Error' - errorMessage: "Uncaught exception: URIError: Malformed URI" - lineNumber: 17 - iphone_7: handled: errorClass: 'ReferenceError' diff --git a/test/browser/features/support/env.rb b/test/browser/features/support/env.rb index 95fd4837ef..0e72a3e84d 100644 --- a/test/browser/features/support/env.rb +++ b/test/browser/features/support/env.rb @@ -63,8 +63,8 @@ def has_local_storage end AfterConfiguration do - MazeRunner.config.receive_no_requests_wait = 15 if MazeRunner.config.respond_to? :receive_no_requests_wait= - MazeRunner.config.enforce_bugsnag_integrity = false if MazeRunner.config.respond_to? :enforce_bugsnag_integrity= + MazeRunner.config.receive_no_requests_wait = 15 + MazeRunner.config.enforce_bugsnag_integrity = false # Necessary as Appium removes any existing $driver instance on load bs_local_start diff --git a/test/expo/features/fixtures/test-app/App.js b/test/expo/features/fixtures/test-app/App.js index aee7ddabb8..f682beb0e4 100644 --- a/test/expo/features/fixtures/test-app/App.js +++ b/test/expo/features/fixtures/test-app/App.js @@ -13,6 +13,7 @@ import ManualBreadcrumbs from './app/manual_breadcrumbs' import DeviceFeature from './app/device' import Sessions from './app/sessions' import NetworkBreadcrumbs from './app/network_breadcrumbs' +import * as ScreenOrientation from 'expo-screen-orientation'; const SCENARIOS = [ 'handled', @@ -36,6 +37,7 @@ export default class App extends React.Component { this.state = { scenario: null } + ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP); } renderScenario() { diff --git a/test/expo/features/fixtures/test-app/package.json b/test/expo/features/fixtures/test-app/package.json index d60124719c..490e388287 100644 --- a/test/expo/features/fixtures/test-app/package.json +++ b/test/expo/features/fixtures/test-app/package.json @@ -10,6 +10,7 @@ "@babel/runtime": "7.4.2", "expo": "^37.0.0", "expo-cli": "^3.17.5", + "expo-screen-orientation": "2.1.0", "react": "16.9.0", "react-dom": "16.9.0", "react-native": "https://github.com/expo/react-native/archive/sdk-37.0.0.tar.gz", diff --git a/test/expo/features/support/env.rb b/test/expo/features/support/env.rb index 4fd0efbd2b..24ee4cf564 100644 --- a/test/expo/features/support/env.rb +++ b/test/expo/features/support/env.rb @@ -1,7 +1,5 @@ AfterConfiguration do |_config| - MazeRunner.config.receive_no_requests_wait = 15 if MazeRunner.config.respond_to? :receive_no_requests_wait= - # TODO: Remove once the Bugsnag-Integrity header has been implemented - MazeRunner.config.enforce_bugsnag_integrity = false if MazeRunner.config.respond_to? :enforce_bugsnag_integrity= + MazeRunner.config.receive_no_requests_wait = 15 end Before('@skip_android_5') do |scenario| diff --git a/test/node/features/koa-1x.feature b/test/node/features/koa-1x.feature index e3aec6aa7b..8162208d82 100644 --- a/test/node/features/koa-1x.feature +++ b/test/node/features/koa-1x.feature @@ -58,9 +58,11 @@ Scenario: throwing non-Error error And the exception "type" equals "nodejs" Scenario: A non-5XX error created with ctx.throw() - Then I open the URL "http://koa-1x/ctx-throw-400" - And I wait for 1 second - Then I should receive no requests + When I open the URL "http://koa-1x/ctx-throw-400" + And I wait to receive a request + Then the request is valid for the session reporting API version "1" for the "Bugsnag Node" notifier + And the payload has a valid sessions array + And the sessionCount "sessionsStarted" equals 1 Scenario: A handled error with ctx.bugsnag.notify() Then I open the URL "http://koa-1x/handled" diff --git a/test/node/features/koa.feature b/test/node/features/koa.feature index db876ea57f..3c6edd9ade 100644 --- a/test/node/features/koa.feature +++ b/test/node/features/koa.feature @@ -71,9 +71,11 @@ Scenario: throwing non-Error error And the exception "type" equals "nodejs" Scenario: A non-5XX error created with ctx.throw() - Then I open the URL "http://koa/ctx-throw-400" - And I wait for 1 second - Then I should receive no requests + When I open the URL "http://koa/ctx-throw-400" + And I wait to receive a request + Then the request is valid for the session reporting API version "1" for the "Bugsnag Node" notifier + And the payload has a valid sessions array + And the sessionCount "sessionsStarted" equals 1 Scenario: A handled error with ctx.bugsnag.notify() Then I open the URL "http://koa/handled" diff --git a/test/node/features/restify.feature b/test/node/features/restify.feature index c022821f54..065708e6c4 100644 --- a/test/node/features/restify.feature +++ b/test/node/features/restify.feature @@ -58,9 +58,11 @@ Scenario: throwing non-Error error And the exception "type" equals "nodejs" Scenario: an explicit 404 - Then I open the URL "http://restify/not-found" - And I wait for 1 second - Then I should receive no requests + When I open the URL "http://restify/not-found" + And I wait to receive a request + Then the request is valid for the session reporting API version "1" for the "Bugsnag Node" notifier + And the payload has a valid sessions array + And the sessionCount "sessionsStarted" equals 1 Scenario: an explicit internal server error Then I open the URL "http://restify/internal" diff --git a/test/node/features/support/env.rb b/test/node/features/support/env.rb index 7b7afd11b5..690d00dcda 100644 --- a/test/node/features/support/env.rb +++ b/test/node/features/support/env.rb @@ -1,4 +1,4 @@ AfterConfiguration do |_config| - MazeRunner.config.receive_no_requests_wait = 15 if MazeRunner.config.respond_to? :receive_no_requests_wait= - MazeRunner.config.enforce_bugsnag_integrity = false if MazeRunner.config.respond_to? :enforce_bugsnag_integrity= + MazeRunner.config.receive_no_requests_wait = 15 + MazeRunner.config.enforce_bugsnag_integrity = false end diff --git a/test/react-native/features/fixtures/rn0.60/android/app/build.gradle b/test/react-native/features/fixtures/rn0.60/android/app/build.gradle index 85dd1ec707..4f55f07683 100644 --- a/test/react-native/features/fixtures/rn0.60/android/app/build.gradle +++ b/test/react-native/features/fixtures/rn0.60/android/app/build.gradle @@ -135,6 +135,9 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" + ndk { + abiFilters "arm64-v8a", "x86" + } } splits { abi { diff --git a/test/react-native/features/fixtures/rn0.63/android/app/build.gradle b/test/react-native/features/fixtures/rn0.63/android/app/build.gradle index d2424810cc..7a3b2615eb 100644 --- a/test/react-native/features/fixtures/rn0.63/android/app/build.gradle +++ b/test/react-native/features/fixtures/rn0.63/android/app/build.gradle @@ -137,6 +137,9 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" + ndk { + abiFilters "arm64-v8a", "x86" + } } splits { abi {