Sfoglia il codice sorgente

Make connector optional and implement DummyConnector for getter

Edward Zhao 5 anni fa
parent
commit
d310fc2a26

+ 23 - 0
packages/completer/src/dummyconnector.ts

@@ -0,0 +1,23 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+import { DataConnector } from '@jupyterlab/statedb';
+
+import { CompletionHandler } from './handler';
+
+/**
+ * DummyConnector's fetch method always returns a rejected Promise.
+ * This class is only instantiated if both CompletionHandler._connector and
+ * CompletionHandler._fetchItems are undefined.
+ */
+export class DummyConnector extends DataConnector<
+  CompletionHandler.IReply,
+  void,
+  CompletionHandler.IRequest
+> {
+  fetch(_: CompletionHandler.IRequest): Promise<CompletionHandler.IReply> {
+    return Promise.reject(
+      'Attempting to fetch with DummyConnector. Please ensure a valid connector or fetchItems is registered'
+    );
+  }
+}

+ 7 - 3
packages/completer/src/handler.ts

@@ -21,6 +21,7 @@ import { Message, MessageLoop } from '@lumino/messaging';
 import { Signal } from '@lumino/signaling';
 
 import { Completer } from './widget';
+import { DummyConnector } from './dummyconnector';
 
 /**
  * A class added to editors that can host a completer.
@@ -65,6 +66,9 @@ export class CompletionHandler implements IDisposable {
     void,
     CompletionHandler.IRequest
   > {
+    if (!this._connector) {
+      return new DummyConnector();
+    }
     return this._connector;
   }
   set connector(
@@ -365,7 +369,7 @@ export class CompletionHandler implements IDisposable {
         });
     }
 
-    return this._connector
+    return this.connector
       .fetch(request)
       .then(reply => {
         if (this.isDisposed) {
@@ -498,7 +502,7 @@ export class CompletionHandler implements IDisposable {
     }
   }
 
-  private _connector: IDataConnector<
+  private _connector?: IDataConnector<
     CompletionHandler.IReply,
     void,
     CompletionHandler.IRequest
@@ -537,7 +541,7 @@ export namespace CompletionHandler {
      * it is acceptable for the other methods to be simple functions that return
      * rejected promises.
      */
-    connector: IDataConnector<IReply, void, IRequest>;
+    connector?: IDataConnector<IReply, void, IRequest>;
     /**
      * Fetcher for ICompletionItems.
      * If this is set, it'll be used in lieu of the data connector.

+ 1 - 1
packages/completer/src/tokens.ts

@@ -50,7 +50,7 @@ export namespace ICompletionManager {
     /**
      * The data connector used to populate the completer.
      */
-    connector: IDataConnector<
+    connector?: IDataConnector<
       CompletionHandler.IReply,
       void,
       CompletionHandler.IRequest