UNPKG

@surface/dependency-injection

Version:

Provides dependency injection capabilities.

21 lines (20 loc) 790 B
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; } }