├── .gitignore ├── .vscode └── launch.json ├── README.md ├── demo.gif ├── lib ├── interpreter.js ├── interpreter.js.map ├── test.js └── test.js.map ├── package.json ├── src ├── eval.ts ├── main.ts ├── scope.ts ├── test.ts ├── type.ts └── vm.ts ├── tsconfig.json ├── webpack.config.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/** -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // 使用 IntelliSense 了解相关属性。 3 | // 悬停以查看现有属性的描述。 4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "program": "${workspaceFolder}/lib/test.js", 12 | "sourceMaps": true 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jsjs 2 | 3 | [https://zhuanlan.zhihu.com/p/34191831](https://zhuanlan.zhihu.com/p/34191831) 4 | 5 | 醉了,一个玩具项目那么多 star.好吧,近期我把这东西代码和注释完善一下,不追求一定能工业应用,但至少能做出一个教学级别项目给大家展示设计思路,保证不辜负这么多 star. 6 | 7 | ![demo.jpg](/demo.gif) 8 | -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bramblex/jsjs/ab7133f7435acdf16a86473cbd36ab68d6195fba/demo.gif -------------------------------------------------------------------------------- /lib/interpreter.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.interpreter=e():t.interpreter=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function i(s){if(e[s])return e[s].exports;var n=e[s]={i:s,l:!1,exports:{}};return t[s].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,s){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:s})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){this.value=e,this.kind=t}return t.prototype.$set=function(t){return"const"!==this.value&&(this.value=t,!0)},t.prototype.$get=function(){return this.value},t}();e.ScopeVar=s;var n=function(){function t(t,e){this.object=t,this.property=e}return t.prototype.$set=function(t){return this.object[this.property]=t,!0},t.prototype.$get=function(){return this.object[this.property]},t.prototype.$delete=function(){delete this.object[this.property]},t}();e.PropVar=n;var r=function(){function t(t,e,i){this.prefix="@",this.type=t,this.parent=e||null,this.content={},this.invasived=!1}return t.prototype.$find=function(t){var e=this.prefix+t;return this.content.hasOwnProperty(e)?this.content[e]:this.parent?this.parent.$find(t):null},t.prototype.$let=function(t,e){var i=this.prefix+t;return!this.content[i]&&(this.content[i]=new s("let",e),!0)},t.prototype.$const=function(t,e){var i=this.prefix+t;return!this.content[i]&&(this.content[i]=new s("const",e),!0)},t.prototype.$var=function(t,e){for(var i=this.prefix+t,n=this;null!==n.parent&&"function"!==n.type;)n=n.parent;return!n.content[i]&&(this.content[i]=new s("var",e),!0)},t.prototype.$declar=function(t,e,i){var s=this;return{var:function(){return s.$var(e,i)},let:function(){return s.$let(e,i)},const:function(){return s.$const(e,i)}}[t]()},t}();e.Scope=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=i(2),n=i(0),r=i(3),a={ecmaVersion:5,sourceType:"script",locations:!0},o={console:console,setTimeout:setTimeout,setInterval:setInterval,clearTimeout:clearTimeout,clearInterval:clearInterval,encodeURI:encodeURI,encodeURIComponent:encodeURIComponent,decodeURI:decodeURI,decodeURIComponent:decodeURIComponent,escape:escape,unescape:unescape,Infinity:1/0,NaN:NaN,isFinite:isFinite,isNaN:isNaN,parseFloat:parseFloat,parseInt:parseInt,Object:Object,Boolean:Boolean,Error:Error,EvalError:EvalError,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError,URIError:URIError,Number:Number,Math:Math,Date:Date,String:String,RegExp:RegExp,Array:Array,JSON:JSON,Promise:Promise};e.run=function(t,e){void 0===e&&(e={});var i=new n.Scope("block");i.$const("this",this);for(var h=0,p=Object.getOwnPropertyNames(o);ht)return!1;if((i+=e[s+1])>=t)return!0}}function l(t,e){return t<65?36===t:t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&o.test(String.fromCharCode(t)):!1!==e&&u(t,p)))}function d(t,e){return t<48?36===t:t<58||!(t<65)&&(t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&h.test(String.fromCharCode(t)):!1!==e&&(u(t,p)||u(t,c)))))}var f=function(t,e){void 0===e&&(e={}),this.label=t,this.keyword=e.keyword,this.beforeExpr=!!e.beforeExpr,this.startsExpr=!!e.startsExpr,this.isLoop=!!e.isLoop,this.isAssign=!!e.isAssign,this.prefix=!!e.prefix,this.postfix=!!e.postfix,this.binop=e.binop||null,this.updateContext=null};function m(t,e){return new f(t,{beforeExpr:!0,binop:e})}var x={beforeExpr:!0},y={startsExpr:!0},v={};function g(t,e){return void 0===e&&(e={}),e.keyword=t,v[t]=new f(t,e)}var b={num:new f("num",y),regexp:new f("regexp",y),string:new f("string",y),name:new f("name",y),eof:new f("eof"),bracketL:new f("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new f("]"),braceL:new f("{",{beforeExpr:!0,startsExpr:!0}),braceR:new f("}"),parenL:new f("(",{beforeExpr:!0,startsExpr:!0}),parenR:new f(")"),comma:new f(",",x),semi:new f(";",x),colon:new f(":",x),dot:new f("."),question:new f("?",x),arrow:new f("=>",x),template:new f("template"),invalidTemplate:new f("invalidTemplate"),ellipsis:new f("...",x),backQuote:new f("`",y),dollarBraceL:new f("${",{beforeExpr:!0,startsExpr:!0}),eq:new f("=",{beforeExpr:!0,isAssign:!0}),assign:new f("_=",{beforeExpr:!0,isAssign:!0}),incDec:new f("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new f("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:m("||",1),logicalAND:m("&&",2),bitwiseOR:m("|",3),bitwiseXOR:m("^",4),bitwiseAND:m("&",5),equality:m("==/!=/===/!==",6),relational:m("/<=/>=",7),bitShift:m("<>/>>>",8),plusMin:new f("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:m("%",10),star:m("*",10),slash:m("/",10),starstar:new f("**",{beforeExpr:!0}),_break:g("break"),_case:g("case",x),_catch:g("catch"),_continue:g("continue"),_debugger:g("debugger"),_default:g("default",x),_do:g("do",{isLoop:!0,beforeExpr:!0}),_else:g("else",x),_finally:g("finally"),_for:g("for",{isLoop:!0}),_function:g("function",y),_if:g("if"),_return:g("return",x),_switch:g("switch"),_throw:g("throw",x),_try:g("try"),_var:g("var"),_const:g("const"),_while:g("while",{isLoop:!0}),_with:g("with"),_new:g("new",{beforeExpr:!0,startsExpr:!0}),_this:g("this",y),_super:g("super",y),_class:g("class",y),_extends:g("extends",x),_export:g("export"),_import:g("import"),_null:g("null",y),_true:g("true",y),_false:g("false",y),_in:g("in",{beforeExpr:!0,binop:7}),_instanceof:g("instanceof",{beforeExpr:!0,binop:7}),_typeof:g("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:g("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:g("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},k=/\r\n?|\n|\u2028|\u2029/,w=new RegExp(k.source,"g");function E(t){return 10===t||13===t||8232===t||8233===t}var S=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,A=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,C=Object.prototype,P=C.hasOwnProperty,_=C.toString;function T(t,e){return P.call(t,e)}var L=Array.isArray||function(t){return"[object Array]"===_.call(t)},N=function(t,e){this.line=t,this.column=e};N.prototype.offset=function(t){return new N(this.line,this.column+t)};var I=function(t,e,i){this.start=e,this.end=i,null!==t.sourceFile&&(this.source=t.sourceFile)};function R(t,e){for(var i=1,s=0;;){w.lastIndex=s;var n=w.exec(t);if(!(n&&n.index=2015&&(e.ecmaVersion-=2009),null==e.allowReserved&&(e.allowReserved=e.ecmaVersion<5),L(e.onToken)){var s=e.onToken;e.onToken=function(t){return s.push(t)}}return L(e.onComment)&&(e.onComment=function(t,e){return function(i,s,n,r,a,o){var h={type:i?"Block":"Line",value:s,start:n,end:r};t.locations&&(h.loc=new I(this,a,o)),t.ranges&&(h.range=[n,r]),e.push(h)}}(e,e.onComment)),e}var $={};function D(t){return new RegExp("^(?:"+t.replace(/ /g,"|")+")$")}var O=function(t,i,n){this.options=t=F(t),this.sourceFile=t.sourceFile,this.keywords=D(s[t.ecmaVersion>=6?6:5]);var r="";if(!t.allowReserved){for(var a=t.ecmaVersion;!(r=e[a]);a--);"module"==t.sourceType&&(r+=" await")}this.reservedWords=D(r);var o=(r?r+" ":"")+e.strict;this.reservedWordsStrict=D(o),this.reservedWordsStrictBind=D(o+" "+e.strictBind),this.input=String(i),this.containsEsc=!1,this.loadPlugins(t.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(k).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=b.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===t.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&t.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterFunctionScope()};O.prototype.isKeyword=function(t){return this.keywords.test(t)},O.prototype.isReservedWord=function(t){return this.reservedWords.test(t)},O.prototype.extend=function(t,e){this[t]=e(this[t])},O.prototype.loadPlugins=function(t){for(var e in t){var i=$[e];if(!i)throw new Error("Plugin '"+e+"' not found");i(this,t[e])}},O.prototype.parse=function(){var t=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(t)};var B=O.prototype,M=/^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)"|;)/;function j(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1}B.strictDirective=function(t){for(;;){A.lastIndex=t,t+=A.exec(this.input)[0].length;var e=M.exec(this.input.slice(t));if(!e)return!1;if("use strict"==(e[1]||e[2]))return!0;t+=e[0].length}},B.eat=function(t){return this.type===t&&(this.next(),!0)},B.isContextual=function(t){return this.type===b.name&&this.value===t&&!this.containsEsc},B.eatContextual=function(t){return!!this.isContextual(t)&&(this.next(),!0)},B.expectContextual=function(t){this.eatContextual(t)||this.unexpected()},B.canInsertSemicolon=function(){return this.type===b.eof||this.type===b.braceR||k.test(this.input.slice(this.lastTokEnd,this.start))},B.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},B.semicolon=function(){this.eat(b.semi)||this.insertSemicolon()||this.unexpected()},B.afterTrailingComma=function(t,e){if(this.type==t)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),e||this.next(),!0},B.expect=function(t){this.eat(t)||this.unexpected()},B.unexpected=function(t){this.raise(null!=t?t:this.start,"Unexpected token")},B.checkPatternErrors=function(t,e){if(t){t.trailingComma>-1&&this.raiseRecoverable(t.trailingComma,"Comma is not permitted after the rest element");var i=e?t.parenthesizedAssign:t.parenthesizedBind;i>-1&&this.raiseRecoverable(i,"Parenthesized pattern")}},B.checkExpressionErrors=function(t,e){if(!t)return!1;var i=t.shorthandAssign,s=t.doubleProto;if(!e)return i>=0||s>=0;i>=0&&this.raise(i,"Shorthand property assignments are valid only in destructuring patterns"),s>=0&&this.raiseRecoverable(s,"Redefinition of __proto__ property")},B.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(t.sourceType=this.options.sourceType),this.finishNode(t,"Program")};var q={kind:"loop"},z={kind:"switch"};U.isLet=function(){if(this.options.ecmaVersion<6||!this.isContextual("let"))return!1;A.lastIndex=this.pos;var t=A.exec(this.input),e=this.pos+t[0].length,i=this.input.charCodeAt(e);if(91===i||123==i)return!0;if(l(i,!0)){for(var s=e+1;d(this.input.charCodeAt(s),!0);)++s;var r=this.input.slice(e,s);if(!n.test(r))return!0}return!1},U.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;A.lastIndex=this.pos;var t=A.exec(this.input),e=this.pos+t[0].length;return!(k.test(this.input.slice(this.pos,e))||"function"!==this.input.slice(e,e+8)||e+8!=this.input.length&&d(this.input.charAt(e+8)))},U.parseStatement=function(t,e,i){var s,n=this.type,r=this.startNode();switch(this.isLet()&&(n=b._var,s="let"),n){case b._break:case b._continue:return this.parseBreakContinueStatement(r,n.keyword);case b._debugger:return this.parseDebuggerStatement(r);case b._do:return this.parseDoStatement(r);case b._for:return this.parseForStatement(r);case b._function:return!t&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(r,!1);case b._class:return t||this.unexpected(),this.parseClass(r,!0);case b._if:return this.parseIfStatement(r);case b._return:return this.parseReturnStatement(r);case b._switch:return this.parseSwitchStatement(r);case b._throw:return this.parseThrowStatement(r);case b._try:return this.parseTryStatement(r);case b._const:case b._var:return s=s||this.value,t||"var"==s||this.unexpected(),this.parseVarStatement(r,s);case b._while:return this.parseWhileStatement(r);case b._with:return this.parseWithStatement(r);case b.braceL:return this.parseBlock();case b.semi:return this.parseEmptyStatement(r);case b._export:case b._import:return this.options.allowImportExportEverywhere||(e||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),n===b._import?this.parseImport(r):this.parseExport(r,i);default:if(this.isAsyncFunction())return t||this.unexpected(),this.next(),this.parseFunctionStatement(r,!0);var a=this.value,o=this.parseExpression();return n===b.name&&"Identifier"===o.type&&this.eat(b.colon)?this.parseLabeledStatement(r,a,o):this.parseExpressionStatement(r,o)}},U.parseBreakContinueStatement=function(t,e){var i="break"==e;this.next(),this.eat(b.semi)||this.insertSemicolon()?t.label=null:this.type!==b.name?this.unexpected():(t.label=this.parseIdent(),this.semicolon());for(var s=0;s=6?this.eat(b.semi):this.semicolon(),this.finishNode(t,"DoWhileStatement")},U.parseForStatement=function(t){this.next();var e=this.options.ecmaVersion>=9&&this.inAsync&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(q),this.enterLexicalScope(),this.expect(b.parenL),this.type===b.semi)return e>-1&&this.unexpected(e),this.parseFor(t,null);var i=this.isLet();if(this.type===b._var||this.type===b._const||i){var s=this.startNode(),n=i?"let":this.value;return this.next(),this.parseVar(s,!0,n),this.finishNode(s,"VariableDeclaration"),!(this.type===b._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==s.declarations.length||"var"!==n&&s.declarations[0].init?(e>-1&&this.unexpected(e),this.parseFor(t,s)):(this.options.ecmaVersion>=9&&(this.type===b._in?e>-1&&this.unexpected(e):t.await=e>-1),this.parseForIn(t,s))}var r=new j,a=this.parseExpression(!0,r);return this.type===b._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.options.ecmaVersion>=9&&(this.type===b._in?e>-1&&this.unexpected(e):t.await=e>-1),this.toAssignable(a,!1,r),this.checkLVal(a),this.parseForIn(t,a)):(this.checkExpressionErrors(r,!0),e>-1&&this.unexpected(e),this.parseFor(t,a))},U.parseFunctionStatement=function(t,e){return this.next(),this.parseFunction(t,!0,!1,e)},U.parseIfStatement=function(t){return this.next(),t.test=this.parseParenExpression(),t.consequent=this.parseStatement(!this.strict&&this.type==b._function),t.alternate=this.eat(b._else)?this.parseStatement(!this.strict&&this.type==b._function):null,this.finishNode(t,"IfStatement")},U.parseReturnStatement=function(t){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(b.semi)||this.insertSemicolon()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")},U.parseSwitchStatement=function(t){var e;this.next(),t.discriminant=this.parseParenExpression(),t.cases=[],this.expect(b.braceL),this.labels.push(z),this.enterLexicalScope();for(var i=!1;this.type!=b.braceR;)if(this.type===b._case||this.type===b._default){var s=this.type===b._case;e&&this.finishNode(e,"SwitchCase"),t.cases.push(e=this.startNode()),e.consequent=[],this.next(),s?e.test=this.parseExpression():(i&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),i=!0,e.test=null),this.expect(b.colon)}else e||this.unexpected(),e.consequent.push(this.parseStatement(!0));return this.exitLexicalScope(),e&&this.finishNode(e,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(t,"SwitchStatement")},U.parseThrowStatement=function(t){return this.next(),k.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")};var W=[];U.parseTryStatement=function(t){if(this.next(),t.block=this.parseBlock(),t.handler=null,this.type===b._catch){var e=this.startNode();this.next(),this.expect(b.parenL),e.param=this.parseBindingAtom(),this.enterLexicalScope(),this.checkLVal(e.param,"let"),this.expect(b.parenR),e.body=this.parseBlock(!1),this.exitLexicalScope(),t.handler=this.finishNode(e,"CatchClause")}return t.finalizer=this.eat(b._finally)?this.parseBlock():null,t.handler||t.finalizer||this.raise(t.start,"Missing catch or finally clause"),this.finishNode(t,"TryStatement")},U.parseVarStatement=function(t,e){return this.next(),this.parseVar(t,!1,e),this.semicolon(),this.finishNode(t,"VariableDeclaration")},U.parseWhileStatement=function(t){return this.next(),t.test=this.parseParenExpression(),this.labels.push(q),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"WhileStatement")},U.parseWithStatement=function(t){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),t.object=this.parseParenExpression(),t.body=this.parseStatement(!1),this.finishNode(t,"WithStatement")},U.parseEmptyStatement=function(t){return this.next(),this.finishNode(t,"EmptyStatement")},U.parseLabeledStatement=function(t,e,i){for(var s=0,n=this.labels;s=0;a--){var o=this.labels[a];if(o.statementStart!=t.start)break;o.statementStart=this.start,o.kind=r}return this.labels.push({name:e,kind:r,statementStart:this.start}),t.body=this.parseStatement(!0),("ClassDeclaration"==t.body.type||"VariableDeclaration"==t.body.type&&"var"!=t.body.kind||"FunctionDeclaration"==t.body.type&&(this.strict||t.body.generator))&&this.raiseRecoverable(t.body.start,"Invalid labeled declaration"),this.labels.pop(),t.label=i,this.finishNode(t,"LabeledStatement")},U.parseExpressionStatement=function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")},U.parseBlock=function(t){void 0===t&&(t=!0);var e=this.startNode();for(e.body=[],this.expect(b.braceL),t&&this.enterLexicalScope();!this.eat(b.braceR);){var i=this.parseStatement(!0);e.body.push(i)}return t&&this.exitLexicalScope(),this.finishNode(e,"BlockStatement")},U.parseFor=function(t,e){return t.init=e,this.expect(b.semi),t.test=this.type===b.semi?null:this.parseExpression(),this.expect(b.semi),t.update=this.type===b.parenR?null:this.parseExpression(),this.expect(b.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"ForStatement")},U.parseForIn=function(t,e){var i=this.type===b._in?"ForInStatement":"ForOfStatement";return this.next(),"ForInStatement"==i&&("AssignmentPattern"===e.type||"VariableDeclaration"===e.type&&null!=e.declarations[0].init&&(this.strict||"Identifier"!==e.declarations[0].id.type))&&this.raise(e.start,"Invalid assignment in for-in loop head"),t.left=e,t.right="ForInStatement"==i?this.parseExpression():this.parseMaybeAssign(),this.expect(b.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,i)},U.parseVar=function(t,e,i){for(t.declarations=[],t.kind=i;;){var s=this.startNode();if(this.parseVarId(s,i),this.eat(b.eq)?s.init=this.parseMaybeAssign(e):"const"!==i||this.type===b._in||this.options.ecmaVersion>=6&&this.isContextual("of")?"Identifier"==s.id.type||e&&(this.type===b._in||this.isContextual("of"))?s.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),t.declarations.push(this.finishNode(s,"VariableDeclarator")),!this.eat(b.comma))break}return t},U.parseVarId=function(t,e){t.id=this.parseBindingAtom(e),this.checkLVal(t.id,e,!1)},U.parseFunction=function(t,e,i,s){this.initFunction(t),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!s)&&(t.generator=this.eat(b.star)),this.options.ecmaVersion>=8&&(t.async=!!s),e&&(t.id="nullableID"===e&&this.type!=b.name?null:this.parseIdent(),t.id&&this.checkLVal(t.id,"var"));var n=this.inGenerator,r=this.inAsync,a=this.yieldPos,o=this.awaitPos,h=this.inFunction;return this.inGenerator=t.generator,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),e||(t.id=this.type==b.name?this.parseIdent():null),this.parseFunctionParams(t),this.parseFunctionBody(t,i),this.inGenerator=n,this.inAsync=r,this.yieldPos=a,this.awaitPos=o,this.inFunction=h,this.finishNode(t,e?"FunctionDeclaration":"FunctionExpression")},U.parseFunctionParams=function(t){this.expect(b.parenL),t.params=this.parseBindingList(b.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},U.parseClass=function(t,e){this.next(),this.parseClassId(t,e),this.parseClassSuper(t);var i=this.startNode(),s=!1;for(i.body=[],this.expect(b.braceL);!this.eat(b.braceR);){var n=this.parseClassMember(i);n&&"MethodDefinition"===n.type&&"constructor"===n.kind&&(s&&this.raise(n.start,"Duplicate constructor in the same class"),s=!0)}return t.body=this.finishNode(i,"ClassBody"),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")},U.parseClassMember=function(t){var e=this;if(this.eat(b.semi))return null;var i=this.startNode(),s=function(t,s){void 0===s&&(s=!1);var n=e.start,r=e.startLoc;return!!e.eatContextual(t)&&(!(e.type===b.parenL||s&&e.canInsertSemicolon())||(i.key&&e.unexpected(),i.computed=!1,i.key=e.startNodeAt(n,r),i.key.name=t,e.finishNode(i.key,"Identifier"),!1))};i.kind="method",i.static=s("static");var n=this.eat(b.star),r=!1;n||(this.options.ecmaVersion>=8&&s("async",!0)?(r=!0,n=this.options.ecmaVersion>=9&&this.eat(b.star)):s("get")?i.kind="get":s("set")&&(i.kind="set")),i.key||this.parsePropertyName(i);var a=i.key;return i.computed||i.static||!("Identifier"===a.type&&"constructor"===a.name||"Literal"===a.type&&"constructor"===a.value)?i.static&&"Identifier"===a.type&&"prototype"===a.name&&this.raise(a.start,"Classes may not have a static property named prototype"):("method"!==i.kind&&this.raise(a.start,"Constructor can't have get/set modifier"),n&&this.raise(a.start,"Constructor can't be a generator"),r&&this.raise(a.start,"Constructor can't be an async method"),i.kind="constructor"),this.parseClassMethod(t,i,n,r),"get"===i.kind&&0!==i.value.params.length&&this.raiseRecoverable(i.value.start,"getter should have no params"),"set"===i.kind&&1!==i.value.params.length&&this.raiseRecoverable(i.value.start,"setter should have exactly one param"),"set"===i.kind&&"RestElement"===i.value.params[0].type&&this.raiseRecoverable(i.value.params[0].start,"Setter cannot use rest params"),i},U.parseClassMethod=function(t,e,i,s){e.value=this.parseMethod(i,s),t.body.push(this.finishNode(e,"MethodDefinition"))},U.parseClassId=function(t,e){t.id=this.type===b.name?this.parseIdent():!0===e?this.unexpected():null},U.parseClassSuper=function(t){t.superClass=this.eat(b._extends)?this.parseExprSubscripts():null},U.parseExport=function(t,e){if(this.next(),this.eat(b.star))return this.expectContextual("from"),this.type!==b.string&&this.unexpected(),t.source=this.parseExprAtom(),this.semicolon(),this.finishNode(t,"ExportAllDeclaration");if(this.eat(b._default)){var i;if(this.checkExport(e,"default",this.lastTokStart),this.type===b._function||(i=this.isAsyncFunction())){var s=this.startNode();this.next(),i&&this.next(),t.declaration=this.parseFunction(s,"nullableID",!1,i)}else if(this.type===b._class){var n=this.startNode();t.declaration=this.parseClass(n,"nullableID")}else t.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(t,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())t.declaration=this.parseStatement(!0),"VariableDeclaration"===t.declaration.type?this.checkVariableExport(e,t.declaration.declarations):this.checkExport(e,t.declaration.id.name,t.declaration.id.start),t.specifiers=[],t.source=null;else{if(t.declaration=null,t.specifiers=this.parseExportSpecifiers(e),this.eatContextual("from"))this.type!==b.string&&this.unexpected(),t.source=this.parseExprAtom();else{for(var r=0,a=t.specifiers;r=6&&t)switch(t.type){case"Identifier":this.inAsync&&"await"===t.name&&this.raise(t.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"RestElement":break;case"ObjectExpression":t.type="ObjectPattern",i&&this.checkPatternErrors(i,!0);for(var s=0,n=t.properties;s=9&&"SpreadElement"===t.type||this.options.ecmaVersion>=6&&(t.computed||t.method||t.shorthand))){var s,n=t.key;switch(n.type){case"Identifier":s=n.name;break;case"Literal":s=String(n.value);break;default:return}var r=t.kind;if(this.options.ecmaVersion>=6)"__proto__"===s&&"init"===r&&(e.proto&&(i&&i.doubleProto<0?i.doubleProto=n.start:this.raiseRecoverable(n.start,"Redefinition of __proto__ property")),e.proto=!0);else{var a=e[s="$"+s];if(a)("init"===r?this.strict&&a.init||a.get||a.set:a.init||a[r])&&this.raiseRecoverable(n.start,"Redefinition of property");else a=e[s]={init:!1,get:!1,set:!1};a[r]=!0}}},Y.parseExpression=function(t,e){var i=this.start,s=this.startLoc,n=this.parseMaybeAssign(t,e);if(this.type===b.comma){var r=this.startNodeAt(i,s);for(r.expressions=[n];this.eat(b.comma);)r.expressions.push(this.parseMaybeAssign(t,e));return this.finishNode(r,"SequenceExpression")}return n},Y.parseMaybeAssign=function(t,e,i){if(this.inGenerator&&this.isContextual("yield"))return this.parseYield();var s=!1,n=-1,r=-1;e?(n=e.parenthesizedAssign,r=e.trailingComma,e.parenthesizedAssign=e.trailingComma=-1):(e=new j,s=!0);var a=this.start,o=this.startLoc;this.type!=b.parenL&&this.type!=b.name||(this.potentialArrowAt=this.start);var h=this.parseMaybeConditional(t,e);if(i&&(h=i.call(this,h,a,o)),this.type.isAssign){var p=this.startNodeAt(a,o);return p.operator=this.value,p.left=this.type===b.eq?this.toAssignable(h,!1,e):h,s||j.call(e),e.shorthandAssign=-1,this.checkLVal(h),this.next(),p.right=this.parseMaybeAssign(t),this.finishNode(p,"AssignmentExpression")}return s&&this.checkExpressionErrors(e,!0),n>-1&&(e.parenthesizedAssign=n),r>-1&&(e.trailingComma=r),h},Y.parseMaybeConditional=function(t,e){var i=this.start,s=this.startLoc,n=this.parseExprOps(t,e);if(this.checkExpressionErrors(e))return n;if(this.eat(b.question)){var r=this.startNodeAt(i,s);return r.test=n,r.consequent=this.parseMaybeAssign(),this.expect(b.colon),r.alternate=this.parseMaybeAssign(t),this.finishNode(r,"ConditionalExpression")}return n},Y.parseExprOps=function(t,e){var i=this.start,s=this.startLoc,n=this.parseMaybeUnary(e,!1);return this.checkExpressionErrors(e)?n:n.start==i&&"ArrowFunctionExpression"===n.type?n:this.parseExprOp(n,i,s,-1,t)},Y.parseExprOp=function(t,e,i,s,n){var r=this.type.binop;if(null!=r&&(!n||this.type!==b._in)&&r>s){var a=this.type===b.logicalOR||this.type===b.logicalAND,o=this.value;this.next();var h=this.start,p=this.startLoc,c=this.parseExprOp(this.parseMaybeUnary(null,!1),h,p,r,n),u=this.buildBinary(e,i,t,c,o,a);return this.parseExprOp(u,e,i,s,n)}return t},Y.buildBinary=function(t,e,i,s,n,r){var a=this.startNodeAt(t,e);return a.left=i,a.operator=n,a.right=s,this.finishNode(a,r?"LogicalExpression":"BinaryExpression")},Y.parseMaybeUnary=function(t,e){var i,s=this.start,n=this.startLoc;if(this.inAsync&&this.isContextual("await"))i=this.parseAwait(),e=!0;else if(this.type.prefix){var r=this.startNode(),a=this.type===b.incDec;r.operator=this.value,r.prefix=!0,this.next(),r.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(t,!0),a?this.checkLVal(r.argument):this.strict&&"delete"===r.operator&&"Identifier"===r.argument.type?this.raiseRecoverable(r.start,"Deleting local variable in strict mode"):e=!0,i=this.finishNode(r,a?"UpdateExpression":"UnaryExpression")}else{if(i=this.parseExprSubscripts(t),this.checkExpressionErrors(t))return i;for(;this.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(s,n);o.operator=this.value,o.prefix=!1,o.argument=i,this.checkLVal(i),this.next(),i=this.finishNode(o,"UpdateExpression")}}return!e&&this.eat(b.starstar)?this.buildBinary(s,n,i,this.parseMaybeUnary(null,!1),"**",!1):i},Y.parseExprSubscripts=function(t){var e=this.start,i=this.startLoc,s=this.parseExprAtom(t),n="ArrowFunctionExpression"===s.type&&")"!==this.input.slice(this.lastTokStart,this.lastTokEnd);if(this.checkExpressionErrors(t)||n)return s;var r=this.parseSubscripts(s,e,i);return t&&"MemberExpression"===r.type&&(t.parenthesizedAssign>=r.start&&(t.parenthesizedAssign=-1),t.parenthesizedBind>=r.start&&(t.parenthesizedBind=-1)),r},Y.parseSubscripts=function(t,e,i,s){for(var n=this.options.ecmaVersion>=8&&"Identifier"===t.type&&"async"===t.name&&this.lastTokEnd==t.end&&!this.canInsertSemicolon()&&"async"===this.input.slice(t.start,t.end),r=void 0;;)if((r=this.eat(b.bracketL))||this.eat(b.dot)){var a=this.startNodeAt(e,i);a.object=t,a.property=r?this.parseExpression():this.parseIdent(!0),a.computed=!!r,r&&this.expect(b.bracketR),t=this.finishNode(a,"MemberExpression")}else if(!s&&this.eat(b.parenL)){var o=new j,h=this.yieldPos,p=this.awaitPos;this.yieldPos=0,this.awaitPos=0;var c=this.parseExprList(b.parenR,this.options.ecmaVersion>=8,!1,o);if(n&&!this.canInsertSemicolon()&&this.eat(b.arrow))return this.checkPatternErrors(o,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=h,this.awaitPos=p,this.parseArrowExpression(this.startNodeAt(e,i),c,!0);this.checkExpressionErrors(o,!0),this.yieldPos=h||this.yieldPos,this.awaitPos=p||this.awaitPos;var u=this.startNodeAt(e,i);u.callee=t,u.arguments=c,t=this.finishNode(u,"CallExpression")}else{if(this.type!==b.backQuote)return t;var l=this.startNodeAt(e,i);l.tag=t,l.quasi=this.parseTemplate({isTagged:!0}),t=this.finishNode(l,"TaggedTemplateExpression")}},Y.parseExprAtom=function(t){var e,i=this.potentialArrowAt==this.start;switch(this.type){case b._super:return this.inFunction||this.raise(this.start,"'super' outside of function or class"),e=this.startNode(),this.next(),this.type!==b.dot&&this.type!==b.bracketL&&this.type!==b.parenL&&this.unexpected(),this.finishNode(e,"Super");case b._this:return e=this.startNode(),this.next(),this.finishNode(e,"ThisExpression");case b.name:var s=this.start,n=this.startLoc,r=this.containsEsc,a=this.parseIdent(this.type!==b.name);if(this.options.ecmaVersion>=8&&!r&&"async"===a.name&&!this.canInsertSemicolon()&&this.eat(b._function))return this.parseFunction(this.startNodeAt(s,n),!1,!1,!0);if(i&&!this.canInsertSemicolon()){if(this.eat(b.arrow))return this.parseArrowExpression(this.startNodeAt(s,n),[a],!1);if(this.options.ecmaVersion>=8&&"async"===a.name&&this.type===b.name&&!r)return a=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(b.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(s,n),[a],!0)}return a;case b.regexp:var o=this.value;return(e=this.parseLiteral(o.value)).regex={pattern:o.pattern,flags:o.flags},e;case b.num:case b.string:return this.parseLiteral(this.value);case b._null:case b._true:case b._false:return(e=this.startNode()).value=this.type===b._null?null:this.type===b._true,e.raw=this.type.keyword,this.next(),this.finishNode(e,"Literal");case b.parenL:var h=this.start,p=this.parseParenAndDistinguishExpression(i);return t&&(t.parenthesizedAssign<0&&!this.isSimpleAssignTarget(p)&&(t.parenthesizedAssign=h),t.parenthesizedBind<0&&(t.parenthesizedBind=h)),p;case b.bracketL:return e=this.startNode(),this.next(),e.elements=this.parseExprList(b.bracketR,!0,!0,t),this.finishNode(e,"ArrayExpression");case b.braceL:return this.parseObj(!1,t);case b._function:return e=this.startNode(),this.next(),this.parseFunction(e,!1);case b._class:return this.parseClass(this.startNode(),!1);case b._new:return this.parseNew();case b.backQuote:return this.parseTemplate();default:this.unexpected()}},Y.parseLiteral=function(t){var e=this.startNode();return e.value=t,e.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(e,"Literal")},Y.parseParenExpression=function(){this.expect(b.parenL);var t=this.parseExpression();return this.expect(b.parenR),t},Y.parseParenAndDistinguishExpression=function(t){var e,i=this.start,s=this.startLoc,n=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var r,a=this.start,o=this.startLoc,h=[],p=!0,c=!1,u=new j,l=this.yieldPos,d=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==b.parenR;){if(p?p=!1:this.expect(b.comma),n&&this.afterTrailingComma(b.parenR,!0)){c=!0;break}if(this.type===b.ellipsis){r=this.start,h.push(this.parseParenItem(this.parseRestBinding())),this.type===b.comma&&this.raise(this.start,"Comma is not permitted after the rest element");break}h.push(this.parseMaybeAssign(!1,u,this.parseParenItem))}var f=this.start,m=this.startLoc;if(this.expect(b.parenR),t&&!this.canInsertSemicolon()&&this.eat(b.arrow))return this.checkPatternErrors(u,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=l,this.awaitPos=d,this.parseParenArrowList(i,s,h);h.length&&!c||this.unexpected(this.lastTokStart),r&&this.unexpected(r),this.checkExpressionErrors(u,!0),this.yieldPos=l||this.yieldPos,this.awaitPos=d||this.awaitPos,h.length>1?((e=this.startNodeAt(a,o)).expressions=h,this.finishNodeAt(e,"SequenceExpression",f,m)):e=h[0]}else e=this.parseParenExpression();if(this.options.preserveParens){var x=this.startNodeAt(i,s);return x.expression=e,this.finishNode(x,"ParenthesizedExpression")}return e},Y.parseParenItem=function(t){return t},Y.parseParenArrowList=function(t,e,i){return this.parseArrowExpression(this.startNodeAt(t,e),i)};var Q=[];Y.parseNew=function(){var t=this.startNode(),e=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(b.dot)){t.meta=e;var i=this.containsEsc;return t.property=this.parseIdent(!0),("target"!==t.property.name||i)&&this.raiseRecoverable(t.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(t.start,"new.target can only be used in functions"),this.finishNode(t,"MetaProperty")}var s=this.start,n=this.startLoc;return t.callee=this.parseSubscripts(this.parseExprAtom(),s,n,!0),this.eat(b.parenL)?t.arguments=this.parseExprList(b.parenR,this.options.ecmaVersion>=8,!1):t.arguments=Q,this.finishNode(t,"NewExpression")},Y.parseTemplateElement=function(t){var e=t.isTagged,i=this.startNode();return this.type===b.invalidTemplate?(e||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),i.value={raw:this.value,cooked:null}):i.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),i.tail=this.type===b.backQuote,this.finishNode(i,"TemplateElement")},Y.parseTemplate=function(t){void 0===t&&(t={});var e=t.isTagged;void 0===e&&(e=!1);var i=this.startNode();this.next(),i.expressions=[];var s=this.parseTemplateElement({isTagged:e});for(i.quasis=[s];!s.tail;)this.expect(b.dollarBraceL),i.expressions.push(this.parseExpression()),this.expect(b.braceR),i.quasis.push(s=this.parseTemplateElement({isTagged:e}));return this.next(),this.finishNode(i,"TemplateLiteral")},Y.isAsyncProp=function(t){return!t.computed&&"Identifier"===t.key.type&&"async"===t.key.name&&(this.type===b.name||this.type===b.num||this.type===b.string||this.type===b.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===b.star)&&!k.test(this.input.slice(this.lastTokEnd,this.start))},Y.parseObj=function(t,e){var i=this.startNode(),s=!0,n={};for(i.properties=[],this.next();!this.eat(b.braceR);){if(s)s=!1;else if(this.expect(b.comma),this.afterTrailingComma(b.braceR))break;var r=this.parseProperty(t,e);t||this.checkPropClash(r,n,e),i.properties.push(r)}return this.finishNode(i,t?"ObjectPattern":"ObjectExpression")},Y.parseProperty=function(t,e){var i,s,n,r,a=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(b.ellipsis))return t?(a.argument=this.parseIdent(!1),this.type===b.comma&&this.raise(this.start,"Comma is not permitted after the rest element"),this.finishNode(a,"RestElement")):(this.type===b.parenL&&e&&(e.parenthesizedAssign<0&&(e.parenthesizedAssign=this.start),e.parenthesizedBind<0&&(e.parenthesizedBind=this.start)),a.argument=this.parseMaybeAssign(!1,e),this.type===b.comma&&e&&e.trailingComma<0&&(e.trailingComma=this.start),this.finishNode(a,"SpreadElement"));this.options.ecmaVersion>=6&&(a.method=!1,a.shorthand=!1,(t||e)&&(n=this.start,r=this.startLoc),t||(i=this.eat(b.star)));var o=this.containsEsc;return this.parsePropertyName(a),!t&&!o&&this.options.ecmaVersion>=8&&!i&&this.isAsyncProp(a)?(s=!0,i=this.options.ecmaVersion>=9&&this.eat(b.star),this.parsePropertyName(a,e)):s=!1,this.parsePropertyValue(a,t,i,s,n,r,e,o),this.finishNode(a,"Property")},Y.parsePropertyValue=function(t,e,i,s,n,r,a,o){if((i||s)&&this.type===b.colon&&this.unexpected(),this.eat(b.colon))t.value=e?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,a),t.kind="init";else if(this.options.ecmaVersion>=6&&this.type===b.parenL)e&&this.unexpected(),t.kind="init",t.method=!0,t.value=this.parseMethod(i,s);else if(e||o||!(this.options.ecmaVersion>=5)||t.computed||"Identifier"!==t.key.type||"get"!==t.key.name&&"set"!==t.key.name||this.type==b.comma||this.type==b.braceR)this.options.ecmaVersion>=6&&!t.computed&&"Identifier"===t.key.type?(this.checkUnreserved(t.key),t.kind="init",e?t.value=this.parseMaybeDefault(n,r,t.key):this.type===b.eq&&a?(a.shorthandAssign<0&&(a.shorthandAssign=this.start),t.value=this.parseMaybeDefault(n,r,t.key)):t.value=t.key,t.shorthand=!0):this.unexpected();else{(i||s)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),t.value=this.parseMethod(!1);var h="get"===t.kind?0:1;if(t.value.params.length!==h){var p=t.value.start;"get"===t.kind?this.raiseRecoverable(p,"getter should have no params"):this.raiseRecoverable(p,"setter should have exactly one param")}else"set"===t.kind&&"RestElement"===t.value.params[0].type&&this.raiseRecoverable(t.value.params[0].start,"Setter cannot use rest params")}},Y.parsePropertyName=function(t){if(this.options.ecmaVersion>=6){if(this.eat(b.bracketL))return t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(b.bracketR),t.key;t.computed=!1}return t.key=this.type===b.num||this.type===b.string?this.parseExprAtom():this.parseIdent(!0)},Y.initFunction=function(t){t.id=null,this.options.ecmaVersion>=6&&(t.generator=!1,t.expression=!1),this.options.ecmaVersion>=8&&(t.async=!1)},Y.parseMethod=function(t,e){var i=this.startNode(),s=this.inGenerator,n=this.inAsync,r=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.initFunction(i),this.options.ecmaVersion>=6&&(i.generator=t),this.options.ecmaVersion>=8&&(i.async=!!e),this.inGenerator=i.generator,this.inAsync=i.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),this.expect(b.parenL),i.params=this.parseBindingList(b.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(i,!1),this.inGenerator=s,this.inAsync=n,this.yieldPos=r,this.awaitPos=a,this.inFunction=o,this.finishNode(i,"FunctionExpression")},Y.parseArrowExpression=function(t,e,i){var s=this.inGenerator,n=this.inAsync,r=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.enterFunctionScope(),this.initFunction(t),this.options.ecmaVersion>=8&&(t.async=!!i),this.inGenerator=!1,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,t.params=this.toAssignableList(e,!0),this.parseFunctionBody(t,!0),this.inGenerator=s,this.inAsync=n,this.yieldPos=r,this.awaitPos=a,this.inFunction=o,this.finishNode(t,"ArrowFunctionExpression")},Y.parseFunctionBody=function(t,e){var i=e&&this.type!==b.braceL,s=this.strict,n=!1;if(i)t.body=this.parseMaybeAssign(),t.expression=!0,this.checkParams(t,!1);else{var r=this.options.ecmaVersion>=7&&!this.isSimpleParamList(t.params);s&&!r||(n=this.strictDirective(this.end))&&r&&this.raiseRecoverable(t.start,"Illegal 'use strict' directive in function with non-simple parameter list");var a=this.labels;this.labels=[],n&&(this.strict=!0),this.checkParams(t,!s&&!n&&!e&&this.isSimpleParamList(t.params)),t.body=this.parseBlock(!1),t.expression=!1,this.adaptDirectivePrologue(t.body.body),this.labels=a}this.exitFunctionScope(),this.strict&&t.id&&this.checkLVal(t.id,"none"),this.strict=s},Y.isSimpleParamList=function(t){for(var e=0,i=t;e0;)e[i]=arguments[i+1];for(var s=0,n=e;s=1;t--){var e=this.context[t];if("function"===e.token)return e.generator}return!1},st.updateContext=function(t){var e,i=this.type;i.keyword&&t==b.dot?this.exprAllowed=!1:(e=i.updateContext)?e.call(this,t):this.exprAllowed=i.beforeExpr},b.parenR.updateContext=b.braceR.updateContext=function(){if(1!=this.context.length){var t=this.context.pop();t===it.b_stat&&"function"===this.curContext().token&&(t=this.context.pop()),this.exprAllowed=!t.isExpr}else this.exprAllowed=!0},b.braceL.updateContext=function(t){this.context.push(this.braceIsBlock(t)?it.b_stat:it.b_expr),this.exprAllowed=!0},b.dollarBraceL.updateContext=function(){this.context.push(it.b_tmpl),this.exprAllowed=!0},b.parenL.updateContext=function(t){var e=t===b._if||t===b._for||t===b._with||t===b._while;this.context.push(e?it.p_stat:it.p_expr),this.exprAllowed=!0},b.incDec.updateContext=function(){},b._function.updateContext=b._class.updateContext=function(t){t.beforeExpr&&t!==b.semi&&t!==b._else&&(t!==b.colon&&t!==b.braceL||this.curContext()!==it.b_stat)?this.context.push(it.f_expr):this.context.push(it.f_stat),this.exprAllowed=!1},b.backQuote.updateContext=function(){this.curContext()===it.q_tmpl?this.context.pop():this.context.push(it.q_tmpl),this.exprAllowed=!1},b.star.updateContext=function(t){if(t==b._function){var e=this.context.length-1;this.context[e]===it.f_expr?this.context[e]=it.f_expr_gen:this.context[e]=it.f_gen}this.exprAllowed=!0},b.name.updateContext=function(t){var e=!1;this.options.ecmaVersion>=6&&("of"==this.value&&!this.exprAllowed||"yield"==this.value&&this.inGeneratorContext())&&(e=!0),this.exprAllowed=e};var nt=function(t){this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,t.options.locations&&(this.loc=new I(t,t.startLoc,t.endLoc)),t.options.ranges&&(this.range=[t.start,t.end])},rt=O.prototype,at="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);function ot(t,e,i,s){try{return new RegExp(t,e)}catch(t){if(void 0!==i)throw t instanceof SyntaxError&&s.raise(i,"Error parsing regular expression: "+t.message),t}}rt.next=function(){this.options.onToken&&this.options.onToken(new nt(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},rt.getToken=function(){return this.next(),new nt(this)},"undefined"!=typeof Symbol&&(rt[Symbol.iterator]=function(){var t=this;return{next:function(){var e=t.getToken();return{done:e.type===b.eof,value:e}}}}),rt.curContext=function(){return this.context[this.context.length-1]},rt.nextToken=function(){var t=this.curContext();return t&&t.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(b.eof):t.override?t.override(this):void this.readToken(this.fullCharCodeAtPos())},rt.readToken=function(t){return l(t,this.options.ecmaVersion>=6)||92===t?this.readWord():this.getTokenFromCode(t)},rt.fullCharCodeAtPos=function(){var t=this.input.charCodeAt(this.pos);return t<=55295||t>=57344?t:(t<<10)+this.input.charCodeAt(this.pos+1)-56613888},rt.skipBlockComment=function(){var t,e=this.options.onComment&&this.curPosition(),i=this.pos,s=this.input.indexOf("*/",this.pos+=2);if(-1===s&&this.raise(this.pos-2,"Unterminated comment"),this.pos=s+2,this.options.locations)for(w.lastIndex=i;(t=w.exec(this.input))&&t.index8&&t<14||t>=5760&&S.test(String.fromCharCode(t))))break t;++this.pos}}},rt.finishToken=function(t,e){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var i=this.type;this.type=t,this.value=e,this.updateContext(i)},rt.readToken_dot=function(){var t=this.input.charCodeAt(this.pos+1);if(t>=48&&t<=57)return this.readNumber(!0);var e=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===t&&46===e?(this.pos+=3,this.finishToken(b.ellipsis)):(++this.pos,this.finishToken(b.dot))},rt.readToken_slash=function(){var t=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===t?this.finishOp(b.assign,2):this.finishOp(b.slash,1)},rt.readToken_mult_modulo_exp=function(t){var e=this.input.charCodeAt(this.pos+1),i=1,s=42===t?b.star:b.modulo;return this.options.ecmaVersion>=7&&42==t&&42===e&&(++i,s=b.starstar,e=this.input.charCodeAt(this.pos+2)),61===e?this.finishOp(b.assign,i+1):this.finishOp(s,i)},rt.readToken_pipe_amp=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?this.finishOp(124===t?b.logicalOR:b.logicalAND,2):61===e?this.finishOp(b.assign,2):this.finishOp(124===t?b.bitwiseOR:b.bitwiseAND,1)},rt.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(b.assign,2):this.finishOp(b.bitwiseXOR,1)},rt.readToken_plus_min=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?45!=e||this.inModule||62!=this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!k.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(b.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===e?this.finishOp(b.assign,2):this.finishOp(b.plusMin,1)},rt.readToken_lt_gt=function(t){var e=this.input.charCodeAt(this.pos+1),i=1;return e===t?(i=62===t&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+i)?this.finishOp(b.assign,i+1):this.finishOp(b.bitShift,i)):33!=e||60!=t||this.inModule||45!=this.input.charCodeAt(this.pos+2)||45!=this.input.charCodeAt(this.pos+3)?(61===e&&(i=2),this.finishOp(b.relational,i)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},rt.readToken_eq_excl=function(t){var e=this.input.charCodeAt(this.pos+1);return 61===e?this.finishOp(b.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===t&&62===e&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(b.arrow)):this.finishOp(61===t?b.eq:b.prefix,1)},rt.getTokenFromCode=function(t){switch(t){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(b.parenL);case 41:return++this.pos,this.finishToken(b.parenR);case 59:return++this.pos,this.finishToken(b.semi);case 44:return++this.pos,this.finishToken(b.comma);case 91:return++this.pos,this.finishToken(b.bracketL);case 93:return++this.pos,this.finishToken(b.bracketR);case 123:return++this.pos,this.finishToken(b.braceL);case 125:return++this.pos,this.finishToken(b.braceR);case 58:return++this.pos,this.finishToken(b.colon);case 63:return++this.pos,this.finishToken(b.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(b.backQuote);case 48:var e=this.input.charCodeAt(this.pos+1);if(120===e||88===e)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===e||79===e)return this.readRadixNumber(8);if(98===e||66===e)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(t);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(t);case 124:case 38:return this.readToken_pipe_amp(t);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(t);case 60:case 62:return this.readToken_lt_gt(t);case 61:case 33:return this.readToken_eq_excl(t);case 126:return this.finishOp(b.prefix,1)}this.raise(this.pos,"Unexpected character '"+pt(t)+"'")},rt.finishOp=function(t,e){var i=this.input.slice(this.pos,this.pos+e);return this.pos+=e,this.finishToken(t,i)};var ht=!!ot("￿","u");function pt(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}rt.readRegexp=function(){for(var t,e,i=this,s=this.pos;;){i.pos>=i.input.length&&i.raise(s,"Unterminated regular expression");var n=i.input.charAt(i.pos);if(k.test(n)&&i.raise(s,"Unterminated regular expression"),t)t=!1;else{if("["===n)e=!0;else if("]"===n&&e)e=!1;else if("/"===n&&!e)break;t="\\"===n}++i.pos}var r=this.input.slice(s,this.pos);++this.pos;var a=this.pos,o=this.readWord1();this.containsEsc&&this.unexpected(a);var h=r,p="";if(o){var c="gim";this.options.ecmaVersion>=6&&(c+="uy"),this.options.ecmaVersion>=9&&(c+="s");for(var u=0;u-1&&i.raise(s,"Duplicate regular expression flag")}o.indexOf("u")>=0&&(ht?p="u":(h=(h=h.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e,n){return(e=Number("0x"+e))>1114111&&i.raise(s+n+3,"Code point out of bounds"),"x"})).replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),p=p.replace("u","")))}var d=null;return at||(ot(h,p,s,this),d=ot(r,o)),this.finishToken(b.regexp,{pattern:r,flags:o,value:d})},rt.readInt=function(t,e){for(var i=this.pos,s=0,n=0,r=null==e?1/0:e;n=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0)>=t)break;++this.pos,s=s*t+o}return this.pos===i||null!=e&&this.pos-i!==e?null:s},rt.readRadixNumber=function(t){this.pos+=2;var e=this.readInt(t);return null==e&&this.raise(this.start+2,"Expected number in radix "+t),l(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(b.num,e)},rt.readNumber=function(t){var e=this.pos;t||null!==this.readInt(10)||this.raise(e,"Invalid number");var i=this.pos-e>=2&&48===this.input.charCodeAt(e);i&&this.strict&&this.raise(e,"Invalid number"),i&&/[89]/.test(this.input.slice(e,this.pos))&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(43!==(s=this.input.charCodeAt(++this.pos))&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(e,"Invalid number")),l(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var n=this.input.slice(e,this.pos),r=i?parseInt(n,8):parseFloat(n);return this.finishToken(b.num,r)},rt.readCodePoint=function(){var t;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var e=++this.pos;t=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,t>1114111&&this.invalidStringToken(e,"Code point out of bounds")}else t=this.readHexChar(4);return t},rt.readString=function(t){for(var e="",i=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var s=this.input.charCodeAt(this.pos);if(s===t)break;92===s?(e+=this.input.slice(i,this.pos),e+=this.readEscapedChar(!1),i=this.pos):(E(s)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return e+=this.input.slice(i,this.pos++),this.finishToken(b.string,e)};var ct={};rt.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(t){if(t!==ct)throw t;this.readInvalidTemplateToken()}this.inTemplateElement=!1},rt.invalidStringToken=function(t,e){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw ct;this.raise(t,e)},rt.readTmplToken=function(){for(var t="",e=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var i=this.input.charCodeAt(this.pos);if(96===i||36===i&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==b.template&&this.type!==b.invalidTemplate?(t+=this.input.slice(e,this.pos),this.finishToken(b.template,t)):36===i?(this.pos+=2,this.finishToken(b.dollarBraceL)):(++this.pos,this.finishToken(b.backQuote));if(92===i)t+=this.input.slice(e,this.pos),t+=this.readEscapedChar(!0),e=this.pos;else if(E(i)){switch(t+=this.input.slice(e,this.pos),++this.pos,i){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(i)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),e=this.pos}else++this.pos}},rt.readInvalidTemplateToken=function(){for(;this.pos=48&&e<=55){var i=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],s=parseInt(i,8);return s>255&&(i=i.slice(0,-1),s=parseInt(i,8)),this.pos+=i.length-1,e=this.input.charCodeAt(this.pos),"0"===i&&56!=e&&57!=e||!this.strict&&!t||this.invalidStringToken(this.pos-1-i.length,"Octal literal in strict mode"),String.fromCharCode(s)}return String.fromCharCode(e)}},rt.readHexChar=function(t){var e=this.pos,i=this.readInt(16,t);return null===i&&this.invalidStringToken(e,"Bad character escape sequence"),i},rt.readWord1=function(){this.containsEsc=!1;for(var t="",e=!0,i=this.pos,s=this.options.ecmaVersion>=6;this.pos":function(t,e){return t>e},">=":function(t,e){return t>=e},"<<":function(t,e){return t<>":function(t,e){return t>>e},">>>":function(t,e){return t>>>e},"+":function(t,e){return t+e},"-":function(t,e){return t-e},"*":function(t,e){return t*e},"/":function(t,e){return t/e},"%":function(t,e){return t%e},"|":function(t,e){return t|e},"^":function(t,e){return t^e},"&":function(t,e){return t&e},in:function(t,e){return t in e},instanceof:function(t,e){return t instanceof e}}[t.operator](h(t.left,e),h(t.right,e))},AssignmentExpression:function(t,e){var i;if("Identifier"===t.left.type){var s=t.left.name,n=e.$find(s);if(!n)throw s+" 未定义";i=n}else{if("MemberExpression"!==t.left.type)throw"如果出现在这里,那就说明有问题了";var r=t.left,a=h(r.object,e),o=r.computed?h(r.property,e):r.property.name;i={$set:function(t){return a[o]=t,!0},$get:function(){return a[o]}}}return{"=":function(t){return i.$set(t),t},"+=":function(t){return i.$set(i.$get()+t),i.$get()},"-=":function(t){return i.$set(i.$get()-t),i.$get()},"*=":function(t){return i.$set(i.$get()*t),i.$get()},"/=":function(t){return i.$set(i.$get()/t),i.$get()},"%=":function(t){return i.$set(i.$get()%t),i.$get()},"<<=":function(t){return i.$set(i.$get()<>=":function(t){return i.$set(i.$get()>>t),i.$get()},">>>=":function(t){return i.$set(i.$get()>>>t),i.$get()},"|=":function(t){return i.$set(i.$get()|t),i.$get()},"^=":function(t){return i.$set(i.$get()^t),i.$get()},"&=":function(t){return i.$set(i.$get()&t),i.$get()}}[t.operator](h(t.right,e))},LogicalExpression:function(t,e){return{"||":function(){return h(t.left,e)||h(t.right,e)},"&&":function(){return h(t.left,e)&&h(t.right,e)}}[t.operator]()},MemberExpression:function(t,e){var i=t.object,s=t.property;return t.computed?h(i,e)[h(s,e)]:h(i,e)[s.name]},ConditionalExpression:function(t,e){return h(t.test,e)?h(t.consequent,e):h(t.alternate,e)},CallExpression:function(t,e){var i=h(t.callee,e),s=t.arguments.map(function(t){return h(t,e)});if("MemberExpression"===t.callee.type){var n=h(t.callee.object,e);return i.apply(n,s)}var r=e.$find("this");return i.apply(r?r.$get():null,s)},NewExpression:function(t,e){var i=h(t.callee,e),s=t.arguments.map(function(t){return h(t,e)});return new(i.bind.apply(i,[null].concat(s)))},SequenceExpression:function(t,e){for(var i,s=0,n=t.expressions;s { 15 | for (const node of program.body) evaluate(node, scope) 16 | }, 17 | 18 | Identifier: (node: ESTree.Identifier, scope: Scope) => { 19 | if (node.name === 'undefined') { return undefined } // 奇怪的问题 20 | const $var = scope.$find(node.name) 21 | if ($var) { return $var.$get() } // 返回 22 | else { throw `[Error] ${node.loc}, '${node.name}' 未定义` } 23 | }, 24 | 25 | Literal: (node: ESTree.Literal, scope: Scope) => { 26 | return node.value 27 | }, 28 | 29 | BlockStatement: (block: ESTree.BlockStatement, scope: Scope) => { 30 | let new_scope = scope.invasived ? scope : new Scope('block', scope) 31 | for (const node of block.body) { 32 | const result = evaluate(node, new_scope) 33 | if (result === BREAK_SINGAL 34 | || result === CONTINUE_SINGAL 35 | || result === RETURN_SINGAL) { 36 | return result 37 | } 38 | } 39 | }, 40 | 41 | EmptyStatement: (node: ESTree.EmptyStatement, scope: Scope) => { /* 空当然啥都不干嘛 */ }, 42 | 43 | DebuggerStatement: (node: ESTree.DebuggerStatement, scope: Scope) => { debugger }, 44 | 45 | ExpressionStatement: (node: ESTree.ExpressionStatement, scope: Scope) => { 46 | evaluate(node.expression, scope) 47 | }, 48 | 49 | ReturnStatement: (node: ESTree.ReturnStatement, scope: Scope) => { 50 | RETURN_SINGAL.result = node.argument ? evaluate(node.argument, scope) : undefined 51 | return RETURN_SINGAL 52 | }, 53 | 54 | LabeledStatement: (node: ESTree.LabeledStatement, scope: Scope) => { `${node.type} 未实现` }, 55 | 56 | BreakStatement: (node: ESTree.BreakStatement, scope: Scope) => { 57 | return BREAK_SINGAL 58 | }, 59 | 60 | ContinueStatement: (node: ESTree.ContinueStatement, scope: Scope) => { 61 | return CONTINUE_SINGAL 62 | }, 63 | 64 | IfStatement: (node: ESTree.IfStatement, scope: Scope) => { 65 | if (evaluate(node.test, scope)) 66 | return evaluate(node.consequent, scope) 67 | else if (node.alternate) 68 | return evaluate(node.alternate, scope) 69 | }, 70 | 71 | SwitchStatement: (node: ESTree.SwitchStatement, scope: Scope) => { 72 | const discriminant = evaluate(node.discriminant, scope) 73 | const new_scope = new Scope('switch', scope) 74 | 75 | let matched = false 76 | for (const $case of node.cases) { 77 | 78 | // 进行匹配相应的 case 79 | if (!matched && 80 | (!$case.test || discriminant === evaluate($case.test, new_scope))) { 81 | matched = true 82 | } 83 | 84 | if (matched) { 85 | const result = evaluate($case, new_scope) 86 | 87 | if (result === BREAK_SINGAL) { break } 88 | else if (result === CONTINUE_SINGAL || result === RETURN_SINGAL) { 89 | return result 90 | } 91 | } 92 | } 93 | }, 94 | 95 | SwitchCase: (node: ESTree.SwitchCase, scope: Scope) => { 96 | for (const stmt of node.consequent) { 97 | const result = evaluate(stmt, scope) 98 | if (result === BREAK_SINGAL 99 | || result === CONTINUE_SINGAL 100 | || result === RETURN_SINGAL) { 101 | return result 102 | } 103 | } 104 | }, 105 | 106 | WithStatement: (node: ESTree.WithStatement, scope: Scope) => { 107 | throw '因为 with 很多问题,已经被基本弃用了,不实现' 108 | }, 109 | 110 | ThrowStatement: (node: ESTree.ThrowStatement, scope: Scope) => { 111 | throw evaluate(node.argument, scope) 112 | }, 113 | 114 | TryStatement: (node: ESTree.TryStatement, scope: Scope) => { 115 | try { 116 | return evaluate(node.block, scope) 117 | } catch (err) { 118 | if (node.handler) { 119 | const param = node.handler.param 120 | const new_scope = new Scope('block', scope) 121 | new_scope.invasived = true // 标记为侵入式Scope,不用再多构造啦 122 | new_scope.$const(param.name, err) 123 | return evaluate(node.handler, new_scope) 124 | } else { 125 | throw err 126 | } 127 | } finally { 128 | if (node.finalizer) 129 | return evaluate(node.finalizer, scope) 130 | } 131 | }, 132 | 133 | CatchClause: (node: ESTree.CatchClause, scope: Scope) => { 134 | return evaluate(node.body, scope) 135 | }, 136 | 137 | WhileStatement: (node: ESTree.WhileStatement, scope: Scope) => { 138 | while (evaluate(node.test, scope)) { 139 | const new_scope = new Scope('loop', scope) 140 | new_scope.invasived = true 141 | const result = evaluate(node.body, new_scope) 142 | 143 | if (result === BREAK_SINGAL) { break } 144 | else if (result === CONTINUE_SINGAL) { continue } 145 | else if (result === RETURN_SINGAL) { return result } 146 | } 147 | }, 148 | 149 | DoWhileStatement: (node: ESTree.DoWhileStatement, scope: Scope) => { 150 | do { 151 | const new_scope = new Scope('loop', scope) 152 | new_scope.invasived = true 153 | const result = evaluate(node.body, new_scope) 154 | if (result === BREAK_SINGAL) { break } 155 | else if (result === CONTINUE_SINGAL) { continue } 156 | else if (result === RETURN_SINGAL) { return result } 157 | } while (evaluate(node.test, scope)) 158 | }, 159 | 160 | ForStatement: (node: ESTree.ForStatement, scope: Scope) => { 161 | for ( 162 | const new_scope = new Scope('loop', scope) 163 | , init_val = node.init ? evaluate(node.init, new_scope) : null; 164 | node.test ? evaluate(node.test, new_scope) : true; 165 | node.update ? evaluate(node.update, new_scope) : void (0) 166 | ) { 167 | const result = evaluate(node.body, new_scope) 168 | if (result === BREAK_SINGAL) { break } 169 | else if (result === CONTINUE_SINGAL) { continue } 170 | else if (result === RETURN_SINGAL) { return result } 171 | } 172 | }, 173 | 174 | ForInStatement: (node: ESTree.ForInStatement, scope: Scope) => { 175 | 176 | const kind = (node.left).kind 177 | const decl = (node.left).declarations[0] 178 | const name = (decl.id).name 179 | 180 | for (const value in evaluate(node.right, scope)) { 181 | const new_scope = new Scope('loop', scope) 182 | new_scope.invasived = true 183 | scope.$declar(kind, name, value) 184 | const result = evaluate(node.body, new_scope) 185 | if (result === BREAK_SINGAL) { break } 186 | else if (result === CONTINUE_SINGAL) { continue } 187 | else if (result === RETURN_SINGAL) { return result } 188 | } 189 | }, 190 | 191 | FunctionDeclaration: (node: ESTree.FunctionDeclaration, scope: Scope) => { 192 | const func = evaluate_map.FunctionExpression(node, scope) 193 | const { name: func_name } = node.id 194 | if (!scope.$const(func_name, func)) { 195 | throw `[Error] ${name} 重复定义` 196 | } 197 | }, 198 | 199 | VariableDeclaration: (node: ESTree.VariableDeclaration, scope: Scope) => { 200 | const kind = node.kind 201 | for (const declartor of node.declarations) { 202 | const { name } = declartor.id 203 | const value = declartor.init ? evaluate(declartor.init, scope) : undefined 204 | if (!scope.$declar(kind, name, value)) { 205 | throw `[Error] ${name} 重复定义` 206 | } 207 | } 208 | }, 209 | 210 | VariableDeclarator: (node: ESTree.VariableDeclarator, scope: Scope) => { 211 | throw '执行这里就错了' 212 | }, 213 | 214 | ThisExpression: (node: ESTree.ThisExpression, scope: Scope) => { 215 | const this_val = scope.$find('this') 216 | return this_val ? this_val.$get() : null 217 | }, 218 | 219 | ArrayExpression: (node: ESTree.ArrayExpression, scope: Scope) => { 220 | return node.elements.map(item => evaluate(item, scope)) 221 | }, 222 | 223 | ObjectExpression: (node: ESTree.ObjectExpression, scope: Scope) => { 224 | const object = {} 225 | for (const property of node.properties) { 226 | const kind = property.kind 227 | 228 | let key; 229 | if (property.key.type === 'Literal') { 230 | key = evaluate(property.key, scope) 231 | } else if (property.key.type === 'Identifier') { 232 | key = property.key.name 233 | } else { throw '这里绝对就错了' } 234 | 235 | const value = evaluate(property.value, scope) 236 | if (kind === 'init') { 237 | object[key] = value 238 | } else if (kind === 'set') { 239 | Object.defineProperty(object, key, { set: value }); 240 | } else if (kind === 'get') { 241 | Object.defineProperty(object, key, { get: value }); 242 | } else { throw '这里绝对就错了' } 243 | } 244 | return object 245 | }, 246 | 247 | FunctionExpression: (node: ESTree.FunctionExpression, scope: Scope) => { 248 | return function (...args) { 249 | const new_scope = new Scope('function', scope) 250 | new_scope.invasived = true 251 | for (let i = 0; i < node.params.length; i++) { 252 | const { name } = node.params[i] 253 | new_scope.$const(name, args[i]) 254 | } 255 | new_scope.$const('this', this) 256 | new_scope.$const('arguments', arguments) 257 | const result = evaluate(node.body, new_scope) 258 | if (result === RETURN_SINGAL) { 259 | return result.result 260 | } 261 | } 262 | }, 263 | 264 | UnaryExpression: (node: ESTree.UnaryExpression, scope: Scope) => { 265 | return ({ 266 | '-': () => - evaluate(node.argument, scope), 267 | '+': () => + evaluate(node.argument, scope), 268 | '!': () => ! evaluate(node.argument, scope), 269 | '~': () => ~ evaluate(node.argument, scope), 270 | 'void': () => void evaluate(node.argument, scope), 271 | 'typeof': () => { 272 | if (node.argument.type === 'Identifier') { 273 | const $var = scope.$find(node.argument.name) 274 | return $var ? typeof $var.$get() : 'undefined' 275 | } else { 276 | return typeof evaluate(node.argument, scope) 277 | } 278 | }, 279 | 'delete': () => { 280 | // delete 是真麻烦 281 | if (node.argument.type === 'MemberExpression') { 282 | const { object, property, computed } = node.argument 283 | if (computed) { 284 | return delete evaluate(object, scope)[evaluate(property, scope)] 285 | } else { 286 | return delete evaluate(object, scope)[(property).name] 287 | } 288 | } else if (node.argument.type === 'Identifier') { 289 | const $this = scope.$find('this') 290 | if ($this) return $this.$get()[node.argument.name] 291 | } 292 | } 293 | })[node.operator]() 294 | }, 295 | 296 | UpdateExpression: (node: ESTree.UpdateExpression, scope: Scope) => { 297 | const { prefix } = node 298 | let $var: { 299 | $set(value: any): boolean 300 | $get(): any 301 | } 302 | if (node.argument.type === 'Identifier') { 303 | const { name } = node.argument 304 | $var = scope.$find(name) 305 | if (!$var) throw `${name} 未定义` 306 | } else if (node.argument.type === 'MemberExpression') { 307 | const argument = node.argument 308 | const object = evaluate(argument.object, scope) 309 | let property = argument.computed 310 | ? evaluate(argument.property, scope) 311 | : (argument.property).name 312 | $var = { 313 | $set(value: any) { 314 | object[property] = value 315 | return true 316 | }, 317 | $get() { 318 | return object[property] 319 | } 320 | } 321 | } 322 | 323 | return ({ 324 | '--': v => ($var.$set(v - 1), (prefix ? --v : v--)), 325 | '++': v => ($var.$set(v + 1), (prefix ? ++v : v++)) 326 | })[node.operator](evaluate(node.argument, scope)) 327 | }, 328 | 329 | BinaryExpression: (node: ESTree.BinaryExpression, scope: Scope) => { 330 | return ({ 331 | "==": (a, b) => a == b, 332 | "!=": (a, b) => a != b, 333 | "===": (a, b) => a === b, 334 | "!==": (a, b) => a !== b, 335 | "<": (a, b) => a < b, 336 | "<=": (a, b) => a <= b, 337 | ">": (a, b) => a > b, 338 | ">=": (a, b) => a >= b, 339 | "<<": (a, b) => a << b, 340 | ">>": (a, b) => a >> b, 341 | ">>>": (a, b) => a >>> b, 342 | "+": (a, b) => a + b, 343 | "-": (a, b) => a - b, 344 | "*": (a, b) => a * b, 345 | "/": (a, b) => a / b, 346 | "%": (a, b) => a % b, 347 | "|": (a, b) => a | b, 348 | "^": (a, b) => a ^ b, 349 | "&": (a, b) => a & b, 350 | "in": (a, b) => a in b, 351 | "instanceof": (a, b) => a instanceof b 352 | })[node.operator](evaluate(node.left, scope), evaluate(node.right, scope)) 353 | }, 354 | 355 | AssignmentExpression: (node: ESTree.AssignmentExpression, scope: Scope) => { 356 | let $var: { 357 | $set(value: any): boolean 358 | $get(): any 359 | } 360 | 361 | if (node.left.type === 'Identifier') { 362 | const { name } = node.left 363 | const $var_or_not = scope.$find(name) 364 | if (!$var_or_not) throw `${name} 未定义` 365 | $var = $var_or_not 366 | } else if (node.left.type === 'MemberExpression') { 367 | const left = node.left 368 | const object = evaluate(left.object, scope) 369 | let property = left.computed 370 | ? evaluate(left.property, scope) 371 | : (left.property).name 372 | $var = { 373 | $set(value: any) { 374 | object[property] = value 375 | return true 376 | }, 377 | $get() { 378 | return object[property] 379 | } 380 | } 381 | } else { throw `如果出现在这里,那就说明有问题了` } 382 | 383 | return ({ 384 | "=": (v) => ($var.$set(v), v), 385 | "+=": (v) => ($var.$set($var.$get() + v), $var.$get()), 386 | "-=": (v) => ($var.$set($var.$get() - v), $var.$get()), 387 | "*=": (v) => ($var.$set($var.$get() * v), $var.$get()), 388 | "/=": (v) => ($var.$set($var.$get() / v), $var.$get()), 389 | "%=": (v) => ($var.$set($var.$get() % v), $var.$get()), 390 | "<<=": (v) => ($var.$set($var.$get() << v), $var.$get()), 391 | ">>=": (v) => ($var.$set($var.$get() >> v), $var.$get()), 392 | ">>>=": (v) => ($var.$set($var.$get() >>> v), $var.$get()), 393 | "|=": (v) => ($var.$set($var.$get() | v), $var.$get()), 394 | "^=": (v) => ($var.$set($var.$get() ^ v), $var.$get()), 395 | "&=": (v) => ($var.$set($var.$get() & v), $var.$get()) 396 | })[node.operator](evaluate(node.right, scope)) 397 | }, 398 | 399 | LogicalExpression: (node: ESTree.LogicalExpression, scope: Scope) => { 400 | return ({ 401 | "||": () => evaluate(node.left, scope) || evaluate(node.right, scope), 402 | "&&": () => evaluate(node.left, scope) && evaluate(node.right, scope), 403 | })[node.operator]() 404 | }, 405 | 406 | MemberExpression: (node: ESTree.MemberExpression, scope: Scope) => { 407 | const { object, property, computed } = node 408 | if (computed) { 409 | return evaluate(object, scope)[evaluate(property, scope)] 410 | } else { 411 | return evaluate(object, scope)[(property).name] 412 | } 413 | }, 414 | 415 | ConditionalExpression: (node: ESTree.ConditionalExpression, scope: Scope) => { 416 | return ( 417 | evaluate(node.test, scope) 418 | ? evaluate(node.consequent, scope) 419 | : evaluate(node.alternate, scope) 420 | ) 421 | }, 422 | 423 | CallExpression: (node: ESTree.CallExpression, scope: Scope) => { 424 | const func = evaluate(node.callee, scope) 425 | const args = node.arguments.map(arg => evaluate(arg, scope)) 426 | 427 | // 心疼自己 428 | if (node.callee.type === 'MemberExpression') { 429 | const object = evaluate(node.callee.object, scope) 430 | return func.apply(object, args) 431 | } else { 432 | const this_val = scope.$find('this') 433 | return func.apply(this_val ? this_val.$get() : null, args) 434 | } 435 | }, 436 | 437 | NewExpression: (node: ESTree.NewExpression, scope: Scope) => { 438 | const func = evaluate(node.callee, scope) 439 | const args = node.arguments.map(arg => evaluate(arg, scope)) 440 | return new (func.bind.apply(func, [null].concat(args))) 441 | }, 442 | 443 | SequenceExpression: (node: ESTree.SequenceExpression, scope: Scope) => { 444 | let last 445 | for (const expr of node.expressions) { 446 | last = evaluate(expr, scope) 447 | } 448 | return last 449 | }, 450 | 451 | Property: (node: ESTree.Property, scope: Scope, computed: boolean) => { throw '这里如果被执行了那也是错的...' }, 452 | 453 | // 下面是 es6 / es7 特性, 先不做处理 454 | ClassExpression: (node: ESTree.ClassExpression, scope: Scope) => { throw `${node.type} 未实现` }, 455 | RestElement: (node: ESTree.RestElement, scope: Scope) => { throw `${node.type} 未实现` }, 456 | MetaProperty: (node: ESTree.MetaProperty, scope: Scope) => { throw `${node.type} 未实现` }, 457 | AwaitExpression: (node: ESTree.AwaitExpression, scope: Scope) => { throw `${node.type} 未实现` }, 458 | Super: (node: ESTree.Super, scope: Scope) => { throw `${node.type} 未实现` }, 459 | SpreadElement: (node: ESTree.SpreadElement, scope: Scope) => { throw `${node.type} 未实现` }, 460 | TemplateElement: (node: ESTree.TemplateElement, scope: Scope) => { throw `${node.type} 未实现` }, 461 | ClassDeclaration: (node: ESTree.ClassDeclaration, scope: Scope) => { throw `${node.type} 未实现` }, 462 | TaggedTemplateExpression: (node: ESTree.TaggedTemplateExpression, scope: Scope) => { throw `${node.type} 未实现` }, 463 | MethodDefinition: (node: ESTree.MethodDefinition, scope: Scope) => { throw `${node.type} 未实现` }, 464 | AssignmentPattern: (node: ESTree.AssignmentPattern, scope: Scope) => { throw `${node.type} 未实现` }, 465 | ObjectPattern: (node: ESTree.ObjectPattern, scope: Scope) => { throw `${node.type} 未实现` }, 466 | ArrayPattern: (node: ESTree.ArrayPattern, scope: Scope) => { throw `${node.type} 未实现` }, 467 | ForOfStatement: (node: ESTree.ForOfStatement, scope: Scope) => { throw `${node.type} 未实现` }, 468 | TemplateLiteral: (node: ESTree.TemplateLiteral, scope: Scope) => { throw `${node.type} 未实现` }, 469 | ClassBody: (node: ESTree.ClassBody, scope: Scope) => { throw `${node.type} 未实现` }, 470 | ImportDeclaration: (node: ESTree.ImportDeclaration, scope: Scope) => { throw `${node.type} 未实现` }, 471 | ExportNamedDeclaration: (node: ESTree.ExportNamedDeclaration, scope: Scope) => { throw `${node.type} 未实现` }, 472 | ExportDefaultDeclaration: (node: ESTree.ExportDefaultDeclaration, scope: Scope) => { throw `${node.type} 未实现` }, 473 | ExportAllDeclaration: (node: ESTree.ExportAllDeclaration, scope: Scope) => { throw `${node.type} 未实现` }, 474 | ImportSpecifier: (node: ESTree.ImportSpecifier, scope: Scope) => { throw `${node.type} 未实现` }, 475 | ImportDefaultSpecifier: (node: ESTree.ImportDefaultSpecifier, scope: Scope) => { throw `${node.type} 未实现` }, 476 | ImportNamespaceSpecifier: (node: ESTree.ImportNamespaceSpecifier, scope: Scope) => { throw `${node.type} 未实现` }, 477 | ExportSpecifier: (node: ESTree.ExportSpecifier, scope: Scope) => { throw `${node.type} 未实现` }, 478 | YieldExpression: (node: ESTree.YieldExpression, scope: Scope) => { throw `${node.type} 未实现` }, 479 | ArrowFunctionExpression: (node: ESTree.ArrowFunctionExpression, scope: Scope) => { throw `${node.type} 未实现` }, 480 | } 481 | 482 | const evaluate = (node: ESTree.Node, scope: Scope, arg?: any) => { 483 | const _evalute = ((evaluate_map[node.type])) 484 | return _evalute(node, scope, arg) 485 | } 486 | 487 | export default evaluate -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | 2 | declare const require : (module: string) => any 3 | const acorn = require('acorn/dist/acorn.js') 4 | 5 | import { Scope } from './scope' 6 | import { Var } from './scope' 7 | import evaluate from './eval' 8 | 9 | const options = { 10 | ecmaVersion: 5, 11 | sourceType: 'script', 12 | locations: true, 13 | } 14 | 15 | declare const Promise: any 16 | 17 | // 导出默认对象 18 | const default_api: { [key: string]: any } = { 19 | console, 20 | 21 | setTimeout, 22 | setInterval, 23 | 24 | clearTimeout, 25 | clearInterval, 26 | 27 | encodeURI, 28 | encodeURIComponent, 29 | decodeURI, 30 | decodeURIComponent, 31 | escape, 32 | unescape, 33 | 34 | Infinity, 35 | NaN, 36 | isFinite, 37 | isNaN, 38 | parseFloat, 39 | parseInt, 40 | Object, 41 | Boolean, 42 | Error, 43 | EvalError, 44 | RangeError, 45 | ReferenceError, 46 | SyntaxError, 47 | TypeError, 48 | URIError, 49 | Number, 50 | Math, 51 | Date, 52 | String, 53 | RegExp, 54 | Array, 55 | JSON, 56 | Promise 57 | } 58 | 59 | export function run(code: string, append_api: { [key: string]: any } = {}) { 60 | const scope = new Scope('block') 61 | scope.$const('this', this) 62 | 63 | for (const name of Object.getOwnPropertyNames(default_api)) { 64 | scope.$const(name, default_api[name]) 65 | } 66 | 67 | for (const name of Object.getOwnPropertyNames(append_api)) { 68 | scope.$const(name, append_api[name]) 69 | } 70 | 71 | // 定义 module 72 | const $exports = {} 73 | const $module = { 'exports': $exports } 74 | scope.$const('module', $module) 75 | scope.$const('exports', $exports) 76 | 77 | evaluate(acorn.parse(code, options), scope) 78 | 79 | // exports 80 | const module_var = scope.$find('module') 81 | return module_var ? module_var.$get().exports : null 82 | } -------------------------------------------------------------------------------- /src/scope.ts: -------------------------------------------------------------------------------- 1 | 2 | export type ScopeType = 'function' | 'loop' | 'switch' | 'block' 3 | 4 | export type Kind = 'const' | 'var' | 'let' 5 | 6 | export interface Var { 7 | $get(): any 8 | $set(value: any): boolean 9 | // $call($this: any, args: Array): any 10 | } 11 | 12 | export class ScopeVar implements Var { 13 | value: any 14 | kind: Kind 15 | 16 | constructor(kind: Kind, value: any) { 17 | this.value = value 18 | this.kind = kind 19 | } 20 | 21 | $set(value: any): boolean { 22 | if (this.value === 'const') { 23 | return false 24 | } else { 25 | this.value = value 26 | return true 27 | } 28 | } 29 | 30 | $get(): any { 31 | return this.value 32 | } 33 | } 34 | 35 | export class PropVar implements Var { 36 | object: any 37 | property: string 38 | 39 | constructor(object: any, property: string) { 40 | this.object = object 41 | this.property = property 42 | } 43 | 44 | $set(value: any) { this.object[this.property] = value; return true } 45 | $get() { return this.object[this.property] } 46 | $delete() { delete this.object[this.property] } 47 | } 48 | 49 | export class Scope { 50 | private content: { [key: string]: Var } 51 | private parent: Scope | null 52 | private prefix: string = '@' 53 | 54 | readonly type: ScopeType 55 | 56 | invasived: boolean 57 | 58 | constructor(type: ScopeType, parent?: Scope, label?: string) { 59 | this.type = type 60 | this.parent = parent || null 61 | this.content = {} 62 | this.invasived = false 63 | } 64 | 65 | $find(raw_name: string): Var | null { 66 | const name = this.prefix + raw_name 67 | if (this.content.hasOwnProperty(name)) { 68 | return this.content[name] 69 | } else if (this.parent) { 70 | return this.parent.$find(raw_name) 71 | } else { 72 | return null 73 | } 74 | } 75 | 76 | $let(raw_name: string, value: any): boolean { 77 | const name = this.prefix + raw_name 78 | const $var = this.content[name] 79 | if (!$var) { 80 | this.content[name] = new ScopeVar('let', value) 81 | return true 82 | } else { return false } 83 | } 84 | 85 | $const(raw_name: string, value: any): boolean { 86 | const name = this.prefix + raw_name 87 | const $var = this.content[name] 88 | if (!$var) { 89 | this.content[name] = new ScopeVar('const', value) 90 | return true 91 | } else { return false } 92 | } 93 | 94 | $var(raw_name: string, value: any): boolean { 95 | const name = this.prefix + raw_name 96 | let scope: Scope = this 97 | 98 | while (scope.parent !== null && scope.type !== 'function') { 99 | scope = scope.parent 100 | } 101 | 102 | const $var = scope.content[name] 103 | if (!$var) { 104 | this.content[name] = new ScopeVar('var', value) 105 | return true 106 | } else { return false } 107 | } 108 | 109 | 110 | $declar(kind: Kind, raw_name: string, value: any): boolean { 111 | return ({ 112 | 'var': () => this.$var(raw_name, value), 113 | 'let': () => this.$let(raw_name, value), 114 | 'const': () => this.$const(raw_name, value) 115 | })[kind]() 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | import * as interpreter from './main' 4 | 5 | 6 | // 解释器执行 hello world 7 | interpreter.run(`console.log('hello world')`) 8 | 9 | // 自举解释器代码 10 | declare const require, __dirname 11 | const fs = require('fs') 12 | const interpreter_code = fs.readFileSync('./lib/interpreter.js', 'utf-8') 13 | const bootstrap = interpreter.run(interpreter_code) 14 | 15 | // 自举的解释器实行 hello world 16 | bootstrap.run(`console.log('hello world!')`) -------------------------------------------------------------------------------- /src/type.ts: -------------------------------------------------------------------------------- 1 | 2 | import * as ESTree from 'estree' 3 | import { Scope } from './scope' 4 | 5 | export interface NodeTypeMap { 6 | Identifier: ESTree.Identifier 7 | Literal: ESTree.Literal 8 | Program: ESTree.Program 9 | FunctionDeclaration: ESTree.FunctionDeclaration 10 | FunctionExpression: ESTree.FunctionExpression 11 | ArrowFunctionExpression: ESTree.ArrowFunctionExpression 12 | SwitchCase: ESTree.SwitchCase 13 | CatchClause: ESTree.CatchClause 14 | VariableDeclarator: ESTree.VariableDeclarator 15 | ExpressionStatement: ESTree.ExpressionStatement 16 | BlockStatement: ESTree.BlockStatement 17 | EmptyStatement: ESTree.EmptyStatement 18 | DebuggerStatement: ESTree.DebuggerStatement 19 | WithStatement: ESTree.WithStatement 20 | ReturnStatement: ESTree.ReturnStatement 21 | LabeledStatement: ESTree.LabeledStatement 22 | BreakStatement: ESTree.BreakStatement 23 | ContinueStatement: ESTree.ContinueStatement 24 | IfStatement: ESTree.IfStatement 25 | SwitchStatement: ESTree.SwitchStatement 26 | ThrowStatement: ESTree.ThrowStatement 27 | TryStatement: ESTree.TryStatement 28 | WhileStatement: ESTree.WhileStatement 29 | DoWhileStatement: ESTree.DoWhileStatement 30 | ForStatement: ESTree.ForStatement 31 | ForInStatement: ESTree.ForInStatement 32 | ForOfStatement: ESTree.ForOfStatement 33 | VariableDeclaration: ESTree.VariableDeclaration 34 | ClassDeclaration: ESTree.ClassDeclaration 35 | ThisExpression: ESTree.ThisExpression 36 | ArrayExpression: ESTree.ArrayExpression 37 | ObjectExpression: ESTree.ObjectExpression 38 | YieldExpression: ESTree.YieldExpression 39 | UnaryExpression: ESTree.UnaryExpression 40 | UpdateExpression: ESTree.UpdateExpression 41 | BinaryExpression: ESTree.BinaryExpression 42 | AssignmentExpression: ESTree.AssignmentExpression 43 | LogicalExpression: ESTree.LogicalExpression 44 | MemberExpression: ESTree.MemberExpression 45 | ConditionalExpression: ESTree.ConditionalExpression 46 | CallExpression: ESTree.CallExpression 47 | NewExpression: ESTree.NewExpression 48 | SequenceExpression: ESTree.SequenceExpression 49 | TemplateLiteral: ESTree.TemplateLiteral 50 | TaggedTemplateExpression: ESTree.TaggedTemplateExpression 51 | ClassExpression: ESTree.ClassExpression 52 | MetaProperty: ESTree.MetaProperty 53 | AwaitExpression: ESTree.AwaitExpression 54 | Property: ESTree.Property 55 | Super: ESTree.Super 56 | TemplateElement: ESTree.TemplateElement 57 | SpreadElement: ESTree.SpreadElement 58 | ObjectPattern: ESTree.ObjectPattern 59 | ArrayPattern: ESTree.ArrayPattern 60 | RestElement: ESTree.RestElement 61 | AssignmentPattern: ESTree.AssignmentPattern 62 | ClassBody: ESTree.ClassBody 63 | MethodDefinition: ESTree.MethodDefinition 64 | ImportDeclaration: ESTree.ImportDeclaration 65 | ExportNamedDeclaration: ESTree.ExportNamedDeclaration 66 | ExportDefaultDeclaration: ESTree.ExportDefaultDeclaration 67 | ExportAllDeclaration: ESTree.ExportAllDeclaration 68 | ImportSpecifier: ESTree.ImportSpecifier 69 | ImportDefaultSpecifier: ESTree.ImportDefaultSpecifier 70 | ImportNamespaceSpecifier: ESTree.ImportNamespaceSpecifier 71 | ExportSpecifier: ESTree.ExportSpecifier 72 | } 73 | 74 | export type EvaluateMap = { 75 | [key in ESTree.Node['type']]: (node: NodeTypeMap[key], scope: Scope, arg?: any) => any 76 | } 77 | 78 | export type EvaluateFunc = (node: ESTree.Node, scope: Scope, arg?: any) => any -------------------------------------------------------------------------------- /src/vm.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | 5 | 写一个中间字节码来好好游戏吧 6 | 7 | @<变量名> // 变量名是存在 scope 里面 8 | %<寄存器名> // 寄存器名存在 寄存器 里面 9 | 10 | var <变量名> #12345,12345 <- 标记锚点,知道什么地方错了 11 | let <变量名> 12 | const <变量名> 13 | 14 | move // move a -> b 15 | 16 | func @<变量名> 17 | endfunc 18 | 19 | ============================ 20 | 21 | func %main 22 | 23 | push 24 | var %tmp1 %tmp2 %tmp3 25 | mov 26 | pop 27 | 28 | endfunc 29 | 30 | call %main 31 | 32 | */ -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "strictNullChecks": true, 6 | "strict": true, 7 | "alwaysStrict": true, 8 | "noImplicitAny": false, 9 | "sourceMap": true, 10 | "noImplicitThis": false 11 | }, 12 | "include": [ 13 | "src/**/*.ts" 14 | ] 15 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | 2 | const webpack = require('webpack') 3 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 4 | 5 | module.exports = { 6 | target: 'node', 7 | entry: { 8 | 'interpreter': './src/main.ts', 9 | 'test': './src/test.ts', 10 | }, 11 | output: { 12 | filename: '[name].js', 13 | path: __dirname + '/lib/', 14 | library: '[name]', 15 | libraryTarget: 'umd' 16 | }, 17 | devtool: 'source-map', 18 | resolve: { 19 | extensions: ['.ts', '.js', '.json'] 20 | }, 21 | module: { 22 | rules: [ 23 | { test: /\.tsx?$/, loader: 'awesome-typescript-loader' }, 24 | { enforce: 'pre', test: /\.js$/, loader: 'source-map-loader' } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/estree@^0.0.38": 6 | version "0.0.38" 7 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" 8 | 9 | abbrev@1: 10 | version "1.1.1" 11 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 12 | 13 | acorn-dynamic-import@^2.0.0: 14 | version "2.0.2" 15 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" 16 | dependencies: 17 | acorn "^4.0.3" 18 | 19 | acorn@^4.0.3: 20 | version "4.0.13" 21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" 22 | 23 | acorn@^5.0.0, acorn@^5.4.1: 24 | version "5.4.1" 25 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" 26 | 27 | ajv-keywords@^3.1.0: 28 | version "3.1.0" 29 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" 30 | 31 | ajv@^4.9.1: 32 | version "4.11.8" 33 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 34 | dependencies: 35 | co "^4.6.0" 36 | json-stable-stringify "^1.0.1" 37 | 38 | ajv@^6.1.0: 39 | version "6.1.1" 40 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.1.1.tgz#978d597fbc2b7d0e5a5c3ddeb149a682f2abfa0e" 41 | dependencies: 42 | fast-deep-equal "^1.0.0" 43 | fast-json-stable-stringify "^2.0.0" 44 | json-schema-traverse "^0.3.0" 45 | 46 | align-text@^0.1.1, align-text@^0.1.3: 47 | version "0.1.4" 48 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 49 | dependencies: 50 | kind-of "^3.0.2" 51 | longest "^1.0.1" 52 | repeat-string "^1.5.2" 53 | 54 | ansi-regex@^2.0.0: 55 | version "2.1.1" 56 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 57 | 58 | ansi-regex@^3.0.0: 59 | version "3.0.0" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 61 | 62 | ansi-styles@^2.2.1: 63 | version "2.2.1" 64 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 65 | 66 | ansi-styles@^3.2.0: 67 | version "3.2.0" 68 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 69 | dependencies: 70 | color-convert "^1.9.0" 71 | 72 | anymatch@^1.3.0: 73 | version "1.3.2" 74 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" 75 | dependencies: 76 | micromatch "^2.1.5" 77 | normalize-path "^2.0.0" 78 | 79 | aproba@^1.0.3, aproba@^1.1.1: 80 | version "1.2.0" 81 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 82 | 83 | are-we-there-yet@~1.1.2: 84 | version "1.1.4" 85 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 86 | dependencies: 87 | delegates "^1.0.0" 88 | readable-stream "^2.0.6" 89 | 90 | argparse@^1.0.7: 91 | version "1.0.10" 92 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 93 | dependencies: 94 | sprintf-js "~1.0.2" 95 | 96 | arr-diff@^2.0.0: 97 | version "2.0.0" 98 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 99 | dependencies: 100 | arr-flatten "^1.0.1" 101 | 102 | arr-diff@^4.0.0: 103 | version "4.0.0" 104 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 105 | 106 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 107 | version "1.1.0" 108 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 109 | 110 | arr-union@^3.1.0: 111 | version "3.1.0" 112 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 113 | 114 | array-unique@^0.2.1: 115 | version "0.2.1" 116 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 117 | 118 | array-unique@^0.3.2: 119 | version "0.3.2" 120 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 121 | 122 | asn1.js@^4.0.0: 123 | version "4.10.1" 124 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" 125 | dependencies: 126 | bn.js "^4.0.0" 127 | inherits "^2.0.1" 128 | minimalistic-assert "^1.0.0" 129 | 130 | asn1@~0.2.3: 131 | version "0.2.3" 132 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 133 | 134 | assert-plus@1.0.0, assert-plus@^1.0.0: 135 | version "1.0.0" 136 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 137 | 138 | assert-plus@^0.2.0: 139 | version "0.2.0" 140 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 141 | 142 | assert@^1.1.1: 143 | version "1.4.1" 144 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 145 | dependencies: 146 | util "0.10.3" 147 | 148 | assign-symbols@^1.0.0: 149 | version "1.0.0" 150 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 151 | 152 | async-each@^1.0.0: 153 | version "1.0.1" 154 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 155 | 156 | async@^2.1.2, async@^2.5.0: 157 | version "2.6.0" 158 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 159 | dependencies: 160 | lodash "^4.14.0" 161 | 162 | asynckit@^0.4.0: 163 | version "0.4.0" 164 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 165 | 166 | atob@^2.0.0: 167 | version "2.0.3" 168 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" 169 | 170 | awesome-typescript-loader@^3.4.1: 171 | version "3.4.1" 172 | resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.4.1.tgz#22fa49800f0619ec18ab15383aef93b95378dea9" 173 | dependencies: 174 | colors "^1.1.2" 175 | enhanced-resolve "3.3.0" 176 | loader-utils "^1.1.0" 177 | lodash "^4.17.4" 178 | micromatch "^3.0.3" 179 | mkdirp "^0.5.1" 180 | object-assign "^4.1.1" 181 | source-map-support "^0.4.15" 182 | 183 | aws-sign2@~0.6.0: 184 | version "0.6.0" 185 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 186 | 187 | aws4@^1.2.1: 188 | version "1.6.0" 189 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 190 | 191 | babel-code-frame@^6.22.0: 192 | version "6.26.0" 193 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 194 | dependencies: 195 | chalk "^1.1.3" 196 | esutils "^2.0.2" 197 | js-tokens "^3.0.2" 198 | 199 | balanced-match@^1.0.0: 200 | version "1.0.0" 201 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 202 | 203 | base64-js@^1.0.2: 204 | version "1.2.3" 205 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" 206 | 207 | base@^0.11.1: 208 | version "0.11.2" 209 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 210 | dependencies: 211 | cache-base "^1.0.1" 212 | class-utils "^0.3.5" 213 | component-emitter "^1.2.1" 214 | define-property "^1.0.0" 215 | isobject "^3.0.1" 216 | mixin-deep "^1.2.0" 217 | pascalcase "^0.1.1" 218 | 219 | bcrypt-pbkdf@^1.0.0: 220 | version "1.0.1" 221 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 222 | dependencies: 223 | tweetnacl "^0.14.3" 224 | 225 | big.js@^3.1.3: 226 | version "3.2.0" 227 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 228 | 229 | binary-extensions@^1.0.0: 230 | version "1.11.0" 231 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" 232 | 233 | block-stream@*: 234 | version "0.0.9" 235 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 236 | dependencies: 237 | inherits "~2.0.0" 238 | 239 | bluebird@^3.5.1: 240 | version "3.5.1" 241 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 242 | 243 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 244 | version "4.11.8" 245 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 246 | 247 | boom@2.x.x: 248 | version "2.10.1" 249 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 250 | dependencies: 251 | hoek "2.x.x" 252 | 253 | brace-expansion@^1.1.7: 254 | version "1.1.11" 255 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 256 | dependencies: 257 | balanced-match "^1.0.0" 258 | concat-map "0.0.1" 259 | 260 | braces@^1.8.2: 261 | version "1.8.5" 262 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 263 | dependencies: 264 | expand-range "^1.8.1" 265 | preserve "^0.2.0" 266 | repeat-element "^1.1.2" 267 | 268 | braces@^2.3.0: 269 | version "2.3.1" 270 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" 271 | dependencies: 272 | arr-flatten "^1.1.0" 273 | array-unique "^0.3.2" 274 | define-property "^1.0.0" 275 | extend-shallow "^2.0.1" 276 | fill-range "^4.0.0" 277 | isobject "^3.0.1" 278 | kind-of "^6.0.2" 279 | repeat-element "^1.1.2" 280 | snapdragon "^0.8.1" 281 | snapdragon-node "^2.0.1" 282 | split-string "^3.0.2" 283 | to-regex "^3.0.1" 284 | 285 | brorand@^1.0.1: 286 | version "1.1.0" 287 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 288 | 289 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 290 | version "1.1.1" 291 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" 292 | dependencies: 293 | buffer-xor "^1.0.3" 294 | cipher-base "^1.0.0" 295 | create-hash "^1.1.0" 296 | evp_bytestokey "^1.0.3" 297 | inherits "^2.0.1" 298 | safe-buffer "^5.0.1" 299 | 300 | browserify-cipher@^1.0.0: 301 | version "1.0.0" 302 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 303 | dependencies: 304 | browserify-aes "^1.0.4" 305 | browserify-des "^1.0.0" 306 | evp_bytestokey "^1.0.0" 307 | 308 | browserify-des@^1.0.0: 309 | version "1.0.0" 310 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 311 | dependencies: 312 | cipher-base "^1.0.1" 313 | des.js "^1.0.0" 314 | inherits "^2.0.1" 315 | 316 | browserify-rsa@^4.0.0: 317 | version "4.0.1" 318 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 319 | dependencies: 320 | bn.js "^4.1.0" 321 | randombytes "^2.0.1" 322 | 323 | browserify-sign@^4.0.0: 324 | version "4.0.4" 325 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" 326 | dependencies: 327 | bn.js "^4.1.1" 328 | browserify-rsa "^4.0.0" 329 | create-hash "^1.1.0" 330 | create-hmac "^1.1.2" 331 | elliptic "^6.0.0" 332 | inherits "^2.0.1" 333 | parse-asn1 "^5.0.0" 334 | 335 | browserify-zlib@^0.2.0: 336 | version "0.2.0" 337 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 338 | dependencies: 339 | pako "~1.0.5" 340 | 341 | buffer-xor@^1.0.3: 342 | version "1.0.3" 343 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 344 | 345 | buffer@^4.3.0: 346 | version "4.9.1" 347 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 348 | dependencies: 349 | base64-js "^1.0.2" 350 | ieee754 "^1.1.4" 351 | isarray "^1.0.0" 352 | 353 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 354 | version "1.1.1" 355 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 356 | 357 | builtin-status-codes@^3.0.0: 358 | version "3.0.0" 359 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 360 | 361 | cacache@^10.0.1: 362 | version "10.0.4" 363 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" 364 | dependencies: 365 | bluebird "^3.5.1" 366 | chownr "^1.0.1" 367 | glob "^7.1.2" 368 | graceful-fs "^4.1.11" 369 | lru-cache "^4.1.1" 370 | mississippi "^2.0.0" 371 | mkdirp "^0.5.1" 372 | move-concurrently "^1.0.1" 373 | promise-inflight "^1.0.1" 374 | rimraf "^2.6.2" 375 | ssri "^5.2.4" 376 | unique-filename "^1.1.0" 377 | y18n "^4.0.0" 378 | 379 | cache-base@^1.0.1: 380 | version "1.0.1" 381 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 382 | dependencies: 383 | collection-visit "^1.0.0" 384 | component-emitter "^1.2.1" 385 | get-value "^2.0.6" 386 | has-value "^1.0.0" 387 | isobject "^3.0.1" 388 | set-value "^2.0.0" 389 | to-object-path "^0.3.0" 390 | union-value "^1.0.0" 391 | unset-value "^1.0.0" 392 | 393 | camelcase@^1.0.2: 394 | version "1.2.1" 395 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 396 | 397 | camelcase@^4.1.0: 398 | version "4.1.0" 399 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 400 | 401 | caseless@~0.12.0: 402 | version "0.12.0" 403 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 404 | 405 | center-align@^0.1.1: 406 | version "0.1.3" 407 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 408 | dependencies: 409 | align-text "^0.1.3" 410 | lazy-cache "^1.0.3" 411 | 412 | chalk@^1.1.3: 413 | version "1.1.3" 414 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 415 | dependencies: 416 | ansi-styles "^2.2.1" 417 | escape-string-regexp "^1.0.2" 418 | has-ansi "^2.0.0" 419 | strip-ansi "^3.0.0" 420 | supports-color "^2.0.0" 421 | 422 | chalk@^2.3.0: 423 | version "2.3.1" 424 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" 425 | dependencies: 426 | ansi-styles "^3.2.0" 427 | escape-string-regexp "^1.0.5" 428 | supports-color "^5.2.0" 429 | 430 | chokidar@^1.7.0: 431 | version "1.7.0" 432 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 433 | dependencies: 434 | anymatch "^1.3.0" 435 | async-each "^1.0.0" 436 | glob-parent "^2.0.0" 437 | inherits "^2.0.1" 438 | is-binary-path "^1.0.0" 439 | is-glob "^2.0.0" 440 | path-is-absolute "^1.0.0" 441 | readdirp "^2.0.0" 442 | optionalDependencies: 443 | fsevents "^1.0.0" 444 | 445 | chownr@^1.0.1: 446 | version "1.0.1" 447 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 448 | 449 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 450 | version "1.0.4" 451 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 452 | dependencies: 453 | inherits "^2.0.1" 454 | safe-buffer "^5.0.1" 455 | 456 | class-utils@^0.3.5: 457 | version "0.3.6" 458 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 459 | dependencies: 460 | arr-union "^3.1.0" 461 | define-property "^0.2.5" 462 | isobject "^3.0.0" 463 | static-extend "^0.1.1" 464 | 465 | cliui@^2.1.0: 466 | version "2.1.0" 467 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 468 | dependencies: 469 | center-align "^0.1.1" 470 | right-align "^0.1.1" 471 | wordwrap "0.0.2" 472 | 473 | cliui@^3.2.0: 474 | version "3.2.0" 475 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 476 | dependencies: 477 | string-width "^1.0.1" 478 | strip-ansi "^3.0.1" 479 | wrap-ansi "^2.0.0" 480 | 481 | co@^4.6.0: 482 | version "4.6.0" 483 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 484 | 485 | code-point-at@^1.0.0: 486 | version "1.1.0" 487 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 488 | 489 | collection-visit@^1.0.0: 490 | version "1.0.0" 491 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 492 | dependencies: 493 | map-visit "^1.0.0" 494 | object-visit "^1.0.0" 495 | 496 | color-convert@^1.9.0: 497 | version "1.9.1" 498 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 499 | dependencies: 500 | color-name "^1.1.1" 501 | 502 | color-name@^1.1.1: 503 | version "1.1.3" 504 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 505 | 506 | colors@^1.1.2: 507 | version "1.1.2" 508 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 509 | 510 | combined-stream@^1.0.5, combined-stream@~1.0.5: 511 | version "1.0.6" 512 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" 513 | dependencies: 514 | delayed-stream "~1.0.0" 515 | 516 | commander@^2.12.1: 517 | version "2.14.1" 518 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" 519 | 520 | commander@~2.13.0: 521 | version "2.13.0" 522 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" 523 | 524 | commondir@^1.0.1: 525 | version "1.0.1" 526 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 527 | 528 | component-emitter@^1.2.1: 529 | version "1.2.1" 530 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 531 | 532 | concat-map@0.0.1: 533 | version "0.0.1" 534 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 535 | 536 | concat-stream@^1.5.0: 537 | version "1.6.0" 538 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 539 | dependencies: 540 | inherits "^2.0.3" 541 | readable-stream "^2.2.2" 542 | typedarray "^0.0.6" 543 | 544 | console-browserify@^1.1.0: 545 | version "1.1.0" 546 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 547 | dependencies: 548 | date-now "^0.1.4" 549 | 550 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 551 | version "1.1.0" 552 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 553 | 554 | constants-browserify@^1.0.0: 555 | version "1.0.0" 556 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 557 | 558 | copy-concurrently@^1.0.0: 559 | version "1.0.5" 560 | resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" 561 | dependencies: 562 | aproba "^1.1.1" 563 | fs-write-stream-atomic "^1.0.8" 564 | iferr "^0.1.5" 565 | mkdirp "^0.5.1" 566 | rimraf "^2.5.4" 567 | run-queue "^1.0.0" 568 | 569 | copy-descriptor@^0.1.0: 570 | version "0.1.1" 571 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 572 | 573 | core-util-is@1.0.2, core-util-is@~1.0.0: 574 | version "1.0.2" 575 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 576 | 577 | create-ecdh@^4.0.0: 578 | version "4.0.0" 579 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 580 | dependencies: 581 | bn.js "^4.1.0" 582 | elliptic "^6.0.0" 583 | 584 | create-hash@^1.1.0, create-hash@^1.1.2: 585 | version "1.1.3" 586 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" 587 | dependencies: 588 | cipher-base "^1.0.1" 589 | inherits "^2.0.1" 590 | ripemd160 "^2.0.0" 591 | sha.js "^2.4.0" 592 | 593 | create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: 594 | version "1.1.6" 595 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" 596 | dependencies: 597 | cipher-base "^1.0.3" 598 | create-hash "^1.1.0" 599 | inherits "^2.0.1" 600 | ripemd160 "^2.0.0" 601 | safe-buffer "^5.0.1" 602 | sha.js "^2.4.8" 603 | 604 | cross-spawn@^5.0.1: 605 | version "5.1.0" 606 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 607 | dependencies: 608 | lru-cache "^4.0.1" 609 | shebang-command "^1.2.0" 610 | which "^1.2.9" 611 | 612 | cryptiles@2.x.x: 613 | version "2.0.5" 614 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 615 | dependencies: 616 | boom "2.x.x" 617 | 618 | crypto-browserify@^3.11.0: 619 | version "3.12.0" 620 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 621 | dependencies: 622 | browserify-cipher "^1.0.0" 623 | browserify-sign "^4.0.0" 624 | create-ecdh "^4.0.0" 625 | create-hash "^1.1.0" 626 | create-hmac "^1.1.0" 627 | diffie-hellman "^5.0.0" 628 | inherits "^2.0.1" 629 | pbkdf2 "^3.0.3" 630 | public-encrypt "^4.0.0" 631 | randombytes "^2.0.0" 632 | randomfill "^1.0.3" 633 | 634 | cyclist@~0.2.2: 635 | version "0.2.2" 636 | resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" 637 | 638 | d@1: 639 | version "1.0.0" 640 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 641 | dependencies: 642 | es5-ext "^0.10.9" 643 | 644 | dashdash@^1.12.0: 645 | version "1.14.1" 646 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 647 | dependencies: 648 | assert-plus "^1.0.0" 649 | 650 | date-now@^0.1.4: 651 | version "0.1.4" 652 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 653 | 654 | debug@^2.2.0, debug@^2.3.3: 655 | version "2.6.9" 656 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 657 | dependencies: 658 | ms "2.0.0" 659 | 660 | decamelize@^1.0.0, decamelize@^1.1.1: 661 | version "1.2.0" 662 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 663 | 664 | decode-uri-component@^0.2.0: 665 | version "0.2.0" 666 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 667 | 668 | deep-extend@~0.4.0: 669 | version "0.4.2" 670 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 671 | 672 | define-property@^0.2.5: 673 | version "0.2.5" 674 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 675 | dependencies: 676 | is-descriptor "^0.1.0" 677 | 678 | define-property@^1.0.0: 679 | version "1.0.0" 680 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 681 | dependencies: 682 | is-descriptor "^1.0.0" 683 | 684 | delayed-stream@~1.0.0: 685 | version "1.0.0" 686 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 687 | 688 | delegates@^1.0.0: 689 | version "1.0.0" 690 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 691 | 692 | des.js@^1.0.0: 693 | version "1.0.0" 694 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 695 | dependencies: 696 | inherits "^2.0.1" 697 | minimalistic-assert "^1.0.0" 698 | 699 | detect-libc@^1.0.2: 700 | version "1.0.3" 701 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 702 | 703 | diff@^3.2.0: 704 | version "3.4.0" 705 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" 706 | 707 | diffie-hellman@^5.0.0: 708 | version "5.0.2" 709 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 710 | dependencies: 711 | bn.js "^4.1.0" 712 | miller-rabin "^4.0.0" 713 | randombytes "^2.0.0" 714 | 715 | domain-browser@^1.1.1: 716 | version "1.2.0" 717 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 718 | 719 | duplexify@^3.4.2, duplexify@^3.5.3: 720 | version "3.5.3" 721 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e" 722 | dependencies: 723 | end-of-stream "^1.0.0" 724 | inherits "^2.0.1" 725 | readable-stream "^2.0.0" 726 | stream-shift "^1.0.0" 727 | 728 | ecc-jsbn@~0.1.1: 729 | version "0.1.1" 730 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 731 | dependencies: 732 | jsbn "~0.1.0" 733 | 734 | elliptic@^6.0.0: 735 | version "6.4.0" 736 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" 737 | dependencies: 738 | bn.js "^4.4.0" 739 | brorand "^1.0.1" 740 | hash.js "^1.0.0" 741 | hmac-drbg "^1.0.0" 742 | inherits "^2.0.1" 743 | minimalistic-assert "^1.0.0" 744 | minimalistic-crypto-utils "^1.0.0" 745 | 746 | emojis-list@^2.0.0: 747 | version "2.1.0" 748 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 749 | 750 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 751 | version "1.4.1" 752 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 753 | dependencies: 754 | once "^1.4.0" 755 | 756 | enhanced-resolve@3.3.0: 757 | version "3.3.0" 758 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" 759 | dependencies: 760 | graceful-fs "^4.1.2" 761 | memory-fs "^0.4.0" 762 | object-assign "^4.0.1" 763 | tapable "^0.2.5" 764 | 765 | enhanced-resolve@^3.4.0: 766 | version "3.4.1" 767 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" 768 | dependencies: 769 | graceful-fs "^4.1.2" 770 | memory-fs "^0.4.0" 771 | object-assign "^4.0.1" 772 | tapable "^0.2.7" 773 | 774 | errno@^0.1.3, errno@^0.1.4: 775 | version "0.1.7" 776 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" 777 | dependencies: 778 | prr "~1.0.1" 779 | 780 | error-ex@^1.2.0: 781 | version "1.3.1" 782 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 783 | dependencies: 784 | is-arrayish "^0.2.1" 785 | 786 | es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: 787 | version "0.10.39" 788 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" 789 | dependencies: 790 | es6-iterator "~2.0.3" 791 | es6-symbol "~3.1.1" 792 | 793 | es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: 794 | version "2.0.3" 795 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 796 | dependencies: 797 | d "1" 798 | es5-ext "^0.10.35" 799 | es6-symbol "^3.1.1" 800 | 801 | es6-map@^0.1.3: 802 | version "0.1.5" 803 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 804 | dependencies: 805 | d "1" 806 | es5-ext "~0.10.14" 807 | es6-iterator "~2.0.1" 808 | es6-set "~0.1.5" 809 | es6-symbol "~3.1.1" 810 | event-emitter "~0.3.5" 811 | 812 | es6-set@~0.1.5: 813 | version "0.1.5" 814 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 815 | dependencies: 816 | d "1" 817 | es5-ext "~0.10.14" 818 | es6-iterator "~2.0.1" 819 | es6-symbol "3.1.1" 820 | event-emitter "~0.3.5" 821 | 822 | es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: 823 | version "3.1.1" 824 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 825 | dependencies: 826 | d "1" 827 | es5-ext "~0.10.14" 828 | 829 | es6-weak-map@^2.0.1: 830 | version "2.0.2" 831 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 832 | dependencies: 833 | d "1" 834 | es5-ext "^0.10.14" 835 | es6-iterator "^2.0.1" 836 | es6-symbol "^3.1.1" 837 | 838 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 839 | version "1.0.5" 840 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 841 | 842 | escope@^3.6.0: 843 | version "3.6.0" 844 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 845 | dependencies: 846 | es6-map "^0.1.3" 847 | es6-weak-map "^2.0.1" 848 | esrecurse "^4.1.0" 849 | estraverse "^4.1.1" 850 | 851 | esprima@^4.0.0: 852 | version "4.0.0" 853 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 854 | 855 | esrecurse@^4.1.0: 856 | version "4.2.0" 857 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 858 | dependencies: 859 | estraverse "^4.1.0" 860 | object-assign "^4.0.1" 861 | 862 | estraverse@^4.1.0, estraverse@^4.1.1: 863 | version "4.2.0" 864 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 865 | 866 | esutils@^2.0.2: 867 | version "2.0.2" 868 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 869 | 870 | event-emitter@~0.3.5: 871 | version "0.3.5" 872 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 873 | dependencies: 874 | d "1" 875 | es5-ext "~0.10.14" 876 | 877 | events@^1.0.0: 878 | version "1.1.1" 879 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 880 | 881 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 882 | version "1.0.3" 883 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 884 | dependencies: 885 | md5.js "^1.3.4" 886 | safe-buffer "^5.1.1" 887 | 888 | execa@^0.7.0: 889 | version "0.7.0" 890 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 891 | dependencies: 892 | cross-spawn "^5.0.1" 893 | get-stream "^3.0.0" 894 | is-stream "^1.1.0" 895 | npm-run-path "^2.0.0" 896 | p-finally "^1.0.0" 897 | signal-exit "^3.0.0" 898 | strip-eof "^1.0.0" 899 | 900 | expand-brackets@^0.1.4: 901 | version "0.1.5" 902 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 903 | dependencies: 904 | is-posix-bracket "^0.1.0" 905 | 906 | expand-brackets@^2.1.4: 907 | version "2.1.4" 908 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 909 | dependencies: 910 | debug "^2.3.3" 911 | define-property "^0.2.5" 912 | extend-shallow "^2.0.1" 913 | posix-character-classes "^0.1.0" 914 | regex-not "^1.0.0" 915 | snapdragon "^0.8.1" 916 | to-regex "^3.0.1" 917 | 918 | expand-range@^1.8.1: 919 | version "1.8.2" 920 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 921 | dependencies: 922 | fill-range "^2.1.0" 923 | 924 | extend-shallow@^2.0.1: 925 | version "2.0.1" 926 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 927 | dependencies: 928 | is-extendable "^0.1.0" 929 | 930 | extend-shallow@^3.0.0: 931 | version "3.0.2" 932 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 933 | dependencies: 934 | assign-symbols "^1.0.0" 935 | is-extendable "^1.0.1" 936 | 937 | extend@~3.0.0: 938 | version "3.0.1" 939 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 940 | 941 | extglob@^0.3.1: 942 | version "0.3.2" 943 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 944 | dependencies: 945 | is-extglob "^1.0.0" 946 | 947 | extglob@^2.0.2: 948 | version "2.0.4" 949 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 950 | dependencies: 951 | array-unique "^0.3.2" 952 | define-property "^1.0.0" 953 | expand-brackets "^2.1.4" 954 | extend-shallow "^2.0.1" 955 | fragment-cache "^0.2.1" 956 | regex-not "^1.0.0" 957 | snapdragon "^0.8.1" 958 | to-regex "^3.0.1" 959 | 960 | extsprintf@1.3.0: 961 | version "1.3.0" 962 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 963 | 964 | extsprintf@^1.2.0: 965 | version "1.4.0" 966 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 967 | 968 | fast-deep-equal@^1.0.0: 969 | version "1.0.0" 970 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 971 | 972 | fast-json-stable-stringify@^2.0.0: 973 | version "2.0.0" 974 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 975 | 976 | filename-regex@^2.0.0: 977 | version "2.0.1" 978 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 979 | 980 | fill-range@^2.1.0: 981 | version "2.2.3" 982 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 983 | dependencies: 984 | is-number "^2.1.0" 985 | isobject "^2.0.0" 986 | randomatic "^1.1.3" 987 | repeat-element "^1.1.2" 988 | repeat-string "^1.5.2" 989 | 990 | fill-range@^4.0.0: 991 | version "4.0.0" 992 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 993 | dependencies: 994 | extend-shallow "^2.0.1" 995 | is-number "^3.0.0" 996 | repeat-string "^1.6.1" 997 | to-regex-range "^2.1.0" 998 | 999 | find-cache-dir@^1.0.0: 1000 | version "1.0.0" 1001 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" 1002 | dependencies: 1003 | commondir "^1.0.1" 1004 | make-dir "^1.0.0" 1005 | pkg-dir "^2.0.0" 1006 | 1007 | find-up@^2.0.0, find-up@^2.1.0: 1008 | version "2.1.0" 1009 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1010 | dependencies: 1011 | locate-path "^2.0.0" 1012 | 1013 | flush-write-stream@^1.0.0: 1014 | version "1.0.2" 1015 | resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" 1016 | dependencies: 1017 | inherits "^2.0.1" 1018 | readable-stream "^2.0.4" 1019 | 1020 | for-in@^1.0.1, for-in@^1.0.2: 1021 | version "1.0.2" 1022 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1023 | 1024 | for-own@^0.1.4: 1025 | version "0.1.5" 1026 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1027 | dependencies: 1028 | for-in "^1.0.1" 1029 | 1030 | forever-agent@~0.6.1: 1031 | version "0.6.1" 1032 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1033 | 1034 | form-data@~2.1.1: 1035 | version "2.1.4" 1036 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 1037 | dependencies: 1038 | asynckit "^0.4.0" 1039 | combined-stream "^1.0.5" 1040 | mime-types "^2.1.12" 1041 | 1042 | fragment-cache@^0.2.1: 1043 | version "0.2.1" 1044 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1045 | dependencies: 1046 | map-cache "^0.2.2" 1047 | 1048 | from2@^2.1.0: 1049 | version "2.3.0" 1050 | resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 1051 | dependencies: 1052 | inherits "^2.0.1" 1053 | readable-stream "^2.0.0" 1054 | 1055 | fs-write-stream-atomic@^1.0.8: 1056 | version "1.0.10" 1057 | resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" 1058 | dependencies: 1059 | graceful-fs "^4.1.2" 1060 | iferr "^0.1.5" 1061 | imurmurhash "^0.1.4" 1062 | readable-stream "1 || 2" 1063 | 1064 | fs.realpath@^1.0.0: 1065 | version "1.0.0" 1066 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1067 | 1068 | fsevents@^1.0.0: 1069 | version "1.1.3" 1070 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" 1071 | dependencies: 1072 | nan "^2.3.0" 1073 | node-pre-gyp "^0.6.39" 1074 | 1075 | fstream-ignore@^1.0.5: 1076 | version "1.0.5" 1077 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1078 | dependencies: 1079 | fstream "^1.0.0" 1080 | inherits "2" 1081 | minimatch "^3.0.0" 1082 | 1083 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 1084 | version "1.0.11" 1085 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1086 | dependencies: 1087 | graceful-fs "^4.1.2" 1088 | inherits "~2.0.0" 1089 | mkdirp ">=0.5 0" 1090 | rimraf "2" 1091 | 1092 | gauge@~2.7.3: 1093 | version "2.7.4" 1094 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1095 | dependencies: 1096 | aproba "^1.0.3" 1097 | console-control-strings "^1.0.0" 1098 | has-unicode "^2.0.0" 1099 | object-assign "^4.1.0" 1100 | signal-exit "^3.0.0" 1101 | string-width "^1.0.1" 1102 | strip-ansi "^3.0.1" 1103 | wide-align "^1.1.0" 1104 | 1105 | get-caller-file@^1.0.1: 1106 | version "1.0.2" 1107 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1108 | 1109 | get-stream@^3.0.0: 1110 | version "3.0.0" 1111 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1112 | 1113 | get-value@^2.0.3, get-value@^2.0.6: 1114 | version "2.0.6" 1115 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1116 | 1117 | getpass@^0.1.1: 1118 | version "0.1.7" 1119 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1120 | dependencies: 1121 | assert-plus "^1.0.0" 1122 | 1123 | glob-base@^0.3.0: 1124 | version "0.3.0" 1125 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1126 | dependencies: 1127 | glob-parent "^2.0.0" 1128 | is-glob "^2.0.0" 1129 | 1130 | glob-parent@^2.0.0: 1131 | version "2.0.0" 1132 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1133 | dependencies: 1134 | is-glob "^2.0.0" 1135 | 1136 | glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1137 | version "7.1.2" 1138 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1139 | dependencies: 1140 | fs.realpath "^1.0.0" 1141 | inflight "^1.0.4" 1142 | inherits "2" 1143 | minimatch "^3.0.4" 1144 | once "^1.3.0" 1145 | path-is-absolute "^1.0.0" 1146 | 1147 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1148 | version "4.1.11" 1149 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1150 | 1151 | har-schema@^1.0.5: 1152 | version "1.0.5" 1153 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 1154 | 1155 | har-validator@~4.2.1: 1156 | version "4.2.1" 1157 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 1158 | dependencies: 1159 | ajv "^4.9.1" 1160 | har-schema "^1.0.5" 1161 | 1162 | has-ansi@^2.0.0: 1163 | version "2.0.0" 1164 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1165 | dependencies: 1166 | ansi-regex "^2.0.0" 1167 | 1168 | has-flag@^2.0.0: 1169 | version "2.0.0" 1170 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 1171 | 1172 | has-flag@^3.0.0: 1173 | version "3.0.0" 1174 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1175 | 1176 | has-unicode@^2.0.0: 1177 | version "2.0.1" 1178 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1179 | 1180 | has-value@^0.3.1: 1181 | version "0.3.1" 1182 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1183 | dependencies: 1184 | get-value "^2.0.3" 1185 | has-values "^0.1.4" 1186 | isobject "^2.0.0" 1187 | 1188 | has-value@^1.0.0: 1189 | version "1.0.0" 1190 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1191 | dependencies: 1192 | get-value "^2.0.6" 1193 | has-values "^1.0.0" 1194 | isobject "^3.0.0" 1195 | 1196 | has-values@^0.1.4: 1197 | version "0.1.4" 1198 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1199 | 1200 | has-values@^1.0.0: 1201 | version "1.0.0" 1202 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1203 | dependencies: 1204 | is-number "^3.0.0" 1205 | kind-of "^4.0.0" 1206 | 1207 | hash-base@^2.0.0: 1208 | version "2.0.2" 1209 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" 1210 | dependencies: 1211 | inherits "^2.0.1" 1212 | 1213 | hash-base@^3.0.0: 1214 | version "3.0.4" 1215 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" 1216 | dependencies: 1217 | inherits "^2.0.1" 1218 | safe-buffer "^5.0.1" 1219 | 1220 | hash.js@^1.0.0, hash.js@^1.0.3: 1221 | version "1.1.3" 1222 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" 1223 | dependencies: 1224 | inherits "^2.0.3" 1225 | minimalistic-assert "^1.0.0" 1226 | 1227 | hawk@3.1.3, hawk@~3.1.3: 1228 | version "3.1.3" 1229 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1230 | dependencies: 1231 | boom "2.x.x" 1232 | cryptiles "2.x.x" 1233 | hoek "2.x.x" 1234 | sntp "1.x.x" 1235 | 1236 | hmac-drbg@^1.0.0: 1237 | version "1.0.1" 1238 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 1239 | dependencies: 1240 | hash.js "^1.0.3" 1241 | minimalistic-assert "^1.0.0" 1242 | minimalistic-crypto-utils "^1.0.1" 1243 | 1244 | hoek@2.x.x: 1245 | version "2.16.3" 1246 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1247 | 1248 | hosted-git-info@^2.1.4: 1249 | version "2.5.0" 1250 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 1251 | 1252 | http-signature@~1.1.0: 1253 | version "1.1.1" 1254 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1255 | dependencies: 1256 | assert-plus "^0.2.0" 1257 | jsprim "^1.2.2" 1258 | sshpk "^1.7.0" 1259 | 1260 | https-browserify@^1.0.0: 1261 | version "1.0.0" 1262 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 1263 | 1264 | ieee754@^1.1.4: 1265 | version "1.1.8" 1266 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1267 | 1268 | iferr@^0.1.5: 1269 | version "0.1.5" 1270 | resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" 1271 | 1272 | imurmurhash@^0.1.4: 1273 | version "0.1.4" 1274 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1275 | 1276 | indexof@0.0.1: 1277 | version "0.0.1" 1278 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1279 | 1280 | inflight@^1.0.4: 1281 | version "1.0.6" 1282 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1283 | dependencies: 1284 | once "^1.3.0" 1285 | wrappy "1" 1286 | 1287 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: 1288 | version "2.0.3" 1289 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1290 | 1291 | inherits@2.0.1: 1292 | version "2.0.1" 1293 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1294 | 1295 | ini@~1.3.0: 1296 | version "1.3.5" 1297 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1298 | 1299 | interpret@^1.0.0: 1300 | version "1.1.0" 1301 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 1302 | 1303 | invert-kv@^1.0.0: 1304 | version "1.0.0" 1305 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1306 | 1307 | is-accessor-descriptor@^0.1.6: 1308 | version "0.1.6" 1309 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1310 | dependencies: 1311 | kind-of "^3.0.2" 1312 | 1313 | is-accessor-descriptor@^1.0.0: 1314 | version "1.0.0" 1315 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1316 | dependencies: 1317 | kind-of "^6.0.0" 1318 | 1319 | is-arrayish@^0.2.1: 1320 | version "0.2.1" 1321 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1322 | 1323 | is-binary-path@^1.0.0: 1324 | version "1.0.1" 1325 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1326 | dependencies: 1327 | binary-extensions "^1.0.0" 1328 | 1329 | is-buffer@^1.1.5: 1330 | version "1.1.6" 1331 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1332 | 1333 | is-builtin-module@^1.0.0: 1334 | version "1.0.0" 1335 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1336 | dependencies: 1337 | builtin-modules "^1.0.0" 1338 | 1339 | is-data-descriptor@^0.1.4: 1340 | version "0.1.4" 1341 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1342 | dependencies: 1343 | kind-of "^3.0.2" 1344 | 1345 | is-data-descriptor@^1.0.0: 1346 | version "1.0.0" 1347 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1348 | dependencies: 1349 | kind-of "^6.0.0" 1350 | 1351 | is-descriptor@^0.1.0: 1352 | version "0.1.6" 1353 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1354 | dependencies: 1355 | is-accessor-descriptor "^0.1.6" 1356 | is-data-descriptor "^0.1.4" 1357 | kind-of "^5.0.0" 1358 | 1359 | is-descriptor@^1.0.0: 1360 | version "1.0.2" 1361 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1362 | dependencies: 1363 | is-accessor-descriptor "^1.0.0" 1364 | is-data-descriptor "^1.0.0" 1365 | kind-of "^6.0.2" 1366 | 1367 | is-dotfile@^1.0.0: 1368 | version "1.0.3" 1369 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1370 | 1371 | is-equal-shallow@^0.1.3: 1372 | version "0.1.3" 1373 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1374 | dependencies: 1375 | is-primitive "^2.0.0" 1376 | 1377 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1378 | version "0.1.1" 1379 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1380 | 1381 | is-extendable@^1.0.1: 1382 | version "1.0.1" 1383 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1384 | dependencies: 1385 | is-plain-object "^2.0.4" 1386 | 1387 | is-extglob@^1.0.0: 1388 | version "1.0.0" 1389 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1390 | 1391 | is-fullwidth-code-point@^1.0.0: 1392 | version "1.0.0" 1393 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1394 | dependencies: 1395 | number-is-nan "^1.0.0" 1396 | 1397 | is-fullwidth-code-point@^2.0.0: 1398 | version "2.0.0" 1399 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1400 | 1401 | is-glob@^2.0.0, is-glob@^2.0.1: 1402 | version "2.0.1" 1403 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1404 | dependencies: 1405 | is-extglob "^1.0.0" 1406 | 1407 | is-number@^2.1.0: 1408 | version "2.1.0" 1409 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1410 | dependencies: 1411 | kind-of "^3.0.2" 1412 | 1413 | is-number@^3.0.0: 1414 | version "3.0.0" 1415 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1416 | dependencies: 1417 | kind-of "^3.0.2" 1418 | 1419 | is-odd@^1.0.0: 1420 | version "1.0.0" 1421 | resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" 1422 | dependencies: 1423 | is-number "^3.0.0" 1424 | 1425 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1426 | version "2.0.4" 1427 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1428 | dependencies: 1429 | isobject "^3.0.1" 1430 | 1431 | is-posix-bracket@^0.1.0: 1432 | version "0.1.1" 1433 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1434 | 1435 | is-primitive@^2.0.0: 1436 | version "2.0.0" 1437 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1438 | 1439 | is-stream@^1.1.0: 1440 | version "1.1.0" 1441 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1442 | 1443 | is-typedarray@~1.0.0: 1444 | version "1.0.0" 1445 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1446 | 1447 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1448 | version "1.0.0" 1449 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1450 | 1451 | isexe@^2.0.0: 1452 | version "2.0.0" 1453 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1454 | 1455 | isobject@^2.0.0: 1456 | version "2.1.0" 1457 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1458 | dependencies: 1459 | isarray "1.0.0" 1460 | 1461 | isobject@^3.0.0, isobject@^3.0.1: 1462 | version "3.0.1" 1463 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1464 | 1465 | isstream@~0.1.2: 1466 | version "0.1.2" 1467 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1468 | 1469 | js-tokens@^3.0.2: 1470 | version "3.0.2" 1471 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1472 | 1473 | js-yaml@^3.7.0: 1474 | version "3.10.0" 1475 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" 1476 | dependencies: 1477 | argparse "^1.0.7" 1478 | esprima "^4.0.0" 1479 | 1480 | jsbn@~0.1.0: 1481 | version "0.1.1" 1482 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1483 | 1484 | json-loader@^0.5.4: 1485 | version "0.5.7" 1486 | resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" 1487 | 1488 | json-schema-traverse@^0.3.0: 1489 | version "0.3.1" 1490 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1491 | 1492 | json-schema@0.2.3: 1493 | version "0.2.3" 1494 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1495 | 1496 | json-stable-stringify@^1.0.1: 1497 | version "1.0.1" 1498 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1499 | dependencies: 1500 | jsonify "~0.0.0" 1501 | 1502 | json-stringify-safe@~5.0.1: 1503 | version "5.0.1" 1504 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1505 | 1506 | json5@^0.5.0, json5@^0.5.1: 1507 | version "0.5.1" 1508 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1509 | 1510 | jsonify@~0.0.0: 1511 | version "0.0.0" 1512 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1513 | 1514 | jsprim@^1.2.2: 1515 | version "1.4.1" 1516 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1517 | dependencies: 1518 | assert-plus "1.0.0" 1519 | extsprintf "1.3.0" 1520 | json-schema "0.2.3" 1521 | verror "1.10.0" 1522 | 1523 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1524 | version "3.2.2" 1525 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1526 | dependencies: 1527 | is-buffer "^1.1.5" 1528 | 1529 | kind-of@^4.0.0: 1530 | version "4.0.0" 1531 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1532 | dependencies: 1533 | is-buffer "^1.1.5" 1534 | 1535 | kind-of@^5.0.0, kind-of@^5.0.2: 1536 | version "5.1.0" 1537 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1538 | 1539 | kind-of@^6.0.0, kind-of@^6.0.2: 1540 | version "6.0.2" 1541 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1542 | 1543 | lazy-cache@^1.0.3: 1544 | version "1.0.4" 1545 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1546 | 1547 | lazy-cache@^2.0.2: 1548 | version "2.0.2" 1549 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" 1550 | dependencies: 1551 | set-getter "^0.1.0" 1552 | 1553 | lcid@^1.0.0: 1554 | version "1.0.0" 1555 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1556 | dependencies: 1557 | invert-kv "^1.0.0" 1558 | 1559 | load-json-file@^2.0.0: 1560 | version "2.0.0" 1561 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1562 | dependencies: 1563 | graceful-fs "^4.1.2" 1564 | parse-json "^2.2.0" 1565 | pify "^2.0.0" 1566 | strip-bom "^3.0.0" 1567 | 1568 | loader-runner@^2.3.0: 1569 | version "2.3.0" 1570 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" 1571 | 1572 | loader-utils@^1.1.0: 1573 | version "1.1.0" 1574 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 1575 | dependencies: 1576 | big.js "^3.1.3" 1577 | emojis-list "^2.0.0" 1578 | json5 "^0.5.0" 1579 | 1580 | loader-utils@~0.2.2: 1581 | version "0.2.17" 1582 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" 1583 | dependencies: 1584 | big.js "^3.1.3" 1585 | emojis-list "^2.0.0" 1586 | json5 "^0.5.0" 1587 | object-assign "^4.0.1" 1588 | 1589 | locate-path@^2.0.0: 1590 | version "2.0.0" 1591 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1592 | dependencies: 1593 | p-locate "^2.0.0" 1594 | path-exists "^3.0.0" 1595 | 1596 | lodash@^4.14.0, lodash@^4.17.4: 1597 | version "4.17.5" 1598 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 1599 | 1600 | longest@^1.0.1: 1601 | version "1.0.1" 1602 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1603 | 1604 | lru-cache@^4.0.1, lru-cache@^4.1.1: 1605 | version "4.1.1" 1606 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 1607 | dependencies: 1608 | pseudomap "^1.0.2" 1609 | yallist "^2.1.2" 1610 | 1611 | make-dir@^1.0.0: 1612 | version "1.2.0" 1613 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" 1614 | dependencies: 1615 | pify "^3.0.0" 1616 | 1617 | map-cache@^0.2.2: 1618 | version "0.2.2" 1619 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1620 | 1621 | map-visit@^1.0.0: 1622 | version "1.0.0" 1623 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1624 | dependencies: 1625 | object-visit "^1.0.0" 1626 | 1627 | md5.js@^1.3.4: 1628 | version "1.3.4" 1629 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" 1630 | dependencies: 1631 | hash-base "^3.0.0" 1632 | inherits "^2.0.1" 1633 | 1634 | mem@^1.1.0: 1635 | version "1.1.0" 1636 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 1637 | dependencies: 1638 | mimic-fn "^1.0.0" 1639 | 1640 | memory-fs@^0.4.0, memory-fs@~0.4.1: 1641 | version "0.4.1" 1642 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 1643 | dependencies: 1644 | errno "^0.1.3" 1645 | readable-stream "^2.0.1" 1646 | 1647 | micromatch@^2.1.5: 1648 | version "2.3.11" 1649 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1650 | dependencies: 1651 | arr-diff "^2.0.0" 1652 | array-unique "^0.2.1" 1653 | braces "^1.8.2" 1654 | expand-brackets "^0.1.4" 1655 | extglob "^0.3.1" 1656 | filename-regex "^2.0.0" 1657 | is-extglob "^1.0.0" 1658 | is-glob "^2.0.1" 1659 | kind-of "^3.0.2" 1660 | normalize-path "^2.0.1" 1661 | object.omit "^2.0.0" 1662 | parse-glob "^3.0.4" 1663 | regex-cache "^0.4.2" 1664 | 1665 | micromatch@^3.0.3: 1666 | version "3.1.5" 1667 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba" 1668 | dependencies: 1669 | arr-diff "^4.0.0" 1670 | array-unique "^0.3.2" 1671 | braces "^2.3.0" 1672 | define-property "^1.0.0" 1673 | extend-shallow "^2.0.1" 1674 | extglob "^2.0.2" 1675 | fragment-cache "^0.2.1" 1676 | kind-of "^6.0.0" 1677 | nanomatch "^1.2.5" 1678 | object.pick "^1.3.0" 1679 | regex-not "^1.0.0" 1680 | snapdragon "^0.8.1" 1681 | to-regex "^3.0.1" 1682 | 1683 | miller-rabin@^4.0.0: 1684 | version "4.0.1" 1685 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 1686 | dependencies: 1687 | bn.js "^4.0.0" 1688 | brorand "^1.0.1" 1689 | 1690 | mime-db@~1.33.0: 1691 | version "1.33.0" 1692 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 1693 | 1694 | mime-types@^2.1.12, mime-types@~2.1.7: 1695 | version "2.1.18" 1696 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 1697 | dependencies: 1698 | mime-db "~1.33.0" 1699 | 1700 | mimic-fn@^1.0.0: 1701 | version "1.2.0" 1702 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 1703 | 1704 | minimalistic-assert@^1.0.0: 1705 | version "1.0.0" 1706 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 1707 | 1708 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 1709 | version "1.0.1" 1710 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1711 | 1712 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: 1713 | version "3.0.4" 1714 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1715 | dependencies: 1716 | brace-expansion "^1.1.7" 1717 | 1718 | minimist@0.0.8: 1719 | version "0.0.8" 1720 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1721 | 1722 | minimist@^1.2.0: 1723 | version "1.2.0" 1724 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1725 | 1726 | mississippi@^2.0.0: 1727 | version "2.0.0" 1728 | resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" 1729 | dependencies: 1730 | concat-stream "^1.5.0" 1731 | duplexify "^3.4.2" 1732 | end-of-stream "^1.1.0" 1733 | flush-write-stream "^1.0.0" 1734 | from2 "^2.1.0" 1735 | parallel-transform "^1.1.0" 1736 | pump "^2.0.1" 1737 | pumpify "^1.3.3" 1738 | stream-each "^1.1.0" 1739 | through2 "^2.0.0" 1740 | 1741 | mixin-deep@^1.2.0: 1742 | version "1.3.1" 1743 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 1744 | dependencies: 1745 | for-in "^1.0.2" 1746 | is-extendable "^1.0.1" 1747 | 1748 | "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: 1749 | version "0.5.1" 1750 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1751 | dependencies: 1752 | minimist "0.0.8" 1753 | 1754 | move-concurrently@^1.0.1: 1755 | version "1.0.1" 1756 | resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" 1757 | dependencies: 1758 | aproba "^1.1.1" 1759 | copy-concurrently "^1.0.0" 1760 | fs-write-stream-atomic "^1.0.8" 1761 | mkdirp "^0.5.1" 1762 | rimraf "^2.5.4" 1763 | run-queue "^1.0.3" 1764 | 1765 | ms@2.0.0: 1766 | version "2.0.0" 1767 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1768 | 1769 | nan@^2.3.0: 1770 | version "2.8.0" 1771 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" 1772 | 1773 | nanomatch@^1.2.5: 1774 | version "1.2.7" 1775 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79" 1776 | dependencies: 1777 | arr-diff "^4.0.0" 1778 | array-unique "^0.3.2" 1779 | define-property "^1.0.0" 1780 | extend-shallow "^2.0.1" 1781 | fragment-cache "^0.2.1" 1782 | is-odd "^1.0.0" 1783 | kind-of "^5.0.2" 1784 | object.pick "^1.3.0" 1785 | regex-not "^1.0.0" 1786 | snapdragon "^0.8.1" 1787 | to-regex "^3.0.1" 1788 | 1789 | node-libs-browser@^2.0.0: 1790 | version "2.1.0" 1791 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" 1792 | dependencies: 1793 | assert "^1.1.1" 1794 | browserify-zlib "^0.2.0" 1795 | buffer "^4.3.0" 1796 | console-browserify "^1.1.0" 1797 | constants-browserify "^1.0.0" 1798 | crypto-browserify "^3.11.0" 1799 | domain-browser "^1.1.1" 1800 | events "^1.0.0" 1801 | https-browserify "^1.0.0" 1802 | os-browserify "^0.3.0" 1803 | path-browserify "0.0.0" 1804 | process "^0.11.10" 1805 | punycode "^1.2.4" 1806 | querystring-es3 "^0.2.0" 1807 | readable-stream "^2.3.3" 1808 | stream-browserify "^2.0.1" 1809 | stream-http "^2.7.2" 1810 | string_decoder "^1.0.0" 1811 | timers-browserify "^2.0.4" 1812 | tty-browserify "0.0.0" 1813 | url "^0.11.0" 1814 | util "^0.10.3" 1815 | vm-browserify "0.0.4" 1816 | 1817 | node-pre-gyp@^0.6.39: 1818 | version "0.6.39" 1819 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" 1820 | dependencies: 1821 | detect-libc "^1.0.2" 1822 | hawk "3.1.3" 1823 | mkdirp "^0.5.1" 1824 | nopt "^4.0.1" 1825 | npmlog "^4.0.2" 1826 | rc "^1.1.7" 1827 | request "2.81.0" 1828 | rimraf "^2.6.1" 1829 | semver "^5.3.0" 1830 | tar "^2.2.1" 1831 | tar-pack "^3.4.0" 1832 | 1833 | nopt@^4.0.1: 1834 | version "4.0.1" 1835 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1836 | dependencies: 1837 | abbrev "1" 1838 | osenv "^0.1.4" 1839 | 1840 | normalize-package-data@^2.3.2: 1841 | version "2.4.0" 1842 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1843 | dependencies: 1844 | hosted-git-info "^2.1.4" 1845 | is-builtin-module "^1.0.0" 1846 | semver "2 || 3 || 4 || 5" 1847 | validate-npm-package-license "^3.0.1" 1848 | 1849 | normalize-path@^2.0.0, normalize-path@^2.0.1: 1850 | version "2.1.1" 1851 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1852 | dependencies: 1853 | remove-trailing-separator "^1.0.1" 1854 | 1855 | npm-run-path@^2.0.0: 1856 | version "2.0.2" 1857 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1858 | dependencies: 1859 | path-key "^2.0.0" 1860 | 1861 | npmlog@^4.0.2: 1862 | version "4.1.2" 1863 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1864 | dependencies: 1865 | are-we-there-yet "~1.1.2" 1866 | console-control-strings "~1.1.0" 1867 | gauge "~2.7.3" 1868 | set-blocking "~2.0.0" 1869 | 1870 | number-is-nan@^1.0.0: 1871 | version "1.0.1" 1872 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1873 | 1874 | oauth-sign@~0.8.1: 1875 | version "0.8.2" 1876 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1877 | 1878 | object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: 1879 | version "4.1.1" 1880 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1881 | 1882 | object-copy@^0.1.0: 1883 | version "0.1.0" 1884 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1885 | dependencies: 1886 | copy-descriptor "^0.1.0" 1887 | define-property "^0.2.5" 1888 | kind-of "^3.0.3" 1889 | 1890 | object-visit@^1.0.0: 1891 | version "1.0.1" 1892 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1893 | dependencies: 1894 | isobject "^3.0.0" 1895 | 1896 | object.omit@^2.0.0: 1897 | version "2.0.1" 1898 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1899 | dependencies: 1900 | for-own "^0.1.4" 1901 | is-extendable "^0.1.1" 1902 | 1903 | object.pick@^1.3.0: 1904 | version "1.3.0" 1905 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1906 | dependencies: 1907 | isobject "^3.0.1" 1908 | 1909 | once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: 1910 | version "1.4.0" 1911 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1912 | dependencies: 1913 | wrappy "1" 1914 | 1915 | os-browserify@^0.3.0: 1916 | version "0.3.0" 1917 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 1918 | 1919 | os-homedir@^1.0.0: 1920 | version "1.0.2" 1921 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1922 | 1923 | os-locale@^2.0.0: 1924 | version "2.1.0" 1925 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 1926 | dependencies: 1927 | execa "^0.7.0" 1928 | lcid "^1.0.0" 1929 | mem "^1.1.0" 1930 | 1931 | os-tmpdir@^1.0.0: 1932 | version "1.0.2" 1933 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1934 | 1935 | osenv@^0.1.4: 1936 | version "0.1.5" 1937 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1938 | dependencies: 1939 | os-homedir "^1.0.0" 1940 | os-tmpdir "^1.0.0" 1941 | 1942 | p-finally@^1.0.0: 1943 | version "1.0.0" 1944 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1945 | 1946 | p-limit@^1.1.0: 1947 | version "1.2.0" 1948 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" 1949 | dependencies: 1950 | p-try "^1.0.0" 1951 | 1952 | p-locate@^2.0.0: 1953 | version "2.0.0" 1954 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1955 | dependencies: 1956 | p-limit "^1.1.0" 1957 | 1958 | p-try@^1.0.0: 1959 | version "1.0.0" 1960 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1961 | 1962 | pako@~1.0.5: 1963 | version "1.0.6" 1964 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" 1965 | 1966 | parallel-transform@^1.1.0: 1967 | version "1.1.0" 1968 | resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" 1969 | dependencies: 1970 | cyclist "~0.2.2" 1971 | inherits "^2.0.3" 1972 | readable-stream "^2.1.5" 1973 | 1974 | parse-asn1@^5.0.0: 1975 | version "5.1.0" 1976 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" 1977 | dependencies: 1978 | asn1.js "^4.0.0" 1979 | browserify-aes "^1.0.0" 1980 | create-hash "^1.1.0" 1981 | evp_bytestokey "^1.0.0" 1982 | pbkdf2 "^3.0.3" 1983 | 1984 | parse-glob@^3.0.4: 1985 | version "3.0.4" 1986 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1987 | dependencies: 1988 | glob-base "^0.3.0" 1989 | is-dotfile "^1.0.0" 1990 | is-extglob "^1.0.0" 1991 | is-glob "^2.0.0" 1992 | 1993 | parse-json@^2.2.0: 1994 | version "2.2.0" 1995 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1996 | dependencies: 1997 | error-ex "^1.2.0" 1998 | 1999 | pascalcase@^0.1.1: 2000 | version "0.1.1" 2001 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2002 | 2003 | path-browserify@0.0.0: 2004 | version "0.0.0" 2005 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 2006 | 2007 | path-exists@^3.0.0: 2008 | version "3.0.0" 2009 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2010 | 2011 | path-is-absolute@^1.0.0: 2012 | version "1.0.1" 2013 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2014 | 2015 | path-key@^2.0.0: 2016 | version "2.0.1" 2017 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2018 | 2019 | path-parse@^1.0.5: 2020 | version "1.0.5" 2021 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2022 | 2023 | path-type@^2.0.0: 2024 | version "2.0.0" 2025 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 2026 | dependencies: 2027 | pify "^2.0.0" 2028 | 2029 | pbkdf2@^3.0.3: 2030 | version "3.0.14" 2031 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" 2032 | dependencies: 2033 | create-hash "^1.1.2" 2034 | create-hmac "^1.1.4" 2035 | ripemd160 "^2.0.1" 2036 | safe-buffer "^5.0.1" 2037 | sha.js "^2.4.8" 2038 | 2039 | performance-now@^0.2.0: 2040 | version "0.2.0" 2041 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 2042 | 2043 | pify@^2.0.0: 2044 | version "2.3.0" 2045 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2046 | 2047 | pify@^3.0.0: 2048 | version "3.0.0" 2049 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2050 | 2051 | pkg-dir@^2.0.0: 2052 | version "2.0.0" 2053 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 2054 | dependencies: 2055 | find-up "^2.1.0" 2056 | 2057 | posix-character-classes@^0.1.0: 2058 | version "0.1.1" 2059 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2060 | 2061 | preserve@^0.2.0: 2062 | version "0.2.0" 2063 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2064 | 2065 | process-nextick-args@~2.0.0: 2066 | version "2.0.0" 2067 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2068 | 2069 | process@^0.11.10: 2070 | version "0.11.10" 2071 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 2072 | 2073 | promise-inflight@^1.0.1: 2074 | version "1.0.1" 2075 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" 2076 | 2077 | prr@~1.0.1: 2078 | version "1.0.1" 2079 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 2080 | 2081 | pseudomap@^1.0.2: 2082 | version "1.0.2" 2083 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2084 | 2085 | public-encrypt@^4.0.0: 2086 | version "4.0.0" 2087 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 2088 | dependencies: 2089 | bn.js "^4.1.0" 2090 | browserify-rsa "^4.0.0" 2091 | create-hash "^1.1.0" 2092 | parse-asn1 "^5.0.0" 2093 | randombytes "^2.0.1" 2094 | 2095 | pump@^2.0.0, pump@^2.0.1: 2096 | version "2.0.1" 2097 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 2098 | dependencies: 2099 | end-of-stream "^1.1.0" 2100 | once "^1.3.1" 2101 | 2102 | pumpify@^1.3.3: 2103 | version "1.4.0" 2104 | resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" 2105 | dependencies: 2106 | duplexify "^3.5.3" 2107 | inherits "^2.0.3" 2108 | pump "^2.0.0" 2109 | 2110 | punycode@1.3.2: 2111 | version "1.3.2" 2112 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 2113 | 2114 | punycode@^1.2.4, punycode@^1.4.1: 2115 | version "1.4.1" 2116 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2117 | 2118 | qs@~6.4.0: 2119 | version "6.4.0" 2120 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 2121 | 2122 | querystring-es3@^0.2.0: 2123 | version "0.2.1" 2124 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 2125 | 2126 | querystring@0.2.0: 2127 | version "0.2.0" 2128 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 2129 | 2130 | randomatic@^1.1.3: 2131 | version "1.1.7" 2132 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" 2133 | dependencies: 2134 | is-number "^3.0.0" 2135 | kind-of "^4.0.0" 2136 | 2137 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 2138 | version "2.0.6" 2139 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" 2140 | dependencies: 2141 | safe-buffer "^5.1.0" 2142 | 2143 | randomfill@^1.0.3: 2144 | version "1.0.4" 2145 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 2146 | dependencies: 2147 | randombytes "^2.0.5" 2148 | safe-buffer "^5.1.0" 2149 | 2150 | rc@^1.1.7: 2151 | version "1.2.5" 2152 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" 2153 | dependencies: 2154 | deep-extend "~0.4.0" 2155 | ini "~1.3.0" 2156 | minimist "^1.2.0" 2157 | strip-json-comments "~2.0.1" 2158 | 2159 | read-pkg-up@^2.0.0: 2160 | version "2.0.0" 2161 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 2162 | dependencies: 2163 | find-up "^2.0.0" 2164 | read-pkg "^2.0.0" 2165 | 2166 | read-pkg@^2.0.0: 2167 | version "2.0.0" 2168 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2169 | dependencies: 2170 | load-json-file "^2.0.0" 2171 | normalize-package-data "^2.3.2" 2172 | path-type "^2.0.0" 2173 | 2174 | "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3: 2175 | version "2.3.4" 2176 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" 2177 | dependencies: 2178 | core-util-is "~1.0.0" 2179 | inherits "~2.0.3" 2180 | isarray "~1.0.0" 2181 | process-nextick-args "~2.0.0" 2182 | safe-buffer "~5.1.1" 2183 | string_decoder "~1.0.3" 2184 | util-deprecate "~1.0.1" 2185 | 2186 | readdirp@^2.0.0: 2187 | version "2.1.0" 2188 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2189 | dependencies: 2190 | graceful-fs "^4.1.2" 2191 | minimatch "^3.0.2" 2192 | readable-stream "^2.0.2" 2193 | set-immediate-shim "^1.0.1" 2194 | 2195 | regex-cache@^0.4.2: 2196 | version "0.4.4" 2197 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2198 | dependencies: 2199 | is-equal-shallow "^0.1.3" 2200 | 2201 | regex-not@^1.0.0: 2202 | version "1.0.0" 2203 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9" 2204 | dependencies: 2205 | extend-shallow "^2.0.1" 2206 | 2207 | remove-trailing-separator@^1.0.1: 2208 | version "1.1.0" 2209 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2210 | 2211 | repeat-element@^1.1.2: 2212 | version "1.1.2" 2213 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2214 | 2215 | repeat-string@^1.5.2, repeat-string@^1.6.1: 2216 | version "1.6.1" 2217 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2218 | 2219 | request@2.81.0: 2220 | version "2.81.0" 2221 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 2222 | dependencies: 2223 | aws-sign2 "~0.6.0" 2224 | aws4 "^1.2.1" 2225 | caseless "~0.12.0" 2226 | combined-stream "~1.0.5" 2227 | extend "~3.0.0" 2228 | forever-agent "~0.6.1" 2229 | form-data "~2.1.1" 2230 | har-validator "~4.2.1" 2231 | hawk "~3.1.3" 2232 | http-signature "~1.1.0" 2233 | is-typedarray "~1.0.0" 2234 | isstream "~0.1.2" 2235 | json-stringify-safe "~5.0.1" 2236 | mime-types "~2.1.7" 2237 | oauth-sign "~0.8.1" 2238 | performance-now "^0.2.0" 2239 | qs "~6.4.0" 2240 | safe-buffer "^5.0.1" 2241 | stringstream "~0.0.4" 2242 | tough-cookie "~2.3.0" 2243 | tunnel-agent "^0.6.0" 2244 | uuid "^3.0.0" 2245 | 2246 | require-directory@^2.1.1: 2247 | version "2.1.1" 2248 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2249 | 2250 | require-main-filename@^1.0.1: 2251 | version "1.0.1" 2252 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2253 | 2254 | resolve-url@^0.2.1: 2255 | version "0.2.1" 2256 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2257 | 2258 | resolve@^1.3.2: 2259 | version "1.5.0" 2260 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" 2261 | dependencies: 2262 | path-parse "^1.0.5" 2263 | 2264 | right-align@^0.1.1: 2265 | version "0.1.3" 2266 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 2267 | dependencies: 2268 | align-text "^0.1.1" 2269 | 2270 | rimraf@2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: 2271 | version "2.6.2" 2272 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2273 | dependencies: 2274 | glob "^7.0.5" 2275 | 2276 | ripemd160@^2.0.0, ripemd160@^2.0.1: 2277 | version "2.0.1" 2278 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" 2279 | dependencies: 2280 | hash-base "^2.0.0" 2281 | inherits "^2.0.1" 2282 | 2283 | run-queue@^1.0.0, run-queue@^1.0.3: 2284 | version "1.0.3" 2285 | resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" 2286 | dependencies: 2287 | aproba "^1.1.1" 2288 | 2289 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2290 | version "5.1.1" 2291 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 2292 | 2293 | schema-utils@^0.4.2: 2294 | version "0.4.5" 2295 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" 2296 | dependencies: 2297 | ajv "^6.1.0" 2298 | ajv-keywords "^3.1.0" 2299 | 2300 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 2301 | version "5.5.0" 2302 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 2303 | 2304 | serialize-javascript@^1.4.0: 2305 | version "1.4.0" 2306 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" 2307 | 2308 | set-blocking@^2.0.0, set-blocking@~2.0.0: 2309 | version "2.0.0" 2310 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2311 | 2312 | set-getter@^0.1.0: 2313 | version "0.1.0" 2314 | resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" 2315 | dependencies: 2316 | to-object-path "^0.3.0" 2317 | 2318 | set-immediate-shim@^1.0.1: 2319 | version "1.0.1" 2320 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2321 | 2322 | set-value@^0.4.3: 2323 | version "0.4.3" 2324 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 2325 | dependencies: 2326 | extend-shallow "^2.0.1" 2327 | is-extendable "^0.1.1" 2328 | is-plain-object "^2.0.1" 2329 | to-object-path "^0.3.0" 2330 | 2331 | set-value@^2.0.0: 2332 | version "2.0.0" 2333 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 2334 | dependencies: 2335 | extend-shallow "^2.0.1" 2336 | is-extendable "^0.1.1" 2337 | is-plain-object "^2.0.3" 2338 | split-string "^3.0.1" 2339 | 2340 | setimmediate@^1.0.4: 2341 | version "1.0.5" 2342 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2343 | 2344 | sha.js@^2.4.0, sha.js@^2.4.8: 2345 | version "2.4.10" 2346 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" 2347 | dependencies: 2348 | inherits "^2.0.1" 2349 | safe-buffer "^5.0.1" 2350 | 2351 | shebang-command@^1.2.0: 2352 | version "1.2.0" 2353 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2354 | dependencies: 2355 | shebang-regex "^1.0.0" 2356 | 2357 | shebang-regex@^1.0.0: 2358 | version "1.0.0" 2359 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2360 | 2361 | signal-exit@^3.0.0: 2362 | version "3.0.2" 2363 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2364 | 2365 | snapdragon-node@^2.0.1: 2366 | version "2.1.1" 2367 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2368 | dependencies: 2369 | define-property "^1.0.0" 2370 | isobject "^3.0.0" 2371 | snapdragon-util "^3.0.1" 2372 | 2373 | snapdragon-util@^3.0.1: 2374 | version "3.0.1" 2375 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2376 | dependencies: 2377 | kind-of "^3.2.0" 2378 | 2379 | snapdragon@^0.8.1: 2380 | version "0.8.1" 2381 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" 2382 | dependencies: 2383 | base "^0.11.1" 2384 | debug "^2.2.0" 2385 | define-property "^0.2.5" 2386 | extend-shallow "^2.0.1" 2387 | map-cache "^0.2.2" 2388 | source-map "^0.5.6" 2389 | source-map-resolve "^0.5.0" 2390 | use "^2.0.0" 2391 | 2392 | sntp@1.x.x: 2393 | version "1.0.9" 2394 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2395 | dependencies: 2396 | hoek "2.x.x" 2397 | 2398 | source-list-map@^2.0.0: 2399 | version "2.0.0" 2400 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" 2401 | 2402 | source-map-loader@^0.2.3: 2403 | version "0.2.3" 2404 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.3.tgz#d4b0c8cd47d54edce3e6bfa0f523f452b5b0e521" 2405 | dependencies: 2406 | async "^2.5.0" 2407 | loader-utils "~0.2.2" 2408 | source-map "~0.6.1" 2409 | 2410 | source-map-resolve@^0.5.0: 2411 | version "0.5.1" 2412 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" 2413 | dependencies: 2414 | atob "^2.0.0" 2415 | decode-uri-component "^0.2.0" 2416 | resolve-url "^0.2.1" 2417 | source-map-url "^0.4.0" 2418 | urix "^0.1.0" 2419 | 2420 | source-map-support@^0.4.15: 2421 | version "0.4.18" 2422 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 2423 | dependencies: 2424 | source-map "^0.5.6" 2425 | 2426 | source-map-url@^0.4.0: 2427 | version "0.4.0" 2428 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2429 | 2430 | source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: 2431 | version "0.5.7" 2432 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2433 | 2434 | source-map@^0.6.1, source-map@~0.6.1: 2435 | version "0.6.1" 2436 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2437 | 2438 | spdx-correct@~1.0.0: 2439 | version "1.0.2" 2440 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2441 | dependencies: 2442 | spdx-license-ids "^1.0.2" 2443 | 2444 | spdx-expression-parse@~1.0.0: 2445 | version "1.0.4" 2446 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2447 | 2448 | spdx-license-ids@^1.0.2: 2449 | version "1.2.2" 2450 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2451 | 2452 | split-string@^3.0.1, split-string@^3.0.2: 2453 | version "3.1.0" 2454 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2455 | dependencies: 2456 | extend-shallow "^3.0.0" 2457 | 2458 | sprintf-js@~1.0.2: 2459 | version "1.0.3" 2460 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2461 | 2462 | sshpk@^1.7.0: 2463 | version "1.13.1" 2464 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 2465 | dependencies: 2466 | asn1 "~0.2.3" 2467 | assert-plus "^1.0.0" 2468 | dashdash "^1.12.0" 2469 | getpass "^0.1.1" 2470 | optionalDependencies: 2471 | bcrypt-pbkdf "^1.0.0" 2472 | ecc-jsbn "~0.1.1" 2473 | jsbn "~0.1.0" 2474 | tweetnacl "~0.14.0" 2475 | 2476 | ssri@^5.2.4: 2477 | version "5.2.4" 2478 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" 2479 | dependencies: 2480 | safe-buffer "^5.1.1" 2481 | 2482 | static-extend@^0.1.1: 2483 | version "0.1.2" 2484 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2485 | dependencies: 2486 | define-property "^0.2.5" 2487 | object-copy "^0.1.0" 2488 | 2489 | stream-browserify@^2.0.1: 2490 | version "2.0.1" 2491 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 2492 | dependencies: 2493 | inherits "~2.0.1" 2494 | readable-stream "^2.0.2" 2495 | 2496 | stream-each@^1.1.0: 2497 | version "1.2.2" 2498 | resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" 2499 | dependencies: 2500 | end-of-stream "^1.1.0" 2501 | stream-shift "^1.0.0" 2502 | 2503 | stream-http@^2.7.2: 2504 | version "2.8.0" 2505 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" 2506 | dependencies: 2507 | builtin-status-codes "^3.0.0" 2508 | inherits "^2.0.1" 2509 | readable-stream "^2.3.3" 2510 | to-arraybuffer "^1.0.0" 2511 | xtend "^4.0.0" 2512 | 2513 | stream-shift@^1.0.0: 2514 | version "1.0.0" 2515 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 2516 | 2517 | string-width@^1.0.1, string-width@^1.0.2: 2518 | version "1.0.2" 2519 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2520 | dependencies: 2521 | code-point-at "^1.0.0" 2522 | is-fullwidth-code-point "^1.0.0" 2523 | strip-ansi "^3.0.0" 2524 | 2525 | string-width@^2.0.0: 2526 | version "2.1.1" 2527 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2528 | dependencies: 2529 | is-fullwidth-code-point "^2.0.0" 2530 | strip-ansi "^4.0.0" 2531 | 2532 | string_decoder@^1.0.0, string_decoder@~1.0.3: 2533 | version "1.0.3" 2534 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 2535 | dependencies: 2536 | safe-buffer "~5.1.0" 2537 | 2538 | stringstream@~0.0.4: 2539 | version "0.0.5" 2540 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2541 | 2542 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2543 | version "3.0.1" 2544 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2545 | dependencies: 2546 | ansi-regex "^2.0.0" 2547 | 2548 | strip-ansi@^4.0.0: 2549 | version "4.0.0" 2550 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2551 | dependencies: 2552 | ansi-regex "^3.0.0" 2553 | 2554 | strip-bom@^3.0.0: 2555 | version "3.0.0" 2556 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2557 | 2558 | strip-eof@^1.0.0: 2559 | version "1.0.0" 2560 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2561 | 2562 | strip-json-comments@~2.0.1: 2563 | version "2.0.1" 2564 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2565 | 2566 | supports-color@^2.0.0: 2567 | version "2.0.0" 2568 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2569 | 2570 | supports-color@^4.2.1: 2571 | version "4.5.0" 2572 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" 2573 | dependencies: 2574 | has-flag "^2.0.0" 2575 | 2576 | supports-color@^5.2.0: 2577 | version "5.2.0" 2578 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" 2579 | dependencies: 2580 | has-flag "^3.0.0" 2581 | 2582 | tapable@^0.2.5, tapable@^0.2.7: 2583 | version "0.2.8" 2584 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" 2585 | 2586 | tar-pack@^3.4.0: 2587 | version "3.4.1" 2588 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" 2589 | dependencies: 2590 | debug "^2.2.0" 2591 | fstream "^1.0.10" 2592 | fstream-ignore "^1.0.5" 2593 | once "^1.3.3" 2594 | readable-stream "^2.1.4" 2595 | rimraf "^2.5.1" 2596 | tar "^2.2.1" 2597 | uid-number "^0.0.6" 2598 | 2599 | tar@^2.2.1: 2600 | version "2.2.1" 2601 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2602 | dependencies: 2603 | block-stream "*" 2604 | fstream "^1.0.2" 2605 | inherits "2" 2606 | 2607 | through2@^2.0.0: 2608 | version "2.0.3" 2609 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 2610 | dependencies: 2611 | readable-stream "^2.1.5" 2612 | xtend "~4.0.1" 2613 | 2614 | timers-browserify@^2.0.4: 2615 | version "2.0.6" 2616 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" 2617 | dependencies: 2618 | setimmediate "^1.0.4" 2619 | 2620 | to-arraybuffer@^1.0.0: 2621 | version "1.0.1" 2622 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2623 | 2624 | to-object-path@^0.3.0: 2625 | version "0.3.0" 2626 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2627 | dependencies: 2628 | kind-of "^3.0.2" 2629 | 2630 | to-regex-range@^2.1.0: 2631 | version "2.1.1" 2632 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 2633 | dependencies: 2634 | is-number "^3.0.0" 2635 | repeat-string "^1.6.1" 2636 | 2637 | to-regex@^3.0.1: 2638 | version "3.0.1" 2639 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" 2640 | dependencies: 2641 | define-property "^0.2.5" 2642 | extend-shallow "^2.0.1" 2643 | regex-not "^1.0.0" 2644 | 2645 | tough-cookie@~2.3.0: 2646 | version "2.3.3" 2647 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 2648 | dependencies: 2649 | punycode "^1.4.1" 2650 | 2651 | tslib@^1.8.0, tslib@^1.8.1: 2652 | version "1.9.0" 2653 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" 2654 | 2655 | tslint@^5.9.1: 2656 | version "5.9.1" 2657 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae" 2658 | dependencies: 2659 | babel-code-frame "^6.22.0" 2660 | builtin-modules "^1.1.1" 2661 | chalk "^2.3.0" 2662 | commander "^2.12.1" 2663 | diff "^3.2.0" 2664 | glob "^7.1.1" 2665 | js-yaml "^3.7.0" 2666 | minimatch "^3.0.4" 2667 | resolve "^1.3.2" 2668 | semver "^5.3.0" 2669 | tslib "^1.8.0" 2670 | tsutils "^2.12.1" 2671 | 2672 | tsutils@^2.12.1: 2673 | version "2.21.1" 2674 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.21.1.tgz#5b23c263233300ed7442b4217855cbc7547c296a" 2675 | dependencies: 2676 | tslib "^1.8.1" 2677 | 2678 | tty-browserify@0.0.0: 2679 | version "0.0.0" 2680 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 2681 | 2682 | tunnel-agent@^0.6.0: 2683 | version "0.6.0" 2684 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2685 | dependencies: 2686 | safe-buffer "^5.0.1" 2687 | 2688 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2689 | version "0.14.5" 2690 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2691 | 2692 | typedarray@^0.0.6: 2693 | version "0.0.6" 2694 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2695 | 2696 | typescript@^2.7.2: 2697 | version "2.7.2" 2698 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" 2699 | 2700 | uglify-es@^3.3.4: 2701 | version "3.3.9" 2702 | resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" 2703 | dependencies: 2704 | commander "~2.13.0" 2705 | source-map "~0.6.1" 2706 | 2707 | uglify-js@^2.8.29: 2708 | version "2.8.29" 2709 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 2710 | dependencies: 2711 | source-map "~0.5.1" 2712 | yargs "~3.10.0" 2713 | optionalDependencies: 2714 | uglify-to-browserify "~1.0.0" 2715 | 2716 | uglify-to-browserify@~1.0.0: 2717 | version "1.0.2" 2718 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2719 | 2720 | uglifyjs-webpack-plugin@^0.4.6: 2721 | version "0.4.6" 2722 | resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" 2723 | dependencies: 2724 | source-map "^0.5.6" 2725 | uglify-js "^2.8.29" 2726 | webpack-sources "^1.0.1" 2727 | 2728 | uglifyjs-webpack-plugin@^1.2.2: 2729 | version "1.2.2" 2730 | resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz#e7516d4367afdb715c3847841eb46f94c45ca2b9" 2731 | dependencies: 2732 | cacache "^10.0.1" 2733 | find-cache-dir "^1.0.0" 2734 | schema-utils "^0.4.2" 2735 | serialize-javascript "^1.4.0" 2736 | source-map "^0.6.1" 2737 | uglify-es "^3.3.4" 2738 | webpack-sources "^1.1.0" 2739 | worker-farm "^1.5.2" 2740 | 2741 | uid-number@^0.0.6: 2742 | version "0.0.6" 2743 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2744 | 2745 | union-value@^1.0.0: 2746 | version "1.0.0" 2747 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 2748 | dependencies: 2749 | arr-union "^3.1.0" 2750 | get-value "^2.0.6" 2751 | is-extendable "^0.1.1" 2752 | set-value "^0.4.3" 2753 | 2754 | unique-filename@^1.1.0: 2755 | version "1.1.0" 2756 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" 2757 | dependencies: 2758 | unique-slug "^2.0.0" 2759 | 2760 | unique-slug@^2.0.0: 2761 | version "2.0.0" 2762 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" 2763 | dependencies: 2764 | imurmurhash "^0.1.4" 2765 | 2766 | unset-value@^1.0.0: 2767 | version "1.0.0" 2768 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2769 | dependencies: 2770 | has-value "^0.3.1" 2771 | isobject "^3.0.0" 2772 | 2773 | urix@^0.1.0: 2774 | version "0.1.0" 2775 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2776 | 2777 | url@^0.11.0: 2778 | version "0.11.0" 2779 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 2780 | dependencies: 2781 | punycode "1.3.2" 2782 | querystring "0.2.0" 2783 | 2784 | use@^2.0.0: 2785 | version "2.0.2" 2786 | resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" 2787 | dependencies: 2788 | define-property "^0.2.5" 2789 | isobject "^3.0.0" 2790 | lazy-cache "^2.0.2" 2791 | 2792 | util-deprecate@~1.0.1: 2793 | version "1.0.2" 2794 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2795 | 2796 | util@0.10.3, util@^0.10.3: 2797 | version "0.10.3" 2798 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2799 | dependencies: 2800 | inherits "2.0.1" 2801 | 2802 | uuid@^3.0.0: 2803 | version "3.2.1" 2804 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 2805 | 2806 | validate-npm-package-license@^3.0.1: 2807 | version "3.0.1" 2808 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2809 | dependencies: 2810 | spdx-correct "~1.0.0" 2811 | spdx-expression-parse "~1.0.0" 2812 | 2813 | verror@1.10.0: 2814 | version "1.10.0" 2815 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2816 | dependencies: 2817 | assert-plus "^1.0.0" 2818 | core-util-is "1.0.2" 2819 | extsprintf "^1.2.0" 2820 | 2821 | vm-browserify@0.0.4: 2822 | version "0.0.4" 2823 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 2824 | dependencies: 2825 | indexof "0.0.1" 2826 | 2827 | watchpack@^1.4.0: 2828 | version "1.4.0" 2829 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" 2830 | dependencies: 2831 | async "^2.1.2" 2832 | chokidar "^1.7.0" 2833 | graceful-fs "^4.1.2" 2834 | 2835 | webpack-sources@^1.0.1, webpack-sources@^1.1.0: 2836 | version "1.1.0" 2837 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" 2838 | dependencies: 2839 | source-list-map "^2.0.0" 2840 | source-map "~0.6.1" 2841 | 2842 | webpack@^3.11.0: 2843 | version "3.11.0" 2844 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" 2845 | dependencies: 2846 | acorn "^5.0.0" 2847 | acorn-dynamic-import "^2.0.0" 2848 | ajv "^6.1.0" 2849 | ajv-keywords "^3.1.0" 2850 | async "^2.1.2" 2851 | enhanced-resolve "^3.4.0" 2852 | escope "^3.6.0" 2853 | interpret "^1.0.0" 2854 | json-loader "^0.5.4" 2855 | json5 "^0.5.1" 2856 | loader-runner "^2.3.0" 2857 | loader-utils "^1.1.0" 2858 | memory-fs "~0.4.1" 2859 | mkdirp "~0.5.0" 2860 | node-libs-browser "^2.0.0" 2861 | source-map "^0.5.3" 2862 | supports-color "^4.2.1" 2863 | tapable "^0.2.7" 2864 | uglifyjs-webpack-plugin "^0.4.6" 2865 | watchpack "^1.4.0" 2866 | webpack-sources "^1.0.1" 2867 | yargs "^8.0.2" 2868 | 2869 | which-module@^2.0.0: 2870 | version "2.0.0" 2871 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2872 | 2873 | which@^1.2.9: 2874 | version "1.3.0" 2875 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 2876 | dependencies: 2877 | isexe "^2.0.0" 2878 | 2879 | wide-align@^1.1.0: 2880 | version "1.1.2" 2881 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 2882 | dependencies: 2883 | string-width "^1.0.2" 2884 | 2885 | window-size@0.1.0: 2886 | version "0.1.0" 2887 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2888 | 2889 | wordwrap@0.0.2: 2890 | version "0.0.2" 2891 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2892 | 2893 | worker-farm@^1.5.2: 2894 | version "1.5.2" 2895 | resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" 2896 | dependencies: 2897 | errno "^0.1.4" 2898 | xtend "^4.0.1" 2899 | 2900 | wrap-ansi@^2.0.0: 2901 | version "2.1.0" 2902 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 2903 | dependencies: 2904 | string-width "^1.0.1" 2905 | strip-ansi "^3.0.1" 2906 | 2907 | wrappy@1: 2908 | version "1.0.2" 2909 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2910 | 2911 | xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: 2912 | version "4.0.1" 2913 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2914 | 2915 | y18n@^3.2.1: 2916 | version "3.2.1" 2917 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 2918 | 2919 | y18n@^4.0.0: 2920 | version "4.0.0" 2921 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2922 | 2923 | yallist@^2.1.2: 2924 | version "2.1.2" 2925 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2926 | 2927 | yargs-parser@^7.0.0: 2928 | version "7.0.0" 2929 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" 2930 | dependencies: 2931 | camelcase "^4.1.0" 2932 | 2933 | yargs@^8.0.2: 2934 | version "8.0.2" 2935 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" 2936 | dependencies: 2937 | camelcase "^4.1.0" 2938 | cliui "^3.2.0" 2939 | decamelize "^1.1.1" 2940 | get-caller-file "^1.0.1" 2941 | os-locale "^2.0.0" 2942 | read-pkg-up "^2.0.0" 2943 | require-directory "^2.1.1" 2944 | require-main-filename "^1.0.1" 2945 | set-blocking "^2.0.0" 2946 | string-width "^2.0.0" 2947 | which-module "^2.0.0" 2948 | y18n "^3.2.1" 2949 | yargs-parser "^7.0.0" 2950 | 2951 | yargs@~3.10.0: 2952 | version "3.10.0" 2953 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2954 | dependencies: 2955 | camelcase "^1.0.2" 2956 | cliui "^2.1.0" 2957 | decamelize "^1.0.0" 2958 | window-size "0.1.0" 2959 | --------------------------------------------------------------------------------