@@ -41,28 +41,32 @@ const mkdirp = require("./util/mkdirp");
41
41
const find = require ( "./util/find" ) ;
42
42
const binaryen = global . binaryen || ( global . binaryen = require ( "binaryen" ) ) ;
43
43
44
+ const dynrequire = typeof __webpack_require__ === "function"
45
+ ? __non_webpack_require__
46
+ : require ;
47
+
44
48
const WIN = process . platform === "win32" ;
45
49
const EOL = WIN ? "\r\n" : "\n" ;
46
50
const SEP = WIN ? "\\" : "/" ;
47
51
48
52
// Sets up an extension with its definition counterpart and relevant regexes.
49
- function setupExtension ( extension ) {
50
- if ( ! extension . startsWith ( "." ) ) extension = "." + extension ;
53
+ function setupExtension ( ext ) {
54
+ if ( ! ext . startsWith ( "." ) ) ext = "." + ext ;
51
55
return {
52
- ext : extension ,
53
- ext_d : ".d" + extension ,
54
- re : new RegExp ( "\\" + extension + "$" ) ,
55
- re_d : new RegExp ( "\\.d\\" + extension + "$" ) ,
56
- re_except_d : new RegExp ( "^(?!.*\\.d\\" + extension + "$).*\\" + extension + "$" ) ,
57
- re_index : new RegExp ( "(?:^|[\\\\\\/])index\\" + extension + "$" )
56
+ ext,
57
+ ext_d : ".d" + ext ,
58
+ re : new RegExp ( "\\" + ext + "$" ) ,
59
+ re_d : new RegExp ( "\\.d\\" + ext + "$" ) ,
60
+ re_except_d : new RegExp ( "^(?!.*\\.d\\" + ext + "$).*\\" + ext + "$" ) ,
61
+ re_index : new RegExp ( "(?:^|[\\\\\\/])index\\" + ext + "$" )
58
62
} ;
59
63
}
60
64
61
65
const defaultExtension = setupExtension ( ".ts" ) ;
62
66
63
67
// Proxy Binaryen's ready event
64
68
Object . defineProperty ( exports , "ready" , {
65
- get : function ( ) { return binaryen . ready ; }
69
+ get ( ) { return binaryen . ready ; }
66
70
} ) ;
67
71
68
72
// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional
@@ -76,24 +80,21 @@ var isDev = false;
76
80
try {
77
81
assemblyscript = require ( "assemblyscript" ) ;
78
82
} catch ( e ) {
79
- function dynRequire ( ...args ) {
80
- return eval ( "require" ) ( ...args ) ;
81
- }
82
83
try { // `asc` on the command line
83
- assemblyscript = dynRequire ( "../dist/assemblyscript.js" ) ;
84
+ assemblyscript = dynrequire ( "../dist/assemblyscript.js" ) ;
84
85
} catch ( e ) {
85
86
try { // `asc` on the command line without dist files
86
- dynRequire ( "ts-node" ) . register ( {
87
+ dynrequire ( "ts-node" ) . register ( {
87
88
project : path . join ( __dirname , ".." , "src" , "tsconfig.json" ) ,
88
89
skipIgnore : true ,
89
90
compilerOptions : { target : "ES2016" }
90
91
} ) ;
91
- dynRequire ( "../src/glue/js" ) ;
92
- assemblyscript = dynRequire ( "../src" ) ;
92
+ dynrequire ( "../src/glue/js" ) ;
93
+ assemblyscript = dynrequire ( "../src" ) ;
93
94
isDev = true ;
94
95
} catch ( e_ts ) {
95
96
try { // `require("dist/asc.js")` in explicit browser tests
96
- assemblyscript = dynRequire ( "./assemblyscript" ) ;
97
+ assemblyscript = dynrequire ( "./assemblyscript" ) ;
97
98
} catch ( e ) {
98
99
throw Error ( e_ts . stack + "\n---\n" + e . stack ) ;
99
100
}
@@ -109,7 +110,7 @@ exports.isBundle = typeof BUNDLE_VERSION === "string";
109
110
exports . isDev = isDev ;
110
111
111
112
/** AssemblyScript version. */
112
- exports . version = exports . isBundle ? BUNDLE_VERSION : require ( "../package.json" ) . version ;
113
+ exports . version = exports . isBundle ? BUNDLE_VERSION : dynrequire ( "../package.json" ) . version ;
113
114
114
115
/** Available CLI options. */
115
116
exports . options = require ( "./asc.json" ) ;
@@ -129,16 +130,21 @@ exports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if
129
130
const bundled = { } ;
130
131
find
131
132
. files ( libDir , defaultExtension . re_except_d )
132
- . forEach ( file => bundled [ file . replace ( defaultExtension . re , "" ) ] = fs . readFileSync ( path . join ( libDir , file ) , "utf8" ) ) ;
133
+ . forEach ( file => {
134
+ bundled [ file . replace ( defaultExtension . re , "" ) ] = fs . readFileSync ( path . join ( libDir , file ) , "utf8" ) ;
135
+ } ) ;
133
136
return bundled ;
134
137
} ) ( ) ;
135
138
136
139
/** Bundled definition files. */
137
140
exports . definitionFiles = exports . isBundle ? BUNDLE_DEFINITIONS : ( ( ) => { // set up if not a bundle
138
- const stdDir = path . join ( __dirname , ".." , "std" ) ;
141
+ const readDefinition = name => fs . readFileSync (
142
+ path . join ( __dirname , ".." , "std" , name , "index" + defaultExtension . ext_d ) ,
143
+ "utf8"
144
+ ) ;
139
145
return {
140
- " assembly" : fs . readFileSync ( path . join ( stdDir , "assembly" , "index" + defaultExtension . ext_d ) , "utf8 ") ,
141
- " portable" : fs . readFileSync ( path . join ( stdDir , "portable" , "index" + defaultExtension . ext_d ) , "utf8 ")
146
+ assembly : readDefinition ( "assembly" ) ,
147
+ portable : readDefinition ( "portable" )
142
148
} ;
143
149
} ) ( ) ;
144
150
@@ -159,15 +165,17 @@ exports.compileString = (sources, options) => {
159
165
if ( opt && opt . type === "b" ) {
160
166
if ( val ) argv . push ( "--" + key ) ;
161
167
} else {
162
- if ( Array . isArray ( val ) ) val . forEach ( val => argv . push ( "--" + key , String ( val ) ) ) ;
168
+ if ( Array . isArray ( val ) ) {
169
+ val . forEach ( val => { argv . push ( "--" + key , String ( val ) ) ; } ) ;
170
+ }
163
171
else argv . push ( "--" + key , String ( val ) ) ;
164
172
}
165
173
} ) ;
166
174
exports . main ( argv . concat ( Object . keys ( sources ) ) , {
167
175
stdout : output . stdout ,
168
176
stderr : output . stderr ,
169
177
readFile : name => Object . prototype . hasOwnProperty . call ( sources , name ) ? sources [ name ] : null ,
170
- writeFile : ( name , contents ) => output [ name ] = contents ,
178
+ writeFile : ( name , contents ) => { output [ name ] = contents ; } ,
171
179
listFiles : ( ) => [ ]
172
180
} ) ;
173
181
return output ;
@@ -417,11 +425,11 @@ exports.main = function main(argv, options, callback) {
417
425
for ( let i = 0 , k = transformArgs . length ; i < k ; ++ i ) {
418
426
let filename = transformArgs [ i ] . trim ( ) ;
419
427
if ( ! tsNodeRegistered && filename . endsWith ( ".ts" ) ) { // ts-node requires .ts specifically
420
- require ( "ts-node" ) . register ( { transpileOnly : true , skipProject : true , compilerOptions : { target : "ES2016" } } ) ;
428
+ dynrequire ( "ts-node" ) . register ( { transpileOnly : true , skipProject : true , compilerOptions : { target : "ES2016" } } ) ;
421
429
tsNodeRegistered = true ;
422
430
}
423
431
try {
424
- const classOrModule = require ( require . resolve ( filename , { paths : [ baseDir , process . cwd ( ) ] } ) ) ;
432
+ const classOrModule = dynrequire ( dynrequire . resolve ( filename , { paths : [ baseDir , process . cwd ( ) ] } ) ) ;
425
433
if ( typeof classOrModule === "function" ) {
426
434
Object . assign ( classOrModule . prototype , {
427
435
program,
@@ -953,11 +961,10 @@ exports.main = function main(argv, options, callback) {
953
961
filename = path . basename ( filename ) ;
954
962
const outputFilePath = path . join ( dirPath , filename ) ;
955
963
if ( ! fs . existsSync ( dirPath ) ) mkdirp ( dirPath ) ;
956
- if ( typeof contents === "string" ) {
957
- fs . writeFileSync ( outputFilePath , contents , { encoding : "utf8" } ) ;
958
- } else {
959
- fs . writeFileSync ( outputFilePath , contents ) ;
960
- }
964
+ fs . writeFileSync (
965
+ outputFilePath , contents ,
966
+ typeof contents === "string" ? { encoding : "utf8" } : void 0
967
+ ) ;
961
968
} ) ;
962
969
return true ;
963
970
} catch ( e ) {
@@ -970,7 +977,8 @@ exports.main = function main(argv, options, callback) {
970
977
try {
971
978
stats . readCount ++ ;
972
979
stats . readTime += measure ( ( ) => {
973
- files = fs . readdirSync ( path . join ( baseDir , dirname ) ) . filter ( file => extension . re_except_d . test ( file ) ) ;
980
+ files = fs . readdirSync ( path . join ( baseDir , dirname ) )
981
+ . filter ( file => extension . re_except_d . test ( file ) ) ;
974
982
} ) ;
975
983
return files ;
976
984
} catch ( e ) {
@@ -1111,9 +1119,7 @@ exports.formatTime = formatTime;
1111
1119
1112
1120
/** Formats and prints out the contents of a set of stats. */
1113
1121
function printStats ( stats , output ) {
1114
- function format ( time , count ) {
1115
- return pad ( formatTime ( time ) , 12 ) + " n=" + count ;
1116
- }
1122
+ const format = ( time , count ) => pad ( formatTime ( time ) , 12 ) + " n=" + count ;
1117
1123
( output || process . stdout ) . write ( [
1118
1124
"I/O Read : " + format ( stats . readTime , stats . readCount ) ,
1119
1125
"I/O Write : " + format ( stats . writeTime , stats . writeCount ) ,
@@ -1130,8 +1136,8 @@ function printStats(stats, output) {
1130
1136
exports . printStats = printStats ;
1131
1137
1132
1138
var allocBuffer = typeof global !== "undefined" && global . Buffer
1133
- ? global . Buffer . allocUnsafe || function ( len ) { return new global . Buffer ( len ) ; }
1134
- : function ( len ) { return new Uint8Array ( len ) ; } ;
1139
+ ? global . Buffer . allocUnsafe || ( len => new global . Buffer ( len ) )
1140
+ : len => new Uint8Array ( len ) ;
1135
1141
1136
1142
/** Creates a memory stream that can be used in place of stdout/stderr. */
1137
1143
function createMemoryStream ( fn ) {
0 commit comments