瀏覽代碼

Add deferred and disabled extension info to JupyterLab application object for debugging.

Afshin Darian 7 年之前
父節點
當前提交
50b60c2e19
共有 3 個文件被更改,包括 101 次插入41 次删除
  1. 39 20
      jupyterlab/index.app.js
  2. 39 20
      jupyterlab/index.js
  3. 23 1
      packages/application/src/index.ts

+ 39 - 20
jupyterlab/index.app.js

@@ -10,11 +10,13 @@ var app = require('@jupyterlab/application').JupyterLab;
 
 function main() {
     // Get the disabled extensions.
-    var disabled = [];
+    var disabled = { patterns: [], matches: [] };
+    var disabledExtensions = [];
     try {
         var option = PageConfig.getOption('disabledExtensions');
         if (option) {
-            disabled = JSON.parse(option).map(function(pattern) {
+            disabledExtensions = JSON.parse(option).map(function(pattern) {
+                disabled.patterns.push(pattern);
                 return { raw: pattern, rule: new RegExp(pattern) };
             });
         }
@@ -23,12 +25,14 @@ function main() {
     }
 
     // Get the deferred extensions.
+    var deferred = { patterns: [], matches: [] };
     var deferredExtensions = [];
     var ignorePlugins = [];
     try {
         var option = PageConfig.getOption('deferredExtensions');
         if (option) {
             deferredExtensions = JSON.parse(option).map(function(pattern) {
+                deferred.patterns.push(pattern);
                 return { raw: pattern, rule: new RegExp(pattern) };
             });
         }
@@ -43,7 +47,7 @@ function main() {
     }
 
     function isDisabled(value) {
-        return disabled.some(function(pattern) {
+        return disabledExtensions.some(function(pattern) {
             return pattern.raw === value || pattern.rule.test(value)
         });
     }
@@ -54,6 +58,7 @@ function main() {
     var devMode = PageConfig.getOption('devMode') || 'false';
     var settingsDir = PageConfig.getOption('settingsDir') || '';
     var assetsDir = PageConfig.getOption('assetsDir') || '';
+    var register = [];
 
     if (version[0] === 'v') {
         version = version.slice(1);
@@ -64,9 +69,12 @@ function main() {
     {{#each jupyterlab_mime_extensions}}
     try {
         if (isDeferred('{{key}}')) {
+            deferred.matches.push('{{key}}');
             ignorePlugins.push('{{key}}');
         }
-        if (!isDisabled('{{@key}}')) {
+        if (isDisabled('{{@key}}')) {
+            disabled.matches.push('{{@key}}');
+        } else {
             var module = require('{{@key}}/{{this}}');
             var extension = module.default;
 
@@ -78,11 +86,14 @@ function main() {
             if (Array.isArray(extension)) {
                 extension.forEach(function(plugin) {
                     if (isDeferred(plugin.id)) {
+                        deferred.matches.push(plugin.id);
                         ignorePlugins.push(plugin.id);
                     }
-                    if (!isDisabled(plugin.id)) {
-                        mimeExtensions.push(plugin);
+                    if (isDisabled(plugin.id)) {
+                        disabled.matches.push(plugin.id);
+                        return;
                     }
+                    mimeExtensions.push(plugin);
                 });
             } else {
                 mimeExtensions.push(extension);
@@ -93,23 +104,16 @@ function main() {
     }
     {{/each}}
 
-    lab = new app({
-        namespace: namespace,
-        name: name,
-        version: version,
-        devMode: devMode.toLowerCase() === 'true',
-        settingsDir: settingsDir,
-        assetsDir: assetsDir,
-        mimeExtensions: mimeExtensions
-    });
-
     // Handled the registered standard extensions.
     {{#each jupyterlab_extensions}}
     try {
         if (isDeferred('{{key}}')) {
+            deferred.matches.push('{{key}}');
             ignorePlugins.push('{{key}}');
         }
-        if (!isDisabled('{{@key}}')) {
+        if (isDisabled('{{@key}}')) {
+            disabled.matches.push('{{@key}}');
+        } else {
             var module = require('{{@key}}/{{this}}');
             var extension = module.default;
 
@@ -121,14 +125,17 @@ function main() {
             if (Array.isArray(extension)) {
                 extension.forEach(function(plugin) {
                     if (isDeferred(plugin.id)) {
+                        deferred.matches.push(plugin.id);
                         ignorePlugins.push(plugin.id);
                     }
-                    if (!isDisabled(plugin.id)) {
-                        lab.registerPluginModule(plugin);
+                    if (isDisabled(plugin.id)) {
+                        disabled.matches.push(plugin.id);
+                        return;
                     }
+                    register.push(plugin);
                 });
             } else {
-                lab.registerPluginModule(extension);
+                register.push(extension);
             }
         }
     } catch (e) {
@@ -136,6 +143,18 @@ function main() {
     }
     {{/each}}
 
+    lab = new app({
+        namespace: namespace,
+        name: name,
+        version: version,
+        devMode: devMode.toLowerCase() === 'true',
+        settingsDir: settingsDir,
+        assetsDir: assetsDir,
+        mimeExtensions: mimeExtensions,
+        disabled: disabled,
+        deferred: deferred
+    });
+    register.forEach(function(item) { lab.registerPluginModule(item); });
     lab.start({ ignorePlugins: ignorePlugins });
 
     // Handle a selenium test.

+ 39 - 20
jupyterlab/index.js

@@ -10,11 +10,13 @@ var app = require('@jupyterlab/application').JupyterLab;
 
 function main() {
     // Get the disabled extensions.
-    var disabled = [];
+    var disabled = { patterns: [], matches: [] };
+    var disabledExtensions = [];
     try {
         var option = PageConfig.getOption('disabledExtensions');
         if (option) {
-            disabled = JSON.parse(option).map(function(pattern) {
+            disabledExtensions = JSON.parse(option).map(function(pattern) {
+                disabled.patterns.push(pattern);
                 return { raw: pattern, rule: new RegExp(pattern) };
             });
         }
@@ -23,12 +25,14 @@ function main() {
     }
 
     // Get the deferred extensions.
+    var deferred = { patterns: [], matches: [] };
     var deferredExtensions = [];
     var ignorePlugins = [];
     try {
         var option = PageConfig.getOption('deferredExtensions');
         if (option) {
             deferredExtensions = JSON.parse(option).map(function(pattern) {
+                deferred.patterns.push(pattern);
                 return { raw: pattern, rule: new RegExp(pattern) };
             });
         }
@@ -43,7 +47,7 @@ function main() {
     }
 
     function isDisabled(value) {
-        return disabled.some(function(pattern) {
+        return disabledExtensions.some(function(pattern) {
             return pattern.raw === value || pattern.rule.test(value)
         });
     }
@@ -54,6 +58,7 @@ function main() {
     var devMode = PageConfig.getOption('devMode') || 'false';
     var settingsDir = PageConfig.getOption('settingsDir') || '';
     var assetsDir = PageConfig.getOption('assetsDir') || '';
+    var register = [];
 
     if (version[0] === 'v') {
         version = version.slice(1);
@@ -64,9 +69,12 @@ function main() {
     {{#each jupyterlab_mime_extensions}}
     try {
         if (isDeferred('{{key}}')) {
+            deferred.matches.push('{{key}}');
             ignorePlugins.push('{{key}}');
         }
-        if (!isDisabled('{{@key}}')) {
+        if (isDisabled('{{@key}}')) {
+            disabled.matches.push('{{@key}}');
+        } else {
             var module = require('{{@key}}/{{this}}');
             var extension = module.default;
 
@@ -78,11 +86,14 @@ function main() {
             if (Array.isArray(extension)) {
                 extension.forEach(function(plugin) {
                     if (isDeferred(plugin.id)) {
+                        deferred.matches.push(plugin.id);
                         ignorePlugins.push(plugin.id);
                     }
-                    if (!isDisabled(plugin.id)) {
-                        mimeExtensions.push(plugin);
+                    if (isDisabled(plugin.id)) {
+                        disabled.matches.push(plugin.id);
+                        return;
                     }
+                    mimeExtensions.push(plugin);
                 });
             } else {
                 mimeExtensions.push(extension);
@@ -93,23 +104,16 @@ function main() {
     }
     {{/each}}
 
-    lab = new app({
-        namespace: namespace,
-        name: name,
-        version: version,
-        devMode: devMode.toLowerCase() === 'true',
-        settingsDir: settingsDir,
-        assetsDir: assetsDir,
-        mimeExtensions: mimeExtensions
-    });
-
     // Handled the registered standard extensions.
     {{#each jupyterlab_extensions}}
     try {
         if (isDeferred('{{key}}')) {
+            deferred.matches.push('{{key}}');
             ignorePlugins.push('{{key}}');
         }
-        if (!isDisabled('{{@key}}')) {
+        if (isDisabled('{{@key}}')) {
+            disabled.matches.push('{{@key}}');
+        } else {
             var module = require('{{@key}}/{{this}}');
             var extension = module.default;
 
@@ -121,14 +125,17 @@ function main() {
             if (Array.isArray(extension)) {
                 extension.forEach(function(plugin) {
                     if (isDeferred(plugin.id)) {
+                        deferred.matches.push(plugin.id);
                         ignorePlugins.push(plugin.id);
                     }
-                    if (!isDisabled(plugin.id)) {
-                        lab.registerPluginModule(plugin);
+                    if (isDisabled(plugin.id)) {
+                        disabled.matches.push(plugin.id);
+                        return;
                     }
+                    register.push(plugin);
                 });
             } else {
-                lab.registerPluginModule(extension);
+                register.push(extension);
             }
         }
     } catch (e) {
@@ -136,6 +143,18 @@ function main() {
     }
     {{/each}}
 
+    lab = new app({
+        namespace: namespace,
+        name: name,
+        version: version,
+        devMode: devMode.toLowerCase() === 'true',
+        settingsDir: settingsDir,
+        assetsDir: assetsDir,
+        mimeExtensions: mimeExtensions,
+        disabled: disabled,
+        deferred: deferred
+    });
+    register.forEach(function(item) { lab.registerPluginModule(item); });
     lab.start({ ignorePlugins: ignorePlugins });
 
     // Handle a selenium test.

+ 23 - 1
packages/application/src/index.ts

@@ -63,7 +63,9 @@ class JupyterLab extends Application<ApplicationShell> {
       version:  options.version || 'unknown',
       devMode: options.devMode || false,
       settingsDir: options.settingsDir || '',
-      assetsDir: options.assetsDir || ''
+      assetsDir: options.assetsDir || '',
+      disabled: options.disabled || { patterns: [], matches: [] },
+      deferred: options.deferred || { patterns: [], matches: [] }
     };
     if (options.devMode) {
       this.shell.addClass('jp-mod-devMode');
@@ -228,6 +230,16 @@ namespace JupyterLab {
      * The mime renderer extensions.
      */
     mimeExtensions?: IRenderMime.IExtensionModule[];
+
+    /**
+     * The collection of deferred extension patterns and matched extensions.
+     */
+    deferred?: { patterns: string[], matches: string[] };
+
+    /**
+     * The collection of disabled extension patterns and matched extensions.
+     */
+    disabled?: { patterns: string[], matches: string[] };
   }
 
   /**
@@ -264,6 +276,16 @@ namespace JupyterLab {
      * The assets directory of the app on the server.
      */
     readonly assetsDir: string;
+
+    /**
+     * The collection of deferred extension patterns and matched extensions.
+     */
+    readonly deferred: { patterns: string[], matches: string[] };
+
+    /**
+     * The collection of disabled extension patterns and matched extensions.
+     */
+    readonly disabled: { patterns: string[], matches: string[] };
   }
 
   /**