@opra/core
Version:
Opra schema package
31 lines (30 loc) • 1.08 kB
JavaScript
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 = {}));