Skip to content

Commit 545f883

Browse files
committed
Kill ContainerProxyMixin
1 parent 3e644c9 commit 545f883

File tree

9 files changed

+53
-146
lines changed

9 files changed

+53
-146
lines changed

broccoli/amd-compat-entrypoints/ember.debug.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,6 @@ d('@ember/-internals/runtime/index', emberinternalsRuntimeIndex);
5656
import * as emberinternalsRuntimeLibExtRsvp from '@ember/-internals/runtime/lib/ext/rsvp';
5757
d('@ember/-internals/runtime/lib/ext/rsvp', emberinternalsRuntimeLibExtRsvp);
5858

59-
import * as emberinternalsRuntimeLibMixinsContainerProxy from '@ember/-internals/runtime/lib/mixins/container_proxy';
60-
d(
61-
'@ember/-internals/runtime/lib/mixins/container_proxy',
62-
emberinternalsRuntimeLibMixinsContainerProxy
63-
);
64-
6559
import * as emberinternalsRuntimeLibMixinsRegistryProxy from '@ember/-internals/runtime/lib/mixins/registry_proxy';
6660
d(
6761
'@ember/-internals/runtime/lib/mixins/registry_proxy',

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@
205205
"@ember/-internals/routing/index.js": "ember-source/@ember/-internals/routing/index.js",
206206
"@ember/-internals/runtime/index.js": "ember-source/@ember/-internals/runtime/index.js",
207207
"@ember/-internals/runtime/lib/ext/rsvp.js": "ember-source/@ember/-internals/runtime/lib/ext/rsvp.js",
208-
"@ember/-internals/runtime/lib/mixins/container_proxy.js": "ember-source/@ember/-internals/runtime/lib/mixins/container_proxy.js",
209208
"@ember/-internals/runtime/lib/mixins/registry_proxy.js": "ember-source/@ember/-internals/runtime/lib/mixins/registry_proxy.js",
210209
"@ember/-internals/string/index.js": "ember-source/@ember/-internals/string/index.js",
211210
"@ember/-internals/utility-types/index.js": "ember-source/@ember/-internals/utility-types/index.js",
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export { default as RegistryProxyMixin } from './lib/mixins/registry_proxy';
2-
export { default as ContainerProxyMixin } from './lib/mixins/container_proxy';
32

43
export { default as RSVP, onerrorDefault } from './lib/ext/rsvp'; // just for side effect of extending Ember.RSVP

packages/@ember/-internals/runtime/lib/mixins/container_proxy.ts

Lines changed: 0 additions & 59 deletions
This file was deleted.

packages/@ember/-internals/runtime/tests/mixins/container_proxy_test.js

Lines changed: 0 additions & 70 deletions
This file was deleted.

packages/@ember/engine/instance.ts

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
*/
44

55
import EmberObject from '@ember/object';
6+
import { schedule, join } from '@ember/runloop';
67
import { RSVP } from '@ember/-internals/runtime';
78
import { assert } from '@ember/debug';
9+
import type { Container } from '@ember/-internals/container';
810
import { Registry, privatize as P } from '@ember/-internals/container';
911
import { guidFor } from '@ember/-internals/utils';
1012
import { ENGINE_PARENT, getEngineParent, setEngineParent } from './parent';
11-
import { ContainerProxyMixin, RegistryProxyMixin } from '@ember/-internals/runtime';
12-
import type { InternalOwner } from '@ember/-internals/owner';
13+
import { RegistryProxyMixin } from '@ember/-internals/runtime';
14+
import type { ContainerProxy, InternalOwner, RegisterOptions } from '@ember/-internals/owner';
1315
import type Owner from '@ember/-internals/owner';
1416
import { type FullName, isFactory } from '@ember/-internals/owner';
1517
import type Engine from '@ember/engine';
@@ -41,18 +43,21 @@ export interface EngineInstanceOptions {
4143
@class EngineInstance
4244
@extends EmberObject
4345
@uses RegistryProxyMixin
44-
@uses ContainerProxyMixin
4546
*/
4647

48+
// TODO: Update this comment
4749
// Note on types: since `EngineInstance` uses `RegistryProxyMixin` and
4850
// `ContainerProxyMixin`, which respectively implement the same `RegistryMixin`
4951
// and `ContainerMixin` types used to define `InternalOwner`, this is the same
5052
// type as `InternalOwner` from TS's POV. The point of the explicit `extends`
5153
// clauses for `InternalOwner` and `Owner` is to keep us honest: if this stops
5254
// type checking, we have broken part of our public API contract. Medium-term,
5355
// the goal here is to `EngineInstance` simple be `Owner`.
54-
interface EngineInstance extends RegistryProxyMixin, ContainerProxyMixin, InternalOwner, Owner {}
55-
class EngineInstance extends EmberObject.extend(RegistryProxyMixin, ContainerProxyMixin) {
56+
interface EngineInstance extends RegistryProxyMixin, InternalOwner, Owner {}
57+
class EngineInstance
58+
extends EmberObject.extend(RegistryProxyMixin)
59+
implements ContainerProxy, InternalOwner, Owner
60+
{
5661
/**
5762
@private
5863
@method setupRegistry
@@ -256,6 +261,47 @@ class EngineInstance extends EmberObject.extend(RegistryProxyMixin, ContainerPro
256261
this.register(key, singleton, { instantiate: false });
257262
});
258263
}
264+
265+
// Container Proxy
266+
267+
/**
268+
The container stores state.
269+
270+
@private
271+
@property {Ember.Container} __container__
272+
*/
273+
declare __container__: Container;
274+
275+
ownerInjection() {
276+
return this.__container__.ownerInjection();
277+
}
278+
279+
destroy() {
280+
let container = this.__container__;
281+
282+
if (container) {
283+
join(() => {
284+
container.destroy();
285+
schedule('destroy', container, 'finalizeDestroy');
286+
});
287+
}
288+
289+
return super.destroy();
290+
}
259291
}
260292

293+
// MEGAHAX: This is really nasty, but if we don't define the functions this way, we need to provide types.
294+
// If we provide types, for reasons I don't understand, they somehow break the interface.
295+
// Adding the methods this way allows us to keep the types defined by the interface.
296+
297+
// @ts-expect-error This is a huge hack to avoid type issues.
298+
EngineInstance.prototype.lookup = function lookup(fullName: FullName, options?: RegisterOptions) {
299+
return this.__container__.lookup(fullName, options);
300+
};
301+
302+
// @ts-expect-error This is a huge hack to avoid type issues
303+
EngineInstance.prototype.factoryFor = function factoryFor(fullName: FullName) {
304+
return this.__container__.factoryFor(fullName);
305+
};
306+
261307
export default EngineInstance;

packages/ember/barrel.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import {
4141
sendEvent as emberSendEvent,
4242
} from '@ember/object/events';
4343

44-
import { RegistryProxyMixin, ContainerProxyMixin, RSVP as _RSVP } from '@ember/-internals/runtime';
44+
import { RegistryProxyMixin, RSVP as _RSVP } from '@ember/-internals/runtime';
4545
import {
4646
componentCapabilities,
4747
modifierCapabilities,
@@ -161,7 +161,6 @@ namespace Ember {
161161
export const libraries = metal.libraries;
162162

163163
// ****@ember/-internals/runtime****
164-
export const _ContainerProxyMixin = ContainerProxyMixin;
165164
export const _RegistryProxyMixin = RegistryProxyMixin;
166165

167166
// ****@ember/-internals/view****

packages/ember/tests/reexports_test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,6 @@ let allExports = [
319319
],
320320
['_Input', '@ember/-internals/glimmer', 'Input', test56],
321321
['_RegistryProxyMixin', '@ember/-internals/runtime', 'RegistryProxyMixin', test57],
322-
['_ContainerProxyMixin', '@ember/-internals/runtime', 'ContainerProxyMixin', test57],
323322
['controllerFor', '@ember/-internals/routing', null, test58],
324323
['generateControllerFactory', '@ember/-internals/routing', null, test58],
325324
['generateController', '@ember/-internals/routing', null, test58],

tests/node/helpers/build-owner.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = function buildOwner(Ember, resolver) {
2-
let Owner = Ember.Object.extend(Ember._RegistryProxyMixin, Ember._ContainerProxyMixin);
2+
let Owner = Ember.Object.extend(Ember._RegistryProxyMixin);
33

44
let namespace = Ember.Object.create({
55
Resolver: {

0 commit comments

Comments
 (0)