├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── demo.html
├── demo.js
├── demo.wasm
├── dev
├── emscripten.cpp
└── wasm-arrays.js
├── dist
└── wasm-arrays.min.js
├── gruntfile.js
├── package-lock.json
├── package.json
├── server.js
└── test
└── test.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .nyc_output
3 | coverage
4 | Plan.todo
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - 8.4.0
5 | after_success:
6 | - npm run coverage
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Dan Ruta
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # wasm-arrays
2 | [](https://travis-ci.org/DanRuta/wasm-arrays) [](https://coveralls.io/github/DanRuta/wasm-arrays?branch=master)
3 |
4 | [](https://nodei.co/npm/wasm-arrays/)
5 |
6 | A couple of helper functions to make WebAssembly array parameters easy to use.
7 |
8 | ## Read more
9 | Medium article going through the reasoning and implementation:
10 |
11 | https://becominghuman.ai/passing-and-returning-webassembly-array-parameters-a0f572c65d97
12 |
13 | ## Importing
14 | ### Browser
15 | Add `````` and use ```ccallArrays``` or ```cwrapArrays```
16 | See the demo.html file included to see a few examples.
17 |
18 | NOTE: You will need to serve the html file through a server. There is one already included, so you can run ```node server```, then navigate to ```localhost:1337``` to view.
19 |
20 | ### Nodejs
21 | ```javascript
22 | const {ccallArrays, cwrapArrays} = require("./wasm-arrays.js")
23 | ```
24 | You can see the ```test.js``` file to see more nodejs examples.
25 |
26 | ## Usage
27 |
28 | **There are a few examples included in the demo.html, test.js and emscripten.cpp files, for their respective use cases**
29 |
30 | You can also see some more in-depth, real usage examples in my jsNet framework (https://github.com/DanRuta/jsNet), where this has been expanded to also pass maps and volumes.
31 |
32 | The included functions aim to mimick the WebAssembly ccall and cwrap functions. They therefore work the same way.
33 |
34 | If you need to pass an array parameter, you need to just add the parameter to the list of parameters.
35 |
36 | In the C++ code, this will be turned into two parameters:
37 | 1. Array pointer
38 | 2. Array size
39 |
40 | #### Example:
41 | JavaScript
42 | ```javascript
43 | const result = ccallArrays("addNums", "number", ["array"], [[1,2,3,4,5,6,7]])
44 | ```
45 | C++
46 | ```c++
47 | EMSCRIPTEN_KEEPALIVE
48 | int addNums (float *buf, int bufSize) {
49 |
50 | int total = 0;
51 |
52 | for (int i=0; i
2 |
3 |
4 | Demo - wasm-arrays
5 |
6 |
7 |
21 |
22 |
23 | Open the console (Make sure you are serving this page via a server. Run 'node server.js' to use the one included.)
24 |
25 |
--------------------------------------------------------------------------------
/demo.js:
--------------------------------------------------------------------------------
1 | var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*4294967296:+(low>>>0)+ +(high|0)*4294967296;return ret}),GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;function integrateWasmJS(Module){var method=Module["wasmJSMethod"]||"native-wasm";Module["wasmJSMethod"]=method;var wasmTextFile=Module["wasmTextFile"]||"demo.wast";var wasmBinaryFile=Module["wasmBinaryFile"]||"demo.wasm";var asmjsCodeFile=Module["asmjsCodeFile"]||"demo.temp.asm.js";if(typeof Module["locateFile"]==="function"){wasmTextFile=Module["locateFile"](wasmTextFile);wasmBinaryFile=Module["locateFile"](wasmBinaryFile);asmjsCodeFile=Module["locateFile"](asmjsCodeFile)}var wasmPageSize=64*1024;var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"f64-to-int":(function(x){return x|0}),"i32s-div":(function(x,y){return(x|0)/(y|0)|0}),"i32u-div":(function(x,y){return(x>>>0)/(y>>>0)>>>0}),"i32s-rem":(function(x,y){return(x|0)%(y|0)|0}),"i32u-rem":(function(x,y){return(x>>>0)%(y>>>0)>>>0}),"debugger":(function(){debugger})};var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function lookupImport(mod,base){var lookup=info;if(mod.indexOf(".")<0){lookup=(lookup||{})[mod]}else{var parts=mod.split(".");lookup=(lookup||{})[parts[0]];lookup=(lookup||{})[parts[1]]}if(base){lookup=(lookup||{})[base]}if(lookup===undefined){abort("bad lookupImport to ("+mod+")."+base)}return lookup}function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength=0||Module["wasmJSMethod"].indexOf("interpret-asm2wasm")>=0?"demo.js.mem":null;var STATIC_BUMP=5520;Module["STATIC_BASE"]=STATIC_BASE;Module["STATIC_BUMP"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_run_script(ptr){eval(Pointer_stringify(ptr))}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;Module["wasmTableSize"]=6;Module["wasmMaxTableSize"]=6;function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_ii":invoke_ii,"invoke_iiii":invoke_iiii,"_emscripten_run_script":_emscripten_run_script,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___syscall54":___syscall54,"___syscall140":___syscall140,"___syscall146":___syscall146,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _main=Module["_main"]=(function(){return Module["asm"]["_main"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){return Module["asm"]["stackSave"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){return Module["asm"]["setThrew"].apply(null,arguments)});var _testHEAPU16=Module["_testHEAPU16"]=(function(){return Module["asm"]["_testHEAPU16"].apply(null,arguments)});var _testHEAP16=Module["_testHEAP16"]=(function(){return Module["asm"]["_testHEAP16"].apply(null,arguments)});var _testHEAP32=Module["_testHEAP32"]=(function(){return Module["asm"]["_testHEAP32"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){return Module["asm"]["_memset"].apply(null,arguments)});var _testHEAPF32=Module["_testHEAPF32"]=(function(){return Module["asm"]["_testHEAPF32"].apply(null,arguments)});var _get10Nums=Module["_get10Nums"]=(function(){return Module["asm"]["_get10Nums"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){return Module["asm"]["_sbrk"].apply(null,arguments)});var _testHEAPU32=Module["_testHEAPU32"]=(function(){return Module["asm"]["_testHEAPU32"].apply(null,arguments)});var _memcpy=Module["_memcpy"]=(function(){return Module["asm"]["_memcpy"].apply(null,arguments)});var _testHEAP8=Module["_testHEAP8"]=(function(){return Module["asm"]["_testHEAP8"].apply(null,arguments)});var _addNums=Module["_addNums"]=(function(){return Module["asm"]["_addNums"].apply(null,arguments)});var _getSetWASMArray=Module["_getSetWASMArray"]=(function(){return Module["asm"]["_getSetWASMArray"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){return Module["asm"]["stackAlloc"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){return Module["asm"]["getTempRet0"].apply(null,arguments)});var _testHEAPU8=Module["_testHEAPU8"]=(function(){return Module["asm"]["_testHEAPU8"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){return Module["asm"]["setTempRet0"].apply(null,arguments)});var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=(function(){return Module["asm"]["_emscripten_get_global_libc"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){return Module["asm"]["___errno_location"].apply(null,arguments)});var _free=Module["_free"]=(function(){return Module["asm"]["_free"].apply(null,arguments)});var runPostSets=Module["runPostSets"]=(function(){return Module["asm"]["runPostSets"].apply(null,arguments)});var _testHEAPF64=Module["_testHEAPF64"]=(function(){return Module["asm"]["_testHEAPF64"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){return Module["asm"]["establishStackSpace"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){return Module["asm"]["stackRestore"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){return Module["asm"]["_malloc"].apply(null,arguments)});var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=(function(){return Module["asm"]["_emscripten_replace_memory"].apply(null,arguments)});var dynCall_ii=Module["dynCall_ii"]=(function(){return Module["asm"]["dynCall_ii"].apply(null,arguments)});var dynCall_iiii=Module["dynCall_iiii"]=(function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments)});Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,Runtime.GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,Runtime.GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}applyMemoryInitializer(request.response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}Module["noExitRuntime"]=true;run()
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/demo.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanRuta/wasm-arrays/c2daf3ad481f8c2623f07642035ec60c51bbb2bd/demo.wasm
--------------------------------------------------------------------------------
/dev/emscripten.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 |
7 | int main(int argc, char const *argv[]) {
8 | emscripten_run_script("typeof window!='undefined' && window.dispatchEvent(new CustomEvent('wasmLoaded'))");
9 | return 0;
10 | }
11 |
12 | extern "C" {
13 |
14 | EMSCRIPTEN_KEEPALIVE
15 | float* getSetWASMArray (float *buf1, int buf1Size, int aNumber, float *buf2, int buf2Size) {
16 |
17 | float values[buf1Size];
18 |
19 | for (int i=0; i {
4 |
5 | const heapMap = {}
6 | heapMap.HEAP8 = Int8Array // int8_t
7 | heapMap.HEAPU8 = Uint8Array // uint8_t
8 | heapMap.HEAP16 = Int16Array // int16_t
9 | heapMap.HEAPU16 = Uint16Array // uint16_t
10 | heapMap.HEAP32 = Int32Array // int32_t
11 | heapMap.HEAPU32 = Uint32Array // uint32_t
12 | heapMap.HEAPF32 = Float32Array // float
13 | heapMap.HEAPF64 = Float64Array // double
14 |
15 | let res
16 | let error
17 | paramTypes = paramTypes || []
18 | const returnTypeParam = returnType=="array" ? "number" : returnType
19 | const parameters = []
20 | const parameterTypes = []
21 | const bufs = []
22 |
23 | try {
24 | if (params) {
25 | for (let p=0; p> 1)
38 | break
39 | case "HEAP32": case "HEAPU32": case "HEAPF32":
40 | Module[heapIn].set(typedArray, buf >> 2)
41 | break
42 | case "HEAPF64":
43 | Module[heapIn].set(typedArray, buf >> 3)
44 | break
45 | }
46 |
47 | bufs.push(buf)
48 | parameters.push(buf)
49 | parameters.push(params[p].length)
50 | parameterTypes.push("number")
51 | parameterTypes.push("number")
52 |
53 | } else {
54 | parameters.push(params[p])
55 | parameterTypes.push(paramTypes[p]==undefined ? "number" : paramTypes[p])
56 | }
57 | }
58 | }
59 |
60 | res = Module.ccall(func, returnTypeParam, parameterTypes, parameters)
61 | } catch (e) {
62 | error = e
63 | } finally {
64 | for (let b=0; b {
85 | return params => ccallArrays(func, returnType, paramTypes, params, {heapIn, heapOut, returnArraySize})
86 | }
87 |
88 | typeof window=="undefined" && ((exports.ccallArrays = ccallArrays) & (exports.cwrapArrays = cwrapArrays))
--------------------------------------------------------------------------------
/dist/wasm-arrays.min.js:
--------------------------------------------------------------------------------
1 | "use strict";const ccallArrays=(r,e,a,t,{heapIn:A="HEAPF32",heapOut:s="HEAPF32",returnArraySize:n=1}={})=>{const l={};l.HEAP8=Int8Array,l.HEAPU8=Uint8Array,l.HEAP16=Int16Array,l.HEAPU16=Uint16Array,l.HEAP32=Int32Array,l.HEAPU32=Uint32Array,l.HEAPF32=Float32Array,l.HEAPF64=Float64Array;let u,c;a=a||[];const E="array"==e?"number":e,y=[],h=[],o=[];try{if(t)for(let r=0;r>1);break;case"HEAP32":case"HEAPU32":case"HEAPF32":Module[A].set(e,a>>2);break;case"HEAPF64":Module[A].set(e,a>>3)}o.push(a),y.push(a),y.push(t[r].length),h.push("number"),h.push("number")}else y.push(t[r]),h.push(void 0==a[r]?"number":a[r]);u=Module.ccall(r,E,h,y)}catch(r){c=r}finally{for(let r=0;rn=>ccallArrays(r,e,a,n,{heapIn:t,heapOut:A,returnArraySize:s});"undefined"==typeof window&&(exports.ccallArrays=ccallArrays,exports.cwrapArrays=((r,e,a,{heapIn:t="HEAPF32",heapOut:A="HEAPF32",returnArraySize:s=1}={})=>n=>ccallArrays(r,e,a,n,{heapIn:t,heapOut:A,returnArraySize:s})));
--------------------------------------------------------------------------------
/gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function(grunt){
2 | grunt.initConfig({
3 |
4 | uglify: {
5 | my_target: {
6 | files: {
7 | "dist/wasm-arrays.min.js" : ["dev/wasm-arrays.js"]
8 | }
9 | }
10 | },
11 |
12 | exec: {
13 | // You'll need to change this if modifying the demo c++
14 | build: "C:/Users/Dan/emsdk/emsdk_env.bat & echo Building... & emcc -o ./demo.js ./dev/emscripten.cpp -O3 -s ALLOW_MEMORY_GROWTH=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -std=c++1z",
15 | },
16 |
17 | watch: {
18 | cpp: {
19 | files: ["dev/*.cpp"],
20 | tasks: ["exec:build"]
21 | },
22 | js: {
23 | files: ["dev/*.js"],
24 | tasks: ["uglify"]
25 | }
26 | }
27 | })
28 |
29 | grunt.loadNpmTasks("grunt-contrib-watch")
30 | grunt.loadNpmTasks('grunt-contrib-uglify')
31 | grunt.loadNpmTasks("grunt-exec")
32 |
33 | grunt.registerTask("default", ["watch"])
34 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wasm-ccallarrays",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "abbrev": {
8 | "version": "1.1.0",
9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
10 | "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
11 | "dev": true
12 | },
13 | "align-text": {
14 | "version": "0.1.4",
15 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
16 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
17 | "dev": true,
18 | "requires": {
19 | "kind-of": "3.2.2",
20 | "longest": "1.0.1",
21 | "repeat-string": "1.6.1"
22 | }
23 | },
24 | "amdefine": {
25 | "version": "1.0.1",
26 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
27 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
28 | "dev": true
29 | },
30 | "ansi-regex": {
31 | "version": "2.1.1",
32 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
33 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
34 | "dev": true
35 | },
36 | "ansi-styles": {
37 | "version": "2.2.1",
38 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
39 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
40 | "dev": true
41 | },
42 | "argparse": {
43 | "version": "1.0.9",
44 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
45 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
46 | "dev": true,
47 | "requires": {
48 | "sprintf-js": "1.0.3"
49 | }
50 | },
51 | "array-find-index": {
52 | "version": "1.0.2",
53 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
54 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
55 | "dev": true
56 | },
57 | "asn1": {
58 | "version": "0.2.3",
59 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
60 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
61 | "dev": true
62 | },
63 | "assert-plus": {
64 | "version": "0.2.0",
65 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
66 | "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
67 | "dev": true
68 | },
69 | "assertion-error": {
70 | "version": "1.0.2",
71 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz",
72 | "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=",
73 | "dev": true
74 | },
75 | "async": {
76 | "version": "1.5.2",
77 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
78 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
79 | "dev": true
80 | },
81 | "asynckit": {
82 | "version": "0.4.0",
83 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
84 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
85 | "dev": true
86 | },
87 | "aws-sign2": {
88 | "version": "0.6.0",
89 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
90 | "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
91 | "dev": true
92 | },
93 | "aws4": {
94 | "version": "1.6.0",
95 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
96 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
97 | "dev": true
98 | },
99 | "balanced-match": {
100 | "version": "1.0.0",
101 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
102 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
103 | "dev": true
104 | },
105 | "bcrypt-pbkdf": {
106 | "version": "1.0.1",
107 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
108 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
109 | "dev": true,
110 | "optional": true,
111 | "requires": {
112 | "tweetnacl": "0.14.5"
113 | }
114 | },
115 | "body-parser": {
116 | "version": "1.14.2",
117 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
118 | "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=",
119 | "dev": true,
120 | "requires": {
121 | "bytes": "2.2.0",
122 | "content-type": "1.0.4",
123 | "debug": "2.2.0",
124 | "depd": "1.1.1",
125 | "http-errors": "1.3.1",
126 | "iconv-lite": "0.4.13",
127 | "on-finished": "2.3.0",
128 | "qs": "5.2.0",
129 | "raw-body": "2.1.7",
130 | "type-is": "1.6.15"
131 | },
132 | "dependencies": {
133 | "debug": {
134 | "version": "2.2.0",
135 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
136 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
137 | "dev": true,
138 | "requires": {
139 | "ms": "0.7.1"
140 | }
141 | },
142 | "iconv-lite": {
143 | "version": "0.4.13",
144 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
145 | "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
146 | "dev": true
147 | },
148 | "ms": {
149 | "version": "0.7.1",
150 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
151 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
152 | "dev": true
153 | },
154 | "qs": {
155 | "version": "5.2.0",
156 | "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
157 | "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=",
158 | "dev": true
159 | }
160 | }
161 | },
162 | "boom": {
163 | "version": "2.10.1",
164 | "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
165 | "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
166 | "dev": true,
167 | "requires": {
168 | "hoek": "2.16.3"
169 | }
170 | },
171 | "brace-expansion": {
172 | "version": "1.1.8",
173 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
174 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
175 | "dev": true,
176 | "requires": {
177 | "balanced-match": "1.0.0",
178 | "concat-map": "0.0.1"
179 | }
180 | },
181 | "browser-stdout": {
182 | "version": "1.3.0",
183 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
184 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
185 | "dev": true
186 | },
187 | "browserify-zlib": {
188 | "version": "0.1.4",
189 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
190 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
191 | "dev": true,
192 | "requires": {
193 | "pako": "0.2.9"
194 | }
195 | },
196 | "builtin-modules": {
197 | "version": "1.1.1",
198 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
199 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
200 | "dev": true
201 | },
202 | "bytes": {
203 | "version": "2.2.0",
204 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
205 | "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=",
206 | "dev": true
207 | },
208 | "camelcase": {
209 | "version": "2.1.1",
210 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
211 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
212 | "dev": true
213 | },
214 | "camelcase-keys": {
215 | "version": "2.1.0",
216 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
217 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
218 | "dev": true,
219 | "requires": {
220 | "camelcase": "2.1.1",
221 | "map-obj": "1.0.1"
222 | }
223 | },
224 | "caseless": {
225 | "version": "0.11.0",
226 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
227 | "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
228 | "dev": true
229 | },
230 | "center-align": {
231 | "version": "0.1.3",
232 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
233 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
234 | "dev": true,
235 | "optional": true,
236 | "requires": {
237 | "align-text": "0.1.4",
238 | "lazy-cache": "1.0.4"
239 | }
240 | },
241 | "chai": {
242 | "version": "3.5.0",
243 | "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz",
244 | "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=",
245 | "dev": true,
246 | "requires": {
247 | "assertion-error": "1.0.2",
248 | "deep-eql": "0.1.3",
249 | "type-detect": "1.0.0"
250 | }
251 | },
252 | "chalk": {
253 | "version": "1.1.3",
254 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
255 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
256 | "dev": true,
257 | "requires": {
258 | "ansi-styles": "2.2.1",
259 | "escape-string-regexp": "1.0.5",
260 | "has-ansi": "2.0.0",
261 | "strip-ansi": "3.0.1",
262 | "supports-color": "2.0.0"
263 | }
264 | },
265 | "cliui": {
266 | "version": "2.1.0",
267 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
268 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
269 | "dev": true,
270 | "optional": true,
271 | "requires": {
272 | "center-align": "0.1.3",
273 | "right-align": "0.1.3",
274 | "wordwrap": "0.0.2"
275 | },
276 | "dependencies": {
277 | "wordwrap": {
278 | "version": "0.0.2",
279 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
280 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
281 | "dev": true,
282 | "optional": true
283 | }
284 | }
285 | },
286 | "coffee-script": {
287 | "version": "1.10.0",
288 | "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz",
289 | "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=",
290 | "dev": true
291 | },
292 | "colors": {
293 | "version": "1.1.2",
294 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
295 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
296 | "dev": true
297 | },
298 | "combined-stream": {
299 | "version": "1.0.5",
300 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
301 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
302 | "dev": true,
303 | "requires": {
304 | "delayed-stream": "1.0.0"
305 | }
306 | },
307 | "commander": {
308 | "version": "2.11.0",
309 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
310 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
311 | "dev": true
312 | },
313 | "concat-map": {
314 | "version": "0.0.1",
315 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
316 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
317 | "dev": true
318 | },
319 | "concat-stream": {
320 | "version": "1.6.0",
321 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
322 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
323 | "dev": true,
324 | "requires": {
325 | "inherits": "2.0.3",
326 | "readable-stream": "2.3.3",
327 | "typedarray": "0.0.6"
328 | }
329 | },
330 | "content-type": {
331 | "version": "1.0.4",
332 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
333 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
334 | "dev": true
335 | },
336 | "core-util-is": {
337 | "version": "1.0.2",
338 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
339 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
340 | "dev": true
341 | },
342 | "coveralls": {
343 | "version": "2.13.1",
344 | "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.1.tgz",
345 | "integrity": "sha1-1wu5rMGDXsTwY/+drFQjwXsR8Xg=",
346 | "dev": true,
347 | "requires": {
348 | "js-yaml": "3.6.1",
349 | "lcov-parse": "0.0.10",
350 | "log-driver": "1.2.5",
351 | "minimist": "1.2.0",
352 | "request": "2.79.0"
353 | },
354 | "dependencies": {
355 | "minimist": {
356 | "version": "1.2.0",
357 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
358 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
359 | "dev": true
360 | }
361 | }
362 | },
363 | "cryptiles": {
364 | "version": "2.0.5",
365 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
366 | "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
367 | "dev": true,
368 | "requires": {
369 | "boom": "2.10.1"
370 | }
371 | },
372 | "currently-unhandled": {
373 | "version": "0.4.1",
374 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
375 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
376 | "dev": true,
377 | "requires": {
378 | "array-find-index": "1.0.2"
379 | }
380 | },
381 | "dashdash": {
382 | "version": "1.14.1",
383 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
384 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
385 | "dev": true,
386 | "requires": {
387 | "assert-plus": "1.0.0"
388 | },
389 | "dependencies": {
390 | "assert-plus": {
391 | "version": "1.0.0",
392 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
393 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
394 | "dev": true
395 | }
396 | }
397 | },
398 | "dateformat": {
399 | "version": "1.0.12",
400 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
401 | "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
402 | "dev": true,
403 | "requires": {
404 | "get-stdin": "4.0.1",
405 | "meow": "3.7.0"
406 | }
407 | },
408 | "decamelize": {
409 | "version": "1.2.0",
410 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
411 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
412 | "dev": true
413 | },
414 | "deep-eql": {
415 | "version": "0.1.3",
416 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz",
417 | "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=",
418 | "dev": true,
419 | "requires": {
420 | "type-detect": "0.1.1"
421 | },
422 | "dependencies": {
423 | "type-detect": {
424 | "version": "0.1.1",
425 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz",
426 | "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=",
427 | "dev": true
428 | }
429 | }
430 | },
431 | "deep-is": {
432 | "version": "0.1.3",
433 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
434 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
435 | "dev": true
436 | },
437 | "delayed-stream": {
438 | "version": "1.0.0",
439 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
440 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
441 | "dev": true
442 | },
443 | "depd": {
444 | "version": "1.1.1",
445 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
446 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
447 | "dev": true
448 | },
449 | "diff": {
450 | "version": "3.2.0",
451 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
452 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
453 | "dev": true
454 | },
455 | "ecc-jsbn": {
456 | "version": "0.1.1",
457 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
458 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
459 | "dev": true,
460 | "optional": true,
461 | "requires": {
462 | "jsbn": "0.1.1"
463 | }
464 | },
465 | "ee-first": {
466 | "version": "1.1.1",
467 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
468 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
469 | "dev": true
470 | },
471 | "error-ex": {
472 | "version": "1.3.1",
473 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
474 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
475 | "dev": true,
476 | "requires": {
477 | "is-arrayish": "0.2.1"
478 | }
479 | },
480 | "escape-string-regexp": {
481 | "version": "1.0.5",
482 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
483 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
484 | "dev": true
485 | },
486 | "escodegen": {
487 | "version": "1.8.1",
488 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
489 | "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
490 | "dev": true,
491 | "requires": {
492 | "esprima": "2.7.3",
493 | "estraverse": "1.9.3",
494 | "esutils": "2.0.2",
495 | "optionator": "0.8.2",
496 | "source-map": "0.2.0"
497 | },
498 | "dependencies": {
499 | "source-map": {
500 | "version": "0.2.0",
501 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
502 | "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
503 | "dev": true,
504 | "optional": true,
505 | "requires": {
506 | "amdefine": "1.0.1"
507 | }
508 | }
509 | }
510 | },
511 | "esprima": {
512 | "version": "2.7.3",
513 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
514 | "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
515 | "dev": true
516 | },
517 | "estraverse": {
518 | "version": "1.9.3",
519 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
520 | "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
521 | "dev": true
522 | },
523 | "esutils": {
524 | "version": "2.0.2",
525 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
526 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
527 | "dev": true
528 | },
529 | "eventemitter2": {
530 | "version": "0.4.14",
531 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
532 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
533 | "dev": true
534 | },
535 | "exit": {
536 | "version": "0.1.2",
537 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
538 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
539 | "dev": true
540 | },
541 | "extend": {
542 | "version": "3.0.1",
543 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
544 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
545 | "dev": true
546 | },
547 | "extsprintf": {
548 | "version": "1.3.0",
549 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
550 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
551 | "dev": true
552 | },
553 | "fast-levenshtein": {
554 | "version": "2.0.6",
555 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
556 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
557 | "dev": true
558 | },
559 | "faye-websocket": {
560 | "version": "0.10.0",
561 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
562 | "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
563 | "dev": true,
564 | "requires": {
565 | "websocket-driver": "0.7.0"
566 | }
567 | },
568 | "figures": {
569 | "version": "1.7.0",
570 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
571 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
572 | "dev": true,
573 | "requires": {
574 | "escape-string-regexp": "1.0.5",
575 | "object-assign": "4.1.1"
576 | }
577 | },
578 | "find-up": {
579 | "version": "1.1.2",
580 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
581 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
582 | "dev": true,
583 | "requires": {
584 | "path-exists": "2.1.0",
585 | "pinkie-promise": "2.0.1"
586 | }
587 | },
588 | "findup-sync": {
589 | "version": "0.3.0",
590 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
591 | "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
592 | "dev": true,
593 | "requires": {
594 | "glob": "5.0.15"
595 | },
596 | "dependencies": {
597 | "glob": {
598 | "version": "5.0.15",
599 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
600 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
601 | "dev": true,
602 | "requires": {
603 | "inflight": "1.0.6",
604 | "inherits": "2.0.3",
605 | "minimatch": "3.0.4",
606 | "once": "1.4.0",
607 | "path-is-absolute": "1.0.1"
608 | }
609 | }
610 | }
611 | },
612 | "forever-agent": {
613 | "version": "0.6.1",
614 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
615 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
616 | "dev": true
617 | },
618 | "form-data": {
619 | "version": "2.1.4",
620 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
621 | "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
622 | "dev": true,
623 | "requires": {
624 | "asynckit": "0.4.0",
625 | "combined-stream": "1.0.5",
626 | "mime-types": "2.1.17"
627 | }
628 | },
629 | "formatio": {
630 | "version": "1.2.0",
631 | "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz",
632 | "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",
633 | "dev": true,
634 | "requires": {
635 | "samsam": "1.2.1"
636 | }
637 | },
638 | "fs.realpath": {
639 | "version": "1.0.0",
640 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
641 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
642 | "dev": true
643 | },
644 | "gaze": {
645 | "version": "1.1.2",
646 | "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
647 | "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
648 | "dev": true,
649 | "requires": {
650 | "globule": "1.2.0"
651 | }
652 | },
653 | "generate-function": {
654 | "version": "2.0.0",
655 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
656 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
657 | "dev": true
658 | },
659 | "generate-object-property": {
660 | "version": "1.2.0",
661 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
662 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
663 | "dev": true,
664 | "requires": {
665 | "is-property": "1.0.2"
666 | }
667 | },
668 | "get-stdin": {
669 | "version": "4.0.1",
670 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
671 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
672 | "dev": true
673 | },
674 | "getobject": {
675 | "version": "0.1.0",
676 | "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
677 | "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
678 | "dev": true
679 | },
680 | "getpass": {
681 | "version": "0.1.7",
682 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
683 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
684 | "dev": true,
685 | "requires": {
686 | "assert-plus": "1.0.0"
687 | },
688 | "dependencies": {
689 | "assert-plus": {
690 | "version": "1.0.0",
691 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
692 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
693 | "dev": true
694 | }
695 | }
696 | },
697 | "glob": {
698 | "version": "7.0.6",
699 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
700 | "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
701 | "dev": true,
702 | "requires": {
703 | "fs.realpath": "1.0.0",
704 | "inflight": "1.0.6",
705 | "inherits": "2.0.3",
706 | "minimatch": "3.0.4",
707 | "once": "1.4.0",
708 | "path-is-absolute": "1.0.1"
709 | }
710 | },
711 | "globule": {
712 | "version": "1.2.0",
713 | "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
714 | "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
715 | "dev": true,
716 | "requires": {
717 | "glob": "7.1.2",
718 | "lodash": "4.17.4",
719 | "minimatch": "3.0.4"
720 | },
721 | "dependencies": {
722 | "glob": {
723 | "version": "7.1.2",
724 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
725 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
726 | "dev": true,
727 | "requires": {
728 | "fs.realpath": "1.0.0",
729 | "inflight": "1.0.6",
730 | "inherits": "2.0.3",
731 | "minimatch": "3.0.4",
732 | "once": "1.4.0",
733 | "path-is-absolute": "1.0.1"
734 | }
735 | }
736 | }
737 | },
738 | "graceful-fs": {
739 | "version": "4.1.11",
740 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
741 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
742 | "dev": true
743 | },
744 | "graceful-readlink": {
745 | "version": "1.0.1",
746 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
747 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
748 | "dev": true
749 | },
750 | "growl": {
751 | "version": "1.9.2",
752 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
753 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
754 | "dev": true
755 | },
756 | "grunt": {
757 | "version": "1.0.1",
758 | "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz",
759 | "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=",
760 | "dev": true,
761 | "requires": {
762 | "coffee-script": "1.10.0",
763 | "dateformat": "1.0.12",
764 | "eventemitter2": "0.4.14",
765 | "exit": "0.1.2",
766 | "findup-sync": "0.3.0",
767 | "glob": "7.0.6",
768 | "grunt-cli": "1.2.0",
769 | "grunt-known-options": "1.1.0",
770 | "grunt-legacy-log": "1.0.0",
771 | "grunt-legacy-util": "1.0.0",
772 | "iconv-lite": "0.4.19",
773 | "js-yaml": "3.5.5",
774 | "minimatch": "3.0.4",
775 | "nopt": "3.0.6",
776 | "path-is-absolute": "1.0.1",
777 | "rimraf": "2.2.8"
778 | },
779 | "dependencies": {
780 | "js-yaml": {
781 | "version": "3.5.5",
782 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz",
783 | "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
784 | "dev": true,
785 | "requires": {
786 | "argparse": "1.0.9",
787 | "esprima": "2.7.3"
788 | }
789 | }
790 | }
791 | },
792 | "grunt-cli": {
793 | "version": "1.2.0",
794 | "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
795 | "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
796 | "dev": true,
797 | "requires": {
798 | "findup-sync": "0.3.0",
799 | "grunt-known-options": "1.1.0",
800 | "nopt": "3.0.6",
801 | "resolve": "1.1.7"
802 | }
803 | },
804 | "grunt-contrib-uglify": {
805 | "version": "git://github.com/gruntjs/grunt-contrib-uglify.git#049052f76c5b6e80ac1d7d256f4c450f00067936",
806 | "dev": true,
807 | "requires": {
808 | "chalk": "1.1.3",
809 | "maxmin": "1.1.0",
810 | "uglify-es": "3.1.2",
811 | "uri-path": "1.0.0"
812 | }
813 | },
814 | "grunt-contrib-watch": {
815 | "version": "1.0.0",
816 | "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz",
817 | "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=",
818 | "dev": true,
819 | "requires": {
820 | "async": "1.5.2",
821 | "gaze": "1.1.2",
822 | "lodash": "3.10.1",
823 | "tiny-lr": "0.2.1"
824 | },
825 | "dependencies": {
826 | "lodash": {
827 | "version": "3.10.1",
828 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
829 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
830 | "dev": true
831 | }
832 | }
833 | },
834 | "grunt-exec": {
835 | "version": "3.0.0",
836 | "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz",
837 | "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==",
838 | "dev": true
839 | },
840 | "grunt-known-options": {
841 | "version": "1.1.0",
842 | "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz",
843 | "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=",
844 | "dev": true
845 | },
846 | "grunt-legacy-log": {
847 | "version": "1.0.0",
848 | "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz",
849 | "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=",
850 | "dev": true,
851 | "requires": {
852 | "colors": "1.1.2",
853 | "grunt-legacy-log-utils": "1.0.0",
854 | "hooker": "0.2.3",
855 | "lodash": "3.10.1",
856 | "underscore.string": "3.2.3"
857 | },
858 | "dependencies": {
859 | "lodash": {
860 | "version": "3.10.1",
861 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
862 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
863 | "dev": true
864 | }
865 | }
866 | },
867 | "grunt-legacy-log-utils": {
868 | "version": "1.0.0",
869 | "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz",
870 | "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=",
871 | "dev": true,
872 | "requires": {
873 | "chalk": "1.1.3",
874 | "lodash": "4.3.0"
875 | },
876 | "dependencies": {
877 | "lodash": {
878 | "version": "4.3.0",
879 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
880 | "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=",
881 | "dev": true
882 | }
883 | }
884 | },
885 | "grunt-legacy-util": {
886 | "version": "1.0.0",
887 | "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz",
888 | "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=",
889 | "dev": true,
890 | "requires": {
891 | "async": "1.5.2",
892 | "exit": "0.1.2",
893 | "getobject": "0.1.0",
894 | "hooker": "0.2.3",
895 | "lodash": "4.3.0",
896 | "underscore.string": "3.2.3",
897 | "which": "1.2.14"
898 | },
899 | "dependencies": {
900 | "lodash": {
901 | "version": "4.3.0",
902 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
903 | "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=",
904 | "dev": true
905 | }
906 | }
907 | },
908 | "gzip-size": {
909 | "version": "1.0.0",
910 | "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
911 | "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=",
912 | "dev": true,
913 | "requires": {
914 | "browserify-zlib": "0.1.4",
915 | "concat-stream": "1.6.0"
916 | }
917 | },
918 | "handlebars": {
919 | "version": "4.0.10",
920 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
921 | "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
922 | "dev": true,
923 | "requires": {
924 | "async": "1.5.2",
925 | "optimist": "0.6.1",
926 | "source-map": "0.4.4",
927 | "uglify-js": "2.8.29"
928 | },
929 | "dependencies": {
930 | "source-map": {
931 | "version": "0.4.4",
932 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
933 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
934 | "dev": true,
935 | "requires": {
936 | "amdefine": "1.0.1"
937 | }
938 | },
939 | "uglify-js": {
940 | "version": "2.8.29",
941 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
942 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
943 | "dev": true,
944 | "optional": true,
945 | "requires": {
946 | "source-map": "0.5.7",
947 | "uglify-to-browserify": "1.0.2",
948 | "yargs": "3.10.0"
949 | },
950 | "dependencies": {
951 | "source-map": {
952 | "version": "0.5.7",
953 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
954 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
955 | "dev": true,
956 | "optional": true
957 | }
958 | }
959 | }
960 | }
961 | },
962 | "har-validator": {
963 | "version": "2.0.6",
964 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
965 | "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
966 | "dev": true,
967 | "requires": {
968 | "chalk": "1.1.3",
969 | "commander": "2.11.0",
970 | "is-my-json-valid": "2.16.1",
971 | "pinkie-promise": "2.0.1"
972 | }
973 | },
974 | "has-ansi": {
975 | "version": "2.0.0",
976 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
977 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
978 | "dev": true,
979 | "requires": {
980 | "ansi-regex": "2.1.1"
981 | }
982 | },
983 | "has-flag": {
984 | "version": "1.0.0",
985 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
986 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
987 | "dev": true
988 | },
989 | "hawk": {
990 | "version": "3.1.3",
991 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
992 | "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
993 | "dev": true,
994 | "requires": {
995 | "boom": "2.10.1",
996 | "cryptiles": "2.0.5",
997 | "hoek": "2.16.3",
998 | "sntp": "1.0.9"
999 | }
1000 | },
1001 | "he": {
1002 | "version": "1.1.1",
1003 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
1004 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
1005 | "dev": true
1006 | },
1007 | "hoek": {
1008 | "version": "2.16.3",
1009 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
1010 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
1011 | "dev": true
1012 | },
1013 | "hooker": {
1014 | "version": "0.2.3",
1015 | "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
1016 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
1017 | "dev": true
1018 | },
1019 | "hosted-git-info": {
1020 | "version": "2.5.0",
1021 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
1022 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
1023 | "dev": true
1024 | },
1025 | "http-errors": {
1026 | "version": "1.3.1",
1027 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
1028 | "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
1029 | "dev": true,
1030 | "requires": {
1031 | "inherits": "2.0.3",
1032 | "statuses": "1.3.1"
1033 | }
1034 | },
1035 | "http-parser-js": {
1036 | "version": "0.4.8",
1037 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.8.tgz",
1038 | "integrity": "sha512-jmHp99g6/fLx0pRNJqzsQgjsclCHAY7NhIeA3/U+bsGNvgbvUCQFQY9m5AYpqpAxY/2VcikfbKpjQozSTiz0jA==",
1039 | "dev": true
1040 | },
1041 | "http-signature": {
1042 | "version": "1.1.1",
1043 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
1044 | "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
1045 | "dev": true,
1046 | "requires": {
1047 | "assert-plus": "0.2.0",
1048 | "jsprim": "1.4.1",
1049 | "sshpk": "1.13.1"
1050 | }
1051 | },
1052 | "iconv-lite": {
1053 | "version": "0.4.19",
1054 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
1055 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
1056 | "dev": true
1057 | },
1058 | "indent-string": {
1059 | "version": "2.1.0",
1060 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
1061 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
1062 | "dev": true,
1063 | "requires": {
1064 | "repeating": "2.0.1"
1065 | }
1066 | },
1067 | "inflight": {
1068 | "version": "1.0.6",
1069 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1070 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1071 | "dev": true,
1072 | "requires": {
1073 | "once": "1.4.0",
1074 | "wrappy": "1.0.2"
1075 | }
1076 | },
1077 | "inherits": {
1078 | "version": "2.0.3",
1079 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1080 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1081 | "dev": true
1082 | },
1083 | "is-arrayish": {
1084 | "version": "0.2.1",
1085 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1086 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1087 | "dev": true
1088 | },
1089 | "is-buffer": {
1090 | "version": "1.1.5",
1091 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
1092 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
1093 | "dev": true
1094 | },
1095 | "is-builtin-module": {
1096 | "version": "1.0.0",
1097 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
1098 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
1099 | "dev": true,
1100 | "requires": {
1101 | "builtin-modules": "1.1.1"
1102 | }
1103 | },
1104 | "is-finite": {
1105 | "version": "1.0.2",
1106 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
1107 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
1108 | "dev": true,
1109 | "requires": {
1110 | "number-is-nan": "1.0.1"
1111 | }
1112 | },
1113 | "is-my-json-valid": {
1114 | "version": "2.16.1",
1115 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
1116 | "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
1117 | "dev": true,
1118 | "requires": {
1119 | "generate-function": "2.0.0",
1120 | "generate-object-property": "1.2.0",
1121 | "jsonpointer": "4.0.1",
1122 | "xtend": "4.0.1"
1123 | }
1124 | },
1125 | "is-property": {
1126 | "version": "1.0.2",
1127 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
1128 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
1129 | "dev": true
1130 | },
1131 | "is-typedarray": {
1132 | "version": "1.0.0",
1133 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1134 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1135 | "dev": true
1136 | },
1137 | "is-utf8": {
1138 | "version": "0.2.1",
1139 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
1140 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
1141 | "dev": true
1142 | },
1143 | "isarray": {
1144 | "version": "1.0.0",
1145 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1146 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1147 | "dev": true
1148 | },
1149 | "isexe": {
1150 | "version": "2.0.0",
1151 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1152 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1153 | "dev": true
1154 | },
1155 | "isstream": {
1156 | "version": "0.1.2",
1157 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1158 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1159 | "dev": true
1160 | },
1161 | "istanbul": {
1162 | "version": "0.4.5",
1163 | "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
1164 | "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
1165 | "dev": true,
1166 | "requires": {
1167 | "abbrev": "1.0.9",
1168 | "async": "1.5.2",
1169 | "escodegen": "1.8.1",
1170 | "esprima": "2.7.3",
1171 | "glob": "5.0.15",
1172 | "handlebars": "4.0.10",
1173 | "js-yaml": "3.6.1",
1174 | "mkdirp": "0.5.1",
1175 | "nopt": "3.0.6",
1176 | "once": "1.4.0",
1177 | "resolve": "1.1.7",
1178 | "supports-color": "3.2.3",
1179 | "which": "1.2.14",
1180 | "wordwrap": "1.0.0"
1181 | },
1182 | "dependencies": {
1183 | "abbrev": {
1184 | "version": "1.0.9",
1185 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
1186 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
1187 | "dev": true
1188 | },
1189 | "glob": {
1190 | "version": "5.0.15",
1191 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
1192 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
1193 | "dev": true,
1194 | "requires": {
1195 | "inflight": "1.0.6",
1196 | "inherits": "2.0.3",
1197 | "minimatch": "3.0.4",
1198 | "once": "1.4.0",
1199 | "path-is-absolute": "1.0.1"
1200 | }
1201 | },
1202 | "supports-color": {
1203 | "version": "3.2.3",
1204 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
1205 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
1206 | "dev": true,
1207 | "requires": {
1208 | "has-flag": "1.0.0"
1209 | }
1210 | }
1211 | }
1212 | },
1213 | "js-yaml": {
1214 | "version": "3.6.1",
1215 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz",
1216 | "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
1217 | "dev": true,
1218 | "requires": {
1219 | "argparse": "1.0.9",
1220 | "esprima": "2.7.3"
1221 | }
1222 | },
1223 | "jsbn": {
1224 | "version": "0.1.1",
1225 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1226 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1227 | "dev": true,
1228 | "optional": true
1229 | },
1230 | "json-schema": {
1231 | "version": "0.2.3",
1232 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1233 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1234 | "dev": true
1235 | },
1236 | "json-stringify-safe": {
1237 | "version": "5.0.1",
1238 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1239 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1240 | "dev": true
1241 | },
1242 | "json3": {
1243 | "version": "3.3.2",
1244 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
1245 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
1246 | "dev": true
1247 | },
1248 | "jsonpointer": {
1249 | "version": "4.0.1",
1250 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
1251 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
1252 | "dev": true
1253 | },
1254 | "jsprim": {
1255 | "version": "1.4.1",
1256 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1257 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1258 | "dev": true,
1259 | "requires": {
1260 | "assert-plus": "1.0.0",
1261 | "extsprintf": "1.3.0",
1262 | "json-schema": "0.2.3",
1263 | "verror": "1.10.0"
1264 | },
1265 | "dependencies": {
1266 | "assert-plus": {
1267 | "version": "1.0.0",
1268 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1269 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
1270 | "dev": true
1271 | }
1272 | }
1273 | },
1274 | "kind-of": {
1275 | "version": "3.2.2",
1276 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1277 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1278 | "dev": true,
1279 | "requires": {
1280 | "is-buffer": "1.1.5"
1281 | }
1282 | },
1283 | "lazy-cache": {
1284 | "version": "1.0.4",
1285 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
1286 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
1287 | "dev": true,
1288 | "optional": true
1289 | },
1290 | "lcov-parse": {
1291 | "version": "0.0.10",
1292 | "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz",
1293 | "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=",
1294 | "dev": true
1295 | },
1296 | "levn": {
1297 | "version": "0.3.0",
1298 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1299 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1300 | "dev": true,
1301 | "requires": {
1302 | "prelude-ls": "1.1.2",
1303 | "type-check": "0.3.2"
1304 | }
1305 | },
1306 | "livereload-js": {
1307 | "version": "2.2.2",
1308 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
1309 | "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=",
1310 | "dev": true
1311 | },
1312 | "load-json-file": {
1313 | "version": "1.1.0",
1314 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
1315 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
1316 | "dev": true,
1317 | "requires": {
1318 | "graceful-fs": "4.1.11",
1319 | "parse-json": "2.2.0",
1320 | "pify": "2.3.0",
1321 | "pinkie-promise": "2.0.1",
1322 | "strip-bom": "2.0.0"
1323 | }
1324 | },
1325 | "lodash": {
1326 | "version": "4.17.4",
1327 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
1328 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
1329 | "dev": true
1330 | },
1331 | "lodash._baseassign": {
1332 | "version": "3.2.0",
1333 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
1334 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
1335 | "dev": true,
1336 | "requires": {
1337 | "lodash._basecopy": "3.0.1",
1338 | "lodash.keys": "3.1.2"
1339 | }
1340 | },
1341 | "lodash._basecopy": {
1342 | "version": "3.0.1",
1343 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
1344 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
1345 | "dev": true
1346 | },
1347 | "lodash._basecreate": {
1348 | "version": "3.0.3",
1349 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz",
1350 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=",
1351 | "dev": true
1352 | },
1353 | "lodash._getnative": {
1354 | "version": "3.9.1",
1355 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
1356 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
1357 | "dev": true
1358 | },
1359 | "lodash._isiterateecall": {
1360 | "version": "3.0.9",
1361 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
1362 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
1363 | "dev": true
1364 | },
1365 | "lodash.create": {
1366 | "version": "3.1.1",
1367 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
1368 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
1369 | "dev": true,
1370 | "requires": {
1371 | "lodash._baseassign": "3.2.0",
1372 | "lodash._basecreate": "3.0.3",
1373 | "lodash._isiterateecall": "3.0.9"
1374 | }
1375 | },
1376 | "lodash.isarguments": {
1377 | "version": "3.1.0",
1378 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
1379 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
1380 | "dev": true
1381 | },
1382 | "lodash.isarray": {
1383 | "version": "3.0.4",
1384 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
1385 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
1386 | "dev": true
1387 | },
1388 | "lodash.keys": {
1389 | "version": "3.1.2",
1390 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
1391 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
1392 | "dev": true,
1393 | "requires": {
1394 | "lodash._getnative": "3.9.1",
1395 | "lodash.isarguments": "3.1.0",
1396 | "lodash.isarray": "3.0.4"
1397 | }
1398 | },
1399 | "log-driver": {
1400 | "version": "1.2.5",
1401 | "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz",
1402 | "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=",
1403 | "dev": true
1404 | },
1405 | "lolex": {
1406 | "version": "1.6.0",
1407 | "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz",
1408 | "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
1409 | "dev": true
1410 | },
1411 | "longest": {
1412 | "version": "1.0.1",
1413 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
1414 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
1415 | "dev": true
1416 | },
1417 | "loud-rejection": {
1418 | "version": "1.6.0",
1419 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
1420 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
1421 | "dev": true,
1422 | "requires": {
1423 | "currently-unhandled": "0.4.1",
1424 | "signal-exit": "3.0.2"
1425 | }
1426 | },
1427 | "map-obj": {
1428 | "version": "1.0.1",
1429 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
1430 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
1431 | "dev": true
1432 | },
1433 | "maxmin": {
1434 | "version": "1.1.0",
1435 | "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
1436 | "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=",
1437 | "dev": true,
1438 | "requires": {
1439 | "chalk": "1.1.3",
1440 | "figures": "1.7.0",
1441 | "gzip-size": "1.0.0",
1442 | "pretty-bytes": "1.0.4"
1443 | }
1444 | },
1445 | "media-typer": {
1446 | "version": "0.3.0",
1447 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1448 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
1449 | "dev": true
1450 | },
1451 | "meow": {
1452 | "version": "3.7.0",
1453 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
1454 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
1455 | "dev": true,
1456 | "requires": {
1457 | "camelcase-keys": "2.1.0",
1458 | "decamelize": "1.2.0",
1459 | "loud-rejection": "1.6.0",
1460 | "map-obj": "1.0.1",
1461 | "minimist": "1.2.0",
1462 | "normalize-package-data": "2.4.0",
1463 | "object-assign": "4.1.1",
1464 | "read-pkg-up": "1.0.1",
1465 | "redent": "1.0.0",
1466 | "trim-newlines": "1.0.0"
1467 | },
1468 | "dependencies": {
1469 | "minimist": {
1470 | "version": "1.2.0",
1471 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1472 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1473 | "dev": true
1474 | }
1475 | }
1476 | },
1477 | "mime-db": {
1478 | "version": "1.30.0",
1479 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
1480 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
1481 | "dev": true
1482 | },
1483 | "mime-types": {
1484 | "version": "2.1.17",
1485 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
1486 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
1487 | "dev": true,
1488 | "requires": {
1489 | "mime-db": "1.30.0"
1490 | }
1491 | },
1492 | "minimatch": {
1493 | "version": "3.0.4",
1494 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1495 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1496 | "dev": true,
1497 | "requires": {
1498 | "brace-expansion": "1.1.8"
1499 | }
1500 | },
1501 | "minimist": {
1502 | "version": "0.0.8",
1503 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1504 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1505 | "dev": true
1506 | },
1507 | "mkdirp": {
1508 | "version": "0.5.1",
1509 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1510 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1511 | "dev": true,
1512 | "requires": {
1513 | "minimist": "0.0.8"
1514 | }
1515 | },
1516 | "mocha": {
1517 | "version": "3.5.3",
1518 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
1519 | "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
1520 | "dev": true,
1521 | "requires": {
1522 | "browser-stdout": "1.3.0",
1523 | "commander": "2.9.0",
1524 | "debug": "2.6.8",
1525 | "diff": "3.2.0",
1526 | "escape-string-regexp": "1.0.5",
1527 | "glob": "7.1.1",
1528 | "growl": "1.9.2",
1529 | "he": "1.1.1",
1530 | "json3": "3.3.2",
1531 | "lodash.create": "3.1.1",
1532 | "mkdirp": "0.5.1",
1533 | "supports-color": "3.1.2"
1534 | },
1535 | "dependencies": {
1536 | "commander": {
1537 | "version": "2.9.0",
1538 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
1539 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
1540 | "dev": true,
1541 | "requires": {
1542 | "graceful-readlink": "1.0.1"
1543 | }
1544 | },
1545 | "debug": {
1546 | "version": "2.6.8",
1547 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
1548 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
1549 | "dev": true,
1550 | "requires": {
1551 | "ms": "2.0.0"
1552 | }
1553 | },
1554 | "glob": {
1555 | "version": "7.1.1",
1556 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
1557 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
1558 | "dev": true,
1559 | "requires": {
1560 | "fs.realpath": "1.0.0",
1561 | "inflight": "1.0.6",
1562 | "inherits": "2.0.3",
1563 | "minimatch": "3.0.4",
1564 | "once": "1.4.0",
1565 | "path-is-absolute": "1.0.1"
1566 | }
1567 | },
1568 | "supports-color": {
1569 | "version": "3.1.2",
1570 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
1571 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
1572 | "dev": true,
1573 | "requires": {
1574 | "has-flag": "1.0.0"
1575 | }
1576 | }
1577 | }
1578 | },
1579 | "mocha-lcov-reporter": {
1580 | "version": "1.3.0",
1581 | "resolved": "https://registry.npmjs.org/mocha-lcov-reporter/-/mocha-lcov-reporter-1.3.0.tgz",
1582 | "integrity": "sha1-Rpve9PivyaEWBW8HnfYYLQr7A4Q=",
1583 | "dev": true
1584 | },
1585 | "ms": {
1586 | "version": "2.0.0",
1587 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1588 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1589 | "dev": true
1590 | },
1591 | "native-promise-only": {
1592 | "version": "0.8.1",
1593 | "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
1594 | "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=",
1595 | "dev": true
1596 | },
1597 | "nopt": {
1598 | "version": "3.0.6",
1599 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
1600 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
1601 | "dev": true,
1602 | "requires": {
1603 | "abbrev": "1.1.0"
1604 | }
1605 | },
1606 | "normalize-package-data": {
1607 | "version": "2.4.0",
1608 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
1609 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
1610 | "dev": true,
1611 | "requires": {
1612 | "hosted-git-info": "2.5.0",
1613 | "is-builtin-module": "1.0.0",
1614 | "semver": "5.4.1",
1615 | "validate-npm-package-license": "3.0.1"
1616 | }
1617 | },
1618 | "number-is-nan": {
1619 | "version": "1.0.1",
1620 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1621 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
1622 | "dev": true
1623 | },
1624 | "nyc": {
1625 | "version": "11.2.1",
1626 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.2.1.tgz",
1627 | "integrity": "sha1-rYUK/p261/SXByi0suR/7Rw4chw=",
1628 | "dev": true,
1629 | "requires": {
1630 | "archy": "1.0.0",
1631 | "arrify": "1.0.1",
1632 | "caching-transform": "1.0.1",
1633 | "convert-source-map": "1.5.0",
1634 | "debug-log": "1.0.1",
1635 | "default-require-extensions": "1.0.0",
1636 | "find-cache-dir": "0.1.1",
1637 | "find-up": "2.1.0",
1638 | "foreground-child": "1.5.6",
1639 | "glob": "7.1.2",
1640 | "istanbul-lib-coverage": "1.1.1",
1641 | "istanbul-lib-hook": "1.0.7",
1642 | "istanbul-lib-instrument": "1.8.0",
1643 | "istanbul-lib-report": "1.1.1",
1644 | "istanbul-lib-source-maps": "1.2.1",
1645 | "istanbul-reports": "1.1.2",
1646 | "md5-hex": "1.3.0",
1647 | "merge-source-map": "1.0.4",
1648 | "micromatch": "2.3.11",
1649 | "mkdirp": "0.5.1",
1650 | "resolve-from": "2.0.0",
1651 | "rimraf": "2.6.1",
1652 | "signal-exit": "3.0.2",
1653 | "spawn-wrap": "1.3.8",
1654 | "test-exclude": "4.1.1",
1655 | "yargs": "8.0.2",
1656 | "yargs-parser": "5.0.0"
1657 | },
1658 | "dependencies": {
1659 | "align-text": {
1660 | "version": "0.1.4",
1661 | "bundled": true,
1662 | "dev": true,
1663 | "requires": {
1664 | "kind-of": "3.2.2",
1665 | "longest": "1.0.1",
1666 | "repeat-string": "1.6.1"
1667 | }
1668 | },
1669 | "amdefine": {
1670 | "version": "1.0.1",
1671 | "bundled": true,
1672 | "dev": true
1673 | },
1674 | "ansi-regex": {
1675 | "version": "2.1.1",
1676 | "bundled": true,
1677 | "dev": true
1678 | },
1679 | "ansi-styles": {
1680 | "version": "2.2.1",
1681 | "bundled": true,
1682 | "dev": true
1683 | },
1684 | "append-transform": {
1685 | "version": "0.4.0",
1686 | "bundled": true,
1687 | "dev": true,
1688 | "requires": {
1689 | "default-require-extensions": "1.0.0"
1690 | }
1691 | },
1692 | "archy": {
1693 | "version": "1.0.0",
1694 | "bundled": true,
1695 | "dev": true
1696 | },
1697 | "arr-diff": {
1698 | "version": "2.0.0",
1699 | "bundled": true,
1700 | "dev": true,
1701 | "requires": {
1702 | "arr-flatten": "1.1.0"
1703 | }
1704 | },
1705 | "arr-flatten": {
1706 | "version": "1.1.0",
1707 | "bundled": true,
1708 | "dev": true
1709 | },
1710 | "array-unique": {
1711 | "version": "0.2.1",
1712 | "bundled": true,
1713 | "dev": true
1714 | },
1715 | "arrify": {
1716 | "version": "1.0.1",
1717 | "bundled": true,
1718 | "dev": true
1719 | },
1720 | "async": {
1721 | "version": "1.5.2",
1722 | "bundled": true,
1723 | "dev": true
1724 | },
1725 | "babel-code-frame": {
1726 | "version": "6.26.0",
1727 | "bundled": true,
1728 | "dev": true,
1729 | "requires": {
1730 | "chalk": "1.1.3",
1731 | "esutils": "2.0.2",
1732 | "js-tokens": "3.0.2"
1733 | }
1734 | },
1735 | "babel-generator": {
1736 | "version": "6.26.0",
1737 | "bundled": true,
1738 | "dev": true,
1739 | "requires": {
1740 | "babel-messages": "6.23.0",
1741 | "babel-runtime": "6.26.0",
1742 | "babel-types": "6.26.0",
1743 | "detect-indent": "4.0.0",
1744 | "jsesc": "1.3.0",
1745 | "lodash": "4.17.4",
1746 | "source-map": "0.5.7",
1747 | "trim-right": "1.0.1"
1748 | }
1749 | },
1750 | "babel-messages": {
1751 | "version": "6.23.0",
1752 | "bundled": true,
1753 | "dev": true,
1754 | "requires": {
1755 | "babel-runtime": "6.26.0"
1756 | }
1757 | },
1758 | "babel-runtime": {
1759 | "version": "6.26.0",
1760 | "bundled": true,
1761 | "dev": true,
1762 | "requires": {
1763 | "core-js": "2.5.1",
1764 | "regenerator-runtime": "0.11.0"
1765 | }
1766 | },
1767 | "babel-template": {
1768 | "version": "6.26.0",
1769 | "bundled": true,
1770 | "dev": true,
1771 | "requires": {
1772 | "babel-runtime": "6.26.0",
1773 | "babel-traverse": "6.26.0",
1774 | "babel-types": "6.26.0",
1775 | "babylon": "6.18.0",
1776 | "lodash": "4.17.4"
1777 | }
1778 | },
1779 | "babel-traverse": {
1780 | "version": "6.26.0",
1781 | "bundled": true,
1782 | "dev": true,
1783 | "requires": {
1784 | "babel-code-frame": "6.26.0",
1785 | "babel-messages": "6.23.0",
1786 | "babel-runtime": "6.26.0",
1787 | "babel-types": "6.26.0",
1788 | "babylon": "6.18.0",
1789 | "debug": "2.6.8",
1790 | "globals": "9.18.0",
1791 | "invariant": "2.2.2",
1792 | "lodash": "4.17.4"
1793 | }
1794 | },
1795 | "babel-types": {
1796 | "version": "6.26.0",
1797 | "bundled": true,
1798 | "dev": true,
1799 | "requires": {
1800 | "babel-runtime": "6.26.0",
1801 | "esutils": "2.0.2",
1802 | "lodash": "4.17.4",
1803 | "to-fast-properties": "1.0.3"
1804 | }
1805 | },
1806 | "babylon": {
1807 | "version": "6.18.0",
1808 | "bundled": true,
1809 | "dev": true
1810 | },
1811 | "balanced-match": {
1812 | "version": "1.0.0",
1813 | "bundled": true,
1814 | "dev": true
1815 | },
1816 | "brace-expansion": {
1817 | "version": "1.1.8",
1818 | "bundled": true,
1819 | "dev": true,
1820 | "requires": {
1821 | "balanced-match": "1.0.0",
1822 | "concat-map": "0.0.1"
1823 | }
1824 | },
1825 | "braces": {
1826 | "version": "1.8.5",
1827 | "bundled": true,
1828 | "dev": true,
1829 | "requires": {
1830 | "expand-range": "1.8.2",
1831 | "preserve": "0.2.0",
1832 | "repeat-element": "1.1.2"
1833 | }
1834 | },
1835 | "builtin-modules": {
1836 | "version": "1.1.1",
1837 | "bundled": true,
1838 | "dev": true
1839 | },
1840 | "caching-transform": {
1841 | "version": "1.0.1",
1842 | "bundled": true,
1843 | "dev": true,
1844 | "requires": {
1845 | "md5-hex": "1.3.0",
1846 | "mkdirp": "0.5.1",
1847 | "write-file-atomic": "1.3.4"
1848 | }
1849 | },
1850 | "camelcase": {
1851 | "version": "1.2.1",
1852 | "bundled": true,
1853 | "dev": true,
1854 | "optional": true
1855 | },
1856 | "center-align": {
1857 | "version": "0.1.3",
1858 | "bundled": true,
1859 | "dev": true,
1860 | "optional": true,
1861 | "requires": {
1862 | "align-text": "0.1.4",
1863 | "lazy-cache": "1.0.4"
1864 | }
1865 | },
1866 | "chalk": {
1867 | "version": "1.1.3",
1868 | "bundled": true,
1869 | "dev": true,
1870 | "requires": {
1871 | "ansi-styles": "2.2.1",
1872 | "escape-string-regexp": "1.0.5",
1873 | "has-ansi": "2.0.0",
1874 | "strip-ansi": "3.0.1",
1875 | "supports-color": "2.0.0"
1876 | }
1877 | },
1878 | "cliui": {
1879 | "version": "2.1.0",
1880 | "bundled": true,
1881 | "dev": true,
1882 | "optional": true,
1883 | "requires": {
1884 | "center-align": "0.1.3",
1885 | "right-align": "0.1.3",
1886 | "wordwrap": "0.0.2"
1887 | },
1888 | "dependencies": {
1889 | "wordwrap": {
1890 | "version": "0.0.2",
1891 | "bundled": true,
1892 | "dev": true,
1893 | "optional": true
1894 | }
1895 | }
1896 | },
1897 | "code-point-at": {
1898 | "version": "1.1.0",
1899 | "bundled": true,
1900 | "dev": true
1901 | },
1902 | "commondir": {
1903 | "version": "1.0.1",
1904 | "bundled": true,
1905 | "dev": true
1906 | },
1907 | "concat-map": {
1908 | "version": "0.0.1",
1909 | "bundled": true,
1910 | "dev": true
1911 | },
1912 | "convert-source-map": {
1913 | "version": "1.5.0",
1914 | "bundled": true,
1915 | "dev": true
1916 | },
1917 | "core-js": {
1918 | "version": "2.5.1",
1919 | "bundled": true,
1920 | "dev": true
1921 | },
1922 | "cross-spawn": {
1923 | "version": "4.0.2",
1924 | "bundled": true,
1925 | "dev": true,
1926 | "requires": {
1927 | "lru-cache": "4.1.1",
1928 | "which": "1.3.0"
1929 | }
1930 | },
1931 | "debug": {
1932 | "version": "2.6.8",
1933 | "bundled": true,
1934 | "dev": true,
1935 | "requires": {
1936 | "ms": "2.0.0"
1937 | }
1938 | },
1939 | "debug-log": {
1940 | "version": "1.0.1",
1941 | "bundled": true,
1942 | "dev": true
1943 | },
1944 | "decamelize": {
1945 | "version": "1.2.0",
1946 | "bundled": true,
1947 | "dev": true
1948 | },
1949 | "default-require-extensions": {
1950 | "version": "1.0.0",
1951 | "bundled": true,
1952 | "dev": true,
1953 | "requires": {
1954 | "strip-bom": "2.0.0"
1955 | }
1956 | },
1957 | "detect-indent": {
1958 | "version": "4.0.0",
1959 | "bundled": true,
1960 | "dev": true,
1961 | "requires": {
1962 | "repeating": "2.0.1"
1963 | }
1964 | },
1965 | "error-ex": {
1966 | "version": "1.3.1",
1967 | "bundled": true,
1968 | "dev": true,
1969 | "requires": {
1970 | "is-arrayish": "0.2.1"
1971 | }
1972 | },
1973 | "escape-string-regexp": {
1974 | "version": "1.0.5",
1975 | "bundled": true,
1976 | "dev": true
1977 | },
1978 | "esutils": {
1979 | "version": "2.0.2",
1980 | "bundled": true,
1981 | "dev": true
1982 | },
1983 | "execa": {
1984 | "version": "0.7.0",
1985 | "bundled": true,
1986 | "dev": true,
1987 | "requires": {
1988 | "cross-spawn": "5.1.0",
1989 | "get-stream": "3.0.0",
1990 | "is-stream": "1.1.0",
1991 | "npm-run-path": "2.0.2",
1992 | "p-finally": "1.0.0",
1993 | "signal-exit": "3.0.2",
1994 | "strip-eof": "1.0.0"
1995 | },
1996 | "dependencies": {
1997 | "cross-spawn": {
1998 | "version": "5.1.0",
1999 | "bundled": true,
2000 | "dev": true,
2001 | "requires": {
2002 | "lru-cache": "4.1.1",
2003 | "shebang-command": "1.2.0",
2004 | "which": "1.3.0"
2005 | }
2006 | }
2007 | }
2008 | },
2009 | "expand-brackets": {
2010 | "version": "0.1.5",
2011 | "bundled": true,
2012 | "dev": true,
2013 | "requires": {
2014 | "is-posix-bracket": "0.1.1"
2015 | }
2016 | },
2017 | "expand-range": {
2018 | "version": "1.8.2",
2019 | "bundled": true,
2020 | "dev": true,
2021 | "requires": {
2022 | "fill-range": "2.2.3"
2023 | }
2024 | },
2025 | "extglob": {
2026 | "version": "0.3.2",
2027 | "bundled": true,
2028 | "dev": true,
2029 | "requires": {
2030 | "is-extglob": "1.0.0"
2031 | }
2032 | },
2033 | "filename-regex": {
2034 | "version": "2.0.1",
2035 | "bundled": true,
2036 | "dev": true
2037 | },
2038 | "fill-range": {
2039 | "version": "2.2.3",
2040 | "bundled": true,
2041 | "dev": true,
2042 | "requires": {
2043 | "is-number": "2.1.0",
2044 | "isobject": "2.1.0",
2045 | "randomatic": "1.1.7",
2046 | "repeat-element": "1.1.2",
2047 | "repeat-string": "1.6.1"
2048 | }
2049 | },
2050 | "find-cache-dir": {
2051 | "version": "0.1.1",
2052 | "bundled": true,
2053 | "dev": true,
2054 | "requires": {
2055 | "commondir": "1.0.1",
2056 | "mkdirp": "0.5.1",
2057 | "pkg-dir": "1.0.0"
2058 | }
2059 | },
2060 | "find-up": {
2061 | "version": "2.1.0",
2062 | "bundled": true,
2063 | "dev": true,
2064 | "requires": {
2065 | "locate-path": "2.0.0"
2066 | }
2067 | },
2068 | "for-in": {
2069 | "version": "1.0.2",
2070 | "bundled": true,
2071 | "dev": true
2072 | },
2073 | "for-own": {
2074 | "version": "0.1.5",
2075 | "bundled": true,
2076 | "dev": true,
2077 | "requires": {
2078 | "for-in": "1.0.2"
2079 | }
2080 | },
2081 | "foreground-child": {
2082 | "version": "1.5.6",
2083 | "bundled": true,
2084 | "dev": true,
2085 | "requires": {
2086 | "cross-spawn": "4.0.2",
2087 | "signal-exit": "3.0.2"
2088 | }
2089 | },
2090 | "fs.realpath": {
2091 | "version": "1.0.0",
2092 | "bundled": true,
2093 | "dev": true
2094 | },
2095 | "get-caller-file": {
2096 | "version": "1.0.2",
2097 | "bundled": true,
2098 | "dev": true
2099 | },
2100 | "get-stream": {
2101 | "version": "3.0.0",
2102 | "bundled": true,
2103 | "dev": true
2104 | },
2105 | "glob": {
2106 | "version": "7.1.2",
2107 | "bundled": true,
2108 | "dev": true,
2109 | "requires": {
2110 | "fs.realpath": "1.0.0",
2111 | "inflight": "1.0.6",
2112 | "inherits": "2.0.3",
2113 | "minimatch": "3.0.4",
2114 | "once": "1.4.0",
2115 | "path-is-absolute": "1.0.1"
2116 | }
2117 | },
2118 | "glob-base": {
2119 | "version": "0.3.0",
2120 | "bundled": true,
2121 | "dev": true,
2122 | "requires": {
2123 | "glob-parent": "2.0.0",
2124 | "is-glob": "2.0.1"
2125 | }
2126 | },
2127 | "glob-parent": {
2128 | "version": "2.0.0",
2129 | "bundled": true,
2130 | "dev": true,
2131 | "requires": {
2132 | "is-glob": "2.0.1"
2133 | }
2134 | },
2135 | "globals": {
2136 | "version": "9.18.0",
2137 | "bundled": true,
2138 | "dev": true
2139 | },
2140 | "graceful-fs": {
2141 | "version": "4.1.11",
2142 | "bundled": true,
2143 | "dev": true
2144 | },
2145 | "handlebars": {
2146 | "version": "4.0.10",
2147 | "bundled": true,
2148 | "dev": true,
2149 | "requires": {
2150 | "async": "1.5.2",
2151 | "optimist": "0.6.1",
2152 | "source-map": "0.4.4",
2153 | "uglify-js": "2.8.29"
2154 | },
2155 | "dependencies": {
2156 | "source-map": {
2157 | "version": "0.4.4",
2158 | "bundled": true,
2159 | "dev": true,
2160 | "requires": {
2161 | "amdefine": "1.0.1"
2162 | }
2163 | }
2164 | }
2165 | },
2166 | "has-ansi": {
2167 | "version": "2.0.0",
2168 | "bundled": true,
2169 | "dev": true,
2170 | "requires": {
2171 | "ansi-regex": "2.1.1"
2172 | }
2173 | },
2174 | "has-flag": {
2175 | "version": "1.0.0",
2176 | "bundled": true,
2177 | "dev": true
2178 | },
2179 | "hosted-git-info": {
2180 | "version": "2.5.0",
2181 | "bundled": true,
2182 | "dev": true
2183 | },
2184 | "imurmurhash": {
2185 | "version": "0.1.4",
2186 | "bundled": true,
2187 | "dev": true
2188 | },
2189 | "inflight": {
2190 | "version": "1.0.6",
2191 | "bundled": true,
2192 | "dev": true,
2193 | "requires": {
2194 | "once": "1.4.0",
2195 | "wrappy": "1.0.2"
2196 | }
2197 | },
2198 | "inherits": {
2199 | "version": "2.0.3",
2200 | "bundled": true,
2201 | "dev": true
2202 | },
2203 | "invariant": {
2204 | "version": "2.2.2",
2205 | "bundled": true,
2206 | "dev": true,
2207 | "requires": {
2208 | "loose-envify": "1.3.1"
2209 | }
2210 | },
2211 | "invert-kv": {
2212 | "version": "1.0.0",
2213 | "bundled": true,
2214 | "dev": true
2215 | },
2216 | "is-arrayish": {
2217 | "version": "0.2.1",
2218 | "bundled": true,
2219 | "dev": true
2220 | },
2221 | "is-buffer": {
2222 | "version": "1.1.5",
2223 | "bundled": true,
2224 | "dev": true
2225 | },
2226 | "is-builtin-module": {
2227 | "version": "1.0.0",
2228 | "bundled": true,
2229 | "dev": true,
2230 | "requires": {
2231 | "builtin-modules": "1.1.1"
2232 | }
2233 | },
2234 | "is-dotfile": {
2235 | "version": "1.0.3",
2236 | "bundled": true,
2237 | "dev": true
2238 | },
2239 | "is-equal-shallow": {
2240 | "version": "0.1.3",
2241 | "bundled": true,
2242 | "dev": true,
2243 | "requires": {
2244 | "is-primitive": "2.0.0"
2245 | }
2246 | },
2247 | "is-extendable": {
2248 | "version": "0.1.1",
2249 | "bundled": true,
2250 | "dev": true
2251 | },
2252 | "is-extglob": {
2253 | "version": "1.0.0",
2254 | "bundled": true,
2255 | "dev": true
2256 | },
2257 | "is-finite": {
2258 | "version": "1.0.2",
2259 | "bundled": true,
2260 | "dev": true,
2261 | "requires": {
2262 | "number-is-nan": "1.0.1"
2263 | }
2264 | },
2265 | "is-fullwidth-code-point": {
2266 | "version": "1.0.0",
2267 | "bundled": true,
2268 | "dev": true,
2269 | "requires": {
2270 | "number-is-nan": "1.0.1"
2271 | }
2272 | },
2273 | "is-glob": {
2274 | "version": "2.0.1",
2275 | "bundled": true,
2276 | "dev": true,
2277 | "requires": {
2278 | "is-extglob": "1.0.0"
2279 | }
2280 | },
2281 | "is-number": {
2282 | "version": "2.1.0",
2283 | "bundled": true,
2284 | "dev": true,
2285 | "requires": {
2286 | "kind-of": "3.2.2"
2287 | }
2288 | },
2289 | "is-posix-bracket": {
2290 | "version": "0.1.1",
2291 | "bundled": true,
2292 | "dev": true
2293 | },
2294 | "is-primitive": {
2295 | "version": "2.0.0",
2296 | "bundled": true,
2297 | "dev": true
2298 | },
2299 | "is-stream": {
2300 | "version": "1.1.0",
2301 | "bundled": true,
2302 | "dev": true
2303 | },
2304 | "is-utf8": {
2305 | "version": "0.2.1",
2306 | "bundled": true,
2307 | "dev": true
2308 | },
2309 | "isarray": {
2310 | "version": "1.0.0",
2311 | "bundled": true,
2312 | "dev": true
2313 | },
2314 | "isexe": {
2315 | "version": "2.0.0",
2316 | "bundled": true,
2317 | "dev": true
2318 | },
2319 | "isobject": {
2320 | "version": "2.1.0",
2321 | "bundled": true,
2322 | "dev": true,
2323 | "requires": {
2324 | "isarray": "1.0.0"
2325 | }
2326 | },
2327 | "istanbul-lib-coverage": {
2328 | "version": "1.1.1",
2329 | "bundled": true,
2330 | "dev": true
2331 | },
2332 | "istanbul-lib-hook": {
2333 | "version": "1.0.7",
2334 | "bundled": true,
2335 | "dev": true,
2336 | "requires": {
2337 | "append-transform": "0.4.0"
2338 | }
2339 | },
2340 | "istanbul-lib-instrument": {
2341 | "version": "1.8.0",
2342 | "bundled": true,
2343 | "dev": true,
2344 | "requires": {
2345 | "babel-generator": "6.26.0",
2346 | "babel-template": "6.26.0",
2347 | "babel-traverse": "6.26.0",
2348 | "babel-types": "6.26.0",
2349 | "babylon": "6.18.0",
2350 | "istanbul-lib-coverage": "1.1.1",
2351 | "semver": "5.4.1"
2352 | }
2353 | },
2354 | "istanbul-lib-report": {
2355 | "version": "1.1.1",
2356 | "bundled": true,
2357 | "dev": true,
2358 | "requires": {
2359 | "istanbul-lib-coverage": "1.1.1",
2360 | "mkdirp": "0.5.1",
2361 | "path-parse": "1.0.5",
2362 | "supports-color": "3.2.3"
2363 | },
2364 | "dependencies": {
2365 | "supports-color": {
2366 | "version": "3.2.3",
2367 | "bundled": true,
2368 | "dev": true,
2369 | "requires": {
2370 | "has-flag": "1.0.0"
2371 | }
2372 | }
2373 | }
2374 | },
2375 | "istanbul-lib-source-maps": {
2376 | "version": "1.2.1",
2377 | "bundled": true,
2378 | "dev": true,
2379 | "requires": {
2380 | "debug": "2.6.8",
2381 | "istanbul-lib-coverage": "1.1.1",
2382 | "mkdirp": "0.5.1",
2383 | "rimraf": "2.6.1",
2384 | "source-map": "0.5.7"
2385 | }
2386 | },
2387 | "istanbul-reports": {
2388 | "version": "1.1.2",
2389 | "bundled": true,
2390 | "dev": true,
2391 | "requires": {
2392 | "handlebars": "4.0.10"
2393 | }
2394 | },
2395 | "js-tokens": {
2396 | "version": "3.0.2",
2397 | "bundled": true,
2398 | "dev": true
2399 | },
2400 | "jsesc": {
2401 | "version": "1.3.0",
2402 | "bundled": true,
2403 | "dev": true
2404 | },
2405 | "kind-of": {
2406 | "version": "3.2.2",
2407 | "bundled": true,
2408 | "dev": true,
2409 | "requires": {
2410 | "is-buffer": "1.1.5"
2411 | }
2412 | },
2413 | "lazy-cache": {
2414 | "version": "1.0.4",
2415 | "bundled": true,
2416 | "dev": true,
2417 | "optional": true
2418 | },
2419 | "lcid": {
2420 | "version": "1.0.0",
2421 | "bundled": true,
2422 | "dev": true,
2423 | "requires": {
2424 | "invert-kv": "1.0.0"
2425 | }
2426 | },
2427 | "load-json-file": {
2428 | "version": "1.1.0",
2429 | "bundled": true,
2430 | "dev": true,
2431 | "requires": {
2432 | "graceful-fs": "4.1.11",
2433 | "parse-json": "2.2.0",
2434 | "pify": "2.3.0",
2435 | "pinkie-promise": "2.0.1",
2436 | "strip-bom": "2.0.0"
2437 | }
2438 | },
2439 | "locate-path": {
2440 | "version": "2.0.0",
2441 | "bundled": true,
2442 | "dev": true,
2443 | "requires": {
2444 | "p-locate": "2.0.0",
2445 | "path-exists": "3.0.0"
2446 | },
2447 | "dependencies": {
2448 | "path-exists": {
2449 | "version": "3.0.0",
2450 | "bundled": true,
2451 | "dev": true
2452 | }
2453 | }
2454 | },
2455 | "lodash": {
2456 | "version": "4.17.4",
2457 | "bundled": true,
2458 | "dev": true
2459 | },
2460 | "longest": {
2461 | "version": "1.0.1",
2462 | "bundled": true,
2463 | "dev": true
2464 | },
2465 | "loose-envify": {
2466 | "version": "1.3.1",
2467 | "bundled": true,
2468 | "dev": true,
2469 | "requires": {
2470 | "js-tokens": "3.0.2"
2471 | }
2472 | },
2473 | "lru-cache": {
2474 | "version": "4.1.1",
2475 | "bundled": true,
2476 | "dev": true,
2477 | "requires": {
2478 | "pseudomap": "1.0.2",
2479 | "yallist": "2.1.2"
2480 | }
2481 | },
2482 | "md5-hex": {
2483 | "version": "1.3.0",
2484 | "bundled": true,
2485 | "dev": true,
2486 | "requires": {
2487 | "md5-o-matic": "0.1.1"
2488 | }
2489 | },
2490 | "md5-o-matic": {
2491 | "version": "0.1.1",
2492 | "bundled": true,
2493 | "dev": true
2494 | },
2495 | "mem": {
2496 | "version": "1.1.0",
2497 | "bundled": true,
2498 | "dev": true,
2499 | "requires": {
2500 | "mimic-fn": "1.1.0"
2501 | }
2502 | },
2503 | "merge-source-map": {
2504 | "version": "1.0.4",
2505 | "bundled": true,
2506 | "dev": true,
2507 | "requires": {
2508 | "source-map": "0.5.7"
2509 | }
2510 | },
2511 | "micromatch": {
2512 | "version": "2.3.11",
2513 | "bundled": true,
2514 | "dev": true,
2515 | "requires": {
2516 | "arr-diff": "2.0.0",
2517 | "array-unique": "0.2.1",
2518 | "braces": "1.8.5",
2519 | "expand-brackets": "0.1.5",
2520 | "extglob": "0.3.2",
2521 | "filename-regex": "2.0.1",
2522 | "is-extglob": "1.0.0",
2523 | "is-glob": "2.0.1",
2524 | "kind-of": "3.2.2",
2525 | "normalize-path": "2.1.1",
2526 | "object.omit": "2.0.1",
2527 | "parse-glob": "3.0.4",
2528 | "regex-cache": "0.4.4"
2529 | }
2530 | },
2531 | "mimic-fn": {
2532 | "version": "1.1.0",
2533 | "bundled": true,
2534 | "dev": true
2535 | },
2536 | "minimatch": {
2537 | "version": "3.0.4",
2538 | "bundled": true,
2539 | "dev": true,
2540 | "requires": {
2541 | "brace-expansion": "1.1.8"
2542 | }
2543 | },
2544 | "minimist": {
2545 | "version": "0.0.8",
2546 | "bundled": true,
2547 | "dev": true
2548 | },
2549 | "mkdirp": {
2550 | "version": "0.5.1",
2551 | "bundled": true,
2552 | "dev": true,
2553 | "requires": {
2554 | "minimist": "0.0.8"
2555 | }
2556 | },
2557 | "ms": {
2558 | "version": "2.0.0",
2559 | "bundled": true,
2560 | "dev": true
2561 | },
2562 | "normalize-package-data": {
2563 | "version": "2.4.0",
2564 | "bundled": true,
2565 | "dev": true,
2566 | "requires": {
2567 | "hosted-git-info": "2.5.0",
2568 | "is-builtin-module": "1.0.0",
2569 | "semver": "5.4.1",
2570 | "validate-npm-package-license": "3.0.1"
2571 | }
2572 | },
2573 | "normalize-path": {
2574 | "version": "2.1.1",
2575 | "bundled": true,
2576 | "dev": true,
2577 | "requires": {
2578 | "remove-trailing-separator": "1.1.0"
2579 | }
2580 | },
2581 | "npm-run-path": {
2582 | "version": "2.0.2",
2583 | "bundled": true,
2584 | "dev": true,
2585 | "requires": {
2586 | "path-key": "2.0.1"
2587 | }
2588 | },
2589 | "number-is-nan": {
2590 | "version": "1.0.1",
2591 | "bundled": true,
2592 | "dev": true
2593 | },
2594 | "object-assign": {
2595 | "version": "4.1.1",
2596 | "bundled": true,
2597 | "dev": true
2598 | },
2599 | "object.omit": {
2600 | "version": "2.0.1",
2601 | "bundled": true,
2602 | "dev": true,
2603 | "requires": {
2604 | "for-own": "0.1.5",
2605 | "is-extendable": "0.1.1"
2606 | }
2607 | },
2608 | "once": {
2609 | "version": "1.4.0",
2610 | "bundled": true,
2611 | "dev": true,
2612 | "requires": {
2613 | "wrappy": "1.0.2"
2614 | }
2615 | },
2616 | "optimist": {
2617 | "version": "0.6.1",
2618 | "bundled": true,
2619 | "dev": true,
2620 | "requires": {
2621 | "minimist": "0.0.8",
2622 | "wordwrap": "0.0.3"
2623 | }
2624 | },
2625 | "os-homedir": {
2626 | "version": "1.0.2",
2627 | "bundled": true,
2628 | "dev": true
2629 | },
2630 | "os-locale": {
2631 | "version": "2.1.0",
2632 | "bundled": true,
2633 | "dev": true,
2634 | "requires": {
2635 | "execa": "0.7.0",
2636 | "lcid": "1.0.0",
2637 | "mem": "1.1.0"
2638 | }
2639 | },
2640 | "p-finally": {
2641 | "version": "1.0.0",
2642 | "bundled": true,
2643 | "dev": true
2644 | },
2645 | "p-limit": {
2646 | "version": "1.1.0",
2647 | "bundled": true,
2648 | "dev": true
2649 | },
2650 | "p-locate": {
2651 | "version": "2.0.0",
2652 | "bundled": true,
2653 | "dev": true,
2654 | "requires": {
2655 | "p-limit": "1.1.0"
2656 | }
2657 | },
2658 | "parse-glob": {
2659 | "version": "3.0.4",
2660 | "bundled": true,
2661 | "dev": true,
2662 | "requires": {
2663 | "glob-base": "0.3.0",
2664 | "is-dotfile": "1.0.3",
2665 | "is-extglob": "1.0.0",
2666 | "is-glob": "2.0.1"
2667 | }
2668 | },
2669 | "parse-json": {
2670 | "version": "2.2.0",
2671 | "bundled": true,
2672 | "dev": true,
2673 | "requires": {
2674 | "error-ex": "1.3.1"
2675 | }
2676 | },
2677 | "path-exists": {
2678 | "version": "2.1.0",
2679 | "bundled": true,
2680 | "dev": true,
2681 | "requires": {
2682 | "pinkie-promise": "2.0.1"
2683 | }
2684 | },
2685 | "path-is-absolute": {
2686 | "version": "1.0.1",
2687 | "bundled": true,
2688 | "dev": true
2689 | },
2690 | "path-key": {
2691 | "version": "2.0.1",
2692 | "bundled": true,
2693 | "dev": true
2694 | },
2695 | "path-parse": {
2696 | "version": "1.0.5",
2697 | "bundled": true,
2698 | "dev": true
2699 | },
2700 | "path-type": {
2701 | "version": "1.1.0",
2702 | "bundled": true,
2703 | "dev": true,
2704 | "requires": {
2705 | "graceful-fs": "4.1.11",
2706 | "pify": "2.3.0",
2707 | "pinkie-promise": "2.0.1"
2708 | }
2709 | },
2710 | "pify": {
2711 | "version": "2.3.0",
2712 | "bundled": true,
2713 | "dev": true
2714 | },
2715 | "pinkie": {
2716 | "version": "2.0.4",
2717 | "bundled": true,
2718 | "dev": true
2719 | },
2720 | "pinkie-promise": {
2721 | "version": "2.0.1",
2722 | "bundled": true,
2723 | "dev": true,
2724 | "requires": {
2725 | "pinkie": "2.0.4"
2726 | }
2727 | },
2728 | "pkg-dir": {
2729 | "version": "1.0.0",
2730 | "bundled": true,
2731 | "dev": true,
2732 | "requires": {
2733 | "find-up": "1.1.2"
2734 | },
2735 | "dependencies": {
2736 | "find-up": {
2737 | "version": "1.1.2",
2738 | "bundled": true,
2739 | "dev": true,
2740 | "requires": {
2741 | "path-exists": "2.1.0",
2742 | "pinkie-promise": "2.0.1"
2743 | }
2744 | }
2745 | }
2746 | },
2747 | "preserve": {
2748 | "version": "0.2.0",
2749 | "bundled": true,
2750 | "dev": true
2751 | },
2752 | "pseudomap": {
2753 | "version": "1.0.2",
2754 | "bundled": true,
2755 | "dev": true
2756 | },
2757 | "randomatic": {
2758 | "version": "1.1.7",
2759 | "bundled": true,
2760 | "dev": true,
2761 | "requires": {
2762 | "is-number": "3.0.0",
2763 | "kind-of": "4.0.0"
2764 | },
2765 | "dependencies": {
2766 | "is-number": {
2767 | "version": "3.0.0",
2768 | "bundled": true,
2769 | "dev": true,
2770 | "requires": {
2771 | "kind-of": "3.2.2"
2772 | },
2773 | "dependencies": {
2774 | "kind-of": {
2775 | "version": "3.2.2",
2776 | "bundled": true,
2777 | "dev": true,
2778 | "requires": {
2779 | "is-buffer": "1.1.5"
2780 | }
2781 | }
2782 | }
2783 | },
2784 | "kind-of": {
2785 | "version": "4.0.0",
2786 | "bundled": true,
2787 | "dev": true,
2788 | "requires": {
2789 | "is-buffer": "1.1.5"
2790 | }
2791 | }
2792 | }
2793 | },
2794 | "read-pkg": {
2795 | "version": "1.1.0",
2796 | "bundled": true,
2797 | "dev": true,
2798 | "requires": {
2799 | "load-json-file": "1.1.0",
2800 | "normalize-package-data": "2.4.0",
2801 | "path-type": "1.1.0"
2802 | }
2803 | },
2804 | "read-pkg-up": {
2805 | "version": "1.0.1",
2806 | "bundled": true,
2807 | "dev": true,
2808 | "requires": {
2809 | "find-up": "1.1.2",
2810 | "read-pkg": "1.1.0"
2811 | },
2812 | "dependencies": {
2813 | "find-up": {
2814 | "version": "1.1.2",
2815 | "bundled": true,
2816 | "dev": true,
2817 | "requires": {
2818 | "path-exists": "2.1.0",
2819 | "pinkie-promise": "2.0.1"
2820 | }
2821 | }
2822 | }
2823 | },
2824 | "regenerator-runtime": {
2825 | "version": "0.11.0",
2826 | "bundled": true,
2827 | "dev": true
2828 | },
2829 | "regex-cache": {
2830 | "version": "0.4.4",
2831 | "bundled": true,
2832 | "dev": true,
2833 | "requires": {
2834 | "is-equal-shallow": "0.1.3"
2835 | }
2836 | },
2837 | "remove-trailing-separator": {
2838 | "version": "1.1.0",
2839 | "bundled": true,
2840 | "dev": true
2841 | },
2842 | "repeat-element": {
2843 | "version": "1.1.2",
2844 | "bundled": true,
2845 | "dev": true
2846 | },
2847 | "repeat-string": {
2848 | "version": "1.6.1",
2849 | "bundled": true,
2850 | "dev": true
2851 | },
2852 | "repeating": {
2853 | "version": "2.0.1",
2854 | "bundled": true,
2855 | "dev": true,
2856 | "requires": {
2857 | "is-finite": "1.0.2"
2858 | }
2859 | },
2860 | "require-directory": {
2861 | "version": "2.1.1",
2862 | "bundled": true,
2863 | "dev": true
2864 | },
2865 | "require-main-filename": {
2866 | "version": "1.0.1",
2867 | "bundled": true,
2868 | "dev": true
2869 | },
2870 | "resolve-from": {
2871 | "version": "2.0.0",
2872 | "bundled": true,
2873 | "dev": true
2874 | },
2875 | "right-align": {
2876 | "version": "0.1.3",
2877 | "bundled": true,
2878 | "dev": true,
2879 | "optional": true,
2880 | "requires": {
2881 | "align-text": "0.1.4"
2882 | }
2883 | },
2884 | "rimraf": {
2885 | "version": "2.6.1",
2886 | "bundled": true,
2887 | "dev": true,
2888 | "requires": {
2889 | "glob": "7.1.2"
2890 | }
2891 | },
2892 | "semver": {
2893 | "version": "5.4.1",
2894 | "bundled": true,
2895 | "dev": true
2896 | },
2897 | "set-blocking": {
2898 | "version": "2.0.0",
2899 | "bundled": true,
2900 | "dev": true
2901 | },
2902 | "shebang-command": {
2903 | "version": "1.2.0",
2904 | "bundled": true,
2905 | "dev": true,
2906 | "requires": {
2907 | "shebang-regex": "1.0.0"
2908 | }
2909 | },
2910 | "shebang-regex": {
2911 | "version": "1.0.0",
2912 | "bundled": true,
2913 | "dev": true
2914 | },
2915 | "signal-exit": {
2916 | "version": "3.0.2",
2917 | "bundled": true,
2918 | "dev": true
2919 | },
2920 | "slide": {
2921 | "version": "1.1.6",
2922 | "bundled": true,
2923 | "dev": true
2924 | },
2925 | "source-map": {
2926 | "version": "0.5.7",
2927 | "bundled": true,
2928 | "dev": true
2929 | },
2930 | "spawn-wrap": {
2931 | "version": "1.3.8",
2932 | "bundled": true,
2933 | "dev": true,
2934 | "requires": {
2935 | "foreground-child": "1.5.6",
2936 | "mkdirp": "0.5.1",
2937 | "os-homedir": "1.0.2",
2938 | "rimraf": "2.6.1",
2939 | "signal-exit": "3.0.2",
2940 | "which": "1.3.0"
2941 | }
2942 | },
2943 | "spdx-correct": {
2944 | "version": "1.0.2",
2945 | "bundled": true,
2946 | "dev": true,
2947 | "requires": {
2948 | "spdx-license-ids": "1.2.2"
2949 | }
2950 | },
2951 | "spdx-expression-parse": {
2952 | "version": "1.0.4",
2953 | "bundled": true,
2954 | "dev": true
2955 | },
2956 | "spdx-license-ids": {
2957 | "version": "1.2.2",
2958 | "bundled": true,
2959 | "dev": true
2960 | },
2961 | "string-width": {
2962 | "version": "2.1.1",
2963 | "bundled": true,
2964 | "dev": true,
2965 | "requires": {
2966 | "is-fullwidth-code-point": "2.0.0",
2967 | "strip-ansi": "4.0.0"
2968 | },
2969 | "dependencies": {
2970 | "ansi-regex": {
2971 | "version": "3.0.0",
2972 | "bundled": true,
2973 | "dev": true
2974 | },
2975 | "is-fullwidth-code-point": {
2976 | "version": "2.0.0",
2977 | "bundled": true,
2978 | "dev": true
2979 | },
2980 | "strip-ansi": {
2981 | "version": "4.0.0",
2982 | "bundled": true,
2983 | "dev": true,
2984 | "requires": {
2985 | "ansi-regex": "3.0.0"
2986 | }
2987 | }
2988 | }
2989 | },
2990 | "strip-ansi": {
2991 | "version": "3.0.1",
2992 | "bundled": true,
2993 | "dev": true,
2994 | "requires": {
2995 | "ansi-regex": "2.1.1"
2996 | }
2997 | },
2998 | "strip-bom": {
2999 | "version": "2.0.0",
3000 | "bundled": true,
3001 | "dev": true,
3002 | "requires": {
3003 | "is-utf8": "0.2.1"
3004 | }
3005 | },
3006 | "strip-eof": {
3007 | "version": "1.0.0",
3008 | "bundled": true,
3009 | "dev": true
3010 | },
3011 | "supports-color": {
3012 | "version": "2.0.0",
3013 | "bundled": true,
3014 | "dev": true
3015 | },
3016 | "test-exclude": {
3017 | "version": "4.1.1",
3018 | "bundled": true,
3019 | "dev": true,
3020 | "requires": {
3021 | "arrify": "1.0.1",
3022 | "micromatch": "2.3.11",
3023 | "object-assign": "4.1.1",
3024 | "read-pkg-up": "1.0.1",
3025 | "require-main-filename": "1.0.1"
3026 | }
3027 | },
3028 | "to-fast-properties": {
3029 | "version": "1.0.3",
3030 | "bundled": true,
3031 | "dev": true
3032 | },
3033 | "trim-right": {
3034 | "version": "1.0.1",
3035 | "bundled": true,
3036 | "dev": true
3037 | },
3038 | "uglify-js": {
3039 | "version": "2.8.29",
3040 | "bundled": true,
3041 | "dev": true,
3042 | "optional": true,
3043 | "requires": {
3044 | "source-map": "0.5.7",
3045 | "uglify-to-browserify": "1.0.2",
3046 | "yargs": "3.10.0"
3047 | },
3048 | "dependencies": {
3049 | "yargs": {
3050 | "version": "3.10.0",
3051 | "bundled": true,
3052 | "dev": true,
3053 | "optional": true,
3054 | "requires": {
3055 | "camelcase": "1.2.1",
3056 | "cliui": "2.1.0",
3057 | "decamelize": "1.2.0",
3058 | "window-size": "0.1.0"
3059 | }
3060 | }
3061 | }
3062 | },
3063 | "uglify-to-browserify": {
3064 | "version": "1.0.2",
3065 | "bundled": true,
3066 | "dev": true,
3067 | "optional": true
3068 | },
3069 | "validate-npm-package-license": {
3070 | "version": "3.0.1",
3071 | "bundled": true,
3072 | "dev": true,
3073 | "requires": {
3074 | "spdx-correct": "1.0.2",
3075 | "spdx-expression-parse": "1.0.4"
3076 | }
3077 | },
3078 | "which": {
3079 | "version": "1.3.0",
3080 | "bundled": true,
3081 | "dev": true,
3082 | "requires": {
3083 | "isexe": "2.0.0"
3084 | }
3085 | },
3086 | "which-module": {
3087 | "version": "2.0.0",
3088 | "bundled": true,
3089 | "dev": true
3090 | },
3091 | "window-size": {
3092 | "version": "0.1.0",
3093 | "bundled": true,
3094 | "dev": true,
3095 | "optional": true
3096 | },
3097 | "wordwrap": {
3098 | "version": "0.0.3",
3099 | "bundled": true,
3100 | "dev": true
3101 | },
3102 | "wrap-ansi": {
3103 | "version": "2.1.0",
3104 | "bundled": true,
3105 | "dev": true,
3106 | "requires": {
3107 | "string-width": "1.0.2",
3108 | "strip-ansi": "3.0.1"
3109 | },
3110 | "dependencies": {
3111 | "string-width": {
3112 | "version": "1.0.2",
3113 | "bundled": true,
3114 | "dev": true,
3115 | "requires": {
3116 | "code-point-at": "1.1.0",
3117 | "is-fullwidth-code-point": "1.0.0",
3118 | "strip-ansi": "3.0.1"
3119 | }
3120 | }
3121 | }
3122 | },
3123 | "wrappy": {
3124 | "version": "1.0.2",
3125 | "bundled": true,
3126 | "dev": true
3127 | },
3128 | "write-file-atomic": {
3129 | "version": "1.3.4",
3130 | "bundled": true,
3131 | "dev": true,
3132 | "requires": {
3133 | "graceful-fs": "4.1.11",
3134 | "imurmurhash": "0.1.4",
3135 | "slide": "1.1.6"
3136 | }
3137 | },
3138 | "y18n": {
3139 | "version": "3.2.1",
3140 | "bundled": true,
3141 | "dev": true
3142 | },
3143 | "yallist": {
3144 | "version": "2.1.2",
3145 | "bundled": true,
3146 | "dev": true
3147 | },
3148 | "yargs": {
3149 | "version": "8.0.2",
3150 | "bundled": true,
3151 | "dev": true,
3152 | "requires": {
3153 | "camelcase": "4.1.0",
3154 | "cliui": "3.2.0",
3155 | "decamelize": "1.2.0",
3156 | "get-caller-file": "1.0.2",
3157 | "os-locale": "2.1.0",
3158 | "read-pkg-up": "2.0.0",
3159 | "require-directory": "2.1.1",
3160 | "require-main-filename": "1.0.1",
3161 | "set-blocking": "2.0.0",
3162 | "string-width": "2.1.1",
3163 | "which-module": "2.0.0",
3164 | "y18n": "3.2.1",
3165 | "yargs-parser": "7.0.0"
3166 | },
3167 | "dependencies": {
3168 | "camelcase": {
3169 | "version": "4.1.0",
3170 | "bundled": true,
3171 | "dev": true
3172 | },
3173 | "cliui": {
3174 | "version": "3.2.0",
3175 | "bundled": true,
3176 | "dev": true,
3177 | "requires": {
3178 | "string-width": "1.0.2",
3179 | "strip-ansi": "3.0.1",
3180 | "wrap-ansi": "2.1.0"
3181 | },
3182 | "dependencies": {
3183 | "string-width": {
3184 | "version": "1.0.2",
3185 | "bundled": true,
3186 | "dev": true,
3187 | "requires": {
3188 | "code-point-at": "1.1.0",
3189 | "is-fullwidth-code-point": "1.0.0",
3190 | "strip-ansi": "3.0.1"
3191 | }
3192 | }
3193 | }
3194 | },
3195 | "load-json-file": {
3196 | "version": "2.0.0",
3197 | "bundled": true,
3198 | "dev": true,
3199 | "requires": {
3200 | "graceful-fs": "4.1.11",
3201 | "parse-json": "2.2.0",
3202 | "pify": "2.3.0",
3203 | "strip-bom": "3.0.0"
3204 | }
3205 | },
3206 | "path-type": {
3207 | "version": "2.0.0",
3208 | "bundled": true,
3209 | "dev": true,
3210 | "requires": {
3211 | "pify": "2.3.0"
3212 | }
3213 | },
3214 | "read-pkg": {
3215 | "version": "2.0.0",
3216 | "bundled": true,
3217 | "dev": true,
3218 | "requires": {
3219 | "load-json-file": "2.0.0",
3220 | "normalize-package-data": "2.4.0",
3221 | "path-type": "2.0.0"
3222 | }
3223 | },
3224 | "read-pkg-up": {
3225 | "version": "2.0.0",
3226 | "bundled": true,
3227 | "dev": true,
3228 | "requires": {
3229 | "find-up": "2.1.0",
3230 | "read-pkg": "2.0.0"
3231 | }
3232 | },
3233 | "strip-bom": {
3234 | "version": "3.0.0",
3235 | "bundled": true,
3236 | "dev": true
3237 | },
3238 | "yargs-parser": {
3239 | "version": "7.0.0",
3240 | "bundled": true,
3241 | "dev": true,
3242 | "requires": {
3243 | "camelcase": "4.1.0"
3244 | }
3245 | }
3246 | }
3247 | },
3248 | "yargs-parser": {
3249 | "version": "5.0.0",
3250 | "bundled": true,
3251 | "dev": true,
3252 | "requires": {
3253 | "camelcase": "3.0.0"
3254 | },
3255 | "dependencies": {
3256 | "camelcase": {
3257 | "version": "3.0.0",
3258 | "bundled": true,
3259 | "dev": true
3260 | }
3261 | }
3262 | }
3263 | }
3264 | },
3265 | "oauth-sign": {
3266 | "version": "0.8.2",
3267 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
3268 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
3269 | "dev": true
3270 | },
3271 | "object-assign": {
3272 | "version": "4.1.1",
3273 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3274 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3275 | "dev": true
3276 | },
3277 | "on-finished": {
3278 | "version": "2.3.0",
3279 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3280 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
3281 | "dev": true,
3282 | "requires": {
3283 | "ee-first": "1.1.1"
3284 | }
3285 | },
3286 | "once": {
3287 | "version": "1.4.0",
3288 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3289 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3290 | "dev": true,
3291 | "requires": {
3292 | "wrappy": "1.0.2"
3293 | }
3294 | },
3295 | "optimist": {
3296 | "version": "0.6.1",
3297 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
3298 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
3299 | "dev": true,
3300 | "requires": {
3301 | "minimist": "0.0.8",
3302 | "wordwrap": "0.0.3"
3303 | },
3304 | "dependencies": {
3305 | "wordwrap": {
3306 | "version": "0.0.3",
3307 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
3308 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
3309 | "dev": true
3310 | }
3311 | }
3312 | },
3313 | "optionator": {
3314 | "version": "0.8.2",
3315 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
3316 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
3317 | "dev": true,
3318 | "requires": {
3319 | "deep-is": "0.1.3",
3320 | "fast-levenshtein": "2.0.6",
3321 | "levn": "0.3.0",
3322 | "prelude-ls": "1.1.2",
3323 | "type-check": "0.3.2",
3324 | "wordwrap": "1.0.0"
3325 | }
3326 | },
3327 | "pako": {
3328 | "version": "0.2.9",
3329 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
3330 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
3331 | "dev": true
3332 | },
3333 | "parse-json": {
3334 | "version": "2.2.0",
3335 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
3336 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
3337 | "dev": true,
3338 | "requires": {
3339 | "error-ex": "1.3.1"
3340 | }
3341 | },
3342 | "parseurl": {
3343 | "version": "1.3.2",
3344 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
3345 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
3346 | "dev": true
3347 | },
3348 | "path-exists": {
3349 | "version": "2.1.0",
3350 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
3351 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
3352 | "dev": true,
3353 | "requires": {
3354 | "pinkie-promise": "2.0.1"
3355 | }
3356 | },
3357 | "path-is-absolute": {
3358 | "version": "1.0.1",
3359 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3360 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3361 | "dev": true
3362 | },
3363 | "path-to-regexp": {
3364 | "version": "1.7.0",
3365 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
3366 | "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
3367 | "dev": true,
3368 | "requires": {
3369 | "isarray": "0.0.1"
3370 | },
3371 | "dependencies": {
3372 | "isarray": {
3373 | "version": "0.0.1",
3374 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
3375 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
3376 | "dev": true
3377 | }
3378 | }
3379 | },
3380 | "path-type": {
3381 | "version": "1.1.0",
3382 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
3383 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
3384 | "dev": true,
3385 | "requires": {
3386 | "graceful-fs": "4.1.11",
3387 | "pify": "2.3.0",
3388 | "pinkie-promise": "2.0.1"
3389 | }
3390 | },
3391 | "pify": {
3392 | "version": "2.3.0",
3393 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3394 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
3395 | "dev": true
3396 | },
3397 | "pinkie": {
3398 | "version": "2.0.4",
3399 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
3400 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
3401 | "dev": true
3402 | },
3403 | "pinkie-promise": {
3404 | "version": "2.0.1",
3405 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
3406 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
3407 | "dev": true,
3408 | "requires": {
3409 | "pinkie": "2.0.4"
3410 | }
3411 | },
3412 | "prelude-ls": {
3413 | "version": "1.1.2",
3414 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
3415 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
3416 | "dev": true
3417 | },
3418 | "pretty-bytes": {
3419 | "version": "1.0.4",
3420 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
3421 | "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
3422 | "dev": true,
3423 | "requires": {
3424 | "get-stdin": "4.0.1",
3425 | "meow": "3.7.0"
3426 | }
3427 | },
3428 | "process-nextick-args": {
3429 | "version": "1.0.7",
3430 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
3431 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
3432 | "dev": true
3433 | },
3434 | "punycode": {
3435 | "version": "1.4.1",
3436 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
3437 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
3438 | "dev": true
3439 | },
3440 | "qs": {
3441 | "version": "6.3.2",
3442 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
3443 | "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
3444 | "dev": true
3445 | },
3446 | "raw-body": {
3447 | "version": "2.1.7",
3448 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
3449 | "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=",
3450 | "dev": true,
3451 | "requires": {
3452 | "bytes": "2.4.0",
3453 | "iconv-lite": "0.4.13",
3454 | "unpipe": "1.0.0"
3455 | },
3456 | "dependencies": {
3457 | "bytes": {
3458 | "version": "2.4.0",
3459 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
3460 | "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
3461 | "dev": true
3462 | },
3463 | "iconv-lite": {
3464 | "version": "0.4.13",
3465 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
3466 | "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
3467 | "dev": true
3468 | }
3469 | }
3470 | },
3471 | "read-pkg": {
3472 | "version": "1.1.0",
3473 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
3474 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
3475 | "dev": true,
3476 | "requires": {
3477 | "load-json-file": "1.1.0",
3478 | "normalize-package-data": "2.4.0",
3479 | "path-type": "1.1.0"
3480 | }
3481 | },
3482 | "read-pkg-up": {
3483 | "version": "1.0.1",
3484 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
3485 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
3486 | "dev": true,
3487 | "requires": {
3488 | "find-up": "1.1.2",
3489 | "read-pkg": "1.1.0"
3490 | }
3491 | },
3492 | "readable-stream": {
3493 | "version": "2.3.3",
3494 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
3495 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
3496 | "dev": true,
3497 | "requires": {
3498 | "core-util-is": "1.0.2",
3499 | "inherits": "2.0.3",
3500 | "isarray": "1.0.0",
3501 | "process-nextick-args": "1.0.7",
3502 | "safe-buffer": "5.1.1",
3503 | "string_decoder": "1.0.3",
3504 | "util-deprecate": "1.0.2"
3505 | }
3506 | },
3507 | "redent": {
3508 | "version": "1.0.0",
3509 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
3510 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
3511 | "dev": true,
3512 | "requires": {
3513 | "indent-string": "2.1.0",
3514 | "strip-indent": "1.0.1"
3515 | }
3516 | },
3517 | "repeat-string": {
3518 | "version": "1.6.1",
3519 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3520 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3521 | "dev": true
3522 | },
3523 | "repeating": {
3524 | "version": "2.0.1",
3525 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
3526 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
3527 | "dev": true,
3528 | "requires": {
3529 | "is-finite": "1.0.2"
3530 | }
3531 | },
3532 | "request": {
3533 | "version": "2.79.0",
3534 | "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
3535 | "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
3536 | "dev": true,
3537 | "requires": {
3538 | "aws-sign2": "0.6.0",
3539 | "aws4": "1.6.0",
3540 | "caseless": "0.11.0",
3541 | "combined-stream": "1.0.5",
3542 | "extend": "3.0.1",
3543 | "forever-agent": "0.6.1",
3544 | "form-data": "2.1.4",
3545 | "har-validator": "2.0.6",
3546 | "hawk": "3.1.3",
3547 | "http-signature": "1.1.1",
3548 | "is-typedarray": "1.0.0",
3549 | "isstream": "0.1.2",
3550 | "json-stringify-safe": "5.0.1",
3551 | "mime-types": "2.1.17",
3552 | "oauth-sign": "0.8.2",
3553 | "qs": "6.3.2",
3554 | "stringstream": "0.0.5",
3555 | "tough-cookie": "2.3.3",
3556 | "tunnel-agent": "0.4.3",
3557 | "uuid": "3.1.0"
3558 | }
3559 | },
3560 | "resolve": {
3561 | "version": "1.1.7",
3562 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
3563 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
3564 | "dev": true
3565 | },
3566 | "right-align": {
3567 | "version": "0.1.3",
3568 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
3569 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
3570 | "dev": true,
3571 | "optional": true,
3572 | "requires": {
3573 | "align-text": "0.1.4"
3574 | }
3575 | },
3576 | "rimraf": {
3577 | "version": "2.2.8",
3578 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
3579 | "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
3580 | "dev": true
3581 | },
3582 | "safe-buffer": {
3583 | "version": "5.1.1",
3584 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
3585 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
3586 | "dev": true
3587 | },
3588 | "samsam": {
3589 | "version": "1.2.1",
3590 | "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz",
3591 | "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=",
3592 | "dev": true
3593 | },
3594 | "semver": {
3595 | "version": "5.4.1",
3596 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
3597 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
3598 | "dev": true
3599 | },
3600 | "signal-exit": {
3601 | "version": "3.0.2",
3602 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3603 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3604 | "dev": true
3605 | },
3606 | "sinon": {
3607 | "version": "2.4.1",
3608 | "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz",
3609 | "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==",
3610 | "dev": true,
3611 | "requires": {
3612 | "diff": "3.2.0",
3613 | "formatio": "1.2.0",
3614 | "lolex": "1.6.0",
3615 | "native-promise-only": "0.8.1",
3616 | "path-to-regexp": "1.7.0",
3617 | "samsam": "1.2.1",
3618 | "text-encoding": "0.6.4",
3619 | "type-detect": "4.0.3"
3620 | },
3621 | "dependencies": {
3622 | "type-detect": {
3623 | "version": "4.0.3",
3624 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz",
3625 | "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=",
3626 | "dev": true
3627 | }
3628 | }
3629 | },
3630 | "sinon-chai": {
3631 | "version": "2.13.0",
3632 | "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.13.0.tgz",
3633 | "integrity": "sha512-hRNu/TlYEp4Rw5IbzO8ykGoZMSG489PGUx1rvePpHGrtl20cXivRBgtr/EWYxIwL9EOO9+on04nd9k3tW8tVww==",
3634 | "dev": true
3635 | },
3636 | "sntp": {
3637 | "version": "1.0.9",
3638 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
3639 | "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
3640 | "dev": true,
3641 | "requires": {
3642 | "hoek": "2.16.3"
3643 | }
3644 | },
3645 | "source-map": {
3646 | "version": "0.5.7",
3647 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3648 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
3649 | "dev": true
3650 | },
3651 | "spdx-correct": {
3652 | "version": "1.0.2",
3653 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
3654 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
3655 | "dev": true,
3656 | "requires": {
3657 | "spdx-license-ids": "1.2.2"
3658 | }
3659 | },
3660 | "spdx-expression-parse": {
3661 | "version": "1.0.4",
3662 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
3663 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
3664 | "dev": true
3665 | },
3666 | "spdx-license-ids": {
3667 | "version": "1.2.2",
3668 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
3669 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
3670 | "dev": true
3671 | },
3672 | "sprintf-js": {
3673 | "version": "1.0.3",
3674 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
3675 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
3676 | "dev": true
3677 | },
3678 | "sshpk": {
3679 | "version": "1.13.1",
3680 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
3681 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
3682 | "dev": true,
3683 | "requires": {
3684 | "asn1": "0.2.3",
3685 | "assert-plus": "1.0.0",
3686 | "bcrypt-pbkdf": "1.0.1",
3687 | "dashdash": "1.14.1",
3688 | "ecc-jsbn": "0.1.1",
3689 | "getpass": "0.1.7",
3690 | "jsbn": "0.1.1",
3691 | "tweetnacl": "0.14.5"
3692 | },
3693 | "dependencies": {
3694 | "assert-plus": {
3695 | "version": "1.0.0",
3696 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
3697 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
3698 | "dev": true
3699 | }
3700 | }
3701 | },
3702 | "statuses": {
3703 | "version": "1.3.1",
3704 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
3705 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
3706 | "dev": true
3707 | },
3708 | "string_decoder": {
3709 | "version": "1.0.3",
3710 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
3711 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
3712 | "dev": true,
3713 | "requires": {
3714 | "safe-buffer": "5.1.1"
3715 | }
3716 | },
3717 | "stringstream": {
3718 | "version": "0.0.5",
3719 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
3720 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
3721 | "dev": true
3722 | },
3723 | "strip-ansi": {
3724 | "version": "3.0.1",
3725 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
3726 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
3727 | "dev": true,
3728 | "requires": {
3729 | "ansi-regex": "2.1.1"
3730 | }
3731 | },
3732 | "strip-bom": {
3733 | "version": "2.0.0",
3734 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
3735 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
3736 | "dev": true,
3737 | "requires": {
3738 | "is-utf8": "0.2.1"
3739 | }
3740 | },
3741 | "strip-indent": {
3742 | "version": "1.0.1",
3743 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
3744 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
3745 | "dev": true,
3746 | "requires": {
3747 | "get-stdin": "4.0.1"
3748 | }
3749 | },
3750 | "supports-color": {
3751 | "version": "2.0.0",
3752 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
3753 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
3754 | "dev": true
3755 | },
3756 | "text-encoding": {
3757 | "version": "0.6.4",
3758 | "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
3759 | "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
3760 | "dev": true
3761 | },
3762 | "tiny-lr": {
3763 | "version": "0.2.1",
3764 | "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz",
3765 | "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=",
3766 | "dev": true,
3767 | "requires": {
3768 | "body-parser": "1.14.2",
3769 | "debug": "2.2.0",
3770 | "faye-websocket": "0.10.0",
3771 | "livereload-js": "2.2.2",
3772 | "parseurl": "1.3.2",
3773 | "qs": "5.1.0"
3774 | },
3775 | "dependencies": {
3776 | "debug": {
3777 | "version": "2.2.0",
3778 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
3779 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
3780 | "dev": true,
3781 | "requires": {
3782 | "ms": "0.7.1"
3783 | }
3784 | },
3785 | "ms": {
3786 | "version": "0.7.1",
3787 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
3788 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
3789 | "dev": true
3790 | },
3791 | "qs": {
3792 | "version": "5.1.0",
3793 | "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz",
3794 | "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=",
3795 | "dev": true
3796 | }
3797 | }
3798 | },
3799 | "tough-cookie": {
3800 | "version": "2.3.3",
3801 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
3802 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
3803 | "dev": true,
3804 | "requires": {
3805 | "punycode": "1.4.1"
3806 | }
3807 | },
3808 | "trim-newlines": {
3809 | "version": "1.0.0",
3810 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
3811 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
3812 | "dev": true
3813 | },
3814 | "tunnel-agent": {
3815 | "version": "0.4.3",
3816 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
3817 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
3818 | "dev": true
3819 | },
3820 | "tweetnacl": {
3821 | "version": "0.14.5",
3822 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3823 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3824 | "dev": true,
3825 | "optional": true
3826 | },
3827 | "type-check": {
3828 | "version": "0.3.2",
3829 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
3830 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
3831 | "dev": true,
3832 | "requires": {
3833 | "prelude-ls": "1.1.2"
3834 | }
3835 | },
3836 | "type-detect": {
3837 | "version": "1.0.0",
3838 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
3839 | "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=",
3840 | "dev": true
3841 | },
3842 | "type-is": {
3843 | "version": "1.6.15",
3844 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
3845 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
3846 | "dev": true,
3847 | "requires": {
3848 | "media-typer": "0.3.0",
3849 | "mime-types": "2.1.17"
3850 | }
3851 | },
3852 | "typedarray": {
3853 | "version": "0.0.6",
3854 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3855 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3856 | "dev": true
3857 | },
3858 | "uglify-es": {
3859 | "version": "3.1.2",
3860 | "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.2.tgz",
3861 | "integrity": "sha512-ULYW1xj/yW0IAkLW1XzIXB3O888275E2/r4tFy83D9wPRKGlUjKWeQAZoyHXujr/fsHeh6QMlc1ayCE8kqnoaw==",
3862 | "dev": true,
3863 | "requires": {
3864 | "commander": "2.11.0",
3865 | "source-map": "0.5.7"
3866 | }
3867 | },
3868 | "uglify-to-browserify": {
3869 | "version": "1.0.2",
3870 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
3871 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
3872 | "dev": true,
3873 | "optional": true
3874 | },
3875 | "underscore.string": {
3876 | "version": "3.2.3",
3877 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz",
3878 | "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=",
3879 | "dev": true
3880 | },
3881 | "unpipe": {
3882 | "version": "1.0.0",
3883 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
3884 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
3885 | "dev": true
3886 | },
3887 | "uri-path": {
3888 | "version": "1.0.0",
3889 | "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz",
3890 | "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=",
3891 | "dev": true
3892 | },
3893 | "util-deprecate": {
3894 | "version": "1.0.2",
3895 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3896 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3897 | "dev": true
3898 | },
3899 | "uuid": {
3900 | "version": "3.1.0",
3901 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
3902 | "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
3903 | "dev": true
3904 | },
3905 | "validate-npm-package-license": {
3906 | "version": "3.0.1",
3907 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
3908 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
3909 | "dev": true,
3910 | "requires": {
3911 | "spdx-correct": "1.0.2",
3912 | "spdx-expression-parse": "1.0.4"
3913 | }
3914 | },
3915 | "verror": {
3916 | "version": "1.10.0",
3917 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
3918 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
3919 | "dev": true,
3920 | "requires": {
3921 | "assert-plus": "1.0.0",
3922 | "core-util-is": "1.0.2",
3923 | "extsprintf": "1.3.0"
3924 | },
3925 | "dependencies": {
3926 | "assert-plus": {
3927 | "version": "1.0.0",
3928 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
3929 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
3930 | "dev": true
3931 | }
3932 | }
3933 | },
3934 | "websocket-driver": {
3935 | "version": "0.7.0",
3936 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
3937 | "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
3938 | "dev": true,
3939 | "requires": {
3940 | "http-parser-js": "0.4.8",
3941 | "websocket-extensions": "0.1.2"
3942 | }
3943 | },
3944 | "websocket-extensions": {
3945 | "version": "0.1.2",
3946 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz",
3947 | "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=",
3948 | "dev": true
3949 | },
3950 | "which": {
3951 | "version": "1.2.14",
3952 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
3953 | "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
3954 | "dev": true,
3955 | "requires": {
3956 | "isexe": "2.0.0"
3957 | }
3958 | },
3959 | "window-size": {
3960 | "version": "0.1.0",
3961 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
3962 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
3963 | "dev": true,
3964 | "optional": true
3965 | },
3966 | "wordwrap": {
3967 | "version": "1.0.0",
3968 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
3969 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
3970 | "dev": true
3971 | },
3972 | "wrappy": {
3973 | "version": "1.0.2",
3974 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3975 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3976 | "dev": true
3977 | },
3978 | "xtend": {
3979 | "version": "4.0.1",
3980 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
3981 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
3982 | "dev": true
3983 | },
3984 | "yargs": {
3985 | "version": "3.10.0",
3986 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
3987 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
3988 | "dev": true,
3989 | "optional": true,
3990 | "requires": {
3991 | "camelcase": "1.2.1",
3992 | "cliui": "2.1.0",
3993 | "decamelize": "1.2.0",
3994 | "window-size": "0.1.0"
3995 | },
3996 | "dependencies": {
3997 | "camelcase": {
3998 | "version": "1.2.1",
3999 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
4000 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
4001 | "dev": true,
4002 | "optional": true
4003 | }
4004 | }
4005 | }
4006 | }
4007 | }
4008 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wasm-arrays",
3 | "version": "1.0.2",
4 | "description": "A couple of helper functions to make WebAssembly array parameters easy to use",
5 | "main": "dist/wasm-arrays.min.js",
6 | "scripts": {
7 | "test": "nyc mocha",
8 | "coverage": "nyc report --reporter=text-lcov | coveralls",
9 | "coveralls": "npm run coverage -- --report lcovonly && cat ./coverage/lcov.info | coveralls"
10 | },
11 | "keywords": [
12 | "webassembly"
13 | ],
14 | "author": "Dan Ruta",
15 | "repository": {
16 | "type": "git",
17 | "url": "git+https://github.com/DanRuta/wasm-arrays.git"
18 | },
19 | "bugs": {
20 | "url": "https://github.com/DanRuta/wasm-arrays/issues"
21 | },
22 | "homepage": "https://github.com/DanRuta/wasm-arrays#readme",
23 | "license": "MIT",
24 | "directories": {},
25 | "devDependencies": {
26 | "chai": "3.5.0",
27 | "coveralls": "^2.13.1",
28 | "grunt": "^1.0.1",
29 | "grunt-cli": "^1.2.0",
30 | "grunt-contrib-uglify": "git://github.com/gruntjs/grunt-contrib-uglify.git#harmony",
31 | "grunt-exec": "^3.0.0",
32 | "grunt-contrib-watch": "^1.0.0",
33 | "istanbul": "^0.4.5",
34 | "mocha": "^3.4.2",
35 | "mocha-lcov-reporter": "^1.3.0",
36 | "nyc": "^11.0.2",
37 | "sinon": "^2.3.2",
38 | "sinon-chai": "^2.10.0"
39 | },
40 | "engines": {
41 | "node": ">= 8.4.0"
42 | },
43 | "nyc": {
44 | "exclude": [
45 | "**/demo.js",
46 | "**/test.js"
47 | ]
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | const http = require("http")
4 | const fs = require("fs")
5 | const url = require("url")
6 |
7 | http.createServer((request, response) => {
8 |
9 | let path = url.parse(request.url).pathname
10 | let data
11 |
12 | path = (path=="/"?"/demo.html":path)
13 |
14 | console.log(path)
15 |
16 | try{
17 | data = fs.readFileSync(__dirname+path)
18 | }catch(e){}
19 |
20 | response.end(data)
21 |
22 | }).listen(1337, () => console.log("Server listening on port 1337"))
23 |
24 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | const chai = require("chai")
4 | const expect = chai.expect
5 | const sinonChai = require("sinon-chai")
6 | const sinon = require("sinon")
7 | chai.use(sinonChai)
8 |
9 | const {ccallArrays, cwrapArrays} = require("../dev/wasm-arrays.js")
10 |
11 | global.Module = require("../demo.js")
12 |
13 | it("Loads ok", () => {
14 | expect(typeof ccallArrays).to.not.equal("undefined")
15 | expect(typeof cwrapArrays).to.not.equal("undefined")
16 | })
17 |
18 |
19 | describe("ccallArrays", () => {
20 |
21 | it("Demo Example 1", () => {
22 | const res = ccallArrays("getSetWASMArray", "array", ["array", "number", "array"], [[1,2,3,4,5], 12345, [2, 10]], {heapIn: "HEAPF32", returnArraySize: 5})
23 | expect(res).to.deep.equal([20,40,60,80,100])
24 | })
25 |
26 | it("Demo Example 1 - no parameter types", () => {
27 | const res = ccallArrays("getSetWASMArray", "array", null, [[1,2,3,4,5], 12345, [2, 10]], {heapIn: "HEAPF32", returnArraySize: 5})
28 | expect(res).to.deep.equal([20,40,60,80,100])
29 | })
30 |
31 | it("Demo example 2", () => {
32 | const res = ccallArrays("get10Nums", "array", null, null, {heapOut: "HEAP32", returnArraySize: 10})
33 | expect(res).to.deep.equal([1,2,3,4,5,6,7,8,9,10])
34 | })
35 |
36 | it("Demo example 3", () => {
37 | const res = ccallArrays("addNums", "number", ["array"], [[1,2,3,4,5,6,7]])
38 | expect(res).to.equal(28)
39 | })
40 |
41 | it("HEAP8 in and out using 'HEAP8' config", () => {
42 | const res = ccallArrays("testHEAP8", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAP8", heapOut: "HEAP8", returnArraySize: 5})
43 | expect(res).to.deep.equal([2,4,6,8,10])
44 | })
45 |
46 | it("HEAPU8 in and out using 'HEAPU8' config", () => {
47 | const res = ccallArrays("testHEAPU8", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAPU8", heapOut: "HEAPU8", returnArraySize: 5})
48 | expect(res).to.deep.equal([2,4,6,8,10])
49 | })
50 |
51 | it("HEAP16 in and out using 'HEAP16' config", () => {
52 | const res = ccallArrays("testHEAP16", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAP16", heapOut: "HEAP16", returnArraySize: 5})
53 | expect(res).to.deep.equal([2,4,6,8,10])
54 | })
55 |
56 | it("HEAPU16 in and out using 'HEAPU16' config", () => {
57 | const res = ccallArrays("testHEAPU16", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAPU16", heapOut: "HEAPU16", returnArraySize: 5})
58 | expect(res).to.deep.equal([2,4,6,8,10])
59 | })
60 |
61 | it("HEAP32 in and out using 'HEAP32' config", () => {
62 | const res = ccallArrays("testHEAP32", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAP32", heapOut: "HEAP32", returnArraySize: 5})
63 | expect(res).to.deep.equal([2,4,6,8,10])
64 | })
65 |
66 | it("HEAPU32 in and out using 'HEAPU32' config", () => {
67 | const res = ccallArrays("testHEAPU32", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAPU32", heapOut: "HEAPU32", returnArraySize: 5})
68 | expect(res).to.deep.equal([2,4,6,8,10])
69 | })
70 |
71 | it("HEAPF32 in and out using 'HEAPF32' config", () => {
72 | const res = ccallArrays("testHEAPF32", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAPF32", heapOut: "HEAPF32", returnArraySize: 5})
73 | expect(res).to.deep.equal([2,4,6,8,10])
74 | })
75 |
76 | it("Defaults the HEAP values to HEAPF32", () => {
77 | const res = ccallArrays("testHEAPF32", "array", ["array"], [[1,2,3,4,5]], {returnArraySize: 5})
78 | expect(res).to.deep.equal([2,4,6,8,10])
79 | })
80 |
81 | it("HEAPF64 in and out using 'HEAPF64' config", () => {
82 | const res = ccallArrays("testHEAPF64", "array", ["array"], [[1,2,3,4,5]], {heapIn: "HEAPF64", heapOut: "HEAPF64", returnArraySize: 5})
83 | expect(res).to.deep.equal([2,4,6,8,10])
84 | })
85 |
86 | it("Returns original value when return type is not array", () => {
87 | const res = ccallArrays("addNums", null, ["array"], [[1,2,3]], {heapIn: "HEAP32"})
88 | expect(Array.isArray(res)).to.be.false
89 | })
90 |
91 | it("Throws errors, but first it frees the memory using Module._free", () => {
92 | sinon.stub(Module, "_free")
93 | expect(ccallArrays.bind(null, "addNums", "array", ["array"], [[1,2,3]], {heapIn: "HEAP32", heapOut: "HEAP3fdgd2"})).to.throw()
94 | expect(Module._free).to.be.called
95 | Module._free.restore()
96 | })
97 |
98 | it("Throws errors, but first it frees the memory using Module._free", () => {
99 | sinon.stub(Module, "ccall").callsFake(() => {throw new Error("Fake error")})
100 | expect(ccallArrays.bind(null, "addNums", "array", ["array"], [[1,2,3]], {heapIn: "HEAP32", heapOut: "HEAP3fdgd2"})).to.throw("Fake error")
101 | Module.ccall.restore()
102 | })
103 | })
104 |
105 |
106 | describe("cwrapArrays", () => {
107 |
108 | it("Demo Example 1", () => {
109 | const fn = cwrapArrays("getSetWASMArray", "array", ["array", "number", "array"], {heapIn: "HEAPF32", returnArraySize: 5})
110 | const res = fn([[1,2,3,4,5], 12345, [2, 10]])
111 | expect(res).to.deep.equal([20,40,60,80,100])
112 | })
113 |
114 | it("Demo Example 1 - no parameter types", () => {
115 | const fn = cwrapArrays("getSetWASMArray", "array", null, {heapIn: "HEAPF32", returnArraySize: 5})
116 | const res = fn([[1,2,3,4,5], 12345, [2, 10]])
117 | expect(res).to.deep.equal([20,40,60,80,100])
118 | })
119 |
120 | it("Demo example 2", () => {
121 | const fn = cwrapArrays("get10Nums", "array", null, {heapOut: "HEAP32", returnArraySize: 10})
122 | const res = fn(null)
123 | expect(res).to.deep.equal([1,2,3,4,5,6,7,8,9,10])
124 | })
125 |
126 | it("Demo example 3", () => {
127 | const fn = cwrapArrays("addNums", "number", ["array"])
128 | const res = fn([[1,2,3,4,5,6,7]])
129 | expect(res).to.equal(28)
130 | })
131 |
132 | it("HEAP8 in and out using 'HEAP8' config", () => {
133 | const fn = cwrapArrays("testHEAP8", "array", ["array"], {heapIn: "HEAP8", heapOut: "HEAP8", returnArraySize: 5})
134 | const res = fn([[1,2,3,4,5]])
135 | expect(res).to.deep.equal([2,4,6,8,10])
136 | })
137 |
138 | it("HEAPU8 in and out using 'HEAPU8' config", () => {
139 | const fn = cwrapArrays("testHEAPU8", "array", ["array"], {heapIn: "HEAPU8", heapOut: "HEAPU8", returnArraySize: 5})
140 | const res = fn([[1,2,3,4,5]])
141 | expect(res).to.deep.equal([2,4,6,8,10])
142 | })
143 |
144 | it("HEAP16 in and out using 'HEAP16' config", () => {
145 | const fn = cwrapArrays("testHEAP16", "array", ["array"], {heapIn: "HEAP16", heapOut: "HEAP16", returnArraySize: 5})
146 | const res = fn([[1,2,3,4,5]])
147 | expect(res).to.deep.equal([2,4,6,8,10])
148 | })
149 |
150 | it("HEAPU16 in and out using 'HEAPU16' config", () => {
151 | const fn = cwrapArrays("testHEAPU16", "array", ["array"], {heapIn: "HEAPU16", heapOut: "HEAPU16", returnArraySize: 5})
152 | const res = fn([[1,2,3,4,5]])
153 | expect(res).to.deep.equal([2,4,6,8,10])
154 | })
155 |
156 | it("HEAP32 in and out using 'HEAP32' config", () => {
157 | const fn = cwrapArrays("testHEAP32", "array", ["array"], {heapIn: "HEAP32", heapOut: "HEAP32", returnArraySize: 5})
158 | const res = fn([[1,2,3,4,5]])
159 | expect(res).to.deep.equal([2,4,6,8,10])
160 | })
161 |
162 | it("HEAPU32 in and out using 'HEAPU32' config", () => {
163 | const fn = cwrapArrays("testHEAPU32", "array", ["array"], {heapIn: "HEAPU32", heapOut: "HEAPU32", returnArraySize: 5})
164 | const res = fn([[1,2,3,4,5]])
165 | expect(res).to.deep.equal([2,4,6,8,10])
166 | })
167 |
168 | it("HEAPF32 in and out using 'HEAPF32' config", () => {
169 | const fn = cwrapArrays("testHEAPF32", "array", ["array"], {heapIn: "HEAPF32", heapOut: "HEAPF32", returnArraySize: 5})
170 | const res = fn([[1,2,3,4,5]])
171 | expect(res).to.deep.equal([2,4,6,8,10])
172 | })
173 |
174 | it("Defaults the HEAP values to HEAPF32", () => {
175 | const fn = cwrapArrays("testHEAPF32", "array", ["array"], {returnArraySize: 5})
176 | const res = fn([[1,2,3,4,5]])
177 | expect(res).to.deep.equal([2,4,6,8,10])
178 | })
179 |
180 | it("HEAPF64 in and out using 'HEAPF64' config", () => {
181 | const fn = cwrapArrays("testHEAPF64", "array", ["array"], {heapIn: "HEAPF64", heapOut: "HEAPF64", returnArraySize: 5})
182 | const res = fn([[1,2,3,4,5]])
183 | expect(res).to.deep.equal([2,4,6,8,10])
184 | })
185 |
186 | it("Returns original value when return type is not array", () => {
187 | const fn = cwrapArrays("addNums", null, ["array"], {heapIn: "HEAP32"})
188 | const res = fn([[1,2,3]])
189 | expect(Array.isArray(res)).to.be.false
190 | })
191 |
192 | it("Throws errors, but first it frees the memory using Module._free", () => {
193 | sinon.stub(Module, "_free")
194 | const fn = cwrapArrays("addNums", "array", ["array"], {heapIn: "HEAP32", heapOut: "HEAP3fdgd2"})
195 | expect(fn.bind(null, [[1,2,3]])).to.throw()
196 | expect(Module._free).to.be.called
197 | Module._free.restore()
198 | })
199 |
200 | it("Throws errors, but first it frees the memory using Module._free", () => {
201 | sinon.stub(Module, "ccall").callsFake(() => {throw new Error("Fake error")})
202 | const fn = ccallArrays.bind(null, "addNums", "array", ["array"], {heapIn: "HEAP32", heapOut: "HEAP3fdgd2"})
203 | expect(fn.bind([[1,2,3]])).to.throw("Fake error")
204 | Module.ccall.restore()
205 | })
206 | })
--------------------------------------------------------------------------------