babel-preset-vue.js 76 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757
  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  3. typeof define === 'function' && define.amd ? define(factory) :
  4. (global.PresetVue = factory());
  5. }(this, (function () { 'use strict';
  6. function createCommonjsModule(fn, module) {
  7. return module = { exports: {} }, fn(module, module.exports), module.exports;
  8. }
  9. var ast = createCommonjsModule(function (module) {
  10. /*
  11. Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
  12. Redistribution and use in source and binary forms, with or without
  13. modification, are permitted provided that the following conditions are met:
  14. * Redistributions of source code must retain the above copyright
  15. notice, this list of conditions and the following disclaimer.
  16. * Redistributions in binary form must reproduce the above copyright
  17. notice, this list of conditions and the following disclaimer in the
  18. documentation and/or other materials provided with the distribution.
  19. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
  20. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  23. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  26. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  28. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. (function () {
  31. 'use strict';
  32. function isExpression(node) {
  33. if (node == null) { return false; }
  34. switch (node.type) {
  35. case 'ArrayExpression':
  36. case 'AssignmentExpression':
  37. case 'BinaryExpression':
  38. case 'CallExpression':
  39. case 'ConditionalExpression':
  40. case 'FunctionExpression':
  41. case 'Identifier':
  42. case 'Literal':
  43. case 'LogicalExpression':
  44. case 'MemberExpression':
  45. case 'NewExpression':
  46. case 'ObjectExpression':
  47. case 'SequenceExpression':
  48. case 'ThisExpression':
  49. case 'UnaryExpression':
  50. case 'UpdateExpression':
  51. return true;
  52. }
  53. return false;
  54. }
  55. function isIterationStatement(node) {
  56. if (node == null) { return false; }
  57. switch (node.type) {
  58. case 'DoWhileStatement':
  59. case 'ForInStatement':
  60. case 'ForStatement':
  61. case 'WhileStatement':
  62. return true;
  63. }
  64. return false;
  65. }
  66. function isStatement(node) {
  67. if (node == null) { return false; }
  68. switch (node.type) {
  69. case 'BlockStatement':
  70. case 'BreakStatement':
  71. case 'ContinueStatement':
  72. case 'DebuggerStatement':
  73. case 'DoWhileStatement':
  74. case 'EmptyStatement':
  75. case 'ExpressionStatement':
  76. case 'ForInStatement':
  77. case 'ForStatement':
  78. case 'IfStatement':
  79. case 'LabeledStatement':
  80. case 'ReturnStatement':
  81. case 'SwitchStatement':
  82. case 'ThrowStatement':
  83. case 'TryStatement':
  84. case 'VariableDeclaration':
  85. case 'WhileStatement':
  86. case 'WithStatement':
  87. return true;
  88. }
  89. return false;
  90. }
  91. function isSourceElement(node) {
  92. return isStatement(node) || node != null && node.type === 'FunctionDeclaration';
  93. }
  94. function trailingStatement(node) {
  95. switch (node.type) {
  96. case 'IfStatement':
  97. if (node.alternate != null) {
  98. return node.alternate;
  99. }
  100. return node.consequent;
  101. case 'LabeledStatement':
  102. case 'ForStatement':
  103. case 'ForInStatement':
  104. case 'WhileStatement':
  105. case 'WithStatement':
  106. return node.body;
  107. }
  108. return null;
  109. }
  110. function isProblematicIfStatement(node) {
  111. var current;
  112. if (node.type !== 'IfStatement') {
  113. return false;
  114. }
  115. if (node.alternate == null) {
  116. return false;
  117. }
  118. current = node.consequent;
  119. do {
  120. if (current.type === 'IfStatement') {
  121. if (current.alternate == null) {
  122. return true;
  123. }
  124. }
  125. current = trailingStatement(current);
  126. } while (current);
  127. return false;
  128. }
  129. module.exports = {
  130. isExpression: isExpression,
  131. isStatement: isStatement,
  132. isIterationStatement: isIterationStatement,
  133. isSourceElement: isSourceElement,
  134. isProblematicIfStatement: isProblematicIfStatement,
  135. trailingStatement: trailingStatement
  136. };
  137. }());
  138. /* vim: set sw=4 ts=4 et tw=80 : */
  139. });
  140. var code = createCommonjsModule(function (module) {
  141. /*
  142. Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
  143. Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
  144. Redistribution and use in source and binary forms, with or without
  145. modification, are permitted provided that the following conditions are met:
  146. * Redistributions of source code must retain the above copyright
  147. notice, this list of conditions and the following disclaimer.
  148. * Redistributions in binary form must reproduce the above copyright
  149. notice, this list of conditions and the following disclaimer in the
  150. documentation and/or other materials provided with the distribution.
  151. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  152. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  153. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  154. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  155. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  156. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  157. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  158. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  159. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  160. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  161. */
  162. (function () {
  163. 'use strict';
  164. var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;
  165. // See `tools/generate-identifier-regex.js`.
  166. ES5Regex = {
  167. // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart:
  168. NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
  169. // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart:
  170. NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
  171. };
  172. ES6Regex = {
  173. // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart:
  174. NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,
  175. // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart:
  176. NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
  177. };
  178. function isDecimalDigit(ch) {
  179. return 0x30 <= ch && ch <= 0x39; // 0..9
  180. }
  181. function isHexDigit(ch) {
  182. return 0x30 <= ch && ch <= 0x39 || // 0..9
  183. 0x61 <= ch && ch <= 0x66 || // a..f
  184. 0x41 <= ch && ch <= 0x46; // A..F
  185. }
  186. function isOctalDigit(ch) {
  187. return ch >= 0x30 && ch <= 0x37; // 0..7
  188. }
  189. // 7.2 White Space
  190. NON_ASCII_WHITESPACES = [
  191. 0x1680, 0x180E,
  192. 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,
  193. 0x202F, 0x205F,
  194. 0x3000,
  195. 0xFEFF
  196. ];
  197. function isWhiteSpace(ch) {
  198. return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||
  199. ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;
  200. }
  201. // 7.3 Line Terminators
  202. function isLineTerminator(ch) {
  203. return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
  204. }
  205. // 7.6 Identifier Names and Identifiers
  206. function fromCodePoint(cp) {
  207. if (cp <= 0xFFFF) { return String.fromCharCode(cp); }
  208. var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);
  209. var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);
  210. return cu1 + cu2;
  211. }
  212. IDENTIFIER_START = new Array(0x80);
  213. for(ch = 0; ch < 0x80; ++ch) {
  214. IDENTIFIER_START[ch] =
  215. ch >= 0x61 && ch <= 0x7A || // a..z
  216. ch >= 0x41 && ch <= 0x5A || // A..Z
  217. ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
  218. }
  219. IDENTIFIER_PART = new Array(0x80);
  220. for(ch = 0; ch < 0x80; ++ch) {
  221. IDENTIFIER_PART[ch] =
  222. ch >= 0x61 && ch <= 0x7A || // a..z
  223. ch >= 0x41 && ch <= 0x5A || // A..Z
  224. ch >= 0x30 && ch <= 0x39 || // 0..9
  225. ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
  226. }
  227. function isIdentifierStartES5(ch) {
  228. return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
  229. }
  230. function isIdentifierPartES5(ch) {
  231. return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
  232. }
  233. function isIdentifierStartES6(ch) {
  234. return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
  235. }
  236. function isIdentifierPartES6(ch) {
  237. return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
  238. }
  239. module.exports = {
  240. isDecimalDigit: isDecimalDigit,
  241. isHexDigit: isHexDigit,
  242. isOctalDigit: isOctalDigit,
  243. isWhiteSpace: isWhiteSpace,
  244. isLineTerminator: isLineTerminator,
  245. isIdentifierStartES5: isIdentifierStartES5,
  246. isIdentifierPartES5: isIdentifierPartES5,
  247. isIdentifierStartES6: isIdentifierStartES6,
  248. isIdentifierPartES6: isIdentifierPartES6
  249. };
  250. }());
  251. /* vim: set sw=4 ts=4 et tw=80 : */
  252. });
  253. var keyword = createCommonjsModule(function (module) {
  254. /*
  255. Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
  256. Redistribution and use in source and binary forms, with or without
  257. modification, are permitted provided that the following conditions are met:
  258. * Redistributions of source code must retain the above copyright
  259. notice, this list of conditions and the following disclaimer.
  260. * Redistributions in binary form must reproduce the above copyright
  261. notice, this list of conditions and the following disclaimer in the
  262. documentation and/or other materials provided with the distribution.
  263. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  264. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  265. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  266. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  267. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  268. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  269. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  270. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  271. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  272. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  273. */
  274. (function () {
  275. 'use strict';
  276. var code$$1 = code;
  277. function isStrictModeReservedWordES6(id) {
  278. switch (id) {
  279. case 'implements':
  280. case 'interface':
  281. case 'package':
  282. case 'private':
  283. case 'protected':
  284. case 'public':
  285. case 'static':
  286. case 'let':
  287. return true;
  288. default:
  289. return false;
  290. }
  291. }
  292. function isKeywordES5(id, strict) {
  293. // yield should not be treated as keyword under non-strict mode.
  294. if (!strict && id === 'yield') {
  295. return false;
  296. }
  297. return isKeywordES6(id, strict);
  298. }
  299. function isKeywordES6(id, strict) {
  300. if (strict && isStrictModeReservedWordES6(id)) {
  301. return true;
  302. }
  303. switch (id.length) {
  304. case 2:
  305. return (id === 'if') || (id === 'in') || (id === 'do');
  306. case 3:
  307. return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');
  308. case 4:
  309. return (id === 'this') || (id === 'else') || (id === 'case') ||
  310. (id === 'void') || (id === 'with') || (id === 'enum');
  311. case 5:
  312. return (id === 'while') || (id === 'break') || (id === 'catch') ||
  313. (id === 'throw') || (id === 'const') || (id === 'yield') ||
  314. (id === 'class') || (id === 'super');
  315. case 6:
  316. return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
  317. (id === 'switch') || (id === 'export') || (id === 'import');
  318. case 7:
  319. return (id === 'default') || (id === 'finally') || (id === 'extends');
  320. case 8:
  321. return (id === 'function') || (id === 'continue') || (id === 'debugger');
  322. case 10:
  323. return (id === 'instanceof');
  324. default:
  325. return false;
  326. }
  327. }
  328. function isReservedWordES5(id, strict) {
  329. return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);
  330. }
  331. function isReservedWordES6(id, strict) {
  332. return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);
  333. }
  334. function isRestrictedWord(id) {
  335. return id === 'eval' || id === 'arguments';
  336. }
  337. function isIdentifierNameES5(id) {
  338. var i, iz, ch;
  339. if (id.length === 0) { return false; }
  340. ch = id.charCodeAt(0);
  341. if (!code$$1.isIdentifierStartES5(ch)) {
  342. return false;
  343. }
  344. for (i = 1, iz = id.length; i < iz; ++i) {
  345. ch = id.charCodeAt(i);
  346. if (!code$$1.isIdentifierPartES5(ch)) {
  347. return false;
  348. }
  349. }
  350. return true;
  351. }
  352. function decodeUtf16(lead, trail) {
  353. return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
  354. }
  355. function isIdentifierNameES6(id) {
  356. var i, iz, ch, lowCh, check;
  357. if (id.length === 0) { return false; }
  358. check = code$$1.isIdentifierStartES6;
  359. for (i = 0, iz = id.length; i < iz; ++i) {
  360. ch = id.charCodeAt(i);
  361. if (0xD800 <= ch && ch <= 0xDBFF) {
  362. ++i;
  363. if (i >= iz) { return false; }
  364. lowCh = id.charCodeAt(i);
  365. if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {
  366. return false;
  367. }
  368. ch = decodeUtf16(ch, lowCh);
  369. }
  370. if (!check(ch)) {
  371. return false;
  372. }
  373. check = code$$1.isIdentifierPartES6;
  374. }
  375. return true;
  376. }
  377. function isIdentifierES5(id, strict) {
  378. return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);
  379. }
  380. function isIdentifierES6(id, strict) {
  381. return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);
  382. }
  383. module.exports = {
  384. isKeywordES5: isKeywordES5,
  385. isKeywordES6: isKeywordES6,
  386. isReservedWordES5: isReservedWordES5,
  387. isReservedWordES6: isReservedWordES6,
  388. isRestrictedWord: isRestrictedWord,
  389. isIdentifierNameES5: isIdentifierNameES5,
  390. isIdentifierNameES6: isIdentifierNameES6,
  391. isIdentifierES5: isIdentifierES5,
  392. isIdentifierES6: isIdentifierES6
  393. };
  394. }());
  395. /* vim: set sw=4 ts=4 et tw=80 : */
  396. });
  397. var utils = createCommonjsModule(function (module, exports) {
  398. /*
  399. Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
  400. Redistribution and use in source and binary forms, with or without
  401. modification, are permitted provided that the following conditions are met:
  402. * Redistributions of source code must retain the above copyright
  403. notice, this list of conditions and the following disclaimer.
  404. * Redistributions in binary form must reproduce the above copyright
  405. notice, this list of conditions and the following disclaimer in the
  406. documentation and/or other materials provided with the distribution.
  407. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  408. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  409. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  410. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  411. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  412. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  413. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  414. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  415. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  416. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  417. */
  418. (function () {
  419. 'use strict';
  420. exports.ast = ast;
  421. exports.code = code;
  422. exports.keyword = keyword;
  423. }());
  424. /* vim: set sw=4 ts=4 et tw=80 : */
  425. });
  426. var makeMap = function makeMap (str) {
  427. var map = Object.create(null);
  428. var list = str.split(',');
  429. for (var i = 0; i < list.length; i++) {
  430. map[list[i]] = true;
  431. }
  432. return function (val) { return map[val]; }
  433. };
  434. var isTopLevel = makeMap('class,staticClass,style,key,ref,refInFor,slot,scopedSlots');
  435. var isNestable = makeMap('domProps,on,nativeOn,hook');
  436. var nestableRE = /^(domProps|on|nativeOn|hook)([\-_A-Z])/;
  437. var dirRE = /^v-/;
  438. var xlinkRE = /^xlink([A-Z])/;
  439. var groupProps = function groupProps (props, t) {
  440. var newProps = [];
  441. var currentNestedObjects = Object.create(null);
  442. props.forEach(function (prop) {
  443. var name = prop.key.value || prop.key.name;
  444. if (isTopLevel(name)) {
  445. // top-level special props
  446. newProps.push(prop);
  447. } else {
  448. // nested modules
  449. var nestMatch = name.match(nestableRE);
  450. if (nestMatch) {
  451. var prefix = nestMatch[1];
  452. var suffix = name.replace(nestableRE, function (_, $1, $2) {
  453. return $2 === '-' ? '' : $2.toLowerCase()
  454. });
  455. var nestedProp = t.objectProperty(t.stringLiteral(suffix), prop.value);
  456. var nestedObject = currentNestedObjects[prefix];
  457. if (!nestedObject) {
  458. nestedObject = currentNestedObjects[prefix] = t.objectProperty(
  459. t.identifier(prefix),
  460. t.objectExpression([nestedProp])
  461. );
  462. newProps.push(nestedObject);
  463. } else {
  464. nestedObject.value.properties.push(nestedProp);
  465. }
  466. } else if (dirRE.test(name)) {
  467. // custom directive
  468. name = name.replace(dirRE, '');
  469. var dirs = currentNestedObjects.directives;
  470. if (!dirs) {
  471. dirs = currentNestedObjects.directives = t.objectProperty(
  472. t.identifier('directives'),
  473. t.arrayExpression([])
  474. );
  475. newProps.push(dirs);
  476. }
  477. dirs.value.elements.push(t.objectExpression([
  478. t.objectProperty(
  479. t.identifier('name'),
  480. t.stringLiteral(name)
  481. ),
  482. t.objectProperty(
  483. t.identifier('value'),
  484. prop.value
  485. )
  486. ]));
  487. } else {
  488. // rest are nested under attrs
  489. var attrs = currentNestedObjects.attrs;
  490. // guard xlink attributes
  491. if (xlinkRE.test(prop.key.name)) {
  492. prop.key.name = JSON.stringify(prop.key.name.replace(xlinkRE, function (m, p1) {
  493. return 'xlink:' + p1.toLowerCase()
  494. }));
  495. }
  496. if (!attrs) {
  497. attrs = currentNestedObjects.attrs = t.objectProperty(
  498. t.identifier('attrs'),
  499. t.objectExpression([prop])
  500. );
  501. newProps.push(attrs);
  502. } else {
  503. attrs.value.properties.push(prop);
  504. }
  505. }
  506. }
  507. });
  508. return t.objectExpression(newProps)
  509. };
  510. var acceptValue = ['input','textarea','option','select'];
  511. var mustUseProp = function (tag, type, attr) {
  512. return (
  513. (attr === 'value' && acceptValue.includes(tag)) && type !== 'button' ||
  514. (attr === 'selected' && tag === 'option') ||
  515. (attr === 'checked' && tag === 'input') ||
  516. (attr === 'muted' && tag === 'video')
  517. )
  518. };
  519. var index$2 = createCommonjsModule(function (module, exports) {
  520. "use strict";
  521. exports.__esModule = true;
  522. exports.default = function () {
  523. return {
  524. manipulateOptions: function manipulateOptions(opts, parserOpts) {
  525. parserOpts.plugins.push("jsx");
  526. }
  527. };
  528. };
  529. module.exports = exports["default"];
  530. });
  531. var index$1 = function (babel) {
  532. var t = babel.types;
  533. return {
  534. inherits: index$2,
  535. visitor: {
  536. JSXNamespacedName: function JSXNamespacedName (path) {
  537. throw path.buildCodeFrameError(
  538. 'Namespaced tags/attributes are not supported. JSX is not XML.\n' +
  539. 'For attributes like xlink:href, use xlinkHref instead.'
  540. )
  541. },
  542. JSXElement: {
  543. exit: function exit (path, file) {
  544. // turn tag into createElement call
  545. var callExpr = buildElementCall(path.get('openingElement'), file);
  546. // add children array as 3rd arg
  547. callExpr.arguments.push(t.arrayExpression(path.node.children));
  548. if (callExpr.arguments.length >= 3) {
  549. callExpr._prettyCall = true;
  550. }
  551. path.replaceWith(t.inherits(callExpr, path.node));
  552. }
  553. },
  554. 'Program': function Program (path) {
  555. path.traverse({
  556. 'ObjectMethod|ClassMethod': function ObjectMethod_ClassMethod (path) {
  557. var params = path.get('params');
  558. // do nothing if there is (h) param
  559. if (params.length && params[0].node.name === 'h') {
  560. return
  561. }
  562. // do nothing if there is no JSX inside
  563. var jsxChecker = {
  564. hasJsx: false
  565. };
  566. path.traverse({
  567. JSXElement: function JSXElement () {
  568. this.hasJsx = true;
  569. }
  570. }, jsxChecker);
  571. if (!jsxChecker.hasJsx) {
  572. return
  573. }
  574. var isRender = path.node.key.name === 'render';
  575. // inject h otherwise
  576. path.get('body').unshiftContainer('body', t.variableDeclaration('const', [
  577. t.variableDeclarator(
  578. t.identifier('h'),
  579. (
  580. isRender
  581. ? t.memberExpression(
  582. t.identifier('arguments'),
  583. t.numericLiteral(0),
  584. true
  585. )
  586. : t.memberExpression(
  587. t.thisExpression(),
  588. t.identifier('$createElement')
  589. )
  590. )
  591. )
  592. ]));
  593. },
  594. JSXOpeningElement: function JSXOpeningElement (path) {
  595. var tag = path.get('name').node.name;
  596. var attributes = path.get('attributes');
  597. var typeAttribute = attributes.find(function (attributePath) { return attributePath.node.name && attributePath.node.name.name === 'type'; });
  598. var type = typeAttribute && t.isStringLiteral(typeAttribute.node.value) ? typeAttribute.node.value.value : null;
  599. attributes.forEach(function (attributePath) {
  600. var attribute = attributePath.get('name');
  601. if (!attribute.node) {
  602. return
  603. }
  604. var attr = attribute.node.name;
  605. if (mustUseProp(tag, type, attr) && t.isJSXExpressionContainer(attributePath.node.value)) {
  606. attribute.replaceWith(t.JSXIdentifier(("domProps-" + attr)));
  607. }
  608. });
  609. }
  610. });
  611. }
  612. }
  613. }
  614. function buildElementCall (path, file) {
  615. path.parent.children = t.react.buildChildren(path.parent);
  616. var tagExpr = convertJSXIdentifier(path.node.name, path.node);
  617. var args = [];
  618. var tagName;
  619. if (t.isIdentifier(tagExpr)) {
  620. tagName = tagExpr.name;
  621. } else if (t.isLiteral(tagExpr)) {
  622. tagName = tagExpr.value;
  623. }
  624. if (t.react.isCompatTag(tagName)) {
  625. args.push(t.stringLiteral(tagName));
  626. } else {
  627. args.push(tagExpr);
  628. }
  629. var attribs = path.node.attributes;
  630. if (attribs.length) {
  631. attribs = buildOpeningElementAttributes(attribs, file);
  632. } else {
  633. attribs = t.nullLiteral();
  634. }
  635. args.push(attribs);
  636. return t.callExpression(t.identifier('h'), args)
  637. }
  638. function convertJSXIdentifier (node, parent) {
  639. if (t.isJSXIdentifier(node)) {
  640. if (node.name === 'this' && t.isReferenced(node, parent)) {
  641. return t.thisExpression()
  642. } else if (utils.keyword.isIdentifierNameES6(node.name)) {
  643. node.type = 'Identifier';
  644. } else {
  645. return t.stringLiteral(node.name)
  646. }
  647. } else if (t.isJSXMemberExpression(node)) {
  648. return t.memberExpression(
  649. convertJSXIdentifier(node.object, node),
  650. convertJSXIdentifier(node.property, node)
  651. )
  652. }
  653. return node
  654. }
  655. /**
  656. * The logic for this is quite terse. It's because we need to
  657. * support spread elements. We loop over all attributes,
  658. * breaking on spreads, we then push a new object containing
  659. * all prior attributes to an array for later processing.
  660. */
  661. function buildOpeningElementAttributes (attribs, file) {
  662. var _props = [];
  663. var objs = [];
  664. function pushProps () {
  665. if (!_props.length) { return }
  666. objs.push(t.objectExpression(_props));
  667. _props = [];
  668. }
  669. while (attribs.length) {
  670. var prop = attribs.shift();
  671. if (t.isJSXSpreadAttribute(prop)) {
  672. pushProps();
  673. prop.argument._isSpread = true;
  674. objs.push(prop.argument);
  675. } else {
  676. _props.push(convertAttribute(prop));
  677. }
  678. }
  679. pushProps();
  680. objs = objs.map(function (o) {
  681. return o._isSpread ? o : groupProps(o.properties, t)
  682. });
  683. if (objs.length === 1) {
  684. // only one object
  685. attribs = objs[0];
  686. } else if (objs.length) {
  687. // add prop merging helper
  688. var helper = file.addImport('babel-helper-vue-jsx-merge-props', 'default', '_mergeJSXProps');
  689. // spread it
  690. attribs = t.callExpression(
  691. helper,
  692. [t.arrayExpression(objs)]
  693. );
  694. }
  695. return attribs
  696. }
  697. function convertAttribute (node) {
  698. var value = convertAttributeValue(node.value || t.booleanLiteral(true));
  699. if (t.isStringLiteral(value) && !t.isJSXExpressionContainer(node.value)) {
  700. value.value = value.value.replace(/\n\s+/g, ' ');
  701. }
  702. if (t.isValidIdentifier(node.name.name)) {
  703. node.name.type = 'Identifier';
  704. } else {
  705. node.name = t.stringLiteral(node.name.name);
  706. }
  707. return t.inherits(t.objectProperty(node.name, value), node)
  708. }
  709. function convertAttributeValue (node) {
  710. if (t.isJSXExpressionContainer(node)) {
  711. return node.expression
  712. } else {
  713. return node
  714. }
  715. }
  716. };
  717. function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
  718. var syntaxJsx = _interopDefault$1(index$2);
  719. var groupEventAttributes = (function (t) {
  720. return function (obj, attribute) {
  721. if (t.isJSXSpreadAttribute(attribute)) {
  722. return obj;
  723. }
  724. var isNamespaced = t.isJSXNamespacedName(attribute.get('name'));
  725. var event = (isNamespaced ? attribute.get('name').get('namespace') : attribute.get('name')).get('name').node;
  726. var modifiers = isNamespaced ? new Set(attribute.get('name').get('name').get('name').node.split('-')) : new Set();
  727. if (event.indexOf('on') !== 0) {
  728. return obj;
  729. }
  730. var value = attribute.get('value');
  731. attribute.remove();
  732. if (!t.isJSXExpressionContainer(value)) {
  733. return obj;
  734. }
  735. var expression = value.get('expression').node;
  736. var eventName = event.substr(2);
  737. if (eventName[0] === '-') {
  738. eventName = eventName.substr(1);
  739. }
  740. eventName = eventName[0].toLowerCase() + eventName.substr(1);
  741. if (modifiers.has('capture')) {
  742. eventName = '!' + eventName;
  743. }
  744. if (modifiers.has('once')) {
  745. eventName = '~' + eventName;
  746. }
  747. if (!obj[eventName]) {
  748. obj[eventName] = [];
  749. }
  750. obj[eventName].push({ modifiers: modifiers, expression: expression, attribute: attribute });
  751. return obj;
  752. };
  753. });
  754. var aliases = {
  755. esc: 27,
  756. tab: 9,
  757. enter: 13,
  758. space: 32,
  759. up: 38,
  760. left: 37,
  761. right: 39,
  762. down: 40,
  763. delete: [8, 46]
  764. };
  765. var keyModifiers = ['ctrl', 'shift', 'alt', 'meta'];
  766. var keyCodeRE = /^k(\d{1,})$/;
  767. var generateBindingBody = (function (t, _ref) {
  768. var modifiers = _ref.modifiers,
  769. expression = _ref.expression;
  770. var callStatement = t.expressionStatement(t.callExpression(expression, [t.identifier('$event')]));
  771. var result = [];
  772. var conditions = [];
  773. var keyConditions = [t.unaryExpression('!', t.binaryExpression('in', t.stringLiteral('button'), t.identifier('$event')))];
  774. modifiers.forEach(function (modifier) {
  775. if (modifier === 'stop') {
  776. result.push(t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('$event'), t.identifier('stopPropagation')), [])));
  777. } else if (modifier === 'prevent') {
  778. result.push(t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('$event'), t.identifier('preventDefault')), [])));
  779. } else if (modifier === 'self') {
  780. conditions.push(t.binaryExpression('!==', t.memberExpression(t.identifier('$event'), t.identifier('target')), t.memberExpression(t.identifier('$event'), t.identifier('currentTarget'))));
  781. } else if (keyModifiers.includes(modifier)) {
  782. conditions.push(t.unaryExpression('!', t.memberExpression(t.identifier('$event'), t.identifier((modifier + "Key")))));
  783. } else if (modifier === 'bare') {
  784. conditions.push(keyModifiers.filter(function (keyModifier) {
  785. return !modifiers.has(keyModifier);
  786. }).map(function (keyModifier) {
  787. return t.memberExpression(t.identifier('$event'), t.identifier((keyModifier + "Key")));
  788. }).reduce(function (leftCondition, rightCondition) {
  789. return t.logicalExpression('||', leftCondition, rightCondition);
  790. }));
  791. } else if (aliases[modifier]) {
  792. keyConditions.push(t.callExpression(t.memberExpression(t.thisExpression(), t.identifier('_k')), [t.memberExpression(t.identifier('$event'), t.identifier('keyCode')), t.stringLiteral(modifier), Array.isArray(aliases[modifier]) ? t.arrayExpression(aliases[modifier].map(function (el) {
  793. return t.numericLiteral(el);
  794. })) : t.numericLiteral(aliases[modifier])]));
  795. } else if (modifier.match(keyCodeRE)) {
  796. var keyCode = +modifier.match(keyCodeRE)[1];
  797. keyConditions.push(t.binaryExpression('!==', t.memberExpression(t.identifier('$event'), t.identifier('keyCode')), t.numericLiteral(keyCode)));
  798. }
  799. });
  800. if (keyConditions.length > 1) {
  801. conditions.push(keyConditions.reduce(function (leftCondition, rightCondition) {
  802. return t.logicalExpression('&&', leftCondition, rightCondition);
  803. }));
  804. }
  805. if (conditions.length > 0) {
  806. result.push(t.ifStatement(conditions.reduce(function (leftCondition, rightCondition) {
  807. return t.logicalExpression('||', leftCondition, rightCondition);
  808. }), t.returnStatement(t.nullLiteral())));
  809. }
  810. result.push(callStatement);
  811. return result;
  812. });
  813. var generateBindingsList = (function (t, bindings) {
  814. return bindings.map(function (binding) {
  815. return t.arrowFunctionExpression([t.identifier('$event')], t.blockStatement(generateBindingBody(t, binding)));
  816. });
  817. });
  818. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) { break; } } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) { _i["return"](); } } finally { if (_d) { throw _e; } } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  819. var generateSpreadEvent = (function (t) {
  820. return function (_ref) {
  821. var _ref2 = _slicedToArray(_ref, 2),
  822. event = _ref2[0],
  823. bindings = _ref2[1];
  824. var callbacks = generateBindingsList(t, bindings);
  825. return t.objectProperty(t.stringLiteral(event), callbacks.length === 1 ? callbacks[0] : t.arrayExpression(callbacks));
  826. };
  827. });
  828. var index$4 = (function (_ref) {
  829. var t = _ref.types;
  830. return {
  831. inherits: syntaxJsx,
  832. visitor: {
  833. Program: function Program(path) {
  834. path.traverse({
  835. JSXOpeningElement: function JSXOpeningElement(path) {
  836. var attributes = path.get('attributes');
  837. var events = Object.entries(attributes.reduce(groupEventAttributes(t), {}));
  838. if (events.length > 0) {
  839. path.pushContainer('attributes', t.jSXSpreadAttribute(t.objectExpression([t.objectProperty(t.identifier('on'), t.objectExpression(events.map(generateSpreadEvent(t))))])));
  840. }
  841. }
  842. });
  843. }
  844. }
  845. };
  846. });
  847. var bundle = index$4;
  848. var htmlTags = [
  849. "a",
  850. "abbr",
  851. "address",
  852. "area",
  853. "article",
  854. "aside",
  855. "audio",
  856. "b",
  857. "base",
  858. "bdi",
  859. "bdo",
  860. "blockquote",
  861. "body",
  862. "br",
  863. "button",
  864. "canvas",
  865. "caption",
  866. "cite",
  867. "code",
  868. "col",
  869. "colgroup",
  870. "data",
  871. "datalist",
  872. "dd",
  873. "del",
  874. "details",
  875. "dfn",
  876. "dialog",
  877. "div",
  878. "dl",
  879. "dt",
  880. "em",
  881. "embed",
  882. "fieldset",
  883. "figcaption",
  884. "figure",
  885. "footer",
  886. "form",
  887. "h1",
  888. "h2",
  889. "h3",
  890. "h4",
  891. "h5",
  892. "h6",
  893. "head",
  894. "header",
  895. "hgroup",
  896. "hr",
  897. "html",
  898. "i",
  899. "iframe",
  900. "img",
  901. "input",
  902. "ins",
  903. "kbd",
  904. "keygen",
  905. "label",
  906. "legend",
  907. "li",
  908. "link",
  909. "main",
  910. "map",
  911. "mark",
  912. "math",
  913. "menu",
  914. "menuitem",
  915. "meta",
  916. "meter",
  917. "nav",
  918. "noscript",
  919. "object",
  920. "ol",
  921. "optgroup",
  922. "option",
  923. "output",
  924. "p",
  925. "param",
  926. "picture",
  927. "pre",
  928. "progress",
  929. "q",
  930. "rb",
  931. "rp",
  932. "rt",
  933. "rtc",
  934. "ruby",
  935. "s",
  936. "samp",
  937. "script",
  938. "section",
  939. "select",
  940. "slot",
  941. "small",
  942. "source",
  943. "span",
  944. "strong",
  945. "style",
  946. "sub",
  947. "summary",
  948. "sup",
  949. "svg",
  950. "table",
  951. "tbody",
  952. "td",
  953. "template",
  954. "textarea",
  955. "tfoot",
  956. "th",
  957. "thead",
  958. "time",
  959. "title",
  960. "tr",
  961. "track",
  962. "u",
  963. "ul",
  964. "var",
  965. "video",
  966. "wbr"
  967. ]
  968. ;
  969. var htmlTags$1 = Object.freeze({
  970. default: htmlTags
  971. });
  972. var require$$0$3 = ( htmlTags$1 && htmlTags ) || htmlTags$1;
  973. var index$6 = require$$0$3;
  974. var svgTags = [
  975. "a",
  976. "altGlyph",
  977. "altGlyphDef",
  978. "altGlyphItem",
  979. "animate",
  980. "animateColor",
  981. "animateMotion",
  982. "animateTransform",
  983. "circle",
  984. "clipPath",
  985. "color-profile",
  986. "cursor",
  987. "defs",
  988. "desc",
  989. "ellipse",
  990. "feBlend",
  991. "feColorMatrix",
  992. "feComponentTransfer",
  993. "feComposite",
  994. "feConvolveMatrix",
  995. "feDiffuseLighting",
  996. "feDisplacementMap",
  997. "feDistantLight",
  998. "feFlood",
  999. "feFuncA",
  1000. "feFuncB",
  1001. "feFuncG",
  1002. "feFuncR",
  1003. "feGaussianBlur",
  1004. "feImage",
  1005. "feMerge",
  1006. "feMergeNode",
  1007. "feMorphology",
  1008. "feOffset",
  1009. "fePointLight",
  1010. "feSpecularLighting",
  1011. "feSpotLight",
  1012. "feTile",
  1013. "feTurbulence",
  1014. "filter",
  1015. "font",
  1016. "font-face",
  1017. "font-face-format",
  1018. "font-face-name",
  1019. "font-face-src",
  1020. "font-face-uri",
  1021. "foreignObject",
  1022. "g",
  1023. "glyph",
  1024. "glyphRef",
  1025. "hkern",
  1026. "image",
  1027. "line",
  1028. "linearGradient",
  1029. "marker",
  1030. "mask",
  1031. "metadata",
  1032. "missing-glyph",
  1033. "mpath",
  1034. "path",
  1035. "pattern",
  1036. "polygon",
  1037. "polyline",
  1038. "radialGradient",
  1039. "rect",
  1040. "script",
  1041. "set",
  1042. "stop",
  1043. "style",
  1044. "svg",
  1045. "switch",
  1046. "symbol",
  1047. "text",
  1048. "textPath",
  1049. "title",
  1050. "tref",
  1051. "tspan",
  1052. "use",
  1053. "view",
  1054. "vkern"
  1055. ];
  1056. var svgTags$1 = Object.freeze({
  1057. default: svgTags
  1058. });
  1059. var require$$0$4 = ( svgTags$1 && svgTags ) || svgTags$1;
  1060. var index$8 = require$$0$4;
  1061. var allowedModifiers = ['trim', 'number', 'lazy'];
  1062. var RANGE_TOKEN = '__r';
  1063. var CHECKBOX_RADIO_TOKEN = '__c';
  1064. var isReservedTag = function isReservedTag(tag) {
  1065. return ~index$6.indexOf(tag) || ~index$8.indexOf(tag)
  1066. };
  1067. var getExpression = function getExpression(t, path) {
  1068. return t.isStringLiteral(path.node.value) ? path.node.value : path.node.value.expression
  1069. };
  1070. var genValue = function genValue(t, model) {
  1071. return t.jSXAttribute(t.jSXIdentifier('domPropsValue'), t.jSXExpressionContainer(model))
  1072. };
  1073. var genAssignmentCode = function genAssignmentCode(t, model, assignment) {
  1074. if (model.computed) {
  1075. var object = model.object,
  1076. property = model.property;
  1077. return t.ExpressionStatement(
  1078. t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('$set')), [object, property, assignment])
  1079. )
  1080. } else {
  1081. return t.ExpressionStatement(t.AssignmentExpression('=', model, assignment))
  1082. }
  1083. };
  1084. var genListener = function genListener(t, event, body) {
  1085. return t.jSXAttribute(
  1086. t.jSXIdentifier('on' + event),
  1087. t.jSXExpressionContainer(t.ArrowFunctionExpression([t.Identifier('$event')], t.BlockStatement(body)))
  1088. )
  1089. };
  1090. var genSelectModel = function genSelectModel(t, modelAttribute, model, modifier) {
  1091. if (modifier && modifier !== 'number') {
  1092. throw modelAttribute.get('name').get('name').buildCodeFrameError('you can only use number modifier with <select/ >')
  1093. }
  1094. var number = modifier === 'number';
  1095. var valueGetter = t.ConditionalExpression(
  1096. t.BinaryExpression('in', t.StringLiteral('_value'), t.Identifier('o')),
  1097. t.MemberExpression(t.Identifier('o'), t.Identifier('_value')),
  1098. t.MemberExpression(t.Identifier('o'), t.Identifier('value'))
  1099. );
  1100. var selectedVal = t.CallExpression(
  1101. t.MemberExpression(
  1102. t.CallExpression(
  1103. t.MemberExpression(
  1104. t.MemberExpression(
  1105. t.MemberExpression(t.Identifier('Array'), t.Identifier('prototype')),
  1106. t.Identifier('filter')
  1107. ),
  1108. t.Identifier('call')
  1109. ),
  1110. [
  1111. t.MemberExpression(
  1112. t.MemberExpression(t.Identifier('$event'), t.Identifier('target')),
  1113. t.Identifier('options')
  1114. ),
  1115. t.ArrowFunctionExpression(
  1116. [t.Identifier('o')],
  1117. t.MemberExpression(t.Identifier('o'), t.Identifier('selected'))
  1118. )
  1119. ]
  1120. ),
  1121. t.Identifier('map')
  1122. ),
  1123. [
  1124. t.ArrowFunctionExpression(
  1125. [t.Identifier('o')],
  1126. number
  1127. ? t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_n')), [valueGetter])
  1128. : valueGetter
  1129. )
  1130. ]
  1131. );
  1132. var assignment = t.ConditionalExpression(
  1133. t.MemberExpression(t.MemberExpression(t.Identifier('$event'), t.Identifier('target')), t.Identifier('multiple')),
  1134. t.Identifier('$$selectedVal'),
  1135. t.MemberExpression(t.Identifier('$$selectedVal'), t.NumericLiteral(0), true)
  1136. );
  1137. var code = t.VariableDeclaration('const', [t.VariableDeclarator(t.Identifier('$$selectedVal'), selectedVal)]);
  1138. return [genValue(t, model), genListener(t, 'Change', [code, genAssignmentCode(t, model, assignment)])]
  1139. };
  1140. var genCheckboxModel = function genCheckboxModel(t, modelAttribute, model, modifier, path) {
  1141. if (modifier && modifier !== 'number') {
  1142. throw modelAttribute
  1143. .get('name')
  1144. .get('name')
  1145. .buildCodeFrameError('you can only use number modifier with input[type="checkbox"]')
  1146. }
  1147. var value = t.NullLiteral();
  1148. var trueValue = t.BooleanLiteral(true);
  1149. var falseValue = t.BooleanLiteral(false);
  1150. path.get('attributes').forEach(function(path) {
  1151. if (!path.node.name) {
  1152. return
  1153. }
  1154. if (path.node.name.name === 'value') {
  1155. value = getExpression(t, path);
  1156. path.remove();
  1157. } else if (path.node.name.name === 'true-value') {
  1158. trueValue = getExpression(t, path);
  1159. path.remove();
  1160. } else if (path.node.name.name === 'false-value') {
  1161. falseValue = getExpression(t, path);
  1162. path.remove();
  1163. }
  1164. });
  1165. var checkedProp = t.JSXAttribute(
  1166. t.JSXIdentifier('checked'),
  1167. t.JSXExpressionContainer(
  1168. t.ConditionalExpression(
  1169. t.CallExpression(t.MemberExpression(t.Identifier('Array'), t.Identifier('isArray')), [model]),
  1170. t.BinaryExpression(
  1171. '>',
  1172. t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_i')), [model, value]),
  1173. t.UnaryExpression('-', t.NumericLiteral(1))
  1174. ),
  1175. t.isBooleanLiteral(trueValue) && trueValue.value === true
  1176. ? model
  1177. : t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_q')), [model, trueValue])
  1178. )
  1179. )
  1180. );
  1181. var handlerProp = t.JSXAttribute(
  1182. t.JSXIdentifier('on' + CHECKBOX_RADIO_TOKEN),
  1183. t.JSXExpressionContainer(
  1184. t.ArrowFunctionExpression(
  1185. [t.Identifier('$event')],
  1186. t.BlockStatement([
  1187. t.VariableDeclaration('const', [
  1188. t.VariableDeclarator(t.Identifier('$$a'), model),
  1189. t.VariableDeclarator(
  1190. t.Identifier('$$el'),
  1191. t.MemberExpression(t.Identifier('$event'), t.Identifier('target'))
  1192. ),
  1193. t.VariableDeclarator(
  1194. t.Identifier('$$c'),
  1195. t.ConditionalExpression(
  1196. t.MemberExpression(t.Identifier('$$el'), t.Identifier('checked')),
  1197. trueValue,
  1198. falseValue
  1199. )
  1200. )
  1201. ]),
  1202. t.IfStatement(
  1203. t.CallExpression(t.MemberExpression(t.Identifier('Array'), t.Identifier('isArray')), [t.Identifier('$$a')]),
  1204. t.BlockStatement([
  1205. t.VariableDeclaration('const', [
  1206. t.VariableDeclarator(
  1207. t.Identifier('$$v'),
  1208. modifier === 'number'
  1209. ? t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_n')), [value])
  1210. : value
  1211. ),
  1212. t.VariableDeclarator(
  1213. t.Identifier('$$i'),
  1214. t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_i')), [
  1215. t.Identifier('$$a'),
  1216. t.Identifier('$$v')
  1217. ])
  1218. )
  1219. ]),
  1220. t.IfStatement(
  1221. t.MemberExpression(t.Identifier('$$el'), t.Identifier('checked')),
  1222. t.BlockStatement([
  1223. t.ExpressionStatement(
  1224. t.LogicalExpression(
  1225. '&&',
  1226. t.BinaryExpression('<', t.Identifier('$$i'), t.NumericLiteral(0)),
  1227. t.AssignmentExpression(
  1228. '=',
  1229. model,
  1230. t.CallExpression(t.MemberExpression(t.Identifier('$$a'), t.Identifier('concat')), [
  1231. t.Identifier('$$v')
  1232. ])
  1233. )
  1234. )
  1235. )
  1236. ]),
  1237. t.BlockStatement([
  1238. t.ExpressionStatement(
  1239. t.LogicalExpression(
  1240. '&&',
  1241. t.BinaryExpression('>', t.Identifier('$$i'), t.UnaryExpression('-', t.NumericLiteral(1))),
  1242. t.AssignmentExpression(
  1243. '=',
  1244. model,
  1245. t.CallExpression(
  1246. t.MemberExpression(
  1247. t.CallExpression(t.MemberExpression(t.Identifier('$$a'), t.Identifier('slice')), [
  1248. t.NumericLiteral(0),
  1249. t.Identifier('$$i')
  1250. ]),
  1251. t.Identifier('concat')
  1252. ),
  1253. [
  1254. t.CallExpression(t.MemberExpression(t.Identifier('$$a'), t.Identifier('slice')), [
  1255. t.BinaryExpression('+', t.Identifier('$$i'), t.NumericLiteral(1))
  1256. ])
  1257. ]
  1258. )
  1259. )
  1260. )
  1261. )
  1262. ])
  1263. )
  1264. ]),
  1265. t.BlockStatement([genAssignmentCode(t, model, t.Identifier('$$c'))])
  1266. )
  1267. ])
  1268. )
  1269. )
  1270. );
  1271. return [checkedProp, handlerProp]
  1272. };
  1273. var genRadioModel = function genRadioModel(t, modelAttribute, model, modifier, path) {
  1274. if (modifier && modifier !== 'number') {
  1275. throw modelAttribute
  1276. .get('name')
  1277. .get('name')
  1278. .buildCodeFrameError('you can only use number modifier with input[type="radio"]')
  1279. }
  1280. var value = t.BooleanLiteral(true);
  1281. path.get('attributes').forEach(function(path) {
  1282. if (!path.node.name) {
  1283. return
  1284. }
  1285. if (path.node.name.name === 'value') {
  1286. value = getExpression(t, path);
  1287. path.remove();
  1288. }
  1289. });
  1290. var checkedProp = t.JSXAttribute(
  1291. t.JSXIdentifier('checked'),
  1292. t.JSXExpressionContainer(
  1293. t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_q')), [model, value])
  1294. )
  1295. );
  1296. var handlerProp = t.JSXAttribute(
  1297. t.JSXIdentifier('on' + CHECKBOX_RADIO_TOKEN),
  1298. t.JSXExpressionContainer(
  1299. t.ArrowFunctionExpression(
  1300. [t.Identifier('$event')],
  1301. t.BlockStatement([
  1302. genAssignmentCode(
  1303. t,
  1304. model,
  1305. modifier === 'number'
  1306. ? t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_n')), [value])
  1307. : value
  1308. )
  1309. ])
  1310. )
  1311. )
  1312. );
  1313. return [checkedProp, handlerProp]
  1314. };
  1315. var genDefaultModel = function genDefaultModel(t, modelAttribute, model, modifier, path, type) {
  1316. var needCompositionGuard = modifier !== 'lazy' && type !== 'range';
  1317. var event = modifier === 'lazy' ? 'Change' : type === 'range' ? RANGE_TOKEN : 'Input';
  1318. var valueExpression = t.MemberExpression(
  1319. t.MemberExpression(t.Identifier('$event'), t.Identifier('target')),
  1320. t.Identifier('value')
  1321. );
  1322. if (modifier === 'trim') {
  1323. valueExpression = t.CallExpression(t.MemberExpression(valueExpression, t.Identifier('trim')), []);
  1324. } else if (modifier === 'number') {
  1325. valueExpression = t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_n')), [valueExpression]);
  1326. }
  1327. var code = genAssignmentCode(t, model, valueExpression);
  1328. if (needCompositionGuard) {
  1329. code = t.BlockStatement([
  1330. t.IfStatement(
  1331. t.MemberExpression(
  1332. t.MemberExpression(t.Identifier('$event'), t.Identifier('target')),
  1333. t.Identifier('composing')
  1334. ),
  1335. t.ReturnStatement(null)
  1336. ),
  1337. code
  1338. ]);
  1339. } else {
  1340. code = t.BlockStatement([code]);
  1341. }
  1342. var valueProp = t.JSXAttribute(t.jSXIdentifier('domPropsValue'), t.JSXExpressionContainer(model));
  1343. var handlerProp = t.JSXAttribute(
  1344. t.JSXIdentifier('on' + event),
  1345. t.JSXExpressionContainer(t.ArrowFunctionExpression([t.Identifier('$event')], code))
  1346. );
  1347. var props = [valueProp, handlerProp];
  1348. if (modifier === 'trim' || modifier === 'number') {
  1349. props.push(
  1350. t.JSXAttribute(
  1351. t.JSXIdentifier('onBlur'),
  1352. t.JSXExpressionContainer(
  1353. t.ArrowFunctionExpression(
  1354. [],
  1355. t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('$forceUpdate')), [])
  1356. )
  1357. )
  1358. )
  1359. );
  1360. }
  1361. return props
  1362. };
  1363. var genComponentModel = function genComponentModel(t, modelAttribute, model, modifier, path, type) {
  1364. var baseValueExpression = t.Identifier('$$v');
  1365. var valueExpression = baseValueExpression;
  1366. if (modifier === 'trim') {
  1367. valueExpression = t.CallExpression(t.MemberExpression(valueExpression, t.Identifier('trim')), []);
  1368. } else if (modifier === 'number') {
  1369. valueExpression = t.CallExpression(t.MemberExpression(t.ThisExpression(), t.Identifier('_n')), [valueExpression]);
  1370. }
  1371. var assignment = genAssignmentCode(t, model, valueExpression);
  1372. var valueProp = t.JSXAttribute(t.jSXIdentifier('domPropsValue'), t.JSXExpressionContainer(model));
  1373. var handlerProp = t.JSXAttribute(
  1374. t.JSXIdentifier('onChange'),
  1375. t.JSXExpressionContainer(t.ArrowFunctionExpression([baseValueExpression], t.BlockStatement([assignment])))
  1376. );
  1377. return [valueProp, handlerProp]
  1378. };
  1379. var index$5 = function(babel) {
  1380. var t = babel.types;
  1381. return {
  1382. inherits: index$2,
  1383. visitor: {
  1384. JSXOpeningElement: function JSXOpeningElement(path) {
  1385. var model = null;
  1386. var modifier = null;
  1387. var modelAttribute = null;
  1388. var type = null;
  1389. var typePath = null;
  1390. path.get('attributes').forEach(function(path) {
  1391. if (!path.node.name) {
  1392. return
  1393. }
  1394. if (path.node.name.name === 'type') {
  1395. type = path.node.value.value;
  1396. typePath = path.get('value');
  1397. }
  1398. /* istanbul ignore else */
  1399. if (t.isJSXIdentifier(path.node.name)) {
  1400. if (path.node.name.name !== 'v-model') {
  1401. return
  1402. }
  1403. } else if (t.isJSXNamespacedName(path.node.name)) {
  1404. if (path.node.name.namespace.name !== 'v-model') {
  1405. return
  1406. }
  1407. if (!~allowedModifiers.indexOf(path.node.name.name.name)) {
  1408. throw path
  1409. .get('name')
  1410. .get('name')
  1411. .buildCodeFrameError('v-model does not support "' + path.node.name.name.name + '" modifier')
  1412. }
  1413. modifier = path.node.name.name.name;
  1414. } else {
  1415. return
  1416. }
  1417. modelAttribute = path;
  1418. if (model) {
  1419. throw path.buildCodeFrameError('you can not have multiple v-model directives on a single element')
  1420. }
  1421. if (!t.isJSXExpressionContainer(path.node.value)) {
  1422. throw path.get('value').buildCodeFrameError('you should use JSX Expression with v-model')
  1423. }
  1424. if (!t.isMemberExpression(path.node.value.expression)) {
  1425. throw path
  1426. .get('value')
  1427. .get('expression')
  1428. .buildCodeFrameError('you should use MemberExpression with v-model')
  1429. }
  1430. model = path.node.value.expression;
  1431. });
  1432. if (!model) {
  1433. return
  1434. }
  1435. var tag = path.node.name.name;
  1436. if (tag === 'input' && typePath && t.isJSXExpressionContainer(typePath.node)) {
  1437. throw typePath.buildCodeFrameError('you can not use dynamic type with v-model')
  1438. }
  1439. if (tag === 'input' && type === 'file') {
  1440. throw typePath.buildCodeFrameError('you can not use "file" type with v-model')
  1441. }
  1442. var replacement = null;
  1443. if (tag === 'select') {
  1444. replacement = genSelectModel(t, modelAttribute, model, modifier);
  1445. } else if (tag === 'input' && type === 'checkbox') {
  1446. replacement = genCheckboxModel(t, modelAttribute, model, modifier, path);
  1447. } else if (tag === 'input' && type === 'radio') {
  1448. replacement = genRadioModel(t, modelAttribute, model, modifier, path);
  1449. } else if (tag === 'input' || tag === 'textarea') {
  1450. replacement = genDefaultModel(t, modelAttribute, model, modifier, path, type);
  1451. } else if (!isReservedTag(tag)) {
  1452. replacement = genComponentModel(t, modelAttribute, model, modifier, path);
  1453. } else {
  1454. throw path.buildCodeFrameError('you can not use "' + tag + '" with v-model')
  1455. }
  1456. modelAttribute.replaceWithMultiple(replacement.concat( [t.JSXSpreadAttribute(
  1457. t.ObjectExpression([
  1458. t.ObjectProperty(
  1459. t.Identifier('directives'),
  1460. t.ArrayExpression([
  1461. t.ObjectExpression([
  1462. t.ObjectProperty(t.Identifier('name'), t.StringLiteral('model')),
  1463. t.ObjectProperty(t.Identifier('value'), model)
  1464. ])
  1465. ])
  1466. )
  1467. ])
  1468. )]
  1469. ));
  1470. }
  1471. }
  1472. }
  1473. };
  1474. var index$10 = function (babel) {
  1475. var t = babel.types;
  1476. return {
  1477. inherits: index$2,
  1478. visitor: {
  1479. Program: function Program (path) {
  1480. path.traverse({
  1481. 'VariableDeclaration': function VariableDeclaration (path) {
  1482. if (path.node.declarations.length !== 1 ||
  1483. !t.isVariableDeclarator(path.node.declarations[0]) ||
  1484. !t.isArrowFunctionExpression(path.node.declarations[0].init)) {
  1485. return
  1486. }
  1487. var jsxChecker = {
  1488. hasJsx: false
  1489. };
  1490. path.traverse({
  1491. JSXElement: function JSXElement () {
  1492. this.hasJsx = true;
  1493. }
  1494. }, jsxChecker);
  1495. if (!jsxChecker.hasJsx) {
  1496. return
  1497. }
  1498. var name = path.node.declarations[0].id.name;
  1499. var params = [t.identifier('h') ].concat( path.node.declarations[0].init.params);
  1500. var body = path.node.declarations[0].init.body;
  1501. var isDevEnv = process.env.NODE_ENV === 'development';
  1502. var props = [
  1503. t.objectProperty(
  1504. t.identifier('functional'),
  1505. t.booleanLiteral(true)
  1506. ),
  1507. t.objectProperty(
  1508. t.identifier('render'),
  1509. t.arrowFunctionExpression(params, body)
  1510. )
  1511. ];
  1512. if (isDevEnv) {
  1513. props.unshift(
  1514. t.objectProperty(
  1515. t.identifier('name'),
  1516. t.stringLiteral(name)
  1517. )
  1518. );
  1519. }
  1520. path.replaceWith(
  1521. t.variableDeclaration(
  1522. 'const',
  1523. [
  1524. t.variableDeclarator(
  1525. t.identifier(name),
  1526. t.objectExpression(
  1527. props
  1528. )
  1529. )
  1530. ]
  1531. ),
  1532. []
  1533. );
  1534. }
  1535. });
  1536. }
  1537. }
  1538. }
  1539. };
  1540. var index = {
  1541. plugins: [
  1542. bundle,
  1543. index$5,
  1544. index$10,
  1545. index$1
  1546. ]
  1547. };
  1548. return index;
  1549. })));