@@ -80,7 +80,7 @@ if (process.removeAllListeners) {
80
80
81
81
// Use distribution files if present, otherwise run the sources directly.
82
82
function loadAssemblyScriptJS ( ) {
83
- var exports ;
83
+ var exports , tsNode ;
84
84
try {
85
85
// note that this case will always trigger in recent node.js versions for typical installs
86
86
// see: https://nodejs.org/api/packages.html#packages_self_referencing_a_package_using_its_name
@@ -90,18 +90,33 @@ function loadAssemblyScriptJS() {
90
90
exports = dynrequire ( "../dist/assemblyscript.js" ) ;
91
91
} catch ( e ) {
92
92
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 ( {
94
95
project : path . join ( __dirname , ".." , "src" , "tsconfig.json" ) ,
96
+ typeCheck : false ,
97
+ transpileOnly : true ,
98
+ compilerHost : true ,
99
+ files : true ,
95
100
skipIgnore : true ,
96
- compilerOptions : { target : "ES2016" }
101
+ moduleTypes : {
102
+ "../src/glue/js/*" : "cjs"
103
+ } ,
104
+ compilerOptions : {
105
+ module : "esnext" ,
106
+ target : "es2017"
107
+ }
97
108
} ) ;
98
109
dynrequire ( "../src/glue/js" ) ;
99
110
exports = dynrequire ( "../src" ) ;
100
111
} 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 ;
105
120
}
106
121
}
107
122
}
0 commit comments