From 11eec510cdbc239aa263f1201a6b75d7b2c33f69 Mon Sep 17 00:00:00 2001 From: Sylvain Prat Date: Sat, 5 Dec 2015 14:38:47 +0100 Subject: [PATCH] Partial fix for #104, part 1 only --- build/amdclean.js | 12 ++++++------ build/amdclean.min.js | 4 ++-- src/amdclean.js | 12 ++++++------ src/modules/clean.js | 4 ++-- src/modules/convertToIIFEDeclaration.js | 2 +- test/specs/convert.js | 6 +++--- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/build/amdclean.js b/build/amdclean.js index aea1edf..e81d779 100644 --- a/build/amdclean.js +++ b/build/amdclean.js @@ -1,4 +1,4 @@ -/*! amdclean - v2.7.0 - 2015-04-10 +/*! amdclean - v2.7.0 - 2015-12-05 * http://gregfranko.com/amdclean * Copyright (c) 2015 Greg Franko */ @@ -464,7 +464,7 @@ convertToIIFEDeclaration = function convertToIIFEDeclaration(obj) { 'computed': true, 'object': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'property': { 'type': 'Literal', @@ -1451,7 +1451,7 @@ clean = function clean() { }); } }); - // Adds a local module variable if a user wants local module information available to them + // Adds a local modules variable if a user wants local module information available to them if (_.isObject(options.config) && !_.isEmpty(options.config)) { configAst = function () { var props = []; @@ -1493,7 +1493,7 @@ clean = function clean() { 'type': 'VariableDeclarator', 'id': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'init': { 'type': 'ObjectExpression', @@ -1528,7 +1528,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; @@ -1554,7 +1554,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 c355fa9..d31b656 100644 --- a/build/amdclean.min.js +++ b/build/amdclean.min.js @@ -1,4 +1,4 @@ -/*! amdclean - v2.7.0 - 2015-04-10 +/*! amdclean - v2.7.0 - 2015-12-05 * http://gregfranko.com/amdclean * Copyright (c) 2015 Greg Franko */ @@ -26,4 +26,4 @@ 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("/")};return Utils.isRelativeFilePath(t)?n+r([a(e),t].join("/")):n+t}};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:"module"},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}(),R=function(){var e=O.params||[];return _.where(e,{name:"module"}).length}(),N={},F=function(){var e,t=[];return _.each(m,function(n){e=normalizeModuleName.call(a,utils.normalizeDependencyName(d,n),d),N[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 N[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:R,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 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:"module"},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,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("/")};return Utils.isRelativeFilePath(t)?n+r([a(e),t].join("/")):n+t}};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}(),R=function(){var e=O.params||[];return _.where(e,{name:"module"}).length}(),N={},F=function(){var e,t=[];return _.each(m,function(n){e=normalizeModuleName.call(a,utils.normalizeDependencyName(d,n),d),N[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 N[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:R,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):M[t.value]?a.push("{}"):a.push(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 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){"use strict";"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){"use strict";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 diff --git a/src/amdclean.js b/src/amdclean.js index aea1edf..e81d779 100644 --- a/src/amdclean.js +++ b/src/amdclean.js @@ -1,4 +1,4 @@ -/*! amdclean - v2.7.0 - 2015-04-10 +/*! amdclean - v2.7.0 - 2015-12-05 * http://gregfranko.com/amdclean * Copyright (c) 2015 Greg Franko */ @@ -464,7 +464,7 @@ convertToIIFEDeclaration = function convertToIIFEDeclaration(obj) { 'computed': true, 'object': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'property': { 'type': 'Literal', @@ -1451,7 +1451,7 @@ clean = function clean() { }); } }); - // Adds a local module variable if a user wants local module information available to them + // Adds a local modules variable if a user wants local module information available to them if (_.isObject(options.config) && !_.isEmpty(options.config)) { configAst = function () { var props = []; @@ -1493,7 +1493,7 @@ clean = function clean() { 'type': 'VariableDeclarator', 'id': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'init': { 'type': 'ObjectExpression', @@ -1528,7 +1528,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; @@ -1554,7 +1554,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/clean.js b/src/modules/clean.js index 4e97b56..9210079 100644 --- a/src/modules/clean.js +++ b/src/modules/clean.js @@ -261,7 +261,7 @@ define([ } }); - // Adds a local module variable if a user wants local module information available to them + // Adds a local modules variable if a user wants local module information available to them if (_.isObject(options.config) && !_.isEmpty(options.config)) { configAst = (function() { var props = []; @@ -306,7 +306,7 @@ define([ 'type': 'VariableDeclarator', 'id': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'init': { 'type': 'ObjectExpression', diff --git a/src/modules/convertToIIFEDeclaration.js b/src/modules/convertToIIFEDeclaration.js index 616deae..28763f6 100644 --- a/src/modules/convertToIIFEDeclaration.js +++ b/src/modules/convertToIIFEDeclaration.js @@ -115,7 +115,7 @@ define([ 'computed': true, 'object': { 'type': 'Identifier', - 'name': 'module' + 'name': 'modules' }, 'property': { 'type': 'Literal', diff --git a/test/specs/convert.js b/test/specs/convert.js index 24d9c26..ce7c9f6 100644 --- a/test/specs/convert.js +++ b/test/specs/convert.js @@ -901,7 +901,7 @@ describe('amdclean specs', function() { } }), cleanedCode = amdclean.clean(AMDcode, options), - standardJavaScript = "var moment,module={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (require,exports,module){return moment;}({},{},module['moment']);}"; + standardJavaScript = "var moment,modules={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (require,exports,module){return moment;}({},{},modules['moment']);}"; expect(cleanedCode).toBe(standardJavaScript); }); @@ -920,7 +920,7 @@ describe('amdclean specs', function() { } }), cleanedCode = amdclean.clean(AMDcode, options), - standardJavaScript = "var moment,module={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (module){return moment;}(module['moment']);}"; + standardJavaScript = "var moment,modules={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (module){return moment;}(modules['moment']);}"; expect(cleanedCode).toBe(standardJavaScript); }); @@ -939,7 +939,7 @@ describe('amdclean specs', function() { } }), cleanedCode = amdclean.clean(AMDcode, options), - standardJavaScript = "var moment,module={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (test,module){return moment;}(test,module['moment']);}"; + standardJavaScript = "var moment,modules={'moment':{'config':function(){return{'noGlobal':true};}}};if(true){moment=function (test,module){return moment;}(test,modules['moment']);}"; expect(cleanedCode).toBe(standardJavaScript); });