From 2287643c7d81a2c119d2d595bad4774ab1ebbcd2 Mon Sep 17 00:00:00 2001 From: Ilya Shkuratov Date: Fri, 14 Jul 2017 11:54:21 +0300 Subject: [PATCH] Do not filter valid non-latin symbols, while normalizing module names. --- build/amdclean.js | 16 ++++++----- build/amdclean.min.js | 7 ++--- package.json | 2 +- src/amdclean.js | 16 ++++++----- src/modules/normalizeModuleName.js | 7 ++++- src/modules/utils.js | 6 ++++- test/specs/convert.js | 43 ++++++++++++++++++++++++++++++ 7 files changed, 79 insertions(+), 18 deletions(-) diff --git a/build/amdclean.js b/build/amdclean.js index 0a251db..9e9fd40 100644 --- a/build/amdclean.js +++ b/build/amdclean.js @@ -1,6 +1,6 @@ -/*! amdclean - v2.7.0 - 2016-02-08 +/*! amdclean - v2.7.1 - 2017-07-14 * http://gregfranko.com/amdclean -* Copyright (c) 2016 Greg Franko */ +* Copyright (c) 2017 Greg Franko */ /*The MIT License (MIT) @@ -352,7 +352,11 @@ utils = function () { ].join('/'); } return pluginName + normalizePath(pathToNormalize); - } + }, + // https://gist.github.com/mathiasbynens/6334847 + // ECMAScript 5.1 + 'invalidIdentifierStartSymbol': /^[^\$A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\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\u09FC\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\u0AF9\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-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\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-\u13F5\u13F8-\u13FD\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-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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]/, + 'invalidIdentifierTrailingSymbol': /[^\$0-9A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\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\u09FC\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\u0AF9-\u0AFF\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-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\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\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\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-\u13F5\u13F8-\u13FD\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\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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-\uFE2F\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]/g }; return Utils; }(); @@ -566,7 +570,7 @@ normalizeModuleName = function normalizeModuleName(name, moduleId) { return name; } } - preNormalized = utils.prefixReservedWords(name.replace(/\./g, '').replace(/[^A-Za-z0-9_$]/g, '_').replace(/^_+/, '')); + preNormalized = utils.prefixReservedWords(name.replace(/\./g, '').replace(utils.invalidIdentifierStartSymbol, '').replace(utils.invalidIdentifierTrailingSymbol, '_').replace(/^_+/, '')); postNormalized = prefixMode === 'camelCase' ? utils.convertToCamelCase(preNormalized) : preNormalized; if (_.isFunction(prefixTransform)) { prefixTransformValue = prefixTransform(postNormalized, name); @@ -1539,7 +1543,7 @@ clean = function clean() { }; (function () { (function (root, factory, undefined) { - + 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, and plain browser loading if (typeof define === 'function' && define.amd) { factory.amd = true; @@ -1565,7 +1569,7 @@ clean = function clean() { root.amdclean = factory(null, root); } }(this, function cleanamd(amdDependencies, context) { - + 'use strict'; // Third-Party Dependencies // Note: These dependencies are hoisted to the top (as local variables) at build time (Look in the gulpfile.js file and the AMDclean wrap option for more details) sourcemapToAst = function () { diff --git a/build/amdclean.min.js b/build/amdclean.min.js index f6dd1e4..5094bcd 100644 --- a/build/amdclean.min.js +++ b/build/amdclean.min.js @@ -1,6 +1,6 @@ -/*! amdclean - v2.7.0 - 2016-02-08 +/*! amdclean - v2.7.1 - 2017-07-14 * http://gregfranko.com/amdclean -* Copyright (c) 2016 Greg Franko */ +* Copyright (c) 2017 Greg Franko */ /*The MIT License (MIT) @@ -26,4 +26,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -!function(esprima,estraverse,escodegen,_,sourcemapToAst){var defaultOptions,errorMsgs,defaultValues,utils,convertToIIFE,convertToIIFEDeclaration,normalizeModuleName,convertToFunctionExpression,convertToObjectDeclaration,createAst,convertDefinesAndRequires,traverseAndUpdateAst,getNormalizedModuleName,findAndStoreAllModuleIds,generateCode,clean;defaultOptions={code:"",sourceMap:null,filePath:"",globalModules:[],esprima:{comment:!0,loc:!0,range:!0,tokens:!0},escodegen:{comment:!0,format:{indent:{style:" ",adjustMultilineComment:!0}}},commentCleanName:"amdclean",ignoreModules:[],removeModules:[],removeAllRequires:!1,removeUseStricts:!0,transformAMDChecks:!0,createAnonymousAMDModule:!1,shimOverrides:{},prefixMode:"standard",prefixTransform:function(e,t){return e},wrap:{start:";(function() {\n",end:"\n}());"},aggressiveOptimizations:!1,config:{}},errorMsgs={emptyCode:"There is no code to generate the AST with",emptyAst:function(e){return"An AST is not being passed to the "+e+"() method"},invalidObject:function(e){return"An object is not being passed as the first parameter to the "+e+"() method"},lodash:"Make sure you have included lodash (https://github.com/lodash/lodash).",esprima:"Make sure you have included esprima (https://github.com/ariya/esprima).",estraverse:"Make sure you have included estraverse (https://github.com/Constellation/estraverse).",escodegen:"Make sure you have included escodegen (https://github.com/Constellation/escodegen).",sourcemapToAst:"Make sure you have included sourcemapToAst (https://github.com/tarruda/sourcemap-to-ast)."},defaultValues={dependencyBlacklist:{require:"remove",exports:!0,module:"remove"},defaultLOC:{start:{line:0,column:0}},defaultRange:[0,0]},utils=function(){var Utils={isDefine:function(e){var t=e.expression||{},n=t.callee;return _.isObject(e)&&"ExpressionStatement"===e.type&&t&&"CallExpression"===t.type&&"Identifier"===n.type&&"define"===n.name},isRequire:function(e){var t=e.expression||{},n=t.callee;return e&&"ExpressionStatement"===e.type&&t&&"CallExpression"===t.type&&"Identifier"===n.type&&"require"===n.name},isModuleExports:function(e){return e?"AssignmentExpression"===e.type&&e.left&&"MemberExpression"===e.left.type&&e.left.object&&"Identifier"===e.left.object.type&&"module"===e.left.object.name&&e.left.property&&"Identifier"===e.left.property.type&&"exports"===e.left.property.name:!1},isRequireExpression:function(e){return e&&"CallExpression"===e.type&&e.callee&&"require"===e.callee.name},isObjectExpression:function(e){return e&&e&&"ObjectExpression"===e.type},isFunctionExpression:function(e){return e&&e&&"FunctionExpression"===e.type},isFunctionCallExpression:function(e){return e&&e&&"CallExpression"===e.type&&e.callee&&"FunctionExpression"===e.callee.type},isUseStrict:function(e){return e&&e&&"use strict"===e.value&&"Literal"===e.type},isIfStatement:function(e){return e&&"IfStatement"===e.type&&e.test},isAMDConditional:function(e){if(!Utils.isIfStatement(e))return!1;var t={left:{operator:"typeof",argument:{type:"Identifier",name:"define"}},right:{type:"Literal",value:"function"}},n={left:t.right,right:t.left};try{return _.find(e.test,t)||_.find([e.test],t)||_.find(e.test,n)||_.find([e.test],n)||_.find(e.test.left||{},t)||_.find([e.test.left||{}],t)||_.find(e.test.left||{},n)||_.find([e.test.left||{}],n)}catch(r){return!1}},returnExpressionIdentifier:function(e){return{type:"ExpressionStatement",expression:{type:"Identifier",name:e,range:defaultValues.defaultRange,loc:defaultValues.defaultLOC},range:defaultValues.defaultRange,loc:defaultValues.defaultLOC}},readFile:function(e){if("undefined"!=typeof exports){var t=require("fs");return t.readFileSync(e,"utf8")}return""},isRelativeFilePath:function(e){var t=e.split("/");return-1!==t.length&&("."===t[0]||".."===t[0])},convertToCamelCase:function(e,t){return t=t||"_",e.replace(new RegExp(t+"(.)","g"),function(e,t){return t.toUpperCase()})},prefixReservedWords:function(name){var reservedWord=!1;try{name.length&&eval("var "+name+" = 1;")}catch(e){reservedWord=!0}return reservedWord===!0?"_"+name:name},normalizeDependencyName:function(e,t){if(!e||!t)return t;var n=function(){if(!t||-1===t.indexOf("!"))return"";var e=t.split("!");return t=e[1],e[0]+"!"}(),r=function(e){var t,n=e.split("/");return t=_.reduce(n,function(e,t){switch(t){case".":break;case"..":e.pop();break;default:e.push(t)}return e},[]),t.join("/")},a=function(e){var t=e.split("/");return t.pop(),t.join("/")};if(!Utils.isRelativeFilePath(t))return n+t;var o=a(e),s=t;return o&&(s=[a(e),t].join("/")),n+r(s)}};return Utils}(),convertToIIFE=function(e){var t=e.callbackFuncParams,n=e.callbackFunc,r=e.dependencyNames,a=e.node,o=a.range||defaultValues.defaultRange,s=a.loc||defaultValues.defaultLOC;return{type:"ExpressionStatement",expression:{type:"CallExpression",callee:{type:"FunctionExpression",id:null,params:t,defaults:[],body:n.body,rest:n.rest,generator:n.generator,expression:n.expression,range:o,loc:s},arguments:r,range:o,loc:s},range:o,loc:s}},convertToIIFEDeclaration=function(e){var t=this,n=t.options,r=e.moduleId,a=e.moduleName,o=e.hasModuleParam,s=e.hasExportsParam,i=e.callbackFuncParams,l=e.isOptimized,u=e.callbackFunc,c=e.node,p=u.name,d=u.type,m=c.range||defaultValues.defaultRange,f=c.loc||defaultValues.defaultLOC,g=function(){var t=e.callbackFunc;return"Identifier"===d&&"undefined"!==p&&(t={type:"FunctionExpression",id:null,params:[],defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:{type:"ConditionalExpression",test:{type:"BinaryExpression",operator:"===",left:{type:"UnaryExpression",operator:"typeof",argument:{type:"Identifier",name:p,range:m,loc:f},prefix:!0,range:m,loc:f},right:{type:"Literal",value:"function",raw:"'function'",range:m,loc:f},range:m,loc:f},consequent:{type:"CallExpression",callee:{type:"Identifier",name:p,range:m,loc:f},arguments:i,range:m,loc:f},alternate:{type:"Identifier",name:p,range:m,loc:f},range:m,loc:f},range:m,loc:f}],range:m,loc:f},rest:null,generator:!1,expression:!1,range:m,loc:f}),t}(),y=function(){var t,a=e.dependencyNames,i={type:"ObjectExpression",properties:[],range:m,loc:f},l={type:"MemberExpression",computed:!0,object:{type:"Identifier",name:"modules"},property:{type:"Literal",value:r}};if(n.config&&n.config[r]){if(s&&o)return[i,i,l];o&&(t=_.findIndex(a,function(e){return"{}"===e.name}),a[t]=l)}return a}(),h=function(){return"Literal"===g.type||"Identifier"===g.type&&"undefined"===g.name||l===!0?g:{type:"CallExpression",callee:{type:"FunctionExpression",id:{type:"Identifier",name:"",range:m,loc:f},params:i,defaults:[],body:g.body,rest:g.rest,generator:g.generator,expression:g.expression,range:m,loc:f},arguments:y,range:m,loc:f}}(),v={type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:n.IIFEVariableNameTransform?n.IIFEVariableNameTransform(a,r):a,range:m,loc:f},right:h,range:m,loc:f},range:m,loc:f};return estraverse.replace(g,{enter:function(e){return utils.isModuleExports(e)?{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:"exports"},right:e.right}:e}}),v},normalizeModuleName=function(e,t){var n,r,a,o=this,s=o.options,i=s.prefixMode,l=s.prefixTransform,u=defaultValues.dependencyBlacklist;return e=e||"","{}"===e?"remove"===u[e]?"":e:(r=utils.prefixReservedWords(e.replace(/\./g,"").replace(/[^A-Za-z0-9_$]/g,"_").replace(/^_+/,"")),a="camelCase"===i?utils.convertToCamelCase(r):r,_.isFunction(l)&&(n=l(a,e),_.isString(n)&&n.length)?n:a)},convertToFunctionExpression=function(e){var t,n,r,a=this,o=a.options,s=o.ignoreModules,i=e.node,l=e.isDefine,u=e.isRequire,c=!1,p=e.moduleName,d=e.moduleId,m=e.dependencies,f=m.length,g=o.aggressiveOptimizations,y=[],h=[],v=defaultValues.defaultRange,b=defaultValues.defaultLOC,x=e.range||v,E=e.loc||b,M=e.shouldOptimize,A=defaultValues.dependencyBlacklist,I=!1,O=function(){var t,n,r,s,i=e.moduleReturnValue;if(i&&"FunctionExpression"===i.type&&i.body&&_.isArray(i.body.body)&&i.body.body.length){if(t=_.filter(i.body.body,function(e){return o.removeUseStricts===!0?!utils.isUseStrict(e.expression):e}),i.body.body=t,n=_.where(t,{type:"ReturnStatement"}),y=_.where(t,{left:{type:"Identifier",name:"exports"}}),h=_.where(t,{left:{type:"MemberExpression",object:{type:"Identifier",name:"module"},property:{type:"Identifier",name:"exports"}}}),n.length){if(r=n[0],s=r.argument,I=function(){var e=!1;return _.each(i.params,function(t){var n=t.name;a.storedModules[n]||A[n]||(e=!0)}),e}(),I||!M||!utils.isFunctionExpression(r)&&t.length>1||s&&"Identifier"===s.type)return i;i=s,c=!0,i.params&&(f=i.params.length)}}else i&&"FunctionExpression"===i.type&&i.body&&_.isArray(i.body.body)&&0===i.body.body.length&&(i={type:"Identifier",name:"undefined",range:x,loc:E},f=0);return i}(),w=function(){var e=[];return O&&O.body&&_.isArray(O.body.body)&&(e=_.where(O.body.body,{type:"ReturnStatement"}),e.length)?!0:!1}(),j=function(){var e=O.params||[];return _.where(e,{name:"exports"}).length}(),N=function(){var e=O.params||[];return _.where(e,{name:"module"}).length}(),R={},F=function(){var e,t=[];return _.each(m,function(n){e=normalizeModuleName.call(a,utils.normalizeDependencyName(d,n),d),R[e]=!0,t.push({type:"Identifier",name:e,range:v,loc:b})}),t}(),C=function P(e){e="_"+e+"_";var t=function(){var t=!1;return R[e]?t=!0:estraverse.traverse(O,{enter:function(n){"VariableDeclarator"===n.type&&n.id&&"Identifier"===n.id.type&&n.id.name===e&&(t=!0)}}),t}();return t?P(e):e},S=function(){var e=[];return j&&estraverse.traverse(O,{enter:function(t){var n,r;"VariableDeclarator"===t.type&&utils.isRequireExpression(t.init)&&t.id&&t.id.name&&t.init&&t.init.arguments&&t.init.arguments[0]&&t.init.arguments[0].value&&(n=t.id.name,r=normalizeModuleName.call(a,utils.normalizeDependencyName(d,t.init.arguments[0].value,d)),_.contains(s,r)||n!==r||e.push({originalName:r,newName:C(r),range:t.range||v,loc:t.loc||b}))}}),e}(),T=function(){var e=[];return _.each(S,function(t){e.push({type:"Identifier",name:t.newName?t.newName:t,range:t.range,loc:t.loc})}),e}(),V=function(){var e,n,r=[],o=_.union(O.params&&O.params.length?O.params:!M&&F&&F.length?F:[],T),s={},i=[];if(O.body){if(estraverse.traverse(O.body,{enter:function(e,t){("FunctionExpression"==e.type||"FunctionDeclaration"==e.type)&&i.push(e)}}),i.length)for(var l=O.body.range[0];l=e.range[1])&&(n+=a.options.code[l])});else n=a.options.code.substring(O.body.range[0],O.body.range[1]);/[^\w0-9_]arguments[^\w0-9_]/.test(n)&&(o=o.concat(F.slice(o.length)))}return _.each(o,function(t,n){e=t?t.name:F[n].name,M||"{}"===e?"{}"===e||j&&"remove"===defaultValues.dependencyBlacklist[e]||(r.push({type:"Identifier",name:e,range:v,loc:b}),c||g!==!0||a.storedModules[e]||!F[n]||(a.callbackParameterMap[F[n].name]?(s=_.where(a.callbackParameterMap[F[n].name],{name:e}),s.length?(s=s[0],s.count+=1):a.callbackParameterMap[F[n].name].push({name:e,count:1})):a.callbackParameterMap[F[n].name]=[{name:e,count:1}])):r.push({type:"Identifier",name:e,range:v,loc:b})}),t=r,_.filter(r||[],function(e){return g===!0&&M?!a.storedModules[e.name]:!0})}(),k=!w&&j,D=y.length||h.length;return F=_.filter(F||[],function(e,n){var r=t[n],o=e.name;return g===!0&&M?!r||a.storedModules[r.name]&&r.name===o?!a.storedModules[o]:!a.storedModules[r.name]:!0}),F=_.map(F||[],function(e,t){return A[e.name]&&(e.name="{}"),e}),n=F.length,r=V.length,n>r&&F.splice(r,n-r),k&&D&&O.body.body.push({type:"ReturnStatement",argument:{type:"Identifier",name:"exports",range:v,loc:b},range:v,loc:b}),estraverse.replace(O,{enter:function(e){var t,n;return utils.isRequireExpression(e)?e.arguments&&e.arguments[0]&&e.arguments[0].value?(t=normalizeModuleName.call(a,utils.normalizeDependencyName(d,e.arguments[0].value,d)),_.contains(s,t)?e:(_.where(S,{originalName:t}).length&&(n=_.where(S,{originalName:t})[0].newName),{type:"Identifier",name:n?n:t,range:e.range||v,loc:e.loc||b})):e:void 0}}),l?convertToIIFEDeclaration.call(a,{moduleId:d,moduleName:p,dependencyNames:F,callbackFuncParams:V,hasModuleParam:N,hasExportsParam:j,callbackFunc:O,isOptimized:c,node:i}):u?convertToIIFE.call(a,{dependencyNames:F,callbackFuncParams:V,callbackFunc:O,node:i}):void 0},convertToObjectDeclaration=function(e,t){var n=e.node,r=defaultValues.defaultRange,a=defaultValues.defaultLOC,o=n.range||r,s=n.loc||a,i=e.moduleName,l=function(){var n,r,a,i,l,u;return"functionCallExpression"===t&&(n=e.moduleReturnValue,r=n.callee,a=r.params,a&&a.length&&_.isArray(a)&&_.where(a,{name:"global"})&&_.isObject(r.body)&&_.isArray(r.body.body)&&(i=_.where(r.body.body,{type:"ReturnStatement"})[0],_.isObject(i)&&_.isObject(i.argument)&&"FunctionExpression"===i.argument.type&&(u=i.argument,_.isObject(u.body)&&_.isArray(u.body.body)&&(l=_.where(u.body.body,{type:"ReturnStatement"})[0],_.isObject(l.argument)&&_.isObject(l.argument.right)&&_.isObject(l.argument.right.property)&&l.argument.right.property.name&&(n={type:"MemberExpression",computed:!1,object:{type:"Identifier",name:"window",range:o,loc:s},property:{type:"Identifier",name:l.argument.right.property.name,range:o,loc:s},range:o,loc:s}))))),n=n||e.moduleReturnValue}(),u={type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:i,range:o,loc:s},right:l,range:o,loc:s},range:o,loc:s};return u},createAst=function(e){var t=this,n=t.options,r=n.filePath,a=e||n.code||(r?utils.readFile(r):""),o=n.esprima,s=n.escodegen;if(a){if(!_.isPlainObject(esprima)||!_.isFunction(esprima.parse))throw new Error(errorMsgs.esprima);var i=esprima.parse(a,o);if(n.sourceMap&&sourcemapToAst(i,n.sourceMap),o.comment===!0&&s.comment===!0)try{i=escodegen.attachComments(i,i.comments,i.tokens)}catch(l){}return i}throw new Error(errorMsgs.emptyCode)},convertDefinesAndRequires=function(e,t){var n,r,a,o,s,i,l,u,c,p,d=this,m=d.options,f=utils.isDefine(e),g=utils.isRequire(e),y=!1,h="",v=defaultValues.defaultRange,b=defaultValues.defaultLOC,x=e.range||v,E=e.loc||b,M=defaultValues.dependencyBlacklist;if(l=f||g?e.expression.loc.start.line:e&&e.loc&&e.loc.start?e.loc.start.line:null,u=d.matchingCommentLineNumbers[l]||d.matchingCommentLineNumbers[l-1],utils.isAMDConditional(e)&&(estraverse.traverse(e,{enter:function(e){var t;utils.isDefine(e)&&e.expression&&e.expression.arguments&&e.expression.arguments.length&&"Literal"===e.expression.arguments[0].type&&e.expression.arguments[0].value&&(t=normalizeModuleName.call(d,e.expression.arguments[0].value),m.transformAMDChecks!==!0?d.conditionalModulesToIgnore[t]=!0:d.conditionalModulesToNotOptimize[t]=!0,m.createAnonymousAMDModule===!0&&(d.storedModules[t]=!1,e.expression.arguments.shift()))}}),!u&&m.transformAMDChecks===!0))return e.test={type:"Literal",value:!0,raw:"true",range:x,loc:E},e;if(!f&&!g)return"FunctionExpression"===e.type&&_.isArray(e.params)&&_.where(e.params,{type:"Identifier",name:"exports"}).length&&_.isObject(e.body)&&_.isArray(e.body.body)&&!_.where(e.body.body,{type:"ReturnStatement"}).length&&(c=function(){return t&&t.arguments&&t&&t.arguments&&t.arguments.length?_.where(t.arguments,{type:"FunctionExpression"}).length:!1}(),c&&e.body.body.unshift({type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:"exports",range:v,loc:b},right:{type:"LogicalExpression",operator:"||",left:{type:"Identifier",name:"exports",range:v,loc:b},right:{type:"ObjectExpression",properties:[],range:v,loc:b},range:v,loc:b},range:v,loc:b},range:v,loc:b}),e.body.body.push({type:"ReturnStatement",argument:{type:"Identifier",name:"exports",range:v,loc:b},range:v,loc:b})),e;if(r=Array.prototype.slice.call(e.expression.arguments,0),o=g?r[1]:r[r.length-1],s=e.expression.arguments[0].value,n=normalizeModuleName.call(d,s),p=!d.conditionalModulesToNotOptimize[n],a=function(){var e,t=g?r[0]:r[r.length-2],a=[];return t=_.isPlainObject(t)?t.elements||[]:[],e=_.where(t,{value:"exports"}).length,_.isArray(t)&&t.length&&_.each(t,function(t){M[t.value]&&!p?a.push(t.value):"remove"!==M[t.value]?"exports"===t.value?(a.push(n),d.exportsModules[n]=!0):a.push(M[t.value]?"{}":t.value):e||a.push("{}")}),a}(),i={node:e,moduleName:n,moduleId:s,dependencies:a,moduleReturnValue:o,isDefine:f,isRequire:g,range:x,loc:E,shouldOptimize:p},f){if(u||!n||d.conditionalModulesToIgnore[n]===!0)return d.options.ignoreModules.push(n),e;if(_.contains(m.removeModules,n))return{type:"EmptyStatement"};if(_.isObject(m.shimOverrides)&&m.shimOverrides[s]?(i.moduleReturnValue=createAst.call(d,m.shimOverrides[s]),_.isArray(i.moduleReturnValue.body)&&_.isObject(i.moduleReturnValue.body[0])?_.isObject(i.moduleReturnValue.body[0].expression)&&(i.moduleReturnValue=i.moduleReturnValue.body[0].expression,h="objectExpression"):i.moduleReturnValue=o):i.moduleReturnValue&&"Identifier"===i.moduleReturnValue.type&&(h="functionExpression"),_.contains(m.ignoreModules,n))return e;if(utils.isFunctionExpression(o)||"functionExpression"===h)return convertToFunctionExpression.call(d,i);if(utils.isObjectExpression(o)||"objectExpression"===h)return convertToObjectDeclaration.call(d,i);if(utils.isFunctionCallExpression(o))return convertToObjectDeclaration.call(d,i,"functionCallExpression")}else if(g)return u?e:(y=_.isArray(e.expression.arguments)&&e.expression.arguments.length?e.expression.arguments[1]&&e.expression.arguments[1].body&&e.expression.arguments[1].body.body&&e.expression.arguments[1].body.body.length:!1,m.removeAllRequires!==!0&&y?convertToFunctionExpression.call(d,i):{type:"EmptyStatement",range:x,loc:E})},traverseAndUpdateAst=function(e){var t=this,n=t.options,r=e.ast;if(!_.isPlainObject(e))throw new Error(errorMsgs.invalidObject("traverseAndUpdateAst"));if(!r)throw new Error(errorMsgs.emptyAst("traverseAndUpdateAst"));if(!_.isPlainObject(estraverse)||!_.isFunction(estraverse.replace))throw new Error(errorMsgs.estraverse);return estraverse.replace(r,{enter:function(e,r){var a;return"Program"===e.type?(a=function(){var r=[];return t.comments=e.comments,_.each(e.comments,function(e){var t=e.value.trim();t===n.commentCleanName&&r.push(e)}),r}(),_.each(a,function(e){currentLineNumber=e.loc.start.line,t.matchingCommentLineNumbers[currentLineNumber]=!0}),e):convertDefinesAndRequires.call(t,e,r)},leave:function(e){return e}}),r},getNormalizedModuleName=function(e){if(utils.isDefine(e)){var t=this,n=e.expression.arguments[0].value,r=normalizeModuleName.call(t,n);return r}},findAndStoreAllModuleIds=function(e){var t=this;if(!e)throw new Error(errorMsgs.emptyAst("findAndStoreAllModuleIds"));if(!_.isPlainObject(estraverse)||!_.isFunction(estraverse.traverse))throw new Error(errorMsgs.estraverse);estraverse.traverse(e,{enter:function(e,n){var r=getNormalizedModuleName.call(t,e,n);r&&!t.storedModules[r]&&(t.storedModules[r]=!0),"ReturnStatement"===e.type&&e.argument&&e.argument.callee&&"define"===e.argument.callee.name&&(e.type="ExpressionStatement",e.expression=e.argument,delete e.argument)}})},generateCode=function(e){var t=this,n=t.options,r=n.escodegen||{};if(!_.isPlainObject(escodegen)||!_.isFunction(escodegen.generate))throw new Error(errorMsgs.escodegen);return escodegen.generate(e,r)},clean=function(){var e,t=this,n=t.options,r=n.ignoreModules,a={},o={},s={},i=[],l={},u={},c=defaultValues.defaultRange,p=defaultValues.defaultLOC;return void 0!==n.ignoreModules&&(n.ignoreModules=n.ignoreModules.map(function(e){return normalizeModuleName.call(t,e)})),a=createAst.call(t),findAndStoreAllModuleIds.call(t,a),o=traverseAndUpdateAst.call(t,{ast:a}),o&&_.isArray(o.body)&&estraverse.replace(o,{enter:function(e,a){var o,s,i,l=e&&e.left&&e.left.name?e.left.name:"",u=e.right,d=[],m={},f=_.filter(t.callbackParameterMap[l],function(e){return e&&e.count>1}),g=[];if(void 0===e||"EmptyStatement"===e.type)_.each(a.body,function(e,t){(void 0===e||"EmptyStatement"===e.type)&&a.body.splice(t,1)});else{if(utils.isRequireExpression(e))return e.arguments&&e.arguments[0]&&e.arguments[0].value?(o=normalizeModuleName.call(t,e.arguments[0].value),-1===r.indexOf(o)?{type:"Identifier",name:o,range:e.range||c,loc:e.loc||p}:e):e;if(n.aggressiveOptimizations===!0&&"AssignmentExpression"===e.type&&l&&(i=_.map(u&&u.callee&&u.callee.params?u.callee.params:[],function(e){return e.name}),s=_.map(u.arguments,function(e){return e.name}),_.each(s,function(e){_.each(t.callbackParameterMap[e],function(e){var t=e.name,n=e.count;_.each(i,function(e,r){n>1&&t===e&&g.push(r)})})}),_.each(g,function(e){u.arguments.splice(e,e+1),u.callee.params.splice(e,e+1)}),t.callbackParameterMap[l]))return e.right=function(){return n.aggressiveOptimizations===!0&&f.length?(d=_.map(f,function(e,t){return{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:e.name,range:c,loc:p},right:t1&&(e=t.name,n[e]=!0)})}),n}(),l=_.merge(_.cloneDeep(_.reduce(t.storedModules,function(e,t,n){return t!==!1&&(e[n]=!0),e},{})),u),_.each(l,function(e,r){if(!_.contains(n.ignoreModules,r)){var a=t.exportsModules[r]!==!0?null:{type:"ObjectExpression",properties:[]};i.push({type:"VariableDeclarator",id:{type:"Identifier",name:r,range:c,loc:p},init:a,range:c,loc:p})}}),_.isObject(n.config)&&!_.isEmpty(n.config)&&(s=function(){var e=[];return _.each(n.config,function(r,a){var o=n.config[a];e.push({type:"Property",key:{type:"Literal",value:a},value:{type:"ObjectExpression",properties:[{type:"Property",key:{type:"Literal",value:"config"},value:{type:"FunctionExpression",id:null,params:[],defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:createAst.call(t,"var x ="+JSON.stringify(o)).body[0].declarations[0].init}]}},kind:"init"}]}})}),{type:"VariableDeclarator",id:{type:"Identifier",name:"modules"},init:{type:"ObjectExpression",properties:e}}}(),i.push(s)),i.length&&o.body.unshift({type:"VariableDeclaration",declarations:i,kind:"var",range:c,loc:p}),e=generateCode.call(t,o),_.isObject(n.wrap)&&(_.isString(n.wrap.start)&&n.wrap.start.length&&(e=n.wrap.start+e),_.isString(n.wrap.end)&&n.wrap.end.length&&(e+=n.wrap.end)),e},function(){!function(e,t,n){"function"==typeof define&&define.amd?(t.amd=!0,define(["esprima","estraverse","escodegen","underscore","sourcemap-to-ast"],function(n,r,a,o,s){return t({esprima:n,estraverse:r,escodegen:a,underscore:o,sourcemapToAst:s},e)})):"undefined"!=typeof exports?(t.commonjs=!0,module.exports=t(null,e)):e.amdclean=t(null,e)}(this,function e(t,n){sourcemapToAst=function(){return e.amd&&t&&t.sourcemapToAst?t.sourcemapToAst:e.commonjs?require("sourcemap-to-ast"):n&&n.sourcemapToAst?n.sourcemapToAst:void 0}(),esprima=function(){return e.amd&&t&&t.esprima&&t.esprima.parse?t.esprima:e.commonjs?require("esprima"):n&&n.esprima&&n.esprima.parse?n.esprima:void 0}(),estraverse=function(){return e.amd&&t&&t.estraverse&&t.estraverse.traverse?t.estraverse:e.commonjs?require("estraverse"):n&&n.estraverse&&n.estraverse.traverse?n.estraverse:void 0}(),escodegen=function(){return e.amd&&t&&t.escodegen&&t.escodegen.generate?t.escodegen:e.commonjs?require("escodegen"):n&&n.escodegen&&n.escodegen.generate?n.escodegen:void 0}(),_=function(){return e.amd&&t&&(t.underscore||t.lodash||t._)?t.underscore||t.lodash||t._:e.commonjs?require("lodash"):n&&n._?n._:void 0}();var r=function(e,t){if(!esprima)throw new Error(errorMsgs.esprima);if(!estraverse)throw new Error(errorMsgs.estraverse);if(!escodegen)throw new Error(errorMsgs.escodegen);if(!_)throw new Error(errorMsgs.lodash);if(!sourcemapToAst&&"undefined"==typeof window)throw new Error(errorMsgs.sourcemapToAst);var n=_.cloneDeep(this.defaultOptions||{}),r=e||t||{};!_.isPlainObject(e)&&_.isString(e)&&(r=_.merge({code:e},_.isObject(t)?t:{})),this.storedModules={},this.originalAst={},this.callbackParameterMap={},this.conditionalModulesToIgnore={},this.conditionalModulesToNotOptimize={},this.matchingCommentLineNumbers={},this.comments=[],this.exportsModules={},this.options=_.merge(n,r)},a={VERSION:"2.7.0",clean:function(e,t){var n=new r(e,t),a=n.clean();return a}};return r.prototype={clean:clean,defaultOptions:defaultOptions},a})}()}("undefined"!=typeof esprima?esprima:null,"undefined"!=typeof estraverse?estraverse:null,"undefined"!=typeof escodegen?escodegen:null,"undefined"!=typeof _?_:null,"undefined"!=typeof sourcemapToAst?sourcemapToAst:null); \ No newline at end of file +!function(esprima,estraverse,escodegen,_,sourcemapToAst){var defaultOptions,errorMsgs,defaultValues,utils,convertToIIFE,convertToIIFEDeclaration,normalizeModuleName,convertToFunctionExpression,convertToObjectDeclaration,createAst,convertDefinesAndRequires,traverseAndUpdateAst,getNormalizedModuleName,findAndStoreAllModuleIds,generateCode,clean;defaultOptions={code:"",sourceMap:null,filePath:"",globalModules:[],esprima:{comment:!0,loc:!0,range:!0,tokens:!0},escodegen:{comment:!0,format:{indent:{style:" ",adjustMultilineComment:!0}}},commentCleanName:"amdclean",ignoreModules:[],removeModules:[],removeAllRequires:!1,removeUseStricts:!0,transformAMDChecks:!0,createAnonymousAMDModule:!1,shimOverrides:{},prefixMode:"standard",prefixTransform:function(e,u){return e},wrap:{start:";(function() {\n",end:"\n}());"},aggressiveOptimizations:!1,config:{}},errorMsgs={emptyCode:"There is no code to generate the AST with",emptyAst:function(e){return"An AST is not being passed to the "+e+"() method"},invalidObject:function(e){return"An object is not being passed as the first parameter to the "+e+"() method"},lodash:"Make sure you have included lodash (https://github.com/lodash/lodash).",esprima:"Make sure you have included esprima (https://github.com/ariya/esprima).",estraverse:"Make sure you have included estraverse (https://github.com/Constellation/estraverse).",escodegen:"Make sure you have included escodegen (https://github.com/Constellation/escodegen).",sourcemapToAst:"Make sure you have included sourcemapToAst (https://github.com/tarruda/sourcemap-to-ast)."},defaultValues={dependencyBlacklist:{require:"remove",exports:!0,module:"remove"},defaultLOC:{start:{line:0,column:0}},defaultRange:[0,0]},utils=function(){var Utils={isDefine:function(e){var u=e.expression||{},t=u.callee;return _.isObject(e)&&"ExpressionStatement"===e.type&&u&&"CallExpression"===u.type&&"Identifier"===t.type&&"define"===t.name},isRequire:function(e){var u=e.expression||{},t=u.callee;return e&&"ExpressionStatement"===e.type&&u&&"CallExpression"===u.type&&"Identifier"===t.type&&"require"===t.name},isModuleExports:function(e){return e?"AssignmentExpression"===e.type&&e.left&&"MemberExpression"===e.left.type&&e.left.object&&"Identifier"===e.left.object.type&&"module"===e.left.object.name&&e.left.property&&"Identifier"===e.left.property.type&&"exports"===e.left.property.name:!1},isRequireExpression:function(e){return e&&"CallExpression"===e.type&&e.callee&&"require"===e.callee.name},isObjectExpression:function(e){return e&&e&&"ObjectExpression"===e.type},isFunctionExpression:function(e){return e&&e&&"FunctionExpression"===e.type},isFunctionCallExpression:function(e){return e&&e&&"CallExpression"===e.type&&e.callee&&"FunctionExpression"===e.callee.type},isUseStrict:function(e){return e&&e&&"use strict"===e.value&&"Literal"===e.type},isIfStatement:function(e){return e&&"IfStatement"===e.type&&e.test},isAMDConditional:function(e){if(!Utils.isIfStatement(e))return!1;var u={left:{operator:"typeof",argument:{type:"Identifier",name:"define"}},right:{type:"Literal",value:"function"}},t={left:u.right,right:u.left};try{return _.find(e.test,u)||_.find([e.test],u)||_.find(e.test,t)||_.find([e.test],t)||_.find(e.test.left||{},u)||_.find([e.test.left||{}],u)||_.find(e.test.left||{},t)||_.find([e.test.left||{}],t)}catch(n){return!1}},returnExpressionIdentifier:function(e){return{type:"ExpressionStatement",expression:{type:"Identifier",name:e,range:defaultValues.defaultRange,loc:defaultValues.defaultLOC},range:defaultValues.defaultRange,loc:defaultValues.defaultLOC}},readFile:function(e){if("undefined"!=typeof exports){var u=require("fs");return u.readFileSync(e,"utf8")}return""},isRelativeFilePath:function(e){var u=e.split("/");return-1!==u.length&&("."===u[0]||".."===u[0])},convertToCamelCase:function(e,u){return u=u||"_",e.replace(new RegExp(u+"(.)","g"),function(e,u){return u.toUpperCase()})},prefixReservedWords:function(name){var reservedWord=!1;try{name.length&&eval("var "+name+" = 1;")}catch(e){reservedWord=!0}return reservedWord===!0?"_"+name:name},normalizeDependencyName:function(e,u){if(!e||!u)return u;var t=function(){if(!u||-1===u.indexOf("!"))return"";var e=u.split("!");return u=e[1],e[0]+"!"}(),n=function(e){var u,t=e.split("/");return u=_.reduce(t,function(e,u){switch(u){case".":break;case"..":e.pop();break;default:e.push(u)}return e},[]),u.join("/")},r=function(e){var u=e.split("/");return u.pop(),u.join("/")};if(!Utils.isRelativeFilePath(u))return t+u;var a=r(e),o=u;return a&&(o=[r(e),u].join("/")),t+n(o)},invalidIdentifierStartSymbol:/^[^\$A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\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\u09FC\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\u0AF9\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-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\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-\u13F5\u13F8-\u13FD\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-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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]/,invalidIdentifierTrailingSymbol:/[^\$0-9A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\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\u09FC\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\u0AF9-\u0AFF\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-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\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\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\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-\u13F5\u13F8-\u13FD\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\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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-\uFE2F\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]/g};return Utils}(),convertToIIFE=function(e){var u=e.callbackFuncParams,t=e.callbackFunc,n=e.dependencyNames,r=e.node,a=r.range||defaultValues.defaultRange,o=r.loc||defaultValues.defaultLOC;return{type:"ExpressionStatement",expression:{type:"CallExpression",callee:{type:"FunctionExpression",id:null,params:u,defaults:[],body:t.body,rest:t.rest,generator:t.generator,expression:t.expression,range:a,loc:o},arguments:n,range:a,loc:o},range:a,loc:o}},convertToIIFEDeclaration=function(e){var u=this,t=u.options,n=e.moduleId,r=e.moduleName,a=e.hasModuleParam,o=e.hasExportsParam,s=e.callbackFuncParams,i=e.isOptimized,l=e.callbackFunc,A=e.node,c=l.name,p=l.type,d=A.range||defaultValues.defaultRange,F=A.loc||defaultValues.defaultLOC,m=function(){var u=e.callbackFunc;return"Identifier"===p&&"undefined"!==c&&(u={type:"FunctionExpression",id:null,params:[],defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:{type:"ConditionalExpression",test:{type:"BinaryExpression",operator:"===",left:{type:"UnaryExpression",operator:"typeof",argument:{type:"Identifier",name:c,range:d,loc:F},prefix:!0,range:d,loc:F},right:{type:"Literal",value:"function",raw:"'function'",range:d,loc:F},range:d,loc:F},consequent:{type:"CallExpression",callee:{type:"Identifier",name:c,range:d,loc:F},arguments:s,range:d,loc:F},alternate:{type:"Identifier",name:c,range:d,loc:F},range:d,loc:F},range:d,loc:F}],range:d,loc:F},rest:null,generator:!1,expression:!1,range:d,loc:F}),u}(),f=function(){var u,r=e.dependencyNames,s={type:"ObjectExpression",properties:[],range:d,loc:F},i={type:"MemberExpression",computed:!0,object:{type:"Identifier",name:"modules"},property:{type:"Literal",value:n}};if(t.config&&t.config[n]){if(o&&a)return[s,s,i];a&&(u=_.findIndex(r,function(e){return"{}"===e.name}),r[u]=i)}return r}(),D=function(){return"Literal"===m.type||"Identifier"===m.type&&"undefined"===m.name||i===!0?m:{type:"CallExpression",callee:{type:"FunctionExpression",id:{type:"Identifier",name:"",range:d,loc:F},params:s,defaults:[],body:m.body,rest:m.rest,generator:m.generator,expression:m.expression,range:d,loc:F},arguments:f,range:d,loc:F}}(),C={type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:t.IIFEVariableNameTransform?t.IIFEVariableNameTransform(r,n):r,range:d,loc:F},right:D,range:d,loc:F},range:d,loc:F};return estraverse.replace(m,{enter:function(e){return utils.isModuleExports(e)?{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:"exports"},right:e.right}:e}}),C},normalizeModuleName=function(e,u){var t,n,r,a=this,o=a.options,s=o.prefixMode,i=o.prefixTransform,l=defaultValues.dependencyBlacklist;return e=e||"","{}"===e?"remove"===l[e]?"":e:(n=utils.prefixReservedWords(e.replace(/\./g,"").replace(utils.invalidIdentifierStartSymbol,"").replace(utils.invalidIdentifierTrailingSymbol,"_").replace(/^_+/,"")),r="camelCase"===s?utils.convertToCamelCase(n):n,_.isFunction(i)&&(t=i(r,e),_.isString(t)&&t.length)?t:r)},convertToFunctionExpression=function(e){var u,t,n,r=this,a=r.options,o=a.ignoreModules,s=e.node,i=e.isDefine,l=e.isRequire,A=!1,c=e.moduleName,p=e.moduleId,d=e.dependencies,F=d.length,m=a.aggressiveOptimizations,f=[],D=[],C=defaultValues.defaultRange,B=defaultValues.defaultLOC,E=e.range||C,g=e.loc||B,y=e.shouldOptimize,h=defaultValues.dependencyBlacklist,v=!1,b=function(){var u,t,n,o,s=e.moduleReturnValue;if(s&&"FunctionExpression"===s.type&&s.body&&_.isArray(s.body.body)&&s.body.body.length){if(u=_.filter(s.body.body,function(e){return a.removeUseStricts===!0?!utils.isUseStrict(e.expression):e}),s.body.body=u,t=_.where(u,{type:"ReturnStatement"}),f=_.where(u,{left:{type:"Identifier",name:"exports"}}),D=_.where(u,{left:{type:"MemberExpression",object:{type:"Identifier",name:"module"},property:{type:"Identifier",name:"exports"}}}),t.length){if(n=t[0],o=n.argument,v=function(){var e=!1;return _.each(s.params,function(u){var t=u.name;r.storedModules[t]||h[t]||(e=!0)}),e}(),v||!y||!utils.isFunctionExpression(n)&&u.length>1||o&&"Identifier"===o.type)return s;s=o,A=!0,s.params&&(F=s.params.length)}}else s&&"FunctionExpression"===s.type&&s.body&&_.isArray(s.body.body)&&0===s.body.body.length&&(s={type:"Identifier",name:"undefined",range:E,loc:g},F=0);return s}(),x=function(){var e=[];return b&&b.body&&_.isArray(b.body.body)&&(e=_.where(b.body.body,{type:"ReturnStatement"}),e.length)?!0:!1}(),M=function(){var e=b.params||[];return _.where(e,{name:"exports"}).length}(),I=function(){var e=b.params||[];return _.where(e,{name:"module"}).length}(),O={},w=function(){var e,u=[];return _.each(d,function(t){e=normalizeModuleName.call(r,utils.normalizeDependencyName(p,t),p),O[e]=!0,u.push({type:"Identifier",name:e,range:C,loc:B})}),u}(),j=function k(e){e="_"+e+"_";var u=function(){var u=!1;return O[e]?u=!0:estraverse.traverse(b,{enter:function(t){"VariableDeclarator"===t.type&&t.id&&"Identifier"===t.id.type&&t.id.name===e&&(u=!0)}}),u}();return u?k(e):e},S=function(){var e=[];return M&&estraverse.traverse(b,{enter:function(u){var t,n;"VariableDeclarator"===u.type&&utils.isRequireExpression(u.init)&&u.id&&u.id.name&&u.init&&u.init.arguments&&u.init.arguments[0]&&u.init.arguments[0].value&&(t=u.id.name,n=normalizeModuleName.call(r,utils.normalizeDependencyName(p,u.init.arguments[0].value,p)),_.contains(o,n)||t!==n||e.push({originalName:n,newName:j(n),range:u.range||C,loc:u.loc||B}))}}),e}(),N=function(){var e=[];return _.each(S,function(u){e.push({type:"Identifier",name:u.newName?u.newName:u,range:u.range,loc:u.loc})}),e}(),R=function(){var e,t,n=[],a=_.union(b.params&&b.params.length?b.params:!y&&w&&w.length?w:[],N),o={},s=[];if(b.body){if(estraverse.traverse(b.body,{enter:function(e,u){("FunctionExpression"==e.type||"FunctionDeclaration"==e.type)&&s.push(e)}}),s.length)for(var i=b.body.range[0];i=e.range[1])&&(t+=r.options.code[i])});else t=r.options.code.substring(b.body.range[0],b.body.range[1]);/[^\w0-9_]arguments[^\w0-9_]/.test(t)&&(a=a.concat(w.slice(a.length)))}return _.each(a,function(u,t){e=u?u.name:w[t].name,y||"{}"===e?"{}"===e||M&&"remove"===defaultValues.dependencyBlacklist[e]||(n.push({type:"Identifier",name:e,range:C,loc:B}),A||m!==!0||r.storedModules[e]||!w[t]||(r.callbackParameterMap[w[t].name]?(o=_.where(r.callbackParameterMap[w[t].name],{name:e}),o.length?(o=o[0],o.count+=1):r.callbackParameterMap[w[t].name].push({name:e,count:1})):r.callbackParameterMap[w[t].name]=[{name:e,count:1}])):n.push({type:"Identifier",name:e,range:C,loc:B})}),u=n,_.filter(n||[],function(e){return m===!0&&y?!r.storedModules[e.name]:!0})}(),T=!x&&M,V=f.length||D.length;return w=_.filter(w||[],function(e,t){var n=u[t],a=e.name;return m===!0&&y?!n||r.storedModules[n.name]&&n.name===a?!r.storedModules[a]:!r.storedModules[n.name]:!0}),w=_.map(w||[],function(e,u){return h[e.name]&&(e.name="{}"),e}),t=w.length,n=R.length,t>n&&w.splice(n,t-n),T&&V&&b.body.body.push({type:"ReturnStatement",argument:{type:"Identifier",name:"exports",range:C,loc:B},range:C,loc:B}),estraverse.replace(b,{enter:function(e){var u,t;return utils.isRequireExpression(e)?e.arguments&&e.arguments[0]&&e.arguments[0].value?(u=normalizeModuleName.call(r,utils.normalizeDependencyName(p,e.arguments[0].value,p)),_.contains(o,u)?e:(_.where(S,{originalName:u}).length&&(t=_.where(S,{originalName:u})[0].newName),{type:"Identifier",name:t?t:u,range:e.range||C,loc:e.loc||B})):e:void 0}}),i?convertToIIFEDeclaration.call(r,{moduleId:p,moduleName:c,dependencyNames:w,callbackFuncParams:R,hasModuleParam:I,hasExportsParam:M,callbackFunc:b,isOptimized:A,node:s}):l?convertToIIFE.call(r,{dependencyNames:w,callbackFuncParams:R,callbackFunc:b,node:s}):void 0},convertToObjectDeclaration=function(e,u){var t=e.node,n=defaultValues.defaultRange,r=defaultValues.defaultLOC,a=t.range||n,o=t.loc||r,s=e.moduleName,i=function(){var t,n,r,s,i,l;return"functionCallExpression"===u&&(t=e.moduleReturnValue,n=t.callee,r=n.params,r&&r.length&&_.isArray(r)&&_.where(r,{name:"global"})&&_.isObject(n.body)&&_.isArray(n.body.body)&&(s=_.where(n.body.body,{type:"ReturnStatement"})[0],_.isObject(s)&&_.isObject(s.argument)&&"FunctionExpression"===s.argument.type&&(l=s.argument,_.isObject(l.body)&&_.isArray(l.body.body)&&(i=_.where(l.body.body,{type:"ReturnStatement"})[0],_.isObject(i.argument)&&_.isObject(i.argument.right)&&_.isObject(i.argument.right.property)&&i.argument.right.property.name&&(t={type:"MemberExpression",computed:!1,object:{type:"Identifier",name:"window",range:a,loc:o},property:{type:"Identifier",name:i.argument.right.property.name,range:a,loc:o},range:a,loc:o}))))),t=t||e.moduleReturnValue}(),l={type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:s,range:a,loc:o},right:i,range:a,loc:o},range:a,loc:o};return l},createAst=function(e){var u=this,t=u.options,n=t.filePath,r=e||t.code||(n?utils.readFile(n):""),a=t.esprima,o=t.escodegen;if(r){if(!_.isPlainObject(esprima)||!_.isFunction(esprima.parse))throw new Error(errorMsgs.esprima);var s=esprima.parse(r,a);if(t.sourceMap&&sourcemapToAst(s,t.sourceMap),a.comment===!0&&o.comment===!0)try{s=escodegen.attachComments(s,s.comments,s.tokens)}catch(i){}return s}throw new Error(errorMsgs.emptyCode)},convertDefinesAndRequires=function(e,u){var t,n,r,a,o,s,i,l,A,c,p=this,d=p.options,F=utils.isDefine(e),m=utils.isRequire(e),f=!1,D="",C=defaultValues.defaultRange,B=defaultValues.defaultLOC,E=e.range||C,g=e.loc||B,y=defaultValues.dependencyBlacklist;if(i=F||m?e.expression.loc.start.line:e&&e.loc&&e.loc.start?e.loc.start.line:null,l=p.matchingCommentLineNumbers[i]||p.matchingCommentLineNumbers[i-1],utils.isAMDConditional(e)&&(estraverse.traverse(e,{enter:function(e){var u;utils.isDefine(e)&&e.expression&&e.expression.arguments&&e.expression.arguments.length&&"Literal"===e.expression.arguments[0].type&&e.expression.arguments[0].value&&(u=normalizeModuleName.call(p,e.expression.arguments[0].value),d.transformAMDChecks!==!0?p.conditionalModulesToIgnore[u]=!0:p.conditionalModulesToNotOptimize[u]=!0,d.createAnonymousAMDModule===!0&&(p.storedModules[u]=!1,e.expression.arguments.shift()))}}),!l&&d.transformAMDChecks===!0))return e.test={type:"Literal",value:!0,raw:"true",range:E,loc:g},e;if(!F&&!m)return"FunctionExpression"===e.type&&_.isArray(e.params)&&_.where(e.params,{type:"Identifier",name:"exports"}).length&&_.isObject(e.body)&&_.isArray(e.body.body)&&!_.where(e.body.body,{type:"ReturnStatement"}).length&&(A=function(){return u&&u.arguments&&u&&u.arguments&&u.arguments.length?_.where(u.arguments,{type:"FunctionExpression"}).length:!1}(),A&&e.body.body.unshift({type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:"exports",range:C,loc:B},right:{type:"LogicalExpression",operator:"||",left:{type:"Identifier",name:"exports",range:C,loc:B},right:{type:"ObjectExpression",properties:[],range:C,loc:B},range:C,loc:B},range:C,loc:B},range:C,loc:B}),e.body.body.push({type:"ReturnStatement",argument:{type:"Identifier",name:"exports",range:C,loc:B},range:C,loc:B})),e;if(n=Array.prototype.slice.call(e.expression.arguments,0),a=m?n[1]:n[n.length-1],o=e.expression.arguments[0].value,t=normalizeModuleName.call(p,o),c=!p.conditionalModulesToNotOptimize[t],r=function(){var e,u=m?n[0]:n[n.length-2],r=[];return u=_.isPlainObject(u)?u.elements||[]:[],e=_.where(u,{value:"exports"}).length,_.isArray(u)&&u.length&&_.each(u,function(u){y[u.value]&&!c?r.push(u.value):"remove"!==y[u.value]?"exports"===u.value?(r.push(t),p.exportsModules[t]=!0):y[u.value]?r.push("{}"):r.push(u.value):e||r.push("{}")}),r}(),s={node:e,moduleName:t,moduleId:o,dependencies:r,moduleReturnValue:a,isDefine:F,isRequire:m,range:E,loc:g,shouldOptimize:c},F){if(l||!t||p.conditionalModulesToIgnore[t]===!0)return p.options.ignoreModules.push(t),e;if(_.contains(d.removeModules,t))return{type:"EmptyStatement"};if(_.isObject(d.shimOverrides)&&d.shimOverrides[o]?(s.moduleReturnValue=createAst.call(p,d.shimOverrides[o]),_.isArray(s.moduleReturnValue.body)&&_.isObject(s.moduleReturnValue.body[0])?_.isObject(s.moduleReturnValue.body[0].expression)&&(s.moduleReturnValue=s.moduleReturnValue.body[0].expression,D="objectExpression"):s.moduleReturnValue=a):s.moduleReturnValue&&"Identifier"===s.moduleReturnValue.type&&(D="functionExpression"),_.contains(d.ignoreModules,t))return e;if(utils.isFunctionExpression(a)||"functionExpression"===D)return convertToFunctionExpression.call(p,s);if(utils.isObjectExpression(a)||"objectExpression"===D)return convertToObjectDeclaration.call(p,s);if(utils.isFunctionCallExpression(a))return convertToObjectDeclaration.call(p,s,"functionCallExpression")}else if(m)return l?e:(f=_.isArray(e.expression.arguments)&&e.expression.arguments.length?e.expression.arguments[1]&&e.expression.arguments[1].body&&e.expression.arguments[1].body.body&&e.expression.arguments[1].body.body.length:!1,d.removeAllRequires!==!0&&f?convertToFunctionExpression.call(p,s):{type:"EmptyStatement",range:E,loc:g})},traverseAndUpdateAst=function(e){var u=this,t=u.options,n=e.ast;if(!_.isPlainObject(e))throw new Error(errorMsgs.invalidObject("traverseAndUpdateAst"));if(!n)throw new Error(errorMsgs.emptyAst("traverseAndUpdateAst"));if(!_.isPlainObject(estraverse)||!_.isFunction(estraverse.replace))throw new Error(errorMsgs.estraverse);return estraverse.replace(n,{enter:function(e,n){var r;return"Program"===e.type?(r=function(){var n=[];return u.comments=e.comments,_.each(e.comments,function(e){var u=e.value.trim();u===t.commentCleanName&&n.push(e)}),n}(),_.each(r,function(e){currentLineNumber=e.loc.start.line,u.matchingCommentLineNumbers[currentLineNumber]=!0}),e):convertDefinesAndRequires.call(u,e,n)},leave:function(e){return e}}),n},getNormalizedModuleName=function(e){if(utils.isDefine(e)){var u=this,t=e.expression.arguments[0].value,n=normalizeModuleName.call(u,t);return n}},findAndStoreAllModuleIds=function(e){var u=this;if(!e)throw new Error(errorMsgs.emptyAst("findAndStoreAllModuleIds"));if(!_.isPlainObject(estraverse)||!_.isFunction(estraverse.traverse))throw new Error(errorMsgs.estraverse);estraverse.traverse(e,{enter:function(e,t){var n=getNormalizedModuleName.call(u,e,t);n&&!u.storedModules[n]&&(u.storedModules[n]=!0),"ReturnStatement"===e.type&&e.argument&&e.argument.callee&&"define"===e.argument.callee.name&&(e.type="ExpressionStatement",e.expression=e.argument,delete e.argument)}})},generateCode=function(e){var u=this,t=u.options,n=t.escodegen||{};if(!_.isPlainObject(escodegen)||!_.isFunction(escodegen.generate))throw new Error(errorMsgs.escodegen);return escodegen.generate(e,n)},clean=function(){var e,u=this,t=u.options,n=t.ignoreModules,r={},a={},o={},s=[],i={},l={},A=defaultValues.defaultRange,c=defaultValues.defaultLOC;return void 0!==t.ignoreModules&&(t.ignoreModules=t.ignoreModules.map(function(e){return normalizeModuleName.call(u,e)})),r=createAst.call(u),findAndStoreAllModuleIds.call(u,r),a=traverseAndUpdateAst.call(u,{ast:r}),a&&_.isArray(a.body)&&estraverse.replace(a,{enter:function(e,r){var a,o,s,i=e&&e.left&&e.left.name?e.left.name:"",l=e.right,p=[],d={},F=_.filter(u.callbackParameterMap[i],function(e){return e&&e.count>1}),m=[];if(void 0===e||"EmptyStatement"===e.type)_.each(r.body,function(e,u){(void 0===e||"EmptyStatement"===e.type)&&r.body.splice(u,1)});else{if(utils.isRequireExpression(e))return e.arguments&&e.arguments[0]&&e.arguments[0].value?(a=normalizeModuleName.call(u,e.arguments[0].value),-1===n.indexOf(a)?{type:"Identifier",name:a,range:e.range||A,loc:e.loc||c}:e):e;if(t.aggressiveOptimizations===!0&&"AssignmentExpression"===e.type&&i&&(s=_.map(l&&l.callee&&l.callee.params?l.callee.params:[],function(e){return e.name}),o=_.map(l.arguments,function(e){return e.name}),_.each(o,function(e){_.each(u.callbackParameterMap[e],function(e){var u=e.name,t=e.count;_.each(s,function(e,n){t>1&&u===e&&m.push(n)})})}),_.each(m,function(e){l.arguments.splice(e,e+1),l.callee.params.splice(e,e+1)}),u.callbackParameterMap[i]))return e.right=function(){return t.aggressiveOptimizations===!0&&F.length?(p=_.map(F,function(e,u){return{type:"AssignmentExpression",operator:"=",left:{type:"Identifier",name:e.name,range:A,loc:c},right:u1&&(e=u.name,t[e]=!0)})}),t}(),i=_.merge(_.cloneDeep(_.reduce(u.storedModules,function(e,u,t){return u!==!1&&(e[t]=!0),e},{})),l),_.each(i,function(e,n){if(!_.contains(t.ignoreModules,n)){var r=u.exportsModules[n]!==!0?null:{type:"ObjectExpression",properties:[]};s.push({type:"VariableDeclarator",id:{type:"Identifier",name:n,range:A,loc:c},init:r,range:A,loc:c})}}),_.isObject(t.config)&&!_.isEmpty(t.config)&&(o=function(){var e=[];return _.each(t.config,function(n,r){var a=t.config[r];e.push({type:"Property",key:{type:"Literal",value:r},value:{type:"ObjectExpression",properties:[{type:"Property",key:{type:"Literal",value:"config"},value:{type:"FunctionExpression",id:null,params:[],defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:createAst.call(u,"var x ="+JSON.stringify(a)).body[0].declarations[0].init}]}},kind:"init"}]}})}),{type:"VariableDeclarator",id:{type:"Identifier",name:"modules"},init:{type:"ObjectExpression",properties:e}}}(),s.push(o)),s.length&&a.body.unshift({type:"VariableDeclaration",declarations:s, +kind:"var",range:A,loc:c}),e=generateCode.call(u,a),_.isObject(t.wrap)&&(_.isString(t.wrap.start)&&t.wrap.start.length&&(e=t.wrap.start+e),_.isString(t.wrap.end)&&t.wrap.end.length&&(e+=t.wrap.end)),e},function(){!function(e,u,t){"use strict";"function"==typeof define&&define.amd?(u.amd=!0,define(["esprima","estraverse","escodegen","underscore","sourcemap-to-ast"],function(t,n,r,a,o){return u({esprima:t,estraverse:n,escodegen:r,underscore:a,sourcemapToAst:o},e)})):"undefined"!=typeof exports?(u.commonjs=!0,module.exports=u(null,e)):e.amdclean=u(null,e)}(this,function e(u,t){"use strict";sourcemapToAst=function(){return e.amd&&u&&u.sourcemapToAst?u.sourcemapToAst:e.commonjs?require("sourcemap-to-ast"):t&&t.sourcemapToAst?t.sourcemapToAst:void 0}(),esprima=function(){return e.amd&&u&&u.esprima&&u.esprima.parse?u.esprima:e.commonjs?require("esprima"):t&&t.esprima&&t.esprima.parse?t.esprima:void 0}(),estraverse=function(){return e.amd&&u&&u.estraverse&&u.estraverse.traverse?u.estraverse:e.commonjs?require("estraverse"):t&&t.estraverse&&t.estraverse.traverse?t.estraverse:void 0}(),escodegen=function(){return e.amd&&u&&u.escodegen&&u.escodegen.generate?u.escodegen:e.commonjs?require("escodegen"):t&&t.escodegen&&t.escodegen.generate?t.escodegen:void 0}(),_=function(){return e.amd&&u&&(u.underscore||u.lodash||u._)?u.underscore||u.lodash||u._:e.commonjs?require("lodash"):t&&t._?t._:void 0}();var n=function(e,u){if(!esprima)throw new Error(errorMsgs.esprima);if(!estraverse)throw new Error(errorMsgs.estraverse);if(!escodegen)throw new Error(errorMsgs.escodegen);if(!_)throw new Error(errorMsgs.lodash);if(!sourcemapToAst&&"undefined"==typeof window)throw new Error(errorMsgs.sourcemapToAst);var t=_.cloneDeep(this.defaultOptions||{}),n=e||u||{};!_.isPlainObject(e)&&_.isString(e)&&(n=_.merge({code:e},_.isObject(u)?u:{})),this.storedModules={},this.originalAst={},this.callbackParameterMap={},this.conditionalModulesToIgnore={},this.conditionalModulesToNotOptimize={},this.matchingCommentLineNumbers={},this.comments=[],this.exportsModules={},this.options=_.merge(t,n)},r={VERSION:"2.7.0",clean:function(e,u){var t=new n(e,u),r=t.clean();return r}};return n.prototype={clean:clean,defaultOptions:defaultOptions},r})}()}("undefined"!=typeof esprima?esprima:null,"undefined"!=typeof estraverse?estraverse:null,"undefined"!=typeof escodegen?escodegen:null,"undefined"!=typeof _?_:null,"undefined"!=typeof sourcemapToAst?sourcemapToAst:null); \ No newline at end of file diff --git a/package.json b/package.json index 421d04e..7e52e23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amdclean", - "version": "2.7.0", + "version": "2.7.1", "description": "A build tool that converts AMD code to standard JavaScript", "main": "./src/amdclean", "repository": { diff --git a/src/amdclean.js b/src/amdclean.js index 0a251db..9e9fd40 100644 --- a/src/amdclean.js +++ b/src/amdclean.js @@ -1,6 +1,6 @@ -/*! amdclean - v2.7.0 - 2016-02-08 +/*! amdclean - v2.7.1 - 2017-07-14 * http://gregfranko.com/amdclean -* Copyright (c) 2016 Greg Franko */ +* Copyright (c) 2017 Greg Franko */ /*The MIT License (MIT) @@ -352,7 +352,11 @@ utils = function () { ].join('/'); } return pluginName + normalizePath(pathToNormalize); - } + }, + // https://gist.github.com/mathiasbynens/6334847 + // ECMAScript 5.1 + 'invalidIdentifierStartSymbol': /^[^\$A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\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\u09FC\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\u0AF9\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-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\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-\u13F5\u13F8-\u13FD\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-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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]/, + 'invalidIdentifierTrailingSymbol': /[^\$0-9A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\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\u09FC\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\u0AF9-\u0AFF\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-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\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\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\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-\u13F5\u13F8-\u13FD\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\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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-\uFE2F\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]/g }; return Utils; }(); @@ -566,7 +570,7 @@ normalizeModuleName = function normalizeModuleName(name, moduleId) { return name; } } - preNormalized = utils.prefixReservedWords(name.replace(/\./g, '').replace(/[^A-Za-z0-9_$]/g, '_').replace(/^_+/, '')); + preNormalized = utils.prefixReservedWords(name.replace(/\./g, '').replace(utils.invalidIdentifierStartSymbol, '').replace(utils.invalidIdentifierTrailingSymbol, '_').replace(/^_+/, '')); postNormalized = prefixMode === 'camelCase' ? utils.convertToCamelCase(preNormalized) : preNormalized; if (_.isFunction(prefixTransform)) { prefixTransformValue = prefixTransform(postNormalized, name); @@ -1539,7 +1543,7 @@ clean = function clean() { }; (function () { (function (root, factory, undefined) { - + 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, and plain browser loading if (typeof define === 'function' && define.amd) { factory.amd = true; @@ -1565,7 +1569,7 @@ clean = function clean() { root.amdclean = factory(null, root); } }(this, function cleanamd(amdDependencies, context) { - + 'use strict'; // Third-Party Dependencies // Note: These dependencies are hoisted to the top (as local variables) at build time (Look in the gulpfile.js file and the AMDclean wrap option for more details) sourcemapToAst = function () { diff --git a/src/modules/normalizeModuleName.js b/src/modules/normalizeModuleName.js index 1168303..61b4fb9 100644 --- a/src/modules/normalizeModuleName.js +++ b/src/modules/normalizeModuleName.js @@ -29,7 +29,12 @@ define([ } } - preNormalized = utils.prefixReservedWords(name.replace(/\./g, '').replace(/[^A-Za-z0-9_$]/g, '_').replace(/^_+/, '')); + preNormalized = utils.prefixReservedWords( + name.replace(/\./g, '') + .replace(utils.invalidIdentifierStartSymbol, '') + .replace(utils.invalidIdentifierTrailingSymbol, '_') + .replace(/^_+/, '') + ); postNormalized = prefixMode === 'camelCase' ? utils.convertToCamelCase(preNormalized) : preNormalized; diff --git a/src/modules/utils.js b/src/modules/utils.js index 291e895..33bd4c2 100644 --- a/src/modules/utils.js +++ b/src/modules/utils.js @@ -293,7 +293,11 @@ define([ } return pluginName + normalizePath(pathToNormalize); - } + }, + // https://gist.github.com/mathiasbynens/6334847 + // ECMAScript 5.1 + 'invalidIdentifierStartSymbol': /^[^\$A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\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\u09FC\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\u0AF9\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-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\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-\u13F5\u13F8-\u13FD\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-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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]/, + 'invalidIdentifierTrailingSymbol': /[^\$0-9A-Z_a-z\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\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\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\u09FC\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\u0AF9-\u0AFF\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-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\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\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\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-\u13F5\u13F8-\u13FD\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\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\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-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\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-\uAB65\uAB70-\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-\uFE2F\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]/g }; return Utils; diff --git a/test/specs/convert.js b/test/specs/convert.js index 8a8a9e0..766f8be 100644 --- a/test/specs/convert.js +++ b/test/specs/convert.js @@ -956,4 +956,47 @@ describe('amdclean specs', function() { }); }); + describe('Unicode characher compatibility.', function() { + it('should support valid JavaScript names with non-latin characters as module name', function() { + var AMDcode = "define('Тест', [], function() {});"; + var cleanedCode = amdclean.clean(AMDcode, { + 'escodegen': { + 'format': { + 'compact': true + } + } + }).replace(/\n/g, ''); + var standardJavaScript = ";(function() {var Тест;Тест=undefined;}());"; + + expect(cleanedCode).toBe(standardJavaScript); + }); + + it('should support valid JavaScript names with non-latin characters as module dependencies', function() { + var AMDcode = "define('Тест', ['зависимость1'], function(зав) {зав.dummy()});"; + var cleanedCode = amdclean.clean(AMDcode, { + 'escodegen': { + 'format': { + 'compact': true + } + } + }).replace(/\n/g, ''); + var standardJavaScript = ";(function() {var Тест;Тест=function (зав){зав.dummy();}(зависимость1);}());"; + + expect(cleanedCode).toBe(standardJavaScript); + }); + + it('should support valid JavaScript names with escape characters', function() { + var AMDcode = "define('Тест', ['\u041B\u043E\u043B2'], function(зав) {зав.dummy()});"; + var cleanedCode = amdclean.clean(AMDcode, { + 'escodegen': { + 'format': { + 'compact': true + } + } + }).replace(/\n/g, ''); + var standardJavaScript = ";(function() {var Тест;Тест=function (зав){зав.dummy();}(\u041B\u043E\u043B2);}());"; + + expect(cleanedCode).toBe(standardJavaScript); + }); + }); });