Skip to content

Commit a468b3f

Browse files
committed
fix ember 6
1 parent bee63ea commit a468b3f

File tree

5 files changed

+66
-32
lines changed

5 files changed

+66
-32
lines changed

ember_debug/object-inspector.js

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,33 +39,37 @@ if (GlimmerValidator) {
3939
track = GlimmerValidator.track;
4040

4141
// patch tagFor to add debug info, older versions already have _propertyKey
42-
const tagFor = GlimmerValidator.tagFor;
43-
GlimmerValidator.tagFor = function (...args) {
44-
const tag = tagFor.call(this, ...args);
45-
const [obj, key] = args;
46-
if (
47-
(!tag._propertyKey || !tag._object) &&
48-
typeof obj === 'object' &&
49-
typeof key === 'string'
50-
) {
51-
tag._propertyKey = key;
52-
tag._object = obj;
53-
}
54-
return tag;
55-
};
56-
const trackedData = GlimmerValidator.trackedData;
57-
GlimmerValidator.trackedData = function (...args) {
58-
const r = trackedData.call(this, ...args);
59-
if (r.getter && args.length === 2) {
60-
const [key] = args;
61-
const getter = r.getter;
62-
r.getter = function (self) {
63-
GlimmerValidator.tagFor(self, key);
64-
return getter.call(this, self);
65-
};
66-
}
67-
return r;
68-
};
42+
try {
43+
const tagFor = GlimmerValidator.tagFor;
44+
GlimmerValidator.tagFor = function (...args) {
45+
const tag = tagFor.call(this, ...args);
46+
const [obj, key] = args;
47+
if (
48+
(!tag._propertyKey || !tag._object) &&
49+
typeof obj === 'object' &&
50+
typeof key === 'string'
51+
) {
52+
tag._propertyKey = key;
53+
tag._object = obj;
54+
}
55+
return tag;
56+
};
57+
const trackedData = GlimmerValidator.trackedData;
58+
GlimmerValidator.trackedData = function (...args) {
59+
const r = trackedData.call(this, ...args);
60+
if (r.getter && args.length === 2) {
61+
const [key] = args;
62+
const getter = r.getter;
63+
r.getter = function (self) {
64+
GlimmerValidator.tagFor(self, key);
65+
return getter.call(this, self);
66+
};
67+
}
68+
return r;
69+
};
70+
} catch {
71+
// cannot patch
72+
}
6973
} else if (GlimmerReference) {
7074
tagValue = GlimmerReference.value;
7175
tagValidate = GlimmerReference.validate;

test-apps/embroider-static-source/app/app.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import './inspector-support';
12
import Application from '@ember/application';
23
import Resolver from 'ember-resolver';
34
import loadInitializers from 'ember-load-initializers';
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// this is to support ember > 6
2+
3+
import Ember from 'ember';
4+
import * as runtime from '@glimmer/runtime';
5+
import * as tracking from '@glimmer/tracking';
6+
import * as validator from '@glimmer/validator';
7+
import { RSVP } from '@ember/-internals/runtime';
8+
import * as metal from '@ember/-internals/metal';
9+
import * as runloop from '@ember/runloop';
10+
11+
import config from 'test-app/config/environment';
12+
13+
// eslint-disable-next-line ember/new-module-imports
14+
if (Ember.VERSION?.startsWith('6')) {
15+
window.define('@glimmer/tracking', () => tracking);
16+
window.define('@glimmer/runtime', () => runtime);
17+
window.define('@ember/-internals/metal', () => metal);
18+
window.define('@glimmer/validator', () => validator);
19+
window.define('@ember/runloop', () => runloop);
20+
window.define('rsvp', () => RSVP);
21+
window.define('ember', () => ({ default: Ember }));
22+
window.define('test-app/config/environment', () => ({
23+
default: config,
24+
}));
25+
document.dispatchEvent(new Event('Ember'));
26+
}

test-apps/tests/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@
5252
document.head.appendChild(meta);
5353
</script>
5454

55+
<script src="{{rootURL}}ember_debug.js"></script>
5556
<script src="/testem.js" integrity="" data-embroider-ignore></script>
5657
<script src="{{rootURL}}assets/vendor.js"></script>
5758
<script src="{{rootURL}}assets/test-support.js"></script>
5859
<script src="{{rootURL}}assets/test-app.js"></script>
59-
<script src="{{rootURL}}ember_debug.js"></script>
6060
<script src="{{rootURL}}assets/tests.js"></script>
6161

6262
{{content-for "body-footer"}}

test-apps/tests/test-helper.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ import { start } from 'ember-qunit';
77
import TestAdapter from './test-adapter';
88
import setupSinon from 'ember-sinon-qunit';
99

10-
// ensure ember-debug is required
11-
import 'ember-debug/main';
12-
1310
Application.initializer({
1411
name: `00-override-adapter`,
1512
initialize(app) {
@@ -26,4 +23,10 @@ QUnit.config.testTimeout = 60000;
2623

2724
setup(QUnit.assert);
2825

29-
start();
26+
export async function waitForEmberDebug() {
27+
while (true) {
28+
if (requireModule.has('ember-debug/main')) return;
29+
await new Promise((res) => setTimeout(res, 1));
30+
}
31+
}
32+
waitForEmberDebug().then(() => start());

0 commit comments

Comments
 (0)