Skip to content

Commit 6ffb0d3

Browse files
authored
ENGCOM-7286: Prevent leaking of variables to global scope #27622
2 parents b7c9e07 + df38cb6 commit 6ffb0d3

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

lib/internal/Magento/Framework/RequireJs/Config.php

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -293,25 +293,26 @@ protected function getConfigFileName()
293293
*/
294294
public function getMinResolverCode()
295295
{
296-
$excludes = ['url.indexOf(baseUrl) === 0'];
296+
$excludes = ['url.indexOf(baseUrl)===0'];
297297
foreach ($this->minification->getExcludes('js') as $expression) {
298298
$excludes[] = '!url.match(/' . str_replace('/', '\/', $expression) . '/)';
299299
}
300300
$excludesCode = empty($excludes) ? 'true' : implode('&&', $excludes);
301301

302302
$result = <<<code
303-
var ctx = require.s.contexts._,
304-
origNameToUrl = ctx.nameToUrl,
305-
baseUrl = ctx.config.baseUrl;
306-
307-
ctx.nameToUrl = function() {
308-
var url = origNameToUrl.apply(ctx, arguments);
309-
if ({$excludesCode}) {
310-
url = url.replace(/(\.min)?\.js$/, '.min.js');
311-
}
312-
return url;
313-
};
314-
303+
(function () {
304+
var ctx = require.s.contexts._,
305+
origNameToUrl = ctx.nameToUrl,
306+
baseUrl = ctx.config.baseUrl;
307+
308+
ctx.nameToUrl = function() {
309+
var url = origNameToUrl.apply(ctx, arguments);
310+
if ({$excludesCode}) {
311+
url = url.replace(/(\.min)?\.js$/, '.min.js');
312+
}
313+
return url;
314+
};
315+
})();
315316
code;
316317

317318
if ($this->minification->isEnabled('js')) {

lib/internal/Magento/Framework/RequireJs/Test/Unit/ConfigTest.php

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -193,18 +193,19 @@ public function testGetMinResolverCode()
193193
->willReturnArgument(0);
194194

195195
$expected = <<<code
196-
var ctx = require.s.contexts._,
197-
origNameToUrl = ctx.nameToUrl,
198-
baseUrl = ctx.config.baseUrl;
199-
200-
ctx.nameToUrl = function() {
201-
var url = origNameToUrl.apply(ctx, arguments);
202-
if (url.indexOf(baseUrl) === 0&&!url.match(/\.min\./)) {
203-
url = url.replace(/(\.min)?\.js$/, '.min.js');
204-
}
205-
return url;
206-
};
196+
(function () {
197+
var ctx = require.s.contexts._,
198+
origNameToUrl = ctx.nameToUrl,
199+
baseUrl = ctx.config.baseUrl;
207200
201+
ctx.nameToUrl = function() {
202+
var url = origNameToUrl.apply(ctx, arguments);
203+
if (url.indexOf(baseUrl)===0&&!url.match(/\.min\./)) {
204+
url = url.replace(/(\.min)?\.js$/, '.min.js');
205+
}
206+
return url;
207+
};
208+
})();
208209
code;
209210
$this->assertEquals($expected, $this->object->getMinResolverCode());
210211
}

0 commit comments

Comments
 (0)