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