Skip to content

Commit 51b07cb

Browse files
authored
Refactor: Centralize calls to emberSafeRequire (#2653)
2 parents 42198be + 4dc681b commit 51b07cb

File tree

5 files changed

+57
-53
lines changed

5 files changed

+57
-53
lines changed

ember_debug/libs/render-tree.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
import captureRenderTree from './capture-render-tree';
22
import { guidFor } from 'ember-debug/utils/ember/object/internals';
3-
import { emberSafeRequire } from 'ember-debug/utils/ember';
43
import { inspect } from 'ember-debug/utils/type-check';
54
import { isInVersionSpecifier } from 'ember-debug/utils/version';
6-
import { VERSION } from 'ember-debug/utils/ember';
5+
import {
6+
VERSION,
7+
EmberDestroyable,
8+
GlimmerManager,
9+
GlimmerReference,
10+
GlimmerRuntime,
11+
GlimmerUtil,
12+
} from 'ember-debug/utils/ember';
713

814
class InElementSupportProvider {
915
constructor(owner) {
1016
this.nodeMap = new Map();
1117
this.remoteRoots = [];
12-
this.runtime = emberSafeRequire('@glimmer/runtime');
13-
this.reference = emberSafeRequire('@glimmer/reference');
18+
this.runtime = GlimmerRuntime;
19+
this.reference = GlimmerReference;
1420
try {
1521
this.Wormhole = requireModule('ember-wormhole/components/ember-wormhole');
1622
} catch {
1723
// nope
1824
}
1925

20-
try {
21-
requireModule(
22-
'@glimmer/manager',
23-
).CustomModifierManager.prototype.getDebugInstance = (args) =>
24-
args.modifier || args.delegate;
25-
} catch {
26-
// nope
26+
if (GlimmerManager) {
27+
GlimmerManager.CustomModifierManager.prototype.getDebugInstance = (
28+
args,
29+
) => args.modifier || args.delegate;
2730
}
2831

29-
this.DESTROY = emberSafeRequire('@glimmer/util')?.DESTROY;
30-
this.registerDestructor =
31-
emberSafeRequire('@glimmer/destroyable')?.registerDestructor ||
32-
emberSafeRequire('@ember/destroyable')?.registerDestructor ||
33-
emberSafeRequire('@ember/runtime')?.registerDestructor;
32+
this.DESTROY = GlimmerUtil?.DESTROY;
33+
this.registerDestructor = EmberDestroyable?.registerDestructor;
3434

3535
this.debugRenderTree =
3636
owner.lookup('renderer:-dom')?.debugRenderTree ||

ember_debug/object-inspector.js

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,24 @@ import {
1616
ObjectProxy,
1717
ArrayProxy,
1818
Service,
19+
InternalsMetal,
1920
Component,
20-
emberSafeRequire,
21+
GlimmerComponent,
22+
GlimmerReference,
23+
GlimmerValidator,
2124
} from 'ember-debug/utils/ember';
2225
import { cacheFor, guidFor } from 'ember-debug/utils/ember/object/internals';
2326
import { _backburner, join } from 'ember-debug/utils/ember/runloop';
2427
import emberNames from './utils/ember-object-names';
2528
import getObjectName from './utils/get-object-name';
2629

27-
const GlimmerComponent = (() => {
28-
try {
29-
return emberSafeRequire('@glimmer/component').default;
30-
} catch {
31-
// ignore, return undefined
32-
}
33-
})();
34-
3530
let tagValue, tagValidate, track, tagForProperty;
3631

37-
try {
38-
// Try to load the most recent library
39-
let GlimmerValidator = emberSafeRequire('@glimmer/validator');
32+
const GlimmerDebugComponent = (() => GlimmerComponent?.default)();
4033

34+
// Try to use the most recent library (GlimmerValidator), else
35+
// fallback on the previous implementation (GlimmerReference).
36+
if (GlimmerValidator) {
4137
tagValue = GlimmerValidator.value || GlimmerValidator.valueForTag;
4238
tagValidate = GlimmerValidator.validate || GlimmerValidator.validateTag;
4339
track = GlimmerValidator.track;
@@ -70,26 +66,15 @@ try {
7066
}
7167
return r;
7268
};
73-
} catch {
74-
try {
75-
// Fallback to the previous implementation
76-
let GlimmerReference = emberSafeRequire('@glimmer/reference');
77-
78-
tagValue = GlimmerReference.value;
79-
tagValidate = GlimmerReference.validate;
80-
} catch {
81-
// ignore
82-
}
69+
} else if (GlimmerReference) {
70+
tagValue = GlimmerReference.value;
71+
tagValidate = GlimmerReference.validate;
8372
}
8473

85-
try {
86-
let metal = emberSafeRequire('@ember/-internals/metal');
87-
88-
tagForProperty = metal.tagForProperty;
74+
if (InternalsMetal) {
75+
tagForProperty = InternalsMetal.tagForProperty;
8976
// If track was not already loaded, use metal's version (the previous version)
90-
track = track || metal.track;
91-
} catch {
92-
// ignore
77+
track = track || InternalsMetal.track;
9378
}
9479

9580
const HAS_GLIMMER_TRACKING = tagValue && tagValidate && track && tagForProperty;
@@ -1285,7 +1270,7 @@ function getDebugInfo(object) {
12851270
'element',
12861271
'targetObject',
12871272
);
1288-
} else if (GlimmerComponent && object instanceof GlimmerComponent) {
1273+
} else if (GlimmerDebugComponent && object instanceof GlimmerDebugComponent) {
12891274
// These properties don't really exist on Glimmer Components, but
12901275
// reading their values trigger a development mode assertion. The
12911276
// more correct long term fix is to make getters lazy (shows "..."

ember_debug/utils/ember-object-names.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { compareVersion } from 'ember-debug/utils/version';
2-
import { emberSafeRequire } from 'ember-debug/utils/ember';
32
import {
43
VERSION,
54
ActionHandler,
@@ -10,6 +9,8 @@ import {
109
MutableArray,
1110
Component,
1211
Evented,
12+
InternalsRuntime,
13+
InternalsViews,
1314
PromiseProxyMixin,
1415
EmberObject,
1516
Observable,
@@ -33,14 +34,12 @@ const emberNames = new Map([
3334
]);
3435

3536
if (compareVersion(VERSION, '3.27.0') === -1) {
36-
const TargetActionSupport = emberSafeRequire(
37-
'@ember/-internals/runtime',
38-
)?.TargetActionSupport;
37+
const TargetActionSupport = InternalsRuntime?.TargetActionSupport;
3938
emberNames.set(TargetActionSupport, 'TargetActionSupport Mixin');
4039
}
4140

4241
try {
43-
const Views = emberSafeRequire('@ember/-internals/views') || {};
42+
const Views = InternalsViews || {};
4443
emberNames.set(Views.ViewStateSupport, 'ViewStateSupport Mixin');
4544
emberNames.set(Views.ViewMixin, 'View Mixin');
4645
emberNames.set(Views.ActionSupport, 'ActionSupport Mixin');

ember_debug/utils/ember.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,21 @@ let captureRenderTree = Ember._captureRenderTree;
5656
let getEnv = () => Ember.ENV;
5757

5858
let Debug = emberSafeRequire('@ember/debug');
59+
let InternalsMetal = emberSafeRequire('@ember/-internals/metal');
60+
let InternalsRuntime = emberSafeRequire('@ember/-internals/runtime');
5961
let InternalsUtils = emberSafeRequire('@ember/-internals/utils');
62+
let InternalsViews = emberSafeRequire('@ember/-internals/views');
63+
let EmberDestroyable = emberSafeRequire('@ember/destroyable');
6064
let ObjectInternals = emberSafeRequire('@ember/object/internals');
6165
let Instrumentation = emberSafeRequire('@ember/instrumentation');
6266
let Runloop = emberSafeRequire('@ember/runloop');
6367
let RSVP = emberSafeRequire('rsvp');
68+
let GlimmerComponent = emberSafeRequire('@glimmer/component');
69+
let GlimmerManager = emberSafeRequire('@glimmer/manager');
70+
let GlimmerReference = emberSafeRequire('@glimmer/reference');
71+
let GlimmerRuntime = emberSafeRequire('@glimmer/runtime');
72+
let GlimmerUtil = emberSafeRequire('@glimmer/util');
73+
let GlimmerValidator = emberSafeRequire('@glimmer/validator');
6474

6575
if (!Ember) {
6676
captureRenderTree = emberSafeRequire('@ember/debug')?.captureRenderTree;
@@ -94,7 +104,10 @@ if (!Ember) {
94104
export {
95105
Runloop,
96106
Debug,
107+
InternalsMetal,
108+
InternalsRuntime,
97109
InternalsUtils,
110+
InternalsViews,
98111
ObjectInternals,
99112
Instrumentation,
100113
RSVP,
@@ -113,6 +126,7 @@ export {
113126
Evented,
114127
Service,
115128
PromiseProxyMixin,
129+
EmberDestroyable,
116130
EmberObject,
117131
VERSION,
118132
ComputedProperty,
@@ -122,6 +136,12 @@ export {
122136
set,
123137
captureRenderTree,
124138
getEnv,
139+
GlimmerComponent,
140+
GlimmerManager,
141+
GlimmerReference,
142+
GlimmerRuntime,
143+
GlimmerUtil,
144+
GlimmerValidator,
125145
};
126146

127147
export default Ember;

ember_debug/utils/type-check.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
ComputedProperty,
44
EmberObject,
55
meta as emberMeta,
6-
emberSafeRequire,
6+
InternalsMetal,
77
} from 'ember-debug/utils/ember';
88

99
/**
@@ -41,7 +41,7 @@ export function getDescriptorFor(object, key) {
4141
// exists longer than ember 3.10
4242
if (Debug.isComputed) {
4343
const { descriptorForDecorator, descriptorForProperty } =
44-
emberSafeRequire('@ember/-internals/metal') || {};
44+
InternalsMetal || {};
4545
return (
4646
descriptorForDecorator?.(object[key]) ||
4747
descriptorForProperty?.(object, key)

0 commit comments

Comments
 (0)