Skip to content

Commit 94b3132

Browse files
author
Robert Jackson
committed
Ensure untrack works for Ember < 3.27
1 parent 592ce83 commit 94b3132

File tree

3 files changed

+63
-6
lines changed

3 files changed

+63
-6
lines changed

addon/modifiers/did-update.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { setModifierManager, capabilities } from '@ember/modifier';
2-
import { gte } from 'ember-compatibility-helpers';
3-
import { untrack } from '@glimmer/validator';
2+
import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
3+
4+
const untrack = (function () {
5+
if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) {
6+
// [email protected] shipped "real modules" by default, so we can just use
7+
// importSync to get @glimmer/validator directly
8+
return importSync('@glimmer/validator').untrack;
9+
} else if (macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1'))) {
10+
// we can access `window.Ember` here because it wasn't deprecated until at least 3.27
11+
// eslint-disable-next-line no-undef
12+
return Ember.__loader.require('@glimmer/validator').untrack;
13+
} else {
14+
// nothing needed here, we do not call `untrack` in this case
15+
}
16+
})();
417

518
/**
619
The `{{did-update}}` element modifier is activated when any of its arguments
@@ -60,7 +73,7 @@ import { untrack } from '@glimmer/validator';
6073
*/
6174
export default setModifierManager(
6275
() => ({
63-
capabilities: gte('3.22.0')
76+
capabilities: macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1'))
6477
? capabilities('3.22', { disableAutoTracking: false })
6578
: capabilities('3.13', { disableAutoTracking: true }),
6679

@@ -71,7 +84,7 @@ export default setModifierManager(
7184
// save element into state bucket
7285
state.element = element;
7386

74-
if (gte('3.22.0')) {
87+
if (macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1'))) {
7588
// Consume individual properties to entangle tracking.
7689
// https://github.com/emberjs/ember.js/issues/19277
7790
// https://github.com/ember-modifier/ember-modifier/pull/63#issuecomment-815908201
@@ -83,7 +96,7 @@ export default setModifierManager(
8396
updateModifier({ element }, args) {
8497
let [fn, ...positional] = args.positional;
8598

86-
if (gte('3.22.0')) {
99+
if (macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1'))) {
87100
// Consume individual properties to entangle tracking.
88101
// https://github.com/emberjs/ember.js/issues/19277
89102
// https://github.com/ember-modifier/ember-modifier/pull/63#issuecomment-815908201

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"test:ember-compatibility": "ember try:each"
2828
},
2929
"dependencies": {
30+
"@embroider/macros": ">= 0.48.1 < 2.0.0-alpha.1",
3031
"ember-cli-babel": "^7.26.6",
3132
"ember-compatibility-helpers": "^1.2.5",
3233
"ember-modifier-manager-polyfill": "^1.2.0"

yarn.lock

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1834,6 +1834,32 @@
18341834
resolve "^1.8.1"
18351835
semver "^7.3.2"
18361836

1837+
"@embroider/macros@>= 0.48.1 < 2.0.0-alpha.1":
1838+
version "0.48.1"
1839+
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-0.48.1.tgz#fc1fd10857d40e80a20c0d366a1a8007aa424e83"
1840+
integrity sha512-JtcOL3pSxI8prstQomzNNHPBqG1K5JwrIuZwH+Q9TK4nONIH2F4z0Z0pd0SZmTEjF17E4gZN3g1J3vSX4zKuww==
1841+
dependencies:
1842+
"@embroider/shared-internals" "0.48.1"
1843+
assert-never "^1.2.1"
1844+
ember-cli-babel "^7.26.6"
1845+
find-up "^5.0.0"
1846+
lodash "^4.17.21"
1847+
resolve "^1.20.0"
1848+
semver "^7.3.2"
1849+
1850+
"@embroider/[email protected]":
1851+
version "0.48.1"
1852+
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-0.48.1.tgz#4f0dcde8dba2fa47c862746898a1846a31e27f80"
1853+
integrity sha512-6Q73QXGUQianIb3xRpMNl8VMECSatA1NhjXxeIyYzwKraWhhMBpXvysLpbJ8ib1rQe1ajmkoDdXgT5pAnVMXrg==
1854+
dependencies:
1855+
babel-import-util "^0.2.0"
1856+
ember-rfc176-data "^0.3.17"
1857+
fs-extra "^9.1.0"
1858+
lodash "^4.17.21"
1859+
resolve-package-path "^4.0.1"
1860+
semver "^7.3.5"
1861+
typescript-memoize "^1.0.1"
1862+
18371863
"@embroider/shared-internals@^0.40.0":
18381864
version "0.40.0"
18391865
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-0.40.0.tgz#2f768c60f4f35ba5f9228f046f70324851e8bfe2"
@@ -3105,7 +3131,7 @@ asn1.js@^5.2.0:
31053131
minimalistic-assert "^1.0.0"
31063132
safer-buffer "^2.1.0"
31073133

3108-
assert-never@^1.1.0:
3134+
assert-never@^1.1.0, assert-never@^1.2.1:
31093135
version "1.2.1"
31103136
resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe"
31113137
integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==
@@ -3394,6 +3420,11 @@ babel-helpers@^6.24.1:
33943420
babel-runtime "^6.22.0"
33953421
babel-template "^6.24.1"
33963422

3423+
babel-import-util@^0.2.0:
3424+
version "0.2.0"
3425+
resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-0.2.0.tgz#b468bb679919601a3570f9e317536c54f2862e23"
3426+
integrity sha512-CtWYYHU/MgK88rxMrLfkD356dApswtR/kWZ/c6JifG1m10e7tBBrs/366dFzWMAoqYmG5/JSh+94tUSpIwh+ag==
3427+
33973428
babel-loader@^8.0.6:
33983429
version "8.2.2"
33993430
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
@@ -12802,6 +12833,13 @@ resolve-package-path@^3.1.0:
1280212833
path-root "^0.1.1"
1280312834
resolve "^1.17.0"
1280412835

12836+
resolve-package-path@^4.0.1:
12837+
version "4.0.3"
12838+
resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-4.0.3.tgz#31dab6897236ea6613c72b83658d88898a9040aa"
12839+
integrity sha512-SRpNAPW4kewOaNUt8VPqhJ0UMxawMwzJD8V7m1cJfdSTK9ieZwS6K7Dabsm4bmLFM96Z5Y/UznrpG5kt1im8yA==
12840+
dependencies:
12841+
path-root "^0.1.1"
12842+
1280512843
resolve-path@^1.4.0:
1280612844
version "1.4.0"
1280712845
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
@@ -14371,6 +14409,11 @@ typescript-memoize@^1.0.0-alpha.3:
1437114409
resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.0.1.tgz#0a8199aa28f6fe18517f6e9308ef7bfbe9a98d59"
1437214410
integrity sha512-oJNge1qUrOK37d5Y6Ly2txKeuelYVsFtNF6U9kXIN7juudcQaHJQg2MxLOy0CqtkW65rVDYuTCOjnSIVPd8z3w==
1437314411

14412+
typescript-memoize@^1.0.1:
14413+
version "1.1.0"
14414+
resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.0.tgz#4a8f512d06fc995167c703a3592219901db8bc79"
14415+
integrity sha512-LQPKVXK8QrBBkL/zclE6YgSWn0I8ew5m0Lf+XL00IwMhlotqRLlzHV+BRrljVQIc+NohUAuQP7mg4HQwrx5Xbg==
14416+
1437414417
uc.micro@^1.0.1, uc.micro@^1.0.5:
1437514418
version "1.0.5"
1437614419
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"

0 commit comments

Comments
 (0)