Forráskód Böngészése

Update source for services 0.20

Steven Silvester 8 éve
szülő
commit
00a72818e4

+ 1 - 1
src/codemirror/index.ts

@@ -68,7 +68,7 @@ function requireMode(mode: string | CodeMirror.modespec): Promise<CodeMirror.mod
 
   // Fetch the mode asynchronously.
   return new Promise<CodeMirror.modespec>((resolve, reject) => {
-    require([`codemirror/mode/${info.mode}/${info.mode}`], () => {
+    (require as any)([`codemirror/mode/${info.mode}/${info.mode}`], () => {
       resolve(info);
     });
   });

+ 1 - 1
src/console/panel.ts

@@ -103,7 +103,7 @@ class ConsolePanel extends Panel {
     if (!session.kernel) {
       this.dispose();
     }
-    session.kernel.getKernelSpec().then(spec => {
+    session.kernel.getSpec().then(spec => {
       let name = spec.display_name;
       return showDialog({
         title: 'Shut down kernel?',

+ 7 - 7
src/console/plugin.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  ContentsManager, IKernel, ISession, utils
+  ContentsManager, Kernel, ISession, Session, utils
 } from 'jupyter-js-services';
 
 import {
@@ -96,7 +96,7 @@ const CONSOLE_ICON_CLASS = 'jp-ImageConsole';
 interface ICreateConsoleArgs extends JSONObject {
   sessionId?: string;
   path?: string;
-  kernel: IKernel.IModel;
+  kernel: Kernel.IModel;
   preferredLanguage?: string;
 }
 
@@ -253,7 +253,7 @@ function activateConsole(app: JupyterLab, services: IServiceManager, rendermime:
           return;
         }
         // Start the session.
-        let options: ISession.IOptions = {
+        let options: Session.IOptions = {
           path,
           kernelName: kernel.name,
           kernelId: kernel.id
@@ -282,11 +282,11 @@ function activateConsole(app: JupyterLab, services: IServiceManager, rendermime:
   /**
    * Get the kernel given the create args.
    */
-  function getKernel(args: ICreateConsoleArgs): Promise<IKernel.IModel> {
+  function getKernel(args: ICreateConsoleArgs): Promise<Kernel.IModel> {
     if (args.kernel) {
       return Promise.resolve(args.kernel);
     }
-    return manager.listRunning().then((sessions: ISession.IModel[]) => {
+    return manager.listRunning().then((sessions: Session.IModel[]) => {
       let options = {
         name: 'New Console',
         specs,
@@ -358,7 +358,7 @@ function activateConsole(app: JupyterLab, services: IServiceManager, rendermime:
       if (session.kernel) {
         lang = specs.kernelspecs[session.kernel.name].spec.language;
       }
-      manager.listRunning().then((sessions: ISession.IModel[]) => {
+      manager.listRunning().then((sessions: Session.IModel[]) => {
         let options = {
           name: widget.parent.title.label,
           specs,
@@ -368,7 +368,7 @@ function activateConsole(app: JupyterLab, services: IServiceManager, rendermime:
           host: widget.parent.node
         };
         return selectKernel(options);
-      }).then((kernelId: IKernel.IModel) => {
+      }).then((kernelId: Kernel.IModel) => {
         if (kernelId) {
           session.changeKernel(kernelId);
         } else {

+ 2 - 2
src/csvwidget/widget.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -219,7 +219,7 @@ class CSVWidgetFactory extends ABCWidgetFactory<CSVWidget, IDocumentModel> {
   /**
    * Create a new widget given a context.
    */
-  createNew(context: IDocumentContext<IDocumentModel>, kernel?: IKernel.IModel): CSVWidget {
+  createNew(context: IDocumentContext<IDocumentModel>, kernel?: Kernel.IModel): CSVWidget {
     let widget = new CSVWidget(context);
     this.widgetCreated.emit(widget);
     return widget;

+ 17 - 16
src/docmanager/context.ts

@@ -2,7 +2,8 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  ContentsManager, IContents, IKernel, IServiceManager, ISession, utils
+  ContentsManager, Contents, IKernel, IServiceManager, ISession, utils,
+  Kernel, Session
 } from 'jupyter-js-services';
 
 import {
@@ -69,7 +70,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * A signal emitted when the model is saved or reverted.
    */
-  contentsModelChanged: ISignal<IDocumentContext<T>, IContents.IModel>;
+  contentsModelChanged: ISignal<IDocumentContext<T>, Contents.IModel>;
 
   /**
    * A signal emitted when the context is fully populated for the first time.
@@ -115,7 +116,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
    * This is a read-only property.  The model will have an
    * empty `contents` field.
    */
-  get contentsModel(): IContents.IModel {
+  get contentsModel(): Contents.IModel {
     return this._contentsModel;
   }
 
@@ -125,7 +126,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
    * #### Notes
    * This is a read-only property.
    */
-  get kernelspecs(): IKernel.ISpecModels {
+  get kernelspecs(): Kernel.ISpecModels {
     return this._manager.kernelspecs;
   }
 
@@ -173,14 +174,14 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * Change the current kernel associated with the document.
    */
-  changeKernel(options: IKernel.IModel): Promise<IKernel> {
+  changeKernel(options: Kernel.IModel): Promise<IKernel> {
     let session = this._session;
     if (options) {
       if (session) {
         return session.changeKernel(options);
       } else {
         let path = this._path;
-        let sOptions: ISession.IOptions = {
+        let sOptions: Session.IOptions = {
           path,
           kernelName: options.name,
           kernelId: options.id
@@ -261,7 +262,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
       this.setPath(newPath);
       let session = this._session;
       if (session) {
-        let options: ISession.IOptions = {
+        let options: Session.IOptions = {
           path: newPath,
           kernelId: session.kernel.id,
           kernelName: session.kernel.name
@@ -278,7 +279,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
    * Revert the document contents to disk contents.
    */
   revert(): Promise<void> {
-    let opts: IContents.IFetchOptions = {
+    let opts: Contents.IFetchOptions = {
       format: this._factory.fileFormat,
       type: this._factory.fileType,
       content: true
@@ -308,7 +309,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * Create a checkpoint for the file.
    */
-  createCheckpoint(): Promise<IContents.ICheckpointModel> {
+  createCheckpoint(): Promise<Contents.ICheckpointModel> {
     return this._manager.contents.createCheckpoint(this._path);
   }
 
@@ -340,14 +341,14 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * List available checkpoints for a file.
    */
-  listCheckpoints(): Promise<IContents.ICheckpointModel[]> {
+  listCheckpoints(): Promise<Contents.ICheckpointModel[]> {
     return this._manager.contents.listCheckpoints(this._path);
   }
 
   /**
    * Get the list of running sessions.
    */
-  listSessions(): Promise<ISession.IModel[]> {
+  listSessions(): Promise<Session.IModel[]> {
     return this._manager.sessions.listRunning();
   }
 
@@ -380,7 +381,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * Start a session and set up its signals.
    */
-  private _startSession(options: ISession.IOptions): Promise<IKernel> {
+  private _startSession(options: Session.IOptions): Promise<IKernel> {
     return this._manager.sessions.startNew(options).then(session => {
       if (this._session) {
         this._session.dispose();
@@ -402,8 +403,8 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * Update our contents model, without the content.
    */
-  private _updateContentsModel(model: IContents.IModel): void {
-    let newModel: IContents.IModel = {
+  private _updateContentsModel(model: Contents.IModel): void {
+    let newModel: Contents.IModel = {
       path: model.path,
       name: model.name,
       type: model.type,
@@ -423,7 +424,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   /**
    * Handle a change to the running sessions.
    */
-  private _onSessionsChanged(sender: ISession.IManager, models: ISession.IModel[]): void {
+  private _onSessionsChanged(sender: Session.IManager, models: Session.IModel[]): void {
     let session = this._session;
     if (!session) {
       return;
@@ -460,7 +461,7 @@ class Context<T extends IDocumentModel> implements IDocumentContext<T> {
   private _factory: IModelFactory<T> = null;
   private _saver: SaveHandler = null;
   private _isPopulated = false;
-  private _contentsModel: IContents.IModel = null;
+  private _contentsModel: Contents.IModel = null;
 }
 
 

+ 5 - 5
src/docmanager/manager.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  ContentsManager, IKernel, IServiceManager, ISession
+  ContentsManager, Kernel, IServiceManager, Session
 } from 'jupyter-js-services';
 
 import {
@@ -73,7 +73,7 @@ class DocumentManager implements IDisposable {
    * #### Notes
    * This is a read-only property.
    */
-  get kernelspecs(): IKernel.ISpecModels {
+  get kernelspecs(): Kernel.ISpecModels {
     return this._serviceManager.kernelspecs;
   }
 
@@ -119,7 +119,7 @@ class DocumentManager implements IDisposable {
    *
    * @param kernel - An optional kernel name/id to override the default.
    */
-  open(path: string, widgetName='default', kernel?: IKernel.IModel): Widget {
+  open(path: string, widgetName='default', kernel?: Kernel.IModel): Widget {
     let registry = this._registry;
     if (widgetName === 'default') {
       widgetName = registry.defaultWidgetFactory(ContentsManager.extname(path));
@@ -147,7 +147,7 @@ class DocumentManager implements IDisposable {
    *
    * @param kernel - An optional kernel name/id to override the default.
    */
-  createNew(path: string, widgetName='default', kernel?: IKernel.IModel): Widget {
+  createNew(path: string, widgetName='default', kernel?: Kernel.IModel): Widget {
     let registry = this._registry;
     if (widgetName === 'default') {
       widgetName = registry.defaultWidgetFactory(ContentsManager.extname(path));
@@ -165,7 +165,7 @@ class DocumentManager implements IDisposable {
   /**
    * List the running notebook sessions.
    */
-  listSessions(): Promise<ISession.IModel[]> {
+  listSessions(): Promise<Session.IModel[]> {
     return this._serviceManager.sessions.listRunning();
   }
 

+ 2 - 2
src/docmanager/widgetmanager.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -89,7 +89,7 @@ class DocumentWidgetManager implements IDisposable {
   /**
    * Create a widget for a document and handle its lifecycle.
    */
-  createWidget(name: string, context: IDocumentContext<IDocumentModel>, kernel?: IKernel.IModel): Widget {
+  createWidget(name: string, context: IDocumentContext<IDocumentModel>, kernel?: Kernel.IModel): Widget {
     let factory = this._registry.getWidgetFactory(name);
     let widget = factory.createNew(context, kernel);
     Private.nameProperty.set(widget, name);

+ 6 - 6
src/docregistry/default.ts

@@ -7,7 +7,7 @@ import * as CodeMirror
 import 'codemirror/mode/meta';
 
 import {
-  IContents, IKernel
+  Contents, Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -186,7 +186,7 @@ class TextModelFactory implements IModelFactory<IDocumentModel> {
    * #### Notes
    * This is a read-only property.
    */
-  get fileType(): IContents.FileType {
+  get fileType(): Contents.FileType {
     return 'file';
   }
 
@@ -195,7 +195,7 @@ class TextModelFactory implements IModelFactory<IDocumentModel> {
    *
    * This is a read-only property.
    */
-  get fileFormat(): IContents.FileFormat {
+  get fileFormat(): Contents.FileFormat {
     return 'text';
   }
 
@@ -259,7 +259,7 @@ class Base64ModelFactory extends TextModelFactory {
    * #### Notes
    * This is a read-only property.
    */
-  get fileType(): IContents.FileType {
+  get fileType(): Contents.FileType {
     return 'file';
   }
 
@@ -268,7 +268,7 @@ class Base64ModelFactory extends TextModelFactory {
    *
    * This is a read-only property.
    */
-  get fileFormat(): IContents.FileFormat {
+  get fileFormat(): Contents.FileFormat {
     return 'base64';
   }
 }
@@ -304,7 +304,7 @@ abstract class ABCWidgetFactory<T extends Widget, U extends IDocumentModel> impl
    * #### Notes
    * It should emit the [widgetCreated] signal with the new widget.
    */
-  abstract createNew(context: IDocumentContext<U>, kernel?: IKernel.IModel): T;
+  abstract createNew(context: IDocumentContext<U>, kernel?: Kernel.IModel): T;
 
   private _isDisposed = false;
 }

+ 13 - 13
src/docregistry/interfaces.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents, IKernel, ISession
+  Contents, IKernel, Session, Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -113,7 +113,7 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
   /**
    * A signal emitted when the contentsModel changes.
    */
-  contentsModelChanged: ISignal<IDocumentContext<T>, IContents.IModel>;
+  contentsModelChanged: ISignal<IDocumentContext<T>, Contents.IModel>;
 
   /**
    * A signal emitted when the context is fully populated for the first time.
@@ -157,7 +157,7 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
    * empty `contents` field.  It will be `null` until the
    * first save or load to disk.
    */
-  contentsModel: IContents.IModel;
+  contentsModel: Contents.IModel;
 
   /**
    * Get the kernel spec information.
@@ -165,7 +165,7 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
    * #### Notes
    * This is a read-only property.
    */
-  kernelspecs: IKernel.ISpecModels;
+  kernelspecs: Kernel.ISpecModels;
 
   /**
    * Test whether the context is fully populated.
@@ -181,7 +181,7 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
    * #### Notes
    * If no options are given, the session is shut down.
    */
-  changeKernel(options?: IKernel.IModel): Promise<IKernel>;
+  changeKernel(options?: Kernel.IModel): Promise<IKernel>;
 
   /**
    * Save the document contents to disk.
@@ -204,7 +204,7 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
    * @returns A promise which resolves with the new checkpoint model when the
    *   checkpoint is created.
    */
-  createCheckpoint(): Promise<IContents.ICheckpointModel>;
+  createCheckpoint(): Promise<Contents.ICheckpointModel>;
 
   /**
    * Delete a checkpoint for the file.
@@ -231,12 +231,12 @@ interface IDocumentContext<T extends IDocumentModel> extends IDisposable {
    * @returns A promise which resolves with a list of checkpoint models for
    *    the file.
    */
-  listCheckpoints(): Promise<IContents.ICheckpointModel[]>;
+  listCheckpoints(): Promise<Contents.ICheckpointModel[]>;
 
   /**
    * Get the list of running sessions.
    */
-  listSessions(): Promise<ISession.IModel[]>;
+  listSessions(): Promise<Session.IModel[]>;
 
   /**
    * Resolve a url to a correct server path.
@@ -327,7 +327,7 @@ interface IWidgetFactory<T extends Widget, U extends IDocumentModel> extends IDi
    * #### Notes
    * It should emit the [widgetCreated] signal with the new widget.
    */
-  createNew(context: IDocumentContext<U>, kernel?: IKernel.IModel): T;
+  createNew(context: IDocumentContext<U>, kernel?: Kernel.IModel): T;
 }
 
 
@@ -362,14 +362,14 @@ interface IModelFactory<T extends IDocumentModel> extends IDisposable {
    * #### Notes
    * This is a read-only property.
    */
-  fileType: IContents.FileType;
+  fileType: Contents.FileType;
 
   /**
    * The format of the file (default to `"text"`).
    *
    * This is a read-only property.
    */
-  fileFormat: IContents.FileFormat;
+  fileFormat: Contents.FileFormat;
 
   /**
    * Create a new model for a given path.
@@ -437,12 +437,12 @@ interface IFileType {
   /**
    * The type of the new file (defaults to `"file"`).
    */
-  fileType?: IContents.FileType;
+  fileType?: Contents.FileType;
 
   /**
    * The format of the new file (default to `"text"`).
    */
-  fileFormat?: IContents.FileFormat;
+  fileFormat?: Contents.FileFormat;
 }
 
 

+ 12 - 12
src/docregistry/kernelselector.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel, ISession
+  Kernel, Session
 } from 'jupyter-js-services';
 
 import {
@@ -27,12 +27,12 @@ interface IKernelSelection {
   /**
    * The kernel spec information.
    */
-  specs: IKernel.ISpecModels;
+  specs: Kernel.ISpecModels;
 
   /**
    * The current running sessions.
    */
-  sessions: ISession.IModel[];
+  sessions: Session.IModel[];
 
   /**
    * The desired kernel language.
@@ -42,7 +42,7 @@ interface IKernelSelection {
   /**
    * The optional existing kernel id.
    */
-  kernel?: IKernel.IModel;
+  kernel?: Kernel.IModel;
 
   /**
    * The host node for the dialog.
@@ -59,12 +59,12 @@ interface IPopulateOptions {
    /**
     * The Kernel specs.
     */
-  specs: IKernel.ISpecModels;
+  specs: Kernel.ISpecModels;
 
   /**
    * The current running sessions.
    */
-  sessions: ISession.IModel[];
+  sessions: Session.IModel[];
 
   /**
    * The preferred kernel name.
@@ -82,7 +82,7 @@ interface IPopulateOptions {
  * Bring up a dialog to select a kernel.
  */
 export
-function selectKernel(options: IKernelSelection): Promise<IKernel.IModel> {
+function selectKernel(options: IKernelSelection): Promise<Kernel.IModel> {
   let { specs, kernel, sessions, preferredLanguage } = options;
 
   // Create the dialog body.
@@ -108,7 +108,7 @@ function selectKernel(options: IKernelSelection): Promise<IKernel.IModel> {
   }).then(result => {
     // Change the kernel if a kernel was selected.
     if (result.text === 'SELECT') {
-      return JSON.parse(selector.value) as IKernel.IModel;
+      return JSON.parse(selector.value) as Kernel.IModel;
     }
     return void 0;
   });
@@ -142,7 +142,7 @@ function selectKernelForContext(context: IDocumentContext<IDocumentModel>, host?
  * Get the appropriate kernel name.
  */
 export
-function findKernel(kernelName: string, language: string, specs: IKernel.ISpecModels): string {
+function findKernel(kernelName: string, language: string, specs: Kernel.ISpecModels): string {
   if (kernelName === 'unknown') {
     return specs.default;
   }
@@ -265,7 +265,7 @@ function populateKernels(node: HTMLSelectElement, options: IPopulateOptions): vo
     node.appendChild(createSeparatorOption(maxLength));
   }
   // Add the sessions using the preferred language first.
-  let matchingSessions: ISession.IModel[] = [];
+  let matchingSessions: Session.IModel[] = [];
   if (preferredLanguage) {
     for (let session of sessions) {
       if (languages[session.kernel.name] === preferredLanguage) {
@@ -284,7 +284,7 @@ function populateKernels(node: HTMLSelectElement, options: IPopulateOptions): vo
     }
   }
   // Add the other remaining sessions.
-  let otherSessions: ISession.IModel[] = [];
+  let otherSessions: Session.IModel[] = [];
   for (let session of sessions) {
     if (matchingSessions.indexOf(session) === -1) {
       otherSessions.push(session);
@@ -327,7 +327,7 @@ function optionForName(name: string, displayName: string): HTMLOptionElement {
 /**
  * Create an option element for a session.
  */
-function optionForSession(session: ISession.IModel, displayName: string, maxLength: number): HTMLOptionElement {
+function optionForSession(session: Session.IModel, displayName: string, maxLength: number): HTMLOptionElement {
   let option = document.createElement('option');
   let sessionName = session.notebook.path.split('/').pop();
   if (sessionName.length > maxLength) {

+ 2 - 2
src/editorwidget/widget.ts

@@ -7,7 +7,7 @@ import * as CodeMirror
 import 'codemirror/mode/meta';
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -131,7 +131,7 @@ class EditorWidgetFactory extends ABCWidgetFactory<EditorWidget, IDocumentModel>
   /**
    * Create a new widget given a context.
    */
-  createNew(context: IDocumentContext<IDocumentModel>, kernel?: IKernel.IModel): EditorWidget {
+  createNew(context: IDocumentContext<IDocumentModel>, kernel?: Kernel.IModel): EditorWidget {
     if (kernel) {
       context.changeKernel(kernel);
     }

+ 2 - 2
src/filebrowser/browser.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents
+  Contents
 } from 'jupyter-js-services';
 
 import {
@@ -224,7 +224,7 @@ class FileBrowserWidget extends Widget {
   /**
    * Create a new untitled file in the current directory.
    */
-  createNew(options: IContents.ICreateOptions): Promise<Widget> {
+  createNew(options: Contents.ICreateOptions): Promise<Widget> {
     let model = this.model;
     return model.newUntitled(options).then(contents => {
       return this._buttons.createNew(contents.path);

+ 3 - 3
src/filebrowser/buttons.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -169,7 +169,7 @@ class FileButtons extends Widget {
   /**
    * Open a file by path.
    */
-  open(path: string, widgetName='default', kernel?: IKernel.IModel): Widget {
+  open(path: string, widgetName='default', kernel?: Kernel.IModel): Widget {
     let widget = this._manager.findWidget(path, widgetName);
     if (!widget) {
       widget = this._manager.open(path, widgetName, kernel);
@@ -180,7 +180,7 @@ class FileButtons extends Widget {
   /**
    * Create a new file by path.
    */
-  createNew(path: string, widgetName='default', kernel?: IKernel.IModel): Widget {
+  createNew(path: string, widgetName='default', kernel?: Kernel.IModel): Widget {
     let widget = this._manager.createNew(path, widgetName, kernel);
     return this._open(widget);
   }

+ 16 - 16
src/filebrowser/dialogs.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents, IKernel, ISession
+  Contents, Kernel, Session
 } from 'jupyter-js-services';
 
 import {
@@ -96,7 +96,7 @@ function createNewDialog(model: FileBrowserModel, manager: DocumentManager, host
  * Rename a file with optional dialog.
  */
 export
-function renameFile(model: FileBrowserModel, oldPath: string, newPath: string): Promise<IContents.IModel> {
+function renameFile(model: FileBrowserModel, oldPath: string, newPath: string): Promise<Contents.IModel> {
   return model.rename(oldPath, newPath).catch(error => {
     if (error.xhr) {
       error.message = `${error.xhr.statusText} ${error.xhr.status}`;
@@ -128,7 +128,7 @@ class OpenWithHandler extends Widget {
   /**
    * Construct a new "open with" dialog.
    */
-  constructor(path: string, manager: DocumentManager, sessions: ISession.IModel[], host?: HTMLElement) {
+  constructor(path: string, manager: DocumentManager, sessions: Session.IModel[], host?: HTMLElement) {
     super({ node: Private.createOpenWithNode() });
     this._manager = manager;
     this._host = host;
@@ -179,9 +179,9 @@ class OpenWithHandler extends Widget {
     let path = this.inputNode.textContent;
     let widgetName = this.widgetDropdown.value;
     let kernelValue = this.kernelDropdownNode.value;
-    let kernelId: IKernel.IModel;
+    let kernelId: Kernel.IModel;
     if (kernelValue !== 'null') {
-      kernelId = JSON.parse(kernelValue) as IKernel.IModel;
+      kernelId = JSON.parse(kernelValue) as Kernel.IModel;
     }
     return this._manager.open(path, widgetName, kernelId);
   }
@@ -218,7 +218,7 @@ class OpenWithHandler extends Widget {
   private _ext = '';
   private _manager: DocumentManager = null;
   private _host: HTMLElement = null;
-  private _sessions: ISession.IModel[] = null;
+  private _sessions: Session.IModel[] = null;
 }
 
 
@@ -306,7 +306,7 @@ class CreateFromHandler extends Widget {
     let { fileType, widgetName, kernelName } = creator;
     let fType = registry.getFileType(fileType);
     let ext = '.txt';
-    let type: IContents.FileType = 'file';
+    let type: Contents.FileType = 'file';
     if (fType) {
       ext = fType.extension;
       type = fType.fileType || 'file';
@@ -343,9 +343,9 @@ class CreateFromHandler extends Widget {
     let path = this.inputNode.value;
     let widgetName = this._widgetName;
     let kernelValue = this.kernelDropdownNode ? this.kernelDropdownNode.value : 'null';
-    let kernelId: IKernel.IModel;
+    let kernelId: Kernel.IModel;
     if (kernelValue !== 'null') {
-      kernelId = JSON.parse(kernelValue) as IKernel.IModel;
+      kernelId = JSON.parse(kernelValue) as Kernel.IModel;
     }
     if (path !== this._orig) {
       return renameFile(this._model, this._orig, path).then(value => {
@@ -363,7 +363,7 @@ class CreateFromHandler extends Widget {
   private _widgetName: string;
   private _orig: string;
   private _manager: DocumentManager;
-  private _sessions: ISession.IModel[] = [];
+  private _sessions: Session.IModel[] = [];
 }
 
 
@@ -374,7 +374,7 @@ class CreateNewHandler extends Widget {
   /**
    * Construct a new "create new" dialog.
    */
-  constructor(model: FileBrowserModel, manager: DocumentManager, sessions: ISession.IModel[]) {
+  constructor(model: FileBrowserModel, manager: DocumentManager, sessions: Session.IModel[]) {
     super({ node: Private.createCreateNewNode() });
     this._model = model;
     this._manager = manager;
@@ -456,9 +456,9 @@ class CreateNewHandler extends Widget {
     let path = this.inputNode.textContent;
     let widgetName = this.widgetDropdown.value;
     let kernelValue = this.kernelDropdownNode.value;
-    let kernelId: IKernel.IModel;
+    let kernelId: Kernel.IModel;
     if (kernelValue !== 'null') {
-      kernelId = JSON.parse(kernelValue) as IKernel.IModel;
+      kernelId = JSON.parse(kernelValue) as Kernel.IModel;
     }
     return this._manager.createNew(path, widgetName, kernelId);
   }
@@ -557,7 +557,7 @@ class CreateNewHandler extends Widget {
 
   private _model: FileBrowserModel = null;
   private _manager: DocumentManager = null;
-  private _sessions: ISession.IModel[] = null;
+  private _sessions: Session.IModel[] = null;
   private _sentinal = 'UNKNOWN_EXTENSION';
   private _prevExt = '';
   private _extensions: string[] = [];
@@ -650,12 +650,12 @@ namespace Private {
     /**
      * The kernel specs.
      */
-    specs: IKernel.ISpecModels;
+    specs: Kernel.ISpecModels;
 
     /**
      * The running sessions.
      */
-    sessions: ISession.IModel[];
+    sessions: Session.IModel[];
 
     /**
      * The preferred kernel name.

+ 11 - 11
src/filebrowser/listing.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents
+  Contents
 } from 'jupyter-js-services';
 
 import {
@@ -279,7 +279,7 @@ class DirListing extends Widget {
   /**
    * The the sorted content items.
    */
-  get sortedItems(): IContents.IModel[] {
+  get sortedItems(): Contents.IModel[] {
     return this._sortedModels;
   }
 
@@ -331,7 +331,7 @@ class DirListing extends Widget {
     if (!this._clipboard.length) {
       return;
     }
-    let promises: Promise<IContents.IModel>[] = [];
+    let promises: Promise<Contents.IModel>[] = [];
     for (let path of this._clipboard) {
       if (this._isCut) {
         let parts = path.split('/');
@@ -388,7 +388,7 @@ class DirListing extends Widget {
    * Duplicate the currently selected item(s).
    */
   duplicate(): Promise<void> {
-    let promises: Promise<IContents.IModel>[] = [];
+    let promises: Promise<Contents.IModel>[] = [];
     for (let item of this._getSelectedItems()) {
       if (item.type !== 'directory') {
         promises.push(this._model.copy(item.path, this._model.path));
@@ -943,7 +943,7 @@ class DirListing extends Widget {
     let path = items[index].name + '/';
 
     // Move all of the items.
-    let promises: Promise<IContents.IModel>[] = [];
+    let promises: Promise<Contents.IModel>[] = [];
     let names = event.mimeData.getData(utils.CONTENTS_MIME) as string[];
     for (let name of names) {
       let newPath = path + name;
@@ -963,7 +963,7 @@ class DirListing extends Widget {
     let source = this._items[index];
     let model = this._model;
     let items = this.sortedItems;
-    let item: IContents.IModel = null;
+    let item: Contents.IModel = null;
 
     // If the source node is not selected, use just that node.
     if (!source.classList.contains(SELECTED_CLASS)) {
@@ -1104,7 +1104,7 @@ class DirListing extends Widget {
   /**
    * Get the currently selected items.
    */
-  private _getSelectedItems(): IContents.IModel[] {
+  private _getSelectedItems(): Contents.IModel[] {
     let items = this.sortedItems;
     return items.filter(item => this._selection[item.name]);
   }
@@ -1209,7 +1209,7 @@ class DirListing extends Widget {
   private _model: FileBrowserModel = null;
   private _editNode: HTMLInputElement = null;
   private _items: HTMLElement[] = [];
-  private _sortedModels: IContents.IModel[] = null;
+  private _sortedModels: Contents.IModel[] = null;
   private _sortState: DirListing.ISortState = { direction: 'ascending', key: 'name' };
   private _drag: Drag = null;
   private _dragData: { pressX: number, pressY: number, index: number } = null;
@@ -1318,7 +1318,7 @@ namespace DirListing {
      *
      * @param model - The model object to use for the item state.
      */
-    updateItemNode(node: HTMLElement, model: IContents.IModel): void;
+    updateItemNode(node: HTMLElement, model: Contents.IModel): void;
 
     /**
      * Get the node containing the file name.
@@ -1452,7 +1452,7 @@ namespace DirListing {
      *
      * @param model - The model object to use for the item state.
      */
-    updateItemNode(node: HTMLElement, model: IContents.IModel): void {
+    updateItemNode(node: HTMLElement, model: Contents.IModel): void {
       let icon = utils.findElement(node, ITEM_ICON_CLASS);
       let text = utils.findElement(node, ITEM_TEXT_CLASS);
       let modified = utils.findElement(node, ITEM_MODIFIED_CLASS);
@@ -1589,7 +1589,7 @@ namespace Private {
    * Sort a list of items by sort state as a new array.
    */
   export
-  function sort(items: IContents.IModel[], state: DirListing.ISortState) : IContents.IModel[] {
+  function sort(items: Contents.IModel[], state: DirListing.ISortState) : Contents.IModel[] {
     let output = items.slice();
     if (state.key === 'last_modified') {
       output.sort((a, b) => {

+ 20 - 20
src/filebrowser/model.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents, IKernel, IServiceManager, ISession
+  Contents, Kernel, IServiceManager, Session
 } from 'jupyter-js-services';
 
 import {
@@ -70,7 +70,7 @@ class FileBrowserModel implements IDisposable {
   /**
    * Get a read-only list of the items in the current path.
    */
-  get items(): IContents.IModel[] {
+  get items(): Contents.IModel[] {
     return this._model.content ? this._model.content.slice() : [];
   }
 
@@ -87,14 +87,14 @@ class FileBrowserModel implements IDisposable {
    * #### Notes
    * This is a read-only property.
    */
-  get sessions(): ISession.IModel[] {
+  get sessions(): Session.IModel[] {
     return this._sessions.slice();
   }
 
   /**
    * Get the kernel specs.
    */
-  get kernelspecs(): IKernel.ISpecModels {
+  get kernelspecs(): Kernel.ISpecModels {
     return this._manager.kernelspecs;
   }
 
@@ -123,7 +123,7 @@ class FileBrowserModel implements IDisposable {
       return Promise.resolve(void 0);
     }
     let oldValue = this.path;
-    let options: IContents.IFetchOptions = { content: true };
+    let options: Contents.IFetchOptions = { content: true };
     this._pendingPath = newValue;
     if (newValue === '.') {
       newValue = this.path;
@@ -171,7 +171,7 @@ class FileBrowserModel implements IDisposable {
    *
    * @returns A promise which resolves to the contents of the file.
    */
-  copy(fromFile: string, toDir: string): Promise<IContents.IModel> {
+  copy(fromFile: string, toDir: string): Promise<Contents.IModel> {
     let normalizePath = Private.normalizePath;
     fromFile = normalizePath(this._model.path, fromFile);
     toDir = normalizePath(this._model.path, toDir);
@@ -227,7 +227,7 @@ class FileBrowserModel implements IDisposable {
    *
    * @returns A promise containing the new file contents model.
    */
-  newUntitled(options: IContents.ICreateOptions): Promise<IContents.IModel> {
+  newUntitled(options: Contents.ICreateOptions): Promise<Contents.IModel> {
     if (options.type === 'file') {
       options.ext = options.ext || '.txt';
     }
@@ -251,7 +251,7 @@ class FileBrowserModel implements IDisposable {
    *
    * @returns A promise containing the new file contents model.
    */
-  rename(path: string, newPath: string): Promise<IContents.IModel> {
+  rename(path: string, newPath: string): Promise<Contents.IModel> {
     // Handle relative paths.
     let normalizePath = Private.normalizePath;
     path = normalizePath(this._model.path, path);
@@ -279,13 +279,13 @@ class FileBrowserModel implements IDisposable {
    * This will fail to upload files that are too big to be sent in one
    * request to the server.
    */
-  upload(file: File, overwrite?: boolean): Promise<IContents.IModel> {
+  upload(file: File, overwrite?: boolean): Promise<Contents.IModel> {
     // Skip large files with a warning.
     if (file.size > this._maxUploadSizeMb * 1024 * 1024) {
       let msg = `Cannot upload file (>${this._maxUploadSizeMb} MB) `;
       msg += `"${file.name}"`;
       console.warn(msg);
-      return Promise.reject<IContents.IModel>(new Error(msg));
+      return Promise.reject<Contents.IModel>(new Error(msg));
     }
 
     if (overwrite) {
@@ -295,7 +295,7 @@ class FileBrowserModel implements IDisposable {
     let path = this._model.path;
     path = path ? path + '/' + file.name : file.name;
     return this._manager.contents.get(path, {}).then(() => {
-      return Private.typedThrow<IContents.IModel>(`"${file.name}" already exists`);
+      return Private.typedThrow<Contents.IModel>(`"${file.name}" already exists`);
     }, () => {
       return this._upload(file);
     });
@@ -311,14 +311,14 @@ class FileBrowserModel implements IDisposable {
   /**
    * Perform the actual upload.
    */
-  private _upload(file: File): Promise<IContents.IModel> {
+  private _upload(file: File): Promise<Contents.IModel> {
     // Gather the file model parameters.
     let path = this._model.path;
     path = path ? path + '/' + file.name : file.name;
     let name = file.name;
     let isNotebook = file.name.indexOf('.ipynb') !== -1;
-    let type: IContents.FileType = isNotebook ? 'notebook' : 'file';
-    let format: IContents.FileFormat = isNotebook ? 'json' : 'base64';
+    let type: Contents.FileType = isNotebook ? 'notebook' : 'file';
+    let format: Contents.FileFormat = isNotebook ? 'json' : 'base64';
 
     // Get the file content.
     let reader = new FileReader();
@@ -328,9 +328,9 @@ class FileBrowserModel implements IDisposable {
       reader.readAsArrayBuffer(file);
     }
 
-    return new Promise<IContents.IModel>((resolve, reject) => {
+    return new Promise<Contents.IModel>((resolve, reject) => {
       reader.onload = (event: Event) => {
-        let model: IContents.IModel = {
+        let model: Contents.IModel = {
           type: type,
           format,
           name,
@@ -356,7 +356,7 @@ class FileBrowserModel implements IDisposable {
   /**
    * Handle a change to the running sessions.
    */
-  private _onRunningChanged(sender: ISession.IManager, models: ISession.IModel[]): void {
+  private _onRunningChanged(sender: Session.IManager, models: Session.IModel[]): void {
     if (deepEqual(models, this._sessions)) {
       return;
     }
@@ -365,7 +365,7 @@ class FileBrowserModel implements IDisposable {
       this.refreshed.emit(void 0);
       return;
     }
-    let paths = this._model.content.map((contents: IContents.IModel) => {
+    let paths = this._model.content.map((contents: Contents.IModel) => {
       return contents.path;
     });
     for (let model of models) {
@@ -379,8 +379,8 @@ class FileBrowserModel implements IDisposable {
 
   private _maxUploadSizeMb = 15;
   private _manager: IServiceManager = null;
-  private _sessions: ISession.IModel[] = [];
-  private _model: IContents.IModel;
+  private _sessions: Session.IModel[] = [];
+  private _model: Contents.IModel;
   private _pendingPath: string = null;
   private _pending: Promise<void> = null;
 }

+ 2 - 2
src/imagewidget/widget.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -108,7 +108,7 @@ class ImageWidgetFactory extends ABCWidgetFactory<ImageWidget, IDocumentModel> {
   /**
    * Create a new widget given a context.
    */
-  createNew(context: IDocumentContext<IDocumentModel>, kernel?: IKernel.IModel): ImageWidget {
+  createNew(context: IDocumentContext<IDocumentModel>, kernel?: Kernel.IModel): ImageWidget {
     let widget = new ImageWidget(context);
     this.widgetCreated.emit(widget);
     return widget;

+ 2 - 2
src/markdownwidget/widget.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -122,7 +122,7 @@ class MarkdownWidgetFactory extends ABCWidgetFactory<MarkdownWidget, IDocumentMo
   /**
    * Create a new widget given a context.
    */
-  createNew(context: IDocumentContext<IDocumentModel>, kernel?: IKernel.IModel): MarkdownWidget {
+  createNew(context: IDocumentContext<IDocumentModel>, kernel?: Kernel.IModel): MarkdownWidget {
     let widget = new MarkdownWidget(context, this._rendermime.clone());
     this.widgetCreated.emit(widget);
     return widget;

+ 3 - 3
src/notebook/notebook/modelfactory.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IContents
+  Contents
 } from 'jupyter-js-services';
 
 import {
@@ -35,7 +35,7 @@ class NotebookModelFactory implements IModelFactory<INotebookModel> {
    * #### Notes
    * This is a read-only property.
    */
-  get fileType(): IContents.FileType {
+  get fileType(): Contents.FileType {
     return 'notebook';
   }
 
@@ -44,7 +44,7 @@ class NotebookModelFactory implements IModelFactory<INotebookModel> {
    *
    * This is a read-only property.
    */
-  get fileFormat(): IContents.FileFormat {
+  get fileFormat(): Contents.FileFormat {
     return 'json';
   }
 

+ 2 - 6
src/notebook/notebook/widgetfactory.ts

@@ -2,17 +2,13 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  IKernel, Kernel
 } from 'jupyter-js-services';
 
 import {
   MimeData as IClipboard
 } from 'phosphor/lib/core/mimedata';
 
-import {
-  Widget
-} from 'phosphor/lib/ui/widget';
-
 import {
   ABCWidgetFactory, IDocumentContext
 } from '../../docregistry';
@@ -74,7 +70,7 @@ class NotebookWidgetFactory extends ABCWidgetFactory<NotebookPanel, INotebookMod
    * The factory will start the appropriate kernel and populate
    * the default toolbar items using `ToolbarItems.populateDefaults`.
    */
-  createNew(context: IDocumentContext<INotebookModel>, kernel?: IKernel.IModel): NotebookPanel {
+  createNew(context: IDocumentContext<INotebookModel>, kernel?: Kernel.IModel): NotebookPanel {
     let rendermime = this._rendermime.clone();
     if (kernel) {
       context.changeKernel(kernel);

+ 11 - 11
src/running/index.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IServiceManager, ISession, ITerminalSession
+  IServiceManager, Session, TerminalSession
 } from 'jupyter-js-services';
 
 import {
@@ -164,12 +164,12 @@ class RunningSessions extends Widget {
   /**
    * A signal emitted when a kernel session open is requested.
    */
-  sessionOpenRequested: ISignal<RunningSessions, ISession.IModel>;
+  sessionOpenRequested: ISignal<RunningSessions, Session.IModel>;
 
   /**
    * A signal emitted when a terminal session open is requested.
    */
-  terminalOpenRequested: ISignal<RunningSessions, ITerminalSession.IModel>;
+  terminalOpenRequested: ISignal<RunningSessions, TerminalSession.IModel>;
 
   /**
    * The renderer used by the running sessions widget.
@@ -355,7 +355,7 @@ class RunningSessions extends Widget {
   /**
    * Handle a change to the running sessions.
    */
-  private _onSessionsChanged(sender: ISession.IManager, models: ISession.IModel[]): void {
+  private _onSessionsChanged(sender: Session.IManager, models: Session.IModel[]): void {
     // Strip out non-file backed sessions.
     this._runningSessions = [];
     for (let session of models) {
@@ -370,15 +370,15 @@ class RunningSessions extends Widget {
   /**
    * Handle a change to the running terminals.
    */
-  private _onTerminalsChanged(sender: ITerminalSession.IManager, models: ITerminalSession.IModel[]): void {
+  private _onTerminalsChanged(sender: TerminalSession.IManager, models: TerminalSession.IModel[]): void {
     this._runningTerminals = models;
     this.update();
   }
 
   private _manager: IServiceManager = null;
   private _renderer: RunningSessions.IRenderer = null;
-  private _runningSessions: ISession.IModel[] = [];
-  private _runningTerminals: ITerminalSession.IModel[] = [];
+  private _runningSessions: Session.IModel[] = [];
+  private _runningTerminals: TerminalSession.IModel[] = [];
   private _refreshId = -1;
 }
 
@@ -496,7 +496,7 @@ namespace RunningSessions {
      * This method should completely reset the state of the node to
      * reflect the data for the session models.
      */
-    updateTerminalNode(node: HTMLLIElement, model: ITerminalSession.IModel): void;
+    updateTerminalNode(node: HTMLLIElement, model: TerminalSession.IModel): void;
 
     /**
      * Populate a node with running kernel session data.
@@ -511,7 +511,7 @@ namespace RunningSessions {
      * This method should completely reset the state of the node to
      * reflect the data for the session models.
      */
-    updateSessionNode(node: HTMLLIElement, model: ISession.IModel, kernelName: string): void;
+    updateSessionNode(node: HTMLLIElement, model: Session.IModel, kernelName: string): void;
   }
 
 
@@ -660,7 +660,7 @@ namespace RunningSessions {
      * This method should completely reset the state of the node to
      * reflect the data for the session models.
      */
-    updateTerminalNode(node: HTMLLIElement, model: ITerminalSession.IModel): void {
+    updateTerminalNode(node: HTMLLIElement, model: TerminalSession.IModel): void {
       let label = findElement(node, ITEM_LABEL_CLASS);
       label.textContent = `terminals/${model.name}`;
     }
@@ -678,7 +678,7 @@ namespace RunningSessions {
      * This method should completely reset the state of the node to
      * reflect the data for the session models.
      */
-    updateSessionNode(node: HTMLLIElement, model: ISession.IModel, kernelName: string): void {
+    updateSessionNode(node: HTMLLIElement, model: Session.IModel, kernelName: string): void {
       let icon = findElement(node, ITEM_ICON_CLASS);
       if (model.notebook.path.indexOf('.ipynb') !== -1) {
         icon.className = `${ITEM_ICON_CLASS} ${NOTEBOOK_ICON_CLASS}`;

+ 2 - 2
src/terminal/index.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  ITerminalSession
+  ITerminalSession, TerminalSession
 } from 'jupyter-js-services';
 
 import {
@@ -313,7 +313,7 @@ class TerminalWidget extends Widget {
   /**
    * Handle a message from the terminal session.
    */
-  private _onMessage(sender: ITerminalSession, msg: ITerminalSession.IMessage): void {
+  private _onMessage(sender: ITerminalSession, msg: TerminalSession.IMessage): void {
     switch (msg.type) {
     case 'stdout':
       this._term.write(msg.content[0] as string);

+ 3 - 3
src/toolbar/kernel.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  IKernel
+  IKernel, Kernel
 } from 'jupyter-js-services';
 
 import {
@@ -126,7 +126,7 @@ function updateKernelNameItem(widget: Widget, kernel: IKernel): void {
   if (kernel.spec) {
     widget.node.textContent = kernel.spec.display_name;
   } else {
-    kernel.getKernelSpec().then(spec => {
+    kernel.getSpec().then(spec => {
       if (!widget.isDisposed) {
         widget.node.textContent = kernel.spec.display_name;
       }
@@ -181,7 +181,7 @@ class KernelIndicator extends Widget {
   /**
    * Handle a status on a kernel.
    */
-  private _handleStatus(kernel: IKernel, status: IKernel.Status) {
+  private _handleStatus(kernel: IKernel, status: Kernel.Status) {
     if (this.isDisposed) {
       return;
     }

+ 1 - 4
src/typings.d.ts

@@ -8,12 +8,9 @@
  * When this happens, use the typescript compiler option:
  * "lib": ["dom", "es5", "es2015.promise", "es2015.collection"],
  */
-/// <reference path="../node_modules/@types/requirejs/index.d.ts"/>
 /// <reference path="../node_modules/@types/mathjax/index.d.ts"/>
+/// <reference path="../node_modules/@types/node/index.d.ts"/>
 /// <reference path="../node_modules/typescript/lib/lib.es2015.promise.d.ts"/>
 /// <reference path="../node_modules/typescript/lib/lib.dom.d.ts"/>
 /// <reference path="../node_modules/typescript/lib/lib.es5.d.ts"/>
 /// <reference path="../node_modules/typescript/lib/lib.es2015.collection.d.ts"/>
-
-// For a Thenable reference in jupyter-js-services
-type Thenable<T> = Promise<T>