@openhps/core
Version:
Open Hybrid Positioning System - Core component
75 lines • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Service = void 0;
const tslib_1 = require("tslib");
const AsyncEventEmitter_1 = require("../_internal/AsyncEventEmitter");
const uuid_1 = require("uuid");
const decorators_1 = require("../data/decorators");
/**
* Service is accessible by each {@link Node} inside the {@link Model}
*/
let Service = class Service extends AsyncEventEmitter_1.AsyncEventEmitter {
constructor(options = {}) {
var _a;
super();
this._ready = false;
/**
* Dependencies that need to be resolved before the service is ready
*/
this.dependencies = [];
this.uid = (_a = options.uid) !== null && _a !== void 0 ? _a : this.constructor.name;
this.prependOnceListener('ready', () => {
this._ready = true;
});
}
/**
* Add a dependency to the service
* @param dependency Service dependency
* @returns {this} Service instance
*/
addDependency(dependency) {
this.dependencies.push(dependency);
return this;
}
generateUUID() {
return (0, uuid_1.v4)();
}
setUID(uid) {
this.uid = uid;
return this;
}
isReady() {
return this._ready;
}
emit(name, ...args) {
return super.emit(name, ...args);
}
once(name, listener) {
if (name === 'ready' && this.isReady()) {
listener();
return this;
}
return super.once(name, listener);
}
/**
* Graph logger
* @param {string} level Logging level
* @param {string} message Message
* @param {any} data Data to include in log
*/
logger(level, message, data) {
if (this.model) {
this.model.logger(level, message, data);
}
}
};
exports.Service = Service;
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", String)
], Service.prototype, "uid", void 0);
exports.Service = Service = tslib_1.__decorate([
(0, decorators_1.SerializableObject)(),
tslib_1.__metadata("design:paramtypes", [Object])
], Service);
//# sourceMappingURL=Service.js.map