debuggable-service.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import {Service} from './service.js';
  2. import {Debuggable} from '@e22m4u/js-debug';
  3. import {ServiceContainer} from './service-container.js';
  4. /**
  5. * Debuggable service.
  6. */
  7. export class DebuggableService extends Debuggable {
  8. /**
  9. * Kinds.
  10. *
  11. * @type {string[]}
  12. */
  13. static kinds = Service.kinds;
  14. /**
  15. * Service.
  16. *
  17. * @type {Service}
  18. */
  19. _service;
  20. /**
  21. * Container.
  22. *
  23. * @type {ServiceContainer}
  24. */
  25. get container() {
  26. return this._service.container;
  27. }
  28. /**
  29. * Получить существующий или новый экземпляр.
  30. *
  31. * @type {Service['getService']}
  32. */
  33. get getService() {
  34. return this._service.getService;
  35. }
  36. /**
  37. * Получить существующий или новый экземпляр,
  38. * только если конструктор зарегистрирован.
  39. *
  40. * @type {Service['getRegisteredService']}
  41. */
  42. get getRegisteredService() {
  43. return this._service.getRegisteredService;
  44. }
  45. /**
  46. * Проверка существования конструктора в контейнере.
  47. *
  48. * @type {Service['hasService']}
  49. */
  50. get hasService() {
  51. return this._service.hasService;
  52. }
  53. /**
  54. * Добавить конструктор в контейнер.
  55. *
  56. * @type {Service['addService']}
  57. */
  58. get addService() {
  59. return this._service.addService;
  60. }
  61. /**
  62. * Добавить конструктор и создать экземпляр.
  63. *
  64. * @type {Service['useService']}
  65. */
  66. get useService() {
  67. return this._service.useService;
  68. }
  69. /**
  70. * Добавить конструктор и связанный экземпляр.
  71. *
  72. * @type {Service['setService']}
  73. */
  74. get setService() {
  75. return this._service.setService;
  76. }
  77. /**
  78. * Constructor.
  79. *
  80. * @param {ServiceContainer|undefined} container
  81. * @param {import('@e22m4u/js-debug').DebuggableOptions|undefined} options
  82. */
  83. constructor(container = undefined, options = undefined) {
  84. super(options);
  85. this._service = new Service(container);
  86. }
  87. }