Skip to content

Commit d9b25ab

Browse files
committed
Add support for earlier embers
1 parent f7d5e07 commit d9b25ab

File tree

2 files changed

+60
-3
lines changed

2 files changed

+60
-3
lines changed

.try.mjs

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,24 @@ const compatDeps = {
2626
export default {
2727
scenarios: [
2828
{
29-
name: 'ember-lts-5.8',
29+
name: 'ember-lts-3.28',
3030
npm: {
3131
devDependencies: {
32-
'ember-source': '~5.8.0',
32+
'ember-source': '~3.28.0',
33+
'ember-cli': '^4.12',
34+
...compatDeps,
35+
},
36+
},
37+
env: {
38+
ENABLE_COMPAT_BUILD: true,
39+
},
40+
files: compatFiles,
41+
},
42+
{
43+
name: 'ember-lts-4.12',
44+
npm: {
45+
devDependencies: {
46+
'ember-source': '~4.12.0',
3347
...compatDeps,
3448
},
3549
},
@@ -59,6 +73,22 @@ export default {
5973
},
6074
},
6175
},
76+
{
77+
name: 'ember-lts-6.8',
78+
npm: {
79+
devDependencies: {
80+
'ember-source': 'npm:ember-source@~6.8.0',
81+
},
82+
},
83+
},
84+
{
85+
name: 'ember-lts-6.12',
86+
npm: {
87+
devDependencies: {
88+
'ember-source': 'npm:ember-source@~6.12.0',
89+
},
90+
},
91+
},
6292
{
6393
name: 'ember-latest',
6494
npm: {

src/modifiers/did-update.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
import { setModifierManager, capabilities } from '@ember/modifier';
2-
import { untrack } from '@glimmer/validator';
2+
import {
3+
macroCondition,
4+
dependencySatisfies,
5+
importSync,
6+
} from '@embroider/macros';
7+
8+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
9+
const untrack: (fn: () => void) => void = (function () {
10+
if (macroCondition(dependencySatisfies('ember-source', '> 3.27.0-beta.1'))) {
11+
// ember-source@3.27 shipped "real modules" by default, so we can just use
12+
// importSync to get @glimmer/validator directly
13+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
14+
const module = importSync('@glimmer/validator') as any;
15+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
16+
return module.untrack as unknown as (fn: () => void) => void;
17+
} else if (
18+
macroCondition(dependencySatisfies('ember-source', '>= 3.22.0-alpha.1'))
19+
) {
20+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any
21+
const module = importSync('ember') as any;
22+
// we can access `window.Ember` here because it wasn't deprecated until at least 3.27
23+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
24+
return module.__loader.require('@glimmer/validator').untrack;
25+
} else {
26+
// we do not call `untrack` when ember-source < 3.22
27+
// (we don't suport ember-source < 3.22)
28+
}
29+
})();
330

431
import type {
532
ModifierArgs,

0 commit comments

Comments
 (0)