@gerhobbelt/mathjax-third-party-extensions
Version:
A list of MathJax extensions provided by third-party contributors
29 lines (21 loc) • 25.9 kB
JavaScript
/*! amdclean - v2.7.0 - 2015-04-10
* http://gregfranko.com/amdclean
* Copyright (c) 2015 Greg Franko */
/*The MIT License (MIT)
Copyright (c) 2014 Greg Franko
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
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<O.body.range[1];l++)_.each(i,function(e){(l<e.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:t<f.length-1?{range:c,loc:p}:u,range:c,loc:p}}),m=_.reduce(d,function(e,t){return e.right=t,e}),d.length?m:u):u}(),e}}}),_.isArray(n.globalModules)&&_.each(n.globalModules,function(e){_.isString(e)&&e.length&&o.body.push({type:"ExpressionStatement",expression:{type:"AssignmentExpression",operator:"=",left:{type:"MemberExpression",computed:!1,object:{type:"Identifier",name:"window",range:c,loc:p},property:{type:"Identifier",name:e,range:c,loc:p},range:c,loc:p},right:{type:"Identifier",name:e,range:c,loc:p},range:c,loc:p},range:c,loc:p})}),u=function(){var e,n={},r=t.callbackParameterMap;return _.each(r,function(t){_.each(t,function(t){t.count>1&&(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);