@@ -40,7 +40,7 @@ const mkdirp = require("./util/mkdirp");
40
40
const find = require ( "./util/find" ) ;
41
41
const EOL = process . platform === "win32" ? "\r\n" : "\n" ;
42
42
const SEP = process . platform === "win32" ? "\\" : "/" ;
43
- const binaryen = global . Binaryen || ( global . Binaryen = require ( "binaryen" ) ) ;
43
+ const binaryen = global . binaryen || ( global . binaryen = require ( "binaryen" ) ) ;
44
44
45
45
// Proxy Binaryen's ready event
46
46
Object . defineProperty ( exports , "ready" , {
@@ -51,28 +51,38 @@ Object.defineProperty(exports, "ready", {
51
51
// useless code fragment on top of an actual error. suppress this:
52
52
if ( process . removeAllListeners ) process . removeAllListeners ( "uncaughtException" ) ;
53
53
54
- // Use distribution files if present, otherwise run the sources directly
55
- var assemblyscript , isDev = false ;
56
- try { // `asc` on the command line
57
- assemblyscript = require ( "../dist/assemblyscript.js" ) ;
58
- } catch ( e ) {
59
- try { // `asc` on the command line without dist files
60
- require ( "ts-node" ) . register ( {
61
- project : path . join ( __dirname , ".." , "src" , "tsconfig.json" ) ,
62
- skipIgnore : true ,
63
- compilerOptions : { target : "ES2016" }
64
- } ) ;
65
- require ( "../src/glue/js" ) ;
66
- assemblyscript = require ( "../src" ) ;
67
- isDev = true ;
68
- } catch ( e_ts ) {
69
- try { // `require("dist/asc.js")` in explicit browser tests
70
- assemblyscript = eval ( "require('./assemblyscript')" ) ;
54
+ // Use distribution files if present, otherwise run the sources directly.
55
+ var assemblyscript ;
56
+ var isDev = false ;
57
+ ( function loadAssemblyScript ( ) {
58
+ try {
59
+ assemblyscript = require ( "assemblyscript" ) ;
60
+ } catch ( e ) {
61
+ function dynRequire ( ...args ) {
62
+ return eval ( "require" ) ( ...args ) ;
63
+ }
64
+ try { // `asc` on the command line
65
+ assemblyscript = dynRequire ( "../dist/assemblyscript.js" ) ;
71
66
} catch ( e ) {
72
- throw Error ( e_ts . stack + "\n---\n" + e . stack ) ;
67
+ try { // `asc` on the command line without dist files
68
+ dynRequire ( "ts-node" ) . register ( {
69
+ project : path . join ( __dirname , ".." , "src" , "tsconfig.json" ) ,
70
+ skipIgnore : true ,
71
+ compilerOptions : { target : "ES2016" }
72
+ } ) ;
73
+ dynRequire ( "../src/glue/js" ) ;
74
+ assemblyscript = dynRequire ( "../src" ) ;
75
+ isDev = true ;
76
+ } catch ( e_ts ) {
77
+ try { // `require("dist/asc.js")` in explicit browser tests
78
+ assemblyscript = dynRequire ( "./assemblyscript" ) ;
79
+ } catch ( e ) {
80
+ throw Error ( e_ts . stack + "\n---\n" + e . stack ) ;
81
+ }
82
+ }
73
83
}
74
84
}
75
- }
85
+ } ) ( ) ;
76
86
77
87
/** Whether this is a webpack bundle or not. */
78
88
exports . isBundle = typeof BUNDLE_VERSION === "string" ;
0 commit comments