ember-inspector 4.13.1-alpha.2025.6.8 → 4.13.1-alpha.2025.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/app/components/component-tree-item.hbs +1 -1
  2. package/app/components/component-tree-toolbar.hbs +14 -0
  3. package/app/controllers/component-tree.js +18 -0
  4. package/app/routes/whats-new.js +1 -1
  5. package/app/services/adapters/web-extension.ts +3 -0
  6. package/app/templates/component-tree.hbs +3 -0
  7. package/dist/bookmarklet/panes-3-16-0/assets/{chunk.524.c8707b06d2f496a0d15d.js → chunk.524.667014b845a0633a6ae1.js} +4 -4
  8. package/dist/{firefox/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js → bookmarklet/panes-3-16-0/assets/chunk.582.87aa1c315a2e3d113799.js} +5 -5
  9. package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.js +16 -16
  10. package/dist/bookmarklet/panes-3-16-0/assets/svg/focus-point-round.svg +9 -0
  11. package/dist/bookmarklet/panes-3-16-0/assets/vendor.js +12 -10
  12. package/dist/bookmarklet/panes-3-16-0/ember_debug.js +9073 -9413
  13. package/dist/bookmarklet/panes-3-16-0/index.html +2 -2
  14. package/dist/chrome/manifest.json +2 -2
  15. package/dist/{firefox/panes-3-16-0/assets/chunk.524.c8707b06d2f496a0d15d.js → chrome/panes-3-16-0/assets/chunk.524.667014b845a0633a6ae1.js} +4 -4
  16. package/dist/{bookmarklet/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js → chrome/panes-3-16-0/assets/chunk.582.87aa1c315a2e3d113799.js} +5 -5
  17. package/dist/chrome/panes-3-16-0/assets/ember-inspector.js +16 -16
  18. package/dist/chrome/panes-3-16-0/assets/svg/focus-point-round.svg +9 -0
  19. package/dist/chrome/panes-3-16-0/assets/vendor.js +12 -10
  20. package/dist/chrome/panes-3-16-0/ember_debug.js +9073 -9413
  21. package/dist/chrome/panes-3-16-0/index.html +2 -2
  22. package/dist/firefox/manifest.json +2 -2
  23. package/dist/{chrome/panes-3-16-0/assets/chunk.524.c8707b06d2f496a0d15d.js → firefox/panes-3-16-0/assets/chunk.524.667014b845a0633a6ae1.js} +4 -4
  24. package/dist/{websocket/assets/chunk.582.6d68f76dc5c8ba2b48a8.js → firefox/panes-3-16-0/assets/chunk.582.87aa1c315a2e3d113799.js} +5 -5
  25. package/dist/firefox/panes-3-16-0/assets/ember-inspector.js +16 -16
  26. package/dist/firefox/panes-3-16-0/assets/svg/focus-point-round.svg +9 -0
  27. package/dist/firefox/panes-3-16-0/assets/vendor.js +12 -10
  28. package/dist/firefox/panes-3-16-0/ember_debug.js +9073 -9413
  29. package/dist/firefox/panes-3-16-0/index.html +2 -2
  30. package/dist/websocket/assets/{chunk.524.c8707b06d2f496a0d15d.js → chunk.524.667014b845a0633a6ae1.js} +4 -4
  31. package/dist/{chrome/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js → websocket/assets/chunk.582.87aa1c315a2e3d113799.js} +5 -5
  32. package/dist/websocket/assets/ember-inspector.js +16 -16
  33. package/dist/websocket/assets/svg/focus-point-round.svg +9 -0
  34. package/dist/websocket/assets/vendor.js +12 -10
  35. package/dist/websocket/ember_debug.js +9073 -9413
  36. package/dist/websocket/index.html +2 -2
  37. package/ember-cli-build.js +1 -47
  38. package/ember_debug/babel.config.cjs +11 -0
  39. package/ember_debug/libs/render-tree.js +23 -31
  40. package/ember_debug/libs/source-map.js +1 -1
  41. package/ember_debug/libs/view-inspection.js +10 -2
  42. package/ember_debug/object-inspector.js +15 -30
  43. package/ember_debug/package.json +25 -0
  44. package/ember_debug/rollup.config.js +48 -0
  45. package/ember_debug/utils/ember/debug.js +5 -6
  46. package/ember_debug/utils/ember/instrumentation.js +4 -4
  47. package/ember_debug/utils/ember/object/internals.js +5 -10
  48. package/ember_debug/utils/ember/own-runloop.js +1 -1
  49. package/ember_debug/utils/ember/runloop.js +9 -9
  50. package/ember_debug/utils/ember-object-names.js +4 -5
  51. package/ember_debug/utils/ember.js +73 -27
  52. package/ember_debug/utils/rsvp.js +7 -14
  53. package/ember_debug/utils/type-check.js +2 -2
  54. package/ember_debug/vendor/startup-wrapper.js +4 -4
  55. package/ember_debug/view-debug.js +5 -0
  56. package/eslint.config.mjs +1 -0
  57. package/package.json +11 -5
  58. package/pnpm-workspace.yaml +3 -0
  59. package/public/assets/svg/focus-point-round.svg +9 -0
  60. package/skeletons/web-extension/manifest.json +2 -2
  61. package/tests/acceptance/component-tree-test.js +53 -0
  62. package/tests/acceptance/whats-new-test.js +1 -1
  63. package/tests/ember_debug/object-inspector-test.js +1 -1
  64. package/tests/ember_debug/profile-manager-test.js +2 -2
  65. package/tests/ember_debug/profile-node-test.js +1 -1
  66. package/tests/ember_debug/promise-assembler-test.js +1 -1
  67. package/tests/ember_debug/view-debug-test.js +80 -3
  68. package/tests/integration/injection-test.js +1 -1
  69. package/tests/unit/utils/type-check-test.js +1 -1
  70. package/ember_debug/utils/ember/loader.js +0 -22
@@ -8,7 +8,7 @@
8
8
  <meta name="description" content="">
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1">
10
10
 
11
- <meta name="ember-inspector/config/environment" content="%7B%22modulePrefix%22%3A%22ember-inspector%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22hash%22%2C%22version%22%3A%224.13.1-alpha.2025.6.8%2Bf3062c3%22%2C%22emberVersionsSupported%22%3A%5B%223.16.0%22%2C%22%22%5D%2C%22previousEmberVersionsSupported%22%3A%5B%220.0.0%22%2C%222.7.0%22%2C%223.4.0%22%5D%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_NO_IMPLICIT_ROUTE_MODEL%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22ember-inspector%22%2C%22version%22%3A%224.13.1-alpha.2025.6.8%2Bf3062c3%2Bf3062c3c%22%7D%7D" />
11
+ <meta name="ember-inspector/config/environment" content="%7B%22modulePrefix%22%3A%22ember-inspector%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22hash%22%2C%22version%22%3A%224.13.1-alpha.2025.7.1%2Bf553044%22%2C%22emberVersionsSupported%22%3A%5B%223.16.0%22%2C%22%22%5D%2C%22previousEmberVersionsSupported%22%3A%5B%220.0.0%22%2C%222.7.0%22%2C%223.4.0%22%5D%2C%22EmberENV%22%3A%7B%22EXTEND_PROTOTYPES%22%3Afalse%2C%22FEATURES%22%3A%7B%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_NO_IMPLICIT_ROUTE_MODEL%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22ember-inspector%22%2C%22version%22%3A%224.13.1-alpha.2025.7.1%2Bf553044%2Bf553044c%22%7D%7D" />
12
12
 
13
13
  <style type="text/css">
14
14
  @font-face {
@@ -38,7 +38,7 @@
38
38
 
39
39
  <script src="assets/vendor.js"></script>
40
40
  <script src="assets/chunk.443.86a005e528b587663b78.js"></script>
41
- <script src="assets/chunk.524.c8707b06d2f496a0d15d.js"></script>
41
+ <script src="assets/chunk.524.667014b845a0633a6ae1.js"></script>
42
42
  <script src="assets/ember-inspector.js"></script>
43
43
 
44
44
 
@@ -7,13 +7,7 @@ const concatFiles = require('broccoli-concat');
7
7
  const stew = require('broccoli-stew');
8
8
  const writeFile = require('broccoli-file-creator');
9
9
  const replace = require('broccoli-string-replace');
10
- const Babel = require('broccoli-babel-transpiler');
11
- const moduleResolver = require('amd-name-resolver').resolveModules({
12
- throwOnRootAccess: false,
13
- });
14
10
  const Funnel = require('broccoli-funnel');
15
- const ensurePosix = require('ensure-posix-path');
16
- const path = require('path');
17
11
  const packageJson = require('./package.json');
18
12
  const { map, mv } = stew;
19
13
 
@@ -33,16 +27,6 @@ const options = {
33
27
  options.minifyJS = { enabled: false };
34
28
  options.minifyCSS = { enabled: false };
35
29
 
36
- // Stolen from relative-module-paths.js in ember-cli-babel
37
- function getRelativeModulePath(modulePath) {
38
- return ensurePosix(path.relative(process.cwd(), modulePath));
39
- }
40
-
41
- // Stolen from relative-module-paths.js in ember-cli-babel
42
- function resolveRelativeModulePath(name, child) {
43
- return moduleResolver(name, getRelativeModulePath(child));
44
- }
45
-
46
30
  module.exports = function (defaults) {
47
31
  let checker = new VersionChecker(defaults);
48
32
  let emberChecker = checker.for('ember-source');
@@ -100,41 +84,11 @@ module.exports = function (defaults) {
100
84
  app.import('node_modules/compare-versions/index.js');
101
85
  app.import('node_modules/normalize.css/normalize.css');
102
86
 
103
- // Ember Debug
104
-
105
- let emberDebug = 'ember_debug';
106
-
107
- let sourceMap = new Funnel('node_modules/source-map-js', {
108
- files: ['**/*.js'],
109
- destDir: 'ember-debug/deps',
110
- });
111
-
112
- sourceMap = new Babel(sourceMap, {
113
- plugins: ['transform-commonjs'],
114
- });
115
-
116
- const backburner = new Funnel('node_modules/backburner.js/dist/es6', {
117
- files: ['backburner.js'],
118
- destDir: 'ember-debug/deps',
119
- });
87
+ let emberDebug = 'ember_debug/dist';
120
88
 
121
89
  emberDebug = new Funnel(emberDebug, {
122
90
  destDir: 'ember-debug',
123
91
  include: ['**/*.js'],
124
- exclude: ['vendor/startup-wrapper.js', 'vendor/loader.js'],
125
- });
126
-
127
- emberDebug = mergeTrees([sourceMap, backburner, emberDebug]);
128
-
129
- emberDebug = new Babel(emberDebug, {
130
- moduleIds: true,
131
- getModuleId: getRelativeModulePath,
132
- plugins: [
133
- ['@babel/plugin-transform-class-properties'],
134
- ['@babel/plugin-transform-class-static-block'],
135
- ['module-resolver', { resolvePath: resolveRelativeModulePath }],
136
- ['@babel/plugin-transform-modules-amd', { noInterop: true }],
137
- ],
138
92
  });
139
93
 
140
94
  const previousEmberVersionsSupportedString = `[${packageJson.previousEmberVersionsSupported
@@ -0,0 +1,11 @@
1
+ module.exports = {
2
+ plugins: [
3
+ ['@babel/plugin-proposal-decorators', { version: 'legacy' }],
4
+ ['@babel/plugin-transform-class-properties'],
5
+ ['@babel/plugin-transform-class-static-block'],
6
+ ],
7
+
8
+ generatorOpts: {
9
+ compact: false,
10
+ },
11
+ };
@@ -1,36 +1,31 @@
1
1
  import captureRenderTree from './capture-render-tree';
2
2
  import { guidFor } from 'ember-debug/utils/ember/object/internals';
3
- import { EmberLoader, emberSafeRequire } from 'ember-debug/utils/ember/loader';
4
3
  import { inspect } from 'ember-debug/utils/type-check';
5
4
  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';
7
13
 
8
14
  class InElementSupportProvider {
9
15
  constructor(owner) {
10
16
  this.nodeMap = new Map();
11
17
  this.remoteRoots = [];
12
- this.runtime = this.require('@glimmer/runtime');
13
- this.reference = this.require('@glimmer/reference');
14
- try {
15
- this.Wormhole = requireModule('ember-wormhole/components/ember-wormhole');
16
- } catch {
17
- // nope
18
- }
18
+ this.runtime = GlimmerRuntime;
19
+ this.reference = GlimmerReference;
19
20
 
20
- try {
21
- requireModule(
22
- '@glimmer/manager',
23
- ).CustomModifierManager.prototype.getDebugInstance = (args) =>
24
- args.modifier || args.delegate;
25
- } catch {
26
- // nope
21
+ if (GlimmerManager) {
22
+ GlimmerManager.CustomModifierManager.prototype.getDebugInstance = (
23
+ args,
24
+ ) => args.modifier || args.delegate;
27
25
  }
28
26
 
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;
27
+ this.DESTROY = GlimmerUtil?.DESTROY;
28
+ this.registerDestructor = EmberDestroyable?.registerDestructor;
34
29
 
35
30
  this.debugRenderTree =
36
31
  owner.lookup('renderer:-dom')?.debugRenderTree ||
@@ -290,12 +285,6 @@ class InElementSupportProvider {
290
285
  );
291
286
  this.NewElementBuilderFunctions = null;
292
287
  }
293
-
294
- require(req) {
295
- return requireModule.has(req)
296
- ? requireModule(req)
297
- : EmberLoader.require(req);
298
- }
299
288
  }
300
289
 
301
290
  export default class RenderTree {
@@ -613,9 +602,11 @@ export default class RenderTree {
613
602
  this.inElementSupport?.remoteRoots.push(node);
614
603
  }
615
604
 
605
+ // EmberWormhole component from ember-wormhole was used to provide
606
+ // rendering into a given DOM element prior to built-in in-element.
616
607
  if (
617
- this.inElementSupport?.Wormhole &&
618
- node.instance instanceof this.inElementSupport.Wormhole.default
608
+ node.template ===
609
+ 'ember-wormhole/templates/components/ember-wormhole.hbs'
619
610
  ) {
620
611
  this.inElementSupport?.remoteRoots.push(node);
621
612
  const bounds = node.bounds;
@@ -643,10 +634,11 @@ export default class RenderTree {
643
634
  node.args.named[attr.nodeName] = attr.nodeValue;
644
635
  });
645
636
  // move modifiers and components into the element children
637
+
646
638
  parentNode.children.forEach((child) => {
647
639
  if (
648
- child.bounds.parentElement === node.instance ||
649
- child.meta?.parentElement === node.instance ||
640
+ node.instance.contains(child.bounds.parentElement) ||
641
+ node.instance.contains(child.meta?.parentElement) ||
650
642
  (child.type === 'modifier' &&
651
643
  child.bounds.firstNode === node.instance)
652
644
  ) {
@@ -1,5 +1,5 @@
1
1
  import BaseObject from 'ember-debug/utils/base-object';
2
- import * as SourceMap from 'ember-debug/deps/source-map';
2
+ import * as SourceMap from 'source-map-js';
3
3
  const notFoundError = new Error('Source map url not found');
4
4
 
5
5
  export default class extends BaseObject {
@@ -317,7 +317,11 @@ export default class ViewInspection {
317
317
  onMouseMove(event) {
318
318
  event.preventDefault();
319
319
  event.stopPropagation();
320
- this.inspectNearest(event.target, false);
320
+ let target = event.target;
321
+ if (target.shadowRoot) {
322
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
323
+ }
324
+ this.inspectNearest(target, false);
321
325
  }
322
326
 
323
327
  onKeyDown(event) {
@@ -342,7 +346,11 @@ export default class ViewInspection {
342
346
  } else if (this.isInspecting && event.button === 0) {
343
347
  event.preventDefault();
344
348
  event.stopPropagation();
345
- this.inspectNearest(event.target, true);
349
+ let target = event.target;
350
+ if (target.shadowRoot) {
351
+ target = target.shadowRoot.elementFromPoint(event.x, event.y) || target;
352
+ }
353
+ this.inspectNearest(target, true);
346
354
  this.stop(false);
347
355
  }
348
356
  }
@@ -16,28 +16,24 @@ import {
16
16
  ObjectProxy,
17
17
  ArrayProxy,
18
18
  Service,
19
+ InternalsMetal,
19
20
  Component,
21
+ GlimmerComponent,
22
+ GlimmerReference,
23
+ GlimmerValidator,
20
24
  } from 'ember-debug/utils/ember';
21
25
  import { cacheFor, guidFor } from 'ember-debug/utils/ember/object/internals';
22
26
  import { _backburner, join } from 'ember-debug/utils/ember/runloop';
23
27
  import emberNames from './utils/ember-object-names';
24
28
  import getObjectName from './utils/get-object-name';
25
- import { EmberLoader } from 'ember-debug/utils/ember/loader';
26
-
27
- const GlimmerComponent = (() => {
28
- try {
29
- return EmberLoader.require('@glimmer/component').default;
30
- } catch {
31
- // ignore, return undefined
32
- }
33
- })();
34
29
 
35
30
  let tagValue, tagValidate, track, tagForProperty;
36
31
 
37
- try {
38
- // Try to load the most recent library
39
- let GlimmerValidator = EmberLoader.require('@glimmer/validator');
32
+ const GlimmerDebugComponent = (() => GlimmerComponent?.default)();
40
33
 
34
+ // Try to use the most recent library (GlimmerValidator), else
35
+ // fallback on the previous implementation (GlimmerReference).
36
+ if (GlimmerValidator) {
41
37
  tagValue = GlimmerValidator.value || GlimmerValidator.valueForTag;
42
38
  tagValidate = GlimmerValidator.validate || GlimmerValidator.validateTag;
43
39
  track = GlimmerValidator.track;
@@ -70,26 +66,15 @@ try {
70
66
  }
71
67
  return r;
72
68
  };
73
- } catch {
74
- try {
75
- // Fallback to the previous implementation
76
- let GlimmerReference = EmberLoader.require('@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;
83
72
  }
84
73
 
85
- try {
86
- let metal = EmberLoader.require('@ember/-internals/metal');
87
-
88
- tagForProperty = metal.tagForProperty;
74
+ if (InternalsMetal) {
75
+ tagForProperty = InternalsMetal.tagForProperty;
89
76
  // 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;
93
78
  }
94
79
 
95
80
  const HAS_GLIMMER_TRACKING = tagValue && tagValidate && track && tagForProperty;
@@ -1285,7 +1270,7 @@ function getDebugInfo(object) {
1285
1270
  'element',
1286
1271
  'targetObject',
1287
1272
  );
1288
- } else if (GlimmerComponent && object instanceof GlimmerComponent) {
1273
+ } else if (GlimmerDebugComponent && object instanceof GlimmerDebugComponent) {
1289
1274
  // These properties don't really exist on Glimmer Components, but
1290
1275
  // reading their values trigger a development mode assertion. The
1291
1276
  // more correct long term fix is to make getters lazy (shows "..."
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "ember-debug",
3
+ "private": true,
4
+ "type": "module",
5
+ "scripts": {
6
+ "watch": "pnpm build --watch",
7
+ "build": "rollup --config",
8
+ "prepare": "pnpm build"
9
+ },
10
+ "devDependencies": {
11
+ "@babel/plugin-proposal-decorators": "^7.25.9",
12
+ "@babel/plugin-transform-class-properties": "^7.25.9",
13
+ "@babel/plugin-transform-class-static-block": "^7.26.0",
14
+ "@rollup/plugin-babel": "^6.0.4",
15
+ "@rollup/plugin-commonjs": "^28.0.3",
16
+ "@rollup/plugin-node-resolve": "^16.0.1",
17
+ "backburner.js": "^2.8.0",
18
+ "glob": "^11.0.2",
19
+ "rollup": "^4.39.0",
20
+ "source-map-js": "^1.2.1"
21
+ },
22
+ "exports": {
23
+ "./*": "./*.js"
24
+ }
25
+ }
@@ -0,0 +1,48 @@
1
+ import { nodeResolve } from '@rollup/plugin-node-resolve';
2
+ import commonjs from '@rollup/plugin-commonjs';
3
+ import { babel } from '@rollup/plugin-babel';
4
+ import { globSync } from 'glob';
5
+
6
+ export default {
7
+ input: [
8
+ 'main.js',
9
+ ...globSync('adapters/**/*.js'),
10
+ 'utils/version.js',
11
+ 'port.js',
12
+ 'utils/ember.js',
13
+ 'models/profile-node.js',
14
+ 'libs/promise-assembler.js',
15
+ ],
16
+ output: {
17
+ format: 'amd',
18
+ amd: {
19
+ autoId: true,
20
+ // id: 'ember-debug/[name]',
21
+ basePath: 'ember-debug',
22
+ },
23
+ chunkFileNames: '[name].js',
24
+ dir: 'dist',
25
+ },
26
+
27
+ plugins: [
28
+ babel(),
29
+ nodeResolve(),
30
+ commonjs(),
31
+ /**
32
+ * this plugin forces each of the intenral dependencies for each of the chunks to be prefixed with ember-debug
33
+ */
34
+ {
35
+ name: 'rollup-plugin-name-amd-modules',
36
+ renderChunk(code) {
37
+ let splitCode = code.split('\n');
38
+
39
+ splitCode[0] = splitCode[0].replaceAll(
40
+ /'\.\/([^']*)'/g,
41
+ `'ember-debug/$1'`,
42
+ );
43
+
44
+ return splitCode.join('\n');
45
+ },
46
+ },
47
+ ],
48
+ };
@@ -1,13 +1,12 @@
1
- import Ember from '../ember';
1
+ import Ember, { Debug, InternalsUtils } from '../ember';
2
2
 
3
3
  let module;
4
-
5
4
  export let inspect;
6
5
 
7
- try {
8
- module = requireModule('@ember/debug');
9
- inspect = module.inspect || requireModule('@ember/-internals/utils').inspect;
10
- } catch {
6
+ if (Debug) {
7
+ module = Debug;
8
+ inspect = Debug.inspect || InternalsUtils.inspect;
9
+ } else {
11
10
  module = Ember.Debug;
12
11
  // eslint-disable-next-line ember/new-module-imports
13
12
  inspect = Ember.inspect;
@@ -1,10 +1,10 @@
1
- import Ember from '../ember';
1
+ import Ember, { Instrumentation } from '../ember';
2
2
 
3
3
  let module;
4
4
 
5
- try {
6
- module = requireModule('@ember/instrumentation');
7
- } catch {
5
+ if (Instrumentation) {
6
+ module = Instrumentation;
7
+ } else {
8
8
  module = Ember;
9
9
  }
10
10
 
@@ -1,14 +1,9 @@
1
- import Ember from '../../ember';
1
+ import Ember, { ObjectInternals } from '../../ember';
2
2
 
3
- let module;
4
-
5
- try {
6
- module = requireModule('@ember/object/internals');
7
- } catch {
8
- module = Ember;
9
- }
10
-
11
- let { cacheFor, guidFor: emberGuidFor } = module;
3
+ // eslint-disable-next-line ember/new-module-imports
4
+ let cacheFor = ObjectInternals?.cacheFor ?? Ember.cacheFor;
5
+ // eslint-disable-next-line ember/new-module-imports
6
+ let emberGuidFor = ObjectInternals?.guidFor ?? Ember.guidFor;
12
7
 
13
8
  // it can happen that different ember apps/iframes have the same id for different objects
14
9
  // since the implementation is just a counter, so we add a prefix per iframe & app
@@ -1,4 +1,4 @@
1
- import Backburner from 'ember-debug/deps/backburner';
1
+ import Backburner from 'backburner.js';
2
2
 
3
3
  let currentRunLoop = null;
4
4
  export function _getCurrentRunLoop() {
@@ -1,21 +1,21 @@
1
- import Ember from '../ember';
1
+ import Ember, { Runloop as EmberRunloop } from '../ember';
2
2
  import * as runloop from './own-runloop';
3
3
 
4
+ // it could happen that runloop is available but _backburner is not exported (dead code)
5
+ // then we need to use our own.
4
6
  let module = runloop;
5
7
  let _backburner = runloop._backburner;
6
8
 
7
9
  const keys = ['cancel', 'debounce', 'join', 'later', 'scheduleOnce'];
8
10
 
9
- try {
10
- module = requireModule('@ember/runloop');
11
- // it could happen that runloop is available but _backburner is not exported (dead code)
12
- // then we need to use our own
13
- _backburner = module._backburner;
14
- } catch {
15
- // eslint-disable-next-line ember/new-module-imports
16
- _backburner = Ember?.run?.backburner || module._backburner;
11
+ if (EmberRunloop) {
12
+ module = EmberRunloop;
13
+ _backburner = EmberRunloop._backburner || EmberRunloop.backburner;
14
+ } else {
17
15
  // eslint-disable-next-line ember/new-module-imports
18
16
  module = Ember?.run || module;
17
+ // eslint-disable-next-line ember/new-module-imports
18
+ _backburner = Ember?.run?.backburner || _backburner;
19
19
  }
20
20
 
21
21
  if (!keys.every((k) => k in module)) {
@@ -1,5 +1,4 @@
1
1
  import { compareVersion } from 'ember-debug/utils/version';
2
- import { emberSafeRequire } from 'ember-debug/utils/ember/loader';
3
2
  import {
4
3
  VERSION,
5
4
  ActionHandler,
@@ -10,6 +9,8 @@ import {
10
9
  MutableArray,
11
10
  Component,
12
11
  Evented,
12
+ InternalsRuntime,
13
+ InternalsViews,
13
14
  PromiseProxyMixin,
14
15
  EmberObject,
15
16
  Observable,
@@ -33,14 +34,12 @@ const emberNames = new Map([
33
34
  ]);
34
35
 
35
36
  if (compareVersion(VERSION, '3.27.0') === -1) {
36
- const TargetActionSupport = emberSafeRequire(
37
- '@ember/-internals/runtime',
38
- )?.TargetActionSupport;
37
+ const TargetActionSupport = InternalsRuntime?.TargetActionSupport;
39
38
  emberNames.set(TargetActionSupport, 'TargetActionSupport Mixin');
40
39
  }
41
40
 
42
41
  try {
43
- const Views = emberSafeRequire('@ember/-internals/views') || {};
42
+ const Views = InternalsViews || {};
44
43
  emberNames.set(Views.ViewStateSupport, 'ViewStateSupport Mixin');
45
44
  emberNames.set(Views.ViewMixin, 'View Mixin');
46
45
  emberNames.set(Views.ActionSupport, 'ActionSupport Mixin');
@@ -1,5 +1,4 @@
1
- import { emberSafeRequire } from 'ember-debug/utils/ember/loader';
2
-
1
+ /* eslint-disable ember/new-module-imports */
3
2
  let Ember;
4
3
 
5
4
  try {
@@ -14,34 +13,65 @@ try {
14
13
  Ember = window.Ember;
15
14
  }
16
15
 
17
- let {
18
- ArrayProxy,
19
- Namespace,
20
- ActionHandler,
21
- ControllerMixin,
22
- CoreObject,
23
- Application,
24
- MutableArray,
25
- MutableEnumerable,
26
- NativeArray,
27
- Component,
28
- Observable,
29
- Evented,
30
- PromiseProxyMixin,
31
- Service,
32
- Object: EmberObject,
33
- ObjectProxy,
34
- VERSION,
35
- ComputedProperty,
36
- meta,
37
- get,
38
- set,
39
- computed,
40
- _captureRenderTree: captureRenderTree,
41
- } = Ember || {};
16
+ const wrappedRequire = function (id) {
17
+ try {
18
+ return Ember.__loader.require(id);
19
+ } catch {
20
+ return requireModule(id);
21
+ }
22
+ };
23
+
24
+ export function emberSafeRequire(id) {
25
+ try {
26
+ return wrappedRequire(id);
27
+ } catch {
28
+ return undefined;
29
+ }
30
+ }
31
+
32
+ let ArrayProxy = Ember.ArrayProxy;
33
+ let Namespace = Ember.Namespace;
34
+ let ActionHandler = Ember.ActionHandler;
35
+ let ControllerMixin = Ember.ControllerMixin;
36
+ let CoreObject = Ember.CoreObject;
37
+ let Application = Ember.Application;
38
+ let MutableArray = Ember.MutableArray;
39
+ let MutableEnumerable = Ember.MutableEnumerable;
40
+ let NativeArray = Ember.NativeArray;
41
+ let Component = Ember.Component;
42
+ let Observable = Ember.Observable;
43
+ let Evented = Ember.Evented;
44
+ let PromiseProxyMixin = Ember.PromiseProxyMixin;
45
+ let Service = Ember.Service;
46
+ let ObjectProxy = Ember.ObjectProxy;
47
+ let VERSION = Ember.VERSION;
48
+ let ComputedProperty = Ember.ComputedProperty;
49
+ let meta = Ember.meta;
50
+ let get = Ember.get;
51
+ let set = Ember.set;
52
+ let computed = Ember.computed;
53
+ let EmberObject = Ember.Object;
54
+ let captureRenderTree = Ember._captureRenderTree;
42
55
 
43
56
  let getEnv = () => Ember.ENV;
44
57
 
58
+ let Debug = emberSafeRequire('@ember/debug');
59
+ let InternalsMetal = emberSafeRequire('@ember/-internals/metal');
60
+ let InternalsRuntime = emberSafeRequire('@ember/-internals/runtime');
61
+ let InternalsUtils = emberSafeRequire('@ember/-internals/utils');
62
+ let InternalsViews = emberSafeRequire('@ember/-internals/views');
63
+ let EmberDestroyable = emberSafeRequire('@ember/destroyable');
64
+ let ObjectInternals = emberSafeRequire('@ember/object/internals');
65
+ let Instrumentation = emberSafeRequire('@ember/instrumentation');
66
+ let Runloop = emberSafeRequire('@ember/runloop');
67
+ 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');
74
+
45
75
  if (!Ember) {
46
76
  captureRenderTree = emberSafeRequire('@ember/debug')?.captureRenderTree;
47
77
  getEnv = emberSafeRequire('@ember/-internals/environment')?.getENV;
@@ -72,6 +102,15 @@ if (!Ember) {
72
102
  }
73
103
 
74
104
  export {
105
+ Runloop,
106
+ Debug,
107
+ InternalsMetal,
108
+ InternalsRuntime,
109
+ InternalsUtils,
110
+ InternalsViews,
111
+ ObjectInternals,
112
+ Instrumentation,
113
+ RSVP,
75
114
  ArrayProxy,
76
115
  Namespace,
77
116
  ActionHandler,
@@ -87,6 +126,7 @@ export {
87
126
  Evented,
88
127
  Service,
89
128
  PromiseProxyMixin,
129
+ EmberDestroyable,
90
130
  EmberObject,
91
131
  VERSION,
92
132
  ComputedProperty,
@@ -96,6 +136,12 @@ export {
96
136
  set,
97
137
  captureRenderTree,
98
138
  getEnv,
139
+ GlimmerComponent,
140
+ GlimmerManager,
141
+ GlimmerReference,
142
+ GlimmerRuntime,
143
+ GlimmerUtil,
144
+ GlimmerValidator,
99
145
  };
100
146
 
101
147
  export default Ember;