consul/ui/packages/consul-ui/app/services/container.js

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;
}
}