Skip to content

Commit 6ace740

Browse files
committed
Re: #7 - Better handling of extra require() parameters
1 parent 46612f0 commit 6ace740

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/amdclean.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@
255255
var callbackFuncParams = obj.callbackFuncParams,
256256
callbackFunc = obj.callbackFunc,
257257
dependencyNames = obj.dependencyNames;
258+
258259
return {
259260
'type': 'ExpressionStatement',
260261
'expression': {
@@ -486,10 +487,15 @@
486487
if((publicAPI.commentLineNumbers[startLineNumber] || publicAPI.commentLineNumbers['' + (parseInt(startLineNumber, 10) - 1)])) {
487488
return node;
488489
}
489-
args = node.expression['arguments'];
490+
args = Array.prototype.slice.call(node.expression['arguments'], 0);
490491
dependencies = (function() {
491-
var deps = _.isPlainObject(args[args.length - 2]) ? args[args.length - 2].elements : [],
492+
var deps = isRequire ? args[0] : args[args.length - 2],
492493
depNames = [];
494+
if(_.isPlainObject(deps)) {
495+
deps = deps.elements || [];
496+
} else {
497+
deps = [];
498+
}
493499
if(Array.isArray(deps) && deps.length) {
494500
_.each(deps, function(currentDependency) {
495501
if(publicAPI.dependencyBlacklist[currentDependency.value]) {
@@ -501,7 +507,7 @@
501507
}
502508
return depNames;
503509
}());
504-
moduleReturnValue = args[args.length - 1];
510+
moduleReturnValue = isRequire ? args[1] : args[args.length - 1];
505511
moduleName = publicAPI.normalizeModuleName(node.expression['arguments'][0].value);
506512
params = {
507513
node: node,

test/specs/convert.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,13 @@ describe('amdclean specs', function() {
181181
expect(cleanedCode).toBe(standardJavaScript);
182182
});
183183

184+
it('should not bomb on extra parameters being passed to the require() method', function() {
185+
var AMDcode = "require(['blah'], function(blahParam) { var two = 1 + 1; }, undefined, true);",
186+
cleanedCode = amdclean.clean({ code: AMDcode, escodegen: { format: { compact: true } } }),
187+
standardJavaScript = "(function(blahParam){var two=1+1;}(blah));";
188+
expect(cleanedCode).toBe(standardJavaScript);
189+
});
190+
184191
});
185192

186193
});

0 commit comments

Comments
 (0)