UNPKG

@opra/core

Version:
31 lines (30 loc) 1.08 kB
export class ServiceBase { get context() { this._assertContext(); return this._context; } for(context, overwriteProperties, overwriteContext) { if (context instanceof ServiceBase) context = context.context; /** Create new context instance */ const ctx = {}; Object.setPrototypeOf(ctx, context); if (overwriteContext) Object.assign(ctx, overwriteContext); /** Create new service instance */ const instance = { _context: ctx }; Object.setPrototypeOf(instance, this); if (overwriteProperties) Object.assign(instance, overwriteProperties); if (this[ServiceBase.extendSymbol]) this[ServiceBase.extendSymbol](instance); return instance; } _assertContext() { if (!this._context) throw new Error(`No context assigned for ${Object.getPrototypeOf(this).constructor.name}`); } } (function (ServiceBase) { ServiceBase.extendSymbol = Symbol('extend'); })(ServiceBase || (ServiceBase = {}));