@@ -15,6 +15,7 @@ import '@jupyterlab/console/style/index.js';
15
15
import '@jupyterlab/completer/style/index.js' ;
16
16
import '../style/index.css' ;
17
17
import './sharedscope' ;
18
+ import { Shell } from './app/shell' ;
18
19
19
20
function loadScript ( url : string ) {
20
21
return new Promise ( ( resolve , reject ) => {
@@ -61,7 +62,6 @@ async function createModule(scope: string, module: string) {
61
62
async function main ( ) : Promise < void > {
62
63
// Inject some packages in the shared scope
63
64
64
- const app = new App ( ) ;
65
65
// populate the list of disabled extensions
66
66
const disabled : any [ ] = [
67
67
'jupytercad:serverInfoPlugin' ,
@@ -142,8 +142,12 @@ async function main(): Promise<void> {
142
142
require ( './app/plugins/browser' ) ,
143
143
require ( './app/plugins/launcher' )
144
144
] ;
145
+ const mimeExtensions = [
146
+ require ( '@jupyterlab/json-extension' ) ,
147
+ ] ;
145
148
146
149
const federatedExtensionPromises : Promise < any > [ ] = [ ] ;
150
+ const federatedMimeExtensionPromises : Promise < any > [ ] = [ ] ;
147
151
const federatedStylePromises : Promise < any > [ ] = [ ] ;
148
152
149
153
const extension_data = JSON . parse (
@@ -176,8 +180,9 @@ async function main(): Promise<void> {
176
180
federatedExtensionPromises . push ( createModule ( data . name , data . extension ) ) ;
177
181
}
178
182
if ( data . mimeExtension ) {
179
- // TODO Do we need mime extensions?
180
- return ;
183
+ federatedMimeExtensionPromises . push (
184
+ createModule ( data . name , data . mimeExtension )
185
+ ) ;
181
186
}
182
187
if ( data . style && ! PageConfig . Extension . isDisabled ( data . name ) ) {
183
188
federatedStylePromises . push ( createModule ( data . name , data . style ) ) ;
@@ -200,13 +205,28 @@ async function main(): Promise<void> {
200
205
}
201
206
} ) ;
202
207
208
+ // Add the federated mime extensions.
209
+ const federatedMimeExtensions = await Promise . allSettled (
210
+ federatedMimeExtensionPromises
211
+ ) ;
212
+ federatedMimeExtensions . forEach ( ( p ) => {
213
+ if ( p . status === 'fulfilled' ) {
214
+ for ( const plugin of activePlugins ( p . value ) ) {
215
+ mimeExtensions . push ( plugin ) ;
216
+ }
217
+ } else {
218
+ console . error ( p . reason ) ;
219
+ }
220
+ } ) ;
221
+
203
222
// Load all federated component styles and log errors for any that do not
204
223
( await Promise . allSettled ( federatedStylePromises ) )
205
224
. filter ( ( { status } ) => status === 'rejected' )
206
225
. forEach ( e => {
207
226
console . error ( ( e as any ) . reason ) ;
208
227
} ) ;
209
228
229
+ const app = new App ( { mimeExtensions, shell : new Shell ( ) } ) ;
210
230
app . registerPluginModules ( mods ) ;
211
231
212
232
await app . start ( ) ;
0 commit comments