plugin.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import {
  4. getBaseUrl, getConfigOption
  5. } from 'jupyter-js-utils';
  6. import {
  7. IKernel, ISession, IContentsManager,
  8. ContentsManager, KernelManager, SessionManager,
  9. getKernelSpecs, IAjaxSettings
  10. } from 'jupyter-js-services';
  11. import {
  12. TerminalManager
  13. } from '../terminal';
  14. /**
  15. * An implementation of a services provider.
  16. */
  17. export
  18. class JupyterServices {
  19. /**
  20. * Construct a new services provider.
  21. */
  22. constructor(baseUrl: string, ajaxSettings: IAjaxSettings, specs: IKernel.ISpecModels) {
  23. let options = { baseUrl, ajaxSettings };
  24. this._kernelspecs = specs;
  25. this._kernelManager = new KernelManager(options);
  26. this._sessionManager = new SessionManager(options);
  27. this._contentsManager = new ContentsManager(baseUrl, ajaxSettings);
  28. this._terminalManager = new TerminalManager(options);
  29. }
  30. /**
  31. * Get kernel specs.
  32. */
  33. get kernelspecs(): IKernel.ISpecModels {
  34. return this._kernelspecs;
  35. }
  36. /**
  37. * Get kernel manager instance.
  38. *
  39. * #### Notes
  40. * This is a read-only property.
  41. */
  42. get kernelManager(): IKernel.IManager {
  43. return this._kernelManager;
  44. }
  45. /**
  46. * Get the session manager instance.
  47. *
  48. * #### Notes
  49. * This is a read-only property.
  50. */
  51. get sessionManager(): ISession.IManager {
  52. return this._sessionManager;
  53. }
  54. /**
  55. * Get the contents manager instance.
  56. *
  57. * #### Notes
  58. * This is a read-only property.
  59. */
  60. get contentsManager(): IContentsManager {
  61. return this._contentsManager;
  62. }
  63. /**
  64. * Get the terminal manager instance.
  65. *
  66. * #### Notes
  67. * This is a read-only property.
  68. */
  69. get terminalManager(): TerminalManager {
  70. return this._terminalManager;
  71. }
  72. private _kernelManager: IKernel.IManager = null;
  73. private _sessionManager: ISession.IManager = null;
  74. private _contentsManager: IContentsManager = null;
  75. private _terminalManager: TerminalManager = null;
  76. private _kernelspecs: IKernel.ISpecModels = null;
  77. }
  78. /**
  79. * The default services provider.
  80. */
  81. export
  82. const servicesProvider = {
  83. id: 'jupyter.services.services',
  84. provides: JupyterServices,
  85. resolve: () => {
  86. let baseUrl = getBaseUrl();
  87. let ajaxSettings = getConfigOption('ajaxSettings');
  88. let options = { baseUrl, ajaxSettings };
  89. return getKernelSpecs(options).then(specs => {
  90. return new JupyterServices(baseUrl, ajaxSettings, specs);
  91. });
  92. }
  93. };