125125 # output , # output2
126126 {font-family : monospace;font-size : 16px }
127127
128- # item , # item2
129- {margin : 20px 0 ;border : 1px solid lightgray;padding : 10px ;display : flex;flex-direction : column;gap : 10px }
128+ # item
129+ {margin : 20px 0 ;border : 1px solid lightgray;padding : 10px ;
130+ /*display:flex;flex-direction:column;gap:10px*/
131+ }
130132
131133
132- # item # values , # item2 # values
134+ # item # values
133135 {display : grid;grid-template-columns : max-content max-content 1fr ;gap : 1rem 2rem }
134136
135- # item # name , # item2 # name
137+ # item # name
136138 {font-weight : bold}
137139
138- # item # type , # item2 # type
140+ # item # type
139141 {}
140142
141- # item # desc , # item2 # desc
143+ # item # desc
142144 {line-height : 1.4 }
143145
144146
145147 # hdr
146- {display : flex}
148+ {display : flex;margin-bottom : 10px }
149+
150+ # info
151+ {margin-bottom : 10px }
147152
148153 # url
149154 {font-weight : bold;margin-bottom : 10px }
208213 < div class =spc > </ div >
209214 < img class =close >
210215 </ div >
216+ < div id =info >
217+ </ div >
211218 < div id =values >
212219 < div id =name >
213220 </ div >
295302 $ ( '#import .copy' ) . onclick = e => navigator . clipboard . writeText ( src2 . value ) ;
296303 $ ( '#import .paste' ) . onclick = async e => { var txt = await navigator . clipboard . readText ( ) ; src2 . value = txt } ;
297304
305+ src2 . value = 'https://unpkg.com/es-module-lexer?module' ;
306+
298307 go2 . onclick = function ( ) {
299308
300309 process . import ( src2 . value ) ;
312321 process . script = async function ( src ) {
313322 console . log ( 'process.script' , src ) ;
314323 var nitem = display ( output , src ) ;
315-
316324 var values = $ ( nitem , '#values' ) ;
317325
318326 var { win, doc} = await niframe ( ) ;
@@ -355,15 +363,26 @@ <h3>
355363
356364
357365 process . import = async function ( src ) {
358-
359- var nitem = display ( output2 , src ) ;
366+ console . log ( 'process.import' ) ;
367+ var nitem = display ( output2 , src ) ;
368+ var values = $ ( nitem , '#values' ) ;
360369
361- var { win, doc} = await niframe ( ) ;
370+ var { win, doc} = await niframe ( ) ;
362371 setup . win ( win , values ) ;
363372
364- var js = fnstr ( fn ) ;
365- win . eval ( js ) ;
366- var mod = await win . fn ( src ) ;
373+ var script = document . createElement ( 'script' ) ;
374+ script . textContent = fnstr ( fn ) ;
375+ doc . head . append ( script ) ;
376+
377+ //var js = fnstr(fn);
378+ //win.eval(js);
379+
380+ var { mod, err} = await win . fn ( src ) ;
381+
382+ if ( err ) {
383+ display . error ( values , err ) ;
384+ return ;
385+ }
367386
368387 if ( mod === null || typeof mod != 'object' ) {
369388 display . mod ( values , mod ) ;
@@ -379,9 +398,23 @@ <h3>
379398
380399 async function fn ( src ) {
381400
382- var mod = await import ( src ) ;
401+ var err ;
402+ try {
403+
404+ var mod = await import ( src ) ;
405+
406+ } //try
407+ catch ( err2 ) {
408+
409+ err = err2 ;
410+
411+ } //catch
412+ if ( err ) {
413+ console . error ( err ) ;
414+ return { err} ;
415+ }
383416 console . log ( mod ) ;
384- return mod ;
417+ return { mod} ;
385418
386419 } //fn
387420
@@ -438,11 +471,24 @@ <h3>
438471 $ ( nitem , '.close' ) . onclick = e => nitem . remove ( ) ;
439472 root . append ( nitem ) ;
440473
474+ display . info ( nitem , src ) ;
475+
441476 return nitem ;
442477
443478 } //display
444479
445480
481+ display . info = async function ( nitem , src ) {
482+
483+ var { txt, error} = await get ( src ) ;
484+ if ( error ) return ;
485+
486+ var str = detect ( txt ) ;
487+ console . log ( str ) ;
488+
489+ } //info
490+
491+
446492 display . mod = function ( root , v ) {
447493
448494 var str = String ( v ) ;
@@ -476,7 +522,12 @@ <h3>
476522 } //display
477523
478524
479- display . error = function ( ) {
525+ display . error = function ( values , err ) {
526+
527+ var error = err . toString ( ) ;
528+ values . textContent = error ;
529+ values . classList . add ( 'error' ) ;
530+
480531 } //error
481532
482533
510561
511562 var resolve , promise = new Promise ( res => resolve = res ) ;
512563
513- var iframe = document . createElement ( 'iframe' ) ;
514- iframe . style . cssText = 'display:none' ;
515- iframe . onload = onload ;
564+ var iframe = document . createElement ( 'iframe' ) ;
565+ iframe . onload = onload ;
516566 document . body . append ( iframe ) ;
517567
518568 return promise ;
@@ -558,19 +608,21 @@ <h3>
558608 function fnstr ( fn , full = true ) {
559609
560610 var str = fn . toString ( ) ;
611+
561612 if ( full ) {
562613 return str ;
563614 }
564- var i1 = str . indexOf ( '{' ) ;
565- var i2 = str . lastIndexOf ( '}' ) ;
566- var fnstr = str . slice ( i1 + 1 , i2 ) ;
615+
616+ var i1 = str . indexOf ( '{' ) ;
617+ var i2 = str . lastIndexOf ( '}' ) ;
618+ var fnstr = str . slice ( i1 + 1 , i2 ) ;
567619 return fnstr ;
568620
569621 } //fnstr
570622
571623
572624 async function get ( url ) {
573-
625+ console . log ( 'get' , url ) ;
574626 var err ;
575627 try {
576628
@@ -583,13 +635,15 @@ <h3>
583635
584636 } //catch
585637 if ( err ) {
638+ console . error ( err ) ;
586639 var error = err . toString ( ) ;
587640 return { error} ;
588641 }
589642
590643 var txt = await res . text ( ) ;
591644 if ( ! res . ok ) {
592645 var error = `[ ( ${ res . status } ) ${ res . statusText } ] ${ txt } ` ;
646+ console . log ( error ) ;
593647 return { error} ;
594648 }
595649
607661
608662 detect = async function ( code ) {
609663
610- await init ( ) ;
664+ await init ;
611665
612666 var [ imports , exports ] = parse ( code ) ;
613667
0 commit comments