42 lines
936 B
JavaScript
42 lines
936 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Service from '@ember/service';
|
|
|
|
export default class ContainerService extends Service {
|
|
constructor(owner) {
|
|
super(...arguments);
|
|
this._owner = owner;
|
|
this._wm = new WeakMap();
|
|
}
|
|
|
|
set(key, value) {
|
|
this._wm.set(value, key);
|
|
}
|
|
|
|
// vaguely private, used publicly for debugging purposes
|
|
keyForClass(cls) {
|
|
return this._wm.get(cls);
|
|
}
|
|
|
|
get(key) {
|
|
if (typeof key !== 'string') {
|
|
key = this.keyForClass(key);
|
|
}
|
|
return this.lookup(key);
|
|
}
|
|
|
|
lookup(key) {
|
|
return this._owner.lookup(key);
|
|
}
|
|
|
|
resolveRegistration(key) {
|
|
// ember resolveRegistration returns an ember flavoured class extending
|
|
// from the actual class, access the actual class from the
|
|
// prototype/parent which is what decorators pass through as target
|
|
return this._owner.resolveRegistration(key).prototype;
|
|
}
|
|
}
|