@@ -276,7 +276,7 @@ function node_loader_trampoline_discover_function(func) {
276
276
if ( node_loader_trampoline_is_valid_symbol ( node ) ) {
277
277
const args = node_loader_trampoline_discover_arguments ( node ) ;
278
278
const discover = {
279
- ptr : func ,
279
+ func,
280
280
signature : args ,
281
281
async : node . async ,
282
282
} ;
@@ -293,6 +293,41 @@ function node_loader_trampoline_discover_function(func) {
293
293
}
294
294
}
295
295
296
+ function node_loader_trampoline_discover_klass ( klass ) {
297
+ try {
298
+ if ( node_loader_trampoline_is_callable ( klass ) ) {
299
+ const str = klass . toString ( ) ;
300
+ const ast = espree . parse ( `(${ str } )` , {
301
+ ecmaVersion : 14
302
+ } ) ;
303
+
304
+ const node = ( ast . body [ 0 ] . type === 'ExpressionStatement' ) && ast . body [ 0 ] . expression ;
305
+
306
+ if ( node . type === 'ClassExpression' ) {
307
+ const discover = {
308
+ klass
309
+ } ;
310
+
311
+ if ( node . id && node . id . name ) {
312
+ discover [ 'name' ] = node . id . name ;
313
+ }
314
+
315
+ return discover ;
316
+ }
317
+ }
318
+ } catch ( ex ) {
319
+ console . log ( `Exception while parsing '${ klass } ' in node_loader_trampoline_discover_klass` , ex ) ;
320
+ }
321
+ }
322
+
323
+ function node_loader_trampoline_discover_object ( obj ) {
324
+ if ( typeof obj === 'object' ) {
325
+ return {
326
+ obj
327
+ } ;
328
+ }
329
+ }
330
+
296
331
function node_loader_trampoline_discover ( handle ) {
297
332
const discover = { } ;
298
333
@@ -305,8 +340,9 @@ function node_loader_trampoline_discover(handle) {
305
340
306
341
for ( let j = 0 ; j < keys . length ; ++ j ) {
307
342
const key = keys [ j ] ;
308
- const func = exports [ key ] ;
309
- const descriptor = node_loader_trampoline_discover_function ( func ) ;
343
+ const value = exports [ key ] ;
344
+ const descriptor = node_loader_trampoline_discover_function ( value )
345
+ || node_loader_trampoline_discover_klass ( value ) || node_loader_trampoline_discover_object ( value ) ;
310
346
311
347
if ( descriptor !== undefined ) {
312
348
discover [ key ] = descriptor ;
0 commit comments