index.out.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. // This file is auto-generated from the corresponding file in /dev_mode
  2. /*
  3. * Copyright (c) Jupyter Development Team.
  4. * Distributed under the terms of the Modified BSD License.
  5. */
  6. import { PageConfig, JupyterPluginRegistry} from '@jupyterlab/coreutils';
  7. import './style.js';
  8. async function createModule(scope, module) {
  9. try {
  10. const factory = await window._JUPYTERLAB[scope].get(module);
  11. const instance = factory();
  12. instance.__scope__ = scope;
  13. return instance;
  14. } catch(e) {
  15. console.warn(`Failed to create module: package: ${scope}; module: ${module}`);
  16. throw e;
  17. }
  18. }
  19. /**
  20. * The main entry point for the application.
  21. */
  22. export async function main() {
  23. // Handle a browser test.
  24. // Set up error handling prior to loading extensions.
  25. var browserTest = PageConfig.getOption('browserTest');
  26. if (browserTest.toLowerCase() === 'true') {
  27. var el = document.createElement('div');
  28. el.id = 'browserTest';
  29. document.body.appendChild(el);
  30. el.textContent = '[]';
  31. el.style.display = 'none';
  32. var errors = [];
  33. var reported = false;
  34. var timeout = 25000;
  35. var report = function() {
  36. if (reported) {
  37. return;
  38. }
  39. reported = true;
  40. el.className = 'completed';
  41. }
  42. window.onerror = function(msg, url, line, col, error) {
  43. errors.push(String(error));
  44. el.textContent = JSON.stringify(errors)
  45. };
  46. console.error = function(message) {
  47. errors.push(String(message));
  48. el.textContent = JSON.stringify(errors)
  49. };
  50. }
  51. var pluginRegistry = new JupyterPluginRegistry();
  52. var JupyterLab = require('@jupyterlab/application').JupyterLab;
  53. var disabled = [];
  54. var deferred = [];
  55. var ignorePlugins = [];
  56. var register = [];
  57. const federatedExtensionPromises = [];
  58. const federatedMimeExtensionPromises = [];
  59. const federatedStylePromises = [];
  60. // Start initializing the federated extensions
  61. const extensions = JSON.parse(
  62. PageConfig.getOption('federated_extensions')
  63. );
  64. // Keep a mapping of renamed plugin ids to ensure user configs don't break.
  65. // The mapping is defined in the main index.js for JupyterLab, since it may not be relevant for
  66. // other lab-based applications (they may not use the same set of plugins).
  67. const renamedPluginIds = {
  68. '@jupyterlab/application:mimedocument': '@jupyterlab/application-extension:mimedocument',
  69. '@jupyterlab/help-extension:licenses': '@jupyterlab/apputils-extension:licenses-plugin',
  70. '@jupyterlab/lsp:ILSPCodeExtractorsManager': '@jupyterlab/lsp-extension:code-extractor-manager',
  71. '@jupyterlab/translation:translator': '@jupyterlab/translation-extension:translator',
  72. '@jupyterlab/workspaces:commands': '@jupyterlab/workspaces-extension:commands'
  73. };
  74. // Transparently handle the case of renamed plugins, so current configs don't break.
  75. // And emit a warning in the dev tools console to notify about the rename so
  76. // users can update their config.
  77. const disabledExtensions = PageConfig.Extension.disabled.map(id => {
  78. if (renamedPluginIds[id]) {
  79. console.warn(`Plugin ${id} has been renamed to ${renamedPluginIds[id]}. Consider updating your config to use the new name.`);
  80. return renamedPluginIds[id];
  81. }
  82. return id;
  83. });
  84. const deferredExtensions = PageConfig.Extension.deferred.map(id => {
  85. if (renamedPluginIds[id]) {
  86. console.warn(`Plugin id ${id} has been renamed to ${renamedPluginIds[id]}. Consider updating your config to use the new name.`);
  87. return renamedPluginIds[id];
  88. }
  89. return id;
  90. });
  91. // This is basically a copy of PageConfig.Extension.isDisabled to
  92. // take into account the case of renamed plugins.
  93. const isPluginDisabled = (id) => {
  94. const separatorIndex = id.indexOf(':');
  95. let extName = '';
  96. if (separatorIndex !== -1) {
  97. extName = id.slice(0, separatorIndex);
  98. }
  99. return disabledExtensions.some(val => val === id || (extName && val === extName));
  100. }
  101. // This is basically a copy of PageConfig.Extension.isDeferred to
  102. // take into account the case of renamed plugins.
  103. const isPluginDeferred = (id) => {
  104. const separatorIndex = id.indexOf(':');
  105. let extName = '';
  106. if (separatorIndex !== -1) {
  107. extName = id.slice(0, separatorIndex);
  108. }
  109. return deferredExtensions.some(val => val === id || (extName && val === extName));
  110. }
  111. const queuedFederated = [];
  112. extensions.forEach(data => {
  113. if (data.extension) {
  114. queuedFederated.push(data.name);
  115. federatedExtensionPromises.push(createModule(data.name, data.extension));
  116. }
  117. if (data.mimeExtension) {
  118. queuedFederated.push(data.name);
  119. federatedMimeExtensionPromises.push(createModule(data.name, data.mimeExtension));
  120. }
  121. if (data.style && !isPluginDisabled(data.name)) {
  122. federatedStylePromises.push(createModule(data.name, data.style));
  123. }
  124. });
  125. const allPlugins = [];
  126. /**
  127. * Get the plugins from an extension.
  128. */
  129. function getPlugins(extension) {
  130. // Handle commonjs or es2015 modules
  131. let exports;
  132. if (extension.hasOwnProperty('__esModule')) {
  133. exports = extension.default;
  134. } else {
  135. // CommonJS exports.
  136. exports = extension;
  137. }
  138. return Array.isArray(exports) ? exports : [exports];
  139. }
  140. /**
  141. * Iterate over active plugins in an extension.
  142. *
  143. * #### Notes
  144. * This also populates the disabled, deferred, and ignored arrays.
  145. */
  146. function* activePlugins(extension) {
  147. const plugins = getPlugins(extension);
  148. for (let plugin of plugins) {
  149. const isDisabled = isPluginDisabled(plugin.id);
  150. allPlugins.push({
  151. id: plugin.id,
  152. description: plugin.description,
  153. requires: plugin.requires ?? [],
  154. optional: plugin.optional ?? [],
  155. provides: plugin.provides ?? null,
  156. autoStart: plugin.autoStart,
  157. enabled: !isDisabled,
  158. extension: extension.__scope__
  159. });
  160. if (isDisabled) {
  161. disabled.push(plugin.id);
  162. continue;
  163. }
  164. if (isPluginDeferred(plugin.id)) {
  165. deferred.push(plugin.id);
  166. ignorePlugins.push(plugin.id);
  167. }
  168. yield plugin;
  169. }
  170. }
  171. // Handle the registered mime extensions.
  172. const mimeExtensions = [];
  173. if (!queuedFederated.includes('@jupyterlab/javascript-extension')) {
  174. try {
  175. let ext = require('@jupyterlab/javascript-extension');
  176. ext.__scope__ = '@jupyterlab/javascript-extension';
  177. for (let plugin of activePlugins(ext)) {
  178. mimeExtensions.push(plugin);
  179. }
  180. } catch (e) {
  181. console.error(e);
  182. }
  183. }
  184. if (!queuedFederated.includes('@jupyterlab/json-extension')) {
  185. try {
  186. let ext = require('@jupyterlab/json-extension');
  187. ext.__scope__ = '@jupyterlab/json-extension';
  188. for (let plugin of activePlugins(ext)) {
  189. mimeExtensions.push(plugin);
  190. }
  191. } catch (e) {
  192. console.error(e);
  193. }
  194. }
  195. if (!queuedFederated.includes('@jupyterlab/mermaid-extension')) {
  196. try {
  197. let ext = require('@jupyterlab/mermaid-extension/lib/mime.js');
  198. ext.__scope__ = '@jupyterlab/mermaid-extension';
  199. for (let plugin of activePlugins(ext)) {
  200. mimeExtensions.push(plugin);
  201. }
  202. } catch (e) {
  203. console.error(e);
  204. }
  205. }
  206. if (!queuedFederated.includes('@jupyterlab/pdf-extension')) {
  207. try {
  208. let ext = require('@jupyterlab/pdf-extension');
  209. ext.__scope__ = '@jupyterlab/pdf-extension';
  210. for (let plugin of activePlugins(ext)) {
  211. mimeExtensions.push(plugin);
  212. }
  213. } catch (e) {
  214. console.error(e);
  215. }
  216. }
  217. if (!queuedFederated.includes('@jupyterlab/vega5-extension')) {
  218. try {
  219. let ext = require('@jupyterlab/vega5-extension');
  220. ext.__scope__ = '@jupyterlab/vega5-extension';
  221. for (let plugin of activePlugins(ext)) {
  222. mimeExtensions.push(plugin);
  223. }
  224. } catch (e) {
  225. console.error(e);
  226. }
  227. }
  228. // Add the federated mime extensions.
  229. const federatedMimeExtensions = await Promise.allSettled(federatedMimeExtensionPromises);
  230. federatedMimeExtensions.forEach(p => {
  231. if (p.status === "fulfilled") {
  232. for (let plugin of activePlugins(p.value)) {
  233. mimeExtensions.push(plugin);
  234. }
  235. } else {
  236. console.error(p.reason);
  237. }
  238. });
  239. // Handled the registered standard extensions.
  240. if (!queuedFederated.includes('@jupyterlab/application-extension')) {
  241. try {
  242. let ext = require('@jupyterlab/application-extension');
  243. ext.__scope__ = '@jupyterlab/application-extension';
  244. for (let plugin of activePlugins(ext)) {
  245. register.push(plugin);
  246. }
  247. } catch (e) {
  248. console.error(e);
  249. }
  250. }
  251. if (!queuedFederated.includes('@jupyterlab/apputils-extension')) {
  252. try {
  253. let ext = require('@jupyterlab/apputils-extension');
  254. ext.__scope__ = '@jupyterlab/apputils-extension';
  255. for (let plugin of activePlugins(ext)) {
  256. register.push(plugin);
  257. }
  258. } catch (e) {
  259. console.error(e);
  260. }
  261. }
  262. if (!queuedFederated.includes('@jupyterlab/audio-extension')) {
  263. try {
  264. let ext = require('@jupyterlab/audio-extension');
  265. ext.__scope__ = '@jupyterlab/audio-extension';
  266. for (let plugin of activePlugins(ext)) {
  267. register.push(plugin);
  268. }
  269. } catch (e) {
  270. console.error(e);
  271. }
  272. }
  273. if (!queuedFederated.includes('@jupyterlab/cell-toolbar-extension')) {
  274. try {
  275. let ext = require('@jupyterlab/cell-toolbar-extension');
  276. ext.__scope__ = '@jupyterlab/cell-toolbar-extension';
  277. for (let plugin of activePlugins(ext)) {
  278. register.push(plugin);
  279. }
  280. } catch (e) {
  281. console.error(e);
  282. }
  283. }
  284. if (!queuedFederated.includes('@jupyterlab/celltags-extension')) {
  285. try {
  286. let ext = require('@jupyterlab/celltags-extension');
  287. ext.__scope__ = '@jupyterlab/celltags-extension';
  288. for (let plugin of activePlugins(ext)) {
  289. register.push(plugin);
  290. }
  291. } catch (e) {
  292. console.error(e);
  293. }
  294. }
  295. if (!queuedFederated.includes('@jupyterlab/codemirror-extension')) {
  296. try {
  297. let ext = require('@jupyterlab/codemirror-extension');
  298. ext.__scope__ = '@jupyterlab/codemirror-extension';
  299. for (let plugin of activePlugins(ext)) {
  300. register.push(plugin);
  301. }
  302. } catch (e) {
  303. console.error(e);
  304. }
  305. }
  306. if (!queuedFederated.includes('@jupyterlab/completer-extension')) {
  307. try {
  308. let ext = require('@jupyterlab/completer-extension');
  309. ext.__scope__ = '@jupyterlab/completer-extension';
  310. for (let plugin of activePlugins(ext)) {
  311. register.push(plugin);
  312. }
  313. } catch (e) {
  314. console.error(e);
  315. }
  316. }
  317. if (!queuedFederated.includes('@jupyterlab/console-extension')) {
  318. try {
  319. let ext = require('@jupyterlab/console-extension');
  320. ext.__scope__ = '@jupyterlab/console-extension';
  321. for (let plugin of activePlugins(ext)) {
  322. register.push(plugin);
  323. }
  324. } catch (e) {
  325. console.error(e);
  326. }
  327. }
  328. if (!queuedFederated.includes('@jupyterlab/csvviewer-extension')) {
  329. try {
  330. let ext = require('@jupyterlab/csvviewer-extension');
  331. ext.__scope__ = '@jupyterlab/csvviewer-extension';
  332. for (let plugin of activePlugins(ext)) {
  333. register.push(plugin);
  334. }
  335. } catch (e) {
  336. console.error(e);
  337. }
  338. }
  339. if (!queuedFederated.includes('@jupyterlab/debugger-extension')) {
  340. try {
  341. let ext = require('@jupyterlab/debugger-extension');
  342. ext.__scope__ = '@jupyterlab/debugger-extension';
  343. for (let plugin of activePlugins(ext)) {
  344. register.push(plugin);
  345. }
  346. } catch (e) {
  347. console.error(e);
  348. }
  349. }
  350. if (!queuedFederated.includes('@jupyterlab/docmanager-extension')) {
  351. try {
  352. let ext = require('@jupyterlab/docmanager-extension');
  353. ext.__scope__ = '@jupyterlab/docmanager-extension';
  354. for (let plugin of activePlugins(ext)) {
  355. register.push(plugin);
  356. }
  357. } catch (e) {
  358. console.error(e);
  359. }
  360. }
  361. if (!queuedFederated.includes('@jupyterlab/documentsearch-extension')) {
  362. try {
  363. let ext = require('@jupyterlab/documentsearch-extension');
  364. ext.__scope__ = '@jupyterlab/documentsearch-extension';
  365. for (let plugin of activePlugins(ext)) {
  366. register.push(plugin);
  367. }
  368. } catch (e) {
  369. console.error(e);
  370. }
  371. }
  372. if (!queuedFederated.includes('@jupyterlab/extensionmanager-extension')) {
  373. try {
  374. let ext = require('@jupyterlab/extensionmanager-extension');
  375. ext.__scope__ = '@jupyterlab/extensionmanager-extension';
  376. for (let plugin of activePlugins(ext)) {
  377. register.push(plugin);
  378. }
  379. } catch (e) {
  380. console.error(e);
  381. }
  382. }
  383. if (!queuedFederated.includes('@jupyterlab/filebrowser-extension')) {
  384. try {
  385. let ext = require('@jupyterlab/filebrowser-extension');
  386. ext.__scope__ = '@jupyterlab/filebrowser-extension';
  387. for (let plugin of activePlugins(ext)) {
  388. register.push(plugin);
  389. }
  390. } catch (e) {
  391. console.error(e);
  392. }
  393. }
  394. if (!queuedFederated.includes('@jupyterlab/fileeditor-extension')) {
  395. try {
  396. let ext = require('@jupyterlab/fileeditor-extension');
  397. ext.__scope__ = '@jupyterlab/fileeditor-extension';
  398. for (let plugin of activePlugins(ext)) {
  399. register.push(plugin);
  400. }
  401. } catch (e) {
  402. console.error(e);
  403. }
  404. }
  405. if (!queuedFederated.includes('@jupyterlab/help-extension')) {
  406. try {
  407. let ext = require('@jupyterlab/help-extension');
  408. ext.__scope__ = '@jupyterlab/help-extension';
  409. for (let plugin of activePlugins(ext)) {
  410. register.push(plugin);
  411. }
  412. } catch (e) {
  413. console.error(e);
  414. }
  415. }
  416. if (!queuedFederated.includes('@jupyterlab/htmlviewer-extension')) {
  417. try {
  418. let ext = require('@jupyterlab/htmlviewer-extension');
  419. ext.__scope__ = '@jupyterlab/htmlviewer-extension';
  420. for (let plugin of activePlugins(ext)) {
  421. register.push(plugin);
  422. }
  423. } catch (e) {
  424. console.error(e);
  425. }
  426. }
  427. if (!queuedFederated.includes('@jupyterlab/hub-extension')) {
  428. try {
  429. let ext = require('@jupyterlab/hub-extension');
  430. ext.__scope__ = '@jupyterlab/hub-extension';
  431. for (let plugin of activePlugins(ext)) {
  432. register.push(plugin);
  433. }
  434. } catch (e) {
  435. console.error(e);
  436. }
  437. }
  438. if (!queuedFederated.includes('@jupyterlab/imageviewer-extension')) {
  439. try {
  440. let ext = require('@jupyterlab/imageviewer-extension');
  441. ext.__scope__ = '@jupyterlab/imageviewer-extension';
  442. for (let plugin of activePlugins(ext)) {
  443. register.push(plugin);
  444. }
  445. } catch (e) {
  446. console.error(e);
  447. }
  448. }
  449. if (!queuedFederated.includes('@jupyterlab/inspector-extension')) {
  450. try {
  451. let ext = require('@jupyterlab/inspector-extension');
  452. ext.__scope__ = '@jupyterlab/inspector-extension';
  453. for (let plugin of activePlugins(ext)) {
  454. register.push(plugin);
  455. }
  456. } catch (e) {
  457. console.error(e);
  458. }
  459. }
  460. if (!queuedFederated.includes('@jupyterlab/launcher-extension')) {
  461. try {
  462. let ext = require('@jupyterlab/launcher-extension');
  463. ext.__scope__ = '@jupyterlab/launcher-extension';
  464. for (let plugin of activePlugins(ext)) {
  465. register.push(plugin);
  466. }
  467. } catch (e) {
  468. console.error(e);
  469. }
  470. }
  471. if (!queuedFederated.includes('@jupyterlab/logconsole-extension')) {
  472. try {
  473. let ext = require('@jupyterlab/logconsole-extension');
  474. ext.__scope__ = '@jupyterlab/logconsole-extension';
  475. for (let plugin of activePlugins(ext)) {
  476. register.push(plugin);
  477. }
  478. } catch (e) {
  479. console.error(e);
  480. }
  481. }
  482. if (!queuedFederated.includes('@jupyterlab/lsp-extension')) {
  483. try {
  484. let ext = require('@jupyterlab/lsp-extension');
  485. ext.__scope__ = '@jupyterlab/lsp-extension';
  486. for (let plugin of activePlugins(ext)) {
  487. register.push(plugin);
  488. }
  489. } catch (e) {
  490. console.error(e);
  491. }
  492. }
  493. if (!queuedFederated.includes('@jupyterlab/mainmenu-extension')) {
  494. try {
  495. let ext = require('@jupyterlab/mainmenu-extension');
  496. ext.__scope__ = '@jupyterlab/mainmenu-extension';
  497. for (let plugin of activePlugins(ext)) {
  498. register.push(plugin);
  499. }
  500. } catch (e) {
  501. console.error(e);
  502. }
  503. }
  504. if (!queuedFederated.includes('@jupyterlab/markdownviewer-extension')) {
  505. try {
  506. let ext = require('@jupyterlab/markdownviewer-extension');
  507. ext.__scope__ = '@jupyterlab/markdownviewer-extension';
  508. for (let plugin of activePlugins(ext)) {
  509. register.push(plugin);
  510. }
  511. } catch (e) {
  512. console.error(e);
  513. }
  514. }
  515. if (!queuedFederated.includes('@jupyterlab/markedparser-extension')) {
  516. try {
  517. let ext = require('@jupyterlab/markedparser-extension');
  518. ext.__scope__ = '@jupyterlab/markedparser-extension';
  519. for (let plugin of activePlugins(ext)) {
  520. register.push(plugin);
  521. }
  522. } catch (e) {
  523. console.error(e);
  524. }
  525. }
  526. if (!queuedFederated.includes('@jupyterlab/mathjax-extension')) {
  527. try {
  528. let ext = require('@jupyterlab/mathjax-extension');
  529. ext.__scope__ = '@jupyterlab/mathjax-extension';
  530. for (let plugin of activePlugins(ext)) {
  531. register.push(plugin);
  532. }
  533. } catch (e) {
  534. console.error(e);
  535. }
  536. }
  537. if (!queuedFederated.includes('@jupyterlab/mermaid-extension')) {
  538. try {
  539. let ext = require('@jupyterlab/mermaid-extension');
  540. ext.__scope__ = '@jupyterlab/mermaid-extension';
  541. for (let plugin of activePlugins(ext)) {
  542. register.push(plugin);
  543. }
  544. } catch (e) {
  545. console.error(e);
  546. }
  547. }
  548. if (!queuedFederated.includes('@jupyterlab/metadataform-extension')) {
  549. try {
  550. let ext = require('@jupyterlab/metadataform-extension');
  551. ext.__scope__ = '@jupyterlab/metadataform-extension';
  552. for (let plugin of activePlugins(ext)) {
  553. register.push(plugin);
  554. }
  555. } catch (e) {
  556. console.error(e);
  557. }
  558. }
  559. if (!queuedFederated.includes('@jupyterlab/notebook-extension')) {
  560. try {
  561. let ext = require('@jupyterlab/notebook-extension');
  562. ext.__scope__ = '@jupyterlab/notebook-extension';
  563. for (let plugin of activePlugins(ext)) {
  564. register.push(plugin);
  565. }
  566. } catch (e) {
  567. console.error(e);
  568. }
  569. }
  570. if (!queuedFederated.includes('@jupyterlab/pluginmanager-extension')) {
  571. try {
  572. let ext = require('@jupyterlab/pluginmanager-extension');
  573. ext.__scope__ = '@jupyterlab/pluginmanager-extension';
  574. for (let plugin of activePlugins(ext)) {
  575. register.push(plugin);
  576. }
  577. } catch (e) {
  578. console.error(e);
  579. }
  580. }
  581. if (!queuedFederated.includes('@jupyterlab/rendermime-extension')) {
  582. try {
  583. let ext = require('@jupyterlab/rendermime-extension');
  584. ext.__scope__ = '@jupyterlab/rendermime-extension';
  585. for (let plugin of activePlugins(ext)) {
  586. register.push(plugin);
  587. }
  588. } catch (e) {
  589. console.error(e);
  590. }
  591. }
  592. if (!queuedFederated.includes('@jupyterlab/running-extension')) {
  593. try {
  594. let ext = require('@jupyterlab/running-extension');
  595. ext.__scope__ = '@jupyterlab/running-extension';
  596. for (let plugin of activePlugins(ext)) {
  597. register.push(plugin);
  598. }
  599. } catch (e) {
  600. console.error(e);
  601. }
  602. }
  603. if (!queuedFederated.includes('@jupyterlab/services-extension')) {
  604. try {
  605. let ext = require('@jupyterlab/services-extension');
  606. ext.__scope__ = '@jupyterlab/services-extension';
  607. for (let plugin of activePlugins(ext)) {
  608. register.push(plugin);
  609. }
  610. } catch (e) {
  611. console.error(e);
  612. }
  613. }
  614. if (!queuedFederated.includes('@jupyterlab/settingeditor-extension')) {
  615. try {
  616. let ext = require('@jupyterlab/settingeditor-extension');
  617. ext.__scope__ = '@jupyterlab/settingeditor-extension';
  618. for (let plugin of activePlugins(ext)) {
  619. register.push(plugin);
  620. }
  621. } catch (e) {
  622. console.error(e);
  623. }
  624. }
  625. if (!queuedFederated.includes('@jupyterlab/shortcuts-extension')) {
  626. try {
  627. let ext = require('@jupyterlab/shortcuts-extension');
  628. ext.__scope__ = '@jupyterlab/shortcuts-extension';
  629. for (let plugin of activePlugins(ext)) {
  630. register.push(plugin);
  631. }
  632. } catch (e) {
  633. console.error(e);
  634. }
  635. }
  636. if (!queuedFederated.includes('@jupyterlab/statusbar-extension')) {
  637. try {
  638. let ext = require('@jupyterlab/statusbar-extension');
  639. ext.__scope__ = '@jupyterlab/statusbar-extension';
  640. for (let plugin of activePlugins(ext)) {
  641. register.push(plugin);
  642. }
  643. } catch (e) {
  644. console.error(e);
  645. }
  646. }
  647. if (!queuedFederated.includes('@jupyterlab/terminal-extension')) {
  648. try {
  649. let ext = require('@jupyterlab/terminal-extension');
  650. ext.__scope__ = '@jupyterlab/terminal-extension';
  651. for (let plugin of activePlugins(ext)) {
  652. register.push(plugin);
  653. }
  654. } catch (e) {
  655. console.error(e);
  656. }
  657. }
  658. if (!queuedFederated.includes('@jupyterlab/theme-dark-extension')) {
  659. try {
  660. let ext = require('@jupyterlab/theme-dark-extension');
  661. ext.__scope__ = '@jupyterlab/theme-dark-extension';
  662. for (let plugin of activePlugins(ext)) {
  663. register.push(plugin);
  664. }
  665. } catch (e) {
  666. console.error(e);
  667. }
  668. }
  669. if (!queuedFederated.includes('@jupyterlab/theme-dark-high-contrast-extension')) {
  670. try {
  671. let ext = require('@jupyterlab/theme-dark-high-contrast-extension');
  672. ext.__scope__ = '@jupyterlab/theme-dark-high-contrast-extension';
  673. for (let plugin of activePlugins(ext)) {
  674. register.push(plugin);
  675. }
  676. } catch (e) {
  677. console.error(e);
  678. }
  679. }
  680. if (!queuedFederated.includes('@jupyterlab/theme-light-extension')) {
  681. try {
  682. let ext = require('@jupyterlab/theme-light-extension');
  683. ext.__scope__ = '@jupyterlab/theme-light-extension';
  684. for (let plugin of activePlugins(ext)) {
  685. register.push(plugin);
  686. }
  687. } catch (e) {
  688. console.error(e);
  689. }
  690. }
  691. if (!queuedFederated.includes('@jupyterlab/toc-extension')) {
  692. try {
  693. let ext = require('@jupyterlab/toc-extension');
  694. ext.__scope__ = '@jupyterlab/toc-extension';
  695. for (let plugin of activePlugins(ext)) {
  696. register.push(plugin);
  697. }
  698. } catch (e) {
  699. console.error(e);
  700. }
  701. }
  702. if (!queuedFederated.includes('@jupyterlab/tooltip-extension')) {
  703. try {
  704. let ext = require('@jupyterlab/tooltip-extension');
  705. ext.__scope__ = '@jupyterlab/tooltip-extension';
  706. for (let plugin of activePlugins(ext)) {
  707. register.push(plugin);
  708. }
  709. } catch (e) {
  710. console.error(e);
  711. }
  712. }
  713. if (!queuedFederated.includes('@jupyterlab/translation-extension')) {
  714. try {
  715. let ext = require('@jupyterlab/translation-extension');
  716. ext.__scope__ = '@jupyterlab/translation-extension';
  717. for (let plugin of activePlugins(ext)) {
  718. register.push(plugin);
  719. }
  720. } catch (e) {
  721. console.error(e);
  722. }
  723. }
  724. if (!queuedFederated.includes('@jupyterlab/ui-components-extension')) {
  725. try {
  726. let ext = require('@jupyterlab/ui-components-extension');
  727. ext.__scope__ = '@jupyterlab/ui-components-extension';
  728. for (let plugin of activePlugins(ext)) {
  729. register.push(plugin);
  730. }
  731. } catch (e) {
  732. console.error(e);
  733. }
  734. }
  735. if (!queuedFederated.includes('@jupyterlab/video-extension')) {
  736. try {
  737. let ext = require('@jupyterlab/video-extension');
  738. ext.__scope__ = '@jupyterlab/video-extension';
  739. for (let plugin of activePlugins(ext)) {
  740. register.push(plugin);
  741. }
  742. } catch (e) {
  743. console.error(e);
  744. }
  745. }
  746. if (!queuedFederated.includes('@jupyterlab/workspaces-extension')) {
  747. try {
  748. let ext = require('@jupyterlab/workspaces-extension');
  749. ext.__scope__ = '@jupyterlab/workspaces-extension';
  750. for (let plugin of activePlugins(ext)) {
  751. register.push(plugin);
  752. }
  753. } catch (e) {
  754. console.error(e);
  755. }
  756. }
  757. // Add the federated extensions.
  758. const federatedExtensions = await Promise.allSettled(federatedExtensionPromises);
  759. federatedExtensions.forEach(p => {
  760. if (p.status === "fulfilled") {
  761. for (let plugin of activePlugins(p.value)) {
  762. register.push(plugin);
  763. }
  764. } else {
  765. console.error(p.reason);
  766. }
  767. });
  768. // Load all federated component styles and log errors for any that do not
  769. (await Promise.allSettled(federatedStylePromises)).filter(({status}) => status === "rejected").forEach(({reason}) => {
  770. console.error(reason);
  771. });
  772. // 2. Register the plugins
  773. pluginRegistry.registerPlugins(register);
  774. // 3. Get and resolve the service manager and connection status plugins
  775. const IConnectionStatus = require('@jupyterlab/services').IConnectionStatus;
  776. const IServiceManager = require('@jupyterlab/services').IServiceManager;
  777. const connectionStatus = await pluginRegistry.resolveOptionalService(IConnectionStatus);
  778. const serviceManager = await pluginRegistry.resolveRequiredService(IServiceManager);
  779. const lab = new JupyterLab({
  780. pluginRegistry,
  781. serviceManager,
  782. mimeExtensions,
  783. connectionStatus,
  784. disabled: {
  785. matches: disabled,
  786. patterns: disabledExtensions
  787. .map(function (val) { return val.raw; })
  788. },
  789. deferred: {
  790. matches: deferred,
  791. patterns: deferredExtensions
  792. .map(function (val) { return val.raw; })
  793. },
  794. availablePlugins: allPlugins
  795. });
  796. // 4. Start the application, which will activate the other plugins
  797. lab.start({ ignorePlugins, bubblingKeydown: true });
  798. // Expose global app instance when in dev mode or when toggled explicitly.
  799. var exposeAppInBrowser = (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true';
  800. var devMode = (PageConfig.getOption('devMode') || '').toLowerCase() === 'true';
  801. if (exposeAppInBrowser || devMode) {
  802. window.jupyterapp = lab;
  803. }
  804. // Handle a browser test.
  805. if (browserTest.toLowerCase() === 'true') {
  806. lab.restored
  807. .then(function() { report(errors); })
  808. .catch(function(reason) { report([`RestoreError: ${reason.message}`]); });
  809. // Handle failures to restore after the timeout has elapsed.
  810. window.setTimeout(function() { report(errors); }, timeout);
  811. }
  812. }