UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

65 lines 1.81 kB
import { __decorate, __metadata } from "tslib"; import { AsyncEventEmitter } from '../_internal/AsyncEventEmitter'; import { v4 as uuidv4 } from 'uuid'; import { SerializableMember, SerializableObject } from '../data/decorators'; /** * Service is accessible by each {@link Node} inside the {@link Model} */ let Service = class Service extends 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 uuidv4(); } 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); } } }; __decorate([SerializableMember(), __metadata("design:type", String)], Service.prototype, "uid", void 0); Service = __decorate([SerializableObject(), __metadata("design:paramtypes", [Object])], Service); export { Service };