esbuild-wasm
Advanced tools
Comparing version 0.0.7 to 0.0.8
{ | ||
"name": "esbuild-wasm", | ||
"version": "0.0.7", | ||
"version": "0.0.8", | ||
"description": "The cross-platform WebAssembly binary for esbuild, a JavaScript bundler.", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/evanw/esbuild", |
126
wasm_exec.js
@@ -6,2 +6,11 @@ // Copyright 2018 The Go Authors. All rights reserved. | ||
(() => { | ||
// Map multiple JavaScript environments to a single common API, | ||
// preferring web standards over Node.js API. | ||
// | ||
// Environments considered: | ||
// - Browsers | ||
// - Node.js | ||
// - Electron | ||
// - Parcel | ||
if (typeof global !== "undefined") { | ||
@@ -17,26 +26,11 @@ // global already exists | ||
// Map web browser API and Node.js API to a single common API (preferring web standards over Node.js API). | ||
const isNodeJS = global.process && global.process.title === "node"; | ||
if (isNodeJS) { | ||
if (!global.require && typeof require !== "undefined") { | ||
global.require = require; | ||
} | ||
if (!global.fs && global.require) { | ||
global.fs = require("fs"); | ||
} | ||
const nodeCrypto = require("crypto"); | ||
global.crypto = { | ||
getRandomValues(b) { | ||
nodeCrypto.randomFillSync(b); | ||
}, | ||
}; | ||
global.performance = { | ||
now() { | ||
const [sec, nsec] = process.hrtime(); | ||
return sec * 1000 + nsec / 1000000; | ||
}, | ||
}; | ||
const util = require("util"); | ||
global.TextEncoder = util.TextEncoder; | ||
global.TextDecoder = util.TextDecoder; | ||
} else { | ||
if (!global.fs) { | ||
let outputBuf = ""; | ||
@@ -77,2 +71,30 @@ global.fs = { | ||
if (!global.crypto) { | ||
const nodeCrypto = require("crypto"); | ||
global.crypto = { | ||
getRandomValues(b) { | ||
nodeCrypto.randomFillSync(b); | ||
}, | ||
}; | ||
} | ||
if (!global.performance) { | ||
global.performance = { | ||
now() { | ||
const [sec, nsec] = process.hrtime(); | ||
return sec * 1000 + nsec / 1000000; | ||
}, | ||
}; | ||
} | ||
if (!global.TextEncoder) { | ||
global.TextEncoder = require("util").TextEncoder; | ||
} | ||
if (!global.TextDecoder) { | ||
global.TextDecoder = require("util").TextDecoder; | ||
} | ||
// End of polyfills for common API. | ||
const encoder = new TextEncoder("utf-8"); | ||
@@ -249,3 +271,11 @@ const decoder = new TextDecoder("utf-8"); | ||
this._scheduledTimeouts.set(id, setTimeout( | ||
() => { this._resume(); }, | ||
() => { | ||
this._resume(); | ||
while (this._scheduledTimeouts.has(id)) { | ||
// for some reason Go failed to register the timeout event, log and try again | ||
// (temporary workaround for https://github.com/golang/go/issues/28975) | ||
console.warn("scheduleTimeoutEvent: missed timeout event"); | ||
this._resume(); | ||
} | ||
}, | ||
getInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early | ||
@@ -364,2 +394,30 @@ )); | ||
// func copyBytesToGo(dst []byte, src ref) (int, bool) | ||
"syscall/js.copyBytesToGo": (sp) => { | ||
const dst = loadSlice(sp + 8); | ||
const src = loadValue(sp + 32); | ||
if (!(src instanceof Uint8Array)) { | ||
mem().setUint8(sp + 48, 0); | ||
return; | ||
} | ||
const toCopy = src.subarray(0, dst.length); | ||
dst.set(toCopy); | ||
setInt64(sp + 40, toCopy.length); | ||
mem().setUint8(sp + 48, 1); | ||
}, | ||
// func copyBytesToJS(dst ref, src []byte) (int, bool) | ||
"syscall/js.copyBytesToJS": (sp) => { | ||
const dst = loadValue(sp + 8); | ||
const src = loadSlice(sp + 16); | ||
if (!(dst instanceof Uint8Array)) { | ||
mem().setUint8(sp + 48, 0); | ||
return; | ||
} | ||
const toCopy = src.subarray(0, dst.length); | ||
dst.set(toCopy); | ||
setInt64(sp + 40, toCopy.length); | ||
mem().setUint8(sp + 48, 1); | ||
}, | ||
"debug": (value) => { | ||
@@ -381,3 +439,2 @@ console.log(value); | ||
global, | ||
this._inst.exports.mem, | ||
this, | ||
@@ -394,5 +451,9 @@ ]; | ||
const strPtr = (str) => { | ||
let ptr = offset; | ||
new Uint8Array(mem.buffer, offset, str.length + 1).set(encoder.encode(str + "\0")); | ||
offset += str.length + (8 - (str.length % 8)); | ||
const ptr = offset; | ||
const bytes = encoder.encode(str + "\0"); | ||
new Uint8Array(mem.buffer, offset, bytes.length).set(bytes); | ||
offset += bytes.length; | ||
if (offset % 8 !== 0) { | ||
offset += 8 - (offset % 8); | ||
} | ||
return ptr; | ||
@@ -449,5 +510,11 @@ }; | ||
if (isNodeJS) { | ||
if ( | ||
global.require && | ||
global.require.main === module && | ||
global.process && | ||
global.process.versions && | ||
!global.process.versions.electron | ||
) { | ||
if (process.argv.length < 3) { | ||
process.stderr.write("usage: go_js_wasm_exec [wasm binary] [arguments]\n"); | ||
console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); | ||
process.exit(1); | ||
@@ -470,5 +537,6 @@ } | ||
}).catch((err) => { | ||
throw err; | ||
console.error(err); | ||
process.exit(1); | ||
}); | ||
} | ||
})(); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
473
4319182