service.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {ServiceContainer} from './service-container.js';
  2. /**
  3. * Service.
  4. */
  5. export class Service {
  6. /**
  7. * Container.
  8. *
  9. * @type {ServiceContainer}
  10. */
  11. container;
  12. /**
  13. * Constructor.
  14. *
  15. * @param {ServiceContainer|undefined} container
  16. */
  17. constructor(container = undefined) {
  18. this.container =
  19. container instanceof ServiceContainer
  20. ? container
  21. : new ServiceContainer();
  22. }
  23. /**
  24. * Get service.
  25. *
  26. * @param {any} ctor
  27. * @param {any} args
  28. * @return {any}
  29. */
  30. getService(ctor, ...args) {
  31. return this.container.get(ctor, ...args);
  32. }
  33. /**
  34. * Has service.
  35. *
  36. * @param {any} ctor
  37. * @return {boolean}
  38. */
  39. hasService(ctor) {
  40. return this.container.has(ctor);
  41. }
  42. /**
  43. * Add service.
  44. *
  45. * @param {any} ctor
  46. * @param {any} args
  47. * @return {this}
  48. */
  49. addService(ctor, ...args) {
  50. this.container.add(ctor, ...args);
  51. return this;
  52. }
  53. /**
  54. * Use service.
  55. *
  56. * @param {any} ctor
  57. * @param {any} args
  58. * @return {this}
  59. */
  60. useService(ctor, ...args) {
  61. this.container.use(ctor, ...args);
  62. return this;
  63. }
  64. }