Check if loadProject input is any typed array using ArrayBuffer.isView. This allows us to pass a project's asset.data (from storage) directly instead of calling toString on it first.

This commit is contained in:
Karishma Chadha 2018-03-22 14:04:58 -04:00
parent 2c3e3472ed
commit 3a4f620318

View file

@ -182,8 +182,13 @@ class VirtualMachine extends EventEmitter {
* @return {!Promise} Promise that resolves after targets are installed.
*/
loadProject (input) {
if (typeof input === 'object' && !(input instanceof ArrayBuffer)) {
if (typeof input === 'object' && !ArrayBuffer.isView(input)) {
// If the input is an object and not any ArrayBuffer view
// (this includes all typed arrays and DataViews)
// turn the object into a JSON string, because we suspect
// this is a project.json as an object
// validate expects a string or buffer as input
// TODO not sure if we need to check that it also isn't a data view
input = JSON.stringify(input);
}