@surface/dependency-injection
Version:
Provides dependency injection capabilities.
21 lines (20 loc) • 790 B
JavaScript
const METADATA = Symbol("dependency-injection:static-metadata");
export default class StaticMetadata {
parameters = [];
properties = [];
provider;
static from(target) {
if (!Reflect.has(target, METADATA)) {
Reflect.defineProperty(target, METADATA, { configurable: false, enumerable: false, value: new StaticMetadata() });
}
else if (!target.hasOwnProperty(METADATA)) {
Reflect.defineProperty(target, METADATA, { configurable: false, enumerable: false, value: Reflect.get(target, METADATA).inherit() });
}
return Reflect.get(target, METADATA);
}
inherit() {
const clone = new StaticMetadata();
clone.properties.push(...this.properties);
return clone;
}
}