Skip to content

Commit ee6c9de

Browse files
Merge pull request #122 from NullVoxPopuli/make-inert-after-4.4
feat: make inert when ember-source supports default helper manager Closes: #121
2 parents f608409 + 53faa2b commit ee6c9de

File tree

6 files changed

+1639
-3151
lines changed

6 files changed

+1639
-3151
lines changed

index.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,50 @@
11
'use strict';
22

3+
const VersionChecker = require('ember-cli-version-checker');
4+
5+
const MINIMUM_VERSION = '4.5.0-alpha.3'
6+
37
module.exports = {
48
name: require('./package').name,
59

10+
_usePolyfill: flag(process.env.USE_DEFAULT_HELPER_MANAGER_POLYFILL),
11+
612
options: {
713
'ember-cli-babel': {
814
enableTypeScriptTransform: true,
915
},
1016
},
17+
18+
usePolyfill() {
19+
if (this._usePolyfill === undefined) {
20+
let version = new VersionChecker(this.project).for(`ember-source`);
21+
this._usePolyfill = version.lt(MINIMUM_VERSION);
22+
}
23+
24+
return this._usePolyfill;
25+
},
26+
27+
treeForAddon() {
28+
if (this.usePolyfill()) {
29+
return this._super.treeForAddon.apply(this, arguments);
30+
}
31+
},
32+
33+
treeForApp() {
34+
if (this.usePolyfill()) {
35+
return this._super.treeForApp.apply(this, arguments);
36+
}
37+
},
1138
};
39+
40+
const FALSE = ['false', 'disable', 'no', 'off', '0'];
41+
42+
function flag(flag) {
43+
if (flag === undefined) {
44+
return undefined;
45+
} else if (FALSE.includes(flag.toLowerCase())) {
46+
return false;
47+
} else {
48+
return true;
49+
}
50+
}

package.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
},
3030
"dependencies": {
3131
"ember-cli-babel": "^7.26.11",
32-
"ember-cli-typescript": "^5.0.0"
32+
"ember-cli-typescript": "^5.0.0",
33+
"ember-cli-version-checker": "^5.1.2"
3334
},
3435
"devDependencies": {
3536
"@commitlint/cli": "^16.2.3",
@@ -44,28 +45,27 @@
4445
"@semantic-release/changelog": "^6.0.1",
4546
"@semantic-release/git": "^10.0.1",
4647
"@types/ember-qunit": "^5.0.0",
47-
"@types/ember-resolver": "^5.0.10",
48+
"@types/ember-resolver": "^5.0.11",
4849
"@types/ember__application": "^4.0.0",
4950
"@types/ember__array": "^4.0.1",
50-
"@types/ember__component": "^4.0.4",
51+
"@types/ember__component": "^4.0.8",
5152
"@types/ember__controller": "^4.0.0",
52-
"@types/ember__debug": "^4.0.0",
53+
"@types/ember__debug": "^4.0.1",
5354
"@types/ember__engine": "^4.0.0",
5455
"@types/ember__error": "^4.0.0",
55-
"@types/ember__object": "^4.0.0",
56+
"@types/ember__object": "^4.0.2",
5657
"@types/ember__polyfills": "^4.0.0",
57-
"@types/ember__routing": "^4.0.3",
58-
"@types/ember__runloop": "^4.0.0",
58+
"@types/ember__routing": "^4.0.4",
59+
"@types/ember__runloop": "^4.0.1",
5960
"@types/ember__service": "^4.0.0",
60-
"@types/ember__string": "^3.16.3",
61+
"@types/ember__string": "^3.0.9",
6162
"@types/ember__template": "^4.0.0",
6263
"@types/ember__test": "^4.0.0",
63-
"@types/ember__test-helpers": "^2.6.0",
64+
"@types/ember__test-helpers": "^2.6.1",
6465
"@types/ember__utils": "^4.0.0",
6566
"@types/htmlbars-inline-precompile": "^3.0.0",
6667
"@types/qunit": "^2.11.3",
6768
"@types/rsvp": "^4.0.4",
68-
"@types/uuid": "^8.3.4",
6969
"@typescript-eslint/eslint-plugin": "^5.16.0",
7070
"@typescript-eslint/parser": "^5.16.0",
7171
"babel-eslint": "^10.1.0",
@@ -102,7 +102,7 @@
102102
"qunit": "^2.18.0",
103103
"qunit-dom": "^2.0.0",
104104
"semantic-release": "^19.0.2",
105-
"typescript": "^4.5.5",
105+
"typescript": "^4.6.3",
106106
"webpack": "^5.68.0"
107107
},
108108
"release": {

tests/dummy/app/config/environment.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ declare const config: {
88
environment: string;
99
modulePrefix: string;
1010
podModulePrefix: string;
11-
locationType: string;
11+
// Support ember types for v3 and v4
12+
locationType: any;
1213
rootURL: string;
1314
APP: Record<string, unknown>;
1415
};

tests/unit/inert-test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { module, test } from 'qunit';
2+
import { setupTest } from 'ember-qunit';
3+
4+
import { macroCondition, dependencySatisfies } from '@embroider/macros';
5+
6+
module('Unit | inert', function (hooks) {
7+
setupTest(hooks);
8+
9+
function hasPolyfill() {
10+
let initializers = ['install-function-helper-manager', 'usable-function-manager'];
11+
12+
return Object.keys(window.requirejs.entries).some(e => initializers.some(name => e.includes(name)))
13+
}
14+
15+
if (macroCondition(dependencySatisfies('ember-source', '^4.5.0-alpha.3 || ^4.5.0'))) {
16+
17+
test('polyfill is inert', function(assert) {
18+
assert.strictEqual(hasPolyfill(), false, 'no polyfill');
19+
});
20+
21+
} else {
22+
23+
test('polyfill is present', function(assert) {
24+
assert.strictEqual(hasPolyfill(), true, 'has polyfill');
25+
});
26+
27+
}
28+
29+
});

types/overrides.d.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
import '@ember/component';
22

3-
/**
4-
* Typed Ember is refraining from adding this because it's not *really* intended for
5-
* mainstream use
6-
*/
7-
declare module '@ember/component' {
8-
// https://github.com/glimmerjs/glimmer-vm/blob/1bc620be641d0748e643ce64592e7442d314e590/packages/%40glimmer/manager/lib/public/template.ts#L9
9-
export function setComponentTemplate(factory: TemplateFactory, obj: object): object;
10-
}
11-
123
declare module '@ember/modifier' {
134
export function setModifierManager(manager: unknown, modifier: unknown): void;
145
export function capabilities(version: string): unknown;

0 commit comments

Comments
 (0)