From ecf8098ec36d53663a54f9a53503b664c959d552 Mon Sep 17 00:00:00 2001 From: k-fish Date: Mon, 23 Aug 2021 11:19:16 -0700 Subject: [PATCH] ref(ember): Update addon to support Ember 4.0.0 (beta) (#3915) ### Summary This should make the addon compatible with the upcoming 4.0 versions of Ember. Primarily a couple packages needed to be updated, but also in functionality the private '_backburner' moved (looking briefly I think it was this commit https://github.com/emberjs/ember.js/commit/aece1dc771b8d85ec7ae45fc9353ce98d4f4918e). There are likely other improvements that can be made once 4.0 is release, and other deprecations, such as the Ember global usage that we should remove, but this should unblock the version functionally for now and hopefully get our beta channel tests to pass. #### Other - Tested that this works with the beta channel locally and it passed, going to push to see if any other channels break. --- .../sentry-performance.ts | 21 ++-- packages/ember/addon/runloop.d.ts | 3 +- packages/ember/package.json | 9 +- yarn.lock | 103 +++++++++++++++--- 4 files changed, 107 insertions(+), 29 deletions(-) diff --git a/packages/ember/addon/instance-initializers/sentry-performance.ts b/packages/ember/addon/instance-initializers/sentry-performance.ts index 9c36b158c886..81437b698419 100644 --- a/packages/ember/addon/instance-initializers/sentry-performance.ts +++ b/packages/ember/addon/instance-initializers/sentry-performance.ts @@ -1,6 +1,6 @@ import ApplicationInstance from '@ember/application/instance'; import Ember from 'ember'; -import { run } from '@ember/runloop'; +import { run, _backburner, scheduleOnce } from '@ember/runloop'; import * as Sentry from '@sentry/browser'; import { Span, Transaction, Integration } from '@sentry/types'; import { EmberRunQueues } from '@ember/runloop/-private/types'; @@ -28,6 +28,13 @@ export function initialize(appInstance: ApplicationInstance): void { } } +function getBackburner() { + if (run.backburner) { + return run.backburner; + } + return _backburner; +} + function getTransitionInformation(transition: any, router: any) { const fromRoute = transition?.from?.name; const toRoute = transition && transition.to ? transition.to.name : router.currentRouteName; @@ -86,7 +93,7 @@ export function _instrumentEmberRouter( return; } activeTransaction.finish(); - run.backburner.off('end', finishActiveTransaction); + getBackburner().off('end', finishActiveTransaction); }; routerService.on('routeWillChange', (transition: any) => { @@ -118,7 +125,7 @@ export function _instrumentEmberRouter( return; } - run.backburner.on('end', finishActiveTransaction); + getBackburner().on('end', finishActiveTransaction); }); return { @@ -142,7 +149,7 @@ function _instrumentEmberRunloop(config: EmberSentryConfig) { 'destroy', ] as EmberRunQueues[]; - run.backburner.on('begin', (_: any, previousInstance: any) => { + getBackburner().on('begin', (_: any, previousInstance: any) => { if (previousInstance) { return; } @@ -156,8 +163,8 @@ function _instrumentEmberRunloop(config: EmberSentryConfig) { currentQueueStart = timestampWithMs(); instrumentedEmberQueues.forEach(queue => { - run.scheduleOnce(queue, null, () => { - run.scheduleOnce(queue, null, () => { + scheduleOnce(queue, null, () => { + scheduleOnce(queue, null, () => { // Process this queue using the end of the previous queue. if (currentQueueStart) { const now = timestampWithMs(); @@ -186,7 +193,7 @@ function _instrumentEmberRunloop(config: EmberSentryConfig) { }); }); }); - run.backburner.on('end', (_: any, nextInstance: any) => { + getBackburner().on('end', (_: any, nextInstance: any) => { if (nextInstance) { return; } diff --git a/packages/ember/addon/runloop.d.ts b/packages/ember/addon/runloop.d.ts index f6dbc7e82d7f..7d1fbcf5949d 100644 --- a/packages/ember/addon/runloop.d.ts +++ b/packages/ember/addon/runloop.d.ts @@ -13,6 +13,7 @@ interface ExtendedBackburner extends Backburner { */ declare module '@ember/runloop' { interface RunNamespace { - backburner: ExtendedBackburner; + backburner?: ExtendedBackburner; } + export const _backburner: ExtendedBackburner; // Ember 4.0 } diff --git a/packages/ember/package.json b/packages/ember/package.json index e1e2b59aef00..9aaf72be1b15 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -37,9 +37,10 @@ "@sentry/types": "6.11.0", "@sentry/utils": "6.11.0", "ember-auto-import": "^1.6.0", - "ember-cli-babel": "^7.20.5", + "ember-cli-babel": "^7.26.6", "ember-cli-htmlbars": "^5.1.2", - "ember-cli-typescript": "^3.1.4" + "ember-cli-typescript": "^3.1.4", + "ember-source": "3.24.3" }, "devDependencies": { "@ember/optional-features": "^1.3.0", @@ -47,7 +48,7 @@ "@glimmer/component": "^1.0.0", "@glimmer/tracking": "^1.0.0", "@sentry-internal/eslint-config-sdk": "6.11.0", - "@types/ember": "^3.16.3", + "@types/ember": "^3.16.5", "@types/ember-qunit": "^3.4.9", "@types/ember__test-helpers": "^1.7.0", "@types/qunit": "^2.9.1", @@ -70,7 +71,7 @@ "ember-source": "~3.24.0", "ember-source-channel-url": "^2.0.1", "ember-template-lint": "^2.9.1", - "ember-test-selectors": "^4.1.0", + "ember-test-selectors": "~5.5.0", "ember-try": "^1.4.0", "ember-window-mock": "^0.7.1", "eslint-plugin-ember": "^8.6.0", diff --git a/yarn.lock b/yarn.lock index fc81c267d9c3..db8e8254cd8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -201,6 +201,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== +"@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" @@ -671,11 +676,11 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-object-assign@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz#d9b9200a69e03403a813e44a933ad9f4bddfd050" - integrity sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz#62537d54b6d85de04f4df48bfdba2eebff17b760" + integrity sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-object-super@^7.12.13": version "7.12.13" @@ -2885,7 +2890,7 @@ "@types/jquery" "*" "@types/rsvp" "*" -"@types/ember@*", "@types/ember@^3.16.3": +"@types/ember@*": version "3.16.4" resolved "https://registry.yarnpkg.com/@types/ember/-/ember-3.16.4.tgz#bfccd8ed198ca7bee09878a3423ca6e1a9caac17" integrity sha512-kCZNxuCofZN2sYUltfUmPegqAr1wvZ4b6aH0i8AsG+AsUiaWCDzVfCayMfr4CRUOhUiQ2VA9AOgnZT+JgBvjXQ== @@ -2910,6 +2915,32 @@ "@types/jquery" "*" "@types/rsvp" "*" +"@types/ember@^3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@types/ember/-/ember-3.16.5.tgz#c2d6b0f178761c0c2fbc6fc39b4b6958c256d0ac" + integrity sha512-8BzT1g8r7xQsN2p7qIUZ0AXWEVpJ5LmaRWP3iT79PLyIQfTAYvHSueUl14lrB8renETjwr4+ZvVPKurn9TKxNA== + dependencies: + "@types/ember__application" "*" + "@types/ember__array" "*" + "@types/ember__component" "*" + "@types/ember__controller" "*" + "@types/ember__debug" "*" + "@types/ember__destroyable" "*" + "@types/ember__engine" "*" + "@types/ember__error" "*" + "@types/ember__object" "*" + "@types/ember__polyfills" "*" + "@types/ember__routing" "*" + "@types/ember__runloop" "*" + "@types/ember__service" "*" + "@types/ember__string" "*" + "@types/ember__template" "*" + "@types/ember__test" "*" + "@types/ember__utils" "*" + "@types/htmlbars-inline-precompile" "*" + "@types/jquery" "*" + "@types/rsvp" "*" + "@types/ember__application@*": version "3.16.2" resolved "https://registry.yarnpkg.com/@types/ember__application/-/ember__application-3.16.2.tgz#32bab774a3da681f454372224aaeeed84b747e1b" @@ -2953,6 +2984,11 @@ "@types/ember__engine" "*" "@types/ember__object" "*" +"@types/ember__destroyable@*": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@types/ember__destroyable/-/ember__destroyable-3.22.0.tgz#2af2c27f5d8996694c3f0fe906e2536b2e4c5aca" + integrity sha512-T5wZGK1MwEelNIv1bbAvRQZPo9zvfjpGyyFPwjz+sakjImKVcQzb/yq1SgGyT0QTAQAT7l0L+kFru9+fSVVo5A== + "@types/ember__engine@*": version "3.16.2" resolved "https://registry.yarnpkg.com/@types/ember__engine/-/ember__engine-3.16.2.tgz#886e916b0bb0d417bfeee1db3a3b3fc4591e24ad" @@ -8236,7 +8272,7 @@ ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.8.1: ember-cli-version-checker "^2.1.2" semver "^5.5.0" -ember-cli-babel@^7.0.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.26.2, ember-cli-babel@^7.7.3: +ember-cli-babel@^7.0.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.17.2, ember-cli-babel@^7.20.5, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.26.2, ember-cli-babel@^7.7.3: version "7.26.3" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.3.tgz#e93ce7ec458208894d10844cf76e41cc06fdbeb6" integrity sha512-ZCs0g99d3kYaHs1+HT33oMY7/K+nLCAAv7dCLxsMzg7cQf55O6Pq4ZKnWEr3IHVs33xbJFnEb9prt1up36QVnw== @@ -8269,6 +8305,39 @@ ember-cli-babel@^7.0.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.12.0, ember- rimraf "^3.0.1" semver "^5.5.0" +ember-cli-babel@^7.26.4, ember-cli-babel@^7.26.6: + version "7.26.6" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.6.tgz#322fbbd3baad9dd99e3276ff05bc6faef5e54b39" + integrity sha512-040svtfj2RC35j/WMwdWJFusZaXmNoytLAMyBDGLMSlRvznudTxZjGlPV6UupmtTBApy58cEF8Fq4a+COWoEmQ== + dependencies: + "@babel/core" "^7.12.0" + "@babel/helper-compilation-targets" "^7.12.0" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-decorators" "^7.13.5" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-runtime" "^7.13.9" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/polyfill" "^7.11.5" + "@babel/preset-env" "^7.12.0" + "@babel/runtime" "7.12.18" + amd-name-resolver "^1.3.1" + babel-plugin-debug-macros "^0.3.4" + babel-plugin-ember-data-packages-polyfill "^0.1.2" + babel-plugin-ember-modules-api-polyfill "^3.5.0" + babel-plugin-module-resolver "^3.2.0" + broccoli-babel-transpiler "^7.8.0" + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.2" + broccoli-source "^2.1.2" + clone "^2.1.2" + ember-cli-babel-plugin-helpers "^1.1.1" + ember-cli-version-checker "^4.1.0" + ensure-posix-path "^1.0.2" + fixturify-project "^1.10.0" + resolve-package-path "^3.1.0" + rimraf "^3.0.1" + semver "^5.5.0" + ember-cli-dependency-checker@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.2.0.tgz#9202ad9e14d6fda33cffc22a11c343c2a8885330" @@ -8500,7 +8569,7 @@ ember-cli-version-checker@^4.1.0: semver "^6.3.0" silent-error "^1.1.1" -ember-cli-version-checker@^5.0.2, ember-cli-version-checker@^5.1.1, ember-cli-version-checker@^5.1.2: +ember-cli-version-checker@^5.1.1, ember-cli-version-checker@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-5.1.2.tgz#649c7b6404902e3b3d69c396e054cea964911ab0" integrity sha512-rk7GY+FmLn/2e22HsZs0Ycrz8HQ1W3Fv+2TFOuEFW9optnDXDgkntPBIl6gact/LHsfBM5RKbM3dHsIIeLgl0Q== @@ -8723,10 +8792,10 @@ ember-source-channel-url@^3.0.0: dependencies: node-fetch "^2.6.0" -ember-source@~3.24.0: - version "3.24.4" - resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.24.4.tgz#db3f70cbe4155d48474177f1564627a1fc980f64" - integrity sha512-C5sFGxT743n2PCaTnpvy3GWHdPz+/Ve9qjcSdfRjUvFCSYNhsRkxkpXRvXEU8WoUXY35Pm4vV9RsiorX1M+/Tw== +ember-source@3.24.3: + version "3.24.3" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.24.3.tgz#fb535adec2eb9289e8af21afbe0e1ed5cd0a0889" + integrity sha512-EEAoz/pwgKZCosFiHUpkXewOcGsx8zjd7JtrwIh97JjRY/EUhBsMovjycieCjLrSXQrLjayr1vuVun2FJBESRw== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" @@ -8787,14 +8856,14 @@ ember-template-recast@^5.0.1: tmp "^0.2.1" workerpool "^6.0.3" -ember-test-selectors@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-4.1.0.tgz#0416c9ebdbd5ded4585643ba121115e45932dfc2" - integrity sha512-njyopeK018CP4PUWvkRdNFcP+56B7yfVYGt6k+71+4t8WscUzWPqgJvDYaJ64avn5EvrI+QBSWb80NC7Q++WDA== +ember-test-selectors@~5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-5.5.0.tgz#114bd29c4a33eee3a328c9ce32a57a018c27f5f6" + integrity sha512-PiKhbPnidRYQ5ed/CTU3teJV3XmzkjYjsCGx1UTy7qEY/1dEqxezlZu1DtisoLJ9Y+BcjTVlE+596lo9cOXd3w== dependencies: calculate-cache-key-for-tree "^2.0.0" - ember-cli-babel "^7.19.0" - ember-cli-version-checker "^5.0.2" + ember-cli-babel "^7.26.4" + ember-cli-version-checker "^5.1.2" ember-test-waiters@^1.1.1: version "1.2.0"