UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

75 lines 2.22 kB
"use strict"; 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