@@ -80,7 +80,7 @@ if (process.removeAllListeners) {
8080
8181// Use distribution files if present, otherwise run the sources directly.
8282function loadAssemblyScriptJS ( ) {
83- var exports ;
83+ var exports , tsNode ;
8484 try {
8585 // note that this case will always trigger in recent node.js versions for typical installs
8686 // see: https://nodejs.org/api/packages.html#packages_self_referencing_a_package_using_its_name
@@ -90,18 +90,33 @@ function loadAssemblyScriptJS() {
9090 exports = dynrequire ( "../dist/assemblyscript.js" ) ;
9191 } catch ( e ) {
9292 try { // `asc` on the command line without dist files (unnecessary in recent node)
93- dynrequire ( "ts-node" ) . register ( {
93+ tsNode = dynrequire ( "ts-node" ) ;
94+ tsNode . register ( {
9495 project : path . join ( __dirname , ".." , "src" , "tsconfig.json" ) ,
96+ typeCheck : false ,
97+ transpileOnly : true ,
98+ compilerHost : true ,
99+ files : true ,
95100 skipIgnore : true ,
96- compilerOptions : { target : "ES2016" }
101+ moduleTypes : {
102+ "../src/glue/js/*" : "cjs"
103+ } ,
104+ compilerOptions : {
105+ module : "esnext" ,
106+ target : "es2017"
107+ }
97108 } ) ;
98109 dynrequire ( "../src/glue/js" ) ;
99110 exports = dynrequire ( "../src" ) ;
100111 } catch ( e_ts ) {
101- try { // `require("dist/asc.js")` in explicit browser tests
102- exports = dynrequire ( "./assemblyscript" ) ;
103- } catch ( e ) {
104- throw Error ( `${ e_ts . stack } \n---\n${ e . stack } ` ) ;
112+ if ( ! tsNode || ! ( e_ts instanceof tsNode . TSError ) ) {
113+ try { // `require("dist/asc.js")` in explicit browser tests
114+ exports = dynrequire ( "./assemblyscript" ) ;
115+ } catch ( e ) {
116+ throw Error ( `${ e_ts . stack } \n---\n${ e . stack } ` ) ;
117+ }
118+ } else {
119+ throw e_ts ;
105120 }
106121 }
107122 }
0 commit comments